Merge "cleaned up clds service code"
authorSébastien Determe <sd378r@intl.att.com>
Tue, 3 Jul 2018 08:36:38 +0000 (08:36 +0000)
committerGerrit Code Review <gerrit@onap.org>
Tue, 3 Jul 2018 08:36:38 +0000 (08:36 +0000)
127 files changed:
docs/swagger/swagger.json
docs/swagger/swagger.pdf
pom.xml
src/main/resources/META-INF/resources/designer/css/carousel/ajax-loader.gif [deleted file]
src/main/resources/META-INF/resources/designer/css/carousel/fonts/slick.eot [deleted file]
src/main/resources/META-INF/resources/designer/css/carousel/fonts/slick.svg [deleted file]
src/main/resources/META-INF/resources/designer/css/carousel/fonts/slick.ttf [deleted file]
src/main/resources/META-INF/resources/designer/css/carousel/fonts/slick.woff [deleted file]
src/main/resources/META-INF/resources/designer/css/carousel/grabbing.png [deleted file]
src/main/resources/META-INF/resources/designer/css/carousel/owl.carousel.css [deleted file]
src/main/resources/META-INF/resources/designer/css/carousel/owl.theme.css [deleted file]
src/main/resources/META-INF/resources/designer/css/carousel/slick.css [deleted file]
src/main/resources/META-INF/resources/designer/css/carousel/slick.css.map [deleted file]
src/main/resources/META-INF/resources/designer/css/flexigrid/css/flexigrid.css [deleted file]
src/main/resources/META-INF/resources/designer/css/flexigrid/css/flexigrid.less [deleted file]
src/main/resources/META-INF/resources/designer/css/flexigrid/css/flexigrid.pack.css [deleted file]
src/main/resources/META-INF/resources/designer/css/flexigrid/css/images/bg.gif [deleted file]
src/main/resources/META-INF/resources/designer/css/flexigrid/css/images/btn-sprite.gif [deleted file]
src/main/resources/META-INF/resources/designer/css/flexigrid/css/images/ddn.png [deleted file]
src/main/resources/META-INF/resources/designer/css/flexigrid/css/images/dn.png [deleted file]
src/main/resources/META-INF/resources/designer/css/flexigrid/css/images/fhbg.gif [deleted file]
src/main/resources/META-INF/resources/designer/css/flexigrid/css/images/first.gif [deleted file]
src/main/resources/META-INF/resources/designer/css/flexigrid/css/images/hl.png [deleted file]
src/main/resources/META-INF/resources/designer/css/flexigrid/css/images/last.gif [deleted file]
src/main/resources/META-INF/resources/designer/css/flexigrid/css/images/line.gif [deleted file]
src/main/resources/META-INF/resources/designer/css/flexigrid/css/images/load.gif [deleted file]
src/main/resources/META-INF/resources/designer/css/flexigrid/css/images/load.png [deleted file]
src/main/resources/META-INF/resources/designer/css/flexigrid/css/images/magnifier.png [deleted file]
src/main/resources/META-INF/resources/designer/css/flexigrid/css/images/next.gif [deleted file]
src/main/resources/META-INF/resources/designer/css/flexigrid/css/images/prev.gif [deleted file]
src/main/resources/META-INF/resources/designer/css/flexigrid/css/images/up.png [deleted file]
src/main/resources/META-INF/resources/designer/css/flexigrid/css/images/uup.png [deleted file]
src/main/resources/META-INF/resources/designer/css/flexigrid/css/images/wbg.gif [deleted file]
src/main/resources/META-INF/resources/designer/css/flexigrid/css/style.css [deleted file]
src/main/resources/META-INF/resources/designer/css/kendo.common-material.core.css [deleted file]
src/main/resources/META-INF/resources/designer/css/kendo.material.min.css [deleted file]
src/main/resources/META-INF/resources/designer/css/plugins/morris.css [deleted file]
src/main/resources/META-INF/resources/designer/index.html
src/main/resources/META-INF/resources/designer/lib/angular-animate.js
src/main/resources/META-INF/resources/designer/lib/angular-cookies.js
src/main/resources/META-INF/resources/designer/lib/angular-highlightjs.js [deleted file]
src/main/resources/META-INF/resources/designer/lib/angular-resource.min.js
src/main/resources/META-INF/resources/designer/lib/angular-route.js
src/main/resources/META-INF/resources/designer/lib/angular-sanitize.js
src/main/resources/META-INF/resources/designer/lib/angular-touch.js [deleted file]
src/main/resources/META-INF/resources/designer/lib/angular-touch.min.js
src/main/resources/META-INF/resources/designer/lib/angular.min.js
src/main/resources/META-INF/resources/designer/lib/angular.min.js.map
src/main/resources/META-INF/resources/designer/lib/angularjs-dropdown-multiselect-new.js [deleted file]
src/main/resources/META-INF/resources/designer/lib/angularjs-dropdown-multiselect-old.js [deleted file]
src/main/resources/META-INF/resources/designer/lib/angularjs-dropdown-multiselect.js [deleted file]
src/main/resources/META-INF/resources/designer/lib/angularjs-dropdown-multiselect.min.js [deleted file]
src/main/resources/META-INF/resources/designer/lib/bootstrap-toggle.js [deleted file]
src/main/resources/META-INF/resources/designer/lib/bootstrap-toggle.min.js [deleted file]
src/main/resources/META-INF/resources/designer/lib/dialogs-controllers.js [deleted file]
src/main/resources/META-INF/resources/designer/lib/dialogs-default-translations.js [deleted file]
src/main/resources/META-INF/resources/designer/lib/dialogs-main.js [deleted file]
src/main/resources/META-INF/resources/designer/lib/dialogs-services.js [deleted file]
src/main/resources/META-INF/resources/designer/lib/excanvas.js [deleted file]
src/main/resources/META-INF/resources/designer/lib/excanvas.min.js [deleted file]
src/main/resources/META-INF/resources/designer/lib/flexigrid/js/flexigrid.js [deleted file]
src/main/resources/META-INF/resources/designer/lib/flexigrid/js/flexigrid.pack.js [deleted file]
src/main/resources/META-INF/resources/designer/lib/jquery-ui-1.11.3.custom/external/jquery/jquery.js [deleted file]
src/main/resources/META-INF/resources/designer/lib/jquery-ui-1.11.3.custom/images/ui-bg_flat_0_aaaaaa_40x100.png [deleted file]
src/main/resources/META-INF/resources/designer/lib/jquery-ui-1.11.3.custom/images/ui-bg_flat_75_ffffff_40x100.png [deleted file]
src/main/resources/META-INF/resources/designer/lib/jquery-ui-1.11.3.custom/images/ui-bg_glass_55_fbf9ee_1x400.png [deleted file]
src/main/resources/META-INF/resources/designer/lib/jquery-ui-1.11.3.custom/images/ui-bg_glass_65_ffffff_1x400.png [deleted file]
src/main/resources/META-INF/resources/designer/lib/jquery-ui-1.11.3.custom/images/ui-bg_glass_75_dadada_1x400.png [deleted file]
src/main/resources/META-INF/resources/designer/lib/jquery-ui-1.11.3.custom/images/ui-bg_glass_75_e6e6e6_1x400.png [deleted file]
src/main/resources/META-INF/resources/designer/lib/jquery-ui-1.11.3.custom/images/ui-bg_glass_95_fef1ec_1x400.png [deleted file]
src/main/resources/META-INF/resources/designer/lib/jquery-ui-1.11.3.custom/images/ui-bg_highlight-soft_75_cccccc_1x100.png [deleted file]
src/main/resources/META-INF/resources/designer/lib/jquery-ui-1.11.3.custom/images/ui-icons_222222_256x240.png [deleted file]
src/main/resources/META-INF/resources/designer/lib/jquery-ui-1.11.3.custom/images/ui-icons_2e83ff_256x240.png [deleted file]
src/main/resources/META-INF/resources/designer/lib/jquery-ui-1.11.3.custom/images/ui-icons_454545_256x240.png [deleted file]
src/main/resources/META-INF/resources/designer/lib/jquery-ui-1.11.3.custom/images/ui-icons_888888_256x240.png [deleted file]
src/main/resources/META-INF/resources/designer/lib/jquery-ui-1.11.3.custom/images/ui-icons_cd0a0a_256x240.png [deleted file]
src/main/resources/META-INF/resources/designer/lib/jquery-ui-1.11.3.custom/index.html [deleted file]
src/main/resources/META-INF/resources/designer/lib/jquery-ui-1.11.3.custom/jquery-ui.css [deleted file]
src/main/resources/META-INF/resources/designer/lib/jquery-ui-1.11.3.custom/jquery-ui.js [deleted file]
src/main/resources/META-INF/resources/designer/lib/jquery-ui-1.11.3.custom/jquery-ui.min.css [deleted file]
src/main/resources/META-INF/resources/designer/lib/jquery-ui-1.11.3.custom/jquery-ui.min.js [deleted file]
src/main/resources/META-INF/resources/designer/lib/jquery-ui-1.11.3.custom/jquery-ui.structure.css [deleted file]
src/main/resources/META-INF/resources/designer/lib/jquery-ui-1.11.3.custom/jquery-ui.structure.min.css [deleted file]
src/main/resources/META-INF/resources/designer/lib/jquery-ui-1.11.3.custom/jquery-ui.theme.css [deleted file]
src/main/resources/META-INF/resources/designer/lib/jquery-ui-1.11.3.custom/jquery-ui.theme.min.css [deleted file]
src/main/resources/META-INF/resources/designer/lib/jquery-ui-1.11.3/external/jquery/jquery.js [deleted file]
src/main/resources/META-INF/resources/designer/lib/jquery-ui-1.11.3/images/ui-icons_444444_256x240.png [deleted file]
src/main/resources/META-INF/resources/designer/lib/jquery-ui-1.11.3/images/ui-icons_555555_256x240.png [deleted file]
src/main/resources/META-INF/resources/designer/lib/jquery-ui-1.11.3/images/ui-icons_777620_256x240.png [deleted file]
src/main/resources/META-INF/resources/designer/lib/jquery-ui-1.11.3/images/ui-icons_777777_256x240.png [deleted file]
src/main/resources/META-INF/resources/designer/lib/jquery-ui-1.11.3/images/ui-icons_cc0000_256x240.png [deleted file]
src/main/resources/META-INF/resources/designer/lib/jquery-ui-1.11.3/images/ui-icons_ffffff_256x240.png [deleted file]
src/main/resources/META-INF/resources/designer/lib/jquery-ui-1.11.3/index.html [deleted file]
src/main/resources/META-INF/resources/designer/lib/jquery-ui-1.11.3/jquery-ui.css [deleted file]
src/main/resources/META-INF/resources/designer/lib/jquery-ui-1.11.3/jquery-ui.js [deleted file]
src/main/resources/META-INF/resources/designer/lib/jquery-ui-1.11.3/jquery-ui.min.css [deleted file]
src/main/resources/META-INF/resources/designer/lib/jquery-ui-1.11.3/jquery-ui.min.js [deleted file]
src/main/resources/META-INF/resources/designer/lib/jquery-ui-1.11.3/jquery-ui.structure.css [deleted file]
src/main/resources/META-INF/resources/designer/lib/jquery-ui-1.11.3/jquery-ui.structure.min.css [deleted file]
src/main/resources/META-INF/resources/designer/lib/jquery-ui-1.11.3/jquery-ui.theme.css [deleted file]
src/main/resources/META-INF/resources/designer/lib/jquery-ui-1.11.3/jquery-ui.theme.min.css [deleted file]
src/main/resources/META-INF/resources/designer/lib/jquery.highlight.js [deleted file]
src/main/resources/META-INF/resources/designer/lib/jquery.min.js
src/main/resources/META-INF/resources/designer/lib/modal.js [deleted file]
src/main/resources/META-INF/resources/designer/lib/owl.carousel.js [deleted file]
src/main/resources/META-INF/resources/designer/lib/owl.carousel.min.js [deleted file]
src/main/resources/META-INF/resources/designer/lib/plugins/flot/excanvas.min.js [deleted file]
src/main/resources/META-INF/resources/designer/lib/plugins/flot/flot-data.js [deleted file]
src/main/resources/META-INF/resources/designer/lib/plugins/flot/jquery.flot.js [deleted file]
src/main/resources/META-INF/resources/designer/lib/plugins/flot/jquery.flot.pie.js [deleted file]
src/main/resources/META-INF/resources/designer/lib/plugins/flot/jquery.flot.resize.js [deleted file]
src/main/resources/META-INF/resources/designer/lib/plugins/flot/jquery.flot.tooltip.min.js [deleted file]
src/main/resources/META-INF/resources/designer/lib/plugins/morris/morris-data.js [deleted file]
src/main/resources/META-INF/resources/designer/lib/plugins/morris/morris.js [deleted file]
src/main/resources/META-INF/resources/designer/lib/plugins/morris/morris.min.js [deleted file]
src/main/resources/META-INF/resources/designer/lib/plugins/morris/raphael.min.js [deleted file]
src/main/resources/META-INF/resources/designer/lib/slick.js [deleted file]
src/main/resources/META-INF/resources/designer/lib/translate-substitution.js [deleted file]
src/main/resources/META-INF/resources/designer/lib/ui-grid.js [deleted file]
src/main/resources/META-INF/resources/designer/lib/ui-grid.min.js [deleted file]
src/main/resources/META-INF/resources/designer/lib/xml2json.min.js [deleted file]
src/main/resources/META-INF/resources/designer/partials/portfolios/clds_modelling.html
src/main/resources/META-INF/resources/designer/scripts/aOnBoot.js
src/main/resources/META-INF/resources/designer/scripts/app.js
src/main/resources/META-INF/resources/designer/scripts/authcontroller.js
src/main/resources/META-INF/resources/designer/scripts/kendo.custom.min.js [deleted file]
src/main/resources/META-INF/resources/swagger.html

index b8f422c..c794492 100644 (file)
@@ -2,7 +2,7 @@
 {
     "swagger":"2.0",
     "info":{
-        "version":"2.0.2-SNAPSHOT",
+        "version":"3.0.0-SNAPSHOT",
         "title":"clamp"
     },
     "host":"",
                 }
             }
         },
-        "/user/{userName}":{
+        "/healthcheck":{
+            "get":{
+                "description":"REST service that retrieves clds healthcheck information.",
+                "consumes":[
+                ],
+                "produces":[
+                    "application/json"
+                ],
+                "parameters":[
+                ],
+                "responses":{
+                    "200":{
+                        "description":"OK",
+                        "headers":{
+                        },
+                        "schema":{
+                            "$ref":"#/definitions/CldsHealthCheck"
+                        }
+                    },
+                    "500":{
+                        "description":"Internal Server Error",
+                        "headers":{
+                        },
+                        "schema":{
+                            "$ref":"#/definitions/CldsHealthCheck"
+                        }
+                    }
+                }
+            }
+        },
+        "/user/getUser":{
             "get":{
                 "description":"REST service that returns the username.",
                 "consumes":[
                     "text/plain"
                 ],
                 "parameters":[
-                    {
-                        "type":"string",
-                        "name":"userName",
-                        "in":"path",
-                        "required":true
-                    }
                 ],
                 "responses":{
                     "200":{
index 499cf29..a1eacad 100644 (file)
@@ -4,16 +4,16 @@
 << /Title (clamp)
 /Creator (Asciidoctor PDF 1.5.0.alpha.10, based on Prawn 1.3.0)
 /Producer (Asciidoctor PDF 1.5.0.alpha.10, based on Prawn 1.3.0)
-/CreationDate (D:20180518174500+02'00')
-/ModDate (D:20180518174500+02'00')
+/CreationDate (D:20180627164146+02'00')
+/ModDate (D:20180627164146+02'00')
 >>
 endobj
 2 0 obj
 << /Type /Catalog
 /Pages 3 0 R
 /Names 20 0 R
-/Outlines 435 0 R
-/PageLabels 552 0 R
+/Outlines 446 0 R
+/PageLabels 566 0 R
 /PageMode /UseOutlines
 /OpenAction [7 0 R /FitH 793.0]
 /ViewerPreferences << /DisplayDocTitle true
@@ -23,7 +23,7 @@ endobj
 3 0 obj
 << /Type /Pages
 /Count 23
-/Kids [7 0 R 10 0 R 12 0 R 14 0 R 16 0 R 18 0 R 27 0 R 42 0 R 56 0 R 73 0 R 88 0 R 100 0 R 113 0 R 124 0 R 140 0 R 153 0 R 165 0 R 179 0 R 183 0 R 190 0 R 195 0 R 199 0 R 202 0 R]
+/Kids [7 0 R 10 0 R 12 0 R 14 0 R 16 0 R 18 0 R 27 0 R 42 0 R 56 0 R 73 0 R 88 0 R 100 0 R 113 0 R 124 0 R 140 0 R 153 0 R 165 0 R 180 0 R 188 0 R 195 0 R 200 0 R 204 0 R 207 0 R]
 >>
 endobj
 4 0 obj
@@ -80,11 +80,11 @@ endobj
 << /Type /Font
 /BaseFont /AAAAAA+NotoSerif
 /Subtype /TrueType
-/FontDescriptor 554 0 R
+/FontDescriptor 568 0 R
 /FirstChar 32
 /LastChar 255
-/Widths 556 0 R
-/ToUnicode 555 0 R
+/Widths 570 0 R
+/ToUnicode 569 0 R
 >>
 endobj
 9 0 obj
@@ -1559,7 +1559,7 @@ endobj
 /F1.0 8 0 R
 >>
 >>
-/Annots [206 0 R 207 0 R 208 0 R 209 0 R 210 0 R 211 0 R 212 0 R 213 0 R 214 0 R 215 0 R 216 0 R 217 0 R 218 0 R 219 0 R 220 0 R 221 0 R 222 0 R 223 0 R 224 0 R 225 0 R 226 0 R 227 0 R 228 0 R 229 0 R 230 0 R 231 0 R 232 0 R 233 0 R 234 0 R 235 0 R 236 0 R 237 0 R 238 0 R 239 0 R 240 0 R 241 0 R 242 0 R 243 0 R 244 0 R 245 0 R 246 0 R 247 0 R 248 0 R 249 0 R 250 0 R 251 0 R 252 0 R 253 0 R 254 0 R 255 0 R 256 0 R 257 0 R 258 0 R 259 0 R 260 0 R 261 0 R 262 0 R 263 0 R 264 0 R 265 0 R 266 0 R 267 0 R 268 0 R 269 0 R 270 0 R 271 0 R 272 0 R 273 0 R 274 0 R 275 0 R 276 0 R 277 0 R]
+/Annots [211 0 R 212 0 R 213 0 R 214 0 R 215 0 R 216 0 R 217 0 R 218 0 R 219 0 R 220 0 R 221 0 R 222 0 R 223 0 R 224 0 R 225 0 R 226 0 R 227 0 R 228 0 R 229 0 R 230 0 R 231 0 R 232 0 R 233 0 R 234 0 R 235 0 R 236 0 R 237 0 R 238 0 R 239 0 R 240 0 R 241 0 R 242 0 R 243 0 R 244 0 R 245 0 R 246 0 R 247 0 R 248 0 R 249 0 R 250 0 R 251 0 R 252 0 R 253 0 R 254 0 R 255 0 R 256 0 R 257 0 R 258 0 R 259 0 R 260 0 R 261 0 R 262 0 R 263 0 R 264 0 R 265 0 R 266 0 R 267 0 R 268 0 R 269 0 R 270 0 R 271 0 R 272 0 R 273 0 R 274 0 R 275 0 R 276 0 R 277 0 R 278 0 R 279 0 R 280 0 R 281 0 R 282 0 R]
 >>
 endobj
 11 0 obj
@@ -3102,11 +3102,11 @@ endobj
 /Font << /F1.0 8 0 R
 >>
 >>
-/Annots [278 0 R 279 0 R 280 0 R 281 0 R 282 0 R 283 0 R 284 0 R 285 0 R 286 0 R 287 0 R 288 0 R 289 0 R 290 0 R 291 0 R 292 0 R 293 0 R 294 0 R 295 0 R 296 0 R 297 0 R 298 0 R 299 0 R 300 0 R 301 0 R 302 0 R 303 0 R 304 0 R 305 0 R 306 0 R 307 0 R 308 0 R 309 0 R 310 0 R 311 0 R 312 0 R 313 0 R 314 0 R 315 0 R 316 0 R 317 0 R 318 0 R 319 0 R 320 0 R 321 0 R 322 0 R 323 0 R 324 0 R 325 0 R 326 0 R 327 0 R 328 0 R 329 0 R 330 0 R 331 0 R 332 0 R 333 0 R 334 0 R 335 0 R 336 0 R 337 0 R 338 0 R 339 0 R 340 0 R 341 0 R 342 0 R 343 0 R 344 0 R 345 0 R 346 0 R 347 0 R 348 0 R 349 0 R 350 0 R 351 0 R 352 0 R 353 0 R]
+/Annots [283 0 R 284 0 R 285 0 R 286 0 R 287 0 R 288 0 R 289 0 R 290 0 R 291 0 R 292 0 R 293 0 R 294 0 R 295 0 R 296 0 R 297 0 R 298 0 R 299 0 R 300 0 R 301 0 R 302 0 R 303 0 R 304 0 R 305 0 R 306 0 R 307 0 R 308 0 R 309 0 R 310 0 R 311 0 R 312 0 R 313 0 R 314 0 R 315 0 R 316 0 R 317 0 R 318 0 R 319 0 R 320 0 R 321 0 R 322 0 R 323 0 R 324 0 R 325 0 R 326 0 R 327 0 R 328 0 R 329 0 R 330 0 R 331 0 R 332 0 R 333 0 R 334 0 R 335 0 R 336 0 R 337 0 R 338 0 R 339 0 R 340 0 R 341 0 R 342 0 R 343 0 R 344 0 R 345 0 R 346 0 R 347 0 R 348 0 R 349 0 R 350 0 R 351 0 R 352 0 R 353 0 R 354 0 R 355 0 R 356 0 R 357 0 R 358 0 R]
 >>
 endobj
 13 0 obj
-<< /Length 32157
+<< /Length 32139
 >>
 stream
 q
@@ -4118,7 +4118,7 @@ ET
 BT
 60.24000000000001 282.78599999999955 Td
 /F1.0 10.5 Tf
-<322e32312e20474554202f757365722f7b757365724e616d657d> Tj
+<322e32312e20474554202f6865616c7468636865636b> Tj
 ET
 
 0.000 0.000 0.000 SCN
@@ -4127,9 +4127,9 @@ ET
 0.200 0.200 0.200 SCN
 
 BT
-203.26874999999995 282.78599999999955 Td
+176.54625 282.78599999999955 Td
 /F1.0 10.5 Tf
-<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj
+<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj
 ET
 
 0.000 0.000 0.000 SCN
@@ -4198,7 +4198,7 @@ ET
 BT
 72.24000000000001 245.8259999999995 Td
 /F1.0 10.5 Tf
-[<322e32312e322e20506172> 20.01953125 <616d6574657273>] TJ
+<322e32312e322e20526573706f6e736573> Tj
 ET
 
 0.000 0.000 0.000 SCN
@@ -4207,9 +4207,9 @@ ET
 0.200 0.200 0.200 SCN
 
 BT
-165.85724999999996 245.8259999999995 Td
+160.51274999999998 245.8259999999995 Td
 /F1.0 10.5 Tf
-<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj
+<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj
 ET
 
 0.000 0.000 0.000 SCN
@@ -4238,7 +4238,7 @@ ET
 BT
 72.24000000000001 227.34599999999952 Td
 /F1.0 10.5 Tf
-<322e32312e332e20526573706f6e736573> Tj
+<322e32312e332e2050726f6475636573> Tj
 ET
 
 0.000 0.000 0.000 SCN
@@ -4247,9 +4247,9 @@ ET
 0.200 0.200 0.200 SCN
 
 BT
-160.51274999999998 227.34599999999952 Td
+155.16824999999994 227.34599999999952 Td
 /F1.0 10.5 Tf
-<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj
+<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj
 ET
 
 0.000 0.000 0.000 SCN
@@ -4276,9 +4276,9 @@ ET
 0.200 0.200 0.200 SCN
 
 BT
-72.24000000000001 208.86599999999953 Td
+60.24000000000001 208.86599999999953 Td
 /F1.0 10.5 Tf
-<322e32312e342e2050726f6475636573> Tj
+<322e32322e20474554202f757365722f67657455736572> Tj
 ET
 
 0.000 0.000 0.000 SCN
@@ -4287,9 +4287,9 @@ ET
 0.200 0.200 0.200 SCN
 
 BT
-155.16824999999994 208.86599999999953 Td
+176.54625 208.86599999999953 Td
 /F1.0 10.5 Tf
-<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj
+<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj
 ET
 
 0.000 0.000 0.000 SCN
@@ -4316,9 +4316,9 @@ ET
 0.200 0.200 0.200 SCN
 
 BT
-48.24000000000001 190.38599999999954 Td
+72.24000000000001 190.38599999999954 Td
 /F1.0 10.5 Tf
-<332e20446566696e6974696f6e73> Tj
+<322e32322e312e204465736372697074696f6e> Tj
 ET
 
 0.000 0.000 0.000 SCN
@@ -4327,9 +4327,9 @@ ET
 0.200 0.200 0.200 SCN
 
 BT
-117.75674999999995 190.38599999999954 Td
+165.85724999999996 190.38599999999954 Td
 /F1.0 10.5 Tf
-<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj
+<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj
 ET
 
 0.000 0.000 0.000 SCN
@@ -4347,7 +4347,7 @@ ET
 BT
 552.021 190.38599999999954 Td
 /F1.0 10.5 Tf
-<3134> Tj
+<3133> Tj
 ET
 
 0.000 0.000 0.000 SCN
@@ -4356,9 +4356,9 @@ ET
 0.200 0.200 0.200 SCN
 
 BT
-60.24000000000001 171.90599999999955 Td
+72.24000000000001 171.90599999999955 Td
 /F1.0 10.5 Tf
-<332e312e20436c64734576656e74> Tj
+<322e32322e322e20526573706f6e736573> Tj
 ET
 
 0.000 0.000 0.000 SCN
@@ -4367,9 +4367,9 @@ ET
 0.200 0.200 0.200 SCN
 
 BT
-133.79024999999996 171.90599999999955 Td
+160.51274999999998 171.90599999999955 Td
 /F1.0 10.5 Tf
-<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj
+<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj
 ET
 
 0.000 0.000 0.000 SCN
@@ -4387,7 +4387,7 @@ ET
 BT
 552.021 171.90599999999955 Td
 /F1.0 10.5 Tf
-<3134> Tj
+<3133> Tj
 ET
 
 0.000 0.000 0.000 SCN
@@ -4396,9 +4396,9 @@ ET
 0.200 0.200 0.200 SCN
 
 BT
-60.24000000000001 153.42599999999956 Td
+72.24000000000001 153.42599999999956 Td
 /F1.0 10.5 Tf
-<332e322e20436c64734865616c7468436865636b> Tj
+<322e32322e332e2050726f6475636573> Tj
 ET
 
 0.000 0.000 0.000 SCN
@@ -4407,9 +4407,9 @@ ET
 0.200 0.200 0.200 SCN
 
 BT
-165.85724999999996 153.42599999999956 Td
+155.16824999999994 153.42599999999956 Td
 /F1.0 10.5 Tf
-<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj
+<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj
 ET
 
 0.000 0.000 0.000 SCN
@@ -4427,7 +4427,7 @@ ET
 BT
 552.021 153.42599999999956 Td
 /F1.0 10.5 Tf
-<3134> Tj
+<3133> Tj
 ET
 
 0.000 0.000 0.000 SCN
@@ -4436,9 +4436,9 @@ ET
 0.200 0.200 0.200 SCN
 
 BT
-60.24000000000001 134.94599999999957 Td
+48.24000000000001 134.94599999999957 Td
 /F1.0 10.5 Tf
-<332e332e20436c6473496e666f> Tj
+<332e20446566696e6974696f6e73> Tj
 ET
 
 0.000 0.000 0.000 SCN
@@ -4447,9 +4447,9 @@ ET
 0.200 0.200 0.200 SCN
 
 BT
-123.10125 134.94599999999957 Td
+117.75674999999995 134.94599999999957 Td
 /F1.0 10.5 Tf
-<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj
+<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj
 ET
 
 0.000 0.000 0.000 SCN
@@ -4478,7 +4478,7 @@ ET
 BT
 60.24000000000001 116.46599999999958 Td
 /F1.0 10.5 Tf
-<332e342e20436c64734d6f64656c> Tj
+<332e312e20436c64734576656e74> Tj
 ET
 
 0.000 0.000 0.000 SCN
@@ -4507,7 +4507,7 @@ ET
 BT
 552.021 116.46599999999958 Td
 /F1.0 10.5 Tf
-<3135> Tj
+<3134> Tj
 ET
 
 0.000 0.000 0.000 SCN
@@ -4518,7 +4518,7 @@ ET
 BT
 60.24000000000001 97.98599999999959 Td
 /F1.0 10.5 Tf
-<332e352e20436c64734d6f64656c496e7374616e6365> Tj
+<332e322e20436c64734865616c7468436865636b> Tj
 ET
 
 0.000 0.000 0.000 SCN
@@ -4527,9 +4527,9 @@ ET
 0.200 0.200 0.200 SCN
 
 BT
-176.54625 97.98599999999959 Td
+165.85724999999996 97.98599999999959 Td
 /F1.0 10.5 Tf
-<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj
+<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj
 ET
 
 0.000 0.000 0.000 SCN
@@ -4547,7 +4547,7 @@ ET
 BT
 552.021 97.98599999999959 Td
 /F1.0 10.5 Tf
-<3136> Tj
+<3134> Tj
 ET
 
 0.000 0.000 0.000 SCN
@@ -4558,7 +4558,7 @@ ET
 BT
 60.24000000000001 79.5059999999996 Td
 /F1.0 10.5 Tf
-<332e362e20436c64734d6f6e69746f72696e6744657461696c73> Tj
+<332e332e20436c6473496e666f> Tj
 ET
 
 0.000 0.000 0.000 SCN
@@ -4567,9 +4567,9 @@ ET
 0.200 0.200 0.200 SCN
 
 BT
-192.57975 79.5059999999996 Td
+123.10125 79.5059999999996 Td
 /F1.0 10.5 Tf
-<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj
+<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj
 ET
 
 0.000 0.000 0.000 SCN
@@ -4587,7 +4587,7 @@ ET
 BT
 552.021 79.5059999999996 Td
 /F1.0 10.5 Tf
-<3136> Tj
+<3134> Tj
 ET
 
 0.000 0.000 0.000 SCN
@@ -4598,7 +4598,7 @@ ET
 BT
 60.24000000000001 61.02599999999961 Td
 /F1.0 10.5 Tf
-[<332e372e20436c647354> 29.78515625 <656d706c617465>] TJ
+<332e342e20436c64734d6f64656c> Tj
 ET
 
 0.000 0.000 0.000 SCN
@@ -4607,9 +4607,9 @@ ET
 0.200 0.200 0.200 SCN
 
 BT
-149.82374999999996 61.02599999999961 Td
+133.79024999999996 61.02599999999961 Td
 /F1.0 10.5 Tf
-<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj
+<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj
 ET
 
 0.000 0.000 0.000 SCN
@@ -4627,7 +4627,7 @@ ET
 BT
 552.021 61.02599999999961 Td
 /F1.0 10.5 Tf
-<3137> Tj
+<3135> Tj
 ET
 
 0.000 0.000 0.000 SCN
@@ -4645,11 +4645,11 @@ endobj
 /Font << /F1.0 8 0 R
 >>
 >>
-/Annots [354 0 R 355 0 R 356 0 R 357 0 R 358 0 R 359 0 R 360 0 R 361 0 R 362 0 R 363 0 R 364 0 R 365 0 R 366 0 R 367 0 R 368 0 R 369 0 R 370 0 R 371 0 R 372 0 R 373 0 R 374 0 R 375 0 R 376 0 R 377 0 R 378 0 R 379 0 R 380 0 R 381 0 R 382 0 R 383 0 R 384 0 R 385 0 R 386 0 R 387 0 R 388 0 R 389 0 R 390 0 R 391 0 R 392 0 R 393 0 R 394 0 R 395 0 R 396 0 R 397 0 R 398 0 R 399 0 R 400 0 R 401 0 R 402 0 R 403 0 R 404 0 R 405 0 R 406 0 R 407 0 R 408 0 R 409 0 R 410 0 R 411 0 R 412 0 R 413 0 R 414 0 R 415 0 R 416 0 R 417 0 R 418 0 R 419 0 R 420 0 R 421 0 R 422 0 R 423 0 R 424 0 R 425 0 R 426 0 R 427 0 R 428 0 R 429 0 R]
+/Annots [359 0 R 360 0 R 361 0 R 362 0 R 363 0 R 364 0 R 365 0 R 366 0 R 367 0 R 368 0 R 369 0 R 370 0 R 371 0 R 372 0 R 373 0 R 374 0 R 375 0 R 376 0 R 377 0 R 378 0 R 379 0 R 380 0 R 381 0 R 382 0 R 383 0 R 384 0 R 385 0 R 386 0 R 387 0 R 388 0 R 389 0 R 390 0 R 391 0 R 392 0 R 393 0 R 394 0 R 395 0 R 396 0 R 397 0 R 398 0 R 399 0 R 400 0 R 401 0 R 402 0 R 403 0 R 404 0 R 405 0 R 406 0 R 407 0 R 408 0 R 409 0 R 410 0 R 411 0 R 412 0 R 413 0 R 414 0 R 415 0 R 416 0 R 417 0 R 418 0 R 419 0 R 420 0 R 421 0 R 422 0 R 423 0 R 424 0 R 425 0 R 426 0 R 427 0 R 428 0 R 429 0 R 430 0 R 431 0 R 432 0 R 433 0 R 434 0 R]
 >>
 endobj
 15 0 obj
-<< /Length 1719
+<< /Length 4259
 >>
 stream
 q
@@ -4661,7 +4661,7 @@ q
 BT
 60.24 744.786 Td
 /F1.0 10.5 Tf
-<332e382e20446361654576656e74> Tj
+<332e352e20436c64734d6f64656c496e7374616e6365> Tj
 ET
 
 0.000 0.000 0.000 SCN
@@ -4670,9 +4670,9 @@ ET
 0.200 0.200 0.200 SCN
 
 BT
-133.79024999999996 744.786 Td
+176.54625 744.786 Td
 /F1.0 10.5 Tf
-<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj
+<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj
 ET
 
 0.000 0.000 0.000 SCN
@@ -4690,7 +4690,7 @@ ET
 BT
 552.021 744.786 Td
 /F1.0 10.5 Tf
-<3138> Tj
+<3136> Tj
 ET
 
 0.000 0.000 0.000 SCN
@@ -4701,7 +4701,7 @@ ET
 BT
 60.24000000000001 726.3059999999999 Td
 /F1.0 10.5 Tf
-[<332e392e2056> 60.05859375 <616c75654974656d>] TJ
+<332e362e20436c64734d6f6e69746f72696e6744657461696c73> Tj
 ET
 
 0.000 0.000 0.000 SCN
@@ -4710,9 +4710,9 @@ ET
 0.200 0.200 0.200 SCN
 
 BT
-133.79024999999996 726.3059999999999 Td
+192.57975 726.3059999999999 Td
 /F1.0 10.5 Tf
-<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj
+<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj
 ET
 
 0.000 0.000 0.000 SCN
@@ -4730,6 +4730,126 @@ ET
 BT
 552.021 726.3059999999999 Td
 /F1.0 10.5 Tf
+<3136> Tj
+ET
+
+0.000 0.000 0.000 SCN
+0.000 0.000 0.000 scn
+0.200 0.200 0.200 scn
+0.200 0.200 0.200 SCN
+
+BT
+60.24000000000001 707.8259999999999 Td
+/F1.0 10.5 Tf
+[<332e372e20436c647354> 29.78515625 <656d706c617465>] TJ
+ET
+
+0.000 0.000 0.000 SCN
+0.000 0.000 0.000 scn
+0.200 0.200 0.200 scn
+0.200 0.200 0.200 SCN
+
+BT
+149.82374999999996 707.8259999999999 Td
+/F1.0 10.5 Tf
+<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj
+ET
+
+0.000 0.000 0.000 SCN
+0.000 0.000 0.000 scn
+
+BT
+550.66125 707.8259999999999 Td
+/F1.0 5.25 Tf
+<ca> Tj
+ET
+
+0.200 0.200 0.200 scn
+0.200 0.200 0.200 SCN
+
+BT
+552.021 707.8259999999999 Td
+/F1.0 10.5 Tf
+<3137> Tj
+ET
+
+0.000 0.000 0.000 SCN
+0.000 0.000 0.000 scn
+0.200 0.200 0.200 scn
+0.200 0.200 0.200 SCN
+
+BT
+60.24000000000001 689.3459999999999 Td
+/F1.0 10.5 Tf
+<332e382e20446361654576656e74> Tj
+ET
+
+0.000 0.000 0.000 SCN
+0.000 0.000 0.000 scn
+0.200 0.200 0.200 scn
+0.200 0.200 0.200 SCN
+
+BT
+133.79024999999996 689.3459999999999 Td
+/F1.0 10.5 Tf
+<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj
+ET
+
+0.000 0.000 0.000 SCN
+0.000 0.000 0.000 scn
+
+BT
+550.66125 689.3459999999999 Td
+/F1.0 5.25 Tf
+<ca> Tj
+ET
+
+0.200 0.200 0.200 scn
+0.200 0.200 0.200 SCN
+
+BT
+552.021 689.3459999999999 Td
+/F1.0 10.5 Tf
+<3138> Tj
+ET
+
+0.000 0.000 0.000 SCN
+0.000 0.000 0.000 scn
+0.200 0.200 0.200 scn
+0.200 0.200 0.200 SCN
+
+BT
+60.24000000000001 670.8659999999999 Td
+/F1.0 10.5 Tf
+[<332e392e2056> 60.05859375 <616c75654974656d>] TJ
+ET
+
+0.000 0.000 0.000 SCN
+0.000 0.000 0.000 scn
+0.200 0.200 0.200 scn
+0.200 0.200 0.200 SCN
+
+BT
+133.79024999999996 670.8659999999999 Td
+/F1.0 10.5 Tf
+<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj
+ET
+
+0.000 0.000 0.000 SCN
+0.000 0.000 0.000 scn
+
+BT
+550.66125 670.8659999999999 Td
+/F1.0 5.25 Tf
+<ca> Tj
+ET
+
+0.200 0.200 0.200 scn
+0.200 0.200 0.200 SCN
+
+BT
+552.021 670.8659999999999 Td
+/F1.0 10.5 Tf
 <3138> Tj
 ET
 
@@ -4748,7 +4868,7 @@ endobj
 /Font << /F1.0 8 0 R
 >>
 >>
-/Annots [430 0 R 431 0 R 432 0 R 433 0 R]
+/Annots [435 0 R 436 0 R 437 0 R 438 0 R 439 0 R 440 0 R 441 0 R 442 0 R 443 0 R 444 0 R]
 >>
 endobj
 17 0 obj
@@ -4797,7 +4917,7 @@ ET
 BT
 85.136384765625 660.036 Td
 /F1.0 10.5 Tf
-[<203a20322e302e302d534e415053484f> 20.01953125 <54>] TJ
+[<203a20332e302e302d534e415053484f> 20.01953125 <54>] TJ
 ET
 
 0.000 0.000 0.000 SCN
@@ -4900,7 +5020,7 @@ endobj
 /F3.0 24 0 R
 /F1.0 8 0 R
 >>
-/XObject << /Stamp1 434 0 R
+/XObject << /Stamp1 445 0 R
 >>
 >>
 >>
@@ -4914,18 +5034,18 @@ endobj
 >>
 endobj
 21 0 obj
-<< /Kids [58 0 R 96 0 R 187 0 R 127 0 R 59 0 R 138 0 R 86 0 R 144 0 R]
+<< /Kids [58 0 R 96 0 R 192 0 R 127 0 R 59 0 R 138 0 R 86 0 R 144 0 R]
 >>
 endobj
 22 0 obj
 << /Type /Font
 /BaseFont /AAAAAB+NotoSerif-Bold
 /Subtype /TrueType
-/FontDescriptor 558 0 R
+/FontDescriptor 572 0 R
 /FirstChar 32
 /LastChar 255
-/Widths 560 0 R
-/ToUnicode 559 0 R
+/Widths 574 0 R
+/ToUnicode 573 0 R
 >>
 endobj
 23 0 obj
@@ -4935,11 +5055,11 @@ endobj
 << /Type /Font
 /BaseFont /AAAAAC+NotoSerif-Italic
 /Subtype /TrueType
-/FontDescriptor 562 0 R
+/FontDescriptor 576 0 R
 /FirstChar 32
 /LastChar 255
-/Widths 564 0 R
-/ToUnicode 563 0 R
+/Widths 578 0 R
+/ToUnicode 577 0 R
 >>
 endobj
 25 0 obj
@@ -6164,7 +6284,7 @@ endobj
 /F3.0 24 0 R
 /F4.0 37 0 R
 >>
-/XObject << /Stamp1 434 0 R
+/XObject << /Stamp1 445 0 R
 >>
 >>
 /Annots [32 0 R 34 0 R 35 0 R]
@@ -6216,11 +6336,11 @@ endobj
 << /Type /Font
 /BaseFont /AAAAAD+mplus1mn-regular
 /Subtype /TrueType
-/FontDescriptor 566 0 R
+/FontDescriptor 580 0 R
 /FirstChar 32
 /LastChar 255
-/Widths 568 0 R
-/ToUnicode 567 0 R
+/Widths 582 0 R
+/ToUnicode 581 0 R
 >>
 endobj
 38 0 obj
@@ -7576,7 +7696,7 @@ endobj
 /F4.0 37 0 R
 /F3.0 24 0 R
 >>
-/XObject << /Stamp1 434 0 R
+/XObject << /Stamp1 445 0 R
 >>
 >>
 /Annots [43 0 R 44 0 R 48 0 R 53 0 R]
@@ -8662,7 +8782,7 @@ endobj
 /F4.0 37 0 R
 /F3.0 24 0 R
 >>
-/XObject << /Stamp1 434 0 R
+/XObject << /Stamp1 445 0 R
 >>
 >>
 /Annots [63 0 R 65 0 R 66 0 R]
@@ -8678,7 +8798,7 @@ endobj
 endobj
 59 0 obj
 << /Limits [(_parameters_10) (_produces)]
-/Names [(_parameters_10) 149 0 R (_parameters_11) 156 0 R (_parameters_12) 161 0 R (_parameters_13) 169 0 R (_parameters_14) 177 0 R (_parameters_2) 52 0 R (_parameters_3) 62 0 R (_parameters_4) 84 0 R (_parameters_5) 92 0 R (_parameters_6) 98 0 R (_parameters_7) 106 0 R (_parameters_8) 120 0 R (_parameters_9) 131 0 R (_paths) 28 0 R (_produces) 38 0 R]
+/Names [(_parameters_10) 149 0 R (_parameters_11) 156 0 R (_parameters_12) 161 0 R (_parameters_13) 169 0 R (_parameters_2) 52 0 R (_parameters_3) 62 0 R (_parameters_4) 84 0 R (_parameters_5) 92 0 R (_parameters_6) 98 0 R (_parameters_7) 106 0 R (_parameters_8) 120 0 R (_parameters_9) 131 0 R (_paths) 28 0 R (_produces) 38 0 R]
 >>
 endobj
 60 0 obj
@@ -9852,7 +9972,7 @@ endobj
 /F4.0 37 0 R
 /F3.0 24 0 R
 >>
-/XObject << /Stamp1 434 0 R
+/XObject << /Stamp1 445 0 R
 >>
 >>
 /Annots [74 0 R 75 0 R 80 0 R]
@@ -10879,7 +10999,7 @@ endobj
 /F4.0 37 0 R
 /F3.0 24 0 R
 >>
-/XObject << /Stamp1 434 0 R
+/XObject << /Stamp1 445 0 R
 >>
 >>
 >>
@@ -10907,7 +11027,7 @@ endobj
 endobj
 96 0 obj
 << /Limits [(_clds_model_modelname_put) (_cldstempate_template_image_templatename_get)]
-/Names [(_clds_model_modelname_put) 104 0 R (_clds_properties_get) 114 0 R (_clds_properties_serviceinvariantuuid_get) 118 0 R (_clds_sdc_services_get) 125 0 R (_clds_undeploy_modelname_put) 130 0 R (_cldsevent) 185 0 R (_cldshealthcheck) 186 0 R (_cldsinfo) 188 0 R (_cldsmodel) 191 0 R (_cldsmodelinstance) 196 0 R (_cldsmonitoringdetails) 197 0 R (_cldstempate_template-names_get) 141 0 R (_cldstempate_template_bpmn_templatename_get) 147 0 R (_cldstempate_template_image_templatename_get) 154 0 R]
+/Names [(_clds_model_modelname_put) 104 0 R (_clds_properties_get) 114 0 R (_clds_properties_serviceinvariantuuid_get) 118 0 R (_clds_sdc_services_get) 125 0 R (_clds_undeploy_modelname_put) 130 0 R (_cldsevent) 190 0 R (_cldshealthcheck) 191 0 R (_cldsinfo) 193 0 R (_cldsmodel) 196 0 R (_cldsmodelinstance) 201 0 R (_cldsmonitoringdetails) 202 0 R (_cldstempate_template-names_get) 141 0 R (_cldstempate_template_bpmn_templatename_get) 147 0 R (_cldstempate_template_image_templatename_get) 154 0 R]
 >>
 endobj
 97 0 obj
@@ -12262,7 +12382,7 @@ endobj
 /F1.0 8 0 R
 /F4.0 37 0 R
 >>
-/XObject << /Stamp1 434 0 R
+/XObject << /Stamp1 445 0 R
 >>
 >>
 /Annots [102 0 R 107 0 R 109 0 R]
@@ -13517,7 +13637,7 @@ endobj
 /F4.0 37 0 R
 /F3.0 24 0 R
 >>
-/XObject << /Stamp1 434 0 R
+/XObject << /Stamp1 445 0 R
 >>
 >>
 >>
@@ -14777,7 +14897,7 @@ endobj
 /F4.0 37 0 R
 /F3.0 24 0 R
 >>
-/XObject << /Stamp1 434 0 R
+/XObject << /Stamp1 445 0 R
 >>
 >>
 /Annots [132 0 R 134 0 R 135 0 R]
@@ -14791,7 +14911,7 @@ endobj
 endobj
 127 0 obj
 << /Limits [(_description_11) (_parameters)]
-/Names [(_description_11) 126 0 R (_description_12) 142 0 R (_description_13) 148 0 R (_description_14) 155 0 R (_description_15) 160 0 R (_description_16) 168 0 R (_description_17) 176 0 R (_description_2) 51 0 R (_description_3) 70 0 R (_description_4) 78 0 R (_description_5) 83 0 R (_description_6) 91 0 R (_description_7) 97 0 R (_description_8) 105 0 R (_description_9) 115 0 R (_overview) 19 0 R (_parameters) 31 0 R]
+/Names [(_description_11) 126 0 R (_description_12) 142 0 R (_description_13) 148 0 R (_description_14) 155 0 R (_description_15) 160 0 R (_description_16) 168 0 R (_description_17) 176 0 R (_description_18) 184 0 R (_description_2) 51 0 R (_description_3) 70 0 R (_description_4) 78 0 R (_description_5) 83 0 R (_description_6) 91 0 R (_description_7) 97 0 R (_description_8) 105 0 R (_description_9) 115 0 R (_healthcheck_get) 175 0 R (_overview) 19 0 R (_parameters) 31 0 R]
 >>
 endobj
 128 0 obj
@@ -14841,7 +14961,7 @@ endobj
 endobj
 138 0 obj
 << /Limits [(_produces_10) (_produces_6)]
-/Names [(_produces_10) 103 0 R (_produces_11) 111 0 R (_produces_12) 117 0 R (_produces_13) 122 0 R (_produces_14) 129 0 R (_produces_15) 137 0 R (_produces_16) 146 0 R (_produces_17) 151 0 R (_produces_18) 158 0 R (_produces_19) 166 0 R (_produces_2) 45 0 R (_produces_20) 174 0 R (_produces_21) 181 0 R (_produces_3) 49 0 R (_produces_4) 60 0 R (_produces_5) 68 0 R (_produces_6) 76 0 R]
+/Names [(_produces_10) 103 0 R (_produces_11) 111 0 R (_produces_12) 117 0 R (_produces_13) 122 0 R (_produces_14) 129 0 R (_produces_15) 137 0 R (_produces_16) 146 0 R (_produces_17) 151 0 R (_produces_18) 158 0 R (_produces_19) 166 0 R (_produces_2) 45 0 R (_produces_20) 174 0 R (_produces_21) 182 0 R (_produces_22) 186 0 R (_produces_3) 49 0 R (_produces_4) 60 0 R (_produces_5) 68 0 R (_produces_6) 76 0 R]
 >>
 endobj
 139 0 obj
@@ -15831,7 +15951,7 @@ endobj
 /F4.0 37 0 R
 /F3.0 24 0 R
 >>
-/XObject << /Stamp1 434 0 R
+/XObject << /Stamp1 445 0 R
 >>
 >>
 /Annots [145 0 R]
@@ -15848,7 +15968,7 @@ endobj
 endobj
 144 0 obj
 << /Limits [(_responses_16) (_version_information)]
-/Names [(_responses_16) 143 0 R (_responses_17) 150 0 R (_responses_18) 157 0 R (_responses_19) 162 0 R (_responses_2) 40 0 R (_responses_20) 171 0 R (_responses_21) 180 0 R (_responses_3) 47 0 R (_responses_4) 54 0 R (_responses_5) 64 0 R (_responses_6) 71 0 R (_responses_7) 79 0 R (_responses_8) 85 0 R (_responses_9) 93 0 R (_uri_scheme) 25 0 R (_user_username_get) 175 0 R (_valueitem) 205 0 R (_version_information) 23 0 R]
+/Names [(_responses_16) 143 0 R (_responses_17) 150 0 R (_responses_18) 157 0 R (_responses_19) 162 0 R (_responses_2) 40 0 R (_responses_20) 171 0 R (_responses_21) 177 0 R (_responses_22) 185 0 R (_responses_3) 47 0 R (_responses_4) 54 0 R (_responses_5) 64 0 R (_responses_6) 71 0 R (_responses_7) 79 0 R (_responses_8) 85 0 R (_responses_9) 93 0 R (_uri_scheme) 25 0 R (_user_getuser_get) 183 0 R (_valueitem) 210 0 R (_version_information) 23 0 R]
 >>
 endobj
 145 0 obj
@@ -17070,7 +17190,7 @@ endobj
 /F3.0 24 0 R
 /F4.0 37 0 R
 >>
-/XObject << /Stamp1 434 0 R
+/XObject << /Stamp1 445 0 R
 >>
 >>
 /Annots [163 0 R]
@@ -17112,7 +17232,7 @@ endobj
 >>
 endobj
 164 0 obj
-<< /Length 15505
+<< /Length 15671
 >>
 stream
 q
@@ -17922,7 +18042,7 @@ ET
 BT
 48.24000000000001 218.19600000000034 Td
 /F2.0 18 Tf
-<322e32312e20474554202f757365722f7b757365724e616d657d> Tj
+<322e32312e20474554202f6865616c7468636865636b> Tj
 ET
 
 0.000 0.000 0.000 SCN
@@ -17944,7 +18064,7 @@ ET
 BT
 48.24000000000001 157.2960000000003 Td
 /F1.0 10.5 Tf
-[<524553> 20.01953125 <54207365727669636520746861742072657475726e732074686520757365726e616d652e>] TJ
+[<524553> 20.01953125 <54207365727669636520746861742072657472696576657320636c6473206865616c7468636865636b20696e666f726d6174696f6e2e>] TJ
 ET
 
 0.000 0.000 0.000 SCN
 BT
 48.24000000000001 123.89600000000029 Td
 /F2.0 13 Tf
-[<322e32312e322e20506172> 20.01953125 <616d6574657273>] TJ
+<322e32312e322e20526573706f6e736573> Tj
 ET
 
 0.000 0.000 0.000 SCN
 0.000 0.000 0.000 scn
 1.000 1.000 1.000 scn
-48.240 85.920 113.414 23.280 re
+48.240 71.640 51.552 37.560 re
 f
 0.000 0.000 0.000 scn
 1.000 1.000 1.000 scn
-161.654 85.920 170.122 23.280 re
+99.792 71.640 360.864 37.560 re
 f
 0.000 0.000 0.000 scn
 1.000 1.000 1.000 scn
-331.776 85.920 226.829 23.280 re
+460.656 71.640 103.104 37.560 re
 f
 0.000 0.000 0.000 scn
 1.000 1.000 1.000 scn
-48.240 48.360 113.414 37.560 re
+48.240 48.360 51.552 23.280 re
 f
 0.000 0.000 0.000 scn
 1.000 1.000 1.000 scn
-161.654 48.360 170.122 37.560 re
+99.792 48.360 360.864 23.280 re
 f
 0.000 0.000 0.000 scn
 1.000 1.000 1.000 scn
-331.776 48.360 226.829 37.560 re
+460.656 48.360 103.104 23.280 re
 f
 0.000 0.000 0.000 scn
 0.5 w
 0.867 0.867 0.867 SCN
 48.240 109.200 m
-161.654 109.200 l
+99.792 109.200 l
 S
 [ ] 0 d
 1.5 w
 0.867 0.867 0.867 SCN
-48.240 85.920 m
-161.654 85.920 l
+48.240 71.640 m
+99.792 71.640 l
 S
 [ ] 0 d
 0.5 w
 0.867 0.867 0.867 SCN
 48.240 109.450 m
-48.240 85.170 l
+48.240 70.890 l
 S
 [ ] 0 d
 0.5 w
 0.867 0.867 0.867 SCN
-161.654 109.450 m
-161.654 85.170 l
+99.792 109.450 m
+99.792 70.890 l
 S
 [ ] 0 d
 1 w
 BT
 51.24000000000001 93.45300000000027 Td
 /F2.0 10.5 Tf
-<54797065> Tj
+<48545450> Tj
+ET
+
+
+BT
+51.24000000000001 79.17300000000027 Td
+/F2.0 10.5 Tf
+<436f6465> Tj
 ET
 
 0.000 0.000 0.000 scn
 0.5 w
 0.867 0.867 0.867 SCN
-161.654 109.200 m
-331.776 109.200 l
+99.792 109.200 m
+460.656 109.200 l
 S
 [ ] 0 d
 1.5 w
 0.867 0.867 0.867 SCN
-161.654 85.920 m
-331.776 85.920 l
+99.792 71.640 m
+460.656 71.640 l
 S
 [ ] 0 d
 0.5 w
 0.867 0.867 0.867 SCN
-161.654 109.450 m
-161.654 85.170 l
+99.792 109.450 m
+99.792 70.890 l
 S
 [ ] 0 d
 0.5 w
 0.867 0.867 0.867 SCN
-331.776 109.450 m
-331.776 85.170 l
+460.656 109.450 m
+460.656 70.890 l
 S
 [ ] 0 d
 1 w
 0.200 0.200 0.200 scn
 
 BT
-164.6544 93.45300000000027 Td
+102.792 93.45300000000027 Td
 /F2.0 10.5 Tf
-<4e616d65> Tj
+<4465736372697074696f6e> Tj
 ET
 
 0.000 0.000 0.000 scn
 0.5 w
 0.867 0.867 0.867 SCN
-331.776 109.200 m
-558.605 109.200 l
+460.656 109.200 m
+563.760 109.200 l
 S
 [ ] 0 d
 1.5 w
 0.867 0.867 0.867 SCN
-331.776 85.920 m
-558.605 85.920 l
+460.656 71.640 m
+563.760 71.640 l
 S
 [ ] 0 d
 0.5 w
 0.867 0.867 0.867 SCN
-331.776 109.450 m
-331.776 85.170 l
+460.656 109.450 m
+460.656 70.890 l
 S
 [ ] 0 d
 0.5 w
 0.867 0.867 0.867 SCN
-558.605 109.450 m
-558.605 85.170 l
+563.760 109.450 m
+563.760 70.890 l
 S
 [ ] 0 d
 1 w
 0.200 0.200 0.200 scn
 
 BT
-334.776 93.45300000000027 Td
+463.65600000000006 93.45300000000027 Td
 /F2.0 10.5 Tf
 <536368656d61> Tj
 ET
 0.000 0.000 0.000 scn
 0.5 w
 0.867 0.867 0.867 SCN
-48.240 85.920 m
-161.654 85.920 l
+48.240 71.640 m
+99.792 71.640 l
 S
 [ ] 0 d
 0.5 w
 0.867 0.867 0.867 SCN
 48.240 48.360 m
-161.654 48.360 l
+99.792 48.360 l
 S
 [ ] 0 d
 0.5 w
 0.867 0.867 0.867 SCN
-48.240 86.170 m
+48.240 71.890 m
 48.240 48.110 l
 S
 [ ] 0 d
 0.5 w
 0.867 0.867 0.867 SCN
-161.654 86.170 m
-161.654 48.110 l
+99.792 71.890 m
+99.792 48.110 l
 S
 [ ] 0 d
 1 w
 0.200 0.200 0.200 scn
 
 BT
-51.24000000000001 62.53300000000027 Td
+51.24000000000001 55.39300000000027 Td
 /F2.0 10.5 Tf
-<50617468> Tj
+<323030> Tj
 ET
 
 0.000 0.000 0.000 scn
 0.5 w
 0.867 0.867 0.867 SCN
-161.654 85.920 m
-331.776 85.920 l
+99.792 71.640 m
+460.656 71.640 l
 S
 [ ] 0 d
 0.5 w
 0.867 0.867 0.867 SCN
-161.654 48.360 m
-331.776 48.360 l
+99.792 48.360 m
+460.656 48.360 l
 S
 [ ] 0 d
 0.5 w
 0.867 0.867 0.867 SCN
-161.654 86.170 m
-161.654 48.110 l
+99.792 71.890 m
+99.792 48.110 l
 S
 [ ] 0 d
 0.5 w
 0.867 0.867 0.867 SCN
-331.776 86.170 m
-331.776 48.110 l
+460.656 71.890 m
+460.656 48.110 l
 S
 [ ] 0 d
 1 w
 0.200 0.200 0.200 scn
 
 BT
-164.6544 69.67300000000027 Td
-/F2.0 10.5 Tf
-<757365724e616d65> Tj
-ET
-
-
-BT
-164.6544 55.39300000000027 Td
-ET
-
-
-BT
-164.6544 55.39300000000027 Td
-/F3.0 10.5 Tf
-<7265717569726564> Tj
+102.792 55.39300000000027 Td
+/F1.0 10.5 Tf
+<4f4b> Tj
 ET
 
 0.000 0.000 0.000 scn
 0.5 w
 0.867 0.867 0.867 SCN
-331.776 85.920 m
-558.605 85.920 l
+460.656 71.640 m
+563.760 71.640 l
 S
 [ ] 0 d
 0.5 w
 0.867 0.867 0.867 SCN
-331.776 48.360 m
-558.605 48.360 l
+460.656 48.360 m
+563.760 48.360 l
 S
 [ ] 0 d
 0.5 w
 0.867 0.867 0.867 SCN
-331.776 86.170 m
-331.776 48.110 l
+460.656 71.890 m
+460.656 48.110 l
 S
 [ ] 0 d
 0.5 w
 0.867 0.867 0.867 SCN
-558.605 86.170 m
-558.605 48.110 l
+563.760 71.890 m
+563.760 48.110 l
 S
 [ ] 0 d
 1 w
 0.000 0.000 0.000 SCN
 0.200 0.200 0.200 scn
+0.259 0.545 0.792 scn
+0.259 0.545 0.792 SCN
+0.000 0.000 0.000 SCN
+0.200 0.200 0.200 scn
+0.259 0.545 0.792 scn
+0.259 0.545 0.792 SCN
 
 BT
-334.776 62.53300000000027 Td
+463.65600000000006 55.39300000000027 Td
 /F1.0 10.5 Tf
-<737472696e67> Tj
+<436c64734865616c7468436865636b> Tj
 ET
 
+0.000 0.000 0.000 SCN
+0.200 0.200 0.200 scn
 0.000 0.000 0.000 scn
 q
 0.000 0.000 0.000 scn
@@ -18241,10 +18364,10 @@ endobj
 /F4.0 37 0 R
 /F3.0 24 0 R
 >>
-/XObject << /Stamp1 434 0 R
+/XObject << /Stamp1 445 0 R
 >>
 >>
-/Annots [170 0 R 172 0 R]
+/Annots [170 0 R 172 0 R 178 0 R]
 >>
 endobj
 166 0 obj
@@ -18294,69 +18417,66 @@ endobj
 [165 0 R /XYZ 0 141.4800000000003 null]
 endobj
 178 0 obj
-<< /Length 4040
+<< /Border [0 0 0]
+/Dest (_cldshealthcheck)
+/Subtype /Link
+/Rect [463.65600000000006 52.32700000000027 547.9710000000001 66.60700000000027]
+/Type /Annot
+>>
+endobj
+179 0 obj
+<< /Length 8662
 >>
 stream
 q
 /DeviceRGB cs
-0.200 0.200 0.200 scn
-/DeviceRGB CS
-0.200 0.200 0.200 SCN
-
-BT
-48.24 740.816 Td
-/F2.0 13 Tf
-<322e32312e332e20526573706f6e736573> Tj
-ET
-
-0.000 0.000 0.000 SCN
-0.000 0.000 0.000 scn
 1.000 1.000 1.000 scn
-48.240 688.560 51.552 37.560 re
+48.240 718.440 51.552 37.560 re
 f
 0.000 0.000 0.000 scn
 1.000 1.000 1.000 scn
-99.792 688.560 360.864 37.560 re
+99.792 718.440 360.864 37.560 re
 f
 0.000 0.000 0.000 scn
 1.000 1.000 1.000 scn
-460.656 688.560 103.104 37.560 re
+460.656 718.440 103.104 37.560 re
 f
 0.000 0.000 0.000 scn
 1.000 1.000 1.000 scn
-48.240 665.280 51.552 23.280 re
+48.240 695.160 51.552 23.280 re
 f
 0.000 0.000 0.000 scn
 1.000 1.000 1.000 scn
-99.792 665.280 360.864 23.280 re
+99.792 695.160 360.864 23.280 re
 f
 0.000 0.000 0.000 scn
 1.000 1.000 1.000 scn
-460.656 665.280 103.104 23.280 re
+460.656 695.160 103.104 23.280 re
 f
 0.000 0.000 0.000 scn
 0.5 w
+/DeviceRGB CS
 0.867 0.867 0.867 SCN
-48.240 726.120 m
-99.792 726.120 l
+48.240 756.000 m
+99.792 756.000 l
 S
 [ ] 0 d
 1.5 w
 0.867 0.867 0.867 SCN
-48.240 688.560 m
-99.792 688.560 l
+48.240 718.440 m
+99.792 718.440 l
 S
 [ ] 0 d
 0.5 w
 0.867 0.867 0.867 SCN
-48.240 726.370 m
-48.240 687.810 l
+48.240 756.250 m
+48.240 717.690 l
 S
 [ ] 0 d
 0.5 w
 0.867 0.867 0.867 SCN
-99.792 726.370 m
-99.792 687.810 l
+99.792 756.250 m
+99.792 717.690 l
 S
 [ ] 0 d
 1 w
 0.200 0.200 0.200 scn
 
 BT
-51.24 710.373 Td
+51.24 740.2529999999999 Td
 /F2.0 10.5 Tf
 <48545450> Tj
 ET
 
 
 BT
-51.24 696.0930000000001 Td
+51.24 725.973 Td
 /F2.0 10.5 Tf
 <436f6465> Tj
 ET
 0.000 0.000 0.000 scn
 0.5 w
 0.867 0.867 0.867 SCN
-99.792 726.120 m
-460.656 726.120 l
+99.792 756.000 m
+460.656 756.000 l
 S
 [ ] 0 d
 1.5 w
 0.867 0.867 0.867 SCN
-99.792 688.560 m
-460.656 688.560 l
+99.792 718.440 m
+460.656 718.440 l
 S
 [ ] 0 d
 0.5 w
 0.867 0.867 0.867 SCN
-99.792 726.370 m
-99.792 687.810 l
-S
+99.792 756.250 m
+99.792 717.690 l
+S
 [ ] 0 d
 0.5 w
 0.867 0.867 0.867 SCN
-460.656 726.370 m
-460.656 687.810 l
+460.656 756.250 m
+460.656 717.690 l
 S
 [ ] 0 d
 1 w
 0.200 0.200 0.200 scn
 
 BT
-102.792 710.373 Td
+102.792 740.2529999999999 Td
 /F2.0 10.5 Tf
 <4465736372697074696f6e> Tj
 ET
 0.000 0.000 0.000 scn
 0.5 w
 0.867 0.867 0.867 SCN
-460.656 726.120 m
-563.760 726.120 l
+460.656 756.000 m
+563.760 756.000 l
 S
 [ ] 0 d
 1.5 w
 0.867 0.867 0.867 SCN
-460.656 688.560 m
-563.760 688.560 l
+460.656 718.440 m
+563.760 718.440 l
 S
 [ ] 0 d
 0.5 w
 0.867 0.867 0.867 SCN
-460.656 726.370 m
-460.656 687.810 l
+460.656 756.250 m
+460.656 717.690 l
 S
 [ ] 0 d
 0.5 w
 0.867 0.867 0.867 SCN
-563.760 726.370 m
-563.760 687.810 l
+563.760 756.250 m
+563.760 717.690 l
 S
 [ ] 0 d
 1 w
 0.200 0.200 0.200 scn
 
 BT
-463.65600000000006 710.373 Td
+463.65600000000006 740.2529999999999 Td
 /F2.0 10.5 Tf
 <536368656d61> Tj
 ET
 0.000 0.000 0.000 scn
 0.5 w
 0.867 0.867 0.867 SCN
-48.240 688.560 m
-99.792 688.560 l
+48.240 718.440 m
+99.792 718.440 l
 S
 [ ] 0 d
 0.5 w
 0.867 0.867 0.867 SCN
-48.240 665.280 m
-99.792 665.280 l
+48.240 695.160 m
+99.792 695.160 l
 S
 [ ] 0 d
 0.5 w
 0.867 0.867 0.867 SCN
-48.240 688.810 m
-48.240 665.030 l
+48.240 718.690 m
+48.240 694.910 l
 S
 [ ] 0 d
 0.5 w
 0.867 0.867 0.867 SCN
-99.792 688.810 m
-99.792 665.030 l
+99.792 718.690 m
+99.792 694.910 l
 S
 [ ] 0 d
 1 w
 0.200 0.200 0.200 scn
 
 BT
-51.24 672.3130000000001 Td
+51.24 702.1929999999999 Td
 /F2.0 10.5 Tf
-<323030> Tj
+<353030> Tj
 ET
 
 0.000 0.000 0.000 scn
 0.5 w
 0.867 0.867 0.867 SCN
-99.792 688.560 m
-460.656 688.560 l
+99.792 718.440 m
+460.656 718.440 l
 S
 [ ] 0 d
 0.5 w
 0.867 0.867 0.867 SCN
-99.792 665.280 m
-460.656 665.280 l
+99.792 695.160 m
+460.656 695.160 l
 S
 [ ] 0 d
 0.5 w
 0.867 0.867 0.867 SCN
-99.792 688.810 m
-99.792 665.030 l
+99.792 718.690 m
+99.792 694.910 l
 S
 [ ] 0 d
 0.5 w
 0.867 0.867 0.867 SCN
-460.656 688.810 m
-460.656 665.030 l
+460.656 718.690 m
+460.656 694.910 l
 S
 [ ] 0 d
 1 w
 0.200 0.200 0.200 scn
 
 BT
-102.792 672.3130000000001 Td
+102.792 702.1929999999999 Td
 /F1.0 10.5 Tf
-<4f4b> Tj
+<496e7465726e616c20536572766572204572726f72> Tj
 ET
 
 0.000 0.000 0.000 scn
 0.5 w
 0.867 0.867 0.867 SCN
-460.656 688.560 m
-563.760 688.560 l
+460.656 718.440 m
+563.760 718.440 l
 S
 [ ] 0 d
 0.5 w
 0.867 0.867 0.867 SCN
-460.656 665.280 m
-563.760 665.280 l
+460.656 695.160 m
+563.760 695.160 l
 S
 [ ] 0 d
 0.5 w
 0.867 0.867 0.867 SCN
-460.656 688.810 m
-460.656 665.030 l
+460.656 718.690 m
+460.656 694.910 l
 S
 [ ] 0 d
 0.5 w
 0.867 0.867 0.867 SCN
-563.760 688.810 m
-563.760 665.030 l
+563.760 718.690 m
+563.760 694.910 l
 S
 [ ] 0 d
 1 w
 0.000 0.000 0.000 SCN
 0.200 0.200 0.200 scn
+0.259 0.545 0.792 scn
+0.259 0.545 0.792 SCN
+0.000 0.000 0.000 SCN
+0.200 0.200 0.200 scn
+0.259 0.545 0.792 scn
+0.259 0.545 0.792 SCN
 
 BT
-463.65600000000006 672.3130000000001 Td
+463.65600000000006 702.1929999999999 Td
 /F1.0 10.5 Tf
-<737472696e67> Tj
+<436c64734865616c7468436865636b> Tj
 ET
 
+0.000 0.000 0.000 SCN
+0.200 0.200 0.200 scn
 0.000 0.000 0.000 scn
 0.200 0.200 0.200 scn
 0.200 0.200 0.200 SCN
 
 BT
-48.24 635.6960000000003 Td
+48.24 665.576 Td
 /F2.0 13 Tf
-<322e32312e342e2050726f6475636573> Tj
+<322e32312e332e2050726f6475636573> Tj
 ET
 
 0.000 0.000 0.000 SCN
@@ -18569,7 +18697,7 @@ ET
 0.200 0.200 0.200 SCN
 
 BT
-56.88050000000001 609.0360000000003 Td
+56.88050000000001 638.916 Td
 /F1.0 10.5 Tf
 <a5> Tj
 ET
 0.694 0.129 0.275 SCN
 
 BT
-66.24000000000001 611.2200000000004 Td
+66.24000000000001 641.1000000000001 Td
 /F4.0 10.5 Tf
-<746578742f706c61696e> Tj
+<6170706c69636174696f6e2f6a736f6e> Tj
 ET
 
 0.000 0.000 0.000 SCN
 0.000 0.000 0.000 scn
-q
-0.000 0.000 0.000 scn
-0.000 0.000 0.000 SCN
-1 w
-0 J
-0 j
-[ ] 0 d
-/Stamp1 Do
 0.200 0.200 0.200 scn
 0.200 0.200 0.200 SCN
 
 BT
-552.698 14.388 Td
-/F1.0 9 Tf
-<3133> Tj
+48.24000000000001 603.4560000000001 Td
+/F2.0 18 Tf
+<322e32322e20474554202f757365722f67657455736572> Tj
 ET
 
 0.000 0.000 0.000 SCN
 0.000 0.000 0.000 scn
-Q
-Q
-
-endstream
-endobj
-179 0 obj
-<< /Type /Page
-/Parent 3 0 R
-/MediaBox [0 0 612.0 792.0]
-/Contents 178 0 R
-/Resources << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI]
-/Font << /F2.0 22 0 R
-/F1.0 8 0 R
-/F4.0 37 0 R
->>
-/XObject << /Stamp1 434 0 R
->>
->>
->>
-endobj
-180 0 obj
-[179 0 R /XYZ 0 792.0 null]
-endobj
-181 0 obj
-[179 0 R /XYZ 0 653.2800000000002 null]
-endobj
-182 0 obj
-<< /Length 16460
->>
-stream
-q
-/DeviceRGB cs
 0.200 0.200 0.200 scn
-/DeviceRGB CS
 0.200 0.200 0.200 SCN
 
 BT
-48.24 730.304 Td
-/F2.0 22 Tf
-<4368617074657220332e20446566696e6974696f6e73> Tj
+48.24000000000001 569.2160000000002 Td
+/F2.0 13 Tf
+<322e32322e312e204465736372697074696f6e> Tj
 ET
 
 0.000 0.000 0.000 SCN
 0.200 0.200 0.200 SCN
 
 BT
-48.24 688.656 Td
-/F2.0 18 Tf
-<332e312e20436c64734576656e74> Tj
+48.24000000000001 542.5560000000003 Td
+/F1.0 10.5 Tf
+[<524553> 20.01953125 <54207365727669636520746861742072657475726e732074686520757365726e616d652e>] TJ
 ET
 
 0.000 0.000 0.000 SCN
 0.000 0.000 0.000 scn
-1.000 1.000 1.000 scn
-48.240 648.720 216.518 23.280 re
-f
-0.000 0.000 0.000 scn
-1.000 1.000 1.000 scn
-264.758 648.720 293.846 23.280 re
-f
+0.200 0.200 0.200 scn
+0.200 0.200 0.200 SCN
+
+BT
+48.24000000000001 509.1560000000004 Td
+/F2.0 13 Tf
+<322e32322e322e20526573706f6e736573> Tj
+ET
+
+0.000 0.000 0.000 SCN
 0.000 0.000 0.000 scn
 1.000 1.000 1.000 scn
-48.240 611.160 216.518 37.560 re
+48.240 456.900 51.552 37.560 re
 f
 0.000 0.000 0.000 scn
 1.000 1.000 1.000 scn
-264.758 611.160 293.846 37.560 re
-f
-0.000 0.000 0.000 scn
-0.976 0.976 0.976 scn
-48.240 573.600 216.518 37.560 re
-f
-0.000 0.000 0.000 scn
-0.976 0.976 0.976 scn
-264.758 573.600 293.846 37.560 re
+99.792 456.900 360.864 37.560 re
 f
 0.000 0.000 0.000 scn
 1.000 1.000 1.000 scn
-48.240 536.040 216.518 37.560 re
+460.656 456.900 103.104 37.560 re
 f
 0.000 0.000 0.000 scn
 1.000 1.000 1.000 scn
-264.758 536.040 293.846 37.560 re
-f
-0.000 0.000 0.000 scn
-0.976 0.976 0.976 scn
-48.240 498.480 216.518 37.560 re
-f
-0.000 0.000 0.000 scn
-0.976 0.976 0.976 scn
-264.758 498.480 293.846 37.560 re
+48.240 433.620 51.552 23.280 re
 f
 0.000 0.000 0.000 scn
 1.000 1.000 1.000 scn
-48.240 460.920 216.518 37.560 re
+99.792 433.620 360.864 23.280 re
 f
 0.000 0.000 0.000 scn
 1.000 1.000 1.000 scn
-264.758 460.920 293.846 37.560 re
-f
-0.000 0.000 0.000 scn
-0.976 0.976 0.976 scn
-48.240 423.360 216.518 37.560 re
-f
-0.000 0.000 0.000 scn
-0.976 0.976 0.976 scn
-264.758 423.360 293.846 37.560 re
+460.656 433.620 103.104 23.280 re
 f
 0.000 0.000 0.000 scn
 0.5 w
 0.867 0.867 0.867 SCN
-48.240 672.000 m
-264.758 672.000 l
+48.240 494.460 m
+99.792 494.460 l
 S
 [ ] 0 d
 1.5 w
 0.867 0.867 0.867 SCN
-48.240 648.720 m
-264.758 648.720 l
+48.240 456.900 m
+99.792 456.900 l
 S
 [ ] 0 d
 0.5 w
 0.867 0.867 0.867 SCN
-48.240 672.250 m
-48.240 647.970 l
+48.240 494.710 m
+48.240 456.150 l
 S
 [ ] 0 d
 0.5 w
 0.867 0.867 0.867 SCN
-264.758 672.250 m
-264.758 647.970 l
+99.792 494.710 m
+99.792 456.150 l
 S
 [ ] 0 d
 1 w
 0.200 0.200 0.200 scn
 
 BT
-51.24 656.2529999999999 Td
+51.24000000000001 478.71300000000036 Td
 /F2.0 10.5 Tf
-<4e616d65> Tj
+<48545450> Tj
+ET
+
+
+BT
+51.24000000000001 464.43300000000033 Td
+/F2.0 10.5 Tf
+<436f6465> Tj
 ET
 
 0.000 0.000 0.000 scn
 0.5 w
 0.867 0.867 0.867 SCN
-264.758 672.000 m
-558.605 672.000 l
+99.792 494.460 m
+460.656 494.460 l
 S
 [ ] 0 d
 1.5 w
 0.867 0.867 0.867 SCN
-264.758 648.720 m
-558.605 648.720 l
+99.792 456.900 m
+460.656 456.900 l
 S
 [ ] 0 d
 0.5 w
 0.867 0.867 0.867 SCN
-264.758 672.250 m
-264.758 647.970 l
+99.792 494.710 m
+99.792 456.150 l
 S
 [ ] 0 d
 0.5 w
 0.867 0.867 0.867 SCN
-558.605 672.250 m
-558.605 647.970 l
+460.656 494.710 m
+460.656 456.150 l
 S
 [ ] 0 d
 1 w
 0.200 0.200 0.200 scn
 
 BT
-267.7584 656.2529999999999 Td
+102.792 478.71300000000036 Td
 /F2.0 10.5 Tf
-<536368656d61> Tj
+<4465736372697074696f6e> Tj
 ET
 
 0.000 0.000 0.000 scn
 0.5 w
 0.867 0.867 0.867 SCN
-48.240 648.720 m
-264.758 648.720 l
+460.656 494.460 m
+563.760 494.460 l
 S
 [ ] 0 d
-0.5 w
+1.5 w
 0.867 0.867 0.867 SCN
-48.240 611.160 m
-264.758 611.160 l
+460.656 456.900 m
+563.760 456.900 l
 S
 [ ] 0 d
 0.5 w
 0.867 0.867 0.867 SCN
-48.240 648.970 m
-48.240 610.910 l
+460.656 494.710 m
+460.656 456.150 l
 S
 [ ] 0 d
 0.5 w
 0.867 0.867 0.867 SCN
-264.758 648.970 m
-264.758 610.910 l
+563.760 494.710 m
+563.760 456.150 l
 S
 [ ] 0 d
 1 w
 0.200 0.200 0.200 scn
 
 BT
-51.24 632.473 Td
+463.65600000000006 478.71300000000036 Td
 /F2.0 10.5 Tf
-<616374696f6e416e6453746174654364> Tj
-ET
-
-
-BT
-51.24 618.193 Td
-ET
-
-
-BT
-51.24 618.193 Td
-/F3.0 10.5 Tf
-<6f7074696f6e616c> Tj
+<536368656d61> Tj
 ET
 
 0.000 0.000 0.000 scn
 0.5 w
 0.867 0.867 0.867 SCN
-264.758 648.720 m
-558.605 648.720 l
+48.240 456.900 m
+99.792 456.900 l
 S
 [ ] 0 d
 0.5 w
 0.867 0.867 0.867 SCN
-264.758 611.160 m
-558.605 611.160 l
+48.240 433.620 m
+99.792 433.620 l
 S
 [ ] 0 d
 0.5 w
 0.867 0.867 0.867 SCN
-264.758 648.970 m
-264.758 610.910 l
+48.240 457.150 m
+48.240 433.370 l
 S
 [ ] 0 d
 0.5 w
 0.867 0.867 0.867 SCN
-558.605 648.970 m
-558.605 610.910 l
+99.792 457.150 m
+99.792 433.370 l
 S
 [ ] 0 d
 1 w
 0.200 0.200 0.200 scn
 
 BT
-267.7584 625.333 Td
-/F1.0 10.5 Tf
-<626f6f6c65616e> Tj
+51.24000000000001 440.65300000000036 Td
+/F2.0 10.5 Tf
+<323030> Tj
 ET
 
 0.000 0.000 0.000 scn
 0.5 w
 0.867 0.867 0.867 SCN
-48.240 611.160 m
-264.758 611.160 l
+99.792 456.900 m
+460.656 456.900 l
 S
 [ ] 0 d
 0.5 w
 0.867 0.867 0.867 SCN
-48.240 573.600 m
-264.758 573.600 l
+99.792 433.620 m
+460.656 433.620 l
 S
 [ ] 0 d
 0.5 w
 0.867 0.867 0.867 SCN
-48.240 611.410 m
-48.240 573.350 l
+99.792 457.150 m
+99.792 433.370 l
 S
 [ ] 0 d
 0.5 w
 0.867 0.867 0.867 SCN
-264.758 611.410 m
-264.758 573.350 l
+460.656 457.150 m
+460.656 433.370 l
 S
 [ ] 0 d
 1 w
 0.200 0.200 0.200 scn
 
 BT
-51.24 594.913 Td
-/F2.0 10.5 Tf
-<616374696f6e4364> Tj
-ET
-
-
-BT
-51.24 580.6329999999999 Td
-ET
-
-
-BT
-51.24 580.6329999999999 Td
-/F3.0 10.5 Tf
-<6f7074696f6e616c> Tj
+102.792 440.65300000000036 Td
+/F1.0 10.5 Tf
+<4f4b> Tj
 ET
 
 0.000 0.000 0.000 scn
 0.5 w
 0.867 0.867 0.867 SCN
-264.758 611.160 m
-558.605 611.160 l
+460.656 456.900 m
+563.760 456.900 l
 S
 [ ] 0 d
 0.5 w
 0.867 0.867 0.867 SCN
-264.758 573.600 m
-558.605 573.600 l
+460.656 433.620 m
+563.760 433.620 l
 S
 [ ] 0 d
 0.5 w
 0.867 0.867 0.867 SCN
-264.758 611.410 m
-264.758 573.350 l
+460.656 457.150 m
+460.656 433.370 l
 S
 [ ] 0 d
 0.5 w
 0.867 0.867 0.867 SCN
-558.605 611.410 m
-558.605 573.350 l
+563.760 457.150 m
+563.760 433.370 l
 S
 [ ] 0 d
 1 w
 0.200 0.200 0.200 scn
 
 BT
-267.7584 587.7729999999999 Td
+463.65600000000006 440.65300000000036 Td
+/F1.0 10.5 Tf
+<737472696e67> Tj
+ET
+
+0.000 0.000 0.000 scn
+0.200 0.200 0.200 scn
+0.200 0.200 0.200 SCN
+
+BT
+48.24000000000001 404.03600000000034 Td
+/F2.0 13 Tf
+<322e32322e332e2050726f6475636573> Tj
+ET
+
+0.000 0.000 0.000 SCN
+0.000 0.000 0.000 scn
+
+-0.500 Tc
+0.200 0.200 0.200 scn
+0.200 0.200 0.200 SCN
+
+BT
+56.88050000000001 377.3760000000003 Td
+/F1.0 10.5 Tf
+<a5> Tj
+ET
+
+0.000 0.000 0.000 SCN
+0.000 0.000 0.000 scn
+
+0.000 Tc
+0.694 0.129 0.275 scn
+0.694 0.129 0.275 SCN
+
+BT
+66.24000000000001 379.56000000000034 Td
+/F4.0 10.5 Tf
+<746578742f706c61696e> Tj
+ET
+
+0.000 0.000 0.000 SCN
+0.000 0.000 0.000 scn
+q
+0.000 0.000 0.000 scn
+0.000 0.000 0.000 SCN
+1 w
+0 J
+0 j
+[ ] 0 d
+/Stamp1 Do
+0.200 0.200 0.200 scn
+0.200 0.200 0.200 SCN
+
+BT
+552.698 14.388 Td
+/F1.0 9 Tf
+<3133> Tj
+ET
+
+0.000 0.000 0.000 SCN
+0.000 0.000 0.000 scn
+Q
+Q
+
+endstream
+endobj
+180 0 obj
+<< /Type /Page
+/Parent 3 0 R
+/MediaBox [0 0 612.0 792.0]
+/Contents 179 0 R
+/Resources << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI]
+/Font << /F2.0 22 0 R
+/F1.0 8 0 R
+/F4.0 37 0 R
+>>
+/XObject << /Stamp1 445 0 R
+>>
+>>
+/Annots [181 0 R]
+>>
+endobj
+181 0 obj
+<< /Border [0 0 0]
+/Dest (_cldshealthcheck)
+/Subtype /Link
+/Rect [463.65600000000006 699.127 547.9710000000001 713.4069999999999]
+/Type /Annot
+>>
+endobj
+182 0 obj
+[180 0 R /XYZ 0 683.16 null]
+endobj
+183 0 obj
+[180 0 R /XYZ 0 626.8800000000001 null]
+endobj
+184 0 obj
+[180 0 R /XYZ 0 586.8000000000002 null]
+endobj
+185 0 obj
+[180 0 R /XYZ 0 526.7400000000004 null]
+endobj
+186 0 obj
+[180 0 R /XYZ 0 421.62000000000035 null]
+endobj
+187 0 obj
+<< /Length 16460
+>>
+stream
+q
+/DeviceRGB cs
+0.200 0.200 0.200 scn
+/DeviceRGB CS
+0.200 0.200 0.200 SCN
+
+BT
+48.24 730.304 Td
+/F2.0 22 Tf
+<4368617074657220332e20446566696e6974696f6e73> Tj
+ET
+
+0.000 0.000 0.000 SCN
+0.000 0.000 0.000 scn
+0.200 0.200 0.200 scn
+0.200 0.200 0.200 SCN
+
+BT
+48.24 688.656 Td
+/F2.0 18 Tf
+<332e312e20436c64734576656e74> Tj
+ET
+
+0.000 0.000 0.000 SCN
+0.000 0.000 0.000 scn
+1.000 1.000 1.000 scn
+48.240 648.720 216.518 23.280 re
+f
+0.000 0.000 0.000 scn
+1.000 1.000 1.000 scn
+264.758 648.720 293.846 23.280 re
+f
+0.000 0.000 0.000 scn
+1.000 1.000 1.000 scn
+48.240 611.160 216.518 37.560 re
+f
+0.000 0.000 0.000 scn
+1.000 1.000 1.000 scn
+264.758 611.160 293.846 37.560 re
+f
+0.000 0.000 0.000 scn
+0.976 0.976 0.976 scn
+48.240 573.600 216.518 37.560 re
+f
+0.000 0.000 0.000 scn
+0.976 0.976 0.976 scn
+264.758 573.600 293.846 37.560 re
+f
+0.000 0.000 0.000 scn
+1.000 1.000 1.000 scn
+48.240 536.040 216.518 37.560 re
+f
+0.000 0.000 0.000 scn
+1.000 1.000 1.000 scn
+264.758 536.040 293.846 37.560 re
+f
+0.000 0.000 0.000 scn
+0.976 0.976 0.976 scn
+48.240 498.480 216.518 37.560 re
+f
+0.000 0.000 0.000 scn
+0.976 0.976 0.976 scn
+264.758 498.480 293.846 37.560 re
+f
+0.000 0.000 0.000 scn
+1.000 1.000 1.000 scn
+48.240 460.920 216.518 37.560 re
+f
+0.000 0.000 0.000 scn
+1.000 1.000 1.000 scn
+264.758 460.920 293.846 37.560 re
+f
+0.000 0.000 0.000 scn
+0.976 0.976 0.976 scn
+48.240 423.360 216.518 37.560 re
+f
+0.000 0.000 0.000 scn
+0.976 0.976 0.976 scn
+264.758 423.360 293.846 37.560 re
+f
+0.000 0.000 0.000 scn
+0.5 w
+0.867 0.867 0.867 SCN
+48.240 672.000 m
+264.758 672.000 l
+S
+[ ] 0 d
+1.5 w
+0.867 0.867 0.867 SCN
+48.240 648.720 m
+264.758 648.720 l
+S
+[ ] 0 d
+0.5 w
+0.867 0.867 0.867 SCN
+48.240 672.250 m
+48.240 647.970 l
+S
+[ ] 0 d
+0.5 w
+0.867 0.867 0.867 SCN
+264.758 672.250 m
+264.758 647.970 l
+S
+[ ] 0 d
+1 w
+0.000 0.000 0.000 SCN
+0.200 0.200 0.200 scn
+
+BT
+51.24 656.2529999999999 Td
+/F2.0 10.5 Tf
+<4e616d65> Tj
+ET
+
+0.000 0.000 0.000 scn
+0.5 w
+0.867 0.867 0.867 SCN
+264.758 672.000 m
+558.605 672.000 l
+S
+[ ] 0 d
+1.5 w
+0.867 0.867 0.867 SCN
+264.758 648.720 m
+558.605 648.720 l
+S
+[ ] 0 d
+0.5 w
+0.867 0.867 0.867 SCN
+264.758 672.250 m
+264.758 647.970 l
+S
+[ ] 0 d
+0.5 w
+0.867 0.867 0.867 SCN
+558.605 672.250 m
+558.605 647.970 l
+S
+[ ] 0 d
+1 w
+0.000 0.000 0.000 SCN
+0.200 0.200 0.200 scn
+
+BT
+267.7584 656.2529999999999 Td
+/F2.0 10.5 Tf
+<536368656d61> Tj
+ET
+
+0.000 0.000 0.000 scn
+0.5 w
+0.867 0.867 0.867 SCN
+48.240 648.720 m
+264.758 648.720 l
+S
+[ ] 0 d
+0.5 w
+0.867 0.867 0.867 SCN
+48.240 611.160 m
+264.758 611.160 l
+S
+[ ] 0 d
+0.5 w
+0.867 0.867 0.867 SCN
+48.240 648.970 m
+48.240 610.910 l
+S
+[ ] 0 d
+0.5 w
+0.867 0.867 0.867 SCN
+264.758 648.970 m
+264.758 610.910 l
+S
+[ ] 0 d
+1 w
+0.000 0.000 0.000 SCN
+0.200 0.200 0.200 scn
+
+BT
+51.24 632.473 Td
+/F2.0 10.5 Tf
+<616374696f6e416e6453746174654364> Tj
+ET
+
+
+BT
+51.24 618.193 Td
+ET
+
+
+BT
+51.24 618.193 Td
+/F3.0 10.5 Tf
+<6f7074696f6e616c> Tj
+ET
+
+0.000 0.000 0.000 scn
+0.5 w
+0.867 0.867 0.867 SCN
+264.758 648.720 m
+558.605 648.720 l
+S
+[ ] 0 d
+0.5 w
+0.867 0.867 0.867 SCN
+264.758 611.160 m
+558.605 611.160 l
+S
+[ ] 0 d
+0.5 w
+0.867 0.867 0.867 SCN
+264.758 648.970 m
+264.758 610.910 l
+S
+[ ] 0 d
+0.5 w
+0.867 0.867 0.867 SCN
+558.605 648.970 m
+558.605 610.910 l
+S
+[ ] 0 d
+1 w
+0.000 0.000 0.000 SCN
+0.200 0.200 0.200 scn
+
+BT
+267.7584 625.333 Td
+/F1.0 10.5 Tf
+<626f6f6c65616e> Tj
+ET
+
+0.000 0.000 0.000 scn
+0.5 w
+0.867 0.867 0.867 SCN
+48.240 611.160 m
+264.758 611.160 l
+S
+[ ] 0 d
+0.5 w
+0.867 0.867 0.867 SCN
+48.240 573.600 m
+264.758 573.600 l
+S
+[ ] 0 d
+0.5 w
+0.867 0.867 0.867 SCN
+48.240 611.410 m
+48.240 573.350 l
+S
+[ ] 0 d
+0.5 w
+0.867 0.867 0.867 SCN
+264.758 611.410 m
+264.758 573.350 l
+S
+[ ] 0 d
+1 w
+0.000 0.000 0.000 SCN
+0.200 0.200 0.200 scn
+
+BT
+51.24 594.913 Td
+/F2.0 10.5 Tf
+<616374696f6e4364> Tj
+ET
+
+
+BT
+51.24 580.6329999999999 Td
+ET
+
+
+BT
+51.24 580.6329999999999 Td
+/F3.0 10.5 Tf
+<6f7074696f6e616c> Tj
+ET
+
+0.000 0.000 0.000 scn
+0.5 w
+0.867 0.867 0.867 SCN
+264.758 611.160 m
+558.605 611.160 l
+S
+[ ] 0 d
+0.5 w
+0.867 0.867 0.867 SCN
+264.758 573.600 m
+558.605 573.600 l
+S
+[ ] 0 d
+0.5 w
+0.867 0.867 0.867 SCN
+264.758 611.410 m
+264.758 573.350 l
+S
+[ ] 0 d
+0.5 w
+0.867 0.867 0.867 SCN
+558.605 611.410 m
+558.605 573.350 l
+S
+[ ] 0 d
+1 w
+0.000 0.000 0.000 SCN
+0.200 0.200 0.200 scn
+
+BT
+267.7584 587.7729999999999 Td
 /F1.0 10.5 Tf
 <626f6f6c65616e> Tj
 ET
 
 endstream
 endobj
-183 0 obj
+188 0 obj
 << /Type /Page
 /Parent 3 0 R
 /MediaBox [0 0 612.0 792.0]
-/Contents 182 0 R
+/Contents 187 0 R
 /Resources << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI]
 /Font << /F2.0 22 0 R
 /F3.0 24 0 R
 /F1.0 8 0 R
 >>
-/XObject << /Stamp1 434 0 R
+/XObject << /Stamp1 445 0 R
 >>
 >>
 >>
 endobj
-184 0 obj
-[183 0 R /XYZ 0 792.0 null]
+189 0 obj
+[188 0 R /XYZ 0 792.0 null]
 endobj
-185 0 obj
-[183 0 R /XYZ 0 712.0799999999999 null]
+190 0 obj
+[188 0 R /XYZ 0 712.0799999999999 null]
 endobj
-186 0 obj
-[183 0 R /XYZ 0 411.35999999999996 null]
+191 0 obj
+[188 0 R /XYZ 0 411.35999999999996 null]
 endobj
-187 0 obj
+192 0 obj
 << /Limits [(_cldstempate_template_templatename_get) (_description_10)]
-/Names [(_cldstempate_template_templatename_get) 159 0 R (_cldstempate_template_templatename_put) 167 0 R (_cldstemplate) 200 0 R (_consumes) 36 0 R (_consumes_2) 57 0 R (_consumes_3) 67 0 R (_consumes_4) 110 0 R (_consumes_5) 136 0 R (_consumes_6) 173 0 R (_dcaeevent) 203 0 R (_definitions) 184 0 R (_description) 30 0 R (_description_10) 119 0 R]
+/Names [(_cldstempate_template_templatename_get) 159 0 R (_cldstempate_template_templatename_put) 167 0 R (_cldstemplate) 205 0 R (_consumes) 36 0 R (_consumes_2) 57 0 R (_consumes_3) 67 0 R (_consumes_4) 110 0 R (_consumes_5) 136 0 R (_consumes_6) 173 0 R (_dcaeevent) 208 0 R (_definitions) 189 0 R (_description) 30 0 R (_description_10) 119 0 R]
 >>
 endobj
-188 0 obj
-[183 0 R /XYZ 0 223.31999999999988 null]
+193 0 obj
+[188 0 R /XYZ 0 223.31999999999988 null]
 endobj
-189 0 obj
+194 0 obj
 << /Length 21238
 >>
 stream
 
 endstream
 endobj
-190 0 obj
+195 0 obj
 << /Type /Page
 /Parent 3 0 R
 /MediaBox [0 0 612.0 792.0]
-/Contents 189 0 R
+/Contents 194 0 R
 /Resources << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI]
 /Font << /F2.0 22 0 R
 /F3.0 24 0 R
 /F1.0 8 0 R
 >>
-/XObject << /Stamp1 434 0 R
+/XObject << /Stamp1 445 0 R
 >>
 >>
-/Annots [192 0 R 193 0 R]
+/Annots [197 0 R 198 0 R]
 >>
 endobj
-191 0 obj
-[190 0 R /XYZ 0 570.48 null]
+196 0 obj
+[195 0 R /XYZ 0 570.48 null]
 endobj
-192 0 obj
+197 0 obj
 << /Border [0 0 0]
 /Dest (_cldsmodelinstance)
 /Subtype /Link
@@ -21660,7 +22128,7 @@ endobj
 /Type /Annot
 >>
 endobj
-193 0 obj
+198 0 obj
 << /Border [0 0 0]
 /Dest (_cldsevent)
 /Subtype /Link
@@ -21668,7 +22136,7 @@ endobj
 /Type /Annot
 >>
 endobj
-194 0 obj
+199 0 obj
 << /Length 19537
 >>
 stream
 
 endstream
 endobj
-195 0 obj
+200 0 obj
 << /Type /Page
 /Parent 3 0 R
 /MediaBox [0 0 612.0 792.0]
-/Contents 194 0 R
+/Contents 199 0 R
 /Resources << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI]
 /Font << /F2.0 22 0 R
 /F3.0 24 0 R
 /F1.0 8 0 R
 >>
-/XObject << /Stamp1 434 0 R
+/XObject << /Stamp1 445 0 R
 >>
 >>
 >>
 endobj
-196 0 obj
-[195 0 R /XYZ 0 457.8000000000001 null]
+201 0 obj
+[200 0 R /XYZ 0 457.8000000000001 null]
 endobj
-197 0 obj
-[195 0 R /XYZ 0 269.76000000000005 null]
+202 0 obj
+[200 0 R /XYZ 0 269.76000000000005 null]
 endobj
-198 0 obj
+203 0 obj
 << /Length 20533
 >>
 stream
 
 endstream
 endobj
-199 0 obj
+204 0 obj
 << /Type /Page
 /Parent 3 0 R
 /MediaBox [0 0 612.0 792.0]
-/Contents 198 0 R
+/Contents 203 0 R
 /Resources << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI]
 /Font << /F2.0 22 0 R
 /F3.0 24 0 R
 /F1.0 8 0 R
 >>
-/XObject << /Stamp1 434 0 R
+/XObject << /Stamp1 445 0 R
 >>
 >>
 >>
 endobj
-200 0 obj
-[199 0 R /XYZ 0 570.48 null]
+205 0 obj
+[204 0 R /XYZ 0 570.48 null]
 endobj
-201 0 obj
+206 0 obj
 << /Length 15309
 >>
 stream
 
 endstream
 endobj
-202 0 obj
+207 0 obj
 << /Type /Page
 /Parent 3 0 R
 /MediaBox [0 0 612.0 792.0]
-/Contents 201 0 R
+/Contents 206 0 R
 /Resources << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI]
 /Font << /F2.0 22 0 R
 /F3.0 24 0 R
 /F1.0 8 0 R
 >>
-/XObject << /Stamp1 434 0 R
+/XObject << /Stamp1 445 0 R
 >>
 >>
-/Annots [204 0 R]
+/Annots [209 0 R]
 >>
 endobj
-203 0 obj
-[202 0 R /XYZ 0 645.5999999999999 null]
+208 0 obj
+[207 0 R /XYZ 0 645.5999999999999 null]
 endobj
-204 0 obj
+209 0 obj
 << /Border [0 0 0]
 /Dest (_cldsmodelinstance)
 /Subtype /Link
@@ -26128,10 +26596,10 @@ endobj
 /Type /Annot
 >>
 endobj
-205 0 obj
-[202 0 R /XYZ 0 307.32 null]
+210 0 obj
+[207 0 R /XYZ 0 307.32 null]
 endobj
-206 0 obj
+211 0 obj
 << /Border [0 0 0]
 /Dest (_overview)
 /Subtype /Link
@@ -26139,7 +26607,7 @@ endobj
 /Type /Annot
 >>
 endobj
-207 0 obj
+212 0 obj
 << /Border [0 0 0]
 /Dest (_overview)
 /Subtype /Link
@@ -26147,7 +26615,7 @@ endobj
 /Type /Annot
 >>
 endobj
-208 0 obj
+213 0 obj
 << /Border [0 0 0]
 /Dest (_version_information)
 /Subtype /Link
@@ -26155,7 +26623,7 @@ endobj
 /Type /Annot
 >>
 endobj
-209 0 obj
+214 0 obj
 << /Border [0 0 0]
 /Dest (_version_information)
 /Subtype /Link
@@ -26163,7 +26631,7 @@ endobj
 /Type /Annot
 >>
 endobj
-210 0 obj
+215 0 obj
 << /Border [0 0 0]
 /Dest (_uri_scheme)
 /Subtype /Link
@@ -26171,7 +26639,7 @@ endobj
 /Type /Annot
 >>
 endobj
-211 0 obj
+216 0 obj
 << /Border [0 0 0]
 /Dest (_uri_scheme)
 /Subtype /Link
@@ -26179,7 +26647,7 @@ endobj
 /Type /Annot
 >>
 endobj
-212 0 obj
+217 0 obj
 << /Border [0 0 0]
 /Dest (_paths)
 /Subtype /Link
@@ -26187,7 +26655,7 @@ endobj
 /Type /Annot
 >>
 endobj
-213 0 obj
+218 0 obj
 << /Border [0 0 0]
 /Dest (_paths)
 /Subtype /Link
@@ -26195,7 +26663,7 @@ endobj
 /Type /Annot
 >>
 endobj
-214 0 obj
+219 0 obj
 << /Border [0 0 0]
 /Dest (_clds_action_action_modelname_put)
 /Subtype /Link
@@ -26203,7 +26671,7 @@ endobj
 /Type /Annot
 >>
 endobj
-215 0 obj
+220 0 obj
 << /Border [0 0 0]
 /Dest (_clds_action_action_modelname_put)
 /Subtype /Link
@@ -26211,7 +26679,7 @@ endobj
 /Type /Annot
 >>
 endobj
-216 0 obj
+221 0 obj
 << /Border [0 0 0]
 /Dest (_description)
 /Subtype /Link
@@ -26219,7 +26687,7 @@ endobj
 /Type /Annot
 >>
 endobj
-217 0 obj
+222 0 obj
 << /Border [0 0 0]
 /Dest (_description)
 /Subtype /Link
@@ -26227,7 +26695,7 @@ endobj
 /Type /Annot
 >>
 endobj
-218 0 obj
+223 0 obj
 << /Border [0 0 0]
 /Dest (_parameters)
 /Subtype /Link
@@ -26235,7 +26703,7 @@ endobj
 /Type /Annot
 >>
 endobj
-219 0 obj
+224 0 obj
 << /Border [0 0 0]
 /Dest (_parameters)
 /Subtype /Link
@@ -26243,7 +26711,7 @@ endobj
 /Type /Annot
 >>
 endobj
-220 0 obj
+225 0 obj
 << /Border [0 0 0]
 /Dest (_responses)
 /Subtype /Link
@@ -26251,7 +26719,7 @@ endobj
 /Type /Annot
 >>
 endobj
-221 0 obj
+226 0 obj
 << /Border [0 0 0]
 /Dest (_responses)
 /Subtype /Link
@@ -26259,7 +26727,7 @@ endobj
 /Type /Annot
 >>
 endobj
-222 0 obj
+227 0 obj
 << /Border [0 0 0]
 /Dest (_consumes)
 /Subtype /Link
@@ -26267,7 +26735,7 @@ endobj
 /Type /Annot
 >>
 endobj
-223 0 obj
+228 0 obj
 << /Border [0 0 0]
 /Dest (_consumes)
 /Subtype /Link
@@ -26275,7 +26743,7 @@ endobj
 /Type /Annot
 >>
 endobj
-224 0 obj
+229 0 obj
 << /Border [0 0 0]
 /Dest (_produces)
 /Subtype /Link
@@ -26283,7 +26751,7 @@ endobj
 /Type /Annot
 >>
 endobj
-225 0 obj
+230 0 obj
 << /Border [0 0 0]
 /Dest (_produces)
 /Subtype /Link
@@ -26291,7 +26759,7 @@ endobj
 /Type /Annot
 >>
 endobj
-226 0 obj
+231 0 obj
 << /Border [0 0 0]
 /Dest (_clds_cldsdetails_get)
 /Subtype /Link
@@ -26299,7 +26767,7 @@ endobj
 /Type /Annot
 >>
 endobj
-227 0 obj
+232 0 obj
 << /Border [0 0 0]
 /Dest (_clds_cldsdetails_get)
 /Subtype /Link
@@ -26307,7 +26775,7 @@ endobj
 /Type /Annot
 >>
 endobj
-228 0 obj
+233 0 obj
 << /Border [0 0 0]
 /Dest (_responses_2)
 /Subtype /Link
@@ -26315,7 +26783,7 @@ endobj
 /Type /Annot
 >>
 endobj
-229 0 obj
+234 0 obj
 << /Border [0 0 0]
 /Dest (_responses_2)
 /Subtype /Link
@@ -26323,7 +26791,7 @@ endobj
 /Type /Annot
 >>
 endobj
-230 0 obj
+235 0 obj
 << /Border [0 0 0]
 /Dest (_produces_2)
 /Subtype /Link
@@ -26331,7 +26799,7 @@ endobj
 /Type /Annot
 >>
 endobj
-231 0 obj
+236 0 obj
 << /Border [0 0 0]
 /Dest (_produces_2)
 /Subtype /Link
@@ -26339,7 +26807,7 @@ endobj
 /Type /Annot
 >>
 endobj
-232 0 obj
+237 0 obj
 << /Border [0 0 0]
 /Dest (_clds_cldsinfo_get)
 /Subtype /Link
@@ -26347,7 +26815,7 @@ endobj
 /Type /Annot
 >>
 endobj
-233 0 obj
+238 0 obj
 << /Border [0 0 0]
 /Dest (_clds_cldsinfo_get)
 /Subtype /Link
@@ -26355,7 +26823,7 @@ endobj
 /Type /Annot
 >>
 endobj
-234 0 obj
+239 0 obj
 << /Border [0 0 0]
 /Dest (_responses_3)
 /Subtype /Link
@@ -26363,7 +26831,7 @@ endobj
 /Type /Annot
 >>
 endobj
-235 0 obj
+240 0 obj
 << /Border [0 0 0]
 /Dest (_responses_3)
 /Subtype /Link
@@ -26371,7 +26839,7 @@ endobj
 /Type /Annot
 >>
 endobj
-236 0 obj
+241 0 obj
 << /Border [0 0 0]
 /Dest (_produces_3)
 /Subtype /Link
@@ -26379,7 +26847,7 @@ endobj
 /Type /Annot
 >>
 endobj
-237 0 obj
+242 0 obj
 << /Border [0 0 0]
 /Dest (_produces_3)
 /Subtype /Link
@@ -26387,7 +26855,7 @@ endobj
 /Type /Annot
 >>
 endobj
-238 0 obj
+243 0 obj
 << /Border [0 0 0]
 /Dest (_clds_dcae_event_post)
 /Subtype /Link
@@ -26395,7 +26863,7 @@ endobj
 /Type /Annot
 >>
 endobj
-239 0 obj
+244 0 obj
 << /Border [0 0 0]
 /Dest (_clds_dcae_event_post)
 /Subtype /Link
@@ -26403,7 +26871,7 @@ endobj
 /Type /Annot
 >>
 endobj
-240 0 obj
+245 0 obj
 << /Border [0 0 0]
 /Dest (_description_2)
 /Subtype /Link
@@ -26411,7 +26879,7 @@ endobj
 /Type /Annot
 >>
 endobj
-241 0 obj
+246 0 obj
 << /Border [0 0 0]
 /Dest (_description_2)
 /Subtype /Link
@@ -26419,7 +26887,7 @@ endobj
 /Type /Annot
 >>
 endobj
-242 0 obj
+247 0 obj
 << /Border [0 0 0]
 /Dest (_parameters_2)
 /Subtype /Link
@@ -26427,7 +26895,7 @@ endobj
 /Type /Annot
 >>
 endobj
-243 0 obj
+248 0 obj
 << /Border [0 0 0]
 /Dest (_parameters_2)
 /Subtype /Link
@@ -26435,7 +26903,7 @@ endobj
 /Type /Annot
 >>
 endobj
-244 0 obj
+249 0 obj
 << /Border [0 0 0]
 /Dest (_responses_4)
 /Subtype /Link
@@ -26443,7 +26911,7 @@ endobj
 /Type /Annot
 >>
 endobj
-245 0 obj
+250 0 obj
 << /Border [0 0 0]
 /Dest (_responses_4)
 /Subtype /Link
@@ -26451,7 +26919,7 @@ endobj
 /Type /Annot
 >>
 endobj
-246 0 obj
+251 0 obj
 << /Border [0 0 0]
 /Dest (_consumes_2)
 /Subtype /Link
@@ -26459,7 +26927,7 @@ endobj
 /Type /Annot
 >>
 endobj
-247 0 obj
+252 0 obj
 << /Border [0 0 0]
 /Dest (_consumes_2)
 /Subtype /Link
@@ -26467,7 +26935,7 @@ endobj
 /Type /Annot
 >>
 endobj
-248 0 obj
+253 0 obj
 << /Border [0 0 0]
 /Dest (_produces_4)
 /Subtype /Link
@@ -26475,7 +26943,7 @@ endobj
 /Type /Annot
 >>
 endobj
-249 0 obj
+254 0 obj
 << /Border [0 0 0]
 /Dest (_produces_4)
 /Subtype /Link
@@ -26483,7 +26951,7 @@ endobj
 /Type /Annot
 >>
 endobj
-250 0 obj
+255 0 obj
 << /Border [0 0 0]
 /Dest (_clds_deploy_modelname_put)
 /Subtype /Link
@@ -26491,7 +26959,7 @@ endobj
 /Type /Annot
 >>
 endobj
-251 0 obj
+256 0 obj
 << /Border [0 0 0]
 /Dest (_clds_deploy_modelname_put)
 /Subtype /Link
@@ -26499,7 +26967,7 @@ endobj
 /Type /Annot
 >>
 endobj
-252 0 obj
+257 0 obj
 << /Border [0 0 0]
 /Dest (_parameters_3)
 /Subtype /Link
@@ -26507,7 +26975,7 @@ endobj
 /Type /Annot
 >>
 endobj
-253 0 obj
+258 0 obj
 << /Border [0 0 0]
 /Dest (_parameters_3)
 /Subtype /Link
@@ -26515,7 +26983,7 @@ endobj
 /Type /Annot
 >>
 endobj
-254 0 obj
+259 0 obj
 << /Border [0 0 0]
 /Dest (_responses_5)
 /Subtype /Link
@@ -26523,7 +26991,7 @@ endobj
 /Type /Annot
 >>
 endobj
-255 0 obj
+260 0 obj
 << /Border [0 0 0]
 /Dest (_responses_5)
 /Subtype /Link
@@ -26531,7 +26999,7 @@ endobj
 /Type /Annot
 >>
 endobj
-256 0 obj
+261 0 obj
 << /Border [0 0 0]
 /Dest (_consumes_3)
 /Subtype /Link
@@ -26539,7 +27007,7 @@ endobj
 /Type /Annot
 >>
 endobj
-257 0 obj
+262 0 obj
 << /Border [0 0 0]
 /Dest (_consumes_3)
 /Subtype /Link
@@ -26547,7 +27015,7 @@ endobj
 /Type /Annot
 >>
 endobj
-258 0 obj
+263 0 obj
 << /Border [0 0 0]
 /Dest (_produces_5)
 /Subtype /Link
@@ -26555,7 +27023,7 @@ endobj
 /Type /Annot
 >>
 endobj
-259 0 obj
+264 0 obj
 << /Border [0 0 0]
 /Dest (_produces_5)
 /Subtype /Link
@@ -26563,7 +27031,7 @@ endobj
 /Type /Annot
 >>
 endobj
-260 0 obj
+265 0 obj
 << /Border [0 0 0]
 /Dest (_clds_healthcheck_get)
 /Subtype /Link
@@ -26571,7 +27039,7 @@ endobj
 /Type /Annot
 >>
 endobj
-261 0 obj
+266 0 obj
 << /Border [0 0 0]
 /Dest (_clds_healthcheck_get)
 /Subtype /Link
@@ -26579,7 +27047,7 @@ endobj
 /Type /Annot
 >>
 endobj
-262 0 obj
+267 0 obj
 << /Border [0 0 0]
 /Dest (_description_3)
 /Subtype /Link
@@ -26587,7 +27055,7 @@ endobj
 /Type /Annot
 >>
 endobj
-263 0 obj
+268 0 obj
 << /Border [0 0 0]
 /Dest (_description_3)
 /Subtype /Link
@@ -26595,7 +27063,7 @@ endobj
 /Type /Annot
 >>
 endobj
-264 0 obj
+269 0 obj
 << /Border [0 0 0]
 /Dest (_responses_6)
 /Subtype /Link
@@ -26603,7 +27071,7 @@ endobj
 /Type /Annot
 >>
 endobj
-265 0 obj
+270 0 obj
 << /Border [0 0 0]
 /Dest (_responses_6)
 /Subtype /Link
@@ -26611,7 +27079,7 @@ endobj
 /Type /Annot
 >>
 endobj
-266 0 obj
+271 0 obj
 << /Border [0 0 0]
 /Dest (_produces_6)
 /Subtype /Link
@@ -26619,7 +27087,7 @@ endobj
 /Type /Annot
 >>
 endobj
-267 0 obj
+272 0 obj
 << /Border [0 0 0]
 /Dest (_produces_6)
 /Subtype /Link
@@ -26627,7 +27095,7 @@ endobj
 /Type /Annot
 >>
 endobj
-268 0 obj
+273 0 obj
 << /Border [0 0 0]
 /Dest (_clds_model-names_get)
 /Subtype /Link
@@ -26635,7 +27103,7 @@ endobj
 /Type /Annot
 >>
 endobj
-269 0 obj
+274 0 obj
 << /Border [0 0 0]
 /Dest (_clds_model-names_get)
 /Subtype /Link
@@ -26643,7 +27111,7 @@ endobj
 /Type /Annot
 >>
 endobj
-270 0 obj
+275 0 obj
 << /Border [0 0 0]
 /Dest (_description_4)
 /Subtype /Link
@@ -26651,7 +27119,7 @@ endobj
 /Type /Annot
 >>
 endobj
-271 0 obj
+276 0 obj
 << /Border [0 0 0]
 /Dest (_description_4)
 /Subtype /Link
@@ -26659,7 +27127,7 @@ endobj
 /Type /Annot
 >>
 endobj
-272 0 obj
+277 0 obj
 << /Border [0 0 0]
 /Dest (_responses_7)
 /Subtype /Link
@@ -26667,7 +27135,7 @@ endobj
 /Type /Annot
 >>
 endobj
-273 0 obj
+278 0 obj
 << /Border [0 0 0]
 /Dest (_responses_7)
 /Subtype /Link
@@ -26675,7 +27143,7 @@ endobj
 /Type /Annot
 >>
 endobj
-274 0 obj
+279 0 obj
 << /Border [0 0 0]
 /Dest (_produces_7)
 /Subtype /Link
@@ -26683,7 +27151,7 @@ endobj
 /Type /Annot
 >>
 endobj
-275 0 obj
+280 0 obj
 << /Border [0 0 0]
 /Dest (_produces_7)
 /Subtype /Link
@@ -26691,7 +27159,7 @@ endobj
 /Type /Annot
 >>
 endobj
-276 0 obj
+281 0 obj
 << /Border [0 0 0]
 /Dest (_clds_model_bpmn_modelname_get)
 /Subtype /Link
@@ -26699,7 +27167,7 @@ endobj
 /Type /Annot
 >>
 endobj
-277 0 obj
+282 0 obj
 << /Border [0 0 0]
 /Dest (_clds_model_bpmn_modelname_get)
 /Subtype /Link
@@ -26707,7 +27175,7 @@ endobj
 /Type /Annot
 >>
 endobj
-278 0 obj
+283 0 obj
 << /Border [0 0 0]
 /Dest (_description_5)
 /Subtype /Link
@@ -26715,7 +27183,7 @@ endobj
 /Type /Annot
 >>
 endobj
-279 0 obj
+284 0 obj
 << /Border [0 0 0]
 /Dest (_description_5)
 /Subtype /Link
@@ -26723,7 +27191,7 @@ endobj
 /Type /Annot
 >>
 endobj
-280 0 obj
+285 0 obj
 << /Border [0 0 0]
 /Dest (_parameters_4)
 /Subtype /Link
@@ -26731,7 +27199,7 @@ endobj
 /Type /Annot
 >>
 endobj
-281 0 obj
+286 0 obj
 << /Border [0 0 0]
 /Dest (_parameters_4)
 /Subtype /Link
@@ -26739,7 +27207,7 @@ endobj
 /Type /Annot
 >>
 endobj
-282 0 obj
+287 0 obj
 << /Border [0 0 0]
 /Dest (_responses_8)
 /Subtype /Link
@@ -26747,7 +27215,7 @@ endobj
 /Type /Annot
 >>
 endobj
-283 0 obj
+288 0 obj
 << /Border [0 0 0]
 /Dest (_responses_8)
 /Subtype /Link
@@ -26755,7 +27223,7 @@ endobj
 /Type /Annot
 >>
 endobj
-284 0 obj
+289 0 obj
 << /Border [0 0 0]
 /Dest (_produces_8)
 /Subtype /Link
@@ -26763,7 +27231,7 @@ endobj
 /Type /Annot
 >>
 endobj
-285 0 obj
+290 0 obj
 << /Border [0 0 0]
 /Dest (_produces_8)
 /Subtype /Link
@@ -26771,7 +27239,7 @@ endobj
 /Type /Annot
 >>
 endobj
-286 0 obj
+291 0 obj
 << /Border [0 0 0]
 /Dest (_clds_model_image_modelname_get)
 /Subtype /Link
@@ -26779,7 +27247,7 @@ endobj
 /Type /Annot
 >>
 endobj
-287 0 obj
+292 0 obj
 << /Border [0 0 0]
 /Dest (_clds_model_image_modelname_get)
 /Subtype /Link
@@ -26787,7 +27255,7 @@ endobj
 /Type /Annot
 >>
 endobj
-288 0 obj
+293 0 obj
 << /Border [0 0 0]
 /Dest (_description_6)
 /Subtype /Link
@@ -26795,7 +27263,7 @@ endobj
 /Type /Annot
 >>
 endobj
-289 0 obj
+294 0 obj
 << /Border [0 0 0]
 /Dest (_description_6)
 /Subtype /Link
@@ -26803,7 +27271,7 @@ endobj
 /Type /Annot
 >>
 endobj
-290 0 obj
+295 0 obj
 << /Border [0 0 0]
 /Dest (_parameters_5)
 /Subtype /Link
@@ -26811,7 +27279,7 @@ endobj
 /Type /Annot
 >>
 endobj
-291 0 obj
+296 0 obj
 << /Border [0 0 0]
 /Dest (_parameters_5)
 /Subtype /Link
@@ -26819,7 +27287,7 @@ endobj
 /Type /Annot
 >>
 endobj
-292 0 obj
+297 0 obj
 << /Border [0 0 0]
 /Dest (_responses_9)
 /Subtype /Link
@@ -26827,7 +27295,7 @@ endobj
 /Type /Annot
 >>
 endobj
-293 0 obj
+298 0 obj
 << /Border [0 0 0]
 /Dest (_responses_9)
 /Subtype /Link
@@ -26835,7 +27303,7 @@ endobj
 /Type /Annot
 >>
 endobj
-294 0 obj
+299 0 obj
 << /Border [0 0 0]
 /Dest (_produces_9)
 /Subtype /Link
@@ -26843,7 +27311,7 @@ endobj
 /Type /Annot
 >>
 endobj
-295 0 obj
+300 0 obj
 << /Border [0 0 0]
 /Dest (_produces_9)
 /Subtype /Link
@@ -26851,7 +27319,7 @@ endobj
 /Type /Annot
 >>
 endobj
-296 0 obj
+301 0 obj
 << /Border [0 0 0]
 /Dest (_clds_model_modelname_get)
 /Subtype /Link
@@ -26859,7 +27327,7 @@ endobj
 /Type /Annot
 >>
 endobj
-297 0 obj
+302 0 obj
 << /Border [0 0 0]
 /Dest (_clds_model_modelname_get)
 /Subtype /Link
@@ -26867,7 +27335,7 @@ endobj
 /Type /Annot
 >>
 endobj
-298 0 obj
+303 0 obj
 << /Border [0 0 0]
 /Dest (_description_7)
 /Subtype /Link
@@ -26875,7 +27343,7 @@ endobj
 /Type /Annot
 >>
 endobj
-299 0 obj
+304 0 obj
 << /Border [0 0 0]
 /Dest (_description_7)
 /Subtype /Link
@@ -26883,7 +27351,7 @@ endobj
 /Type /Annot
 >>
 endobj
-300 0 obj
+305 0 obj
 << /Border [0 0 0]
 /Dest (_parameters_6)
 /Subtype /Link
@@ -26891,7 +27359,7 @@ endobj
 /Type /Annot
 >>
 endobj
-301 0 obj
+306 0 obj
 << /Border [0 0 0]
 /Dest (_parameters_6)
 /Subtype /Link
@@ -26899,7 +27367,7 @@ endobj
 /Type /Annot
 >>
 endobj
-302 0 obj
+307 0 obj
 << /Border [0 0 0]
 /Dest (_responses_10)
 /Subtype /Link
@@ -26907,7 +27375,7 @@ endobj
 /Type /Annot
 >>
 endobj
-303 0 obj
+308 0 obj
 << /Border [0 0 0]
 /Dest (_responses_10)
 /Subtype /Link
@@ -26915,7 +27383,7 @@ endobj
 /Type /Annot
 >>
 endobj
-304 0 obj
+309 0 obj
 << /Border [0 0 0]
 /Dest (_produces_10)
 /Subtype /Link
@@ -26923,7 +27391,7 @@ endobj
 /Type /Annot
 >>
 endobj
-305 0 obj
+310 0 obj
 << /Border [0 0 0]
 /Dest (_produces_10)
 /Subtype /Link
@@ -26931,7 +27399,7 @@ endobj
 /Type /Annot
 >>
 endobj
-306 0 obj
+311 0 obj
 << /Border [0 0 0]
 /Dest (_clds_model_modelname_put)
 /Subtype /Link
@@ -26939,7 +27407,7 @@ endobj
 /Type /Annot
 >>
 endobj
-307 0 obj
+312 0 obj
 << /Border [0 0 0]
 /Dest (_clds_model_modelname_put)
 /Subtype /Link
@@ -26947,7 +27415,7 @@ endobj
 /Type /Annot
 >>
 endobj
-308 0 obj
+313 0 obj
 << /Border [0 0 0]
 /Dest (_description_8)
 /Subtype /Link
@@ -26955,7 +27423,7 @@ endobj
 /Type /Annot
 >>
 endobj
-309 0 obj
+314 0 obj
 << /Border [0 0 0]
 /Dest (_description_8)
 /Subtype /Link
@@ -26963,7 +27431,7 @@ endobj
 /Type /Annot
 >>
 endobj
-310 0 obj
+315 0 obj
 << /Border [0 0 0]
 /Dest (_parameters_7)
 /Subtype /Link
@@ -26971,7 +27439,7 @@ endobj
 /Type /Annot
 >>
 endobj
-311 0 obj
+316 0 obj
 << /Border [0 0 0]
 /Dest (_parameters_7)
 /Subtype /Link
@@ -26979,7 +27447,7 @@ endobj
 /Type /Annot
 >>
 endobj
-312 0 obj
+317 0 obj
 << /Border [0 0 0]
 /Dest (_responses_11)
 /Subtype /Link
@@ -26987,7 +27455,7 @@ endobj
 /Type /Annot
 >>
 endobj
-313 0 obj
+318 0 obj
 << /Border [0 0 0]
 /Dest (_responses_11)
 /Subtype /Link
@@ -26995,7 +27463,7 @@ endobj
 /Type /Annot
 >>
 endobj
-314 0 obj
+319 0 obj
 << /Border [0 0 0]
 /Dest (_consumes_4)
 /Subtype /Link
@@ -27003,7 +27471,7 @@ endobj
 /Type /Annot
 >>
 endobj
-315 0 obj
+320 0 obj
 << /Border [0 0 0]
 /Dest (_consumes_4)
 /Subtype /Link
@@ -27011,7 +27479,7 @@ endobj
 /Type /Annot
 >>
 endobj
-316 0 obj
+321 0 obj
 << /Border [0 0 0]
 /Dest (_produces_11)
 /Subtype /Link
@@ -27019,7 +27487,7 @@ endobj
 /Type /Annot
 >>
 endobj
-317 0 obj
+322 0 obj
 << /Border [0 0 0]
 /Dest (_produces_11)
 /Subtype /Link
@@ -27027,7 +27495,7 @@ endobj
 /Type /Annot
 >>
 endobj
-318 0 obj
+323 0 obj
 << /Border [0 0 0]
 /Dest (_clds_properties_get)
 /Subtype /Link
@@ -27035,7 +27503,7 @@ endobj
 /Type /Annot
 >>
 endobj
-319 0 obj
+324 0 obj
 << /Border [0 0 0]
 /Dest (_clds_properties_get)
 /Subtype /Link
@@ -27043,7 +27511,7 @@ endobj
 /Type /Annot
 >>
 endobj
-320 0 obj
+325 0 obj
 << /Border [0 0 0]
 /Dest (_description_9)
 /Subtype /Link
@@ -27051,7 +27519,7 @@ endobj
 /Type /Annot
 >>
 endobj
-321 0 obj
+326 0 obj
 << /Border [0 0 0]
 /Dest (_description_9)
 /Subtype /Link
@@ -27059,7 +27527,7 @@ endobj
 /Type /Annot
 >>
 endobj
-322 0 obj
+327 0 obj
 << /Border [0 0 0]
 /Dest (_responses_12)
 /Subtype /Link
@@ -27067,7 +27535,7 @@ endobj
 /Type /Annot
 >>
 endobj
-323 0 obj
+328 0 obj
 << /Border [0 0 0]
 /Dest (_responses_12)
 /Subtype /Link
@@ -27075,7 +27543,7 @@ endobj
 /Type /Annot
 >>
 endobj
-324 0 obj
+329 0 obj
 << /Border [0 0 0]
 /Dest (_produces_12)
 /Subtype /Link
@@ -27083,7 +27551,7 @@ endobj
 /Type /Annot
 >>
 endobj
-325 0 obj
+330 0 obj
 << /Border [0 0 0]
 /Dest (_produces_12)
 /Subtype /Link
@@ -27091,7 +27559,7 @@ endobj
 /Type /Annot
 >>
 endobj
-326 0 obj
+331 0 obj
 << /Border [0 0 0]
 /Dest (_clds_properties_serviceinvariantuuid_get)
 /Subtype /Link
@@ -27099,7 +27567,7 @@ endobj
 /Type /Annot
 >>
 endobj
-327 0 obj
+332 0 obj
 << /Border [0 0 0]
 /Dest (_clds_properties_serviceinvariantuuid_get)
 /Subtype /Link
@@ -27107,7 +27575,7 @@ endobj
 /Type /Annot
 >>
 endobj
-328 0 obj
+333 0 obj
 << /Border [0 0 0]
 /Dest (_description_10)
 /Subtype /Link
@@ -27115,7 +27583,7 @@ endobj
 /Type /Annot
 >>
 endobj
-329 0 obj
+334 0 obj
 << /Border [0 0 0]
 /Dest (_description_10)
 /Subtype /Link
@@ -27123,7 +27591,7 @@ endobj
 /Type /Annot
 >>
 endobj
-330 0 obj
+335 0 obj
 << /Border [0 0 0]
 /Dest (_parameters_8)
 /Subtype /Link
@@ -27131,7 +27599,7 @@ endobj
 /Type /Annot
 >>
 endobj
-331 0 obj
+336 0 obj
 << /Border [0 0 0]
 /Dest (_parameters_8)
 /Subtype /Link
@@ -27139,7 +27607,7 @@ endobj
 /Type /Annot
 >>
 endobj
-332 0 obj
+337 0 obj
 << /Border [0 0 0]
 /Dest (_responses_13)
 /Subtype /Link
@@ -27147,7 +27615,7 @@ endobj
 /Type /Annot
 >>
 endobj
-333 0 obj
+338 0 obj
 << /Border [0 0 0]
 /Dest (_responses_13)
 /Subtype /Link
@@ -27155,7 +27623,7 @@ endobj
 /Type /Annot
 >>
 endobj
-334 0 obj
+339 0 obj
 << /Border [0 0 0]
 /Dest (_produces_13)
 /Subtype /Link
@@ -27163,7 +27631,7 @@ endobj
 /Type /Annot
 >>
 endobj
-335 0 obj
+340 0 obj
 << /Border [0 0 0]
 /Dest (_produces_13)
 /Subtype /Link
@@ -27171,7 +27639,7 @@ endobj
 /Type /Annot
 >>
 endobj
-336 0 obj
+341 0 obj
 << /Border [0 0 0]
 /Dest (_clds_sdc_services_get)
 /Subtype /Link
@@ -27179,7 +27647,7 @@ endobj
 /Type /Annot
 >>
 endobj
-337 0 obj
+342 0 obj
 << /Border [0 0 0]
 /Dest (_clds_sdc_services_get)
 /Subtype /Link
@@ -27187,7 +27655,7 @@ endobj
 /Type /Annot
 >>
 endobj
-338 0 obj
+343 0 obj
 << /Border [0 0 0]
 /Dest (_description_11)
 /Subtype /Link
@@ -27195,7 +27663,7 @@ endobj
 /Type /Annot
 >>
 endobj
-339 0 obj
+344 0 obj
 << /Border [0 0 0]
 /Dest (_description_11)
 /Subtype /Link
@@ -27203,7 +27671,7 @@ endobj
 /Type /Annot
 >>
 endobj
-340 0 obj
+345 0 obj
 << /Border [0 0 0]
 /Dest (_responses_14)
 /Subtype /Link
@@ -27211,7 +27679,7 @@ endobj
 /Type /Annot
 >>
 endobj
-341 0 obj
+346 0 obj
 << /Border [0 0 0]
 /Dest (_responses_14)
 /Subtype /Link
@@ -27219,7 +27687,7 @@ endobj
 /Type /Annot
 >>
 endobj
-342 0 obj
+347 0 obj
 << /Border [0 0 0]
 /Dest (_produces_14)
 /Subtype /Link
@@ -27227,7 +27695,7 @@ endobj
 /Type /Annot
 >>
 endobj
-343 0 obj
+348 0 obj
 << /Border [0 0 0]
 /Dest (_produces_14)
 /Subtype /Link
@@ -27235,7 +27703,7 @@ endobj
 /Type /Annot
 >>
 endobj
-344 0 obj
+349 0 obj
 << /Border [0 0 0]
 /Dest (_clds_undeploy_modelname_put)
 /Subtype /Link
@@ -27243,7 +27711,7 @@ endobj
 /Type /Annot
 >>
 endobj
-345 0 obj
+350 0 obj
 << /Border [0 0 0]
 /Dest (_clds_undeploy_modelname_put)
 /Subtype /Link
@@ -27251,7 +27719,7 @@ endobj
 /Type /Annot
 >>
 endobj
-346 0 obj
+351 0 obj
 << /Border [0 0 0]
 /Dest (_parameters_9)
 /Subtype /Link
@@ -27259,7 +27727,7 @@ endobj
 /Type /Annot
 >>
 endobj
-347 0 obj
+352 0 obj
 << /Border [0 0 0]
 /Dest (_parameters_9)
 /Subtype /Link
@@ -27267,7 +27735,7 @@ endobj
 /Type /Annot
 >>
 endobj
-348 0 obj
+353 0 obj
 << /Border [0 0 0]
 /Dest (_responses_15)
 /Subtype /Link
@@ -27275,7 +27743,7 @@ endobj
 /Type /Annot
 >>
 endobj
-349 0 obj
+354 0 obj
 << /Border [0 0 0]
 /Dest (_responses_15)
 /Subtype /Link
@@ -27283,7 +27751,7 @@ endobj
 /Type /Annot
 >>
 endobj
-350 0 obj
+355 0 obj
 << /Border [0 0 0]
 /Dest (_consumes_5)
 /Subtype /Link
@@ -27291,7 +27759,7 @@ endobj
 /Type /Annot
 >>
 endobj
-351 0 obj
+356 0 obj
 << /Border [0 0 0]
 /Dest (_consumes_5)
 /Subtype /Link
@@ -27299,7 +27767,7 @@ endobj
 /Type /Annot
 >>
 endobj
-352 0 obj
+357 0 obj
 << /Border [0 0 0]
 /Dest (_produces_15)
 /Subtype /Link
@@ -27307,7 +27775,7 @@ endobj
 /Type /Annot
 >>
 endobj
-353 0 obj
+358 0 obj
 << /Border [0 0 0]
 /Dest (_produces_15)
 /Subtype /Link
@@ -27315,7 +27783,7 @@ endobj
 /Type /Annot
 >>
 endobj
-354 0 obj
+359 0 obj
 << /Border [0 0 0]
 /Dest (_cldstempate_template-names_get)
 /Subtype /Link
@@ -27323,7 +27791,7 @@ endobj
 /Type /Annot
 >>
 endobj
-355 0 obj
+360 0 obj
 << /Border [0 0 0]
 /Dest (_cldstempate_template-names_get)
 /Subtype /Link
@@ -27331,7 +27799,7 @@ endobj
 /Type /Annot
 >>
 endobj
-356 0 obj
+361 0 obj
 << /Border [0 0 0]
 /Dest (_description_12)
 /Subtype /Link
@@ -27339,7 +27807,7 @@ endobj
 /Type /Annot
 >>
 endobj
-357 0 obj
+362 0 obj
 << /Border [0 0 0]
 /Dest (_description_12)
 /Subtype /Link
@@ -27347,7 +27815,7 @@ endobj
 /Type /Annot
 >>
 endobj
-358 0 obj
+363 0 obj
 << /Border [0 0 0]
 /Dest (_responses_16)
 /Subtype /Link
@@ -27355,7 +27823,7 @@ endobj
 /Type /Annot
 >>
 endobj
-359 0 obj
+364 0 obj
 << /Border [0 0 0]
 /Dest (_responses_16)
 /Subtype /Link
@@ -27363,7 +27831,7 @@ endobj
 /Type /Annot
 >>
 endobj
-360 0 obj
+365 0 obj
 << /Border [0 0 0]
 /Dest (_produces_16)
 /Subtype /Link
@@ -27371,7 +27839,7 @@ endobj
 /Type /Annot
 >>
 endobj
-361 0 obj
+366 0 obj
 << /Border [0 0 0]
 /Dest (_produces_16)
 /Subtype /Link
@@ -27379,7 +27847,7 @@ endobj
 /Type /Annot
 >>
 endobj
-362 0 obj
+367 0 obj
 << /Border [0 0 0]
 /Dest (_cldstempate_template_bpmn_templatename_get)
 /Subtype /Link
@@ -27387,7 +27855,7 @@ endobj
 /Type /Annot
 >>
 endobj
-363 0 obj
+368 0 obj
 << /Border [0 0 0]
 /Dest (_cldstempate_template_bpmn_templatename_get)
 /Subtype /Link
@@ -27395,7 +27863,7 @@ endobj
 /Type /Annot
 >>
 endobj
-364 0 obj
+369 0 obj
 << /Border [0 0 0]
 /Dest (_description_13)
 /Subtype /Link
@@ -27403,7 +27871,7 @@ endobj
 /Type /Annot
 >>
 endobj
-365 0 obj
+370 0 obj
 << /Border [0 0 0]
 /Dest (_description_13)
 /Subtype /Link
@@ -27411,7 +27879,7 @@ endobj
 /Type /Annot
 >>
 endobj
-366 0 obj
+371 0 obj
 << /Border [0 0 0]
 /Dest (_parameters_10)
 /Subtype /Link
@@ -27419,7 +27887,7 @@ endobj
 /Type /Annot
 >>
 endobj
-367 0 obj
+372 0 obj
 << /Border [0 0 0]
 /Dest (_parameters_10)
 /Subtype /Link
@@ -27427,7 +27895,7 @@ endobj
 /Type /Annot
 >>
 endobj
-368 0 obj
+373 0 obj
 << /Border [0 0 0]
 /Dest (_responses_17)
 /Subtype /Link
@@ -27435,7 +27903,7 @@ endobj
 /Type /Annot
 >>
 endobj
-369 0 obj
+374 0 obj
 << /Border [0 0 0]
 /Dest (_responses_17)
 /Subtype /Link
@@ -27443,7 +27911,7 @@ endobj
 /Type /Annot
 >>
 endobj
-370 0 obj
+375 0 obj
 << /Border [0 0 0]
 /Dest (_produces_17)
 /Subtype /Link
@@ -27451,7 +27919,7 @@ endobj
 /Type /Annot
 >>
 endobj
-371 0 obj
+376 0 obj
 << /Border [0 0 0]
 /Dest (_produces_17)
 /Subtype /Link
@@ -27459,7 +27927,7 @@ endobj
 /Type /Annot
 >>
 endobj
-372 0 obj
+377 0 obj
 << /Border [0 0 0]
 /Dest (_cldstempate_template_image_templatename_get)
 /Subtype /Link
@@ -27467,7 +27935,7 @@ endobj
 /Type /Annot
 >>
 endobj
-373 0 obj
+378 0 obj
 << /Border [0 0 0]
 /Dest (_cldstempate_template_image_templatename_get)
 /Subtype /Link
@@ -27475,7 +27943,7 @@ endobj
 /Type /Annot
 >>
 endobj
-374 0 obj
+379 0 obj
 << /Border [0 0 0]
 /Dest (_description_14)
 /Subtype /Link
@@ -27483,7 +27951,7 @@ endobj
 /Type /Annot
 >>
 endobj
-375 0 obj
+380 0 obj
 << /Border [0 0 0]
 /Dest (_description_14)
 /Subtype /Link
@@ -27491,7 +27959,7 @@ endobj
 /Type /Annot
 >>
 endobj
-376 0 obj
+381 0 obj
 << /Border [0 0 0]
 /Dest (_parameters_11)
 /Subtype /Link
@@ -27499,7 +27967,7 @@ endobj
 /Type /Annot
 >>
 endobj
-377 0 obj
+382 0 obj
 << /Border [0 0 0]
 /Dest (_parameters_11)
 /Subtype /Link
@@ -27507,7 +27975,7 @@ endobj
 /Type /Annot
 >>
 endobj
-378 0 obj
+383 0 obj
 << /Border [0 0 0]
 /Dest (_responses_18)
 /Subtype /Link
@@ -27515,7 +27983,7 @@ endobj
 /Type /Annot
 >>
 endobj
-379 0 obj
+384 0 obj
 << /Border [0 0 0]
 /Dest (_responses_18)
 /Subtype /Link
@@ -27523,7 +27991,7 @@ endobj
 /Type /Annot
 >>
 endobj
-380 0 obj
+385 0 obj
 << /Border [0 0 0]
 /Dest (_produces_18)
 /Subtype /Link
@@ -27531,7 +27999,7 @@ endobj
 /Type /Annot
 >>
 endobj
-381 0 obj
+386 0 obj
 << /Border [0 0 0]
 /Dest (_produces_18)
 /Subtype /Link
@@ -27539,7 +28007,7 @@ endobj
 /Type /Annot
 >>
 endobj
-382 0 obj
+387 0 obj
 << /Border [0 0 0]
 /Dest (_cldstempate_template_templatename_get)
 /Subtype /Link
@@ -27547,7 +28015,7 @@ endobj
 /Type /Annot
 >>
 endobj
-383 0 obj
+388 0 obj
 << /Border [0 0 0]
 /Dest (_cldstempate_template_templatename_get)
 /Subtype /Link
@@ -27555,7 +28023,7 @@ endobj
 /Type /Annot
 >>
 endobj
-384 0 obj
+389 0 obj
 << /Border [0 0 0]
 /Dest (_description_15)
 /Subtype /Link
@@ -27563,7 +28031,7 @@ endobj
 /Type /Annot
 >>
 endobj
-385 0 obj
+390 0 obj
 << /Border [0 0 0]
 /Dest (_description_15)
 /Subtype /Link
@@ -27571,7 +28039,7 @@ endobj
 /Type /Annot
 >>
 endobj
-386 0 obj
+391 0 obj
 << /Border [0 0 0]
 /Dest (_parameters_12)
 /Subtype /Link
@@ -27579,7 +28047,7 @@ endobj
 /Type /Annot
 >>
 endobj
-387 0 obj
+392 0 obj
 << /Border [0 0 0]
 /Dest (_parameters_12)
 /Subtype /Link
@@ -27587,7 +28055,7 @@ endobj
 /Type /Annot
 >>
 endobj
-388 0 obj
+393 0 obj
 << /Border [0 0 0]
 /Dest (_responses_19)
 /Subtype /Link
@@ -27595,7 +28063,7 @@ endobj
 /Type /Annot
 >>
 endobj
-389 0 obj
+394 0 obj
 << /Border [0 0 0]
 /Dest (_responses_19)
 /Subtype /Link
@@ -27603,7 +28071,7 @@ endobj
 /Type /Annot
 >>
 endobj
-390 0 obj
+395 0 obj
 << /Border [0 0 0]
 /Dest (_produces_19)
 /Subtype /Link
@@ -27611,7 +28079,7 @@ endobj
 /Type /Annot
 >>
 endobj
-391 0 obj
+396 0 obj
 << /Border [0 0 0]
 /Dest (_produces_19)
 /Subtype /Link
@@ -27619,7 +28087,7 @@ endobj
 /Type /Annot
 >>
 endobj
-392 0 obj
+397 0 obj
 << /Border [0 0 0]
 /Dest (_cldstempate_template_templatename_put)
 /Subtype /Link
@@ -27627,7 +28095,7 @@ endobj
 /Type /Annot
 >>
 endobj
-393 0 obj
+398 0 obj
 << /Border [0 0 0]
 /Dest (_cldstempate_template_templatename_put)
 /Subtype /Link
@@ -27635,7 +28103,7 @@ endobj
 /Type /Annot
 >>
 endobj
-394 0 obj
+399 0 obj
 << /Border [0 0 0]
 /Dest (_description_16)
 /Subtype /Link
@@ -27643,7 +28111,7 @@ endobj
 /Type /Annot
 >>
 endobj
-395 0 obj
+400 0 obj
 << /Border [0 0 0]
 /Dest (_description_16)
 /Subtype /Link
@@ -27651,7 +28119,7 @@ endobj
 /Type /Annot
 >>
 endobj
-396 0 obj
+401 0 obj
 << /Border [0 0 0]
 /Dest (_parameters_13)
 /Subtype /Link
@@ -27659,7 +28127,7 @@ endobj
 /Type /Annot
 >>
 endobj
-397 0 obj
+402 0 obj
 << /Border [0 0 0]
 /Dest (_parameters_13)
 /Subtype /Link
@@ -27667,7 +28135,7 @@ endobj
 /Type /Annot
 >>
 endobj
-398 0 obj
+403 0 obj
 << /Border [0 0 0]
 /Dest (_responses_20)
 /Subtype /Link
@@ -27675,7 +28143,7 @@ endobj
 /Type /Annot
 >>
 endobj
-399 0 obj
+404 0 obj
 << /Border [0 0 0]
 /Dest (_responses_20)
 /Subtype /Link
@@ -27683,7 +28151,7 @@ endobj
 /Type /Annot
 >>
 endobj
-400 0 obj
+405 0 obj
 << /Border [0 0 0]
 /Dest (_consumes_6)
 /Subtype /Link
@@ -27691,7 +28159,7 @@ endobj
 /Type /Annot
 >>
 endobj
-401 0 obj
+406 0 obj
 << /Border [0 0 0]
 /Dest (_consumes_6)
 /Subtype /Link
@@ -27699,7 +28167,7 @@ endobj
 /Type /Annot
 >>
 endobj
-402 0 obj
+407 0 obj
 << /Border [0 0 0]
 /Dest (_produces_20)
 /Subtype /Link
@@ -27707,7 +28175,7 @@ endobj
 /Type /Annot
 >>
 endobj
-403 0 obj
+408 0 obj
 << /Border [0 0 0]
 /Dest (_produces_20)
 /Subtype /Link
@@ -27715,23 +28183,23 @@ endobj
 /Type /Annot
 >>
 endobj
-404 0 obj
+409 0 obj
 << /Border [0 0 0]
-/Dest (_user_username_get)
+/Dest (_healthcheck_get)
 /Subtype /Link
-/Rect [60.24000000000001 279.7199999999996 197.3805 293.99999999999955]
+/Rect [60.24000000000001 279.7199999999996 172.53750000000002 293.99999999999955]
 /Type /Annot
 >>
 endobj
-405 0 obj
+410 0 obj
 << /Border [0 0 0]
-/Dest (_user_username_get)
+/Dest (_healthcheck_get)
 /Subtype /Link
 /Rect [552.021 279.7199999999996 563.76 293.99999999999955]
 /Type /Annot
 >>
 endobj
-406 0 obj
+411 0 obj
 << /Border [0 0 0]
 /Dest (_description_17)
 /Subtype /Link
@@ -27739,7 +28207,7 @@ endobj
 /Type /Annot
 >>
 endobj
-407 0 obj
+412 0 obj
 << /Border [0 0 0]
 /Dest (_description_17)
 /Subtype /Link
@@ -27747,215 +28215,263 @@ endobj
 /Type /Annot
 >>
 endobj
-408 0 obj
+413 0 obj
 << /Border [0 0 0]
-/Dest (_parameters_14)
+/Dest (_responses_21)
 /Subtype /Link
-/Rect [72.24000000000001 242.7599999999995 163.71579492187502 257.0399999999995]
+/Rect [72.24000000000001 242.7599999999995 157.899 257.0399999999995]
 /Type /Annot
 >>
 endobj
-409 0 obj
+414 0 obj
 << /Border [0 0 0]
-/Dest (_parameters_14)
+/Dest (_responses_21)
 /Subtype /Link
 /Rect [552.021 242.7599999999995 563.76 257.0399999999995]
 /Type /Annot
 >>
 endobj
-410 0 obj
+415 0 obj
 << /Border [0 0 0]
-/Dest (_responses_21)
+/Dest (_produces_21)
 /Subtype /Link
-/Rect [72.24000000000001 224.27999999999952 157.899 238.55999999999952]
+/Rect [72.24000000000001 224.27999999999952 152.27100000000002 238.55999999999952]
 /Type /Annot
 >>
 endobj
-411 0 obj
+416 0 obj
 << /Border [0 0 0]
-/Dest (_responses_21)
+/Dest (_produces_21)
 /Subtype /Link
 /Rect [552.021 224.27999999999952 563.76 238.55999999999952]
 /Type /Annot
 >>
 endobj
-412 0 obj
+417 0 obj
 << /Border [0 0 0]
-/Dest (_produces_21)
+/Dest (_user_getuser_get)
 /Subtype /Link
-/Rect [72.24000000000001 205.79999999999953 152.27100000000002 220.07999999999953]
+/Rect [60.24000000000001 205.79999999999953 174.774 220.07999999999953]
 /Type /Annot
 >>
 endobj
-413 0 obj
+418 0 obj
 << /Border [0 0 0]
-/Dest (_produces_21)
+/Dest (_user_getuser_get)
 /Subtype /Link
 /Rect [552.021 205.79999999999953 563.76 220.07999999999953]
 /Type /Annot
 >>
 endobj
-414 0 obj
+419 0 obj
+<< /Border [0 0 0]
+/Dest (_description_18)
+/Subtype /Link
+/Rect [72.24000000000001 187.31999999999954 164.07300000000004 201.59999999999954]
+/Type /Annot
+>>
+endobj
+420 0 obj
+<< /Border [0 0 0]
+/Dest (_description_18)
+/Subtype /Link
+/Rect [552.021 187.31999999999954 563.76 201.59999999999954]
+/Type /Annot
+>>
+endobj
+421 0 obj
+<< /Border [0 0 0]
+/Dest (_responses_22)
+/Subtype /Link
+/Rect [72.24000000000001 168.83999999999955 157.899 183.11999999999955]
+/Type /Annot
+>>
+endobj
+422 0 obj
+<< /Border [0 0 0]
+/Dest (_responses_22)
+/Subtype /Link
+/Rect [552.021 168.83999999999955 563.76 183.11999999999955]
+/Type /Annot
+>>
+endobj
+423 0 obj
+<< /Border [0 0 0]
+/Dest (_produces_22)
+/Subtype /Link
+/Rect [72.24000000000001 150.35999999999956 152.27100000000002 164.63999999999956]
+/Type /Annot
+>>
+endobj
+424 0 obj
+<< /Border [0 0 0]
+/Dest (_produces_22)
+/Subtype /Link
+/Rect [552.021 150.35999999999956 563.76 164.63999999999956]
+/Type /Annot
+>>
+endobj
+425 0 obj
 << /Border [0 0 0]
 /Dest (_definitions)
 /Subtype /Link
-/Rect [48.24000000000001 187.31999999999954 114.66300000000001 201.59999999999954]
+/Rect [48.24000000000001 131.87999999999957 114.66300000000001 146.15999999999957]
 /Type /Annot
 >>
 endobj
-415 0 obj
+426 0 obj
 << /Border [0 0 0]
 /Dest (_definitions)
 /Subtype /Link
-/Rect [552.021 187.31999999999954 563.76 201.59999999999954]
+/Rect [552.021 131.87999999999957 563.76 146.15999999999957]
 /Type /Annot
 >>
 endobj
-416 0 obj
+427 0 obj
 << /Border [0 0 0]
 /Dest (_cldsevent)
 /Subtype /Link
-/Rect [60.24000000000001 168.83999999999955 129.519 183.11999999999955]
+/Rect [60.24000000000001 113.39999999999958 129.519 127.67999999999958]
 /Type /Annot
 >>
 endobj
-417 0 obj
+428 0 obj
 << /Border [0 0 0]
 /Dest (_cldsevent)
 /Subtype /Link
-/Rect [552.021 168.83999999999955 563.76 183.11999999999955]
+/Rect [552.021 113.39999999999958 563.76 127.67999999999958]
 /Type /Annot
 >>
 endobj
-418 0 obj
+429 0 obj
 << /Border [0 0 0]
 /Dest (_cldshealthcheck)
 /Subtype /Link
-/Rect [60.24000000000001 150.35999999999956 164.26350000000002 164.63999999999956]
+/Rect [60.24000000000001 94.91999999999959 164.26350000000002 109.19999999999959]
 /Type /Annot
 >>
 endobj
-419 0 obj
+430 0 obj
 << /Border [0 0 0]
 /Dest (_cldshealthcheck)
 /Subtype /Link
-/Rect [552.021 150.35999999999956 563.76 164.63999999999956]
+/Rect [552.021 94.91999999999959 563.76 109.19999999999959]
 /Type /Annot
 >>
 endobj
-420 0 obj
+431 0 obj
 << /Border [0 0 0]
 /Dest (_cldsinfo)
 /Subtype /Link
-/Rect [60.24000000000001 131.87999999999957 121.37100000000001 146.15999999999957]
+/Rect [60.24000000000001 76.4399999999996 121.37100000000001 90.7199999999996]
 /Type /Annot
 >>
 endobj
-421 0 obj
+432 0 obj
 << /Border [0 0 0]
 /Dest (_cldsinfo)
 /Subtype /Link
-/Rect [552.021 131.87999999999957 563.76 146.15999999999957]
+/Rect [552.021 76.4399999999996 563.76 90.7199999999996]
 /Type /Annot
 >>
 endobj
-422 0 obj
+433 0 obj
 << /Border [0 0 0]
 /Dest (_cldsmodel)
 /Subtype /Link
-/Rect [60.24000000000001 113.39999999999958 132.01800000000003 127.67999999999958]
+/Rect [60.24000000000001 57.95999999999961 132.01800000000003 72.23999999999961]
 /Type /Annot
 >>
 endobj
-423 0 obj
+434 0 obj
 << /Border [0 0 0]
 /Dest (_cldsmodel)
 /Subtype /Link
-/Rect [552.021 113.39999999999958 563.76 127.67999999999958]
+/Rect [552.021 57.95999999999961 563.76 72.23999999999961]
 /Type /Annot
 >>
 endobj
-424 0 obj
+435 0 obj
 << /Border [0 0 0]
 /Dest (_cldsmodelinstance)
 /Subtype /Link
-/Rect [60.24000000000001 94.91999999999959 174.53250000000003 109.19999999999959]
+/Rect [60.24 741.7199999999999 174.5325 756.0]
 /Type /Annot
 >>
 endobj
-425 0 obj
+436 0 obj
 << /Border [0 0 0]
 /Dest (_cldsmodelinstance)
 /Subtype /Link
-/Rect [552.021 94.91999999999959 563.76 109.19999999999959]
+/Rect [552.021 741.7199999999999 563.76 756.0]
 /Type /Annot
 >>
 endobj
-426 0 obj
+437 0 obj
 << /Border [0 0 0]
 /Dest (_cldsmonitoringdetails)
 /Subtype /Link
-/Rect [60.24000000000001 76.4399999999996 191.49 90.7199999999996]
+/Rect [60.24000000000001 723.2399999999999 191.49 737.52]
 /Type /Annot
 >>
 endobj
-427 0 obj
+438 0 obj
 << /Border [0 0 0]
 /Dest (_cldsmonitoringdetails)
 /Subtype /Link
-/Rect [552.021 76.4399999999996 563.76 90.7199999999996]
+/Rect [552.021 723.2399999999999 563.76 737.52]
 /Type /Annot
 >>
 endobj
-428 0 obj
+439 0 obj
 << /Border [0 0 0]
 /Dest (_cldstemplate)
 /Subtype /Link
-/Rect [60.24000000000001 57.95999999999961 147.36075585937502 72.23999999999961]
+/Rect [60.24000000000001 704.7599999999999 147.36075585937502 719.04]
 /Type /Annot
 >>
 endobj
-429 0 obj
+440 0 obj
 << /Border [0 0 0]
 /Dest (_cldstemplate)
 /Subtype /Link
-/Rect [552.021 57.95999999999961 563.76 72.23999999999961]
+/Rect [552.021 704.7599999999999 563.76 719.04]
 /Type /Annot
 >>
 endobj
-430 0 obj
+441 0 obj
 << /Border [0 0 0]
 /Dest (_dcaeevent)
 /Subtype /Link
-/Rect [60.24 741.7199999999999 132.9735 756.0]
+/Rect [60.24000000000001 686.2799999999999 132.9735 700.56]
 /Type /Annot
 >>
 endobj
-431 0 obj
+442 0 obj
 << /Border [0 0 0]
 /Dest (_dcaeevent)
 /Subtype /Link
-/Rect [552.021 741.7199999999999 563.76 756.0]
+/Rect [552.021 686.2799999999999 563.76 700.56]
 /Type /Annot
 >>
 endobj
-432 0 obj
+443 0 obj
 << /Border [0 0 0]
 /Dest (_valueitem)
 /Subtype /Link
-/Rect [60.24000000000001 723.2399999999999 130.90438476562503 737.52]
+/Rect [60.24000000000001 667.7999999999998 130.90438476562503 682.0799999999999]
 /Type /Annot
 >>
 endobj
-433 0 obj
+444 0 obj
 << /Border [0 0 0]
 /Dest (_valueitem)
 /Subtype /Link
-/Rect [552.021 723.2399999999999 563.76 737.52]
+/Rect [552.021 667.7999999999998 563.76 682.0799999999999]
 /Type /Annot
 >>
 endobj
-434 0 obj
+445 0 obj
 << /Type /XObject
 /Subtype /Form
 /BBox [0 0 612.0 792.0]
 
 endstream
 endobj
-435 0 obj
+446 0 obj
 << /Type /Outlines
-/Count 116
-/First 436 0 R
-/Last 542 0 R
+/Count 119
+/First 447 0 R
+/Last 556 0 R
 >>
 endobj
-436 0 obj
+447 0 obj
 << /Title <feff0063006c0061006d0070>
-/Parent 435 0 R
+/Parent 446 0 R
 /Count 0
-/Next 437 0 R
+/Next 448 0 R
 /Dest [7 0 R /XYZ 0 792.0 null]
 >>
 endobj
-437 0 obj
+448 0 obj
 << /Title <feff005400610062006c00650020006f006600200043006f006e00740065006e00740073>
-/Parent 435 0 R
+/Parent 446 0 R
 /Count 0
-/Next 438 0 R
-/Prev 436 0 R
+/Next 449 0 R
+/Prev 447 0 R
 /Dest [10 0 R /XYZ 0 792.0 null]
 >>
 endobj
-438 0 obj
+449 0 obj
 << /Title <feff004300680061007000740065007200200031002e0020004f0076006500720076006900650077>
-/Parent 435 0 R
+/Parent 446 0 R
 /Count 2
-/First 439 0 R
-/Last 440 0 R
-/Next 441 0 R
-/Prev 437 0 R
+/First 450 0 R
+/Last 451 0 R
+/Next 452 0 R
+/Prev 448 0 R
 /Dest [18 0 R /XYZ 0 792.0 null]
 >>
 endobj
-439 0 obj
+450 0 obj
 << /Title <feff0031002e0031002e002000560065007200730069006f006e00200069006e0066006f0072006d006100740069006f006e>
-/Parent 438 0 R
+/Parent 449 0 R
 /Count 0
-/Next 440 0 R
+/Next 451 0 R
 /Dest [18 0 R /XYZ 0 712.0799999999999 null]
 >>
 endobj
-440 0 obj
+451 0 obj
 << /Title <feff0031002e0032002e002000550052004900200073006300680065006d0065>
-/Parent 438 0 R
+/Parent 449 0 R
 /Count 0
-/Prev 439 0 R
+/Prev 450 0 R
 /Dest [18 0 R /XYZ 0 644.22 null]
 >>
 endobj
-441 0 obj
+452 0 obj
 << /Title <feff004300680061007000740065007200200032002e002000500061007400680073>
-/Parent 435 0 R
-/Count 100
-/First 442 0 R
-/Last 537 0 R
-/Next 542 0 R
-/Prev 438 0 R
+/Parent 446 0 R
+/Count 103
+/First 453 0 R
+/Last 552 0 R
+/Next 556 0 R
+/Prev 449 0 R
 /Dest [27 0 R /XYZ 0 792.0 null]
 >>
 endobj
-442 0 obj
+453 0 obj
 << /Title <feff0032002e0031002e00200050005500540020002f0063006c00640073002f0061006300740069006f006e002f007b0061006300740069006f006e007d002f007b006d006f00640065006c004e0061006d0065007d>
-/Parent 441 0 R
+/Parent 452 0 R
 /Count 5
-/First 443 0 R
-/Last 447 0 R
-/Next 448 0 R
+/First 454 0 R
+/Last 458 0 R
+/Next 459 0 R
 /Dest [27 0 R /XYZ 0 712.0799999999999 null]
 >>
 endobj
-443 0 obj
+454 0 obj
 << /Title <feff0032002e0031002e0031002e0020004400650073006300720069007000740069006f006e>
-/Parent 442 0 R
+/Parent 453 0 R
 /Count 0
-/Next 444 0 R
+/Next 455 0 R
 /Dest [27 0 R /XYZ 0 672.0 null]
 >>
 endobj
-444 0 obj
+455 0 obj
 << /Title <feff0032002e0031002e0032002e00200050006100720061006d00650074006500720073>
-/Parent 442 0 R
+/Parent 453 0 R
 /Count 0
-/Next 445 0 R
-/Prev 443 0 R
+/Next 456 0 R
+/Prev 454 0 R
 /Dest [27 0 R /XYZ 0 611.9400000000002 null]
 >>
 endobj
-445 0 obj
+456 0 obj
 << /Title <feff0032002e0031002e0033002e00200052006500730070006f006e007300650073>
-/Parent 442 0 R
+/Parent 453 0 R
 /Count 0
-/Next 446 0 R
-/Prev 444 0 R
+/Next 457 0 R
+/Prev 455 0 R
 /Dest [27 0 R /XYZ 0 394.14000000000027 null]
 >>
 endobj
-446 0 obj
+457 0 obj
 << /Title <feff0032002e0031002e0034002e00200043006f006e00730075006d00650073>
-/Parent 442 0 R
+/Parent 453 0 R
 /Count 0
-/Next 447 0 R
-/Prev 445 0 R
+/Next 458 0 R
+/Prev 456 0 R
 /Dest [27 0 R /XYZ 0 265.74000000000024 null]
 >>
 endobj
-447 0 obj
+458 0 obj
 << /Title <feff0032002e0031002e0035002e002000500072006f00640075006300650073>
-/Parent 442 0 R
+/Parent 453 0 R
 /Count 0
-/Prev 446 0 R
+/Prev 457 0 R
 /Dest [27 0 R /XYZ 0 209.46000000000024 null]
 >>
 endobj
-448 0 obj
+459 0 obj
 << /Title <feff0032002e0032002e00200047004500540020002f0063006c00640073002f0063006c0064007300440065007400610069006c0073>
-/Parent 441 0 R
+/Parent 452 0 R
 /Count 2
-/First 449 0 R
-/Last 450 0 R
-/Next 451 0 R
-/Prev 442 0 R
+/First 460 0 R
+/Last 461 0 R
+/Next 462 0 R
+/Prev 453 0 R
 /Dest [27 0 R /XYZ 0 153.1800000000002 null]
 >>
 endobj
-449 0 obj
+460 0 obj
 << /Title <feff0032002e0032002e0031002e00200052006500730070006f006e007300650073>
-/Parent 448 0 R
+/Parent 459 0 R
 /Count 0
-/Next 450 0 R
+/Next 461 0 R
 /Dest [27 0 R /XYZ 0 113.1000000000002 null]
 >>
 endobj
-450 0 obj
+461 0 obj
 << /Title <feff0032002e0032002e0032002e002000500072006f00640075006300650073>
-/Parent 448 0 R
+/Parent 459 0 R
 /Count 0
-/Prev 449 0 R
+/Prev 460 0 R
 /Dest [42 0 R /XYZ 0 654.6 null]
 >>
 endobj
-451 0 obj
+462 0 obj
 << /Title <feff0032002e0033002e00200047004500540020002f0063006c00640073002f0063006c006400730049006e0066006f>
-/Parent 441 0 R
+/Parent 452 0 R
 /Count 2
-/First 452 0 R
-/Last 453 0 R
-/Next 454 0 R
-/Prev 448 0 R
+/First 463 0 R
+/Last 464 0 R
+/Next 465 0 R
+/Prev 459 0 R
 /Dest [42 0 R /XYZ 0 598.3200000000002 null]
 >>
 endobj
-452 0 obj
+463 0 obj
 << /Title <feff0032002e0033002e0031002e00200052006500730070006f006e007300650073>
-/Parent 451 0 R
+/Parent 462 0 R
 /Count 0
-/Next 453 0 R
+/Next 464 0 R
 /Dest [42 0 R /XYZ 0 558.2400000000002 null]
 >>
 endobj
-453 0 obj
+464 0 obj
 << /Title <feff0032002e0033002e0032002e002000500072006f00640075006300650073>
-/Parent 451 0 R
+/Parent 462 0 R
 /Count 0
-/Prev 452 0 R
+/Prev 463 0 R
 /Dest [42 0 R /XYZ 0 453.12000000000035 null]
 >>
 endobj
-454 0 obj
+465 0 obj
 << /Title <feff0032002e0034002e00200050004f005300540020002f0063006c00640073002f0064006300610065002f006500760065006e0074>
-/Parent 441 0 R
+/Parent 452 0 R
 /Count 5
-/First 455 0 R
-/Last 459 0 R
-/Next 460 0 R
-/Prev 451 0 R
+/First 466 0 R
+/Last 470 0 R
+/Next 471 0 R
+/Prev 462 0 R
 /Dest [42 0 R /XYZ 0 396.8400000000003 null]
 >>
 endobj
-455 0 obj
+466 0 obj
 << /Title <feff0032002e0034002e0031002e0020004400650073006300720069007000740069006f006e>
-/Parent 454 0 R
+/Parent 465 0 R
 /Count 0
-/Next 456 0 R
+/Next 467 0 R
 /Dest [42 0 R /XYZ 0 356.7600000000003 null]
 >>
 endobj
-456 0 obj
+467 0 obj
 << /Title <feff0032002e0034002e0032002e00200050006100720061006d00650074006500720073>
-/Parent 454 0 R
+/Parent 465 0 R
 /Count 0
-/Next 457 0 R
-/Prev 455 0 R
+/Next 468 0 R
+/Prev 466 0 R
 /Dest [42 0 R /XYZ 0 296.7000000000003 null]
 >>
 endobj
-457 0 obj
+468 0 obj
 << /Title <feff0032002e0034002e0033002e00200052006500730070006f006e007300650073>
-/Parent 454 0 R
+/Parent 465 0 R
 /Count 0
-/Next 458 0 R
-/Prev 456 0 R
+/Next 469 0 R
+/Prev 467 0 R
 /Dest [42 0 R /XYZ 0 154.02000000000024 null]
 >>
 endobj
-458 0 obj
+469 0 obj
 << /Title <feff0032002e0034002e0034002e00200043006f006e00730075006d00650073>
-/Parent 454 0 R
+/Parent 465 0 R
 /Count 0
-/Next 459 0 R
-/Prev 457 0 R
+/Next 470 0 R
+/Prev 468 0 R
 /Dest [56 0 R /XYZ 0 792.0 null]
 >>
 endobj
-459 0 obj
+470 0 obj
 << /Title <feff0032002e0034002e0035002e002000500072006f00640075006300650073>
-/Parent 454 0 R
+/Parent 465 0 R
 /Count 0
-/Prev 458 0 R
+/Prev 469 0 R
 /Dest [56 0 R /XYZ 0 702.1200000000001 null]
 >>
 endobj
-460 0 obj
+471 0 obj
 << /Title <feff0032002e0035002e00200050005500540020002f0063006c00640073002f006400650070006c006f0079002f007b006d006f00640065006c004e0061006d0065007d>
-/Parent 441 0 R
+/Parent 452 0 R
 /Count 4
-/First 461 0 R
-/Last 464 0 R
-/Next 465 0 R
-/Prev 454 0 R
+/First 472 0 R
+/Last 475 0 R
+/Next 476 0 R
+/Prev 465 0 R
 /Dest [56 0 R /XYZ 0 645.8400000000003 null]
 >>
 endobj
-461 0 obj
+472 0 obj
 << /Title <feff0032002e0035002e0031002e00200050006100720061006d00650074006500720073>
-/Parent 460 0 R
+/Parent 471 0 R
 /Count 0
-/Next 462 0 R
+/Next 473 0 R
 /Dest [56 0 R /XYZ 0 605.7600000000003 null]
 >>
 endobj
-462 0 obj
+473 0 obj
 << /Title <feff0032002e0035002e0032002e00200052006500730070006f006e007300650073>
-/Parent 460 0 R
+/Parent 471 0 R
 /Count 0
-/Next 463 0 R
-/Prev 461 0 R
+/Next 474 0 R
+/Prev 472 0 R
 /Dest [56 0 R /XYZ 0 463.08000000000044 null]
 >>
 endobj
-463 0 obj
+474 0 obj
 << /Title <feff0032002e0035002e0033002e00200043006f006e00730075006d00650073>
-/Parent 460 0 R
+/Parent 471 0 R
 /Count 0
-/Next 464 0 R
-/Prev 462 0 R
+/Next 475 0 R
+/Prev 473 0 R
 /Dest [56 0 R /XYZ 0 334.6800000000004 null]
 >>
 endobj
-464 0 obj
+475 0 obj
 << /Title <feff0032002e0035002e0034002e002000500072006f00640075006300650073>
-/Parent 460 0 R
+/Parent 471 0 R
 /Count 0
-/Prev 463 0 R
+/Prev 474 0 R
 /Dest [56 0 R /XYZ 0 278.4000000000004 null]
 >>
 endobj
-465 0 obj
+476 0 obj
 << /Title <feff0032002e0036002e00200047004500540020002f0063006c00640073002f006800650061006c007400680063006800650063006b>
-/Parent 441 0 R
+/Parent 452 0 R
 /Count 3
-/First 466 0 R
-/Last 468 0 R
-/Next 469 0 R
-/Prev 460 0 R
+/First 477 0 R
+/Last 479 0 R
+/Next 480 0 R
+/Prev 471 0 R
 /Dest [56 0 R /XYZ 0 222.12000000000037 null]
 >>
 endobj
-466 0 obj
+477 0 obj
 << /Title <feff0032002e0036002e0031002e0020004400650073006300720069007000740069006f006e>
-/Parent 465 0 R
+/Parent 476 0 R
 /Count 0
-/Next 467 0 R
+/Next 478 0 R
 /Dest [56 0 R /XYZ 0 182.04000000000036 null]
 >>
 endobj
-467 0 obj
+478 0 obj
 << /Title <feff0032002e0036002e0032002e00200052006500730070006f006e007300650073>
-/Parent 465 0 R
+/Parent 476 0 R
 /Count 0
-/Next 468 0 R
-/Prev 466 0 R
+/Next 479 0 R
+/Prev 477 0 R
 /Dest [56 0 R /XYZ 0 121.98000000000033 null]
 >>
 endobj
-468 0 obj
+479 0 obj
 << /Title <feff0032002e0036002e0033002e002000500072006f00640075006300650073>
-/Parent 465 0 R
+/Parent 476 0 R
 /Count 0
-/Prev 467 0 R
+/Prev 478 0 R
 /Dest [73 0 R /XYZ 0 659.88 null]
 >>
 endobj
-469 0 obj
+480 0 obj
 << /Title <feff0032002e0037002e00200047004500540020002f0063006c00640073002f006d006f00640065006c002d006e0061006d00650073>
-/Parent 441 0 R
+/Parent 452 0 R
 /Count 3
-/First 470 0 R
-/Last 472 0 R
-/Next 473 0 R
-/Prev 465 0 R
+/First 481 0 R
+/Last 483 0 R
+/Next 484 0 R
+/Prev 476 0 R
 /Dest [73 0 R /XYZ 0 603.6000000000001 null]
 >>
 endobj
-470 0 obj
+481 0 obj
 << /Title <feff0032002e0037002e0031002e0020004400650073006300720069007000740069006f006e>
-/Parent 469 0 R
+/Parent 480 0 R
 /Count 0
-/Next 471 0 R
+/Next 482 0 R
 /Dest [73 0 R /XYZ 0 563.5200000000002 null]
 >>
 endobj
-471 0 obj
+482 0 obj
 << /Title <feff0032002e0037002e0032002e00200052006500730070006f006e007300650073>
-/Parent 469 0 R
+/Parent 480 0 R
 /Count 0
-/Next 472 0 R
-/Prev 470 0 R
+/Next 483 0 R
+/Prev 481 0 R
 /Dest [73 0 R /XYZ 0 503.4600000000004 null]
 >>
 endobj
-472 0 obj
+483 0 obj
 << /Title <feff0032002e0037002e0033002e002000500072006f00640075006300650073>
-/Parent 469 0 R
+/Parent 480 0 R
 /Count 0
-/Prev 471 0 R
+/Prev 482 0 R
 /Dest [73 0 R /XYZ 0 398.3400000000004 null]
 >>
 endobj
-473 0 obj
+484 0 obj
 << /Title <feff0032002e0038002e00200047004500540020002f0063006c00640073002f006d006f00640065006c002f00620070006d006e002f007b006d006f00640065006c004e0061006d0065007d>
-/Parent 441 0 R
+/Parent 452 0 R
 /Count 4
-/First 474 0 R
-/Last 477 0 R
-/Next 478 0 R
-/Prev 469 0 R
+/First 485 0 R
+/Last 488 0 R
+/Next 489 0 R
+/Prev 480 0 R
 /Dest [73 0 R /XYZ 0 342.06000000000034 null]
 >>
 endobj
-474 0 obj
+485 0 obj
 << /Title <feff0032002e0038002e0031002e0020004400650073006300720069007000740069006f006e>
-/Parent 473 0 R
+/Parent 484 0 R
 /Count 0
-/Next 475 0 R
+/Next 486 0 R
 /Dest [73 0 R /XYZ 0 301.9800000000003 null]
 >>
 endobj
-475 0 obj
+486 0 obj
 << /Title <feff0032002e0038002e0032002e00200050006100720061006d00650074006500720073>
-/Parent 473 0 R
+/Parent 484 0 R
 /Count 0
-/Next 476 0 R
-/Prev 474 0 R
+/Next 487 0 R
+/Prev 485 0 R
 /Dest [73 0 R /XYZ 0 210.36000000000027 null]
 >>
 endobj
-476 0 obj
+487 0 obj
 << /Title <feff0032002e0038002e0033002e00200052006500730070006f006e007300650073>
-/Parent 473 0 R
+/Parent 484 0 R
 /Count 0
-/Next 477 0 R
-/Prev 475 0 R
+/Next 488 0 R
+/Prev 486 0 R
 /Dest [73 0 R /XYZ 0 105.24000000000024 null]
 >>
 endobj
-477 0 obj
+488 0 obj
 << /Title <feff0032002e0038002e0034002e002000500072006f00640075006300650073>
-/Parent 473 0 R
+/Parent 484 0 R
 /Count 0
-/Prev 476 0 R
+/Prev 487 0 R
 /Dest [88 0 R /XYZ 0 683.1600000000001 null]
 >>
 endobj
-478 0 obj
+489 0 obj
 << /Title <feff0032002e0039002e00200047004500540020002f0063006c00640073002f006d006f00640065006c002f0069006d006100670065002f007b006d006f00640065006c004e0061006d0065007d>
-/Parent 441 0 R
+/Parent 452 0 R
 /Count 4
-/First 479 0 R
-/Last 482 0 R
-/Next 483 0 R
-/Prev 473 0 R
+/First 490 0 R
+/Last 493 0 R
+/Next 494 0 R
+/Prev 484 0 R
 /Dest [88 0 R /XYZ 0 626.8800000000002 null]
 >>
 endobj
-479 0 obj
+490 0 obj
 << /Title <feff0032002e0039002e0031002e0020004400650073006300720069007000740069006f006e>
-/Parent 478 0 R
+/Parent 489 0 R
 /Count 0
-/Next 480 0 R
+/Next 491 0 R
 /Dest [88 0 R /XYZ 0 586.8000000000003 null]
 >>
 endobj
-480 0 obj
+491 0 obj
 << /Title <feff0032002e0039002e0032002e00200050006100720061006d00650074006500720073>
-/Parent 478 0 R
+/Parent 489 0 R
 /Count 0
-/Next 481 0 R
-/Prev 479 0 R
+/Next 492 0 R
+/Prev 490 0 R
 /Dest [88 0 R /XYZ 0 495.1800000000004 null]
 >>
 endobj
-481 0 obj
+492 0 obj
 << /Title <feff0032002e0039002e0033002e00200052006500730070006f006e007300650073>
-/Parent 478 0 R
+/Parent 489 0 R
 /Count 0
-/Next 482 0 R
-/Prev 480 0 R
+/Next 493 0 R
+/Prev 491 0 R
 /Dest [88 0 R /XYZ 0 390.06000000000034 null]
 >>
 endobj
-482 0 obj
+493 0 obj
 << /Title <feff0032002e0039002e0034002e002000500072006f00640075006300650073>
-/Parent 478 0 R
+/Parent 489 0 R
 /Count 0
-/Prev 481 0 R
+/Prev 492 0 R
 /Dest [88 0 R /XYZ 0 284.9400000000003 null]
 >>
 endobj
-483 0 obj
+494 0 obj
 << /Title <feff0032002e00310030002e00200047004500540020002f0063006c00640073002f006d006f00640065006c002f007b006d006f00640065006c004e0061006d0065007d>
-/Parent 441 0 R
+/Parent 452 0 R
 /Count 4
-/First 484 0 R
-/Last 487 0 R
-/Next 488 0 R
-/Prev 478 0 R
+/First 495 0 R
+/Last 498 0 R
+/Next 499 0 R
+/Prev 489 0 R
 /Dest [88 0 R /XYZ 0 228.66000000000028 null]
 >>
 endobj
-484 0 obj
+495 0 obj
 << /Title <feff0032002e00310030002e0031002e0020004400650073006300720069007000740069006f006e>
-/Parent 483 0 R
+/Parent 494 0 R
 /Count 0
-/Next 485 0 R
+/Next 496 0 R
 /Dest [88 0 R /XYZ 0 188.58000000000027 null]
 >>
 endobj
-485 0 obj
+496 0 obj
 << /Title <feff0032002e00310030002e0032002e00200050006100720061006d00650074006500720073>
-/Parent 483 0 R
+/Parent 494 0 R
 /Count 0
-/Next 486 0 R
-/Prev 484 0 R
+/Next 497 0 R
+/Prev 495 0 R
 /Dest [88 0 R /XYZ 0 128.52000000000024 null]
 >>
 endobj
-486 0 obj
+497 0 obj
 << /Title <feff0032002e00310030002e0033002e00200052006500730070006f006e007300650073>
-/Parent 483 0 R
+/Parent 494 0 R
 /Count 0
-/Next 487 0 R
-/Prev 485 0 R
+/Next 498 0 R
+/Prev 496 0 R
 /Dest [100 0 R /XYZ 0 683.1600000000001 null]
 >>
 endobj
-487 0 obj
+498 0 obj
 << /Title <feff0032002e00310030002e0034002e002000500072006f00640075006300650073>
-/Parent 483 0 R
+/Parent 494 0 R
 /Count 0
-/Prev 486 0 R
+/Prev 497 0 R
 /Dest [100 0 R /XYZ 0 578.0400000000002 null]
 >>
 endobj
-488 0 obj
+499 0 obj
 << /Title <feff0032002e00310031002e00200050005500540020002f0063006c00640073002f006d006f00640065006c002f007b006d006f00640065006c004e0061006d0065007d>
-/Parent 441 0 R
+/Parent 452 0 R
 /Count 5
-/First 489 0 R
-/Last 493 0 R
-/Next 494 0 R
-/Prev 483 0 R
+/First 500 0 R
+/Last 504 0 R
+/Next 505 0 R
+/Prev 494 0 R
 /Dest [100 0 R /XYZ 0 521.7600000000003 null]
 >>
 endobj
-489 0 obj
+500 0 obj
 << /Title <feff0032002e00310031002e0031002e0020004400650073006300720069007000740069006f006e>
-/Parent 488 0 R
+/Parent 499 0 R
 /Count 0
-/Next 490 0 R
+/Next 501 0 R
 /Dest [100 0 R /XYZ 0 481.68000000000035 null]
 >>
 endobj
-490 0 obj
+501 0 obj
 << /Title <feff0032002e00310031002e0032002e00200050006100720061006d00650074006500720073>
-/Parent 488 0 R
+/Parent 499 0 R
 /Count 0
-/Next 491 0 R
-/Prev 489 0 R
+/Next 502 0 R
+/Prev 500 0 R
 /Dest [100 0 R /XYZ 0 421.62000000000035 null]
 >>
 endobj
-491 0 obj
+502 0 obj
 << /Title <feff0032002e00310031002e0033002e00200052006500730070006f006e007300650073>
-/Parent 488 0 R
+/Parent 499 0 R
 /Count 0
-/Next 492 0 R
-/Prev 490 0 R
+/Next 503 0 R
+/Prev 501 0 R
 /Dest [100 0 R /XYZ 0 278.94000000000034 null]
 >>
 endobj
-492 0 obj
+503 0 obj
 << /Title <feff0032002e00310031002e0034002e00200043006f006e00730075006d00650073>
-/Parent 488 0 R
+/Parent 499 0 R
 /Count 0
-/Next 493 0 R
-/Prev 491 0 R
+/Next 504 0 R
+/Prev 502 0 R
 /Dest [100 0 R /XYZ 0 173.82000000000033 null]
 >>
 endobj
-493 0 obj
+504 0 obj
 << /Title <feff0032002e00310031002e0035002e002000500072006f00640075006300650073>
-/Parent 488 0 R
+/Parent 499 0 R
 /Count 0
-/Prev 492 0 R
+/Prev 503 0 R
 /Dest [100 0 R /XYZ 0 117.5400000000003 null]
 >>
 endobj
-494 0 obj
+505 0 obj
 << /Title <feff0032002e00310032002e00200047004500540020002f0063006c00640073002f00700072006f0070006500720074006900650073>
-/Parent 441 0 R
+/Parent 452 0 R
 /Count 3
-/First 495 0 R
-/Last 497 0 R
-/Next 498 0 R
-/Prev 488 0 R
+/First 506 0 R
+/Last 508 0 R
+/Next 509 0 R
+/Prev 499 0 R
 /Dest [113 0 R /XYZ 0 792.0 null]
 >>
 endobj
-495 0 obj
+506 0 obj
 << /Title <feff0032002e00310032002e0031002e0020004400650073006300720069007000740069006f006e>
-/Parent 494 0 R
+/Parent 505 0 R
 /Count 0
-/Next 496 0 R
+/Next 507 0 R
 /Dest [113 0 R /XYZ 0 718.32 null]
 >>
 endobj
-496 0 obj
+507 0 obj
 << /Title <feff0032002e00310032002e0032002e00200052006500730070006f006e007300650073>
-/Parent 494 0 R
+/Parent 505 0 R
 /Count 0
-/Next 497 0 R
-/Prev 495 0 R
+/Next 508 0 R
+/Prev 506 0 R
 /Dest [113 0 R /XYZ 0 658.2600000000002 null]
 >>
 endobj
-497 0 obj
+508 0 obj
 << /Title <feff0032002e00310032002e0033002e002000500072006f00640075006300650073>
-/Parent 494 0 R
+/Parent 505 0 R
 /Count 0
-/Prev 496 0 R
+/Prev 507 0 R
 /Dest [113 0 R /XYZ 0 553.1400000000003 null]
 >>
 endobj
-498 0 obj
+509 0 obj
 << /Title <feff0032002e00310033002e00200047004500540020002f0063006c00640073002f00700072006f0070006500720074006900650073002f007b00730065007200760069006300650049006e00760061007200690061006e00740055005500490044007d>
-/Parent 441 0 R
+/Parent 452 0 R
 /Count 4
-/First 499 0 R
-/Last 502 0 R
-/Next 503 0 R
-/Prev 494 0 R
+/First 510 0 R
+/Last 513 0 R
+/Next 514 0 R
+/Prev 505 0 R
 /Dest [113 0 R /XYZ 0 496.86000000000047 null]
 >>
 endobj
-499 0 obj
+510 0 obj
 << /Title <feff0032002e00310033002e0031002e0020004400650073006300720069007000740069006f006e>
-/Parent 498 0 R
+/Parent 509 0 R
 /Count 0
-/Next 500 0 R
+/Next 511 0 R
 /Dest [113 0 R /XYZ 0 456.7800000000004 null]
 >>
 endobj
-500 0 obj
+511 0 obj
 << /Title <feff0032002e00310033002e0032002e00200050006100720061006d00650074006500720073>
-/Parent 498 0 R
+/Parent 509 0 R
 /Count 0
-/Next 501 0 R
-/Prev 499 0 R
+/Next 512 0 R
+/Prev 510 0 R
 /Dest [113 0 R /XYZ 0 380.9400000000004 null]
 >>
 endobj
-501 0 obj
+512 0 obj
 << /Title <feff0032002e00310033002e0033002e00200052006500730070006f006e007300650073>
-/Parent 498 0 R
+/Parent 509 0 R
 /Count 0
-/Next 502 0 R
-/Prev 500 0 R
+/Next 513 0 R
+/Prev 511 0 R
 /Dest [113 0 R /XYZ 0 238.2600000000004 null]
 >>
 endobj
-502 0 obj
+513 0 obj
 << /Title <feff0032002e00310033002e0034002e002000500072006f00640075006300650073>
-/Parent 498 0 R
+/Parent 509 0 R
 /Count 0
-/Prev 501 0 R
+/Prev 512 0 R
 /Dest [113 0 R /XYZ 0 133.14000000000036 null]
 >>
 endobj
-503 0 obj
+514 0 obj
 << /Title <feff0032002e00310034002e00200047004500540020002f0063006c00640073002f007300640063002f00730065007200760069006300650073>
-/Parent 441 0 R
+/Parent 452 0 R
 /Count 3
-/First 504 0 R
-/Last 506 0 R
-/Next 507 0 R
-/Prev 498 0 R
+/First 515 0 R
+/Last 517 0 R
+/Next 518 0 R
+/Prev 509 0 R
 /Dest [124 0 R /XYZ 0 792.0 null]
 >>
 endobj
-504 0 obj
+515 0 obj
 << /Title <feff0032002e00310034002e0031002e0020004400650073006300720069007000740069006f006e>
-/Parent 503 0 R
+/Parent 514 0 R
 /Count 0
-/Next 505 0 R
+/Next 516 0 R
 /Dest [124 0 R /XYZ 0 718.32 null]
 >>
 endobj
-505 0 obj
+516 0 obj
 << /Title <feff0032002e00310034002e0032002e00200052006500730070006f006e007300650073>
-/Parent 503 0 R
+/Parent 514 0 R
 /Count 0
-/Next 506 0 R
-/Prev 504 0 R
+/Next 517 0 R
+/Prev 515 0 R
 /Dest [124 0 R /XYZ 0 658.2600000000002 null]
 >>
 endobj
-506 0 obj
+517 0 obj
 << /Title <feff0032002e00310034002e0033002e002000500072006f00640075006300650073>
-/Parent 503 0 R
+/Parent 514 0 R
 /Count 0
-/Prev 505 0 R
+/Prev 516 0 R
 /Dest [124 0 R /XYZ 0 553.1400000000003 null]
 >>
 endobj
-507 0 obj
+518 0 obj
 << /Title <feff0032002e00310035002e00200050005500540020002f0063006c00640073002f0075006e006400650070006c006f0079002f007b006d006f00640065006c004e0061006d0065007d>
-/Parent 441 0 R
+/Parent 452 0 R
 /Count 4
-/First 508 0 R
-/Last 511 0 R
-/Next 512 0 R
-/Prev 503 0 R
+/First 519 0 R
+/Last 522 0 R
+/Next 523 0 R
+/Prev 514 0 R
 /Dest [124 0 R /XYZ 0 496.86000000000047 null]
 >>
 endobj
-508 0 obj
+519 0 obj
 << /Title <feff0032002e00310035002e0031002e00200050006100720061006d00650074006500720073>
-/Parent 507 0 R
+/Parent 518 0 R
 /Count 0
-/Next 509 0 R
+/Next 520 0 R
 /Dest [124 0 R /XYZ 0 456.7800000000004 null]
 >>
 endobj
-509 0 obj
+520 0 obj
 << /Title <feff0032002e00310035002e0032002e00200052006500730070006f006e007300650073>
-/Parent 507 0 R
+/Parent 518 0 R
 /Count 0
-/Next 510 0 R
-/Prev 508 0 R
+/Next 521 0 R
+/Prev 519 0 R
 /Dest [124 0 R /XYZ 0 314.1000000000004 null]
 >>
 endobj
-510 0 obj
+521 0 obj
 << /Title <feff0032002e00310035002e0033002e00200043006f006e00730075006d00650073>
-/Parent 507 0 R
+/Parent 518 0 R
 /Count 0
-/Next 511 0 R
-/Prev 509 0 R
+/Next 522 0 R
+/Prev 520 0 R
 /Dest [124 0 R /XYZ 0 185.7000000000004 null]
 >>
 endobj
-511 0 obj
+522 0 obj
 << /Title <feff0032002e00310035002e0034002e002000500072006f00640075006300650073>
-/Parent 507 0 R
+/Parent 518 0 R
 /Count 0
-/Prev 510 0 R
+/Prev 521 0 R
 /Dest [124 0 R /XYZ 0 129.42000000000036 null]
 >>
 endobj
-512 0 obj
+523 0 obj
 << /Title <feff0032002e00310036002e00200047004500540020002f0063006c0064007300540065006d0070006100740065002f00740065006d0070006c006100740065002d006e0061006d00650073>
-/Parent 441 0 R
+/Parent 452 0 R
 /Count 3
-/First 513 0 R
-/Last 515 0 R
-/Next 516 0 R
-/Prev 507 0 R
+/First 524 0 R
+/Last 526 0 R
+/Next 527 0 R
+/Prev 518 0 R
 /Dest [140 0 R /XYZ 0 792.0 null]
 >>
 endobj
-513 0 obj
+524 0 obj
 << /Title <feff0032002e00310036002e0031002e0020004400650073006300720069007000740069006f006e>
-/Parent 512 0 R
+/Parent 523 0 R
 /Count 0
-/Next 514 0 R
+/Next 525 0 R
 /Dest [140 0 R /XYZ 0 718.32 null]
 >>
 endobj
-514 0 obj
+525 0 obj
 << /Title <feff0032002e00310036002e0032002e00200052006500730070006f006e007300650073>
-/Parent 512 0 R
+/Parent 523 0 R
 /Count 0
-/Next 515 0 R
-/Prev 513 0 R
+/Next 526 0 R
+/Prev 524 0 R
 /Dest [140 0 R /XYZ 0 658.2600000000002 null]
 >>
 endobj
-515 0 obj
+526 0 obj
 << /Title <feff0032002e00310036002e0033002e002000500072006f00640075006300650073>
-/Parent 512 0 R
+/Parent 523 0 R
 /Count 0
-/Prev 514 0 R
+/Prev 525 0 R
 /Dest [140 0 R /XYZ 0 553.1400000000003 null]
 >>
 endobj
-516 0 obj
+527 0 obj
 << /Title <feff0032002e00310037002e00200047004500540020002f0063006c0064007300540065006d0070006100740065002f00740065006d0070006c006100740065002f00620070006d006e002f007b00740065006d0070006c006100740065004e0061006d0065007d>
-/Parent 441 0 R
+/Parent 452 0 R
 /Count 4
-/First 517 0 R
-/Last 520 0 R
-/Next 521 0 R
-/Prev 512 0 R
+/First 528 0 R
+/Last 531 0 R
+/Next 532 0 R
+/Prev 523 0 R
 /Dest [140 0 R /XYZ 0 496.86000000000047 null]
 >>
 endobj
-517 0 obj
+528 0 obj
 << /Title <feff0032002e00310037002e0031002e0020004400650073006300720069007000740069006f006e>
-/Parent 516 0 R
+/Parent 527 0 R
 /Count 0
-/Next 518 0 R
+/Next 529 0 R
 /Dest [140 0 R /XYZ 0 456.7800000000004 null]
 >>
 endobj
-518 0 obj
+529 0 obj
 << /Title <feff0032002e00310037002e0032002e00200050006100720061006d00650074006500720073>
-/Parent 516 0 R
+/Parent 527 0 R
 /Count 0
-/Next 519 0 R
-/Prev 517 0 R
+/Next 530 0 R
+/Prev 528 0 R
 /Dest [140 0 R /XYZ 0 365.1600000000004 null]
 >>
 endobj
-519 0 obj
+530 0 obj
 << /Title <feff0032002e00310037002e0033002e00200052006500730070006f006e007300650073>
-/Parent 516 0 R
+/Parent 527 0 R
 /Count 0
-/Next 520 0 R
-/Prev 518 0 R
+/Next 531 0 R
+/Prev 529 0 R
 /Dest [140 0 R /XYZ 0 260.04000000000036 null]
 >>
 endobj
-520 0 obj
+531 0 obj
 << /Title <feff0032002e00310037002e0034002e002000500072006f00640075006300650073>
-/Parent 516 0 R
+/Parent 527 0 R
 /Count 0
-/Prev 519 0 R
+/Prev 530 0 R
 /Dest [140 0 R /XYZ 0 154.92000000000036 null]
 >>
 endobj
-521 0 obj
+532 0 obj
 << /Title <feff0032002e00310038002e00200047004500540020002f0063006c0064007300540065006d0070006100740065002f00740065006d0070006c006100740065002f0069006d006100670065002f007b00740065006d0070006c006100740065004e0061006d0065007d>
-/Parent 441 0 R
+/Parent 452 0 R
 /Count 4
-/First 522 0 R
-/Last 525 0 R
-/Next 526 0 R
-/Prev 516 0 R
+/First 533 0 R
+/Last 536 0 R
+/Next 537 0 R
+/Prev 527 0 R
 /Dest [153 0 R /XYZ 0 792.0 null]
 >>
 endobj
-522 0 obj
+533 0 obj
 << /Title <feff0032002e00310038002e0031002e0020004400650073006300720069007000740069006f006e>
-/Parent 521 0 R
+/Parent 532 0 R
 /Count 0
-/Next 523 0 R
+/Next 534 0 R
 /Dest [153 0 R /XYZ 0 718.32 null]
 >>
 endobj
-523 0 obj
+534 0 obj
 << /Title <feff0032002e00310038002e0032002e00200050006100720061006d00650074006500720073>
-/Parent 521 0 R
+/Parent 532 0 R
 /Count 0
-/Next 524 0 R
-/Prev 522 0 R
+/Next 535 0 R
+/Prev 533 0 R
 /Dest [153 0 R /XYZ 0 626.7000000000002 null]
 >>
 endobj
-524 0 obj
+535 0 obj
 << /Title <feff0032002e00310038002e0033002e00200052006500730070006f006e007300650073>
-/Parent 521 0 R
+/Parent 532 0 R
 /Count 0
-/Next 525 0 R
-/Prev 523 0 R
+/Next 536 0 R
+/Prev 534 0 R
 /Dest [153 0 R /XYZ 0 521.5800000000004 null]
 >>
 endobj
-525 0 obj
+536 0 obj
 << /Title <feff0032002e00310038002e0034002e002000500072006f00640075006300650073>
-/Parent 521 0 R
+/Parent 532 0 R
 /Count 0
-/Prev 524 0 R
+/Prev 535 0 R
 /Dest [153 0 R /XYZ 0 416.4600000000004 null]
 >>
 endobj
-526 0 obj
+537 0 obj
 << /Title <feff0032002e00310039002e00200047004500540020002f0063006c0064007300540065006d0070006100740065002f00740065006d0070006c006100740065002f007b00740065006d0070006c006100740065004e0061006d0065007d>
-/Parent 441 0 R
+/Parent 452 0 R
 /Count 4
-/First 527 0 R
-/Last 530 0 R
-/Next 531 0 R
-/Prev 521 0 R
+/First 538 0 R
+/Last 541 0 R
+/Next 542 0 R
+/Prev 532 0 R
 /Dest [153 0 R /XYZ 0 360.18000000000035 null]
 >>
 endobj
-527 0 obj
+538 0 obj
 << /Title <feff0032002e00310039002e0031002e0020004400650073006300720069007000740069006f006e>
-/Parent 526 0 R
+/Parent 537 0 R
 /Count 0
-/Next 528 0 R
+/Next 539 0 R
 /Dest [153 0 R /XYZ 0 320.1000000000003 null]
 >>
 endobj
-528 0 obj
+539 0 obj
 << /Title <feff0032002e00310039002e0032002e00200050006100720061006d00650074006500720073>
-/Parent 526 0 R
+/Parent 537 0 R
 /Count 0
-/Next 529 0 R
-/Prev 527 0 R
+/Next 540 0 R
+/Prev 538 0 R
 /Dest [153 0 R /XYZ 0 260.0400000000003 null]
 >>
 endobj
-529 0 obj
+540 0 obj
 << /Title <feff0032002e00310039002e0033002e00200052006500730070006f006e007300650073>
-/Parent 526 0 R
+/Parent 537 0 R
 /Count 0
-/Next 530 0 R
-/Prev 528 0 R
+/Next 541 0 R
+/Prev 539 0 R
 /Dest [153 0 R /XYZ 0 154.9200000000003 null]
 >>
 endobj
-530 0 obj
+541 0 obj
 << /Title <feff0032002e00310039002e0034002e002000500072006f00640075006300650073>
-/Parent 526 0 R
+/Parent 537 0 R
 /Count 0
-/Prev 529 0 R
+/Prev 540 0 R
 /Dest [165 0 R /XYZ 0 792.0 null]
 >>
 endobj
-531 0 obj
+542 0 obj
 << /Title <feff0032002e00320030002e00200050005500540020002f0063006c0064007300540065006d0070006100740065002f00740065006d0070006c006100740065002f007b00740065006d0070006c006100740065004e0061006d0065007d>
-/Parent 441 0 R
+/Parent 452 0 R
 /Count 5
-/First 532 0 R
-/Last 536 0 R
-/Next 537 0 R
-/Prev 526 0 R
+/First 543 0 R
+/Last 547 0 R
+/Next 548 0 R
+/Prev 537 0 R
 /Dest [165 0 R /XYZ 0 702.1200000000001 null]
 >>
 endobj
-532 0 obj
+543 0 obj
 << /Title <feff0032002e00320030002e0031002e0020004400650073006300720069007000740069006f006e>
-/Parent 531 0 R
+/Parent 542 0 R
 /Count 0
-/Next 533 0 R
+/Next 544 0 R
 /Dest [165 0 R /XYZ 0 662.0400000000002 null]
 >>
 endobj
-533 0 obj
+544 0 obj
 << /Title <feff0032002e00320030002e0032002e00200050006100720061006d00650074006500720073>
-/Parent 531 0 R
+/Parent 542 0 R
 /Count 0
-/Next 534 0 R
-/Prev 532 0 R
+/Next 545 0 R
+/Prev 543 0 R
 /Dest [165 0 R /XYZ 0 601.9800000000004 null]
 >>
 endobj
-534 0 obj
+545 0 obj
 << /Title <feff0032002e00320030002e0033002e00200052006500730070006f006e007300650073>
-/Parent 531 0 R
+/Parent 542 0 R
 /Count 0
-/Next 535 0 R
-/Prev 533 0 R
+/Next 546 0 R
+/Prev 544 0 R
 /Dest [165 0 R /XYZ 0 459.30000000000047 null]
 >>
 endobj
-535 0 obj
+546 0 obj
 << /Title <feff0032002e00320030002e0034002e00200043006f006e00730075006d00650073>
-/Parent 531 0 R
+/Parent 542 0 R
 /Count 0
-/Next 536 0 R
-/Prev 534 0 R
+/Next 547 0 R
+/Prev 545 0 R
 /Dest [165 0 R /XYZ 0 354.1800000000004 null]
 >>
 endobj
-536 0 obj
+547 0 obj
 << /Title <feff0032002e00320030002e0035002e002000500072006f00640075006300650073>
-/Parent 531 0 R
+/Parent 542 0 R
 /Count 0
-/Prev 535 0 R
+/Prev 546 0 R
 /Dest [165 0 R /XYZ 0 297.9000000000004 null]
 >>
 endobj
-537 0 obj
-<< /Title <feff0032002e00320031002e00200047004500540020002f0075007300650072002f007b0075007300650072004e0061006d0065007d>
-/Parent 441 0 R
-/Count 4
-/First 538 0 R
-/Last 541 0 R
-/Prev 531 0 R
+548 0 obj
+<< /Title <feff0032002e00320031002e00200047004500540020002f006800650061006c007400680063006800650063006b>
+/Parent 452 0 R
+/Count 3
+/First 549 0 R
+/Last 551 0 R
+/Next 552 0 R
+/Prev 542 0 R
 /Dest [165 0 R /XYZ 0 241.62000000000035 null]
 >>
 endobj
-538 0 obj
+549 0 obj
 << /Title <feff0032002e00320031002e0031002e0020004400650073006300720069007000740069006f006e>
-/Parent 537 0 R
+/Parent 548 0 R
 /Count 0
-/Next 539 0 R
+/Next 550 0 R
 /Dest [165 0 R /XYZ 0 201.54000000000033 null]
 >>
 endobj
-539 0 obj
-<< /Title <feff0032002e00320031002e0032002e00200050006100720061006d00650074006500720073>
-/Parent 537 0 R
+550 0 obj
+<< /Title <feff0032002e00320031002e0032002e00200052006500730070006f006e007300650073>
+/Parent 548 0 R
 /Count 0
-/Next 540 0 R
-/Prev 538 0 R
+/Next 551 0 R
+/Prev 549 0 R
 /Dest [165 0 R /XYZ 0 141.4800000000003 null]
 >>
 endobj
-540 0 obj
-<< /Title <feff0032002e00320031002e0033002e00200052006500730070006f006e007300650073>
-/Parent 537 0 R
+551 0 obj
+<< /Title <feff0032002e00320031002e0033002e002000500072006f00640075006300650073>
+/Parent 548 0 R
 /Count 0
-/Next 541 0 R
-/Prev 539 0 R
-/Dest [179 0 R /XYZ 0 792.0 null]
+/Prev 550 0 R
+/Dest [180 0 R /XYZ 0 683.16 null]
 >>
 endobj
-541 0 obj
-<< /Title <feff0032002e00320031002e0034002e002000500072006f00640075006300650073>
-/Parent 537 0 R
+552 0 obj
+<< /Title <feff0032002e00320032002e00200047004500540020002f0075007300650072002f0067006500740055007300650072>
+/Parent 452 0 R
+/Count 3
+/First 553 0 R
+/Last 555 0 R
+/Prev 548 0 R
+/Dest [180 0 R /XYZ 0 626.8800000000001 null]
+>>
+endobj
+553 0 obj
+<< /Title <feff0032002e00320032002e0031002e0020004400650073006300720069007000740069006f006e>
+/Parent 552 0 R
 /Count 0
-/Prev 540 0 R
-/Dest [179 0 R /XYZ 0 653.2800000000002 null]
+/Next 554 0 R
+/Dest [180 0 R /XYZ 0 586.8000000000002 null]
 >>
 endobj
-542 0 obj
+554 0 obj
+<< /Title <feff0032002e00320032002e0032002e00200052006500730070006f006e007300650073>
+/Parent 552 0 R
+/Count 0
+/Next 555 0 R
+/Prev 553 0 R
+/Dest [180 0 R /XYZ 0 526.7400000000004 null]
+>>
+endobj
+555 0 obj
+<< /Title <feff0032002e00320032002e0033002e002000500072006f00640075006300650073>
+/Parent 552 0 R
+/Count 0
+/Prev 554 0 R
+/Dest [180 0 R /XYZ 0 421.62000000000035 null]
+>>
+endobj
+556 0 obj
 << /Title <feff004300680061007000740065007200200033002e00200044006500660069006e006900740069006f006e0073>
-/Parent 435 0 R
+/Parent 446 0 R
 /Count 9
-/First 543 0 R
-/Last 551 0 R
-/Prev 441 0 R
-/Dest [183 0 R /XYZ 0 792.0 null]
+/First 557 0 R
+/Last 565 0 R
+/Prev 452 0 R
+/Dest [188 0 R /XYZ 0 792.0 null]
 >>
 endobj
-543 0 obj
+557 0 obj
 << /Title <feff0033002e0031002e00200043006c00640073004500760065006e0074>
-/Parent 542 0 R
+/Parent 556 0 R
 /Count 0
-/Next 544 0 R
-/Dest [183 0 R /XYZ 0 712.0799999999999 null]
+/Next 558 0 R
+/Dest [188 0 R /XYZ 0 712.0799999999999 null]
 >>
 endobj
-544 0 obj
+558 0 obj
 << /Title <feff0033002e0032002e00200043006c00640073004800650061006c007400680043006800650063006b>
-/Parent 542 0 R
+/Parent 556 0 R
 /Count 0
-/Next 545 0 R
-/Prev 543 0 R
-/Dest [183 0 R /XYZ 0 411.35999999999996 null]
+/Next 559 0 R
+/Prev 557 0 R
+/Dest [188 0 R /XYZ 0 411.35999999999996 null]
 >>
 endobj
-545 0 obj
+559 0 obj
 << /Title <feff0033002e0033002e00200043006c006400730049006e0066006f>
-/Parent 542 0 R
+/Parent 556 0 R
 /Count 0
-/Next 546 0 R
-/Prev 544 0 R
-/Dest [183 0 R /XYZ 0 223.31999999999988 null]
+/Next 560 0 R
+/Prev 558 0 R
+/Dest [188 0 R /XYZ 0 223.31999999999988 null]
 >>
 endobj
-546 0 obj
+560 0 obj
 << /Title <feff0033002e0034002e00200043006c00640073004d006f00640065006c>
-/Parent 542 0 R
+/Parent 556 0 R
 /Count 0
-/Next 547 0 R
-/Prev 545 0 R
-/Dest [190 0 R /XYZ 0 570.48 null]
+/Next 561 0 R
+/Prev 559 0 R
+/Dest [195 0 R /XYZ 0 570.48 null]
 >>
 endobj
-547 0 obj
+561 0 obj
 << /Title <feff0033002e0035002e00200043006c00640073004d006f00640065006c0049006e007300740061006e00630065>
-/Parent 542 0 R
+/Parent 556 0 R
 /Count 0
-/Next 548 0 R
-/Prev 546 0 R
-/Dest [195 0 R /XYZ 0 457.8000000000001 null]
+/Next 562 0 R
+/Prev 560 0 R
+/Dest [200 0 R /XYZ 0 457.8000000000001 null]
 >>
 endobj
-548 0 obj
+562 0 obj
 << /Title <feff0033002e0036002e00200043006c00640073004d006f006e00690074006f00720069006e006700440065007400610069006c0073>
-/Parent 542 0 R
+/Parent 556 0 R
 /Count 0
-/Next 549 0 R
-/Prev 547 0 R
-/Dest [195 0 R /XYZ 0 269.76000000000005 null]
+/Next 563 0 R
+/Prev 561 0 R
+/Dest [200 0 R /XYZ 0 269.76000000000005 null]
 >>
 endobj
-549 0 obj
+563 0 obj
 << /Title <feff0033002e0037002e00200043006c0064007300540065006d0070006c006100740065>
-/Parent 542 0 R
+/Parent 556 0 R
 /Count 0
-/Next 550 0 R
-/Prev 548 0 R
-/Dest [199 0 R /XYZ 0 570.48 null]
+/Next 564 0 R
+/Prev 562 0 R
+/Dest [204 0 R /XYZ 0 570.48 null]
 >>
 endobj
-550 0 obj
+564 0 obj
 << /Title <feff0033002e0038002e00200044006300610065004500760065006e0074>
-/Parent 542 0 R
+/Parent 556 0 R
 /Count 0
-/Next 551 0 R
-/Prev 549 0 R
-/Dest [202 0 R /XYZ 0 645.5999999999999 null]
+/Next 565 0 R
+/Prev 563 0 R
+/Dest [207 0 R /XYZ 0 645.5999999999999 null]
 >>
 endobj
-551 0 obj
+565 0 obj
 << /Title <feff0033002e0039002e002000560061006c00750065004900740065006d>
-/Parent 542 0 R
+/Parent 556 0 R
 /Count 0
-/Prev 550 0 R
-/Dest [202 0 R /XYZ 0 307.32 null]
+/Prev 564 0 R
+/Dest [207 0 R /XYZ 0 307.32 null]
 >>
 endobj
-552 0 obj
+566 0 obj
 << /Nums [0 << /P (i)
 >> 1 << /P (ii)
 >> 2 << /P (iii)
@@ -29059,7 +29602,7 @@ endobj
 >>]
 >>
 endobj
-553 0 obj
+567 0 obj
 << /Length1 11712
 /Length 7435
 /Filter [/FlateDecode]
 Í\8c\98'Â(fÍ\r[¼UMmUF\ 6ÅæóõGI5\ 1ç\19Щ\19´\1a-}\16(\ràx^È\16M°Èª`Q²ÒÃ9\15a¾ëWIÇþa{bé\1f\898\1e\eÆÞ|ÿ      ñê\15r-\8aý\867ÈFÛÈñ\7fikÁÕ
 endstream
 endobj
-554 0 obj
+568 0 obj
 << /Type /FontDescriptor
 /FontName /AAAAAA+NotoSerif
-/FontFile2 553 0 R
+/FontFile2 567 0 R
 /FontBBox [-212 -250 1246 1047]
 /Flags 6
 /StemV 0
@@ -29115,7 +29658,7 @@ endobj
 /XHeight 1098
 >>
 endobj
-555 0 obj
+569 0 obj
 << /Length 1286
 /Filter [/FlateDecode]
 >>
 ¿âíJ¼âíJ¼âí\8a¹âíâ¬x»\12¯x»\12¯x\87\90+Þ!Ã\8aw\b¹â\1dB®x\87b®x\87\90\81\ 1ï\10rÅ;àà\1d2äÍkçÎ\9cñ\16J¼Y³e¼Y\86\8c7+|\ e\9cÆ\ 1x\8b\f\19oS\8a\8c7+[Æ\9b\9b×\9ay\1aÞ¢\14\19oVûòæµ\96\v-ã­\8c\8b·é\80"¯åþR¦W\8d*\96Ó4Xq\94êC\99^Jú[(£\ eà®^\12\831»¢\17y]\95¡Èk¹}\14¼YM-x\v¥úëÈVæz\90·ÌþÊ[Y\ fEãV¼Y³ÕÙ_}\ 1\15/7×*¯Y%«ê¯eã­Ó«q+ýÝ:÷Ý.\13â¿7\99\8bÈÛE¡/\893Y(Y\99*A\88W       RõÝV\16JS\83ª\82\18¶á:(u@c¡ðD±]a*Õíf)\15¤9J­ñæ)¥o,\14\1e#Ú\ØZ>M\8d\ fU¡Û\ØjPSã\r{HSãçMª\15\95ôj»\88·\92{fk\94\8c°yGá\89m[z*EïsaëÝ>\17\8a&îÓ«Óúôj%u¼Üî;\v¥2\ 2^\90\9dÆW\ 6Ã[Õßήòvú[\15¾Ïþ2î쯲uú[\95¢³P\9a:ÙçÂVÌ¡§Õ\85>\f¼M\86ÁBi2\f.Ħ\89ÇÜèÔ\87!¯áñdÈk¹`\86¼\96=oÌ\v\91qWÞ\95wdJF(\94L1\176\a4ÞU Ñ)\99x0Eú~\ 1êñZ?\0¾=¶×/·ÛöÄί\ 4\1eÕõ\90~:÷o?$®\97«ÎÒÿ¿\ 1ç\86óO
 endstream
 endobj
-556 0 obj
+570 0 obj
 [259 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 250 310 250 288 559 559 559 559 559 559 559 559 559 559 286 1000 559 1000 559 1000 1000 705 653 613 727 623 1000 713 792 367 1000 700 623 937 763 742 604 1000 655 543 612 716 674 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 562 613 492 613 535 369 538 634 319 299 584 310 944 645 577 613 613 471 451 352 634 579 861 578 564 1000 428 1000 428 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 361 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 259 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000]
 endobj
-557 0 obj
+571 0 obj
 << /Length1 11056
 /Length 7358
 /Filter [/FlateDecode]
 Ö\8e\16\88¹\1a\bYV:\9bÍ0?ôÐLlzkfé\7fÃ\1aȦ·\8b\1f<.]9Ãz\8bø³<&CóV\96²ÿ\ f"e0G
 endstream
 endobj
-558 0 obj
+572 0 obj
 << /Type /FontDescriptor
 /FontName /AAAAAB+NotoSerif-Bold
-/FontFile2 557 0 R
+/FontFile2 571 0 R
 /FontBBox [-212 -250 1306 1058]
 /Flags 6
 /StemV 0
@@ -29176,7 +29719,7 @@ endobj
 /XHeight 1098
 >>
 endobj
-559 0 obj
+573 0 obj
 << /Length 1286
 /Filter [/FlateDecode]
 >>
 ¿âíJ¼âíJ¼âí\8a¹âíâ¬x»\12¯x»\12¯x\87\90+Þ!Ã\8aw\b¹â\1dB®x\87b®x\87\90\81\ 1ï\10rÅ;àà\1d2äÍkçÎ\9cñ\16J¼Y³e¼Y\86\8c7+|\ e\9cÆ\ 1x\8b\f\19oS\8a\8c7+[Æ\9b\9b×\9ay\1aÞ¢\14\19oVûòæµ\96\v-ã­\8c\8b·é\80"¯åþR¦W\8d*\96Ó4Xq\94êC\99^Jú[(£\ eà®^\12\831»¢\17y]\95¡Èk¹}\14¼YM-x\v¥úëÈVæz\90·ÌþÊ[Y\ fEãV¼Y³ÕÙ_}\ 1\15/7×*¯Y%«ê¯eã­Ó«q+ýÝ:÷Ý.\13â¿7\99\8bÈÛE¡/\893Y(Y\99*A\88W       RõÝV\16JS\83ª\82\18¶á:(u@c¡ðD±]a*Õíf)\15¤9J­ñæ)¥o,\14\1e#Ú\ØZ>M\8d\ fU¡Û\ØjPSã\r{HSãçMª\15\95ôj»\88·\92{fk\94\8c°yGá\89m[z*EïsaëÝ>\17\8a&îÓ«Óúôj%u¼Üî;\v¥2\ 2^\90\9dÆW\ 6Ã[Õßήòvú[\15¾Ïþ2î쯲uú[\95¢³P\9a:ÙçÂVÌ¡§Õ\85>\f¼M\86ÁBi2\f.Ħ\89ÇÜèÔ\87!¯áñdÈk¹`\86¼\96=oÌ\v\91qWÞ\95wdJF(\94L1\176\a4ÞU Ñ)\99x0Eú~\ 1êñZ?\0¾=¶×/·ÛöÄί\ 4\1eÕõ\90~:÷o?$®\97«ÎÒÿ¿\ 1ç\86óO
 endstream
 endobj
-560 0 obj
+574 0 obj
 [259 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 310 293 288 559 559 559 559 559 559 559 559 559 559 1000 1000 1000 1000 1000 1000 1000 752 671 667 767 652 1000 769 818 400 1000 1000 653 952 788 787 638 787 707 585 652 747 698 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 599 648 526 648 570 407 560 666 352 1000 636 352 985 666 612 645 1000 522 487 404 666 605 855 645 579 528 441 1000 441 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000]
 endobj
-561 0 obj
+575 0 obj
 << /Length1 4728
 /Length 2891
 /Filter [/FlateDecode]
 ¥ÉçÁ.d'\aù,Ø.`\8dí3\v\91ñ¥¬çKy\94F\8b\10\81ÖímÐ5\ 5¢ðéJ\8a\17\97ç§ñQL¬×2\8aU\8b\9e½\98S]`.\r³û\10)ÁÂË\85|¬ürüM\v°\v+\1c     \9d?3Þ¼¡zò¼\7fS\93äÂ\92wæܳQÁûà\0\a!\97嵸\1fÈ\83ÛÑ\7f\ 1îvX§
 endstream
 endobj
-562 0 obj
+576 0 obj
 << /Type /FontDescriptor
 /FontName /AAAAAC+NotoSerif-Italic
-/FontFile2 561 0 R
+/FontFile2 575 0 R
 /FontBBox [-254 -250 1238 1047]
 /Flags 70
 /StemV 0
@@ -29236,7 +29779,7 @@ endobj
 /XHeight 1098
 >>
 endobj
-563 0 obj
+577 0 obj
 << /Length 1286
 /Filter [/FlateDecode]
 >>
 ¿âíJ¼âíJ¼âí\8a¹âíâ¬x»\12¯x»\12¯x\87\90+Þ!Ã\8aw\b¹â\1dB®x\87b®x\87\90\81\ 1ï\10rÅ;àà\1d2äÍkçÎ\9cñ\16J¼Y³e¼Y\86\8c7+|\ e\9cÆ\ 1x\8b\f\19oS\8a\8c7+[Æ\9b\9b×\9ay\1aÞ¢\14\19oVûòæµ\96\v-ã­\8c\8b·é\80"¯åþR¦W\8d*\96Ó4Xq\94êC\99^Jú[(£\ eà®^\12\831»¢\17y]\95¡Èk¹}\14¼YM-x\v¥úëÈVæz\90·ÌþÊ[Y\ fEãV¼Y³ÕÙ_}\ 1\15/7×*¯Y%«ê¯eã­Ó«q+ýÝ:÷Ý.\13â¿7\99\8bÈÛE¡/\893Y(Y\99*A\88W       RõÝV\16JS\83ª\82\18¶á:(u@c¡ðD±]a*Õíf)\15¤9J­ñæ)¥o,\14\1e#Ú\ØZ>M\8d\ fU¡Û\ØjPSã\r{HSãçMª\15\95ôj»\88·\92{fk\94\8c°yGá\89m[z*EïsaëÝ>\17\8a&îÓ«Óúôj%u¼Üî;\v¥2\ 2^\90\9dÆW\ 6Ã[Õßήòvú[\15¾Ïþ2î쯲uú[\95¢³P\9a:ÙçÂVÌ¡§Õ\85>\f¼M\86ÁBi2\f.Ħ\89ÇÜèÔ\87!¯áñdÈk¹`\86¼\96=oÌ\v\91qWÞ\95wdJF(\94L1\176\a4ÞU Ñ)\99x0Eú~\ 1êñZ?\0¾=¶×/·ÛöÄί\ 4\1eÕõ\90~:÷o?$®\97«ÎÒÿ¿\ 1ç\86óO
 endstream
 endobj
-564 0 obj
+578 0 obj
 [1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 653 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 620 1000 1000 543 1000 1000 674 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 579 1000 486 579 493 1000 1000 599 304 1000 1000 304 895 599 574 577 560 467 463 368 599 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000]
 endobj
-565 0 obj
+579 0 obj
 << /Length1 3412
 /Length 2208
 /Filter [/FlateDecode]
 &l±\8a\ 6=Å­c    0Bÿ/    äØ"Äç\1fÙ\9a        3­²P\12¹ï±²\ 5f\84\9cZäÃÑ=Æ÷hÇ`y\13¼èõù0ø¶\96\8e·43å\ 3Q6G¢Â\11\8a\19iAÁG\95÷F¢ët®\a\12¾uä\91\16\91O\88õÉÆM_Õ\16\91¤T\17\9a¬ì·¤\85\9eu\rý§eâ\8eÿ\ 3&¥®Ð
 endstream
 endobj
-566 0 obj
+580 0 obj
 << /Type /FontDescriptor
 /FontName /AAAAAD+mplus1mn-regular
-/FontFile2 565 0 R
+/FontFile2 579 0 R
 /FontBBox [0 -230 1000 860]
 /Flags 4
 /StemV 0
@@ -29280,7 +29823,7 @@ endobj
 /XHeight 0
 >>
 endobj
-567 0 obj
+581 0 obj
 << /Length 1286
 /Filter [/FlateDecode]
 >>
 ¿âíJ¼âíJ¼âí\8a¹âíâ¬x»\12¯x»\12¯x\87\90+Þ!Ã\8aw\b¹â\1dB®x\87b®x\87\90\81\ 1ï\10rÅ;àà\1d2äÍkçÎ\9cñ\16J¼Y³e¼Y\86\8c7+|\ e\9cÆ\ 1x\8b\f\19oS\8a\8c7+[Æ\9b\9b×\9ay\1aÞ¢\14\19oVûòæµ\96\v-ã­\8c\8b·é\80"¯åþR¦W\8d*\96Ó4Xq\94êC\99^Jú[(£\ eà®^\12\831»¢\17y]\95¡Èk¹}\14¼YM-x\v¥úëÈVæz\90·ÌþÊ[Y\ fEãV¼Y³ÕÙ_}\ 1\15/7×*¯Y%«ê¯eã­Ó«q+ýÝ:÷Ý.\13â¿7\99\8bÈÛE¡/\893Y(Y\99*A\88W       RõÝV\16JS\83ª\82\18¶á:(u@c¡ðD±]a*Õíf)\15¤9J­ñæ)¥o,\14\1e#Ú\ØZ>M\8d\ fU¡Û\ØjPSã\r{HSãçMª\15\95ôj»\88·\92{fk\94\8c°yGá\89m[z*EïsaëÝ>\17\8a&îÓ«Óúôj%u¼Üî;\v¥2\ 2^\90\9dÆW\ 6Ã[Õßήòvú[\15¾Ïþ2î쯲uú[\95¢³P\9a:ÙçÂVÌ¡§Õ\85>\f¼M\86ÁBi2\f.Ħ\89ÇÜèÔ\87!¯áñdÈk¹`\86¼\96=oÌ\v\91qWÞ\95wdJF(\94L1\176\a4ÞU Ñ)\99x0Eú~\ 1êñZ?\0¾=¶×/·ÛöÄί\ 4\1eÕõ\90~:÷o?$®\97«ÎÒÿ¿\ 1ç\86óO
 endstream
 endobj
-568 0 obj
+582 0 obj
 [1000 1000 500 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 500 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 500 1000 500 1000 500 500 1000 1000 500 500 1000 500 500 500 500 500 1000 1000 500 500 1000 1000 1000 500 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000]
 endobj
 xref
-0 569
+0 583
 0000000000 65535 f 
 0000000015 00000 n 
 0000000255 00000 n 
 0000033497 00000 n 
 0000066133 00000 n 
 0000066931 00000 n 
-0000099142 00000 n 
-0000099940 00000 n 
-0000101712 00000 n 
-0000101934 00000 n 
-0000103917 00000 n 
-0000104154 00000 n 
-0000104197 00000 n 
-0000104246 00000 n 
-0000104336 00000 n 
-0000104509 00000 n 
-0000104564 00000 n 
-0000104739 00000 n 
-0000104783 00000 n 
-0000121287 00000 n 
-0000121568 00000 n 
-0000121611 00000 n 
-0000121666 00000 n 
-0000121709 00000 n 
-0000121764 00000 n 
-0000121912 00000 n 
-0000121968 00000 n 
-0000122126 00000 n 
-0000122283 00000 n 
-0000122339 00000 n 
-0000122514 00000 n 
-0000122570 00000 n 
-0000122625 00000 n 
-0000122680 00000 n 
-0000140754 00000 n 
-0000141042 00000 n 
-0000141211 00000 n 
-0000141380 00000 n 
-0000141423 00000 n 
-0000141478 00000 n 
-0000141533 00000 n 
-0000141699 00000 n 
-0000141755 00000 n 
-0000141810 00000 n 
-0000141865 00000 n 
-0000141920 00000 n 
-0000142078 00000 n 
-0000142134 00000 n 
-0000156257 00000 n 
-0000156538 00000 n 
-0000156581 00000 n 
-0000157033 00000 n 
-0000157450 00000 n 
-0000157505 00000 n 
-0000157560 00000 n 
-0000157615 00000 n 
-0000157762 00000 n 
-0000157818 00000 n 
-0000157975 00000 n 
-0000158133 00000 n 
-0000158188 00000 n 
-0000158243 00000 n 
-0000158299 00000 n 
-0000158355 00000 n 
-0000158411 00000 n 
-0000174144 00000 n 
-0000174425 00000 n 
-0000174587 00000 n 
-0000174739 00000 n 
-0000174783 00000 n 
-0000174838 00000 n 
-0000174893 00000 n 
-0000174948 00000 n 
-0000175115 00000 n 
-0000175170 00000 n 
-0000175226 00000 n 
-0000175281 00000 n 
-0000175337 00000 n 
-0000175393 00000 n 
-0000175691 00000 n 
-0000189125 00000 n 
-0000189375 00000 n 
-0000189430 00000 n 
-0000189485 00000 n 
-0000189540 00000 n 
-0000189595 00000 n 
-0000189651 00000 n 
-0000189706 00000 n 
-0000189762 00000 n 
-0000190371 00000 n 
-0000190427 00000 n 
-0000190483 00000 n 
-0000208613 00000 n 
-0000208898 00000 n 
-0000208955 00000 n 
-0000209113 00000 n 
-0000209170 00000 n 
-0000209227 00000 n 
-0000209285 00000 n 
-0000209343 00000 n 
-0000209491 00000 n 
-0000209549 00000 n 
-0000209709 00000 n 
-0000209767 00000 n 
-0000209824 00000 n 
-0000226351 00000 n 
-0000226603 00000 n 
-0000226648 00000 n 
-0000226694 00000 n 
-0000226751 00000 n 
-0000226808 00000 n 
-0000226866 00000 n 
-0000226923 00000 n 
-0000226980 00000 n 
-0000227037 00000 n 
-0000227095 00000 n 
-0000243753 00000 n 
-0000244039 00000 n 
-0000244084 00000 n 
-0000244130 00000 n 
-0000244620 00000 n 
-0000244677 00000 n 
-0000244734 00000 n 
-0000244792 00000 n 
-0000244849 00000 n 
-0000244996 00000 n 
-0000245053 00000 n 
-0000245211 00000 n 
-0000245369 00000 n 
-0000245426 00000 n 
-0000245484 00000 n 
-0000245936 00000 n 
-0000259792 00000 n 
-0000260062 00000 n 
-0000260107 00000 n 
-0000260153 00000 n 
-0000260210 00000 n 
-0000260712 00000 n 
-0000260878 00000 n 
-0000260935 00000 n 
-0000260993 00000 n 
-0000261050 00000 n 
-0000261107 00000 n 
-0000261165 00000 n 
-0000261223 00000 n 
-0000277768 00000 n 
-0000278038 00000 n 
-0000278083 00000 n 
-0000278129 00000 n 
-0000278186 00000 n 
-0000278243 00000 n 
-0000278300 00000 n 
-0000278358 00000 n 
-0000278415 00000 n 
-0000278472 00000 n 
-0000278529 00000 n 
-0000278699 00000 n 
-0000294259 00000 n 
-0000294537 00000 n 
-0000294582 00000 n 
-0000294639 00000 n 
-0000294696 00000 n 
-0000294753 00000 n 
-0000294915 00000 n 
-0000294973 00000 n 
-0000295144 00000 n 
-0000295201 00000 n 
-0000295258 00000 n 
-0000295316 00000 n 
-0000295374 00000 n 
-0000295431 00000 n 
-0000299525 00000 n 
-0000299764 00000 n 
-0000299809 00000 n 
-0000299866 00000 n 
-0000316381 00000 n 
-0000316620 00000 n 
-0000316665 00000 n 
-0000316722 00000 n 
-0000316780 00000 n 
-0000317222 00000 n 
-0000317280 00000 n 
-0000338573 00000 n 
-0000338838 00000 n 
-0000338884 00000 n 
-0000339040 00000 n 
-0000339190 00000 n 
-0000358782 00000 n 
-0000359021 00000 n 
-0000359078 00000 n 
-0000359136 00000 n 
-0000379724 00000 n 
-0000379963 00000 n 
-0000380009 00000 n 
-0000395373 00000 n 
-0000395630 00000 n 
-0000395687 00000 n 
-0000395834 00000 n 
-0000395880 00000 n 
-0000396024 00000 n 
-0000396169 00000 n 
-0000396334 00000 n 
-0000396490 00000 n 
-0000396648 00000 n 
-0000396795 00000 n 
-0000396957 00000 n 
-0000397099 00000 n 
-0000397279 00000 n 
-0000397448 00000 n 
-0000397617 00000 n 
-0000397765 00000 n 
-0000397933 00000 n 
-0000398080 00000 n 
-0000398237 00000 n 
-0000398383 00000 n 
-0000398538 00000 n 
-0000398683 00000 n 
-0000398839 00000 n 
-0000398984 00000 n 
-0000399152 00000 n 
-0000399310 00000 n 
-0000399470 00000 n 
-0000399619 00000 n 
-0000399777 00000 n 
-0000399924 00000 n 
-0000400100 00000 n 
-0000400255 00000 n 
-0000400415 00000 n 
-0000400564 00000 n 
-0000400724 00000 n 
-0000400873 00000 n 
-0000401052 00000 n 
-0000401210 00000 n 
-0000401381 00000 n 
-0000401531 00000 n 
-0000401701 00000 n 
-0000401850 00000 n 
-0000402010 00000 n 
-0000402159 00000 n 
-0000402318 00000 n 
-0000402467 00000 n 
-0000402626 00000 n 
-0000402774 00000 n 
-0000402958 00000 n 
-0000403121 00000 n 
-0000403291 00000 n 
-0000403440 00000 n 
-0000403601 00000 n 
-0000403751 00000 n 
-0000403910 00000 n 
-0000404059 00000 n 
-0000404217 00000 n 
-0000404364 00000 n 
-0000404542 00000 n 
-0000404699 00000 n 
-0000404870 00000 n 
-0000405020 00000 n 
-0000405181 00000 n 
-0000405331 00000 n 
-0000405491 00000 n 
-0000405640 00000 n 
-0000405820 00000 n 
-0000405979 00000 n 
-0000406152 00000 n 
-0000406304 00000 n 
-0000406464 00000 n 
-0000406613 00000 n 
-0000406771 00000 n 
-0000406918 00000 n 
-0000407095 00000 n 
-0000407261 00000 n 
-0000407420 00000 n 
-0000407558 00000 n 
-0000407717 00000 n 
-0000407855 00000 n 
-0000408003 00000 n 
-0000408140 00000 n 
-0000408287 00000 n 
-0000408423 00000 n 
-0000408611 00000 n 
-0000408778 00000 n 
-0000408949 00000 n 
-0000409099 00000 n 
-0000409269 00000 n 
-0000409418 00000 n 
-0000409577 00000 n 
-0000409725 00000 n 
-0000409883 00000 n 
-0000410030 00000 n 
-0000410212 00000 n 
-0000410373 00000 n 
-0000410544 00000 n 
-0000410694 00000 n 
-0000410864 00000 n 
-0000411013 00000 n 
-0000411172 00000 n 
-0000411321 00000 n 
-0000411490 00000 n 
-0000411638 00000 n 
-0000411821 00000 n 
-0000411983 00000 n 
-0000412155 00000 n 
-0000412306 00000 n 
-0000412477 00000 n 
-0000412627 00000 n 
-0000412786 00000 n 
-0000412935 00000 n 
-0000413093 00000 n 
-0000413240 00000 n 
-0000413410 00000 n 
-0000413559 00000 n 
-0000413727 00000 n 
-0000413885 00000 n 
-0000414057 00000 n 
-0000414208 00000 n 
-0000414367 00000 n 
-0000414516 00000 n 
-0000414685 00000 n 
-0000414833 00000 n 
-0000415021 00000 n 
-0000415199 00000 n 
-0000415372 00000 n 
-0000415524 00000 n 
-0000415695 00000 n 
-0000415845 00000 n 
-0000416004 00000 n 
-0000416153 00000 n 
-0000416324 00000 n 
-0000416474 00000 n 
-0000416644 00000 n 
-0000416804 00000 n 
-0000416978 00000 n 
-0000417131 00000 n 
-0000417292 00000 n 
-0000417443 00000 n 
-0000417614 00000 n 
-0000417764 00000 n 
-0000417951 00000 n 
-0000418117 00000 n 
-0000418289 00000 n 
-0000418440 00000 n 
-0000418600 00000 n 
-0000418750 00000 n 
-0000418906 00000 n 
-0000419051 00000 n 
-0000419220 00000 n 
-0000419368 00000 n 
-0000419530 00000 n 
-0000419684 00000 n 
-0000419845 00000 n 
-0000419984 00000 n 
-0000420132 00000 n 
-0000420269 00000 n 
-0000420427 00000 n 
-0000420563 00000 n 
-0000420761 00000 n 
-0000420939 00000 n 
-0000421111 00000 n 
-0000421261 00000 n 
-0000421432 00000 n 
-0000421581 00000 n 
-0000421740 00000 n 
-0000421888 00000 n 
-0000422057 00000 n 
-0000422204 00000 n 
-0000422405 00000 n 
-0000422584 00000 n 
-0000422756 00000 n 
-0000422906 00000 n 
-0000423077 00000 n 
-0000423226 00000 n 
-0000423385 00000 n 
-0000423533 00000 n 
-0000423702 00000 n 
-0000423849 00000 n 
-0000424043 00000 n 
-0000424217 00000 n 
-0000424390 00000 n 
-0000424541 00000 n 
-0000424713 00000 n 
-0000424863 00000 n 
-0000425022 00000 n 
-0000425170 00000 n 
-0000425339 00000 n 
-0000425486 00000 n 
-0000425680 00000 n 
-0000425854 00000 n 
-0000426028 00000 n 
-0000426180 00000 n 
-0000426352 00000 n 
-0000426502 00000 n 
-0000426661 00000 n 
-0000426809 00000 n 
-0000426967 00000 n 
-0000427113 00000 n 
-0000427283 00000 n 
-0000427431 00000 n 
-0000427597 00000 n 
-0000427751 00000 n 
-0000427924 00000 n 
-0000428075 00000 n 
-0000428246 00000 n 
-0000428395 00000 n 
-0000428556 00000 n 
-0000428706 00000 n 
-0000428877 00000 n 
-0000429026 00000 n 
-0000429197 00000 n 
-0000429346 00000 n 
-0000429504 00000 n 
-0000429651 00000 n 
-0000429826 00000 n 
-0000429979 00000 n 
-0000430147 00000 n 
-0000430293 00000 n 
-0000430462 00000 n 
-0000430609 00000 n 
-0000430785 00000 n 
-0000430939 00000 n 
-0000431104 00000 n 
-0000431259 00000 n 
-0000431429 00000 n 
-0000431577 00000 n 
-0000431710 00000 n 
-0000431843 00000 n 
-0000431999 00000 n 
-0000432133 00000 n 
-0000432418 00000 n 
-0000432497 00000 n 
-0000432625 00000 n 
-0000432816 00000 n 
-0000433044 00000 n 
-0000433261 00000 n 
-0000433431 00000 n 
-0000433649 00000 n 
-0000433967 00000 n 
-0000434148 00000 n 
-0000434351 00000 n 
-0000434551 00000 n 
-0000434747 00000 n 
-0000434929 00000 n 
-0000435197 00000 n 
-0000435382 00000 n 
-0000435551 00000 n 
-0000435807 00000 n 
-0000435992 00000 n 
-0000436174 00000 n 
-0000436442 00000 n 
-0000436635 00000 n 
-0000436838 00000 n 
-0000437038 00000 n 
-0000437221 00000 n 
-0000437402 00000 n 
-0000437698 00000 n 
-0000437887 00000 n 
-0000438087 00000 n 
-0000438282 00000 n 
-0000438463 00000 n 
-0000438732 00000 n 
-0000438926 00000 n 
-0000439126 00000 n 
-0000439296 00000 n 
-0000439564 00000 n 
-0000439757 00000 n 
-0000439956 00000 n 
-0000440137 00000 n 
-0000440450 00000 n 
-0000440643 00000 n 
+0000099124 00000 n 
+0000099922 00000 n 
+0000104234 00000 n 
+0000104504 00000 n 
+0000106487 00000 n 
+0000106724 00000 n 
+0000106767 00000 n 
+0000106816 00000 n 
+0000106906 00000 n 
+0000107079 00000 n 
+0000107134 00000 n 
+0000107309 00000 n 
+0000107353 00000 n 
+0000123857 00000 n 
+0000124138 00000 n 
+0000124181 00000 n 
+0000124236 00000 n 
+0000124279 00000 n 
+0000124334 00000 n 
+0000124482 00000 n 
+0000124538 00000 n 
+0000124696 00000 n 
+0000124853 00000 n 
+0000124909 00000 n 
+0000125084 00000 n 
+0000125140 00000 n 
+0000125195 00000 n 
+0000125250 00000 n 
+0000143324 00000 n 
+0000143612 00000 n 
+0000143781 00000 n 
+0000143950 00000 n 
+0000143993 00000 n 
+0000144048 00000 n 
+0000144103 00000 n 
+0000144269 00000 n 
+0000144325 00000 n 
+0000144380 00000 n 
+0000144435 00000 n 
+0000144490 00000 n 
+0000144648 00000 n 
+0000144704 00000 n 
+0000158827 00000 n 
+0000159108 00000 n 
+0000159151 00000 n 
+0000159603 00000 n 
+0000159995 00000 n 
+0000160050 00000 n 
+0000160105 00000 n 
+0000160160 00000 n 
+0000160307 00000 n 
+0000160363 00000 n 
+0000160520 00000 n 
+0000160678 00000 n 
+0000160733 00000 n 
+0000160788 00000 n 
+0000160844 00000 n 
+0000160900 00000 n 
+0000160956 00000 n 
+0000176689 00000 n 
+0000176970 00000 n 
+0000177132 00000 n 
+0000177284 00000 n 
+0000177328 00000 n 
+0000177383 00000 n 
+0000177438 00000 n 
+0000177493 00000 n 
+0000177660 00000 n 
+0000177715 00000 n 
+0000177771 00000 n 
+0000177826 00000 n 
+0000177882 00000 n 
+0000177938 00000 n 
+0000178236 00000 n 
+0000191670 00000 n 
+0000191920 00000 n 
+0000191975 00000 n 
+0000192030 00000 n 
+0000192085 00000 n 
+0000192140 00000 n 
+0000192196 00000 n 
+0000192251 00000 n 
+0000192307 00000 n 
+0000192916 00000 n 
+0000192972 00000 n 
+0000193028 00000 n 
+0000211158 00000 n 
+0000211443 00000 n 
+0000211500 00000 n 
+0000211658 00000 n 
+0000211715 00000 n 
+0000211772 00000 n 
+0000211830 00000 n 
+0000211888 00000 n 
+0000212036 00000 n 
+0000212094 00000 n 
+0000212254 00000 n 
+0000212312 00000 n 
+0000212369 00000 n 
+0000228896 00000 n 
+0000229148 00000 n 
+0000229193 00000 n 
+0000229239 00000 n 
+0000229296 00000 n 
+0000229353 00000 n 
+0000229411 00000 n 
+0000229468 00000 n 
+0000229525 00000 n 
+0000229582 00000 n 
+0000229640 00000 n 
+0000246298 00000 n 
+0000246584 00000 n 
+0000246629 00000 n 
+0000246675 00000 n 
+0000247218 00000 n 
+0000247275 00000 n 
+0000247332 00000 n 
+0000247390 00000 n 
+0000247447 00000 n 
+0000247594 00000 n 
+0000247651 00000 n 
+0000247809 00000 n 
+0000247967 00000 n 
+0000248024 00000 n 
+0000248082 00000 n 
+0000248557 00000 n 
+0000262413 00000 n 
+0000262683 00000 n 
+0000262728 00000 n 
+0000262774 00000 n 
+0000262831 00000 n 
+0000263356 00000 n 
+0000263522 00000 n 
+0000263579 00000 n 
+0000263637 00000 n 
+0000263694 00000 n 
+0000263751 00000 n 
+0000263809 00000 n 
+0000263867 00000 n 
+0000280412 00000 n 
+0000280682 00000 n 
+0000280727 00000 n 
+0000280773 00000 n 
+0000280830 00000 n 
+0000280887 00000 n 
+0000280944 00000 n 
+0000281002 00000 n 
+0000281059 00000 n 
+0000281116 00000 n 
+0000281173 00000 n 
+0000281343 00000 n 
+0000297069 00000 n 
+0000297355 00000 n 
+0000297400 00000 n 
+0000297457 00000 n 
+0000297514 00000 n 
+0000297571 00000 n 
+0000297733 00000 n 
+0000297791 00000 n 
+0000297962 00000 n 
+0000298019 00000 n 
+0000298076 00000 n 
+0000298134 00000 n 
+0000298192 00000 n 
+0000298249 00000 n 
+0000298422 00000 n 
+0000307138 00000 n 
+0000307395 00000 n 
+0000307558 00000 n 
+0000307604 00000 n 
+0000307661 00000 n 
+0000307718 00000 n 
+0000307775 00000 n 
+0000307833 00000 n 
+0000324348 00000 n 
+0000324587 00000 n 
+0000324632 00000 n 
+0000324689 00000 n 
+0000324747 00000 n 
+0000325189 00000 n 
+0000325247 00000 n 
+0000346540 00000 n 
+0000346805 00000 n 
+0000346851 00000 n 
+0000347007 00000 n 
+0000347157 00000 n 
+0000366749 00000 n 
+0000366988 00000 n 
+0000367045 00000 n 
+0000367103 00000 n 
+0000387691 00000 n 
+0000387930 00000 n 
+0000387976 00000 n 
+0000403340 00000 n 
+0000403597 00000 n 
+0000403654 00000 n 
+0000403801 00000 n 
+0000403847 00000 n 
+0000403991 00000 n 
+0000404136 00000 n 
+0000404301 00000 n 
+0000404457 00000 n 
+0000404615 00000 n 
+0000404762 00000 n 
+0000404924 00000 n 
+0000405066 00000 n 
+0000405246 00000 n 
+0000405415 00000 n 
+0000405584 00000 n 
+0000405732 00000 n 
+0000405900 00000 n 
+0000406047 00000 n 
+0000406204 00000 n 
+0000406350 00000 n 
+0000406505 00000 n 
+0000406650 00000 n 
+0000406806 00000 n 
+0000406951 00000 n 
+0000407119 00000 n 
+0000407277 00000 n 
+0000407437 00000 n 
+0000407586 00000 n 
+0000407744 00000 n 
+0000407891 00000 n 
+0000408067 00000 n 
+0000408222 00000 n 
+0000408382 00000 n 
+0000408531 00000 n 
+0000408691 00000 n 
+0000408840 00000 n 
+0000409019 00000 n 
+0000409177 00000 n 
+0000409348 00000 n 
+0000409498 00000 n 
+0000409668 00000 n 
+0000409817 00000 n 
+0000409977 00000 n 
+0000410126 00000 n 
+0000410285 00000 n 
+0000410434 00000 n 
+0000410593 00000 n 
+0000410741 00000 n 
+0000410925 00000 n 
+0000411088 00000 n 
+0000411258 00000 n 
+0000411407 00000 n 
+0000411568 00000 n 
+0000411718 00000 n 
+0000411877 00000 n 
+0000412026 00000 n 
+0000412184 00000 n 
+0000412331 00000 n 
+0000412509 00000 n 
+0000412666 00000 n 
+0000412837 00000 n 
+0000412987 00000 n 
+0000413148 00000 n 
+0000413298 00000 n 
+0000413458 00000 n 
+0000413607 00000 n 
+0000413787 00000 n 
+0000413946 00000 n 
+0000414119 00000 n 
+0000414271 00000 n 
+0000414431 00000 n 
+0000414580 00000 n 
+0000414738 00000 n 
+0000414885 00000 n 
+0000415062 00000 n 
+0000415228 00000 n 
+0000415387 00000 n 
+0000415525 00000 n 
+0000415684 00000 n 
+0000415822 00000 n 
+0000415970 00000 n 
+0000416107 00000 n 
+0000416254 00000 n 
+0000416390 00000 n 
+0000416578 00000 n 
+0000416745 00000 n 
+0000416916 00000 n 
+0000417066 00000 n 
+0000417236 00000 n 
+0000417385 00000 n 
+0000417544 00000 n 
+0000417692 00000 n 
+0000417850 00000 n 
+0000417997 00000 n 
+0000418179 00000 n 
+0000418340 00000 n 
+0000418511 00000 n 
+0000418661 00000 n 
+0000418831 00000 n 
+0000418980 00000 n 
+0000419139 00000 n 
+0000419288 00000 n 
+0000419457 00000 n 
+0000419605 00000 n 
+0000419788 00000 n 
+0000419950 00000 n 
+0000420122 00000 n 
+0000420273 00000 n 
+0000420444 00000 n 
+0000420594 00000 n 
+0000420753 00000 n 
+0000420902 00000 n 
+0000421060 00000 n 
+0000421207 00000 n 
+0000421377 00000 n 
+0000421526 00000 n 
+0000421694 00000 n 
+0000421852 00000 n 
+0000422024 00000 n 
+0000422175 00000 n 
+0000422334 00000 n 
+0000422483 00000 n 
+0000422652 00000 n 
+0000422800 00000 n 
+0000422988 00000 n 
+0000423166 00000 n 
+0000423339 00000 n 
+0000423491 00000 n 
+0000423662 00000 n 
+0000423812 00000 n 
+0000423971 00000 n 
+0000424120 00000 n 
+0000424291 00000 n 
+0000424441 00000 n 
+0000424611 00000 n 
+0000424771 00000 n 
+0000424945 00000 n 
+0000425098 00000 n 
+0000425259 00000 n 
+0000425410 00000 n 
+0000425581 00000 n 
+0000425731 00000 n 
+0000425918 00000 n 
+0000426084 00000 n 
+0000426256 00000 n 
+0000426407 00000 n 
+0000426567 00000 n 
+0000426717 00000 n 
+0000426873 00000 n 
+0000427018 00000 n 
+0000427187 00000 n 
+0000427335 00000 n 
+0000427497 00000 n 
+0000427651 00000 n 
+0000427812 00000 n 
+0000427951 00000 n 
+0000428099 00000 n 
+0000428236 00000 n 
+0000428394 00000 n 
+0000428530 00000 n 
+0000428728 00000 n 
+0000428906 00000 n 
+0000429078 00000 n 
+0000429228 00000 n 
+0000429399 00000 n 
+0000429548 00000 n 
+0000429707 00000 n 
+0000429855 00000 n 
+0000430024 00000 n 
+0000430171 00000 n 
+0000430372 00000 n 
+0000430551 00000 n 
+0000430723 00000 n 
+0000430873 00000 n 
+0000431044 00000 n 
+0000431193 00000 n 
+0000431352 00000 n 
+0000431500 00000 n 
+0000431669 00000 n 
+0000431816 00000 n 
+0000432010 00000 n 
+0000432184 00000 n 
+0000432357 00000 n 
+0000432508 00000 n 
+0000432680 00000 n 
+0000432830 00000 n 
+0000432989 00000 n 
+0000433137 00000 n 
+0000433306 00000 n 
+0000433453 00000 n 
+0000433647 00000 n 
+0000433821 00000 n 
+0000433995 00000 n 
+0000434147 00000 n 
+0000434319 00000 n 
+0000434469 00000 n 
+0000434628 00000 n 
+0000434776 00000 n 
+0000434934 00000 n 
+0000435080 00000 n 
+0000435250 00000 n 
+0000435398 00000 n 
+0000435572 00000 n 
+0000435724 00000 n 
+0000435897 00000 n 
+0000436048 00000 n 
+0000436207 00000 n 
+0000436355 00000 n 
+0000436526 00000 n 
+0000436675 00000 n 
+0000436840 00000 n 
+0000436994 00000 n 
+0000437168 00000 n 
+0000437320 00000 n 
+0000437481 00000 n 
+0000437631 00000 n 
+0000437802 00000 n 
+0000437951 00000 n 
+0000438122 00000 n 
+0000438271 00000 n 
+0000438429 00000 n 
+0000438576 00000 n 
+0000438750 00000 n 
+0000438902 00000 n 
+0000439066 00000 n 
+0000439208 00000 n 
+0000439375 00000 n 
+0000439520 00000 n 
+0000439661 00000 n 
+0000439802 00000 n 
+0000439958 00000 n 
+0000440104 00000 n 
+0000440263 00000 n 
+0000440400 00000 n 
+0000440546 00000 n 
+0000440680 00000 n 
 0000440847 00000 n 
-0000441047 00000 n 
-0000441228 00000 n 
-0000441544 00000 n 
-0000441737 00000 n 
-0000441940 00000 n 
-0000442140 00000 n 
-0000442321 00000 n 
-0000442618 00000 n 
-0000442816 00000 n 
-0000443024 00000 n 
-0000443228 00000 n 
-0000443414 00000 n 
-0000443711 00000 n 
-0000443910 00000 n 
-0000444119 00000 n 
-0000444324 00000 n 
-0000444525 00000 n 
-0000444711 00000 n 
-0000444968 00000 n 
-0000445155 00000 n 
-0000445359 00000 n 
-0000445545 00000 n 
-0000445907 00000 n 
-0000446105 00000 n 
-0000446313 00000 n 
-0000446517 00000 n 
-0000446704 00000 n 
-0000446969 00000 n 
-0000447156 00000 n 
-0000447360 00000 n 
-0000447546 00000 n 
-0000447856 00000 n 
-0000448050 00000 n 
-0000448254 00000 n 
-0000448454 00000 n 
-0000448641 00000 n 
-0000448942 00000 n 
-0000449129 00000 n 
-0000449333 00000 n 
-0000449519 00000 n 
-0000449889 00000 n 
+0000440992 00000 n 
+0000441277 00000 n 
+0000441356 00000 n 
+0000441484 00000 n 
+0000441675 00000 n 
+0000441903 00000 n 
+0000442120 00000 n 
+0000442290 00000 n 
+0000442508 00000 n 
+0000442826 00000 n 
+0000443007 00000 n 
+0000443210 00000 n 
+0000443410 00000 n 
+0000443606 00000 n 
+0000443788 00000 n 
+0000444056 00000 n 
+0000444241 00000 n 
+0000444410 00000 n 
+0000444666 00000 n 
+0000444851 00000 n 
+0000445033 00000 n 
+0000445301 00000 n 
+0000445494 00000 n 
+0000445697 00000 n 
+0000445897 00000 n 
+0000446080 00000 n 
+0000446261 00000 n 
+0000446557 00000 n 
+0000446746 00000 n 
+0000446946 00000 n 
+0000447141 00000 n 
+0000447322 00000 n 
+0000447591 00000 n 
+0000447785 00000 n 
+0000447985 00000 n 
+0000448155 00000 n 
+0000448423 00000 n 
+0000448616 00000 n 
+0000448815 00000 n 
+0000448996 00000 n 
+0000449309 00000 n 
+0000449502 00000 n 
+0000449706 00000 n 
+0000449906 00000 n 
 0000450087 00000 n 
-0000450295 00000 n 
-0000450500 00000 n 
-0000450687 00000 n 
-0000451048 00000 n 
-0000451235 00000 n 
-0000451443 00000 n 
-0000451647 00000 n 
-0000451833 00000 n 
-0000452183 00000 n 
-0000452381 00000 n 
-0000452589 00000 n 
-0000452793 00000 n 
-0000452967 00000 n 
-0000453316 00000 n 
-0000453514 00000 n 
-0000453722 00000 n 
-0000453927 00000 n 
-0000454127 00000 n 
-0000454313 00000 n 
-0000454569 00000 n 
-0000454768 00000 n 
-0000454976 00000 n 
-0000455168 00000 n 
-0000455354 00000 n 
-0000455581 00000 n 
-0000455759 00000 n 
-0000455976 00000 n 
-0000456165 00000 n 
-0000456346 00000 n 
-0000456570 00000 n 
-0000456811 00000 n 
-0000457004 00000 n 
-0000457196 00000 n 
-0000457363 00000 n 
-0000457765 00000 n 
-0000465292 00000 n 
-0000465508 00000 n 
-0000466871 00000 n 
-0000467944 00000 n 
-0000475394 00000 n 
-0000475615 00000 n 
-0000476978 00000 n 
-0000478058 00000 n 
-0000481040 00000 n 
-0000481266 00000 n 
-0000482629 00000 n 
-0000483748 00000 n 
-0000486047 00000 n 
-0000486261 00000 n 
-0000487624 00000 n 
+0000450403 00000 n 
+0000450596 00000 n 
+0000450799 00000 n 
+0000450999 00000 n 
+0000451180 00000 n 
+0000451477 00000 n 
+0000451675 00000 n 
+0000451883 00000 n 
+0000452087 00000 n 
+0000452273 00000 n 
+0000452570 00000 n 
+0000452769 00000 n 
+0000452978 00000 n 
+0000453183 00000 n 
+0000453384 00000 n 
+0000453570 00000 n 
+0000453827 00000 n 
+0000454014 00000 n 
+0000454218 00000 n 
+0000454404 00000 n 
+0000454766 00000 n 
+0000454964 00000 n 
+0000455172 00000 n 
+0000455376 00000 n 
+0000455563 00000 n 
+0000455828 00000 n 
+0000456015 00000 n 
+0000456219 00000 n 
+0000456405 00000 n 
+0000456715 00000 n 
+0000456909 00000 n 
+0000457113 00000 n 
+0000457313 00000 n 
+0000457500 00000 n 
+0000457801 00000 n 
+0000457988 00000 n 
+0000458192 00000 n 
+0000458378 00000 n 
+0000458748 00000 n 
+0000458946 00000 n 
+0000459154 00000 n 
+0000459359 00000 n 
+0000459546 00000 n 
+0000459907 00000 n 
+0000460094 00000 n 
+0000460302 00000 n 
+0000460506 00000 n 
+0000460692 00000 n 
+0000461042 00000 n 
+0000461240 00000 n 
+0000461448 00000 n 
+0000461652 00000 n 
+0000461826 00000 n 
+0000462175 00000 n 
+0000462373 00000 n 
+0000462581 00000 n 
+0000462786 00000 n 
+0000462986 00000 n 
+0000463172 00000 n 
+0000463426 00000 n 
+0000463625 00000 n 
+0000463829 00000 n 
+0000464004 00000 n 
+0000464247 00000 n 
+0000464445 00000 n 
+0000464649 00000 n 
+0000464836 00000 n 
+0000465063 00000 n 
+0000465241 00000 n 
+0000465458 00000 n 
+0000465647 00000 n 
+0000465828 00000 n 
+0000466052 00000 n 
+0000466293 00000 n 
+0000466486 00000 n 
+0000466678 00000 n 
+0000466845 00000 n 
+0000467247 00000 n 
+0000474774 00000 n 
+0000474990 00000 n 
+0000476353 00000 n 
+0000477426 00000 n 
+0000484876 00000 n 
+0000485097 00000 n 
+0000486460 00000 n 
+0000487540 00000 n 
+0000490522 00000 n 
+0000490748 00000 n 
+0000492111 00000 n 
+0000493230 00000 n 
+0000495529 00000 n 
+0000495743 00000 n 
+0000497106 00000 n 
 trailer
-<< /Size 569
+<< /Size 583
 /Root 2 0 R
 /Info 1 0 R
 >>
 startxref
-488747
+498229
 %%EOF
diff --git a/pom.xml b/pom.xml
index bc863d4..7c54086 100644 (file)
--- a/pom.xml
+++ b/pom.xml
@@ -71,7 +71,7 @@
                                <guava.version>20.0</guava.version>
                                <eelf.core.version>1.0.0</eelf.core.version>
                                <camel.version>2.20.1</camel.version>
-                               <springboot.version>1.5.12.RELEASE</springboot.version>
+                               <springboot.version>1.5.14.RELEASE</springboot.version>
 
                                <sonar.language>java</sonar.language>
                                <sonar.java.coveragePlugin>jacoco</sonar.java.coveragePlugin>
@@ -82,6 +82,7 @@
                                <sonar.projectVersion>${project.version}</sonar.projectVersion>
 
                                <docker.push.registry>localhost:5000</docker.push.registry>
+                               <docker.pull.registry>nexus3.onap.org:10001</docker.pull.registry>
                                <docker.skip.build>true</docker.skip.build>
                                <docker.skip.push>true</docker.skip.push>
                                <docker.skip.tag>true</docker.skip.tag>
                                <tomcat.version>8.5.28</tomcat.version>
                </properties>
 
+               <profiles>
+                               <profile>
+                                               <id>without-test</id>
+                                               <activation>
+                                                       <property>
+                                                               <name>maven.test.skip</name>
+                                                               <value>true</value>
+                                                       </property>
+                                               </activation>
+                                               <properties>
+                                                       <docker.skip.run>true</docker.skip.run>
+                                               </properties>
+                               </profile>
+                               <profile>
+                                               <id>without-IT-only</id>
+                                               <activation>
+                                                       <property>
+                                                               <name>skipITs</name>
+                                                               <value>true</value>
+                                                       </property>
+                                               </activation>
+                                               <properties>
+                                                       <docker.skip.run>true</docker.skip.run>
+                                               </properties>
+                               </profile>
+                               <profile>
+                                               <id>without-IT-only2</id>
+                                               <activation>
+                                                       <property>
+                                                               <name>skipTests</name>
+                                                               <value>true</value>
+                                                       </property>
+                                               </activation>
+                                               <properties>
+                                                       <docker.skip.run>true</docker.skip.run>
+                                               </properties>
+                               </profile>
+                               <profile>
+                                               <id>docker</id>
+                                               <properties>
+                                                               <skip.staging.artifacts>true</skip.staging.artifacts>
+                                                               <docker.skip.build>false</docker.skip.build>
+                                                               <docker.skip.tag>false</docker.skip.tag>
+                                                               <docker.skip.push>false</docker.skip.push>
+                                               </properties>
+                               </profile>
+               </profiles>
+
                <distributionManagement>
                                <repository>
                                                <id>ecomp-releases</id>
                                                                                <artifactId>commons-io</artifactId>
                                                                </exclusion>
                                                                <exclusion>
-                                                                               <artifactId>grizzly-http</artifactId>
+                                                                               <artifactId>grizzly-http-server</artifactId>
                                                                                <groupId>org.glassfish.grizzly</groupId>
                                                                </exclusion>
                                                </exclusions>
                                                                                <groupId>com.att.nsa</groupId>
                                                                                <artifactId>dmaapClient</artifactId>
                                                                </exclusion>
+                                                               <exclusion>
+                                                                               <groupId>com.h2database</groupId>
+                                                                               <artifactId>h2</artifactId>
+                                                               </exclusion>
                                                </exclusions>
                                </dependency>
                                <dependency>
                                                <plugin>
                                                                <groupId>org.springframework.boot</groupId>
                                                                <artifactId>spring-boot-maven-plugin</artifactId>
-                                                               <version>${springboot.version}</version>
+                                                               <!-- Temporary fix -->
+                                                               <version>1.5.13.RELEASE</version>
+                                                               <!-- <version>${springboot.version}</version> -->
                                                                <executions>
                                                                                <execution>
                                                                                                <goals>
                                                <plugin>
                                                                <groupId>org.apache.maven.plugins</groupId>
                                                                <artifactId>maven-failsafe-plugin</artifactId>
-                                                               <version>2.16</version>
+                                                               <version>2.17</version>
 
                                                                <executions>
                                                                                <execution>
                                                                                <apiVersion>1.23</apiVersion>
                                                                                <images>
                                                                                                <image>
-                                                                                                               <name>mariadb:10.1.11</name>
+                                                                                                               <name>library/mariadb:10.1.11</name>
                                                                                                                <alias>mariadb</alias>
                                                                                                                <run>
                                                                                                                                <env>
                                                                                                                </run>
                                                                                                </image>
                                                                                                <image>
-                                                                                                               <name>python:2-slim</name>
+                                                                                                               <name>library/python:2-slim</name>
                                                                                                                <alias>python</alias>
                                                                                                                <run>
                                                                                                                                <hostname>python</hostname>
                                                                                                                                                <tag>${project.docker.latesttagtimestamp.version}</tag>
                                                                                                                                                <tag>${project.docker.latesttag.version}</tag>
                                                                                                                                </tags>
-                                                                                                                               <!-- A relative path is looked up in ${project.basedir}/src/main/docker by default -->
+                                                                                                                               <!-- A relative path is looked up in ${project.basedir}/src/main/docker 
+                                                                                                                                               by default -->
                                                                                                                                <dockerFile>Dockerfile</dockerFile>
                                                                                                                                <assembly>
                                                                                                                                                <descriptor>assembly/clamp-files.xml</descriptor>
                                                                                                                </build>
                                                                                                </image>
                                                                                </images>
-                                                                               <skip>${skipITs}</skip>
                                                                </configuration>
                                                                <executions>
                                                                                <execution>
                                                                                                <goals>
                                                                                                                <goal>start</goal>
                                                                                                </goals>
-                                                                                               <configuration>
-                                                                                                               <skip>${skipITs}</skip>
-                                                                                               </configuration>
                                                                                </execution>
                                                                                <execution>
                                                                                                <id>docker-stop-for-it</id>
                                                                                                <goals>
                                                                                                                <goal>stop</goal>
                                                                                                </goals>
-                                                                                               <configuration>
-                                                                                                               <skip>${skipITs}</skip>
-                                                                                               </configuration>
                                                                                </execution>
                                                                </executions>
                                                </plugin>
                                                </plugin>
                                </plugins>
                </build>
-               <profiles>
-                               <profile>
-                                               <id>docker</id>
-                                               <properties>
-                                                               <skip.staging.artifacts>true</skip.staging.artifacts>
-                                                               <docker.skip.build>false</docker.skip.build>
-                                                               <docker.skip.tag>false</docker.skip.tag>
-                                                               <docker.skip.push>false</docker.skip.push>
-                                               </properties>
-                               </profile>
-               </profiles>
 </project>
diff --git a/src/main/resources/META-INF/resources/designer/css/carousel/ajax-loader.gif b/src/main/resources/META-INF/resources/designer/css/carousel/ajax-loader.gif
deleted file mode 100644 (file)
index e0e6e97..0000000
Binary files a/src/main/resources/META-INF/resources/designer/css/carousel/ajax-loader.gif and /dev/null differ
diff --git a/src/main/resources/META-INF/resources/designer/css/carousel/fonts/slick.eot b/src/main/resources/META-INF/resources/designer/css/carousel/fonts/slick.eot
deleted file mode 100644 (file)
index 2cbab9c..0000000
Binary files a/src/main/resources/META-INF/resources/designer/css/carousel/fonts/slick.eot and /dev/null differ
diff --git a/src/main/resources/META-INF/resources/designer/css/carousel/fonts/slick.svg b/src/main/resources/META-INF/resources/designer/css/carousel/fonts/slick.svg
deleted file mode 100644 (file)
index b36a66a..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-<?xml version="1.0" standalone="no"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg xmlns="http://www.w3.org/2000/svg">
-<metadata>Generated by Fontastic.me</metadata>
-<defs>
-<font id="slick" horiz-adv-x="512">
-<font-face font-family="slick" units-per-em="512" ascent="480" descent="-32"/>
-<missing-glyph horiz-adv-x="512" />
-
-<glyph unicode="&#8594;" d="M241 113l130 130c4 4 6 8 6 13 0 5-2 9-6 13l-130 130c-3 3-7 5-12 5-5 0-10-2-13-5l-29-30c-4-3-6-7-6-12 0-5 2-10 6-13l87-88-87-88c-4-3-6-8-6-13 0-5 2-9 6-12l29-30c3-3 8-5 13-5 5 0 9 2 12 5z m234 143c0-40-9-77-29-110-20-34-46-60-80-80-33-20-70-29-110-29-40 0-77 9-110 29-34 20-60 46-80 80-20 33-29 70-29 110 0 40 9 77 29 110 20 34 46 60 80 80 33 20 70 29 110 29 40 0 77-9 110-29 34-20 60-46 80-80 20-33 29-70 29-110z"/>
-<glyph unicode="&#8592;" d="M296 113l29 30c4 3 6 7 6 12 0 5-2 10-6 13l-87 88 87 88c4 3 6 8 6 13 0 5-2 9-6 12l-29 30c-3 3-8 5-13 5-5 0-9-2-12-5l-130-130c-4-4-6-8-6-13 0-5 2-9 6-13l130-130c3-3 7-5 12-5 5 0 10 2 13 5z m179 143c0-40-9-77-29-110-20-34-46-60-80-80-33-20-70-29-110-29-40 0-77 9-110 29-34 20-60 46-80 80-20 33-29 70-29 110 0 40 9 77 29 110 20 34 46 60 80 80 33 20 70 29 110 29 40 0 77-9 110-29 34-20 60-46 80-80 20-33 29-70 29-110z"/>
-<glyph unicode="&#8226;" d="M475 256c0-40-9-77-29-110-20-34-46-60-80-80-33-20-70-29-110-29-40 0-77 9-110 29-34 20-60 46-80 80-20 33-29 70-29 110 0 40 9 77 29 110 20 34 46 60 80 80 33 20 70 29 110 29 40 0 77-9 110-29 34-20 60-46 80-80 20-33 29-70 29-110z"/>
-<glyph unicode="&#97;" d="M475 439l0-128c0-5-1-9-5-13-4-4-8-5-13-5l-128 0c-8 0-13 3-17 11-3 7-2 14 4 20l40 39c-28 26-62 39-100 39-20 0-39-4-57-11-18-8-33-18-46-32-14-13-24-28-32-46-7-18-11-37-11-57 0-20 4-39 11-57 8-18 18-33 32-46 13-14 28-24 46-32 18-7 37-11 57-11 23 0 44 5 64 15 20 9 38 23 51 42 2 1 4 3 7 3 3 0 5-1 7-3l39-39c2-2 3-3 3-6 0-2-1-4-2-6-21-25-46-45-76-59-29-14-60-20-93-20-30 0-58 5-85 17-27 12-51 27-70 47-20 19-35 43-47 70-12 27-17 55-17 85 0 30 5 58 17 85 12 27 27 51 47 70 19 20 43 35 70 47 27 12 55 17 85 17 28 0 55-5 81-15 26-11 50-26 70-45l37 37c6 6 12 7 20 4 8-4 11-9 11-17z"/>
-</font></defs></svg>
diff --git a/src/main/resources/META-INF/resources/designer/css/carousel/fonts/slick.ttf b/src/main/resources/META-INF/resources/designer/css/carousel/fonts/slick.ttf
deleted file mode 100644 (file)
index 9d03461..0000000
Binary files a/src/main/resources/META-INF/resources/designer/css/carousel/fonts/slick.ttf and /dev/null differ
diff --git a/src/main/resources/META-INF/resources/designer/css/carousel/fonts/slick.woff b/src/main/resources/META-INF/resources/designer/css/carousel/fonts/slick.woff
deleted file mode 100644 (file)
index 8ee9972..0000000
Binary files a/src/main/resources/META-INF/resources/designer/css/carousel/fonts/slick.woff and /dev/null differ
diff --git a/src/main/resources/META-INF/resources/designer/css/carousel/grabbing.png b/src/main/resources/META-INF/resources/designer/css/carousel/grabbing.png
deleted file mode 100644 (file)
index 85491df..0000000
Binary files a/src/main/resources/META-INF/resources/designer/css/carousel/grabbing.png and /dev/null differ
diff --git a/src/main/resources/META-INF/resources/designer/css/carousel/owl.carousel.css b/src/main/resources/META-INF/resources/designer/css/carousel/owl.carousel.css
deleted file mode 100644 (file)
index 7cf0f4a..0000000
+++ /dev/null
@@ -1,216 +0,0 @@
-/*
- *  Owl Carousel - Animate Plugin
- */
-.owl-carousel .animated {
-  -webkit-animation-duration: 1000ms;
-  animation-duration: 1000ms;
-  -webkit-animation-fill-mode: both;
-  animation-fill-mode: both;
-}
-.owl-carousel .owl-animated-in {
-  z-index: 0;
-}
-.owl-carousel .owl-animated-out {
-  z-index: 1;
-}
-.owl-carousel .fadeOut {
-  -webkit-animation-name: fadeOut;
-  animation-name: fadeOut;
-}
-
-@-webkit-keyframes fadeOut {
-  0% {
-    opacity: 1;
-  }
-
-  100% {
-    opacity: 0;
-  }
-}
-@keyframes fadeOut {
-  0% {
-    opacity: 1;
-  }
-
-  100% {
-    opacity: 0;
-  }
-}
-
-/* 
- *     Owl Carousel - Auto Height Plugin
- */
-.owl-height {
-  -webkit-transition: height 500ms ease-in-out;
-  -moz-transition: height 500ms ease-in-out;
-  -ms-transition: height 500ms ease-in-out;
-  -o-transition: height 500ms ease-in-out;
-  transition: height 500ms ease-in-out;
-}
-
-/* 
- *  Core Owl Carousel CSS File
- */
-.owl-carousel {
-  display: none;
-  width: 100%;
-  -webkit-tap-highlight-color: transparent;
-  /* position relative and z-index fix webkit rendering fonts issue */
-  position: relative;
-  z-index: 1;
-}
-.owl-carousel .owl-stage {
-  position: relative;
-  -ms-touch-action: pan-Y;
-}
-.owl-carousel .owl-stage:after {
-  content: ".";
-  display: block;
-  clear: both;
-  visibility: hidden;
-  line-height: 0;
-  height: 0;
-}
-.owl-carousel .owl-stage-outer {
-  position: relative;
-  overflow: hidden;
-  /* fix for flashing background */
-  -webkit-transform: translate3d(0px, 0px, 0px);
-}
-.owl-carousel .owl-controls .owl-nav .owl-prev,
-.owl-carousel .owl-controls .owl-nav .owl-next,
-.owl-carousel .owl-controls .owl-dot {
-  cursor: pointer;
-  cursor: hand;
-  -webkit-user-select: none;
-  -khtml-user-select: none;
-  -moz-user-select: none;
-  -ms-user-select: none;
-  user-select: none;
-}
-.owl-carousel.owl-loaded {
-  display: block;
-}
-.owl-carousel.owl-loading {
-  opacity: 0;
-  display: block;
-}
-.owl-carousel.owl-hidden {
-  opacity: 0;
-}
-.owl-carousel .owl-refresh .owl-item {
-  display: none;
-}
-.owl-carousel .owl-item {
-  position: relative;
-  min-height: 1px;
-  float: left;
-  -webkit-backface-visibility: hidden;
-  -webkit-tap-highlight-color: transparent;
-  -webkit-touch-callout: none;
-  -webkit-user-select: none;
-  -moz-user-select: none;
-  -ms-user-select: none;
-  user-select: none;
-}
-.owl-carousel .owl-item img {
-  display: block;
-  width: 100%;
-  -webkit-transform-style: preserve-3d;
-}
-.owl-carousel.owl-text-select-on .owl-item {
-  -webkit-user-select: auto;
-  -moz-user-select: auto;
-  -ms-user-select: auto;
-  user-select: auto;
-}
-.owl-carousel .owl-grab {
-  cursor: move;
-  cursor: -webkit-grab;
-  cursor: -o-grab;
-  cursor: -ms-grab;
-  cursor: grab;
-}
-.owl-carousel.owl-rtl {
-  direction: rtl;
-}
-.owl-carousel.owl-rtl .owl-item {
-  float: right;
-}
-
-/* No Js */
-.no-js .owl-carousel {
-  display: block;
-}
-
-/* 
- *     Owl Carousel - Lazy Load Plugin
- */
-.owl-carousel .owl-item .owl-lazy {
-  opacity: 0;
-  -webkit-transition: opacity 400ms ease;
-  -moz-transition: opacity 400ms ease;
-  -ms-transition: opacity 400ms ease;
-  -o-transition: opacity 400ms ease;
-  transition: opacity 400ms ease;
-}
-.owl-carousel .owl-item img {
-  transform-style: preserve-3d;
-}
-
-/* 
- *     Owl Carousel - Video Plugin
- */
-.owl-carousel .owl-video-wrapper {
-  position: relative;
-  height: 100%;
-  background: #000;
-}
-.owl-carousel .owl-video-play-icon {
-  position: absolute;
-  height: 80px;
-  width: 80px;
-  left: 50%;
-  top: 50%;
-  margin-left: -40px;
-  margin-top: -40px;
-  background: url("owl.video.play.png") no-repeat;
-  cursor: pointer;
-  z-index: 1;
-  -webkit-backface-visibility: hidden;
-  -webkit-transition: scale 100ms ease;
-  -moz-transition: scale 100ms ease;
-  -ms-transition: scale 100ms ease;
-  -o-transition: scale 100ms ease;
-  transition: scale 100ms ease;
-}
-.owl-carousel .owl-video-play-icon:hover {
-  -webkit-transition: scale(1.3, 1.3);
-  -moz-transition: scale(1.3, 1.3);
-  -ms-transition: scale(1.3, 1.3);
-  -o-transition: scale(1.3, 1.3);
-  transition: scale(1.3, 1.3);
-}
-.owl-carousel .owl-video-playing .owl-video-tn,
-.owl-carousel .owl-video-playing .owl-video-play-icon {
-  display: none;
-}
-.owl-carousel .owl-video-tn {
-  opacity: 0;
-  height: 100%;
-  background-position: center center;
-  background-repeat: no-repeat;
-  -webkit-background-size: contain;
-  -moz-background-size: contain;
-  -o-background-size: contain;
-  background-size: contain;
-  -webkit-transition: opacity 400ms ease;
-  -moz-transition: opacity 400ms ease;
-  -ms-transition: opacity 400ms ease;
-  -o-transition: opacity 400ms ease;
-  transition: opacity 400ms ease;
-}
-.owl-carousel .owl-video-frame {
-  position: relative;
-  z-index: 1;
-}
diff --git a/src/main/resources/META-INF/resources/designer/css/carousel/owl.theme.css b/src/main/resources/META-INF/resources/designer/css/carousel/owl.theme.css
deleted file mode 100644 (file)
index f1f24ef..0000000
+++ /dev/null
@@ -1,79 +0,0 @@
-/*
-*      Owl Carousel Owl Demo Theme 
-*      v1.3.3
-*/
-
-.owl-theme .owl-controls{
-       margin-top: 10px;
-       text-align: center;
-}
-
-/* Styling Next and Prev buttons */
-
-.owl-theme .owl-controls .owl-buttons div{
-       color: #FFF;
-       display: inline-block;
-       zoom: 1;
-       *display: inline;/*IE7 life-saver */
-       margin: 5px;
-       padding: 3px 10px;
-       font-size: 12px;
-       -webkit-border-radius: 30px;
-       -moz-border-radius: 30px;
-       border-radius: 30px;
-       background: #869791;
-       filter: Alpha(Opacity=50);/*IE7 fix*/
-       opacity: 0.5;
-}
-/* Clickable class fix problem with hover on touch devices */
-/* Use it for non-touch hover action */
-.owl-theme .owl-controls.clickable .owl-buttons div:hover{
-       filter: Alpha(Opacity=100);/*IE7 fix*/
-       opacity: 1;
-       text-decoration: none;
-}
-
-/* Styling Pagination*/
-
-.owl-theme .owl-controls .owl-page{
-       display: inline-block;
-       zoom: 1;
-       *display: inline;/*IE7 life-saver */
-}
-.owl-theme .owl-controls .owl-page span{
-       display: block;
-       width: 12px;
-       height: 12px;
-       margin: 5px 7px;
-       filter: Alpha(Opacity=50);/*IE7 fix*/
-       opacity: 0.5;
-       -webkit-border-radius: 20px;
-       -moz-border-radius: 20px;
-       border-radius: 20px;
-       background: #869791;
-}
-
-.owl-theme .owl-controls .owl-page.active span,
-.owl-theme .owl-controls.clickable .owl-page:hover span{
-       filter: Alpha(Opacity=100);/*IE7 fix*/
-       opacity: 1;
-}
-
-/* If PaginationNumbers is true */
-
-.owl-theme .owl-controls .owl-page span.owl-numbers{
-       height: auto;
-       width: auto;
-       color: #FFF;
-       padding: 2px 10px;
-       font-size: 12px;
-       -webkit-border-radius: 30px;
-       -moz-border-radius: 30px;
-       border-radius: 30px;
-}
-
-/* preloading images */
-.owl-item.loading{
-       min-height: 150px;
-       background: url(AjaxLoader.gif) no-repeat center center
-}
diff --git a/src/main/resources/META-INF/resources/designer/css/carousel/slick.css b/src/main/resources/META-INF/resources/designer/css/carousel/slick.css
deleted file mode 100644 (file)
index 2570f48..0000000
+++ /dev/null
@@ -1,57 +0,0 @@
-@charset "UTF-8";
-/* Slider */
-.slick-slider { position: relative; display: block; box-sizing: border-box; -moz-box-sizing: border-box; -webkit-touch-callout: none; -webkit-user-select: none; -khtml-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none; -ms-touch-action: pan-y; touch-action: pan-y; -webkit-tap-highlight-color: transparent; }
-
-.slick-list { position: relative; overflow: hidden; display: block; margin: 0; padding: 0; }
-.slick-list:focus { outline: none; }
-.slick-loading .slick-list { background: #fff url("./ajax-loader.gif") center center no-repeat; }
-.slick-list.dragging { cursor: pointer; cursor: hand; }
-
-.slick-slider .slick-track { -webkit-transform: translate3d(0, 0, 0); -moz-transform: translate3d(0, 0, 0); -ms-transform: translate3d(0, 0, 0); -o-transform: translate3d(0, 0, 0); transform: translate3d(0, 0, 0); }
-
-.slick-track { position: relative; left: 0; top: 0; display: block; }
-.slick-track:before, .slick-track:after { content: ""; display: table; }
-.slick-track:after { clear: both; }
-.slick-loading .slick-track { visibility: hidden; }
-
-.slick-slide { float: left; height: 100%; min-height: 1px; display: none; }
-[dir="rtl"] .slick-slide { float: right; }
-.slick-slide img { display: block; }
-.slick-slide.slick-loading img { display: none; }
-.slick-slide.dragging img { pointer-events: none; }
-.slick-initialized .slick-slide { display: block; }
-.slick-loading .slick-slide { visibility: hidden; }
-.slick-vertical .slick-slide { display: block; height: auto; border: 1px solid transparent; }
-
-/* Icons */
-@font-face { font-family: "slick"; src: url("./fonts/slick.eot"); src: url("./fonts/slick.eot?#iefix") format("embedded-opentype"), url("./fonts/slick.woff") format("woff"), url("./fonts/slick.ttf") format("truetype"), url("./fonts/slick.svg#slick") format("svg"); font-weight: normal; font-style: normal; }
-/* Arrows */
-.slick-prev, .slick-next { position: absolute; display: block; height: 20px; width: 20px; line-height: 0; font-size: 0; cursor: pointer; background: transparent; color: transparent; top: 50%; margin-top: -10px; padding: 0; border: none; outline: none; }
-.slick-prev:hover, .slick-prev:focus, .slick-next:hover, .slick-next:focus { outline: none; background: transparent; color: transparent; }
-.slick-prev:hover:before, .slick-prev:focus:before, .slick-next:hover:before, .slick-next:focus:before { opacity: 1; }
-.slick-prev.slick-disabled:before, .slick-next.slick-disabled:before { opacity: 0.25; }
-
-.slick-prev:before, .slick-next:before { font-family: "slick"; font-size: 20px; line-height: 1; color: white; opacity: 0.75; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; }
-
-.slick-prev { left: -25px; }
-[dir="rtl"] .slick-prev { left: auto; right: -25px; }
-.slick-prev:before { content: "←"; }
-[dir="rtl"] .slick-prev:before { content: "→"; }
-
-.slick-next { right: -25px; }
-[dir="rtl"] .slick-next { left: -25px; right: auto; }
-.slick-next:before { content: "→"; }
-[dir="rtl"] .slick-next:before { content: "←"; }
-
-/* Dots */
-.slick-slider { margin-bottom: 30px; }
-
-.slick-dots { position: absolute; bottom: -45px; list-style: none; display: block; text-align: center; padding: 0; width: 100%; }
-.slick-dots li { position: relative; display: inline-block; height: 20px; width: 20px; margin: 0 5px; padding: 0; cursor: pointer; }
-.slick-dots li button { border: 0; background: transparent; display: block; height: 20px; width: 20px; outline: none; line-height: 0; font-size: 0; color: transparent; padding: 5px; cursor: pointer; }
-.slick-dots li button:hover, .slick-dots li button:focus { outline: none; }
-.slick-dots li button:hover:before, .slick-dots li button:focus:before { opacity: 1; }
-.slick-dots li button:before { position: absolute; top: 0; left: 0; content: "•"; width: 20px; height: 20px; font-family: "slick"; font-size: 6px; line-height: 20px; text-align: center; color: black; opacity: 0.25; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; }
-.slick-dots li.slick-active button:before { color: black; opacity: 0.75; }
-
-/*# sourceMappingURL=slick.css.map */
diff --git a/src/main/resources/META-INF/resources/designer/css/carousel/slick.css.map b/src/main/resources/META-INF/resources/designer/css/carousel/slick.css.map
deleted file mode 100644 (file)
index 9f0499a..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-{
-"version": 3,
-"mappings": ";;AAuCA,aAAc,GACV,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,KAAK,EACd,UAAU,EAAE,UAAU,EACtB,eAAe,EAAE,UAAU,EAC3B,qBAAqB,EAAE,IAAI,EAC3B,mBAAmB,EAAE,IAAI,EACzB,kBAAkB,EAAE,IAAI,EACxB,gBAAgB,EAAE,IAAI,EACtB,eAAe,EAAE,IAAI,EACrB,WAAW,EAAE,IAAI,EACjB,gBAAgB,EAAE,KAAK,EACvB,YAAY,EAAE,KAAK,EACnB,2BAA2B,EAAE,WAAW;;AAE5C,WAAY,GACR,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,KAAK,EACd,MAAM,EAAE,CAAC,EACT,OAAO,EAAE,CAAC;AAEV,iBAAQ,GACJ,OAAO,EAAE,IAAI;AAGjB,0BAAiB,GACb,UAAU,EAAE,qDAA+D;AAG/E,oBAAW,GACP,MAAM,EAAE,OAAO,EACf,MAAM,EAAE,IAAI;;AAGpB,0BAA2B,GACvB,iBAAiB,EAAE,oBAAoB,EACvC,cAAc,EAAE,oBAAoB,EACpC,aAAa,EAAE,oBAAoB,EACnC,YAAY,EAAE,oBAAoB,EAClC,SAAS,EAAE,oBAAoB;;AAGnC,YAAa,GACT,QAAQ,EAAE,QAAQ,EAClB,IAAI,EAAE,CAAC,EACP,GAAG,EAAE,CAAC,EACN,OAAO,EAAE,KAAK;AAEd,uCACQ,GACJ,OAAO,EAAE,EAAE,EACX,OAAO,EAAE,KAAK;AAGlB,kBAAQ,GACJ,KAAK,EAAE,IAAI;AAGf,2BAAiB,GACb,UAAU,EAAE,MAAM;;AAG1B,YAAa,GACT,KAAK,EAAE,IAAI,EACX,MAAM,EAAE,IAAI,EACZ,UAAU,EAAE,GAAG,EAWf,OAAO,EAAE,IAAI;AAVb,wBAAc,GACV,KAAK,EAAE,KAAK;AAEhB,gBAAI,GACA,OAAO,EAAE,KAAK;AAElB,8BAAoB,GAChB,OAAO,EAAE,IAAI;AAKjB,yBAAe,GACX,cAAc,EAAE,IAAI;AAGxB,+BAAqB,GACjB,OAAO,EAAE,KAAK;AAGlB,2BAAiB,GACb,UAAU,EAAE,MAAM;AAGtB,4BAAkB,GACd,OAAO,EAAE,KAAK,EACd,MAAM,EAAE,IAAI,EACZ,MAAM,EAAE,qBAAqB;;;AAMnC,UASC,GARG,WAAW,EAAC,OAAO,EACnB,GAAG,EAAK,wBAA2B,EACnC,GAAG,EAAK,gMAA8D,EAItE,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,MAAM;;AAMxB,wBACY,GACR,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,KAAK,EACd,MAAM,EAAE,IAAI,EACZ,KAAK,EAAE,IAAI,EACX,WAAW,EAAE,CAAC,EACd,SAAS,EAAE,CAAC,EACZ,MAAM,EAAE,OAAO,EACf,UAAU,EAAE,WAAW,EACvB,KAAK,EAAE,WAAW,EAClB,GAAG,EAAE,GAAG,EACR,UAAU,EAAE,KAAK,EACjB,OAAO,EAAE,CAAC,EACV,MAAM,EAAE,IAAI,EACZ,OAAO,EAAE,IAAI;AACb,0EAAiB,GACf,OAAO,EAAE,IAAI,EACb,UAAU,EAAE,WAAW,EACvB,KAAK,EAAE,WAAW;AAClB,sGAAS,GACP,OAAO,EA/JI,CAAC;AAkKhB,oEAAwB,GACpB,OAAO,EAlKM,IAAG;;AAqKxB,sCAAuC,GACnC,WAAW,EAjLK,OAAO,EAkLvB,SAAS,EAAE,IAAI,EACf,WAAW,EAAE,CAAC,EACd,KAAK,EAlLW,KAAK,EAmLrB,OAAO,EA5KO,IAAG,EA6KjB,sBAAsB,EAAE,WAAW,EACnC,uBAAuB,EAAE,SAAS;;AAEtC,WAAY,GACR,IAAI,EAAE,KAAK;AACX,uBAAc,GACV,IAAI,EAAG,IAAI,EACX,KAAK,EAAE,KAAK;AAEhB,kBAAS,GACL,OAAO,EA3LQ,GAAO;AA4LtB,8BAAc,GACV,OAAO,EA5LI,GAAO;;AAgM9B,WAAY,GACR,KAAK,EAAE,KAAK;AACZ,uBAAc,GACV,IAAI,EAAG,KAAK,EACZ,KAAK,EAAE,IAAI;AAEf,kBAAS,GACL,OAAO,EAvMQ,GAAO;AAwMtB,8BAAc,GACV,OAAO,EA1MI,GAAO;;;AAiN9B,aAAc,GACV,aAAa,EAAE,IAAI;;AAEvB,WAAY,GACR,QAAQ,EAAE,QAAQ,EAClB,MAAM,EAAE,KAAK,EACb,UAAU,EAAE,IAAI,EAChB,OAAO,EAAE,KAAK,EACd,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,CAAC,EACV,KAAK,EAAE,IAAI;AAEX,cAAG,GACC,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,YAAY,EACrB,MAAM,EAAE,IAAI,EACZ,KAAK,EAAE,IAAI,EACX,MAAM,EAAE,KAAK,EACb,OAAO,EAAE,CAAC,EACV,MAAM,EAAE,OAAO;AAEf,qBAAO,GACH,MAAM,EAAE,CAAC,EACT,UAAU,EAAE,WAAW,EACvB,OAAO,EAAE,KAAK,EACd,MAAM,EAAE,IAAI,EACZ,KAAK,EAAE,IAAI,EACX,OAAO,EAAE,IAAI,EACb,WAAW,EAAE,CAAC,EACd,SAAS,EAAE,CAAC,EACZ,KAAK,EAAE,WAAW,EAClB,OAAO,EAAE,GAAG,EACZ,MAAM,EAAE,OAAO;AACf,wDAAiB,GACb,OAAO,EAAE,IAAI;AACb,sEAAS,GACP,OAAO,EAhPN,CAAC;AAoPR,4BAAS,GACL,QAAQ,EAAE,QAAQ,EAClB,GAAG,EAAE,CAAC,EACN,IAAI,EAAE,CAAC,EACP,OAAO,EA3PD,GAAO,EA4Pb,KAAK,EAAE,IAAI,EACX,MAAM,EAAE,IAAI,EACZ,WAAW,EArQP,OAAO,EAsQX,SAAS,EA9PR,GAAG,EA+PJ,WAAW,EAAE,IAAI,EACjB,UAAU,EAAE,MAAM,EAClB,KAAK,EArQI,KAAgB,EAsQzB,OAAO,EA/PF,IAAG,EAgQR,sBAAsB,EAAE,WAAW,EACnC,uBAAuB,EAAE,SAAS;AAK1C,yCAA6B,GACzB,KAAK,EA9QQ,KAAgB,EA+Q7B,OAAO,EA1QD,IAAG",
-"sources": ["slick.scss"],
-"names": [],
-"file": "slick.css"
-}
diff --git a/src/main/resources/META-INF/resources/designer/css/flexigrid/css/flexigrid.css b/src/main/resources/META-INF/resources/designer/css/flexigrid/css/flexigrid.css
deleted file mode 100644 (file)
index bd2bd23..0000000
+++ /dev/null
@@ -1,630 +0,0 @@
-
-@charset "UTF-8";
-/* CSS Document */
-.flexigrid {
-       font-family: Arial, Helvetica, sans-serif;
-       font-size: 11px;
-       line-height: normal;
-       position: relative;
-       border: 0px solid #eee;
-       overflow: hidden;
-       color: #000;
-}
-
-.flexigrid.hideBody {
-       height: 26px !important;
-       border-bottom: 1px solid #ccc;
-}
-
-.ie6fullwidthbug {
-       border-right: 0px solid #ccc;
-       padding-right: 2px;
-}
-
-.flexigrid div.nDiv {
-       background: #eee url(images/line.gif) repeat-y -1px top;
-       border: 1px solid #ccc;
-       border-top: 0px;
-       overflow: auto;
-       left: 0px;
-       position: absolute;
-       z-index: 999;
-       float: left;
-}
-
-.flexigrid div.nDiv table {
-       margin: 2px;
-}
-
-.flexigrid div.hDivBox {
-       float: left;
-       padding-right: 40px;
-}
-
-.flexigrid div.bDiv table {
-       margin-bottom: 10px;
-}
-
-.flexigrid div.bDiv table.autoht {
-       border-bottom: 0px;
-       margin-bottom: 0px;
-}
-
-.flexigrid div.nDiv td {
-       padding: 2px 3px;
-       border: 1px solid #eee;
-       cursor: default;
-}
-
-.flexigrid div.nDiv tr:hover td,.flexigrid div.nDiv tr.ndcolover td {
-       background: #d5effc url(images/hl.png) repeat-x top;
-       border: 1px solid #a8d8eb;
-}
-
-.flexigrid div.nDiv td.ndcol1 {
-       border-right: 1px solid #ccc;
-}
-
-.flexigrid div.nDiv td.ndcol2 {
-       border-left: 1px solid #fff;
-       padding-right: 10px;
-}
-
-.flexigrid div.nDiv tr:hover td.ndcol1,.flexigrid div.nDiv tr.ndcolover td.ndcol1
-       {
-       border-right: 1px solid #d2e3ec;
-}
-
-.flexigrid div.nDiv tr:hover td.ndcol2,.flexigrid div.nDiv tr.ndcolover td.ndcol2
-       {
-       border-left: 1px solid #eef8ff;
-}
-
-.flexigrid div.nBtn {
-       position: absolute;
-       height: 24px;
-       width: 14px;
-       z-index: 900;
-       background: #fafafa url(images/fhbg.gif) repeat-x bottom;
-       border: 0px solid #ccc;
-       border-left: 1px solid #ccc;
-       top: 0px;
-       left: 0px;
-       margin-top: 1px;
-       cursor: pointer;
-       display: none;
-}
-
-.flexigrid div.nBtn div {
-       height: 24px;
-       width: 12px;
-       border-left: 1px solid #fff;
-       float: left;
-       background: url(images/ddn.png) no-repeat center;
-}
-
-.flexigrid div.nBtn.srtd {
-       background: url(images/wbg.gif) repeat-x 0px -1px;
-}
-
-.flexigrid div.mDiv {
-       background: url(images/wbg.gif) repeat-x top;
-       border: 1px solid #ccc;
-       border-bottom: 0px;
-       border-top: 0px;
-       font-weight: bold;
-       display: block;
-       overflow: hidden;
-       white-space: nowrap;
-       position: relative;
-}
-
-.flexigrid div.mDiv div {
-       padding: 6px;
-       white-space: nowrap;
-}
-
-.flexigrid div.mDiv div.ptogtitle {
-       position: absolute;
-       top: 4px;
-       right: 3px;
-       padding: 0px;
-       height: 16px;
-       width: 16px;
-       overflow: hidden;
-       border: 1px solid #ccc;
-       cursor: pointer;
-}
-
-.flexigrid div.mDiv div.ptogtitle:hover {
-       background-position: left -2px;
-       border-color: #bbb;
-}
-
-.flexigrid div.mDiv div.ptogtitle span {
-       display: block;
-       border-left: 1px solid #eee;
-       border-top: 1px solid #fff;
-       border-bottom: 1px solid #ddd;
-       width: 14px;
-       height: 14px;
-       background: url(images/uup.png) no-repeat center;
-}
-
-.flexigrid div.mDiv div.ptogtitle.vsble span {
-       background: url(images/ddn.png) no-repeat center;
-}
-
-.flexigrid div.tDiv /*toolbar*/ {
-       background: #fafafa url(images/bg.gif) repeat-x top;
-       position: relative;
-       border: 1px solid #ccc;
-       border-bottom: 0px;
-       overflow: hidden;
-}
-
-.flexigrid div.tDiv2 {
-       float: left;
-       clear: both;
-       padding: 1px;
-}
-
-.flexigrid div.sDiv /*toolbar*/ {
-       background: #fafafa url(images/bg.gif) repeat-x top;
-       position: relative;
-       border: 1px solid #ccc;
-       border-top: 0px;
-       overflow: hidden;
-       display: none;
-}
-
-.flexigrid div.sDiv2 {
-       float: left;
-       clear: both;
-       padding: 5px;
-       padding-left: 5px;
-       width: 1024px;
-}
-
-.flexigrid div.sDiv2 input,.flexigrid div.sDiv2 select {
-       vertical-align: middle;
-}
-
-.flexigrid div.btnseparator {
-       float: left;
-       height: 22px;
-       border-left: 1px solid #ccc;
-       border-right: 1px solid #fff;
-       margin: 1px;
-}
-
-.flexigrid div.fbutton {
-       float: left;
-       display: block;
-       cursor: pointer;
-       padding: 1px;
-}
-
-.flexigrid div.fbutton div {
-       float: left;
-       padding: 1px 3px;
-}
-
-.flexigrid div.fbutton span {
-       float: left;
-       display: block;
-       padding: 3px;
-}
-
-.flexigrid div.fbutton:hover,.flexigrid div.fbutton.fbOver {
-       padding: 0px;
-       border: 1px solid #ccc;
-}
-
-.flexigrid div.fbutton:hover div,.flexigrid div.fbutton.fbOver div {
-       padding: 0px 2px;
-       border-left: 1px solid #fff;
-       border-top: 1px solid #fff;
-       border-right: 1px solid #eee;
-       border-bottom: 1px solid #eee;
-}
-
-/* end toolbar*/
-.flexigrid div.hDiv {
-       background: #fafafa url(images/fhbg.gif) repeat-x bottom;
-       position: relative;
-       border: 1px solid #ccc;
-       border-bottom: 0px;
-       overflow: hidden;
-}
-
-.flexigrid div.hDiv table {
-       border-right: 1px solid #fff;
-}
-
-.flexigrid div.cDrag {
-       float: left;
-       position: absolute;
-       z-index: 2;
-       overflow: visible;
-}
-
-.flexigrid div.cDrag div {
-       float: left;
-       background: none;
-       display: block;
-       position: absolute;
-       height: 24px;
-       width: 5px;
-       cursor: col-resize;
-}
-
-.flexigrid div.cDrag div:hover,.flexigrid div.cDrag div.dragging {
-       background: url(images/line.gif) repeat-y 2px center;
-}
-
-.flexigrid div.iDiv {
-       border: 1px solid #316ac5;
-       position: absolute;
-       overflow: visible;
-       background: none;
-}
-
-.flexigrid div.iDiv input,.flexigrid div.iDiv select,.flexigrid div.iDiv textarea
-       {
-       font-family: Arial, Helvetica, sans-serif;
-       font-size: 11px;
-}
-
-.flexigrid div.iDiv input.tb {
-       border: 0px;
-       padding: 0px;
-       width: 100%;
-       height: 100%;
-       padding: 0px;
-       background: none;
-}
-
-.flexigrid div.bDiv {
-       border: 1px solid #ccc;
-       border-top: 0px;
-       background: #fff;
-       overflow: auto;
-       position: relative;
-}
-
-.flexigrid div.bDiv table {
-       border-bottom: 1px solid #ccc;
-}
-
-.flexigrid div.hGrip {
-       position: absolute;
-       top: 0px;
-       right: 0px;
-       height: 5px;
-       width: 5px;
-       background: url(images/line.gif) repeat-x center;
-       margin-right: 1px;
-       cursor: col-resize;
-}
-
-.flexigrid div.hGrip:hover,.flexigrid div.hGrip.hgOver {
-       border-right: 1px solid #999;
-       margin-right: 0px;
-}
-
-.flexigrid div.vGrip {
-       height: 5px;
-       overflow: hidden;
-       position: relative;
-       background: #fafafa url(images/wbg.gif) repeat-x 0px -1px;
-       border: 1px solid #ccc;
-       border-top: 0px;
-       text-align: center;
-       cursor: row-resize;
-}
-
-.flexigrid div.vGrip span {
-       display: block;
-       margin: 1px auto;
-       width: 20px;
-       height: 1px;
-       overflow: hidden;
-       border-top: 1px solid #aaa;
-       border-bottom: 1px solid #aaa;
-       background: none;
-}
-
-.flexigrid div.hDiv th,.flexigrid  div.bDiv td
-       /* common cell properties*/ {
-       text-align: left;
-       border-right: 1px solid #ddd;
-       border-left: 1px solid #fff;
-       overflow: hidden;
-       vertical-align: top !important;
-       padding-left: 0;
-       padding-right: 0;
-}
-
-.flexigrid div.hDiv th div,.flexigrid  div.bDiv td  div,div.colCopy div
-       /* common inner cell properties*/ {
-       padding: 5px;
-       border-left: 0px solid #fff;
-}
-
-.flexigrid div.hDiv th,div.colCopy {
-       font-weight: normal;
-       height: 24px;
-       cursor: default;
-       white-space: nowrap;
-       overflow: hidden;
-}
-
-div.colCopy {
-       font-family: Arial, Helvetica, sans-serif;
-       font-size: 11px;
-       background: #fafafa url(images/fhbg.gif) repeat-x bottom;
-       border: 1px solid #ccc;
-       border-bottom: 0px;
-       overflow: hidden;
-}
-
-.flexigrid div.hDiv th.sorted {
-       background: url(images/wbg.gif) repeat-x 0px -1px;
-       border-bottom: 0px solid #ccc;
-}
-
-.flexigrid div.hDiv th.thOver {
-       
-}
-
-.flexigrid div.hDiv th.thOver div,.flexigrid div.hDiv th.sorted.thOver div
-       {
-       border-bottom: 1px solid orange;
-       padding-bottom: 4px;
-}
-
-.flexigrid div.hDiv th.sorted div {
-       border-bottom: 0px solid #ccc;
-       padding-bottom: 5px;
-}
-
-.flexigrid div.hDiv th.thMove {
-       background: #fff;
-       color: #fff;
-}
-
-.flexigrid div.hDiv th.sorted.thMove div {
-       border-bottom: 1px solid #fff;
-       padding-bottom: 4px
-}
-
-.flexigrid div.hDiv th.thMove div {
-       background: #fff !important;
-}
-
-.flexigrid div.hDiv th div.sdesc {
-       background: url(images/dn.png) no-repeat center top;
-}
-
-.flexigrid div.hDiv th div.sasc {
-       background: url(images/up.png) no-repeat center top;
-}
-
-.flexigrid div.bDiv td {
-       border-bottom: 1px solid #fff;
-       vertical-align: top;
-       white-space: nowrap;
-}
-
-.flexigrid div.hDiv th div {
-       
-}
-
-.flexigrid span.cdropleft {
-       display: block;
-       background: url(images/prev.gif) no-repeat -4px center;
-       width: 24px;
-       height: 24px;
-       position: relative;
-       top: -24px;
-       margin-bottom: -24px;
-       z-index: 3;
-}
-
-.flexigrid div.hDiv span.cdropright {
-       display: block;
-       background: url(images/next.gif) no-repeat 12px center;
-       width: 24px;
-       height: 24px;
-       float: right;
-       position: relative;
-       top: -24px;
-       margin-bottom: -24px;
-}
-
-.flexigrid div.bDiv td div {
-       border-top: 0px solid #fff;
-       padding-bottom: 4px;
-}
-
-.flexigrid tr td.sorted {
-       background: #f3f3f3;
-       border-right: 1px solid #ddd;
-       border-bottom: 1px solid #f3f3f3;
-}
-
-.flexigrid tr td.sorted div {
-       
-}
-
-.flexigrid tr.erow td {
-       background: #f7f7f7;
-       border-bottom: 1px solid #f7f7f7;
-}
-
-.flexigrid tr.erow td.sorted {
-       background: #e3e3e3;
-       border-bottom: 1px solid #e3e3e3;
-}
-
-.flexigrid tr.erow td.sorted div {
-       
-}
-
-.flexigrid div.bDiv tr:hover td,.flexigrid div.bDiv tr:hover td.sorted,.flexigrid div.bDiv tr.trOver td.sorted,.flexigrid div.bDiv tr.trOver td
-       {
-       background: #d9ebf5;
-       border-left: 1px solid #eef8ff;
-       border-bottom: 1px dotted #a8d8eb;
-}
-
-.flexigrid div.bDiv tr.trSelected:hover td,.flexigrid div.bDiv tr.trSelected:hover td.sorted,.flexigrid div.bDiv tr.trOver.trSelected td.sorted,.flexigrid div.bDiv tr.trOver.trSelected td,.flexigrid tr.trSelected td.sorted,.flexigrid tr.trSelected td
-       {
-       background: #d5effc url(images/hl.png) repeat-x top;
-       border-right: 1px solid #d2e3ec;
-       border-left: 1px solid #eef8ff;
-       border-bottom: 1px solid #a8d8eb;
-}
-
-/* novstripe adjustments */
-.flexigrid.novstripe .bDiv table {
-       border-bottom: 1px solid #ccc;
-       border-right: 1px solid #ccc;
-}
-
-.flexigrid.novstripe  div.bDiv td {
-       border-right-color: #fff;
-}
-
-.flexigrid.novstripe div.bDiv tr.erow td.sorted {
-       border-right-color: #e3e3e3;
-}
-
-.flexigrid.novstripe div.bDiv tr td.sorted {
-       border-right-color: #f3f3f3;
-}
-
-.flexigrid.novstripe  div.bDiv tr.erow td {
-       border-right-color: #f7f7f7;
-       border-left-color: #f7f7f7;
-}
-
-.flexigrid.novstripe div.bDiv tr.trSelected:hover td,.flexigrid.novstripe div.bDiv tr.trSelected:hover td.sorted,.flexigrid.novstripe div.bDiv tr.trOver.trSelected td.sorted,.flexigrid.novstripe div.bDiv tr.trOver.trSelected td,.flexigrid.novstripe tr.trSelected td.sorted,.flexigrid.novstripe tr.trSelected td
-       {
-       border-right: 1px solid #0066FF;
-       border-left: 1px solid #0066FF;
-}
-
-.flexigrid.novstripe div.bDiv tr.trOver td,.flexigrid.novstripe div.bDiv tr:hover td
-       {
-       border-left-color: #d9ebf5;
-       border-right-color: #d9ebf5;
-}
-
-/* end novstripe */
-.flexigrid div.pDiv {
-       background: url(images/wbg.gif) repeat-x 0 -1px;
-       border: 1px solid #ccc;
-       border-top: 0px;
-       overflow: hidden;
-       white-space: nowrap;
-       position: relative;
-}
-
-.flexigrid div.pDiv div.pDiv2 {
-       margin: 3px;
-       margin-left: -2px;
-       float: left;
-       width: 1024px;
-}
-
-div.pGroup {
-       float: left;
-       background: none;
-       height: 24px;
-       margin: 0px 5px;
-}
-
-.flexigrid div.pDiv .pPageStat,.flexigrid div.pDiv .pcontrol {
-       position: relative;
-       top: 5px;
-       overflow: visible;
-}
-
-.flexigrid div.pDiv input {
-       vertical-align: text-top;
-       position: relative;
-       top: -5px;
-       margin: 3px;
-}
-
-.flexigrid div.pDiv select {
-       margin: 3px;
-}
-
-.flexigrid div.pDiv  div.pButton {
-       float: left;
-       width: 22px;
-       height: 22px;
-       border: 0px;
-       cursor: pointer;
-       overflow: hidden;
-}
-
-.flexigrid div.pDiv  div.pButton:hover,.flexigrid div.pDiv  div.pButton.pBtnOver
-       {
-       width: 20px;
-       height: 20px;
-       border: 1px solid #ccc;
-       cursor: pointer;
-}
-
-.flexigrid div.pDiv  div.pButton span {
-       width: 20px;
-       height: 20px;
-       display: block;
-       float: left;
-}
-
-.flexigrid div.pDiv  div.pButton:hover span,.flexigrid div.pDiv  div.pButton.pBtnOver span
-       {
-       width: 19px;
-       height: 19px;
-       border-top: 1px solid #fff;
-       border-left: 1px solid #fff;
-}
-
-.flexigrid .pSearch {
-       background: url(images/magnifier.png) no-repeat center;
-}
-
-.flexigrid .pFirst {
-       background: url(images/first.gif) no-repeat center;
-}
-
-.flexigrid .pPrev {
-       background: url(images/prev.gif) no-repeat center;
-}
-
-.flexigrid .pNext {
-       background: url(images/next.gif) no-repeat center;
-}
-
-.flexigrid .pLast {
-       background: url(images/last.gif) no-repeat center;
-}
-
-.flexigrid .pReload {
-       background: url(images/load.png) no-repeat center;
-}
-
-.flexigrid .pReload.loading {
-       background: url(images/load.gif) no-repeat center;
-}
-
-/* ie adjustments */
-.flexigrid.ie div.hDiv th div,.flexigrid.ie  div.bDiv td  div,div.colCopy.ie div
-       /* common inner cell properties*/ {
-       overflow: hidden;
-}
diff --git a/src/main/resources/META-INF/resources/designer/css/flexigrid/css/flexigrid.less b/src/main/resources/META-INF/resources/designer/css/flexigrid/css/flexigrid.less
deleted file mode 100644 (file)
index 1fc29fb..0000000
+++ /dev/null
@@ -1,671 +0,0 @@
-@charset "UTF-8";
-
-@basecolor: #fff;
-@forecolor: #000;
-
-@borderlight1: #fff;
-@borderlight2: #eee;
-@borderlight3: #ddd;
-@borderlight4: #ccc;
-@borderlight5: #bbb;
-@borderlight6: #aaa;
-@borderlight7: #f7f7f7;
-@borderlight8: #f3f3f3;
-@borderlight9: #eef8ff;
-@borderlight10: #e3e3e3;
-@borderlight11: #d9ebf5;
-@borderlight12: #d2e3ec;
-@borderlight13: #a8d8eb;
-@borderlight14: #999;
-@borderlight15: #316ac5;
-@borderlight16: #0066FF;
-
-@back1: #fafafa;
-@back2: #f7f7f7;
-@back3: #f3f3f3;
-@back4: #eee;
-@back5: #e3e3e3;
-@back6: #d5effc;
-
-.background-gradient (@start: #000) {
-       background: @start;
-       background: -moz-linear-gradient(top,  @start 0%, darken(@start,10%) 100%);
-       background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,@start), color-stop(100%,darken(@start,10%)));
-       background: -webkit-linear-gradient(top,  @start 0%,darken(@start,10%) 100%);
-       background: -o-linear-gradient(top,  @start 0%,darken(@start,10%) 100%);
-       background: -ms-linear-gradient(top,  @start 0%,darken(@start,10%) 100%);
-       background: linear-gradient(to bottom,  @start 0%,darken(@start,10%) 100%);
-       filter: progid:DXImageTransform.Microsoft.gradient( startColorstr=@start, endColorstr=darken(@start,10%),GradientType=0 );
-}
-
-/* CSS Document */
-.flexigrid {
-       font-family: Arial, Helvetica, sans-serif;
-       font-size: 11px;
-       line-height: normal;
-       position: relative;
-       border: 0px solid @borderlight2;
-       overflow: hidden;
-       color: @forecolor;
-}
-
-.flexigrid.hideBody {
-       height: 26px !important;
-       border-bottom: 1px solid @borderlight4;
-}
-
-.ie6fullwidthbug {
-       border-right: 0px solid @borderlight4;
-       padding-right: 2px;
-}
-
-.flexigrid div.nDiv {
-       background: @back4 url(images/line.gif) repeat-y -1px top;
-       border: 1px solid @borderlight4;
-       border-top: 0px;
-       overflow: auto;
-       left: 0px;
-       position: absolute;
-       z-index: 999;
-       float: left;
-}
-
-.flexigrid div.nDiv table {
-       margin: 2px;
-}
-
-.flexigrid div.hDivBox {
-       float: left;
-       padding-right: 40px;
-}
-
-.flexigrid div.bDiv table {
-       margin-bottom: 10px;
-}
-
-.flexigrid div.bDiv table.autoht {
-       border-bottom: 0px;
-       margin-bottom: 0px;
-}
-
-.flexigrid div.nDiv td {
-       padding: 2px 3px;
-       border: 1px solid @borderlight2;
-       cursor: default;
-}
-
-.flexigrid div.nDiv tr:hover td,.flexigrid div.nDiv tr.ndcolover td {
-       background: @back6 url(images/hl.png) repeat-x top;
-       border: 1px solid @borderlight13;
-}
-
-.flexigrid div.nDiv td.ndcol1 {
-       border-right: 1px solid @borderlight4;
-}
-
-.flexigrid div.nDiv td.ndcol2 {
-       border-left: 1px solid @borderlight1;
-       padding-right: 10px;
-}
-
-.flexigrid div.nDiv tr:hover td.ndcol1,.flexigrid div.nDiv tr.ndcolover td.ndcol1
-       {
-       border-right: 1px solid @borderlight12;
-}
-
-.flexigrid div.nDiv tr:hover td.ndcol2,.flexigrid div.nDiv tr.ndcolover td.ndcol2
-       {
-       border-left: 1px solid @borderlight9;
-}
-
-.flexigrid div.nBtn {
-       position: absolute;
-       height: 24px;
-       width: 14px;
-       z-index: 900;
-       background: @back1 url(images/fhbg.gif) repeat-x bottom;
-       /*.background-gradient(@back1);*/
-       border: 0px solid @borderlight4;
-       border-left: 1px solid @borderlight4;
-       top: 0px;
-       left: 0px;
-       margin-top: 1px;
-       cursor: pointer;
-       display: none;
-}
-
-.flexigrid div.nBtn div {
-       height: 24px;
-       width: 12px;
-       border-left: 1px solid @borderlight1;
-       float: left;
-       background: url(images/ddn.png) no-repeat center;
-}
-
-.flexigrid div.nBtn.srtd {
-       background: url(images/wbg.gif) repeat-x 0px -1px;
-}
-
-.flexigrid div.mDiv {
-       background: url(images/wbg.gif) repeat-x top;
-       border: 1px solid @borderlight4;
-       border-bottom: 0px;
-       border-top: 0px;
-       font-weight: bold;
-       display: block;
-       overflow: hidden;
-       white-space: nowrap;
-       position: relative;
-}
-
-.flexigrid div.mDiv div {
-       padding: 6px;
-       white-space: nowrap;
-}
-
-.flexigrid div.mDiv div.ptogtitle {
-       position: absolute;
-       top: 4px;
-       right: 3px;
-       padding: 0px;
-       height: 16px;
-       width: 16px;
-       overflow: hidden;
-       border: 1px solid @borderlight4;
-       cursor: pointer;
-}
-
-.flexigrid div.mDiv div.ptogtitle:hover {
-       background-position: left -2px;
-       border-color: @borderlight5;
-}
-
-.flexigrid div.mDiv div.ptogtitle span {
-       display: block;
-       border-left: 1px solid @borderlight2;
-       border-top: 1px solid @borderlight1;
-       border-bottom: 1px solid @borderlight3;
-       width: 14px;
-       height: 14px;
-       background: url(images/uup.png) no-repeat center;
-}
-
-.flexigrid div.mDiv div.ptogtitle.vsble span {
-       background: url(images/ddn.png) no-repeat center;
-}
-
-.flexigrid div.tDiv /*toolbar*/ {
-       background: @back1 url(images/bg.gif) repeat-x top;
-       position: relative;
-       border: 1px solid @borderlight4;
-       border-bottom: 0px;
-       overflow: hidden;
-}
-
-.flexigrid div.tDiv2 {
-       float: left;
-       clear: both;
-       padding: 1px;
-}
-
-.flexigrid div.sDiv /*toolbar*/ {
-       background: @back1 url(images/bg.gif) repeat-x top;
-       position: relative;
-       border: 1px solid @borderlight4;
-       border-top: 0px;
-       overflow: hidden;
-       display: none;
-}
-
-.flexigrid div.sDiv2 {
-       float: left;
-       clear: both;
-       padding: 5px;
-       padding-left: 5px;
-       width: 1024px;
-}
-
-.flexigrid div.sDiv2 input,.flexigrid div.sDiv2 select {
-       vertical-align: middle;
-}
-
-.flexigrid div.btnseparator {
-       float: left;
-       height: 22px;
-       border-left: 1px solid @borderlight4;
-       border-right: 1px solid @borderlight1;
-       margin: 1px;
-}
-
-.flexigrid div.fbutton {
-       float: left;
-       display: block;
-       cursor: pointer;
-       padding: 1px;
-}
-
-.flexigrid div.fbutton div {
-       float: left;
-       padding: 1px 3px;
-}
-
-.flexigrid div.fbutton span {
-       float: left;
-       display: block;
-       padding: 3px;
-}
-
-.flexigrid div.fbutton:hover,.flexigrid div.fbutton.fbOver {
-       padding: 0px;
-       border: 1px solid @borderlight4;
-}
-
-.flexigrid div.fbutton:hover div,.flexigrid div.fbutton.fbOver div {
-       padding: 0px 2px;
-       border-left: 1px solid @borderlight1;
-       border-top: 1px solid @borderlight1;
-       border-right: 1px solid @borderlight2;
-       border-bottom: 1px solid @borderlight2;
-}
-
-/* end toolbar*/
-.flexigrid div.hDiv {
-       background: @back1 url(images/fhbg.gif) repeat-x bottom;
-       /*.background-gradient(@back1);*/
-       position: relative;
-       border: 1px solid @borderlight4;
-       border-bottom: 0px;
-       overflow: hidden;
-}
-
-.flexigrid div.hDiv table {
-       border-right: 1px solid @borderlight1;
-}
-
-.flexigrid div.cDrag {
-       float: left;
-       position: absolute;
-       z-index: 2;
-       overflow: visible;
-}
-
-.flexigrid div.cDrag div {
-       float: left;
-       background: none;
-       display: block;
-       position: absolute;
-       height: 24px;
-       width: 5px;
-       cursor: col-resize;
-}
-
-.flexigrid div.cDrag div:hover,.flexigrid div.cDrag div.dragging {
-       background: url(images/line.gif) repeat-y 2px center;
-}
-
-.flexigrid div.iDiv {
-       border: 1px solid @borderlight15;
-       position: absolute;
-       overflow: visible;
-       background: none;
-}
-
-.flexigrid div.iDiv input,.flexigrid div.iDiv select,.flexigrid div.iDiv textarea
-       {
-       font-family: Arial, Helvetica, sans-serif;
-       font-size: 11px;
-}
-
-.flexigrid div.iDiv input.tb {
-       border: 0px;
-       padding: 0px;
-       width: 100%;
-       height: 100%;
-       padding: 0px;
-       background: none;
-}
-
-.flexigrid div.bDiv {
-       border: 1px solid @borderlight4;
-       border-top: 0px;
-       background: @basecolor;
-       overflow: auto;
-       position: relative;
-}
-
-.flexigrid div.bDiv table {
-       border-bottom: 1px solid @borderlight4;
-}
-
-.flexigrid div.hGrip {
-       position: absolute;
-       top: 0px;
-       right: 0px;
-       height: 5px;
-       width: 5px;
-       background: url(images/line.gif) repeat-x center;
-       margin-right: 1px;
-       cursor: col-resize;
-}
-
-.flexigrid div.hGrip:hover,.flexigrid div.hGrip.hgOver {
-       border-right: 1px solid @borderlight14;
-       margin-right: 0px;
-}
-
-.flexigrid div.vGrip {
-       height: 5px;
-       overflow: hidden;
-       position: relative;
-       background: @back1 url(images/wbg.gif) repeat-x 0px -1px;
-       border: 1px solid @borderlight4;
-       border-top: 0px;
-       text-align: center;
-       cursor: row-resize;
-}
-
-.flexigrid div.vGrip span {
-       display: block;
-       margin: 1px auto;
-       width: 20px;
-       height: 1px;
-       overflow: hidden;
-       border-top: 1px solid @borderlight6;
-       border-bottom: 1px solid @borderlight6;
-       background: none;
-}
-
-.flexigrid div.hDiv th,.flexigrid  div.bDiv td
-       /* common cell properties*/ {
-       text-align: left;
-       border-right: 1px solid @borderlight3;
-       border-left: 1px solid @borderlight1;
-       overflow: hidden;
-       vertical-align: top !important;
-       padding-left: 0;
-       padding-right: 0;
-}
-
-.flexigrid div.hDiv th div,.flexigrid  div.bDiv td  div,div.colCopy div
-       /* common inner cell properties*/ {
-       padding: 5px;
-       border-left: 0px solid @borderlight1;
-}
-
-.flexigrid div.hDiv th,div.colCopy {
-       font-weight: normal;
-       height: 24px;
-       cursor: default;
-       white-space: nowrap;
-       overflow: hidden;
-}
-
-div.colCopy {
-       font-family: Arial, Helvetica, sans-serif;
-       font-size: 11px;
-       background: @back1 url(images/fhbg.gif) repeat-x bottom;
-       /*.background-gradient(@back1);*/
-       border: 1px solid @borderlight4;
-       border-bottom: 0px;
-       overflow: hidden;
-}
-
-.flexigrid div.hDiv th.sorted {
-       background: url(images/wbg.gif) repeat-x 0px -1px;
-       border-bottom: 0px solid @borderlight4;
-}
-
-.flexigrid div.hDiv th.thOver {
-       
-}
-
-.flexigrid div.hDiv th.thOver div,.flexigrid div.hDiv th.sorted.thOver div
-       {
-       border-bottom: 1px solid orange;
-       padding-bottom: 4px;
-}
-
-.flexigrid div.hDiv th.sorted div {
-       border-bottom: 0px solid @borderlight4;
-       padding-bottom: 5px;
-}
-
-.flexigrid div.hDiv th.thMove {
-       background: @basecolor;
-       color: @basecolor;
-}
-
-.flexigrid div.hDiv th.sorted.thMove div {
-       border-bottom: 1px solid @borderlight1;
-       padding-bottom: 4px
-}
-
-.flexigrid div.hDiv th.thMove div {
-       background: @basecolor !important;
-}
-
-.flexigrid div.hDiv th div.sdesc {
-       background: url(images/dn.png) no-repeat center top;
-}
-
-.flexigrid div.hDiv th div.sasc {
-       background: url(images/up.png) no-repeat center top;
-}
-
-.flexigrid div.bDiv td {
-       border-bottom: 1px solid @borderlight1;
-       vertical-align: top;
-       white-space: nowrap;
-}
-
-.flexigrid div.hDiv th div {
-       
-}
-
-.flexigrid span.cdropleft {
-       display: block;
-       background: url(images/prev.gif) no-repeat -4px center;
-       width: 24px;
-       height: 24px;
-       position: relative;
-       top: -24px;
-       margin-bottom: -24px;
-       z-index: 3;
-}
-
-.flexigrid div.hDiv span.cdropright {
-       display: block;
-       background: url(images/next.gif) no-repeat 12px center;
-       width: 24px;
-       height: 24px;
-       float: right;
-       position: relative;
-       top: -24px;
-       margin-bottom: -24px;
-}
-
-.flexigrid div.bDiv td div {
-       border-top: 0px solid @borderlight1;
-       padding-bottom: 4px;
-}
-
-.flexigrid tr td.sorted {
-       background: @back3;
-       border-right: 1px solid @borderlight3;
-       border-bottom: 1px solid @borderlight8;
-}
-
-.flexigrid tr td.sorted div {
-       
-}
-
-.flexigrid tr.erow td {
-       background: @back2;
-       border-bottom: 1px solid @borderlight7;
-}
-
-.flexigrid tr.erow td.sorted {
-       background: @back5;
-       border-bottom: 1px solid @borderlight10;
-}
-
-.flexigrid tr.erow td.sorted div {
-       
-}
-
-.flexigrid div.bDiv tr:hover td,.flexigrid div.bDiv tr:hover td.sorted,.flexigrid div.bDiv tr.trOver td.sorted,.flexigrid div.bDiv tr.trOver td
-       {
-       background: @borderlight11;
-       border-left: 1px solid @borderlight9;
-       border-bottom: 1px dotted @borderlight13;
-}
-
-.flexigrid div.bDiv tr.trSelected:hover td,.flexigrid div.bDiv tr.trSelected:hover td.sorted,.flexigrid div.bDiv tr.trOver.trSelected td.sorted,.flexigrid div.bDiv tr.trOver.trSelected td,.flexigrid tr.trSelected td.sorted,.flexigrid tr.trSelected td
-       {
-       background: @back6 url(images/hl.png) repeat-x top;
-       border-right: 1px solid @borderlight12;
-       border-left: 1px solid @borderlight9;
-       border-bottom: 1px solid @borderlight13;
-}
-
-/* novstripe adjustments */
-.flexigrid.novstripe .bDiv table {
-       border-bottom: 1px solid @borderlight4;
-       border-right: 1px solid @borderlight4;
-}
-
-.flexigrid.novstripe  div.bDiv td {
-       border-right-color: @borderlight1;
-}
-
-.flexigrid.novstripe div.bDiv tr.erow td.sorted {
-       border-right-color: @borderlight10;
-}
-
-.flexigrid.novstripe div.bDiv tr td.sorted {
-       border-right-color: @borderlight8;
-}
-
-.flexigrid.novstripe  div.bDiv tr.erow td {
-       border-right-color: @borderlight7;
-       border-left-color: @borderlight7;
-}
-
-.flexigrid.novstripe div.bDiv tr.trSelected:hover td,.flexigrid.novstripe div.bDiv tr.trSelected:hover td.sorted,.flexigrid.novstripe div.bDiv tr.trOver.trSelected td.sorted,.flexigrid.novstripe div.bDiv tr.trOver.trSelected td,.flexigrid.novstripe tr.trSelected td.sorted,.flexigrid.novstripe tr.trSelected td
-       {
-       border-right: 1px solid @borderlight16;
-       border-left: 1px solid @borderlight16;
-}
-
-.flexigrid.novstripe div.bDiv tr.trOver td,.flexigrid.novstripe div.bDiv tr:hover td
-       {
-       border-left-color: @borderlight11;
-       border-right-color: @borderlight11;
-}
-
-/* end novstripe */
-.flexigrid div.pDiv {
-       background: url(images/wbg.gif) repeat-x 0 -1px;
-       border: 1px solid @borderlight4;
-       border-top: 0px;
-       overflow: hidden;
-       white-space: nowrap;
-       position: relative;
-}
-
-.flexigrid div.pDiv div.pDiv2 {
-       margin: 3px;
-       margin-left: -2px;
-       float: left;
-       width: 1024px;
-}
-
-div.pGroup {
-       float: left;
-       background: none;
-       height: 24px;
-       margin: 0px 5px;
-}
-
-.flexigrid div.pDiv .pPageStat,.flexigrid div.pDiv .pcontrol {
-       position: relative;
-       top: 5px;
-       overflow: visible;
-}
-
-.flexigrid div.pDiv input {
-       vertical-align: text-top;
-       position: relative;
-       top: -5px;
-       margin: 3px;
-}
-
-.flexigrid div.pDiv select {
-       margin: 3px;
-}
-
-.flexigrid div.pDiv  div.pButton {
-       float: left;
-       width: 22px;
-       height: 22px;
-       border: 0px;
-       cursor: pointer;
-       overflow: hidden;
-}
-
-.flexigrid div.pDiv  div.pButton:hover,.flexigrid div.pDiv  div.pButton.pBtnOver
-       {
-       width: 20px;
-       height: 20px;
-       border: 1px solid @borderlight4;
-       cursor: pointer;
-}
-
-.flexigrid div.pDiv  div.pButton span {
-       width: 20px;
-       height: 20px;
-       display: block;
-       float: left;
-}
-
-.flexigrid div.pDiv  div.pButton:hover span,.flexigrid div.pDiv  div.pButton.pBtnOver span
-       {
-       width: 19px;
-       height: 19px;
-       border-top: 1px solid @borderlight1;
-       border-left: 1px solid @borderlight1;
-}
-
-.flexigrid .pSearch {
-       background: url(images/magnifier.png) no-repeat center;
-}
-
-.flexigrid .pFirst {
-       background: url(images/first.gif) no-repeat center;
-}
-
-.flexigrid .pPrev {
-       background: url(images/prev.gif) no-repeat center;
-}
-
-.flexigrid .pNext {
-       background: url(images/next.gif) no-repeat center;
-}
-
-.flexigrid .pLast {
-       background: url(images/last.gif) no-repeat center;
-}
-
-.flexigrid .pReload {
-       background: url(images/load.png) no-repeat center;
-}
-
-.flexigrid .pReload.loading {
-       background: url(images/load.gif) no-repeat center;
-}
-
-/* ie adjustments */
-.flexigrid.ie div.hDiv th div,.flexigrid.ie  div.bDiv td  div,div.colCopy.ie div
-       /* common inner cell properties*/ {
-       overflow: hidden;
-}
\ No newline at end of file
diff --git a/src/main/resources/META-INF/resources/designer/css/flexigrid/css/flexigrid.pack.css b/src/main/resources/META-INF/resources/designer/css/flexigrid/css/flexigrid.pack.css
deleted file mode 100644 (file)
index cd79960..0000000
+++ /dev/null
@@ -1,96 +0,0 @@
-@charset UTF-8;
-.flexigrid{font-family:Arial, Helvetica, sans-serif;font-size:11px;position:relative;border:0 solid #eee;overflow:hidden;color:#000}
-.flexigrid.hideBody{height:26px!important;border-bottom:1px solid #ccc}
-.ie6fullwidthbug{border-right:0 solid #ccc;padding-right:2px}
-.flexigrid div.nDiv{background:#eee url(images/line.gif) repeat-y -1px top;border:1px solid #ccc;border-top:0;overflow:auto;left:0;position:absolute;z-index:999;float:left}
-.flexigrid div.nDiv table{margin:2px}
-.flexigrid div.hDivBox{float:left;padding-right:40px}
-.flexigrid div.bDiv table{margin-bottom:10px;border-bottom:1px solid #ccc}
-.flexigrid div.bDiv table.autoht{border-bottom:0;margin-bottom:0}
-.flexigrid div.nDiv td{border:1px solid #eee;cursor:default;padding:2px 3px}
-.flexigrid div.nDiv tr:hover td,.flexigrid div.nDiv tr.ndcolover td{background:#d5effc url(images/hl.png) repeat-x top;border:1px solid #a8d8eb}
-.flexigrid div.nDiv td.ndcol1{border-right:1px solid #ccc}
-.flexigrid div.nDiv td.ndcol2{border-left:1px solid #fff;padding-right:10px}
-.flexigrid div.nDiv tr:hover td.ndcol1,.flexigrid div.nDiv tr.ndcolover td.ndcol1{border-right:1px solid #d2e3ec}
-.flexigrid div.nDiv tr:hover td.ndcol2,.flexigrid div.nDiv tr.ndcolover td.ndcol2{border-left:1px solid #eef8ff}
-.flexigrid div.nBtn{position:absolute;height:24px;width:14px;z-index:900;background:#fafafa url(images/fhbg.gif) repeat-x bottom;border:0 solid #ccc;border-left:1px solid #ccc;top:0;left:0;margin-top:1px;cursor:pointer;display:none}
-.flexigrid div.nBtn div{height:24px;width:12px;border-left:1px solid #fff;float:left;background:url(images/ddn.png) no-repeat center}
-.flexigrid div.nBtn.srtd{background:url(images/wbg.gif) repeat-x 0 -1px}
-.flexigrid div.mDiv{background:url(images/wbg.gif) repeat-x top;border:1px solid #ccc;border-bottom:0;border-top:0;font-weight:700;display:block;overflow:hidden;white-space:nowrap;position:relative}
-.flexigrid div.mDiv div{white-space:nowrap;padding:6px}
-.flexigrid div.mDiv div.ptogtitle{position:absolute;top:4px;right:3px;height:16px;width:16px;overflow:hidden;border:1px solid #ccc;cursor:pointer;padding:0}
-.flexigrid div.mDiv div.ptogtitle:hover{background-position:left -2px;border-color:#bbb}
-.flexigrid div.mDiv div.ptogtitle span{display:block;border-left:1px solid #eee;border-top:1px solid #fff;border-bottom:1px solid #ddd;width:14px;height:14px;background:url(images/uup.png) no-repeat center}
-.flexigrid div.mDiv div.ptogtitle.vsble span{background:url(images/ddn.png) no-repeat center}
-.flexigrid div.tDiv /*toolbar*/{background:#fafafa url(images/bg.gif) repeat-x top;position:relative;border:1px solid #ccc;border-bottom:0;overflow:hidden}
-.flexigrid div.tDiv2{float:left;clear:both;padding:1px}
-.flexigrid div.sDiv /*toolbar*/{background:#fafafa url(images/bg.gif) repeat-x top;position:relative;border:1px solid #ccc;border-top:0;overflow:hidden;display:none}
-.flexigrid div.sDiv2{float:left;clear:both;width:1024px;padding:5px}
-.flexigrid div.sDiv2 input,.flexigrid div.sDiv2 select{vertical-align:middle}
-.flexigrid div.btnseparator{float:left;height:22px;border-left:1px solid #ccc;border-right:1px solid #fff;margin:1px}
-.flexigrid div.fbutton{float:left;display:block;cursor:pointer;padding:1px}
-.flexigrid div.fbutton div{float:left;padding:1px 3px}
-.flexigrid div.fbutton span{float:left;display:block;padding:3px}
-.flexigrid div.fbutton:hover,.flexigrid div.fbutton.fbOver{border:1px solid #ccc;padding:0}
-.flexigrid div.fbutton:hover div,.flexigrid div.fbutton.fbOver div{border-left:1px solid #fff;border-top:1px solid #fff;border-right:1px solid #eee;border-bottom:1px solid #eee;padding:0 2px}
-.flexigrid div.hDiv{background:#fafafa url(images/fhbg.gif) repeat-x bottom;position:relative;border:1px solid #ccc;border-bottom:0;overflow:hidden}
-.flexigrid div.hDiv table{border-right:1px solid #fff}
-.flexigrid div.cDrag{float:left;position:absolute;z-index:2;overflow:visible}
-.flexigrid div.cDrag div{float:left;background:none;display:block;position:absolute;height:24px;width:5px;cursor:col-resize}
-.flexigrid div.cDrag div:hover,.flexigrid div.cDrag div.dragging{background:url(images/line.gif) repeat-y 2px center}
-.flexigrid div.iDiv{border:1px solid #316ac5;position:absolute;overflow:visible;background:none}
-.flexigrid div.iDiv input,.flexigrid div.iDiv select,.flexigrid div.iDiv textarea{font-family:Arial, Helvetica, sans-serif;font-size:11px}
-.flexigrid div.iDiv input.tb{border:0;width:100%;height:100%;background:none;padding:0}
-.flexigrid div.bDiv{border:1px solid #ccc;border-top:0;background:#fff;overflow:auto;position:relative}
-.flexigrid div.hGrip{position:absolute;top:0;right:0;height:5px;width:5px;background:url(images/line.gif) repeat-x center;margin-right:1px;cursor:col-resize}
-.flexigrid div.hGrip:hover,.flexigrid div.hGrip.hgOver{border-right:1px solid #999;margin-right:0}
-.flexigrid div.vGrip{height:5px;overflow:hidden;position:relative;background:#fafafa url(images/wbg.gif) repeat-x 0 -1px;border:1px solid #ccc;border-top:0;text-align:center;cursor:row-resize}
-.flexigrid div.vGrip span{display:block;width:20px;height:1px;overflow:hidden;border-top:1px solid #aaa;border-bottom:1px solid #aaa;background:none;margin:1px auto}
-.flexigrid div.hDiv th,.flexigrid div.bDiv td
-/* common cell properties*/{text-align:left;border-right:1px solid #ddd;border-left:1px solid #fff;overflow:hidden;vertical-align:top!important;padding-left:0;padding-right:0}
-.flexigrid div.hDiv th div,.flexigrid div.bDiv td div,div.colCopy div
-/* common inner cell properties*/{border-left:0 solid #fff;padding:5px}
-.flexigrid div.hDiv th,div.colCopy{font-weight:400;height:24px;cursor:default;white-space:nowrap;overflow:hidden}
-div.colCopy{font-family:Arial, Helvetica, sans-serif;font-size:11px;background:#fafafa url(images/fhbg.gif) repeat-x bottom;border:1px solid #ccc;border-bottom:0;overflow:hidden}
-.flexigrid div.hDiv th.sorted{background:url(images/wbg.gif) repeat-x 0 -1px;border-bottom:0 solid #ccc}
-.flexigrid div.hDiv th.thOver div,.flexigrid div.hDiv th.sorted.thOver div{border-bottom:1px solid orange;padding-bottom:4px}
-.flexigrid div.hDiv th.sorted div{border-bottom:0 solid #ccc;padding-bottom:5px}
-.flexigrid div.hDiv th.thMove{background:#fff;color:#fff}
-.flexigrid div.hDiv th.sorted.thMove div{border-bottom:1px solid #fff;padding-bottom:4px}
-.flexigrid div.hDiv th.thMove div{background:#fff!important}
-.flexigrid div.hDiv th div.sdesc{background:url(images/dn.png) no-repeat center top}
-.flexigrid div.hDiv th div.sasc{background:url(images/up.png) no-repeat center top}
-.flexigrid div.bDiv td{border-bottom:1px solid #fff;vertical-align:top;white-space:nowrap}
-.flexigrid span.cdropleft{display:block;background:url(images/prev.gif) no-repeat -4px center;width:24px;height:24px;position:relative;top:-24px;margin-bottom:-24px;z-index:3}
-.flexigrid div.hDiv span.cdropright{display:block;background:url(images/next.gif) no-repeat 12px center;width:24px;height:24px;float:right;position:relative;top:-24px;margin-bottom:-24px}
-.flexigrid div.bDiv td div{border-top:0 solid #fff;padding-bottom:4px}
-.flexigrid tr td.sorted{background:#f3f3f3;border-right:1px solid #ddd;border-bottom:1px solid #f3f3f3}
-.flexigrid tr.erow td{background:#f7f7f7;border-bottom:1px solid #f7f7f7}
-.flexigrid tr.erow td.sorted{background:#e3e3e3;border-bottom:1px solid #e3e3e3}
-.flexigrid div.bDiv tr:hover td,.flexigrid div.bDiv tr:hover td.sorted,.flexigrid div.bDiv tr.trOver td.sorted,.flexigrid div.bDiv tr.trOver td{background:#d9ebf5;border-left:1px solid #eef8ff;border-bottom:1px dotted #a8d8eb}
-.flexigrid div.bDiv tr.trSelected:hover td,.flexigrid div.bDiv tr.trSelected:hover td.sorted,.flexigrid div.bDiv tr.trOver.trSelected td.sorted,.flexigrid div.bDiv tr.trOver.trSelected td,.flexigrid tr.trSelected td.sorted,.flexigrid tr.trSelected td{background:#d5effc url(images/hl.png) repeat-x top;border-right:1px solid #d2e3ec;border-left:1px solid #eef8ff;border-bottom:1px solid #a8d8eb}
-.flexigrid.novstripe .bDiv table{border-bottom:1px solid #ccc;border-right:1px solid #ccc}
-.flexigrid.novstripe div.bDiv td{border-right-color:#fff}
-.flexigrid.novstripe div.bDiv tr.erow td.sorted{border-right-color:#e3e3e3}
-.flexigrid.novstripe div.bDiv tr td.sorted{border-right-color:#f3f3f3}
-.flexigrid.novstripe div.bDiv tr.erow td{border-right-color:#f7f7f7;border-left-color:#f7f7f7}
-.flexigrid.novstripe div.bDiv tr.trSelected:hover td,.flexigrid.novstripe div.bDiv tr.trSelected:hover td.sorted,.flexigrid.novstripe div.bDiv tr.trOver.trSelected td.sorted,.flexigrid.novstripe div.bDiv tr.trOver.trSelected td,.flexigrid.novstripe tr.trSelected td.sorted,.flexigrid.novstripe tr.trSelected td{border-right:1px solid #06F;border-left:1px solid #06F}
-.flexigrid.novstripe div.bDiv tr.trOver td,.flexigrid.novstripe div.bDiv tr:hover td{border-left-color:#d9ebf5;border-right-color:#d9ebf5}
-.flexigrid div.pDiv{background:url(images/wbg.gif) repeat-x 0 -1px;border:1px solid #ccc;border-top:0;overflow:hidden;white-space:nowrap;position:relative}
-.flexigrid div.pDiv div.pDiv2{float:left;width:1024px;margin:3px 3px 3px -2px}
-div.pGroup{float:left;background:none;height:24px;margin:0 5px}
-.flexigrid div.pDiv .pPageStat,.flexigrid div.pDiv .pcontrol{position:relative;top:5px;overflow:visible}
-.flexigrid div.pDiv input{vertical-align:text-top;position:relative;top:-5px}
-.flexigrid div.pDiv div.pButton{float:left;width:22px;height:22px;border:0;cursor:pointer;overflow:hidden}
-.flexigrid div.pDiv div.pButton:hover,.flexigrid div.pDiv div.pButton.pBtnOver{width:20px;height:20px;border:1px solid #ccc;cursor:pointer}
-.flexigrid div.pDiv div.pButton span{width:20px;height:20px;display:block;float:left}
-.flexigrid div.pDiv div.pButton:hover span,.flexigrid div.pDiv div.pButton.pBtnOver span{width:19px;height:19px;border-top:1px solid #fff;border-left:1px solid #fff}
-.flexigrid .pSearch{background:url(images/magnifier.png) no-repeat center}
-.flexigrid .pFirst{background:url(images/first.gif) no-repeat center}
-.flexigrid .pPrev{background:url(images/prev.gif) no-repeat center}
-.flexigrid .pNext{background:url(images/next.gif) no-repeat center}
-.flexigrid .pLast{background:url(images/last.gif) no-repeat center}
-.flexigrid .pReload{background:url(images/load.png) no-repeat center}
-.flexigrid .pReload.loading{background:url(images/load.gif) no-repeat center}
-.flexigrid.ie div.hDiv th div,.flexigrid.ie div.bDiv td div,div.colCopy.ie div
-/* common inner cell properties*/{overflow:hidden}
diff --git a/src/main/resources/META-INF/resources/designer/css/flexigrid/css/images/bg.gif b/src/main/resources/META-INF/resources/designer/css/flexigrid/css/images/bg.gif
deleted file mode 100644 (file)
index 9ab78a2..0000000
Binary files a/src/main/resources/META-INF/resources/designer/css/flexigrid/css/images/bg.gif and /dev/null differ
diff --git a/src/main/resources/META-INF/resources/designer/css/flexigrid/css/images/btn-sprite.gif b/src/main/resources/META-INF/resources/designer/css/flexigrid/css/images/btn-sprite.gif
deleted file mode 100644 (file)
index e827ba3..0000000
Binary files a/src/main/resources/META-INF/resources/designer/css/flexigrid/css/images/btn-sprite.gif and /dev/null differ
diff --git a/src/main/resources/META-INF/resources/designer/css/flexigrid/css/images/ddn.png b/src/main/resources/META-INF/resources/designer/css/flexigrid/css/images/ddn.png
deleted file mode 100644 (file)
index 2178f11..0000000
Binary files a/src/main/resources/META-INF/resources/designer/css/flexigrid/css/images/ddn.png and /dev/null differ
diff --git a/src/main/resources/META-INF/resources/designer/css/flexigrid/css/images/dn.png b/src/main/resources/META-INF/resources/designer/css/flexigrid/css/images/dn.png
deleted file mode 100644 (file)
index a19083b..0000000
Binary files a/src/main/resources/META-INF/resources/designer/css/flexigrid/css/images/dn.png and /dev/null differ
diff --git a/src/main/resources/META-INF/resources/designer/css/flexigrid/css/images/fhbg.gif b/src/main/resources/META-INF/resources/designer/css/flexigrid/css/images/fhbg.gif
deleted file mode 100644 (file)
index 8d459a3..0000000
Binary files a/src/main/resources/META-INF/resources/designer/css/flexigrid/css/images/fhbg.gif and /dev/null differ
diff --git a/src/main/resources/META-INF/resources/designer/css/flexigrid/css/images/first.gif b/src/main/resources/META-INF/resources/designer/css/flexigrid/css/images/first.gif
deleted file mode 100644 (file)
index 7623e73..0000000
Binary files a/src/main/resources/META-INF/resources/designer/css/flexigrid/css/images/first.gif and /dev/null differ
diff --git a/src/main/resources/META-INF/resources/designer/css/flexigrid/css/images/hl.png b/src/main/resources/META-INF/resources/designer/css/flexigrid/css/images/hl.png
deleted file mode 100644 (file)
index 6248e45..0000000
Binary files a/src/main/resources/META-INF/resources/designer/css/flexigrid/css/images/hl.png and /dev/null differ
diff --git a/src/main/resources/META-INF/resources/designer/css/flexigrid/css/images/last.gif b/src/main/resources/META-INF/resources/designer/css/flexigrid/css/images/last.gif
deleted file mode 100644 (file)
index 61483e9..0000000
Binary files a/src/main/resources/META-INF/resources/designer/css/flexigrid/css/images/last.gif and /dev/null differ
diff --git a/src/main/resources/META-INF/resources/designer/css/flexigrid/css/images/line.gif b/src/main/resources/META-INF/resources/designer/css/flexigrid/css/images/line.gif
deleted file mode 100644 (file)
index c76a16e..0000000
Binary files a/src/main/resources/META-INF/resources/designer/css/flexigrid/css/images/line.gif and /dev/null differ
diff --git a/src/main/resources/META-INF/resources/designer/css/flexigrid/css/images/load.gif b/src/main/resources/META-INF/resources/designer/css/flexigrid/css/images/load.gif
deleted file mode 100644 (file)
index 68f01d0..0000000
Binary files a/src/main/resources/META-INF/resources/designer/css/flexigrid/css/images/load.gif and /dev/null differ
diff --git a/src/main/resources/META-INF/resources/designer/css/flexigrid/css/images/load.png b/src/main/resources/META-INF/resources/designer/css/flexigrid/css/images/load.png
deleted file mode 100644 (file)
index d65defb..0000000
Binary files a/src/main/resources/META-INF/resources/designer/css/flexigrid/css/images/load.png and /dev/null differ
diff --git a/src/main/resources/META-INF/resources/designer/css/flexigrid/css/images/magnifier.png b/src/main/resources/META-INF/resources/designer/css/flexigrid/css/images/magnifier.png
deleted file mode 100644 (file)
index cf3d97f..0000000
Binary files a/src/main/resources/META-INF/resources/designer/css/flexigrid/css/images/magnifier.png and /dev/null differ
diff --git a/src/main/resources/META-INF/resources/designer/css/flexigrid/css/images/next.gif b/src/main/resources/META-INF/resources/designer/css/flexigrid/css/images/next.gif
deleted file mode 100644 (file)
index 2cd62cc..0000000
Binary files a/src/main/resources/META-INF/resources/designer/css/flexigrid/css/images/next.gif and /dev/null differ
diff --git a/src/main/resources/META-INF/resources/designer/css/flexigrid/css/images/prev.gif b/src/main/resources/META-INF/resources/designer/css/flexigrid/css/images/prev.gif
deleted file mode 100644 (file)
index b440a29..0000000
Binary files a/src/main/resources/META-INF/resources/designer/css/flexigrid/css/images/prev.gif and /dev/null differ
diff --git a/src/main/resources/META-INF/resources/designer/css/flexigrid/css/images/up.png b/src/main/resources/META-INF/resources/designer/css/flexigrid/css/images/up.png
deleted file mode 100644 (file)
index 000c065..0000000
Binary files a/src/main/resources/META-INF/resources/designer/css/flexigrid/css/images/up.png and /dev/null differ
diff --git a/src/main/resources/META-INF/resources/designer/css/flexigrid/css/images/uup.png b/src/main/resources/META-INF/resources/designer/css/flexigrid/css/images/uup.png
deleted file mode 100644 (file)
index 660db63..0000000
Binary files a/src/main/resources/META-INF/resources/designer/css/flexigrid/css/images/uup.png and /dev/null differ
diff --git a/src/main/resources/META-INF/resources/designer/css/flexigrid/css/images/wbg.gif b/src/main/resources/META-INF/resources/designer/css/flexigrid/css/images/wbg.gif
deleted file mode 100644 (file)
index 8046089..0000000
Binary files a/src/main/resources/META-INF/resources/designer/css/flexigrid/css/images/wbg.gif and /dev/null differ
diff --git a/src/main/resources/META-INF/resources/designer/css/flexigrid/css/style.css b/src/main/resources/META-INF/resources/designer/css/flexigrid/css/style.css
deleted file mode 100644 (file)
index 53a941c..0000000
+++ /dev/null
@@ -1,164 +0,0 @@
-@charset "utf-8";
-/* http://meyerweb.com/eric/tools/css/reset/ 
-   v2.0 | 20110126
-   License: none (public domain)
-*/
-
-html, body, div, span, applet, object, iframe,
-h1, h2, h3, h4, h5, h6, p, blockquote, pre,
-a, abbr, acronym, address, big, cite, code,
-del, dfn, em, img, ins, kbd, q, s, samp,
-small, strike, strong, sub, sup, tt, var,
-b, u, i, center,
-dl, dt, dd, ol, ul, li,
-fieldset, form, label, legend,
-table, caption, tbody, tfoot, thead, tr, th, td,
-article, aside, canvas, details, embed, 
-figure, figcaption, footer, header, hgroup, 
-menu, nav, output, ruby, section, summary,
-time, mark, audio, video {
-       margin: 0;
-       padding: 0;
-       border: 0;
-       font-size: 100%;
-       font: inherit;
-       vertical-align: baseline;
-}
-/* HTML5 display-role reset for older browsers */
-article, aside, details, figcaption, figure, 
-footer, header, hgroup, menu, nav, section {
-       display: block;
-}
-body {
-       line-height: 1;
-}
-ol, ul {
-       list-style: none;
-}
-blockquote, q {
-       quotes: none;
-}
-blockquote:before, blockquote:after,
-q:before, q:after {
-       content: '';
-       content: none;
-}
-table {
-       border-collapse: collapse;
-       border-spacing: 0;
-}
-
-/* CSS Document */
-body {
-       background: #333;
-       width: 960px;
-       margin: 0px;
-       padding: 20px;
-       font-family: Arial, Helvetica, sans-serif;
-       font-size: 12px;
-       color: #eee;
-}
-
-ul li {
-       background: url(images/accept.png) no-repeat left;
-       list-style: none;
-       padding: 3px 3px 3px 20px;
-       margin-left:10px;
-}
-
-ul, ol {
-       margin-bottom:10px;
-}
-ol li {
-       list-style: none;
-       padding: 10px 10px 5px;
-}
-ol li div.question {
-       font-weight:bold;
-       color:#ccc;
-       margin-bottom:2px;
-}
-
-a {
-       text-decoration: none;
-       color: #0066FF;
-}
-
-h1 {
-       font-size: 26px;
-       font-weight: normal;
-       margin: 0px;
-       color: #0099FF;
-}
-
-h2 {
-       font-size:15px;
-       font-weight:bold;
-       margin:15px 0 5px;      
-}
-
-.code {
-       background: #555;
-       padding: 10px;
-       margin-bottom: 10px;
-       display: none;
-       color: #eee;
-}
-
-.title {
-       background: #0099FF;
-       color: #fff;
-       padding: 10px;
-}
-
-.bborder {
-       background: #eee;
-       border: 0px solid #ccc;
-       padding: 3px;
-}
-
-.update {
-       border: 1px solid #777;
-       overflow: hidden;
-       margin-top:20px;
-}
-
-.update h3 {
-       margin:5px 0 5px 10px;
-       font-weight:bold;
-       font-size:1.1em;        
-}
-.update.fh {
-       height: auto;
-}
-
-.update p {
-       margin: 10px;
-}
-
-.update h2 {
-       cursor: pointer;
-       display: block;
-       padding: 5px;
-       color: #fff;
-       position: relative;
-       text-transform: uppercase;
-       font-size: 12px;
-       letter-spacing: 2px;
-       border-left: 0px solid #06f;
-       border-bottom: 2px solid #0066FF;
-       font-weight:bold;
-       margin:0 0 3px;
-}
-
-.flexigrid div.fbutton .add {
-       background: url(images/add.png) no-repeat center left;
-}
-
-.flexigrid div.fbutton .delete {
-    background: url(images/close.png) no-repeat center left;
-}
-
-.flexigrid div.fbutton .edit {
-       background: url(images/edit.png) no-repeat center left;
-}
diff --git a/src/main/resources/META-INF/resources/designer/css/kendo.common-material.core.css b/src/main/resources/META-INF/resources/designer/css/kendo.common-material.core.css
deleted file mode 100644 (file)
index 13d876f..0000000
+++ /dev/null
@@ -1,6456 +0,0 @@
-/* Kendo base CSS */
-.fake {
-  color: red;
-}
-.k-common-test-class {
-  opacity: 0;
-}
-.k-reset {
-  margin: 0;
-  padding: 0;
-  border: 0;
-  outline: 0;
-  text-decoration: none;
-  font-size: 100%;
-  list-style: none;
-}
-.k-floatwrap:after,
-.k-slider-items:after,
-.k-grid-toolbar:after {
-  content: "";
-  display: block;
-  clear: both;
-  visibility: hidden;
-  height: 0;
-  overflow: hidden;
-}
-.k-floatwrap,
-.k-slider-items,
-.k-grid-toolbar {
-  display: inline-block;
-}
-.k-floatwrap,
-.k-slider-items,
-.k-grid-toolbar {
-  display: block;
-}
-/* main gradient */
-.k-block,
-.k-button,
-.k-header,
-.k-grid-header,
-.k-toolbar,
-.k-grouping-header,
-.k-tooltip,
-.k-pager-wrap,
-.k-tabstrip-items .k-item,
-.k-link.k-state-hover,
-.k-textbox,
-.k-textbox:hover,
-.k-autocomplete,
-.k-dropdown-wrap,
-.k-picker-wrap,
-.k-numeric-wrap,
-.k-autocomplete.k-state-hover,
-.k-dropdown-wrap.k-state-hover,
-.k-picker-wrap.k-state-hover,
-.k-numeric-wrap.k-state-hover,
-.k-draghandle {
-  background-repeat: repeat;
-  background-position: 0 center;
-}
-.k-link:hover {
-  text-decoration: none;
-}
-.k-state-highlight > .k-link {
-  color: inherit;
-}
-/* widget */
-.k-textbox > input,
-.k-input[type="text"],
-.k-input[type="number"],
-.k-textbox,
-.k-picker-wrap .k-input,
-.k-button {
-  font-size: 100%;
-  font-family: inherit;
-  border-style: solid;
-  border-width: 1px;
-  -webkit-appearance: none;
-}
-.k-widget,
-.k-block,
-.k-inline-block,
-.k-draghandle {
-  border-style: solid;
-  border-width: 1px;
-  -webkit-appearance: none;
-}
-.k-block,
-.k-widget {
-  line-height: normal;
-  outline: 0;
-}
-.k-widget .k-input::-ms-clear,
-.k-list-filter ::-ms-clear {
-  width: 0;
-  height: 0;
-}
-/* Block */
-.k-block {
-  padding: 2px;
-}
-/* button */
-.k-button {
-  display: inline-block;
-  margin: 0;
-  padding: 10px 14px;
-  font-family: inherit;
-  line-height: 1.72em;
-  text-align: center;
-  cursor: pointer;
-  text-decoration: none;
-}
-.k-button[disabled],
-.k-button.k-state-disabled,
-.k-state-disabled .k-button,
-.k-state-disabled .k-button:hover,
-.k-button.k-state-disabled:hover,
-.k-state-disabled .k-button:active,
-.k-button.k-state-disabled:active {
-  cursor: default;
-}
-a.k-button {
-  user-select: none;
-  text-decoration: none;
-}
-/* Override the important default line-height in Firefox 4+ */
-.k-ff input.k-button {
-  padding-bottom: 0.37em;
-  padding-top: 0.37em;
-}
-button.k-button::-moz-focus-inner,
-input.k-button::-moz-focus-inner {
-  padding: 0;
-  border: 0;
-}
-a.k-button-expand {
-  display: block;
-}
-button.k-button-expand,
-input[type="submit"].k-button-expand,
-input[type="button"].k-button-expand,
-input[type="reset"].k-button-expand {
-  width: 100%;
-}
-body .k-button-icon,
-body .k-split-button-arrow {
-  padding-left: .4em;
-  padding-right: .4em;
-}
-.k-button-icontext {
-  overflow: visible;
-  /*IE9*/
-}
-.k-toolbar .k-button-icontext {
-  padding-right: .8em;
-}
-.k-button-icontext .k-icon,
-.k-button-icontext .k-image,
-.k-button-icontext .k-sprite {
-  margin-right: 3px;
-  margin-right: .3rem;
-  margin-left: -3px;
-  margin-left: -0.3rem;
-}
-.k-button.k-button-icontext .k-icon,
-.k-button.k-button-icontext .k-image {
-  vertical-align: text-top;
-}
-.k-button.k-bare {
-  border-color: transparent !important;
-  color: inherit;
-  background: none !important;
-  box-shadow: none !important;
-  opacity: .7;
-}
-.k-button.k-bare:hover,
-.k-button.k-bare.k-state-hover,
-.k-button.k-bare:active,
-.k-button.k-bare.k-state-active,
-.k-button.k-bare.k-state-active:hover {
-  color: inherit;
-}
-.k-button.k-bare:focus,
-.k-button.k-bare .k-state-focused {
-  opacity: .8;
-}
-.k-button.k-bare:hover,
-.k-button.k-bare.k-state-hover,
-.k-button.k-bare:active,
-.k-button.k-bare.k-state-active {
-  opacity: 1;
-}
-.k-button.k-bare .k-icon,
-.k-button.k-bare .k-font-icon {
-  overflow: visible;
-}
-.k-button.k-bare:focus .k-icon,
-.k-button.k-bare .k-state-focused .k-icon,
-.k-button.k-bare:focus .k-font-icon,
-.k-button.k-bare .k-state-focused .k-font-icon {
-  text-shadow: 0 0 3px currentColor;
-}
-/* link */
-.k-link {
-  cursor: pointer;
-  outline: 0;
-  text-decoration: none;
-}
-.k-grid-header span.k-link {
-  cursor: default;
-}
-/* states */
-.k-state-disabled,
-.k-state-disabled .k-link,
-.k-state-disabled .k-icon,
-.k-state-disabled .k-button,
-.k-state-disabled .k-draghandle,
-.k-state-disabled .k-upload-button input {
-  cursor: default !important;
-  outline: 0;
-}
-@media print {
-  .k-state-disabled,
-  .k-state-disabled .k-input {
-    opacity: 1 !important;
-  }
-}
-.k-state-error {
-  border-style: ridge;
-}
-.k-state-empty {
-  font-style: italic;
-}
-/* icons */
-.k-icon.k-i-none {
-  background-image: none !important;
-  /* should never be a background on these */
-}
-/* In IE7 vertical align: middle can't be overridden */
-.k-ie8 .k-icon,
-.k-ie8 .k-sprite,
-.k-ie8 .k-tool-icon {
-  vertical-align: middle;
-}
-.k-file > .k-icon {
-  background-position: -115px -91px;
-}
-.k-image {
-  border: 0;
-}
-/* Colors */
-html .k-success-colored {
-  color: #507f50;
-  border-color: #d0dfd0;
-  background-color: #f0fff0;
-}
-html .k-info-colored {
-  color: #50607f;
-  border-color: #d0d9df;
-  background-color: #f0f9ff;
-}
-html .k-error-colored {
-  color: #7f5050;
-  border-color: #dfd0d0;
-  background-color: #fff0f0;
-}
-.k-inline-block {
-  padding: 0 2px;
-}
-/* loading */
-.k-loading,
-.k-loading-image {
-  background-color: transparent;
-  background-repeat: no-repeat;
-  background-position: center center;
-}
-.k-icon.k-i-loading {
-  background-color: transparent;
-  background-repeat: no-repeat;
-  background-position: center center;
-}
-.k-icon.k-i-loading::before {
-  content: "";
-  display: none;
-}
-.k-loading-mask,
-.k-loading-image,
-.k-loading-text {
-  position: absolute;
-}
-.k-loading-mask {
-  z-index: 100;
-}
-.k-loading-mask .k-loading-progress {
-  margin: auto;
-  position: absolute;
-  top: 0;
-  bottom: 0;
-  left: 0;
-  right: 0;
-}
-.k-loading-text {
-  text-indent: -4000px;
-  text-align: center;
-  /*rtl*/
-}
-.k-loading-image,
-.k-loading-color {
-  width: 100%;
-  height: 100%;
-}
-.k-loading-image {
-  top: 0;
-  left: 0;
-  z-index: 2;
-}
-.k-loading-color {
-  filter: alpha(opacity=30);
-  opacity: .3;
-}
-.k-content-frame {
-  border: 0;
-  width: 100%;
-  height: 100%;
-}
-.k-pane > .k-splitter-overlay {
-  filter: alpha(opacity=0);
-  opacity: 0;
-  position: absolute;
-}
-/* drag n drop */
-.k-drag-clue {
-  position: absolute;
-  z-index: 10003;
-  border-style: solid;
-  border-width: 1px;
-  font-size: .9em;
-  padding: .2em .4em;
-  white-space: nowrap;
-  cursor: default;
-}
-/* ListBox Drag Clue */
-.k-item.k-drag-clue {
-  font-size: inherit;
-}
-.k-drag-status {
-  margin-top: -3px;
-  margin-right: 4px;
-  vertical-align: middle;
-}
-.k-reorder-cue {
-  position: absolute;
-  width: 1px;
-  overflow: visible;
-}
-.k-reorder-cue .k-icon {
-  position: absolute;
-  left: -4px;
-  width: 8px;
-  height: 4px;
-}
-.k-reorder-cue .k-i-arrow-60-down {
-  top: -4px;
-  background-position: -4px -166px;
-}
-.k-reorder-cue .k-i-arrow-60-up {
-  bottom: -4px;
-  background-position: -4px -134px;
-}
-/* virtual scrollbar */
-.k-scrollbar {
-  position: absolute;
-  overflow: scroll;
-}
-.k-scrollbar-vertical {
-  top: 0;
-  right: 0;
-  width: 17px;
-  /* scrollbar width */
-  height: 100%;
-  overflow-x: hidden;
-}
-.k-touch-scrollbar {
-  display: none;
-  position: absolute;
-  z-index: 200000;
-  height: 8px;
-  width: 8px;
-  border: 1px solid #8a8a8a;
-  background-color: #858585;
-}
-@media only screen and (-webkit-min-device-pixel-ratio: 2) {
-  body .k-touch-scrollbar {
-    height: 12px;
-    width: 12px;
-    border-radius: 7px;
-  }
-}
-.k-virtual-scrollable-wrap {
-  overflow-x: auto;
-  /*needed by IE8*/
-}
-/* current time indicator */
-.k-current-time {
-  background: #f00;
-  position: absolute;
-}
-.k-current-time-arrow-down {
-  width: 0;
-  height: 0;
-  background: transparent;
-  border-bottom: 4px solid  transparent;
-  border-top: 4px solid #f00;
-  border-left: 4px solid transparent;
-  border-right: 4px solid transparent;
-}
-.k-current-time-arrow-left {
-  width: 0;
-  height: 0;
-  background: transparent;
-  border-bottom: 4px solid  transparent;
-  border-top: 4px solid transparent;
-  border-left: 4px solid transparent;
-  border-right: 4px solid #f00;
-}
-.k-current-time-arrow-right {
-  width: 0;
-  height: 0;
-  background: transparent;
-  border-bottom: 4px solid  transparent;
-  border-top: 4px solid transparent;
-  border-left: 4px solid #f00;
-  border-right: 4px solid transparent;
-}
-/* override box sizing for grid layout framework integration (Bootstrap 3, Foundation 4) */
-.k-animation-container,
-.k-widget,
-.k-widget *,
-.k-animation-container *,
-.k-widget *:before,
-.k-animation-container *:after,
-.k-block .k-header,
-.k-list-container,
-div.k-window-content {
-  box-sizing: content-box;
-}
-.k-button,
-.k-textbox,
-.k-autocomplete,
-.k-tabstrip > .k-content > .km-scroll-container,
-.k-block,
-.k-edit-cell .k-widget,
-.k-grid-edit-row .k-widget,
-.k-grid-edit-row .text-box,
-.km-actionsheet > li,
-.km-shim {
-  box-sizing: border-box;
-}
-/* Fix for Bootstrap 3 */
-.input-group .form-control {
-  box-sizing: border-box;
-}
-.form-control.k-widget {
-  padding: 0;
-}
-a.k-button:hover {
-  text-decoration: none;
-}
-/* override iOS styles in mobile Kendo */
-.km-widget,
-.km-widget * {
-  -moz-background-clip: border-box;
-  -webkit-background-clip: border-box;
-  background-clip: border-box;
-}
-input.k-checkbox,
-.k-radio {
-  display: inline;
-  opacity: 0;
-  width: 0;
-  margin: 0;
-  -webkit-appearance: none;
-  overflow: hidden;
-}
-.k-ff input.k-checkbox,
-.k-ff .k-radio {
-  position: absolute;
-}
-.k-checkbox-label,
-.k-radio-label {
-  display: inline-block;
-  position: relative;
-  padding-left: 20px;
-  vertical-align: text-top;
-  line-height: 16px;
-  cursor: pointer;
-  border-style: solid;
-  border-width: 0;
-}
-.k-checkbox-label:before {
-  content: "";
-  position: absolute;
-  top: 0;
-  left: 0;
-  border-width: 1px;
-  border-style: solid;
-  width: 16px;
-  height: 16px;
-  font-size: 16px;
-  line-height: 16px;
-  text-align: center;
-}
-.k-checkbox:indeterminate + .k-checkbox-label:after {
-  content: "";
-  position: absolute;
-  left: 8px;
-  top: 8px;
-  -webkit-transform: translate(-50%, -50%);
-  transform: translate(-50%, -50%);
-  border-width: 1px;
-  border-style: solid;
-  width: 8px;
-  height: 8px;
-  font-size: 16px;
-  text-align: center;
-  content: " ";
-}
-.k-checkbox:checked + .k-checkbox-label:before {
-  content: "\2713";
-}
-.k-checkbox:disabled + .k-checkbox-label {
-  cursor: auto;
-}
-.k-radio-label:before {
-  content: "";
-  position: absolute;
-  top: 0;
-  left: 0;
-  width: 14px;
-  height: 14px;
-  border-style: solid;
-}
-.k-radio:checked + .k-radio-label:after {
-  content: "";
-  width: 10px;
-  height: 10px;
-  position: absolute;
-  top: 3px;
-  left: 3px;
-}
-.k-radio:disabled + .k-radio-label {
-  cursor: auto;
-}
-.k-ie8 input.k-checkbox,
-.k-ie8 .k-radio {
-  display: inline-block;
-  width: auto;
-}
-.k-ie8 .k-checkbox-label,
-.k-ie8 .k-radio-label {
-  padding-left: 0;
-}
-.k-ie8 .k-checkbox-label:before,
-.k-ie8 .k-radio-label:before,
-.k-ie8 .k-radio-label:after {
-  display: none;
-}
-/* RTL for checkboxes and radio buttons */
-.k-rtl .k-checkbox-label,
-.k-rtl .k-radio-label {
-  padding-right: 1.5em;
-}
-.k-rtl .k-checkbox-label:before,
-.k-rtl .k-radio-label:before {
-  right: 0;
-}
-.k-rtl .k-radio:checked + .k-radio-label:after {
-  right: 3px;
-}
-input.k-checkbox + label {
-  -webkit-user-select: none;
-}
-/* Off-screen container used during export */
-.k-pdf-export-shadow {
-  position: absolute;
-  overflow: hidden;
-  left: -15000px;
-  width: 14400px;
-}
-.km-native-scroller {
-  overflow: auto;
-  -webkit-overflow-scrolling: touch;
-  -ms-touch-action: pan-x pan-y;
-  -ms-overflow-style: -ms-autohiding-scrollbar;
-  -ms-scroll-snap-type: proximity;
-}
-/* Font Icons */
-.k-icon,
-.k-font-icon,
-.k-font-icon.k-icon,
-.k-font-icon.k-tool-icon {
-  position: relative;
-  display: inline-block;
-  overflow: hidden;
-  width: 1em;
-  height: 1em;
-  text-align: center;
-  vertical-align: middle;
-  background-image: none;
-  font: 16px/1 'WebComponentsIcons';
-  speak: none;
-  font-variant: normal;
-  text-transform: none;
-  text-indent: 0;
-  -webkit-font-smoothing: antialiased;
-  -moz-osx-font-smoothing: grayscale;
-  overflow: visible;
-  color: inherit;
-}
-.k-icon:before,
-.k-font-icon:before {
-  width: 1em;
-  height: 1em;
-  display: inline-block;
-}
-.k-icon,
-.k-tool-icon,
-.k-i-drag-and-drop,
-.k-column-menu .k-sprite,
-.k-grid-mobile .k-resize-handle-inner:before,
-.k-grid-mobile .k-resize-handle-inner:after,
-.k-pager-numbers .k-current-page .k-link:after,
-.k-scheduler-toolbar > ul.k-scheduler-views > li.k-current-view > .k-link:after,
-.k-gantt-views > .k-current-view > .k-link:after {
-  position: relative;
-  display: inline-block;
-  overflow: hidden;
-  width: 1em;
-  height: 1em;
-  text-align: center;
-  vertical-align: middle;
-  background-image: none;
-  font: 16px/1 'WebComponentsIcons';
-  speak: none;
-  font-variant: normal;
-  text-transform: none;
-  text-indent: 0;
-  -webkit-font-smoothing: antialiased;
-  -moz-osx-font-smoothing: grayscale;
-}
-.k-icon:before {
-  width: initial;
-  height: initial;
-  position: absolute;
-  top: 0;
-  bottom: 0;
-  left: 0;
-  right: 0;
-  margin: auto;
-  height: 1em;
-  line-height: 1;
-}
-.k-button.k-button-icon .k-icon,
-.k-grid-filter .k-icon,
-.k-header .k-icon {
-  text-indent: -99999px;
-}
-.k-button.k-button-icon .k-icon:before,
-.k-grid-filter .k-icon:before,
-.k-header .k-icon:before {
-  text-indent: 0;
-}
-/* Sprite icons */
-.k-sprite {
-  width: 16px;
-  height: 16px;
-  font-size: 0;
-  line-height: 0;
-  text-align: center;
-  background-repeat: no-repeat;
-  background-color: transparent;
-  display: inline-block;
-  overflow: hidden;
-  -ms-high-contrast-adjust: none;
-}
-/* responsive panel */
-.k-rpanel-left {
-  -webkit-transform: translateX(-100%) translateZ(0);
-  -ms-transform: translateX(-100%) translateZ(0);
-  transform: translateX(-100%) translateZ(0);
-  left: 0;
-}
-.k-rpanel-right {
-  -webkit-transform: translateX(100%) translateZ(0);
-  -ms-transform: translateX(100%) translateZ(0);
-  transform: translateX(100%) translateZ(0);
-  right: 0;
-}
-.k-rpanel-left,
-.k-rpanel-right {
-  position: fixed;
-  display: block;
-  overflow: auto;
-  min-width: 320px;
-  height: 100%;
-  top: 0;
-}
-.k-rpanel-left.k-rpanel-expanded,
-.k-rpanel-right.k-rpanel-expanded {
-  -webkit-transform: translateX(0) translateZ(0);
-  -ms-transform: translateX(0) translateZ(0);
-  transform: translateX(0) translateZ(0);
-}
-.k-rpanel-left + *,
-.k-rpanel-right + * {
-  overflow: auto;
-}
-.k-ie9 .k-rpanel-left {
-  left: -100%;
-}
-.k-ie9 .k-rpanel-left.k-rpanel-expanded {
-  left: 0;
-}
-.k-rpanel-top {
-  position: static;
-  max-height: 0;
-}
-.k-rpanel-top.k-rpanel-expanded {
-  max-height: 568px;
-  overflow: visible !important;
-}
-.k-edit-form {
-  margin: 0;
-  padding: 0;
-}
-.k-window > div.k-popup-edit-form {
-  padding: 1em 0;
-}
-.k-grid-edit-row .k-edit-form td {
-  border-bottom-width: 0;
-}
-.k-edit-form-container {
-  position: relative;
-  width: 400px;
-}
-.k-edit-label,
-.k-edit-form-container .editor-label {
-  float: left;
-  clear: both;
-  width: 30%;
-  padding: .4em 0 1em;
-  margin-left: 2%;
-  text-align: right;
-}
-.k-edit-field,
-.k-edit-form-container .editor-field {
-  float: right;
-  clear: right;
-  width: 60%;
-  margin-right: 2%;
-  padding: 0 0 .6em;
-}
-.k-edit-field > input[type="checkbox"],
-.k-edit-field > input[type="radio"] {
-  margin-top: .4em;
-}
-.k-edit-form-container .k-button {
-  margin: 0 .16em;
-}
-.k-edit-field > input[type="checkbox"]:first-child,
-.k-edit-field > input[type="radio"]:first-child,
-.k-edit-field > label:first-child > input[type="checkbox"],
-.k-edit-field > .k-button:first-child {
-  margin-left: 0;
-}
-.k-edit-form-container .k-edit-buttons {
-  clear: both;
-  text-align: right;
-  border-width: 1px 0 0;
-  border-style: solid;
-  position: relative;
-  bottom: -1em;
-  padding: .6em;
-}
-/* Window */
-div.k-window {
-  display: inline-block;
-  position: absolute;
-  z-index: 10001;
-  border-style: solid;
-  border-width: 1px;
-  padding-top: 2em;
-}
-.k-block > .k-header,
-.k-window-titlebar {
-  position: absolute;
-  width: 100%;
-  height: 1.1em;
-  border-bottom-style: solid;
-  border-bottom-width: 1px;
-  margin-top: -2em;
-  padding: .4em 0;
-  font-size: 1.2em;
-  white-space: nowrap;
-  min-height: 16px;
-  /* icon size */
-}
-.k-block > .k-header {
-  position: relative;
-  margin: -2px 0 10px -2px;
-  padding: .3em 2px;
-}
-.k-window-title {
-  position: absolute;
-  left: .44em;
-  right: .44em;
-  overflow: hidden;
-  cursor: default;
-  text-overflow: ellipsis;
-}
-.k-window-title .k-image {
-  margin: 0 5px 0 0;
-  vertical-align: middle;
-}
-div.k-window-titleless {
-  padding-top: 0;
-}
-div.k-window-content {
-  position: relative;
-  height: 100%;
-  padding: .58em;
-  overflow: auto;
-  outline: 0;
-}
-div.k-window-iframecontent {
-  padding: 0;
-  overflow: visible;
-}
-.k-window-content > .km-scroll-container {
-  height: 100%;
-}
-.k-window-titlebar .k-window-actions {
-  position: absolute;
-  top: 0;
-  right: .3em;
-  padding-top: .3em;
-  white-space: nowrap;
-}
-.k-window-titlebar .k-window-action {
-  width: 22px;
-  height: 22px;
-  padding: 2px;
-}
-.k-window-action .k-icon {
-  margin: 0;
-  vertical-align: top;
-}
-.k-window > .k-resize-handle {
-  position: absolute;
-  z-index: 1;
-  background-color: #fff;
-  font-size: 0;
-  line-height: 6px;
-  filter: alpha(opacity=0);
-  opacity: 0;
-  zoom: 1;
-}
-.k-resize-n {
-  top: -3px;
-  left: 0;
-  width: 100%;
-  height: 6px;
-  cursor: n-resize;
-}
-.k-resize-e {
-  top: 0;
-  right: -3px;
-  width: 6px;
-  height: 100%;
-  cursor: e-resize;
-}
-.k-resize-s {
-  bottom: -3px;
-  left: 0;
-  width: 100%;
-  height: 6px;
-  cursor: s-resize;
-}
-.k-resize-w {
-  top: 0;
-  left: -3px;
-  width: 6px;
-  height: 100%;
-  cursor: w-resize;
-}
-.k-resize-se {
-  bottom: -3px;
-  right: -3px;
-  width: 6px;
-  height: 6px;
-  cursor: se-resize;
-}
-.k-resize-sw {
-  bottom: -3px;
-  left: -3px;
-  width: 6px;
-  height: 6px;
-  cursor: sw-resize;
-}
-.k-resize-ne {
-  top: -3px;
-  right: -3px;
-  width: 6px;
-  height: 6px;
-  cursor: ne-resize;
-}
-.k-resize-nw {
-  top: -3px;
-  left: -3px;
-  width: 6px;
-  height: 6px;
-  cursor: nw-resize;
-}
-.k-overlay {
-  position: fixed;
-  top: 0;
-  left: 0;
-  z-index: 10001;
-  width: 100%;
-  height: 100%;
-  background-color: #000;
-  filter: alpha(opacity=50);
-  opacity: .5;
-}
-.k-window .k-overlay {
-  position: absolute;
-  width: 100%;
-  height: 100%;
-  background-color: #fff;
-  filter: alpha(opacity=0);
-  opacity: 0;
-}
-.k-action-buttons {
-  clear: both;
-  text-align: right;
-  border-width: 1px 0 0;
-  border-style: solid;
-  position: relative;
-  bottom: -1em;
-  padding: .6em;
-  margin: 0 -1em;
-}
-.k-action-buttons .k-button {
-  display: inline-block;
-  margin: 0 0 0 6px;
-  min-width: 75px;
-}
-/* TabStrip */
-.k-tabstrip {
-  margin: 0;
-  padding: 0;
-  zoom: 1;
-  position: relative;
-}
-.k-tabstrip-items {
-  padding: 0.3em 0.3em 0;
-}
-.k-tabstrip-scrollable .k-tabstrip-items {
-  white-space: nowrap;
-  overflow: hidden;
-}
-.k-tabstrip > .k-button {
-  position: absolute;
-  top: .4em;
-  z-index: 2;
-  user-select: none;
-}
-.k-tabstrip-bottom > .k-button {
-  top: auto;
-  bottom: .4em;
-}
-.k-tabstrip-prev {
-  left: .4em;
-}
-.k-tabstrip-next {
-  right: .4em;
-}
-.k-tabstrip-items .k-item,
-.k-panelbar .k-tabstrip-items .k-item {
-  list-style-type: none;
-  display: inline-block;
-  position: relative;
-  border-style: solid;
-  border-width: 1px 1px 0;
-  margin: 0 -1px 0 0;
-  padding: 0;
-  vertical-align: top;
-}
-.k-tabstrip-items .k-tab-on-top,
-.k-tabstrip-items .k-state-active,
-.k-panelbar .k-tabstrip-items .k-state-active {
-  margin-bottom: -1px;
-  padding-bottom: 1px;
-}
-.k-tabstrip-top .k-tabstrip-items .k-state-active,
-.k-panelbar .k-tabstrip-top .k-tabstrip-items .k-state-active {
-  border-bottom-width: 1px;
-  margin-bottom: -2px;
-  padding-bottom: 0px;
-}
-.k-tabstrip-items .k-tab-on-top {
-  z-index: 1;
-}
-.k-tabstrip-items .k-link,
-.k-panelbar .k-tabstrip-items .k-link {
-  display: inline-block;
-  border-bottom-width: 0;
-  padding: .5em .92em;
-}
-.k-tabstrip-items .k-icon,
-.k-panelbar .k-tabstrip-items .k-icon {
-  margin: -1px 4px 0 -3px;
-  vertical-align: top;
-}
-.k-tabstrip-items .k-item .k-image,
-.k-tabstrip-items .k-item .k-sprite,
-.k-panelbar .k-tabstrip-items .k-item .k-image,
-.k-panelbar .k-tabstrip-items .k-item .k-sprite {
-  margin: -3px 3px 0 -6px;
-  vertical-align: middle;
-}
-/* TabStrip Loading Progress */
-.k-tabstrip-items .k-loading {
-  top: 0;
-  left: 0;
-  height: 0;
-  width: 20%;
-  position: absolute;
-  background: transparent;
-  border-top: 1px solid transparent;
-  border-color: inherit;
-  transition: width 200ms linear;
-  transition: "width 200ms linear";
-  animation: k-tab-loader 1s ease-in-out infinite;
-}
-.k-tabstrip-items .k-progress {
-  animation: none;
-}
-.k-tabstrip-items .k-loading.k-complete {
-  width: 100%;
-  animation: none;
-}
-.k-tabstrip > .k-content,
-.k-panelbar .k-tabstrip > .k-content {
-  position: static;
-  border-style: solid;
-  border-width: 1px;
-  margin: 0 .286em .3em;
-  padding: .92em;
-  zoom: 1;
-}
-.k-tabstrip > .k-content {
-  display: none;
-  overflow: auto;
-}
-.k-tabstrip > .k-content.km-scroll-wrapper {
-  padding: 0;
-}
-.k-tabstrip > .k-content > .km-scroll-container {
-  padding: .3em .92em;
-}
-@keyframes k-tab-loader {
-  0% {
-    left: 0;
-  }
-  50% {
-    left: 80%;
-  }
-  100% {
-    left: 0;
-  }
-}
-/* left and right tabs */
-.k-tabstrip-left > div.k-content,
-.k-tabstrip-right > div.k-content {
-  margin: .286em .3em;
-}
-.k-tabstrip-left > .k-tabstrip-items .k-item,
-.k-tabstrip-right > .k-tabstrip-items .k-item {
-  display: block;
-  margin-bottom: -1px;
-}
-.k-tabstrip-left > .k-tabstrip-items .k-link,
-.k-tabstrip-right > .k-tabstrip-items .k-link {
-  display: block;
-}
-.k-tabstrip-left > .k-tabstrip-items .k-tab-on-top,
-.k-tabstrip-right > .k-tabstrip-items .k-tab-on-top,
-.k-tabstrip-left > .k-tabstrip-items .k-state-active,
-.k-tabstrip-right > .k-tabstrip-items .k-state-active,
-.k-panelbar .k-tabstrip-left > .k-tabstrip-items .k-state-active,
-.k-panelbar .k-tabstrip-right > .k-tabstrip-items .k-state-active {
-  margin-bottom: -1px;
-  padding-bottom: 0;
-}
-/* left tabs */
-.k-tabstrip-left > .k-tabstrip-items {
-  float: left;
-  padding: .25em 0 .3em .3em;
-}
-.k-tabstrip-left > .k-tabstrip-items .k-item {
-  border-width: 1px 0 1px 1px;
-  border-radius: 3px 0 0 3px;
-}
-.k-tabstrip-left > .k-tabstrip-items .k-state-active {
-  border-width: 1px 0 1px 1px;
-}
-.k-tabstrip-left > .k-tabstrip-items .k-tab-on-top,
-.k-tabstrip-left > .k-tabstrip-items .k-state-active,
-.k-panelbar .k-tabstrip-left > .k-tabstrip-items .k-state-active {
-  margin-right: -2px;
-  padding-right: 1px;
-}
-/* right tabs */
-.k-tabstrip-right > .k-tabstrip-items {
-  float: right;
-  padding: .25em .3em .3em 0;
-}
-.k-tabstrip-right > .k-tabstrip-items .k-item {
-  border-width: 1px 1px 1px 0;
-  border-radius: 0 3px 3px 0;
-}
-.k-tabstrip-right > .k-tabstrip-items .k-state-active {
-  border-width: 1px 1px 1px 0;
-}
-.k-tabstrip-right > .k-tabstrip-items .k-tab-on-top,
-.k-tabstrip-right > .k-tabstrip-items .k-state-active,
-.k-panelbar .k-tabstrip-right > .k-tabstrip-items .k-state-active {
-  margin-left: -1px;
-  padding-left: 1px;
-}
-/* bottom tabs */
-.k-tabstrip-bottom > .k-tabstrip-items {
-  margin-top: -1px;
-  padding: 0 .3em .3em;
-}
-.k-tabstrip-bottom > .k-content,
-.k-panelbar .k-tabstrip-bottom > .k-content {
-  margin: .3em .286em 0;
-  z-index: 1;
-  position: relative;
-}
-.k-tabstrip-bottom > .k-tabstrip-items .k-item {
-  border-width: 0 1px 1px;
-  border-radius: 0 0 4px 4px;
-}
-.k-tabstrip-bottom > .k-tabstrip-items .k-state-active {
-  margin-bottom: 0;
-  padding-bottom: 0;
-}
-.k-tabstrip-bottom > .k-content {
-  min-height: 100px;
-}
-.k-tabstrip-bottom > .k-tabstrip-items .k-loading {
-  top: auto;
-  bottom: 0;
-}
-/* PanelBar */
-.k-panelbar {
-  zoom: 1;
-}
-.k-panelbar > .k-item,
-.k-panel > .k-item {
-  list-style-type: none;
-  display: block;
-  border-width: 0;
-  margin: 0;
-  zoom: 1;
-  border-radius: 0;
-}
-.k-panelbar .k-link > .k-image,
-.k-panelbar .k-link > .k-sprite {
-  float: left;
-  margin-top: 4px;
-  margin-right: 5px;
-  vertical-align: middle;
-}
-.k-panelbar > .k-item > .k-link,
-.k-panel > .k-item > .k-link {
-  display: block;
-  position: relative;
-  border-bottom-style: solid;
-  border-bottom-width: 1px;
-  padding: 0 1em;
-  line-height: 2.34em;
-  text-decoration: none;
-  zoom: 1;
-}
-.k-panelbar-expand.k-icon,
-.k-panelbar-collapse.k-icon {
-  position: absolute;
-  top: 50%;
-  right: 4px;
-  margin-top: -8px;
-}
-.k-panelbar .k-panel,
-.k-panelbar .k-content {
-  position: relative;
-  border-bottom-style: solid;
-  border-bottom-width: 1px;
-  margin: 0;
-  padding: 0;
-  zoom: 1;
-}
-.k-panel > .k-item > .k-link {
-  border-bottom: 0;
-  font-size: .95em;
-  line-height: 2.2;
-}
-.k-panel .k-panel > .k-item > .k-link {
-  padding-left: 2em;
-}
-.k-panelbar .k-i-arrow-end-right .k-link {
-  border-bottom: 0;
-}
-.k-panel .k-panel {
-  border-bottom: 0;
-}
-.k-pager-wrap {
-  clear: both;
-  overflow: hidden;
-  position: relative;
-  border-style: solid;
-  border-width: 1px;
-  line-height: 2.0em;
-  padding: 0.333em 0 0.333em 0.250em;
-}
-.k-pager-numbers .k-link,
-.k-pager-numbers .k-state-selected {
-  display: inline-block;
-  vertical-align: top;
-  margin-right: 1px;
-}
-.k-pager-numbers {
-  margin: 0 2px;
-}
-.k-pager-numbers .k-state-selected {
-  vertical-align: top;
-}
-.k-pager-numbers .k-current-page {
-  display: none;
-}
-.k-pager-numbers li,
-.k-pager-input {
-  float: left;
-}
-.k-pager-info {
-  float: right;
-  padding: 0 1.333em;
-}
-.k-pager-numbers .k-link {
-  text-decoration: none;
-}
-.k-pager-wrap > .k-link,
-.k-pager-numbers .k-link,
-.k-pager-numbers .k-state-selected {
-  min-width: 2em;
-}
-.k-pager-wrap > .k-link {
-  float: left;
-  margin: 0 0.08333em;
-  height: 2em;
-  /*IE7*/
-  line-height: 2em;
-  /*IE7*/
-  border-radius: 1.0833em;
-  cursor: pointer;
-  text-align: center;
-}
-.k-pager-wrap > a.k-state-disabled:hover {
-  background: none;
-  cursor: default;
-}
-.k-pager-numbers .k-link {
-  text-align: center;
-  line-height: 2em;
-  border-style: solid;
-  border-width: 1px;
-  border-radius: 1.0833em;
-}
-.k-pager-wrap > .k-link {
-  border-style: solid;
-  border-width: 1px;
-}
-.k-pager-wrap .k-pager-refresh {
-  float: right;
-  margin-right: 0.5em;
-  border-width: 0;
-  border-radius: 0;
-}
-.k-pager-numbers .k-state-selected {
-  border-style: solid;
-  border-width: 1px;
-  text-align: center;
-  border-radius: 1.0833em;
-}
-.k-pager-wrap .k-textbox {
-  width: 3.333em;
-}
-.k-pager-wrap .k-dropdown {
-  width: 4.500em;
-}
-.k-pager-refresh {
-  float: right;
-}
-.k-pager-input,
-.k-pager-sizes {
-  padding: 0 1.4166em;
-}
-.k-pager-sizes {
-  display: inline-block;
-  padding-top: 1px;
-}
-.k-pager-sizes .k-widget.k-dropdown {
-  margin-top: -2px;
-}
-.k-pager-wrap .k-textbox,
-.k-pager-wrap .k-widget {
-  margin: 0 .4em 0;
-}
-@media only screen and (max-width: 1024px) {
-  .k-webkit .k-pager-wrap,
-  .k-ff .k-pager-wrap,
-  .k-ie11 .k-pager-wrap,
-  .k-edge .k-pager-wrap,
-  .k-safari .k-pager-wrap {
-    overflow: visible;
-    min-height: 2.1em;
-  }
-  .k-webkit .k-pager-wrap .k-pager-nav,
-  .k-ff .k-pager-wrap .k-pager-nav,
-  .k-ie11 .k-pager-wrap .k-pager-nav,
-  .k-edge .k-pager-wrap .k-pager-nav,
-  .k-safari .k-pager-wrap .k-pager-nav,
-  .k-webkit .k-pager-input,
-  .k-ff .k-pager-input,
-  .k-ie11 .k-pager-input,
-  .k-edge .k-pager-input,
-  .k-safari .k-pager-input {
-    display: inline-block;
-    vertical-align: top;
-  }
-  .k-webkit .k-pager-numbers,
-  .k-ff .k-pager-numbers,
-  .k-ie11 .k-pager-numbers,
-  .k-edge .k-pager-numbers,
-  .k-safari .k-pager-numbers {
-    position: absolute;
-    left: 4.8em;
-    display: inline-flex;
-    flex-direction: column-reverse;
-    overflow: visible;
-    height: auto;
-  }
-  .k-webkit .k-pager-numbers:first-child,
-  .k-ff .k-pager-numbers:first-child,
-  .k-ie11 .k-pager-numbers:first-child,
-  .k-edge .k-pager-numbers:first-child,
-  .k-safari .k-pager-numbers:first-child {
-    left: .2em;
-  }
-  .k-webkit .k-pager-numbers.k-state-expanded,
-  .k-ff .k-pager-numbers.k-state-expanded,
-  .k-ie11 .k-pager-numbers.k-state-expanded,
-  .k-edge .k-pager-numbers.k-state-expanded,
-  .k-safari .k-pager-numbers.k-state-expanded {
-    transform: translatey(-100%);
-    -webkit-transform: translatey(-100%);
-  }
-  .k-webkit .km-pane-wrapper .k-pager-numbers,
-  .k-ff .km-pane-wrapper .k-pager-numbers,
-  .k-ie11 .km-pane-wrapper .k-pager-numbers,
-  .k-edge .km-pane-wrapper .k-pager-numbers,
-  .k-safari .km-pane-wrapper .k-pager-numbers {
-    position: relative;
-    left: 50%;
-    transform: translate(-50%, -100%);
-    -webkit-transform: translate(-50%, -100%);
-  }
-  .k-webkit .km-pane-wrapper .k-pager-numbers .k-link,
-  .k-ff .km-pane-wrapper .k-pager-numbers .k-link,
-  .k-ie11 .km-pane-wrapper .k-pager-numbers .k-link,
-  .k-edge .km-pane-wrapper .k-pager-numbers .k-link,
-  .k-safari .km-pane-wrapper .k-pager-numbers .k-link,
-  .k-webkit .km-pane-wrapper .k-pager-numbers .k-state-selected,
-  .k-ff .km-pane-wrapper .k-pager-numbers .k-state-selected,
-  .k-ie11 .km-pane-wrapper .k-pager-numbers .k-state-selected,
-  .k-edge .km-pane-wrapper .k-pager-numbers .k-state-selected,
-  .k-safari .km-pane-wrapper .k-pager-numbers .k-state-selected,
-  .k-webkit .km-pane-wrapper .k-pager-wrap > .k-link,
-  .k-ff .km-pane-wrapper .k-pager-wrap > .k-link,
-  .k-ie11 .km-pane-wrapper .k-pager-wrap > .k-link,
-  .k-edge .km-pane-wrapper .k-pager-wrap > .k-link,
-  .k-safari .km-pane-wrapper .k-pager-wrap > .k-link,
-  .k-webkit .km-pane-wrapper .k-pager-wrap > .k-pager-info,
-  .k-ff .km-pane-wrapper .k-pager-wrap > .k-pager-info,
-  .k-ie11 .km-pane-wrapper .k-pager-wrap > .k-pager-info,
-  .k-edge .km-pane-wrapper .k-pager-wrap > .k-pager-info,
-  .k-safari .km-pane-wrapper .k-pager-wrap > .k-pager-info {
-    padding-top: 0;
-    padding-bottom: 0;
-  }
-  .k-webkit .k-rtl .k-pager-numbers,
-  .k-ff .k-rtl .k-pager-numbers,
-  .k-ie11 .k-rtl .k-pager-numbers,
-  .k-edge .k-rtl .k-pager-numbers,
-  .k-safari .k-rtl .k-pager-numbers {
-    left: auto;
-    right: 4.8em;
-    width: 4.5em;
-  }
-  .k-webkit .k-rtl .k-pager-numbers:first-child,
-  .k-ff .k-rtl .k-pager-numbers:first-child,
-  .k-ie11 .k-rtl .k-pager-numbers:first-child,
-  .k-edge .k-rtl .k-pager-numbers:first-child,
-  .k-safari .k-rtl .k-pager-numbers:first-child {
-    left: auto;
-    right: .2em;
-  }
-  .k-webkit .k-rtl .km-pane-wrapper .k-pager-numbers,
-  .k-ff .k-rtl .km-pane-wrapper .k-pager-numbers,
-  .k-ie11 .k-rtl .km-pane-wrapper .k-pager-numbers,
-  .k-edge .k-rtl .km-pane-wrapper .k-pager-numbers,
-  .k-safari .k-rtl .km-pane-wrapper .k-pager-numbers {
-    right: 5.8em;
-  }
-  .k-webkit .k-pager-numbers .k-current-page,
-  .k-ff .k-pager-numbers .k-current-page,
-  .k-ie11 .k-pager-numbers .k-current-page,
-  .k-edge .k-pager-numbers .k-current-page,
-  .k-safari .k-pager-numbers .k-current-page {
-    display: block;
-    border-left: 0;
-  }
-  .k-webkit .k-pager-numbers.k-state-expanded .k-current-page,
-  .k-ff .k-pager-numbers.k-state-expanded .k-current-page,
-  .k-ie11 .k-pager-numbers.k-state-expanded .k-current-page,
-  .k-edge .k-pager-numbers.k-state-expanded .k-current-page,
-  .k-safari .k-pager-numbers.k-state-expanded .k-current-page {
-    transform: translatey(100%);
-    -webkit-transform: translatey(100%);
-  }
-  .k-webkit .k-pager-numbers li:not(.k-current-page),
-  .k-ff .k-pager-numbers li:not(.k-current-page),
-  .k-ie11 .k-pager-numbers li:not(.k-current-page),
-  .k-edge .k-pager-numbers li:not(.k-current-page),
-  .k-safari .k-pager-numbers li:not(.k-current-page) {
-    display: none;
-  }
-  .k-webkit .k-pager-numbers .k-current-page .k-link,
-  .k-ff .k-pager-numbers .k-current-page .k-link,
-  .k-ie11 .k-pager-numbers .k-current-page .k-link,
-  .k-edge .k-pager-numbers .k-current-page .k-link,
-  .k-safari .k-pager-numbers .k-current-page .k-link {
-    width: 3.2em;
-    padding: 0 .429em 0 .714em;
-    border-radius: 1.0833em;
-  }
-  .k-webkit .k-pager-numbers + .k-link,
-  .k-ff .k-pager-numbers + .k-link,
-  .k-ie11 .k-pager-numbers + .k-link,
-  .k-edge .k-pager-numbers + .k-link,
-  .k-safari .k-pager-numbers + .k-link {
-    margin-left: 4.8em;
-  }
-  .k-webkit .k-rtl .k-pager-numbers + .k-link,
-  .k-ff .k-rtl .k-pager-numbers + .k-link,
-  .k-ie11 .k-rtl .k-pager-numbers + .k-link,
-  .k-edge .k-rtl .k-pager-numbers + .k-link,
-  .k-safari .k-rtl .k-pager-numbers + .k-link {
-    margin-right: 5.1em;
-    margin-left: 0;
-  }
-  .k-webkit .k-pager-numbers .k-state-selected,
-  .k-ff .k-pager-numbers .k-state-selected,
-  .k-ie11 .k-pager-numbers .k-state-selected,
-  .k-edge .k-pager-numbers .k-state-selected,
-  .k-safari .k-pager-numbers .k-state-selected,
-  .k-webkit .k-pager-numbers .k-link,
-  .k-ff .k-pager-numbers .k-link,
-  .k-ie11 .k-pager-numbers .k-link,
-  .k-edge .k-pager-numbers .k-link,
-  .k-safari .k-pager-numbers .k-link {
-    display: block;
-    margin-right: 0;
-    padding: 1px 5px 1px 5px;
-    text-align: left;
-  }
-  .k-webkit .k-pager-numbers.k-state-expanded,
-  .k-ff .k-pager-numbers.k-state-expanded,
-  .k-ie11 .k-pager-numbers.k-state-expanded,
-  .k-edge .k-pager-numbers.k-state-expanded,
-  .k-safari .k-pager-numbers.k-state-expanded {
-    box-sizing: border-box;
-    padding: 2px 2px 0;
-  }
-  .k-webkit .k-pager-numbers.k-state-expanded .k-current-page,
-  .k-ff .k-pager-numbers.k-state-expanded .k-current-page,
-  .k-ie11 .k-pager-numbers.k-state-expanded .k-current-page,
-  .k-edge .k-pager-numbers.k-state-expanded .k-current-page,
-  .k-safari .k-pager-numbers.k-state-expanded .k-current-page {
-    margin: -2em -3px 0;
-    padding: 0;
-  }
-  .k-webkit .k-pager-numbers.k-state-expanded .k-current-page .k-link,
-  .k-ff .k-pager-numbers.k-state-expanded .k-current-page .k-link,
-  .k-ie11 .k-pager-numbers.k-state-expanded .k-current-page .k-link,
-  .k-edge .k-pager-numbers.k-state-expanded .k-current-page .k-link,
-  .k-safari .k-pager-numbers.k-state-expanded .k-current-page .k-link {
-    border-radius: 0 0 1.0833em 1.0833em;
-  }
-  .k-webkit .k-pager-numbers.k-state-expanded li,
-  .k-ff .k-pager-numbers.k-state-expanded li,
-  .k-ie11 .k-pager-numbers.k-state-expanded li,
-  .k-edge .k-pager-numbers.k-state-expanded li,
-  .k-safari .k-pager-numbers.k-state-expanded li {
-    display: inline-block;
-  }
-}
-@media only screen and (max-width: 640px) {
-  .k-webkit .k-pager-info,
-  .k-ff .k-pager-info,
-  .k-ie11 .k-pager-info,
-  .k-edge .k-pager-info,
-  .k-safari .k-pager-info {
-    display: none;
-  }
-}
-@media only screen and (max-width: 480px) {
-  .k-webkit .k-pager-sizes,
-  .k-ff .k-pager-sizes,
-  .k-ie11 .k-pager-sizes,
-  .k-edge .k-pager-sizes,
-  .k-safari .k-pager-sizes {
-    display: none;
-  }
-}
-.k-rtl .k-pager-wrap .k-i-seek-e,
-.k-rtl .k-pager-wrap .k-i-seek-w,
-.k-rtl .k-pager-wrap .k-i-arrow-e,
-.k-rtl .k-pager-wrap .k-i-arrow-w {
-  transform: scaleX(-1);
-}
-/* Menu */
-.k-menu {
-  cursor: default;
-}
-.k-menu .k-link {
-  white-space: nowrap;
-}
-.k-menu,
-.k-menu-scroll-wrapper .k-menu-group,
-.k-popups-wrapper .k-menu-group,
-.k-menu .k-menu-group {
-  list-style: none;
-  margin: 0;
-  padding: 0;
-  zoom: 1;
-}
-.k-menu:after {
-  content: '';
-  display: block;
-  width: 99%;
-  height: 0;
-  float: inherit;
-  clear: both;
-}
-.k-menu-scroll-wrapper .k-item,
-.k-popups-wrapper .k-item,
-.k-menu .k-item {
-  -webkit-user-select: none;
-  -moz-user-select: -moz-none;
-  user-select: none;
-}
-.k-menu-scroll-wrapper .k-item div,
-.k-popups-wrapper .k-item div,
-.k-menu .k-item div {
-  user-select: default;
-}
-.k-popups-wrapper .k-item .k-item,
-.k-popups-wrapper.vertical > .k-item,
-.k-menu-scroll-wrapper .k-item .k-item,
-.k-menu-scroll-wrapper.vertical > .k-item,
-.k-menu .k-item .k-item,
-ul.k-menu-vertical > .k-item {
-  display: block;
-  float: none;
-  border-width: 0;
-}
-.k-menu-scroll-wrapper .k-item > .k-link > .k-icon,
-.k-menu-scroll-wrapper .k-image,
-.k-menu-scroll-wrapper .k-sprite,
-.k-popups-wrapper .k-item > .k-link > .k-icon,
-.k-popups-wrapper .k-image,
-.k-popups-wrapper .k-sprite,
-.k-menu .k-item > .k-link > .k-icon,
-.k-menu .k-image,
-.k-menu .k-sprite {
-  margin: -2px 4px 0 -4px;
-  vertical-align: middle;
-}
-.k-menu-scroll-wrapper .k-item > .k-link > .k-icon,
-.k-popups-wrapper .k-item > .k-link > .k-icon,
-.k-menu .k-item > .k-link > .k-icon {
-  margin: -2px 0 0;
-}
-.k-menu-scroll-wrapper .k-item > .k-link,
-.k-popups-wrapper .k-item > .k-link,
-.k-menu .k-item > .k-link {
-  display: block;
-  padding: 1.071em;
-  line-height: 1.34em;
-  user-select: none;
-}
-.k-menu-scroll-wrapper .k-menu-group,
-.k-popups-wrapper .k-menu-group,
-.k-menu .k-menu-group {
-  display: none;
-  border-style: solid;
-  border-width: 1px;
-  overflow: visible;
-  white-space: nowrap;
-}
-.k-menu-scroll-wrapper .k-menu-group > .k-item,
-.k-popups-wrapper .k-menu-group > .k-item,
-.k-menu .k-menu-group > .k-item {
-  display: block;
-  border-width: 0;
-}
-.k-menu-scroll-wrapper .k-item,
-.k-menu-scroll-wrapper.horizontal > .k-item,
-.k-popups-wrapper .k-item,
-.k-popups-wrapper.horizontal > .k-item,
-.k-menu .k-item,
-.k-widget.k-menu-horizontal > .k-item {
-  position: relative;
-  float: left;
-  border-style: solid;
-  border-width: 0 1px 0 0;
-  vertical-align: top;
-  zoom: 1;
-  box-sizing: content-box;
-}
-.k-menu-scroll-wrapper .k-menu-group .k-item > .k-link,
-.k-popups-wrapper.vertical > .k-item > .k-link,
-.k-context-menu.k-menu-vertical > .k-item > .k-link,
-.k-menu .k-menu-group .k-item > .k-link {
-  padding: .28em 1.8em .38em .9em;
-}
-.k-popups-wrapper.horizontal > .k-separator,
-.k-context-menu.k-menu-horizontal > .k-separator {
-  display: none;
-}
-.k-popups-wrapper.horizontal > .k-item,
-.k-context-menu.k-menu-horizontal > .k-item {
-  box-sizing: border-box;
-}
-.k-popups-wrapper.horizontal > .k-last,
-.k-context-menu.k-menu-horizontal > .k-last {
-  border: 0;
-}
-.k-menu-scroll-wrapper .k-item > .k-link > .k-i-arrow-60-down,
-.k-popups-wrapper .k-item > .k-link > .k-i-arrow-60-down,
-.k-menu .k-item > .k-link > .k-i-arrow-60-down {
-  margin-right: -8px;
-}
-.k-menu-scroll-wrapper .k-item > .k-link > .k-i-arrow-60-right,
-.k-popups-wrapper .k-item > .k-link > .k-i-arrow-60-right,
-.k-menu .k-item > .k-link > .k-i-arrow-60-right {
-  position: absolute;
-  top: 50%;
-  margin-top: -8px;
-  right: 2px;
-  right: .2rem;
-}
-.k-menu-scroll-wrapper .k-animation-container,
-.k-popups-wrapper .k-animation-container,
-.k-menu .k-animation-container {
-  border: 0;
-}
-.k-menu-scroll-wrapper .k-animation-container,
-.k-menu-scroll-wrapper .k-menu-group,
-.k-popups-wrapper .k-animation-container,
-.k-popups-wrapper .k-menu-group,
-.k-menu .k-animation-container,
-.k-menu .k-menu-group {
-  position: absolute;
-  left: 0;
-}
-.k-menu-scroll-wrapper .k-animation-container .k-animation-container,
-.k-menu-scroll-wrapper .k-menu-group .k-menu-group,
-.k-menu-scroll-wrapper.vertical .k-animation-container,
-.k-menu-scroll-wrapper.vertical .k-menu-group,
-.k-popups-wrapper .k-animation-container .k-animation-container,
-.k-popups-wrapper .k-menu-group .k-menu-group,
-.k-popups-wrapper.vertical .k-animation-container,
-.k-popups-wrapper.vertical .k-menu-group,
-.k-menu .k-animation-container .k-animation-container,
-.k-menu .k-menu-group .k-menu-group,
-.k-menu-vertical .k-animation-container,
-.k-menu-vertical .k-menu-group {
-  top: 0;
-  left: 0;
-}
-.k-menu-scroll-wrapper .k-animation-container .k-menu-group,
-.k-popups-wrapper .k-animation-container .k-menu-group,
-.k-menu .k-animation-container .k-menu-group {
-  top: auto;
-  left: auto;
-  margin-left: -1px;
-}
-.k-menu .k-animation-container,
-.k-menu-scroll-wrapper .k-animation-container,
-.k-popups-wrapper .k-animation-container,
-.k-popup .k-animation-container {
-  margin-top: -1px;
-  padding-left: 1px;
-}
-.k-ie .k-menu .k-animation-container,
-.k-ie .k-menu-scroll-wrapper .k-animation-container,
-.k-ie .k-popups-wrapper .k-animation-container,
-.k-ie .k-popup .k-animation-container {
-  margin-top: -2px;
-}
-.k-popup .k-animation-container .k-popup {
-  margin-left: -1px;
-}
-.k-menu-scroll-wrapper .k-separator,
-.k-popups-wrapper .k-separator,
-ul.k-menu .k-separator {
-  padding: 0.25em 0;
-  height: 100%;
-  width: 1px;
-  font-size: 0;
-  line-height: 0;
-  border-width: 0 1px 0 0;
-}
-.k-menu-scroll-wrapper.vertical .k-separator,
-.k-menu-scroll-wrapper.vertical .k-menu-group .k-separator,
-.k-popups-wrapper.vertical .k-separator,
-.k-popups-wrapper.vertical .k-menu-group .k-separator,
-ul.k-menu-vertical .k-separator,
-.k-menu .k-menu-group .k-separator {
-  padding: 0;
-  height: 1px;
-  width: 100%;
-  border-width: 1px 0 0;
-}
-.k-popups-wrapper .k-widget.k-menu,
-.k-menu-scroll-wrapper .k-widget.k-menu {
-  white-space: nowrap;
-  overflow: hidden;
-}
-.k-popups-wrapper.vertical .k-menu.k-menu-vertical,
-.k-menu-scroll-wrapper.vertical .k-menu.k-menu-vertical {
-  height: 100%;
-  box-sizing: border-box;
-}
-.k-popups-wrapper.horizontal .k-menu.k-menu-horizontal > .k-item,
-.k-menu-scroll-wrapper.horizontal .k-menu.k-menu-horizontal > .k-item {
-  display: inline-block;
-  overflow: hidden;
-  float: none;
-}
-.k-popups-wrapper.vertical .k-menu.k-menu-vertical > .k-item,
-.k-menu-scroll-wrapper.vertical .k-menu.k-menu-vertical > .k-item {
-  overflow: hidden;
-}
-.k-popups-wrapper,
-.k-menu-scroll-wrapper {
-  position: relative;
-  border: 0;
-  margin: 0;
-  padding: 0;
-}
-.k-popups-wrapper.vertical,
-.k-menu-scroll-wrapper.vertical {
-  height: 100%;
-}
-.k-popups-wrapper > .k-animation-container .k-item,
-.k-menu-scroll-wrapper > .k-animation-container .k-item {
-  float: none;
-}
-.k-popups-wrapper .k-menu-scroll-button,
-.k-menu-scroll-wrapper .k-menu-scroll-button {
-  border-radius: 0;
-  position: absolute;
-  display: none;
-}
-.k-popups-wrapper .k-scroll-up,
-.k-menu-scroll-wrapper .k-scroll-up {
-  top: 0;
-  left: 0;
-  width: 100%;
-}
-.k-popups-wrapper .k-scroll-down,
-.k-menu-scroll-wrapper .k-scroll-down {
-  bottom: 0;
-  left: 0;
-  width: 100%;
-}
-.k-popups-wrapper .k-scroll-up,
-.k-menu-scroll-wrapper .k-scroll-up,
-.k-popups-wrapper .k-scroll-down,
-.k-menu-scroll-wrapper .k-scroll-down {
-  padding: 0em 0.7em;
-  line-height: 0.2em;
-}
-.k-popups-wrapper .k-scroll-left,
-.k-menu-scroll-wrapper .k-scroll-left {
-  top: 0;
-  left: 0;
-  height: 100%;
-}
-.k-popups-wrapper .k-scroll-right,
-.k-menu-scroll-wrapper .k-scroll-right {
-  top: 0;
-  right: 0;
-  height: 100%;
-}
-.k-popups-wrapper .k-scroll-left,
-.k-menu-scroll-wrapper .k-scroll-left,
-.k-popups-wrapper .k-scroll-right,
-.k-menu-scroll-wrapper .k-scroll-right {
-  width: 16px;
-  padding-left: 0;
-  padding-right: 0;
-}
-.k-popups-wrapper .k-scroll-left .k-icon,
-.k-menu-scroll-wrapper .k-scroll-left .k-icon,
-.k-popups-wrapper .k-scroll-right .k-icon,
-.k-menu-scroll-wrapper .k-scroll-right .k-icon {
-  margin-top: -0.5em;
-  position: absolute;
-  top: 50%;
-  left: 0;
-}
-/* Context Menu */
-.k-context-menu {
-  border: 0;
-  user-select: none;
-}
-/* Calendar */
-.k-calendar {
-  position: relative;
-  display: inline-block;
-  width: 19em;
-  overflow: hidden;
-}
-.k-week-number {
-  width: 21.71428571em;
-}
-.k-calendar td,
-.k-calendar .k-link {
-  text-decoration: none;
-}
-.k-calendar .k-action-link {
-  text-decoration: underline;
-}
-.k-calendar .k-header,
-.k-calendar .k-footer {
-  position: relative;
-  text-align: center;
-  zoom: 1;
-}
-.k-widget.k-calendar .k-nav-prev,
-.k-widget.k-calendar .k-nav-next {
-  position: absolute;
-  top: 0.16666em;
-  line-height: 1.8333em;
-  height: 1.8333em;
-}
-.k-widget.k-calendar .k-nav-prev {
-  left: 1%;
-}
-.k-widget.k-calendar .k-nav-next {
-  right: 1%;
-}
-.k-calendar .k-content {
-  float: left;
-  border-spacing: 0;
-  width: 100%;
-  height: 14.167em;
-  border-width: 0;
-  margin: 0;
-  table-layout: fixed;
-  outline: 0;
-}
-.k-calendar .k-content,
-.k-calendar .k-content th {
-  text-align: right;
-}
-.k-calendar .k-content .k-alt {
-  border-radius: 0;
-  text-align: center;
-  font-weight: normal;
-  cursor: default;
-  line-height: 1.8333em;
-}
-.k-calendar .k-animation-container .k-content {
-  height: 100%;
-}
-.k-widget.k-calendar .k-nav-fast {
-  display: inline-block;
-  width: 75%;
-  height: 1.8333em;
-  line-height: 1.8333em;
-  margin: 0.16666em -0.08333em 0.3333em 0;
-}
-.k-calendar .k-header .k-icon {
-  vertical-align: middle;
-}
-.k-calendar .k-header .k-link.k-nav-prev,
-.k-calendar .k-header .k-link.k-nav-next {
-  height: 1.8333em;
-  width: 1.8333em;
-}
-.k-calendar th {
-  border-bottom-style: solid;
-  border-bottom-width: 1px;
-  padding: .4em .45em .4em .1em;
-  font-weight: normal;
-  cursor: default;
-}
-.k-calendar td {
-  padding: 0.08333em;
-  cursor: pointer;
-}
-.k-calendar .k-state-focus {
-  border-style: dotted;
-  border-width: 0.08333em;
-  padding: 0;
-}
-.k-calendar .k-content .k-link {
-  display: block;
-  overflow: hidden;
-  min-height: 1.8333em;
-  line-height: 1.8333em;
-  padding: 0 .45em 0 .1em;
-}
-.k-calendar .k-meta-view .k-link {
-  padding: .25em 0 .3em;
-  text-align: center;
-}
-.k-calendar .k-century .k-link {
-  text-align: left;
-  padding: 0 .45em;
-}
-.k-calendar .k-footer {
-  clear: both;
-}
-.k-calendar .k-footer .k-nav-today,
-.k-calendar .k-footer > .k-state-disabled {
-  display: block;
-  height: 100%;
-  padding: .5em 0;
-}
-.k-calendar .k-nav-today:hover {
-  text-decoration: underline;
-}
-/* ComboBox & DropDownList */
-span.k-datepicker,
-span.k-timepicker,
-span.k-datetimepicker,
-span.k-colorpicker,
-span.k-numerictextbox,
-span.k-combobox,
-span.k-dropdown,
-.k-toolbar .k-split-button {
-  background-image: none;
-}
-.k-autocomplete,
-.k-combobox,
-.k-datepicker,
-.k-timepicker,
-.k-datetimepicker,
-.k-colorpicker,
-.k-numerictextbox,
-.k-dropdown,
-.k-selectbox,
-.k-textbox,
-.k-toolbar .k-split-button,
-.k-listbox {
-  position: relative;
-  display: inline-block;
-  width: 12.4em;
-  overflow: visible;
-  border-width: 0;
-  vertical-align: middle;
-}
-.k-autocomplete > .k-i-close,
-.k-combobox > .k-dropdown-wrap > .k-i-close,
-.k-multiselect > .k-multiselect-wrap > .k-i-close {
-  display: none;
-  position: absolute;
-  right: 0;
-}
-.k-autocomplete > .k-i-close,
-.k-combobox > .k-dropdown-wrap > .k-i-close {
-  bottom: 0;
-  top: 50%;
-  transform: translateY(-50%);
-}
-.k-ie8 .k-autocomplete > .k-i-close,
-.k-ie8 .k-combobox > .k-dropdown-wrap > .k-i-close {
-  margin-top: -8px;
-}
-.k-combobox > .k-dropdown-wrap > .k-i-close {
-  font-size: 100%;
-  right: 2.4em;
-}
-.k-multiselect > .k-multiselect-wrap > .k-i-close {
-  top: 6px;
-}
-.k-autocomplete > .k-i-close,
-.k-multiselect > .k-multiselect-wrap > .k-i-close {
-  margin-right: 6px;
-}
-.k-autocomplete.k-state-hover > .k-i-close,
-.k-combobox > .k-dropdown-wrap.k-state-hover > .k-i-close,
-.k-autocomplete.k-state-focused > .k-i-close,
-.k-combobox > .k-dropdown-wrap.k-state-focused > .k-i-close {
-  display: inline-block;
-  outline: none;
-}
-.k-autocomplete > .k-hidden,
-.k-combobox > .k-dropdown-wrap > .k-hidden,
-.k-multiselect .k-hidden {
-  display: none !important;
-}
-.k-multiselect.k-state-hover > .k-multiselect-wrap > .k-i-close,
-.k-multiselect.k-state-focused > .k-multiselect-wrap > .k-i-close {
-  display: inline-block;
-  outline: none;
-}
-.k-autocomplete.k-state-border-down > .k-i-close,
-.k-combobox > .k-dropdown-wrap.k-state-border-down > .k-i-close {
-  margin-top: -1px;
-}
-.k-filter-menu .k-combobox,
-.k-filter-menu .k-datepicker,
-.k-filter-menu .k-timepicker,
-.k-filter-menu .k-datetimepicker,
-.k-filter-menu .k-numerictextbox,
-.k-filter-menu .k-dropdown,
-.k-filter-menu .k-autocomplete,
-.k-filter-menu .k-textbox {
-  width: 13.2em;
-}
-.k-autocomplete,
-.k-combobox,
-.k-datepicker,
-.k-timepicker,
-.k-datetimepicker,
-.k-colorpicker,
-.k-numerictextbox,
-.k-dropdown,
-.k-selectbox,
-.k-toolbar .k-split-button {
-  white-space: nowrap;
-}
-.k-colorpicker,
-.k-toolbar .k-split-button {
-  width: auto;
-}
-.k-datetimepicker {
-  width: 15em;
-}
-.k-autocomplete,
-.k-picker-wrap,
-.k-numeric-wrap {
-  position: relative;
-  cursor: default;
-}
-.k-dropdown-wrap {
-  position: relative;
-}
-.k-dropdown-wrap,
-.k-picker-wrap,
-.k-numeric-wrap {
-  display: block;
-}
-.k-block,
-.k-widget,
-.k-grid,
-.k-slider,
-.k-splitter,
-.k-treeview,
-.k-panelbar,
-.k-content,
-.k-header-column-menu {
-  outline: 0;
-  -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
-}
-.k-block,
-.k-slider,
-.k-splitbar,
-.k-calendar,
-.k-treeview,
-.k-pager-wrap,
-.k-grid-header .k-i-link-horizontal,
-.k-header-column-menu {
-  -webkit-touch-callout: none;
-}
-.k-list-scroller {
-  position: relative;
-  overflow: auto;
-}
-.k-popup.k-list-container,
-.k-popup.k-calendar-container {
-  -webkit-touch-callout: none;
-  -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
-  padding: 2px;
-  border-width: 1px;
-  border-style: solid;
-}
-.k-list-container.k-state-border-down,
-.k-autocomplete.k-state-border-down,
-.k-dropdown-wrap.k-state-border-down,
-.k-picker-wrap.k-state-border-down,
-.k-numeric-wrap.k-state-border-down {
-  border-bottom-width: 0;
-  padding-bottom: 1px;
-}
-.k-list-container .km-scroll-container {
-  padding-bottom: 6px;
-}
-.k-textbox,
-.k-autocomplete,
-.k-dropdown-wrap,
-.k-picker-wrap,
-.k-numeric-wrap {
-  border-width: 1px;
-  border-style: solid;
-  padding: 0 1.9em 0 0;
-}
-.k-numeric-wrap.k-expand-padding {
-  padding-right: 0;
-}
-.k-textbox,
-.k-autocomplete {
-  padding: 0;
-}
-.k-textbox.k-space-left {
-  padding-left: 1.9em;
-}
-.k-textbox.k-space-right {
-  padding-right: 1.9em;
-}
-.k-textbox .k-icon {
-  top: 50%;
-  margin: -8px 0 0;
-  position: absolute;
-}
-.k-space-left .k-icon {
-  left: 3px;
-}
-.k-space-right .k-icon {
-  right: 3px;
-}
-/*prevent missing bottom border at some zoom levels*/
-span.k-textbox:after {
-  content: "\a0";
-  display: block;
-  height: .4px;
-  overflow: hidden;
-}
-.k-autocomplete,
-.k-dropdown-wrap.k-state-focused,
-.k-dropdown-wrap.k-state-hover,
-.k-picker-wrap.k-state-focused,
-.k-picker-wrap.k-state-hover,
-.k-numeric-wrap.k-state-focused,
-.k-numeric-wrap.k-state-hover {
-  transition: box-shadow .15s ease-out;
-  transition: "box-shadow .15s ease-out";
-}
-.k-textbox > input,
-.k-picker-wrap .k-input,
-.k-numeric-wrap .k-input,
-.k-combobox .k-input {
-  width: 100%;
-  vertical-align: top;
-}
-.k-picker-wrap .k-input,
-.k-numeric-wrap .k-input,
-.k-dropdown-wrap .k-input,
-.k-selectbox .k-input {
-  font-family: inherit;
-  border-width: 0;
-  outline: 0;
-}
-.k-dropdown .k-input,
-.k-selectbox .k-input {
-  background: transparent;
-}
-.k-picker-wrap .k-select,
-.k-numeric-wrap .k-select,
-.k-dropdown-wrap .k-select {
-  position: absolute;
-  /* icon positioning */
-  top: 0;
-  right: 0;
-  display: inline-block;
-  vertical-align: top;
-  text-decoration: none;
-}
-.k-combobox .k-select,
-.k-picker-wrap .k-select,
-.k-numeric-wrap .k-select {
-  border-style: solid;
-  border-width: 0 0 0 1px;
-  border-color: inherit;
-  /* skin-related, inherit does not work in ie7- */
-}
-span.k-datetimepicker .k-select,
-span.k-datetimepicker .k-select + .k-select {
-  right: 0;
-}
-.k-textbox > input,
-.k-autocomplete .k-input {
-  display: block;
-}
-.k-combobox .k-icon {
-  /*margin-top: 1px;*/
-}
-.k-dropdown .k-select,
-.k-selectbox .k-select {
-  overflow: hidden;
-  border: 0;
-  text-decoration: none;
-  font: inherit;
-  color: inherit;
-}
-.k-dropdown .k-input,
-.k-selectbox .k-input {
-  display: block;
-  overflow: hidden;
-  text-overflow: ellipsis;
-}
-.k-textbox > input,
-.k-autocomplete .k-input,
-.k-picker-wrap .k-input,
-.k-numeric-wrap .k-input,
-.k-dropdown-wrap .k-input,
-.k-selectbox .k-input {
-  height: 2.214em;
-  line-height: 2.214em;
-  padding: 0.177em 0;
-  text-indent: 0.8em;
-  border: 0;
-  margin: 0;
-}
-.k-combobox .k-dropdown-wrap:before,
-.k-picker-wrap:before,
-.k-numeric-wrap:before {
-  content: "\a0";
-  display: inline-block;
-  width: 0;
-  height: 2.214em;
-  padding-bottom: 0.3em;
-}
-.k-combobox-clearable .k-input {
-  padding-right: 1.9em;
-  box-sizing: border-box;
-  overflow: hidden;
-  text-overflow: ellipsis;
-  height: 2.568em;
-}
-/* fix missing bottom border on browser zoom in Chrome */
-.k-webkit .k-combobox .k-dropdown-wrap:before,
-.k-webkit .k-picker-wrap:before,
-.k-webkit .k-numeric-wrap:before {
-  padding-bottom: 0.38em;
-}
-/* above style breaks NumericTextBox layout due display:block style applied to the input */
-.km.root .k-combobox .k-dropdown-wrap:before,
-.km.root .k-picker-wrap:before,
-.km.root .k-numeric-wrap:before {
-  content: none;
-}
-.k-combobox .k-input,
-.k-picker-wrap .k-input,
-.k-numeric-wrap .k-input {
-  display: inline;
-}
-.k-picker-wrap .k-select,
-.k-numeric-wrap .k-select,
-.k-dropdown-wrap .k-select {
-  min-height: 2.214em;
-  line-height: 2.564em;
-  vertical-align: middle;
-  -moz-box-sizing: border-box;
-  text-align: center;
-  width: 1.9em;
-  height: 100%;
-}
-.k-numeric-wrap .k-select {
-  padding: 0;
-}
-body .k-datetimepicker .k-select {
-  border-radius: 0;
-}
-.k-combobox .k-select,
-.k-dropdown,
-.k-selectbox .k-icon {
-  cursor: pointer;
-}
-.k-popup {
-  border-style: solid;
-  border-width: 1px;
-}
-.k-popup .k-item,
-.k-list-optionlabel {
-  cursor: default;
-}
-.k-popup .k-calendar {
-  border: 0;
-}
-.k-list {
-  height: auto;
-}
-.k-nodata {
-  min-height: 138px;
-  width: 100%;
-  display: table;
-  text-transform: uppercase;
-  font-size: 0.85em;
-  font-weight: lighter;
-}
-.k-nodata > div {
-  display: table-cell;
-  text-align: center;
-  vertical-align: middle;
-  padding: 11px;
-}
-.k-popup .k-list .k-item,
-.k-fieldselector .k-list .k-item,
-.k-list-optionlabel,
-.k-popup > .k-group-header,
-.k-popup > .k-virtual-wrap > .k-group-header,
-.k-listbox .k-item,
-.k-item.k-drag-clue {
-  padding: 1px 5px 1px 5px;
-  line-height: 1.8em;
-  min-height: 1.8em;
-}
-.k-popup .k-list .k-item,
-.k-listbox .k-item {
-  border-width: 1px;
-  border-style: solid;
-  border-color: transparent;
-  padding: 0 4px;
-}
-.k-popup .k-list .k-item > .k-group {
-  top: -1px;
-}
-.k-group-header + div > .k-list > .k-item.k-first:before {
-  content: " ";
-  display: block;
-  border-top-width: 1px;
-  border-top-style: solid;
-  position: absolute;
-  top: -1px;
-  left: 0;
-  right: 0;
-}
-.k-popup > .k-group-header,
-.k-popup > .k-virtual-wrap > .k-group-header {
-  padding-right: 22px;
-}
-.k-overflow-container .k-item {
-  padding: 1px;
-}
-.k-overflow-container > .k-state-disabled .k-button,
-.k-overflow-container .k-button.k-state-disabled,
-.k-overflow-container .k-button.k-state-disabled:hover {
-  border: 0 ;
-  background: none;
-}
-.k-popup .k-list .k-state-hover,
-.k-popup .k-list .k-state-focused,
-.k-popup .k-list .k-state-selected,
-.k-overflow-container .k-state-hover,
-.k-overflow-container .k-state-focused,
-.k-overflow-container .k-state-selected,
-.k-fieldselector .k-list .k-item,
-.k-list-optionlabel.k-state-focused,
-.k-list-optionlabel.k-state-selected,
-.k-listbox .k-item {
-  padding: 0 4px;
-  border-width: 1px;
-  border-style: solid;
-}
-.k-list-filter {
-  position: relative;
-  margin-bottom: 2px;
-}
-.k-list-filter > .k-textbox {
-  padding-right: 20px;
-  width: 100%;
-}
-.k-list-filter > .k-icon {
-  position: absolute;
-  right: 6px;
-  top: 50%;
-  transform: translateY(-50%);
-}
-.km-root .k-list-filter > .k-textbox {
-  padding-left: 0;
-  padding-right: 0;
-  border-left-width: 0;
-  border-right-width: 0;
-}
-/* MultiSelect */
-.k-multiselect-wrap {
-  position: relative;
-  border-width: 0px;
-  border-style: solid;
-  border-radius: 4px;
-  border-color: #C5C5C5;
-  background-color: #FFF;
-  min-height: 2.04em;
-  padding-right: 22px;
-}
-.k-multiselect-wrap .k-input {
-  background-color: transparent;
-  height: 1.31em;
-  line-height: 1.31em;
-  padding: 0.18em 0;
-  text-indent: 0.8em;
-  border: 0;
-  margin: 1px 0 0;
-  float: left;
-}
-.k-multiselect-wrap .k-input::-ms-clear {
-  display: none;
-}
-.k-multiselect-wrap li {
-  margin: 1px 0 1px 1px;
-  padding: .1em 1.6em .1em .4em;
-  line-height: 2.064em;
-  float: left;
-  position: relative;
-}
-.k-autocomplete .k-i-loading,
-.k-multiselect .k-i-loading {
-  position: absolute;
-  right: 3px;
-  bottom: 4px;
-}
-.k-multiselect-wrap .k-select {
-  position: absolute;
-  top: 0;
-  bottom: 0;
-  right: 0;
-  padding: .03em .2em;
-}
-/* Date/Time Pickers */
-.k-datetimepicker .k-picker-wrap {
-  padding-right: 3.8em;
-}
-.k-datetimepicker .k-select {
-  width: 3.8em;
-}
-.k-datetimepicker .k-select .k-link-date {
-  margin-left: -0.285em;
-}
-.k-datetimepicker .k-select .k-link-time {
-  margin-right: -0.285em;
-  margin-left: .428em;
-}
-.k-datetimepicker .k-picker-wrap .k-icon {
-  margin: 0 2px;
-}
-.k-picker-wrap .k-icon {
-  cursor: pointer;
-}
-.k-button,
-.k-textbox,
-.k-timepicker,
-.k-datepicker,
-.k-datetimepicker {
-  display: inline-block;
-  vertical-align: middle;
-}
-.k-picker-wrap .k-input {
-  margin: 0;
-}
-.k-time-popup .k-item {
-  padding: 1px 3px;
-}
-/* inputs */
-.k-input {
-  padding: 0.25em 0;
-}
-.k-input,
-.k-textbox > input {
-  outline: 0;
-  -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
-}
-.k-textbox {
-  outline: 0;
-}
-input.k-textbox,
-textarea.k-textbox {
-  padding: 2px .3em;
-}
-input.k-textbox {
-  height: 2.694em;
-  text-indent: 0.8em;
-  line-height: 1.6em;
-}
-.k-ie input.k-textbox {
-  text-indent: 0.4em;
-}
-.k-ff input.k-textbox {
-  height: 2.17em;
-}
-textarea.k-textbox {
-  height: auto;
-}
-/* NumericTextBox */
-span.k-numerictextbox {
-  background-color: transparent;
-}
-.k-numerictextbox .k-input {
-  margin: 0;
-}
-.k-numerictextbox .k-link {
-  display: block;
-  height: 1em;
-  line-height: 1em;
-  vertical-align: middle;
-  border-width: 0;
-  padding: 0;
-  overflow: hidden;
-}
-.k-numerictextbox .k-icon {
-  display: block;
-  margin: auto;
-  height: 100%;
-}
-.k-numerictextbox .k-i-arrow-60-up {
-  top: 2px;
-}
-.k-numerictextbox .k-i-arrow-60-down {
-  bottom: 2px;
-}
-.k-numeric-wrap .k-input::-webkit-inner-spin-button {
-  -webkit-appearance: none;
-}
-/* ColorPicker */
-.k-colorpicker .k-picker-wrap {
-  line-height: 2em;
-}
-.k-colorpicker .k-selected-color {
-  vertical-align: top;
-  display: inline-block;
-  height: 2em;
-  width: 2em;
-}
-.k-colorpicker .k-selected-color .k-i-line {
-  font-size: 2em;
-  color: #FF525E;
-  display: inline-block;
-  -moz-transform: scaleX(-1);
-  -o-transform: scaleX(-1);
-  -webkit-transform: scaleX(-1);
-  transform: scaleX(-1);
-  filter: FlipH;
-  -ms-filter: "FlipH";
-}
-.k-colorpicker .k-selected-color .k-i-line:before {
-  content: "\e510";
-}
-.k-colorpicker .k-tool-icon {
-  position: relative;
-  top: -2px;
-  display: inline-block;
-  padding: 3px 3px 2px;
-  margin-right: 3px;
-  margin-left: 2px;
-  margin-bottom: 3px;
-  background-repeat: no-repeat;
-  vertical-align: middle;
-  width: 16px;
-  height: 16px;
-  -ms-high-contrast-adjust: none;
-}
-.k-colorpicker .k-tool-icon .k-selected-color {
-  display: block;
-  height: 3px;
-  width: 16px;
-  position: absolute;
-  left: 3px;
-  bottom: -3px;
-  border-radius: 0 !important;
-}
-.k-colorpicker .k-select {
-  cursor: pointer;
-}
-.k-colorpicker .k-picker-wrap .k-icon {
-  overflow: visible;
-}
-.k-disabled-overlay {
-  position: absolute;
-  left: 0;
-  top: 0;
-  width: 100%;
-  height: 100%;
-  background-color: #fff;
-  opacity: 0.5;
-  filter: alpha(opacity=50);
-}
-.k-colorpalette {
-  position: relative;
-  line-height: 0;
-  border-width: 0;
-  display: inline-block;
-}
-.k-colorpalette .k-palette {
-  border-collapse: collapse;
-  position: relative;
-  width: 100%;
-  height: 100%;
-}
-.k-colorpalette .k-item {
-  width: 14px;
-  height: 14px;
-  overflow: hidden;
-  -ms-high-contrast-adjust: none;
-}
-.k-colorpalette .k-item.k-state-selected,
-.k-colorpalette .k-item.k-state-selected:hover {
-  z-index: 100;
-  background: transparent;
-  box-shadow: 0 1px 3px 1px rgba(0, 0, 0, 0.7), inset 0 0 0 1px rgba(255, 255, 255, 0.45);
-  position: relative;
-}
-.k-colorpalette .k-item:hover {
-  z-index: 101;
-  position: relative;
-  box-shadow: 0 1px 3px 1px rgba(0, 0, 0, 0.5), inset 0 0 0 1px rgba(255, 255, 255, 0.3);
-}
-.k-flatcolorpicker {
-  position: relative;
-  display: inline-block;
-  width: 265px;
-  padding-bottom: 5px;
-}
-div.k-flatcolorpicker {
-  background-color: transparent;
-  background-image: none;
-}
-.k-flatcolorpicker .k-selected-color {
-  background-image: url("../textures/transtexture.png");
-  background-position: 50% 50%;
-  text-align: right;
-}
-.k-flatcolorpicker .k-selected-color input.k-color-value {
-  font-family: Consolas, "Ubuntu Mono", "Lucida Console", "Courier New", monospace;
-  padding: .75em .1em .65em .65em;
-  border: 0;
-  margin: 0;
-  width: 82%;
-}
-.k-flatcolorpicker .k-selected-color .k-color-input {
-  background-color: #fff;
-  display: inline-block;
-  width: 84%;
-  text-align: left;
-}
-.k-flatcolorpicker .k-selected-color .k-clear-color {
-  padding: .4em;
-  line-height: 0;
-}
-.k-flatcolorpicker .k-selected-color .k-clear-color .k-i-reset-color:before {
-  color: #000;
-  opacity: 0.8;
-}
-.k-flatcolorpicker .k-selected-color .k-clear-color .k-i-reset-color:hover,
-.k-flatcolorpicker .k-selected-color .k-clear-color .k-i-reset-color:active {
-  opacity: 1;
-}
-.k-flatcolorpicker .k-clear-color-container .k-clear-color.k-state-focused:active {
-  color: inherit;
-}
-.k-flatcolorpicker .k-clear-color-container .k-clear-color:active {
-  color: #000;
-  opacity: 1;
-}
-.k-flatcolorpicker .k-selected-color .k-clear-color .k-i-reset-color,
-.k-flatcolorpicker .k-clear-color-container .k-clear-color .k-i-reset-color {
-  background-image: none;
-}
-.k-flatcolorpicker .k-clear-color-container {
-  text-align: left;
-}
-.k-flatcolorpicker .k-hsv-rectangle {
-  position: relative;
-  user-select: none;
-  -ms-touch-action: pinch-zoom double-tap-zoom;
-}
-.k-flatcolorpicker .k-hsv-rectangle .k-draghandle {
-  cursor: pointer;
-  position: absolute;
-  z-index: 10;
-  left: 50%;
-  top: 50%;
-  width: 8px;
-  height: 8px;
-  border: 1px solid #eee;
-  margin-left: -5px;
-  margin-top: -5px;
-  border-radius: 6px;
-  box-shadow: 0 1px 2px #444;
-  background: transparent;
-}
-.k-flatcolorpicker .k-hsv-rectangle .k-draghandle:hover,
-.k-flatcolorpicker .k-hsv-rectangle .k-draghandle:focus {
-  background: transparent;
-  border-color: #fff;
-  box-shadow: 0 1px 5px #000;
-}
-.k-flatcolorpicker .k-hsv-rectangle.k-dragging,
-.k-flatcolorpicker .k-hsv-rectangle.k-dragging * {
-  cursor: none;
-}
-.k-flatcolorpicker .k-slider-horizontal {
-  height: 20px;
-  width: 90%;
-  margin: 0 5%;
-}
-.k-flatcolorpicker .k-slider-horizontal .k-slider-track {
-  box-shadow: 0 1px 0 #fff, 0 -1px 0 #999;
-}
-.k-flatcolorpicker .k-hue-slider,
-.k-flatcolorpicker .k-transparency-slider {
-  display: block;
-}
-.k-flatcolorpicker .k-hue-slider .k-slider-selection,
-.k-flatcolorpicker .k-transparency-slider .k-slider-selection {
-  background: transparent;
-}
-.k-flatcolorpicker .k-hue-slider .k-draghandle,
-.k-flatcolorpicker .k-transparency-slider .k-draghandle {
-  background: transparent;
-  border: 3px solid #eee;
-  margin-top: 1px;
-  height: 8px;
-  width: 8px;
-  box-shadow: 0 1px 4px #444;
-}
-.k-flatcolorpicker .k-hue-slider .k-draghandle:hover,
-.k-flatcolorpicker .k-transparency-slider .k-draghandle:hover,
-.k-flatcolorpicker .k-hue-slider .k-draghandle:focus,
-.k-flatcolorpicker .k-transparency-slider .k-draghandle:focus {
-  background: transparent;
-  border-color: #fff;
-  box-shadow: 0 1px 5px #000;
-  border-width: 2px;
-  padding: 1px;
-}
-.k-flatcolorpicker .k-hue-slider .k-slider-track {
-  background: linear-gradient(to right, #ff0000 0%, #ffff00 16%, #00ff00 33%, #00ffff 50%, #0000ff 67%, #ff00ff 84%, #ff0004 100%);
-}
-.k-flatcolorpicker .k-transparency-slider .k-slider-track {
-  background-image: url("../textures/transparency.png");
-  background-size: 100% auto;
-  background-position: 100% 50%;
-  background-repeat: no-repeat;
-}
-.k-flatcolorpicker .k-controls {
-  margin-top: 10px;
-  margin-bottom: 5px;
-  text-align: center;
-  font-size: 90%;
-}
-.k-flatcolorpicker .k-controls .k-button {
-  width: 6em;
-}
-.k-flatcolorpicker .k-hsv-gradient {
-  background: linear-gradient(to bottom, rgba(0, 0, 0, 0) 0%, #000000 100%), linear-gradient(to right, #ffffff 0%, rgba(255, 255, 255, 0) 100%);
-  height: 180px;
-  margin-bottom: 5px;
-}
-.k-ie9 .k-flatcolorpicker .k-hue-slider .k-slider-track {
-  background: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiA/Pgo8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgdmlld0JveD0iMCAwIDEgMSIgcHJlc2VydmVBc3BlY3RSYXRpbz0ibm9uZSI+CiAgPGxpbmVhckdyYWRpZW50IGlkPSJncmFkLXVjZ2ctZ2VuZXJhdGVkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjAlIiB5MT0iMCUiIHgyPSIxMDAlIiB5Mj0iMCUiPgogICAgPHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iI2ZmMDAwMCIgc3RvcC1vcGFjaXR5PSIxIi8+CiAgICA8c3RvcCBvZmZzZXQ9IjE2JSIgc3RvcC1jb2xvcj0iI2ZmZmYwMCIgc3RvcC1vcGFjaXR5PSIxIi8+CiAgICA8c3RvcCBvZmZzZXQ9IjMzJSIgc3RvcC1jb2xvcj0iIzAwZmYwMCIgc3RvcC1vcGFjaXR5PSIxIi8+CiAgICA8c3RvcCBvZmZzZXQ9IjUwJSIgc3RvcC1jb2xvcj0iIzAwZmZmZiIgc3RvcC1vcGFjaXR5PSIxIi8+CiAgICA8c3RvcCBvZmZzZXQ9IjY3JSIgc3RvcC1jb2xvcj0iIzAwMDBmZiIgc3RvcC1vcGFjaXR5PSIxIi8+CiAgICA8c3RvcCBvZmZzZXQ9Ijg0JSIgc3RvcC1jb2xvcj0iI2ZmMDBmZiIgc3RvcC1vcGFjaXR5PSIxIi8+CiAgICA8c3RvcCBvZmZzZXQ9IjEwMCUiIHN0b3AtY29sb3I9IiNmZjAwMDQiIHN0b3Atb3BhY2l0eT0iMSIvPgogIDwvbGluZWFyR3JhZGllbnQ+CiAgPHJlY3QgeD0iMCIgeT0iMCIgd2lkdGg9IjEiIGhlaWdodD0iMSIgZmlsbD0idXJsKCNncmFkLXVjZ2ctZ2VuZXJhdGVkKSIgLz4KPC9zdmc+);
-}
-.k-ie9 .k-flatcolorpicker .k-hsv-gradient {
-  background: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiA/Pgo8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgdmlld0JveD0iMCAwIDEgMSIgcHJlc2VydmVBc3BlY3RSYXRpbz0ibm9uZSI+CiAgPGxpbmVhckdyYWRpZW50IGlkPSJncmFkLXVjZ2ctZ2VuZXJhdGVkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjAlIiB5MT0iMCUiIHgyPSIwJSIgeTI9IjEwMCUiPgogICAgPHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iIzAwMDAwMCIgc3RvcC1vcGFjaXR5PSIwIi8+CiAgICA8c3RvcCBvZmZzZXQ9IjEwMCUiIHN0b3AtY29sb3I9IiMwMDAwMDAiIHN0b3Atb3BhY2l0eT0iMSIvPgogIDwvbGluZWFyR3JhZGllbnQ+CiAgPHJlY3QgeD0iMCIgeT0iMCIgd2lkdGg9IjEiIGhlaWdodD0iMSIgZmlsbD0idXJsKCNncmFkLXVjZ2ctZ2VuZXJhdGVkKSIgLz4KPC9zdmc+), url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiA/Pgo8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgdmlld0JveD0iMCAwIDEgMSIgcHJlc2VydmVBc3BlY3RSYXRpbz0ibm9uZSI+CiAgPGxpbmVhckdyYWRpZW50IGlkPSJncmFkLXVjZ2ctZ2VuZXJhdGVkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjAlIiB5MT0iMCUiIHgyPSIxMDAlIiB5Mj0iMCUiPgogICAgPHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iI2ZmZmZmZiIgc3RvcC1vcGFjaXR5PSIxIi8+CiAgICA8c3RvcCBvZmZzZXQ9IjEwMCUiIHN0b3AtY29sb3I9IiNmZmZmZmYiIHN0b3Atb3BhY2l0eT0iMCIvPgogIDwvbGluZWFyR3JhZGllbnQ+CiAgPHJlY3QgeD0iMCIgeT0iMCIgd2lkdGg9IjEiIGhlaWdodD0iMSIgZmlsbD0idXJsKCNncmFkLXVjZ2ctZ2VuZXJhdGVkKSIgLz4KPC9zdmc+);
-}
-.k-ie8 .k-flatcolorpicker .k-hue-slider .k-slider-track {
-  background: url("../textures/hue.png") repeat 0 50%;
-}
-.k-ie8 .k-flatcolorpicker .k-transparency-slider .k-slider-track {
-  background: url("../textures/transparency.png") repeat 0 50%;
-}
-.k-ie8 .k-flatcolorpicker .k-hsv-gradient {
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff',endColorstr='#00ffffff',GradientType=1) progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000',endColorstr='#ff000000',GradientType=0);
-}
-.k-rtl .k-multiselect-wrap {
-  padding-right: 0;
-  padding-left: 22px;
-}
-.k-maskedtextbox {
-  position: relative;
-  display: inline-block;
-  background-color: transparent;
-  border-width: 0;
-}
-.k-maskedtextbox ::-ms-clear {
-  display: none;
-  width: 0;
-  height: 0;
-}
-.k-maskedtextbox .k-i-warning {
-  display: none;
-  position: absolute;
-  width: 1.9em;
-  right: 0;
-  top: 50%;
-  transform: translateY(-50%);
-}
-.k-maskedtextbox.k-state-invalid .k-i-warning {
-  display: inline-block;
-}
-.k-dateinput {
-  position: relative;
-  display: inline-block;
-  border-width: 0;
-}
-.k-dateinput.k-widget {
-  background-color: transparent;
-}
-.k-dateinput ::-ms-clear {
-  display: none;
-  width: 0;
-  height: 0;
-}
-.k-dateinput .k-i-warning {
-  display: none;
-  position: absolute;
-  right: 0;
-  top: 50%;
-  transform: translateY(-50%);
-  overflow: visible;
-}
-.k-dateinput.k-state-invalid .k-i-warning {
-  display: inline-block;
-}
-.k-datepicker .k-picker-wrap .k-i-warning {
-  display: none;
-  position: absolute;
-  right: 0;
-  top: 50%;
-  transform: translateY(-50%);
-  overflow: visible;
-}
-.k-datepicker .k-picker-wrap.k-state-invalid .k-i-warning {
-  display: inline-block;
-}
-.k-listbox {
-  box-sizing: border-box;
-  height: 200px;
-}
-.k-listbox.k-widget {
-  background-color: transparent;
-}
-.k-listbox .k-list-scroller {
-  height: 100%;
-  overflow: auto;
-  border-width: 1px;
-  border-style: solid;
-  box-sizing: border-box;
-}
-.k-listbox .k-list-scroller li {
-  cursor: default;
-  -moz-user-select: none;
-  -ms-user-select: none;
-  -khtml-user-select: none;
-  -webkit-user-select: none;
-  -webkit-touch-callout: none;
-}
-.k-listbox .k-listbox-toolbar {
-  box-sizing: border-box;
-}
-.k-listbox.k-listbox-toolbar-top {
-  padding: 15px 0 1.42857143em;
-}
-.k-listbox.k-listbox-toolbar-top .k-listbox-toolbar {
-  margin-top: -15px;
-  margin-bottom: 5px;
-}
-.k-listbox.k-listbox-toolbar-top .k-listbox-toolbar li {
-  display: inline-block;
-}
-.k-listbox.k-listbox-toolbar-top .k-listbox-toolbar li + li {
-  margin-left: 5px;
-}
-.k-listbox.k-listbox-toolbar-left .k-listbox-toolbar {
-  float: left;
-  margin-right: 5px;
-}
-.k-listbox.k-listbox-toolbar-left .k-listbox-toolbar li + li {
-  margin-top: 5px;
-}
-.k-listbox.k-listbox-toolbar-right .k-listbox-toolbar {
-  float: right;
-  margin-left: 5px;
-}
-.k-listbox.k-listbox-toolbar-right .k-listbox-toolbar li:not(:last-child) {
-  margin-bottom: 5px;
-}
-.k-listbox.k-listbox-toolbar-bottom {
-  padding: 15px 0 1.45em;
-}
-.k-listbox.k-listbox-toolbar-bottom .k-list-scroller {
-  margin-top: -15px;
-}
-.k-listbox.k-listbox-toolbar-bottom .k-listbox-toolbar {
-  margin-top: 5px;
-}
-.k-listbox.k-listbox-toolbar-bottom .k-listbox-toolbar li {
-  display: inline-block;
-}
-.k-listbox.k-listbox-toolbar-bottom .k-listbox-toolbar li + li {
-  margin-left: 5px;
-}
-.k-listbox .k-ghost {
-  opacity: .5;
-}
-/* Notification */
-.k-notification-wrap {
-  padding: .6em .5em;
-  cursor: default;
-  position: relative;
-  white-space: nowrap;
-}
-.k-notification-button .k-notification-wrap {
-  padding-right: 20px;
-}
-.k-notification-wrap > .k-i-information,
-.k-notification-wrap > .k-i-information,
-.k-notification-wrap > .k-i-information,
-.k-notification-wrap > .k-i-warning,
-.k-notification-wrap > .k-i-information {
-  vertical-align: text-bottom;
-  margin-right: 4px;
-}
-.k-notification-wrap > .k-i-close {
-  position: absolute;
-  top: 7px;
-  right: 4px;
-  display: none;
-}
-.k-notification-button .k-notification-wrap > .k-i-close {
-  display: block;
-}
-/* Progressbar */
-.k-progressbar {
-  display: inline-block;
-  position: relative;
-  vertical-align: middle;
-}
-.k-progressbar {
-  border-radius: 4px;
-}
-.k-progressbar-horizontal {
-  width: 27em;
-  height: 1.9em;
-}
-.k-progressbar-vertical {
-  width: 1.9em;
-  height: 27em;
-}
-.k-progressbar > .k-state-selected {
-  position: absolute;
-  border-style: solid;
-  border-width: 1px;
-  overflow: hidden;
-}
-.k-progressbar-horizontal > .k-state-selected,
-.k-rtl .k-progressbar-horizontal.k-progressbar-reverse > .k-state-selected {
-  left: -1px;
-  right: auto;
-  top: -1px;
-  height: 100%;
-  border-radius: 4px 0 0 4px;
-}
-.k-progressbar-horizontal.k-progressbar-reverse > .k-state-selected,
-.k-rtl .k-progressbar-horizontal > .k-state-selected {
-  left: auto;
-  right: -1px;
-  border-radius: 0 4px 4px 0;
-}
-.k-progressbar-vertical > .k-state-selected {
-  left: -1px;
-  bottom: -1px;
-  width: 100%;
-  border-radius: 0 0 4px 4px;
-}
-.k-progressbar-vertical.k-progressbar-reverse > .k-state-selected {
-  bottom: auto;
-  top: -1px;
-  border-radius: 4px 4px 0 0;
-}
-.k-progressbar > .k-state-selected.k-complete,
-.k-rtl .k-progressbar > .k-state-selected.k-complete {
-  border-radius: 4px;
-}
-.k-progressbar > .k-reset {
-  list-style: none;
-  margin: 0;
-  padding: 0;
-  position: absolute;
-  left: -1px;
-  top: -1px;
-  width: 100%;
-  height: 100%;
-  border-radius: 4px;
-  white-space: nowrap;
-}
-.k-progressbar-horizontal .k-item {
-  display: inline-block;
-  height: 100%;
-  border-style: solid;
-  margin-left: -1px;
-}
-.k-progressbar-horizontal .k-item.k-first {
-  margin-left: 0;
-}
-.k-progressbar-horizontal .k-item.k-last {
-  border-right-width: 0;
-}
-.k-progressbar-horizontal .k-item,
-.k-rtl .k-progressbar-horizontal.k-progressbar-reverse .k-item {
-  border-width: 1px 0 1px 1px;
-}
-.k-progressbar-horizontal.k-progressbar-reverse .k-item,
-.k-rtl .k-progressbar-horizontal .k-item {
-  border-width: 1px 0 1px 1px;
-}
-.k-progressbar-horizontal .k-first,
-.k-rtl .k-progressbar-horizontal .k-last,
-.k-rtl .k-progressbar-horizontal.k-progressbar-reverse .k-last {
-  border-top-left-radius: 4px;
-  border-bottom-left-radius: 4px;
-  border-left-width: 1px;
-}
-.k-progressbar-horizontal .k-last,
-.k-rtl .k-progressbar-horizontal .k-first {
-  border-top-right-radius: 4px;
-  border-bottom-right-radius: 4px;
-}
-.k-progressbar-horizontal.k-progressbar-reverse .k-last,
-.k-rtl .k-progressbar-horizontal .k-first {
-  border-right-width: 1px;
-}
-.k-progressbar-horizontal .k-last.k-state-selected {
-  border-right-width: 1px;
-}
-.k-progressbar-vertical .k-item {
-  width: 100%;
-  border-style: solid;
-  border-width: 1px 1px 0 1px;
-  margin-top: -1px;
-}
-.k-progressbar-vertical .k-item.k-first {
-  margin-top: 0;
-}
-.k-progressbar-vertical li.k-item.k-last {
-  border-bottom-width: 0;
-}
-.k-progressbar-vertical .k-first {
-  border-top-left-radius: 4px;
-  border-top-right-radius: 4px;
-}
-.k-progressbar-vertical .k-last {
-  border-bottom-left-radius: 4px;
-  border-bottom-right-radius: 4px;
-  border-bottom-width: 1px;
-}
-.k-progressbar-vertical.k-progressbar-reverse .k-item {
-  border-width: 0 1px 1px 1px;
-}
-.k-progressbar-vertical.k-progressbar-reverse .k-first {
-  border-top-width: 1px;
-}
-.k-progress-status-wrap {
-  position: absolute;
-  top: -1px;
-  border: 1px solid transparent;
-  line-height: 2em;
-  width: 100%;
-  height: 100%;
-}
-.k-progress-status-wrap,
-.k-rtl .k-progressbar-horizontal.k-progressbar-reverse .k-progress-status-wrap {
-  left: -1px;
-  right: auto;
-  text-align: right;
-}
-.k-progressbar-horizontal.k-progressbar-reverse .k-progress-status-wrap,
-.k-rtl .k-progressbar-horizontal .k-progress-status-wrap {
-  left: auto;
-  right: -1px;
-  text-align: left;
-}
-.k-progressbar-vertical .k-progress-status-wrap {
-  top: auto;
-  bottom: -1px;
-}
-.k-progressbar-vertical.k-progressbar-reverse .k-progress-status-wrap {
-  bottom: auto;
-  top: -1px;
-}
-.k-progress-status {
-  display: inline-block;
-  padding: 0 .5em;
-  min-width: 10px;
-  white-space: nowrap;
-}
-.k-progressbar-vertical.k-progressbar-reverse .k-progress-status {
-  position: absolute;
-  bottom: 0;
-  left: 0;
-}
-.k-progressbar-vertical .k-progress-status {
-  transform: rotate(-90deg) translateX(-100%);
-  transform-origin: 0 0;
-}
-.k-progressbar-vertical.k-progressbar-reverse .k-progress-status {
-  transform: rotate(90deg) translateX(-100%);
-  transform-origin: 0 100%;
-}
-.k-ie8 .k-progressbar-vertical .k-progress-status {
-  writing-mode: bt-lr;
-  padding: .5em 0;
-}
-/* Slider */
-div.k-slider {
-  position: relative;
-  border-width: 0;
-  background-color: transparent;
-  user-select: none;
-}
-.k-slider-vertical {
-  width: 26px;
-  height: 200px;
-  /* default height */
-}
-.k-slider-horizontal {
-  display: inline-block;
-  width: 200px;
-  /* default width */
-  height: 26px;
-}
-.k-slider-wrap {
-  width: 100%;
-  height: 100%;
-}
-.k-slider .k-button,
-.k-grid .k-slider .k-button {
-  position: absolute;
-  top: 0;
-  width: 24px;
-  min-width: 0;
-  height: 24px;
-  margin: 0;
-  padding: 0;
-  outline: 0;
-}
-.k-slider .k-button .k-icon {
-  margin-top: 3px;
-  vertical-align: top;
-}
-.k-state-disabled .k-slider-wrap {
-  filter: alpha(opacity=60);
-  opacity: .6;
-}
-.k-state-disabled .k-slider-wrap .k-slider-items {
-  color: #333;
-}
-.k-slider .k-button-decrease {
-  left: 0;
-}
-.k-slider-vertical .k-button-decrease,
-.k-grid .k-slider-vertical .k-button-decrease {
-  top: auto;
-  bottom: 0;
-}
-.k-slider .k-button-increase {
-  right: 0;
-}
-.k-slider .k-icon,
-.k-slider-track,
-.k-slider .k-tick {
-  cursor: pointer;
-}
-.k-slider-track,
-.k-slider-selection {
-  position: absolute;
-  margin: 0;
-  padding: 0;
-}
-.k-slider-horizontal .k-slider-track,
-.k-slider-horizontal .k-slider-selection {
-  top: 50%;
-  left: 0;
-  height: 8px;
-  margin-top: -4px;
-  background-repeat: repeat-x;
-}
-.k-slider-horizontal .k-slider-buttons .k-slider-track {
-  left: 34px;
-}
-.k-slider-vertical .k-slider-track,
-.k-slider-vertical .k-slider-selection {
-  left: 50%;
-  bottom: 0;
-  width: 8px;
-  margin-left: -4px;
-  background-repeat: repeat-y;
-}
-.k-slider-vertical .k-slider-buttons .k-slider-track {
-  bottom: 34px;
-}
-.k-draghandle {
-  position: absolute;
-  background-repeat: no-repeat;
-  background-color: transparent;
-  text-indent: -3333px;
-  overflow: hidden;
-  text-decoration: none;
-  text-align: center;
-  outline: 0;
-}
-.k-slider-horizontal .k-draghandle {
-  top: -4px;
-  width: 13px;
-  height: 14px;
-}
-.k-slider-vertical .k-draghandle {
-  left: -4px;
-  width: 14px;
-  height: 13px;
-}
-.k-slider-buttons .k-slider-items {
-  margin-left: 34px;
-}
-.k-slider-horizontal .k-slider-items {
-  height: 100%;
-}
-.k-slider-vertical .k-slider-items {
-  padding-top: 1px;
-}
-.k-slider-vertical .k-slider-buttons .k-slider-items {
-  padding-top: 0;
-}
-.k-slider-vertical .k-slider-buttons .k-slider-items {
-  margin: 0;
-  padding-top: 35px;
-}
-.k-slider .k-tick {
-  position: relative;
-  margin: 0;
-  padding: 0;
-  background-color: transparent;
-  background-repeat: no-repeat;
-  background-position: center center;
-}
-.k-slider-horizontal .k-tick {
-  float: left;
-  height: 100%;
-  text-align: center;
-}
-.k-slider-horizontal .k-tick {
-  background-position: center -92px;
-}
-.k-slider-horizontal .k-slider-topleft .k-tick {
-  background-position: center -122px;
-}
-.k-slider-horizontal .k-slider-bottomright .k-tick {
-  background-position: center -152px;
-}
-.k-slider-horizontal .k-tick-large {
-  background-position: center -2px;
-}
-.k-slider-horizontal .k-slider-topleft .k-tick-large {
-  background-position: center -32px;
-}
-.k-slider-horizontal .k-slider-bottomright .k-tick-large {
-  background-position: center -62px;
-}
-.k-slider-vertical .k-tick {
-  background-position: -92px center;
-}
-.k-slider-vertical .k-slider-topleft .k-tick {
-  background-position: -122px center;
-}
-.k-slider-vertical .k-slider-bottomright .k-tick {
-  background-position: -152px center;
-}
-.k-slider-vertical .k-tick-large {
-  background-position: -2px center;
-}
-.k-slider-vertical .k-slider-topleft .k-tick-large {
-  background-position: -32px center;
-}
-.k-slider-vertical .k-slider-bottomright .k-tick-large {
-  background-position: -62px center;
-}
-.k-slider-horizontal .k-first {
-  background-position: 0 -92px;
-}
-.k-slider-horizontal .k-tick-large.k-first {
-  background-position: 0 -2px;
-}
-.k-slider-horizontal .k-slider-topleft .k-first {
-  background-position: 0 -122px;
-}
-.k-slider-horizontal .k-slider-topleft .k-tick-large.k-first {
-  background-position: 0 -32px;
-}
-.k-slider-horizontal .k-slider-bottomright .k-first {
-  background-position: 0 -152px;
-}
-.k-slider-horizontal .k-slider-bottomright .k-tick-large.k-first {
-  background-position: 0 -62px;
-}
-.k-slider-horizontal .k-last {
-  background-position: 100% -92px;
-}
-.k-slider-horizontal .k-tick-large.k-last {
-  background-position: 100% -2px;
-}
-.k-slider-horizontal .k-slider-topleft .k-last {
-  background-position: 100% -122px;
-}
-.k-slider-horizontal .k-slider-topleft .k-tick-large.k-last {
-  background-position: 100% -32px;
-}
-.k-slider-horizontal .k-slider-bottomright .k-last {
-  background-position: 100% -152px;
-}
-.k-slider-horizontal .k-slider-bottomright .k-tick-large.k-last {
-  background-position: 100% -62px;
-}
-.k-slider-vertical .k-first {
-  background-position: -92px 100%;
-}
-.k-slider-vertical .k-tick-large.k-first {
-  background-position: -2px 100%;
-}
-.k-slider-vertical .k-slider-topleft .k-first {
-  background-position: -122px 100%;
-}
-.k-slider-vertical .k-slider-topleft .k-tick-large.k-first {
-  background-position: -32px 100%;
-}
-.k-slider-vertical .k-slider-bottomright .k-first {
-  background-position: -152px 100%;
-}
-.k-slider-vertical .k-slider-bottomright .k-tick-large.k-first {
-  background-position: -62px 100%;
-}
-.k-slider-vertical .k-last {
-  background-position: -92px 0;
-}
-.k-slider-vertical .k-tick-large.k-last {
-  background-position: -2px 0;
-}
-.k-slider-vertical .k-slider-topleft .k-last {
-  background-position: -122px 0;
-}
-.k-slider-vertical .k-slider-topleft .k-tick-large.k-last {
-  background-position: -32px 0;
-}
-.k-slider-vertical .k-slider-bottomright .k-last {
-  background-position: -152px 0;
-}
-.k-slider-vertical .k-slider-bottomright .k-tick-large.k-last {
-  background-position: -62px 0;
-}
-.k-slider-vertical .k-tick {
-  text-align: right;
-}
-.k-slider-vertical .k-slider-topleft .k-tick {
-  text-align: left;
-}
-.k-slider .k-label {
-  position: absolute;
-  white-space: nowrap;
-  font-size: .92em;
-}
-.k-slider-horizontal .k-label {
-  left: 0;
-  width: 100%;
-  line-height: 1;
-}
-.k-slider-horizontal .k-first .k-label {
-  left: -50%;
-}
-.k-slider-horizontal .k-last .k-label {
-  left: auto;
-  right: -50%;
-}
-.k-slider-horizontal .k-label {
-  bottom: -1.2em;
-}
-.k-slider-horizontal .k-slider-topleft .k-label {
-  top: -1.2em;
-}
-.k-slider-vertical .k-label {
-  left: 120%;
-  display: block;
-  text-align: left;
-}
-.k-slider-vertical .k-last .k-label {
-  top: -0.5em;
-}
-.k-slider-vertical .k-first .k-label {
-  bottom: -0.5em;
-}
-.k-slider-vertical .k-slider-topleft .k-label {
-  left: auto;
-  right: 120%;
-}
-.k-slider-tooltip {
-  top: -4444px;
-  /*prevent window resize in IE8 when appending*/
-}
-/* Tooltip */
-.k-tooltip {
-  position: absolute;
-  z-index: 12000;
-  border-style: solid;
-  border-width: 0;
-  padding: 5px 5px 5px 6px;
-  background-repeat: repeat-x;
-  min-width: 20px;
-  /*slider tooltip only*/
-  text-align: center;
-  /*slider tooltip only*/
-}
-.k-tooltip-button {
-  text-align: right;
-  height: 0;
-}
-.k-tooltip-content {
-  height: 100%;
-}
-.k-tooltip-closable .k-tooltip-content {
-  padding-right: 20px;
-}
-span.k-tooltip {
-  position: static;
-  display: inline-block;
-  border-width: 1px;
-  padding: 2px 5px 1px 6px;
-}
-.k-invalid-msg {
-  display: none;
-}
-.k-callout {
-  position: absolute;
-  width: 0;
-  height: 0;
-  border-style: solid;
-  border-width: 6px;
-  border-color: transparent;
-  pointer-events: none;
-}
-.k-callout-n {
-  top: -12px;
-  left: 50%;
-  pointer-events: none;
-}
-.k-callout-w {
-  top: 50%;
-  left: -12px;
-  pointer-events: none;
-}
-.k-callout-s {
-  left: 50%;
-  bottom: -12px;
-  pointer-events: none;
-}
-.k-callout-e {
-  top: 50%;
-  right: -12px;
-  pointer-events: none;
-}
-.k-slider-tooltip .k-callout-n,
-.k-slider-tooltip .k-callout-s {
-  margin-left: -6px;
-}
-.k-slider-tooltip .k-callout-w,
-.k-slider-tooltip .k-callout-e {
-  margin-top: -6px;
-}
-.k-tooltip-validation .k-i-warning {
-  vertical-align: text-top;
-  margin-right: 3px;
-}
-.k-tooltip-validation {
-  z-index: 9999;
-}
-/* Toolbar */
-.k-toolbar {
-  position: relative;
-  display: block;
-  vertical-align: middle;
-  line-height: 2.9em;
-}
-.k-toolbar .k-button .k-icon,
-.k-toolbar .k-button .k-sprite,
-.k-overflow-container .k-button .k-icon,
-.k-overflow-container .k-button .k-sprite {
-  vertical-align: middle;
-  margin-top: -7px;
-  margin-bottom: -5px;
-}
-.k-toolbar .k-input {
-  line-height: inherit;
-  height: inherit;
-  padding-top: 2px;
-  padding-bottom: 2px;
-}
-.k-toolbar .k-input:before {
-  content: "\a0";
-  display: inline-block;
-  width: 0;
-}
-.k-ie .k-toolbar .k-input {
-  height: 1.65em;
-}
-.k-toolbar .k-combobox .k-dropdown-wrap:before,
-.k-toolbar .k-picker-wrap:before,
-.k-toolbar .k-numeric-wrap:before {
-  display: none;
-}
-.k-overflow-container .k-sprite {
-  margin-left: -4px;
-}
-.k-toolbar-resizable {
-  overflow: hidden;
-  white-space: nowrap;
-}
-.k-toolbar > .k-align-left {
-  float: none;
-}
-.k-toolbar > .k-align-right {
-  float: right;
-}
-.k-toolbar > *,
-.k-toolbar .k-button {
-  display: inline-block;
-  vertical-align: middle;
-  line-height: 1.72em;
-}
-.k-toolbar .k-separator {
-  border-width: 0 0 0 1px;
-  border-style: solid;
-  width: 1px;
-  line-height: inherit;
-}
-.k-toolbar .k-button-group {
-  list-style-type: none;
-}
-.k-toolbar .k-button-group > li {
-  display: inline-block;
-}
-.k-toolbar .k-button-group .k-button {
-  margin: 0 0 0 -1px;
-  border-radius: 0;
-}
-.k-toolbar .k-button,
-.k-toolbar .k-split-button,
-.k-toolbar .k-button-group,
-.k-toolbar .k-widget,
-.k-toolbar .k-textbox,
-.k-toolbar label,
-.k-toolbar .k-separator {
-  margin: 0 .2em;
-  line-height: 1.72em;
-  vertical-align: middle;
-}
-.k-toolbar .k-split-button {
-  padding-left: 0;
-}
-.k-toolbar .k-split-button .k-button,
-.k-toolbar .k-button-group .k-group-start {
-  margin: 0;
-}
-.k-toolbar .k-split-button .k-split-button-arrow {
-  margin: 0 0 0 -1px;
-}
-.k-toolbar .k-overflow-anchor {
-  border-width: 0 0 0 1px;
-  border-style: solid;
-  height: 3em;
-  width: 3em;
-  line-height: inherit;
-  padding: 0 .5em;
-  margin: 0;
-  position: relative;
-  float: right;
-  border-radius: 0;
-}
-.k-overflow-container .k-item {
-  float: none;
-  border: 0;
-}
-.k-overflow-container .k-separator {
-  border-width: 0 0 1px;
-  border-style: solid;
-  height: 1px;
-  line-height: 0;
-  font-size: 0;
-  padding: 0;
-}
-.k-overflow-container .k-overflow-button,
-.k-split-container .k-button {
-  text-align: left;
-  display: block;
-  background: none;
-  border-color: transparent;
-  white-space: nowrap;
-}
-.k-split-container {
-  margin-top: -1px;
-}
-.k-overflow-container .k-button-group {
-  padding: 0;
-}
-.k-overflow-container .k-button-group > li {
-  display: block;
-}
-.k-overflow-container .k-overflow-group {
-  border-width: 1px 0;
-  border-style: solid;
-  border-radius: 0;
-  padding: 2px 0;
-  margin: 1px 0;
-}
-.k-overflow-container .k-overflow-hidden {
-  display: none;
-}
-.k-overflow-container .k-toolbar-first-visible,
-.k-overflow-container .k-overflow-group + .k-overflow-group,
-.k-overflow-container .k-separator + .k-overflow-group {
-  border-top: 0;
-  margin-top: 0;
-  padding-top: 1px;
-}
-.k-overflow-container .k-overflow-group + .k-separator {
-  display: none;
-}
-.k-overflow-container .k-toolbar-last-visible {
-  border-bottom: 0;
-  margin-bottom: 0;
-  padding-bottom: 1px;
-}
-/* Splitter */
-.k-splitter {
-  position: relative;
-  height: 300px;
-}
-.k-pane > .k-splitter {
-  border-width: 0;
-  overflow: hidden;
-}
-.k-splitter .k-pane {
-  overflow: hidden;
-}
-.k-splitter .k-scrollable {
-  overflow: auto;
-}
-.k-splitter .k-pane-loading {
-  position: absolute;
-  top: 50%;
-  left: 50%;
-  margin: -8px 0 0 -8px;
-}
-.k-ghost-splitbar,
-.k-splitbar {
-  position: absolute;
-  border-style: solid;
-  font-size: 0;
-  outline: 0;
-  user-select: none;
-}
-.k-splitter .k-ghost-splitbar-horizontal,
-.k-splitter .k-splitbar-horizontal {
-  top: 0;
-  width: 5px;
-  border-width: 0 1px;
-  background-repeat: repeat-y;
-}
-.k-ghost-splitbar-vertical,
-.k-splitbar-vertical {
-  left: 0;
-  height: 5px;
-  border-width: 1px 0;
-  background-repeat: repeat-x;
-}
-.k-splitbar-draggable-horizontal {
-  cursor: w-resize;
-}
-.k-splitbar-draggable-vertical {
-  cursor: n-resize;
-}
-.k-splitbar .k-resize-handle {
-  display: none;
-}
-.k-restricted-size-horizontal,
-.k-restricted-size-vertical {
-  background-color: #f00;
-}
-.k-splitbar-horizontal .k-icon {
-  position: absolute;
-  top: 50%;
-  margin-top: -10px;
-}
-.k-splitbar-horizontal .k-i-arrow-60-right {
-  margin-left: -2px;
-}
-.k-splitbar-horizontal.k-splitbar-draggable-horizontal .k-i-arrow-60-right {
-  margin-top: 13px;
-}
-.k-splitbar-horizontal .k-i-arrow-60-left {
-  margin-left: -3px;
-}
-.k-splitbar-horizontal.k-splitbar-draggable-horizontal .k-i-arrow-60-left {
-  margin-top: -28px;
-}
-.k-splitbar-vertical .k-i-arrow-60-up {
-  margin-top: -2px;
-}
-.k-splitbar-vertical .k-i-arrow-60-down {
-  margin-top: -2px;
-}
-.k-splitbar-vertical.k-splitbar-draggable-vertical .k-i-arrow-60-up {
-  margin-left: -17px;
-}
-.k-splitbar-vertical.k-splitbar-draggable-vertical .k-i-arrow-60-down {
-  margin-left: 23px;
-}
-.k-i-arrow-60-up,
-.k-i-arrow-60-right,
-.k-i-arrow-60-down,
-.k-i-arrow-60-left {
-  cursor: pointer;
-}
-.k-splitbar-horizontal .k-icon {
-  position: absolute;
-  top: 50%;
-  width: 7px;
-  height: 20px;
-  margin-top: -10px;
-}
-.k-splitbar-static-horizontal {
-  width: 1px;
-}
-.k-splitbar-static-vertical {
-  height: 1px;
-}
-.k-splitbar-vertical .k-icon {
-  position: absolute;
-  left: 50%;
-}
-.k-splitbar-draggable-vertical .k-resize-handle,
-.k-splitbar-draggable-horizontal .k-resize-handle {
-  display: inline-block;
-  border-radius: 1px;
-}
-.k-splitbar-draggable-horizontal .k-resize-handle {
-  width: 3px;
-  height: 16px;
-  margin-left: 1px;
-}
-.k-splitbar-draggable-vertical .k-resize-handle {
-  width: 16px;
-  height: 3px;
-  margin-top: 1px;
-}
-.k-splitbar .k-i-arrow-60-up,
-.k-splitbar .k-i-arrow-60-right,
-.k-splitbar .k-i-arrow-60-down,
-.k-splitbar .k-i-arrow-60-left {
-  font-size: 10px;
-}
-.k-splitter-resizing {
-  overflow: hidden;
-}
-.k-rtl .k-splitbar-horizontal .k-resize-handle {
-  margin-right: 1px;
-}
-.k-rtl .k-splitbar-horizontal .k-i-arrow-60-right {
-  margin-top: 13px;
-  margin-right: -3px;
-}
-.k-rtl .k-splitbar-horizontal .k-i-arrow-60-left {
-  margin-top: -28px;
-  margin-right: -2px;
-}
-.k-rtl .k-splitbar-vertical .k-i-arrow-60-up {
-  margin-top: -2px;
-  margin-left: -17px;
-}
-.k-rtl .k-splitbar-vertical .k-i-arrow-60-down {
-  margin-top: -2px;
-  margin-left: 23px;
-}
-/* Virtual List */
-.k-virtual-wrap {
-  position: relative;
-}
-.k-virtual-wrap .k-list.k-virtual-list {
-  height: auto;
-}
-.k-virtual-content {
-  overflow-y: scroll;
-  /* has to be scroll, not auto */
-  -webkit-overflow-scrolling: touch;
-  position: relative;
-}
-.k-virtual-list > .k-virtual-content {
-  position: absolute;
-  top: 0;
-  width: 100%;
-  margin: 0;
-  padding: 0;
-  list-style-type: none;
-}
-.k-virtual-option-label {
-  width: 100%;
-  margin: 0;
-  padding: 0;
-  list-style-type: none;
-}
-.k-virtual-wrap > .k-virtual-header {
-  text-align: right;
-}
-.k-popup .k-item.k-first {
-  position: relative;
-}
-.k-virtual-content > .k-virtual-list > .k-virtual-item {
-  position: absolute;
-  width: 100%;
-  box-sizing: border-box;
-  overflow: hidden;
-  white-space: nowrap;
-}
-.k-popup .k-list .k-item > .k-group,
-.k-popup > .k-group-header,
-.k-popup > .k-virtual-wrap > .k-group-header {
-  text-transform: uppercase;
-  font-size: .857em;
-}
-.k-popup .k-list .k-item > .k-group {
-  position: absolute;
-  top: 0;
-  right: 0;
-  padding: 0 .5em;
-  line-height: 1.8;
-}
-.k-popup .k-state-hover > .k-group {
-  right: -1px;
-}
-.k-virtual-item.k-first,
-.k-group-header + .k-list > .k-item.k-first,
-.k-static-header + .k-list > .k-item.k-first {
-  border-top-style: solid;
-  border-top-width: 1px;
-  padding-top: 0;
-}
-.k-popup > .k-group-header,
-.k-popup > .k-virtual-wrap > .k-group-header {
-  text-align: right;
-}
-/* Dialog */
-.k-dialog {
-  min-width: 90px;
-  min-height: 3em;
-  max-width: 100%;
-  max-height: 100%;
-}
-.k-window.k-dialog {
-  position: fixed;
-  padding-top: 0;
-}
-.k-dialog .k-dialog-titlebar {
-  position: static;
-  margin: 0;
-  padding: 0.6em 0.8em 1em 0.8em;
-  width: auto;
-}
-.k-dialog .k-dialog-titlebar .k-dialog-title {
-  margin: 0;
-  padding: 0;
-  width: auto;
-  max-width: 98%;
-  display: inline-block;
-  white-space: nowrap;
-  overflow: hidden;
-  text-overflow: ellipsis;
-  font-size: 1.2em;
-  line-height: 1.2em;
-}
-.k-dialog .k-content {
-  margin: 0;
-  padding: 1.8em 1em 1.8em 1em;
-}
-.k-dialog.k-dialog-titleless .k-content {
-  padding: 2.4em;
-}
-.k-dialog .k-dialog-buttongroup {
-  margin: 0;
-  padding: 0;
-}
-.k-dialog a.k-dialog-action.k-dialog-close {
-  position: absolute;
-  top: .35em;
-  right: 0;
-  cursor: pointer;
-  z-index: 10000;
-}
-.k-dialog.k-dialog-titleless a.k-dialog-action.k-dialog-close {
-  right: .5em;
-  top: 1em;
-}
-.k-dialog.k-alert .k-dialog-titlebar,
-.k-dialog.k-confirm .k-dialog-titlebar,
-.k-dialog.k-prompt .k-dialog-titlebar {
-  background: none;
-  border-bottom: none;
-}
-.k-dialog.k-alert .k-content,
-.k-dialog.k-confirm .k-content {
-  padding: 2.4em;
-}
-.k-dialog.k-prompt .k-content {
-  padding: 1.2em 1.2em 0.6em 1.2em;
-}
-.k-dialog .k-prompt-container {
-  width: auto;
-  padding: 0.6em 1.2em 1.8em 1.2em;
-}
-.k-dialog .k-prompt-container .k-textbox {
-  width: 100%;
-}
-.k-dialog .k-button {
-  box-sizing: border-box;
-}
-@font-face {
-  font-family: 'WebComponentsIcons';
-  src: url('../fonts/glyphs/WebComponentsIcons.eot?gedxeo');
-  src: url('../fonts/glyphs/WebComponentsIcons.eot?gedxeo#iefix') format('embedded-opentype'), url('../fonts/glyphs/WebComponentsIcons.ttf?gedxeo') format('truetype'), url('../fonts/glyphs/WebComponentsIcons.woff?gedxeo') format('woff'), url('../fonts/glyphs/WebComponentsIcons.svg?gedxeo#WebComponentsIcons') format('svg');
-  font-weight: normal;
-  font-style: normal;
-}
-.k-i-arrow-45-up-right:before {
-  content: "\e000";
-}
-.k-i-collapse-ne:before {
-  content: "\e000";
-}
-.k-i-resize-ne:before {
-  content: "\e000";
-}
-.k-i-arrow-45-down-right:before {
-  content: "\e001";
-}
-.k-i-collapse-se:before {
-  content: "\e001";
-}
-.k-i-collapse:before {
-  content: "\e001";
-}
-.k-i-resize-se:before {
-  content: "\e001";
-}
-.k-i-arrow-45-down-left:before {
-  content: "\e002";
-}
-.k-i-collapse-sw:before {
-  content: "\e002";
-}
-.k-i-resize-sw:before {
-  content: "\e002";
-}
-.k-i-arrow-45-up-left:before {
-  content: "\e003";
-}
-.k-i-collapse-nw:before {
-  content: "\e003";
-}
-.k-i-resize-new:before {
-  content: "\e003";
-}
-.k-i-arrow-60-up:before {
-  content: "\e004";
-}
-.k-i-arrow-n:before {
-  content: "\e004";
-}
-.k-i-arrow-60-right:before {
-  content: "\e005";
-}
-.k-i-arrow-e:before {
-  content: "\e005";
-}
-.k-i-expand:before {
-  content: "\e005";
-}
-.k-i-arrow-60-down:before {
-  content: "\e006";
-}
-.k-i-arrow-s:before {
-  content: "\e006";
-}
-.k-i-arrow-60-left:before {
-  content: "\e007";
-}
-.k-i-arrow-w:before {
-  content: "\e007";
-}
-.k-i-arrow-end-up:before {
-  content: "\e008";
-}
-.k-i-seek-n:before {
-  content: "\e008";
-}
-.k-i-arrow-end-right:before {
-  content: "\e009";
-}
-.k-i-seek-e:before {
-  content: "\e009";
-}
-.k-i-arrow-end-down:before {
-  content: "\e00a";
-}
-.k-i-seek-s:before {
-  content: "\e00a";
-}
-.k-i-arrow-end-left:before {
-  content: "\e00b";
-}
-.k-i-seek-w:before {
-  content: "\e00b";
-}
-.k-i-arrow-double-60-up:before {
-  content: "\e00c";
-}
-.k-i-arrow-seek-up:before {
-  content: "\e00c";
-}
-.k-i-arrow-double-60-right:before {
-  content: "\e00d";
-}
-.k-i-arrow-seek-right:before {
-  content: "\e00d";
-}
-.k-i-arrow-double-60-down:before {
-  content: "\e00e";
-}
-.k-i-arrow-seek-down:before {
-  content: "\e00e";
-}
-.k-i-arrow-double-60-left:before {
-  content: "\e00f";
-}
-.k-i-arrow-seek-left:before {
-  content: "\e00f";
-}
-.k-i-arrows-kpi:before {
-  content: "\e010";
-}
-.k-i-kpi:before {
-  content: "\e010";
-}
-.k-i-arrows-no-change:before {
-  content: "\e011";
-}
-.k-i-arrow-overflow-down:before {
-  content: "\e012";
-}
-.k-i-arrow-chevron-up:before {
-  content: "\e013";
-}
-.k-i-arrow-chevron-right:before {
-  content: "\e014";
-}
-.k-i-arrow-chevron-down:before {
-  content: "\e015";
-}
-.k-i-arrow-chevron-left:before {
-  content: "\e016";
-}
-.k-i-arrow-up:before {
-  content: "\e017";
-}
-.k-i-arrow-right:before {
-  content: "\e018";
-}
-.k-i-arrow-down:before {
-  content: "\e019";
-}
-.k-i-arrow-left:before {
-  content: "\e01a";
-}
-.k-i-arrow-drill:before {
-  content: "\e01b";
-}
-.k-i-arrow-parent:before {
-  content: "\e01c";
-}
-.k-i-arrow-root:before {
-  content: "\e01d";
-}
-.k-i-arrows-resizing:before {
-  content: "\e01e";
-}
-.k-i-arrows-dimensions:before {
-  content: "\e01f";
-}
-.k-i-arrows-swap:before {
-  content: "\e020";
-}
-.k-i-drag-and-drop:before {
-  content: "\e021";
-}
-.k-i-categorize:before {
-  content: "\e022";
-}
-.k-i-grid:before {
-  content: "\e023";
-}
-.k-i-grid-layout:before {
-  content: "\e024";
-}
-.k-i-group:before {
-  content: "\e025";
-}
-.k-i-ungroup:before {
-  content: "\e026";
-}
-.k-i-handler-drag:before {
-  content: "\e027";
-}
-.k-i-layout:before {
-  content: "\e028";
-}
-.k-i-layout-1-by-4:before {
-  content: "\e029";
-}
-.k-i-layout-2-by-2:before {
-  content: "\e02a";
-}
-.k-i-layout-side-by-side:before {
-  content: "\e02b";
-}
-.k-i-layout-stacked:before {
-  content: "\e02c";
-}
-.k-i-columns:before {
-  content: "\e02d";
-}
-.k-i-rows:before {
-  content: "\e02e";
-}
-.k-i-reorder:before {
-  content: "\e02f";
-}
-.k-i-menu:before {
-  content: "\e030";
-}
-.k-i-more-vertical:before {
-  content: "\e031";
-}
-.k-i-more-horizontal:before {
-  content: "\e032";
-}
-.k-i-undo:before {
-  content: "\e100";
-}
-.k-i-redo:before {
-  content: "\e101";
-}
-.k-i-reset:before {
-  content: "\e102";
-}
-.k-i-reload:before {
-  content: "\e103";
-}
-.k-i-refresh:before {
-  content: "\e103";
-}
-.k-i-non-recurrence:before {
-  content: "\e104";
-}
-.k-i-reset-sm:before {
-  content: "\e105";
-}
-.k-i-reload-sm:before {
-  content: "\e106";
-}
-.k-i-refresh-sm:before {
-  content: "\e106";
-}
-.k-i-clock:before {
-  content: "\e107";
-}
-.k-i-calendar:before {
-  content: "\e108";
-}
-.k-i-save:before {
-  content: "\e109";
-}
-.k-i-floppy:before {
-  content: "\e109";
-}
-.k-i-print:before {
-  content: "\e10a";
-}
-.k-i-printer:before {
-  content: "\e10a";
-}
-.k-i-edit:before {
-  content: "\e10b";
-}
-.k-i-pencil:before {
-  content: "\e10b";
-}
-.k-i-delete:before {
-  content: "\e10c";
-}
-.k-i-trash:before {
-  content: "\e10c";
-}
-.k-i-attachment:before {
-  content: "\e10d";
-}
-.k-i-clip:before {
-  content: "\e10d";
-}
-.k-i-attachment-45:before {
-  content: "\e10e";
-}
-.k-i-clip-45:before {
-  content: "\e10e";
-}
-.k-i-link-horizontal:before {
-  content: "\e10f";
-}
-.k-i-hyperlink:before {
-  content: "\e10f";
-}
-.k-i-unlink-horizontal:before {
-  content: "\e110";
-}
-.k-i-hyperlink-remove:before {
-  content: "\e110";
-}
-.k-i-link-vertical:before {
-  content: "\e111";
-}
-.k-i-unlink-vertical:before {
-  content: "\e112";
-}
-.k-i-lock:before {
-  content: "\e113";
-}
-.k-i-unlock:before {
-  content: "\e114";
-}
-.k-i-cancel:before {
-  content: "\e115";
-}
-.k-i-cancel-outline:before {
-  content: "\e116";
-}
-.k-i-cancel-circle:before {
-  content: "\e117";
-}
-.k-i-check:before {
-  content: "\e118";
-}
-.k-i-checkmark:before {
-  content: "\e118";
-}
-.k-i-success:before {
-  content: "\e118";
-}
-.k-i-check-outline:before {
-  content: "\e119";
-}
-.k-i-checkmark-outline:before {
-  content: "\e119";
-}
-.k-i-check-circle:before {
-  content: "\e11a";
-}
-.k-i-checkmark-circle:before {
-  content: "\e11a";
-}
-.k-i-close:before {
-  content: "\e11b";
-}
-.k-i-x:before {
-  content: "\e11b";
-}
-.k-i-close-outline:before {
-  content: "\e11c";
-}
-.k-i-x-outline:before {
-  content: "\e11c";
-}
-.k-i-close-circle:before {
-  content: "\e11d";
-}
-.k-i-x-circle:before {
-  content: "\e11d";
-}
-.k-i-plus:before {
-  content: "\e11e";
-}
-.k-i-add:before {
-  content: "\e11e";
-}
-.k-i-plus-outline:before {
-  content: "\e11f";
-}
-.k-i-plus-circle:before {
-  content: "\e120";
-}
-.k-i-minus:before {
-  content: "\e121";
-}
-.k-i-minus-outline:before {
-  content: "\e122";
-}
-.k-i-minus-circle:before {
-  content: "\e123";
-}
-.k-i-sort-asc:before {
-  content: "\e124";
-}
-.k-i-sort-desc:before {
-  content: "\e125";
-}
-.k-i-unsort:before {
-  content: "\e126";
-}
-.k-i-sort-clear:before {
-  content: "\e126";
-}
-.k-i-sort-asc-sm:before {
-  content: "\e127";
-}
-.k-i-sort-desc-sm:before {
-  content: "\e128";
-}
-.k-i-filter:before {
-  content: "\e129";
-}
-.k-i-filter-clear:before {
-  content: "\e12a";
-}
-.k-i-filter-sm:before {
-  content: "\e12b";
-}
-.k-i-filter-sort-asc-sm:before {
-  content: "\e12c";
-}
-.k-i-filter-sort-desc-sm:before {
-  content: "\e12d";
-}
-.k-i-filter-add-expression:before {
-  content: "\e12e";
-}
-.k-i-filter-add-group:before {
-  content: "\e12f";
-}
-.k-i-login:before {
-  content: "\e130";
-}
-.k-i-logout:before {
-  content: "\e131";
-}
-.k-i-download:before {
-  content: "\e132";
-}
-.k-i-upload:before {
-  content: "\e133";
-}
-.k-i-hyperlink-open:before {
-  content: "\e134";
-}
-.k-i-hyperlink-open-sm:before {
-  content: "\e135";
-}
-.k-i-launch:before {
-  content: "\e136";
-}
-.k-i-window:before {
-  content: "\e137";
-}
-.k-i-window-maximize:before {
-  content: "\e137";
-}
-.k-i-windows:before {
-  content: "\e138";
-}
-.k-i-window-restore:before {
-  content: "\e138";
-}
-.k-i-tiles:before {
-  content: "\e138";
-}
-.k-i-window-minimize:before {
-  content: "\e139";
-}
-.k-i-gear:before {
-  content: "\e13a";
-}
-.k-i-cog:before {
-  content: "\e13a";
-}
-.k-i-custom:before {
-  content: "\e13a";
-}
-.k-i-gears:before {
-  content: "\e13b";
-}
-.k-i-cogs:before {
-  content: "\e13b";
-}
-.k-i-wrench:before {
-  content: "\e13c";
-}
-.k-i-settings:before {
-  content: "\e13c";
-}
-.k-i-preview:before {
-  content: "\e13d";
-}
-.k-i-eye:before {
-  content: "\e13d";
-}
-.k-i-zoom:before {
-  content: "\e13e";
-}
-.k-i-search:before {
-  content: "\e13e";
-}
-.k-i-zoom-in:before {
-  content: "\e13f";
-}
-.k-i-zoom-out:before {
-  content: "\e140";
-}
-.k-i-pan:before {
-  content: "\e141";
-}
-.k-i-move:before {
-  content: "\e141";
-}
-.k-i-calculator:before {
-  content: "\e142";
-}
-.k-i-cart:before {
-  content: "\e143";
-}
-.k-i-shopping-cart:before {
-  content: "\e143";
-}
-.k-i-connector:before {
-  content: "\e144";
-}
-.k-i-plus-sm:before {
-  content: "\e145";
-}
-.k-i-minus-sm:before {
-  content: "\e146";
-}
-.k-i-play:before {
-  content: "\e200";
-}
-.k-i-pause:before {
-  content: "\e201";
-}
-.k-i-stop:before {
-  content: "\e202";
-}
-.k-i-rewind:before {
-  content: "\e203";
-}
-.k-i-forward:before {
-  content: "\e204";
-}
-.k-i-volume-down:before {
-  content: "\e205";
-}
-.k-i-volume-up:before {
-  content: "\e206";
-}
-.k-i-volume-off:before {
-  content: "\e207";
-}
-.k-i-hd:before {
-  content: "\e208";
-}
-.k-i-subtitles:before {
-  content: "\e209";
-}
-.k-i-playlist:before {
-  content: "\e20a";
-}
-.k-i-play-sm:before {
-  content: "\e20c";
-}
-.k-i-pause-sm:before {
-  content: "\e20d";
-}
-.k-i-stop-sm:before {
-  content: "\e20e";
-}
-.k-i-audio:before {
-  content: "\e20b";
-}
-.k-i-heart-outline:before {
-  content: "\e300";
-}
-.k-i-fav-outline:before {
-  content: "\e300";
-}
-.k-i-favorite-outline:before {
-  content: "\e300";
-}
-.k-i-heart:before {
-  content: "\e301";
-}
-.k-i-fav:before {
-  content: "\e301";
-}
-.k-i-favorite:before {
-  content: "\e301";
-}
-.k-i-star-outline:before {
-  content: "\e302";
-}
-.k-i-bookmark-outline:before {
-  content: "\e302";
-}
-.k-i-star:before {
-  content: "\e303";
-}
-.k-i-bookmark:before {
-  content: "\e303";
-}
-.k-i-checkbox:before {
-  content: "\e304";
-}
-.k-i-shape-rect:before {
-  content: "\e304";
-}
-.k-i-checkbox-checked:before {
-  content: "\e305";
-}
-.k-i-tri-state-indeterminate:before {
-  content: "\e306";
-}
-.k-i-tri-state-null:before {
-  content: "\e307";
-}
-.k-i-circle:before {
-  content: "\e308";
-}
-.k-i-radiobutton:before {
-  content: "\e309";
-}
-.k-i-shape-circle:before {
-  content: "\e309";
-}
-.k-i-radiobutton-checked:before {
-  content: "\e30a";
-}
-.k-i-notification:before {
-  content: "\e400";
-}
-.k-i-bell:before {
-  content: "\e400";
-}
-.k-i-information:before {
-  content: "\e401";
-}
-.k-i-info:before {
-  content: "\e401";
-}
-.k-i-question:before {
-  content: "\e402";
-}
-.k-i-help:before {
-  content: "\e402";
-}
-.k-i-warning:before {
-  content: "\e403";
-}
-.k-i-exception:before {
-  content: "\e403";
-}
-.k-i-error:before {
-  content: "\e403";
-}
-.k-i-photo-camera:before {
-  content: "\e500";
-}
-.k-i-image:before {
-  content: "\e501";
-}
-.k-i-photo:before {
-  content: "\e501";
-}
-.k-i-image-export:before {
-  content: "\e502";
-}
-.k-i-photo-export:before {
-  content: "\e502";
-}
-.k-i-zoom-actual-size:before {
-  content: "\e503";
-}
-.k-i-zoom-best-fit:before {
-  content: "\e504";
-}
-.k-i-image-resize:before {
-  content: "\e505";
-}
-.k-i-crop:before {
-  content: "\e506";
-}
-.k-i-mirror:before {
-  content: "\e507";
-}
-.k-i-flip-horizontal:before {
-  content: "\e508";
-}
-.k-i-flip-vertical:before {
-  content: "\e509";
-}
-.k-i-rotate:before {
-  content: "\e50a";
-}
-.k-i-rotate-right:before {
-  content: "\e50b";
-}
-.k-i-rotate-left:before {
-  content: "\e50c";
-}
-.k-i-brush:before {
-  content: "\e50d";
-}
-.k-i-palette:before {
-  content: "\e50e";
-}
-.k-i-paint:before {
-  content: "\e50f";
-}
-.k-i-droplet:before {
-  content: "\e50f";
-}
-.k-i-background:before {
-  content: "\e50f";
-}
-.k-i-line:before {
-  content: "\e510";
-}
-.k-i-shape-line:before {
-  content: "\e510";
-}
-.k-i-brightness-contrast:before {
-  content: "\e511";
-}
-.k-i-saturation:before {
-  content: "\e512";
-}
-.k-i-invert-colors:before {
-  content: "\e513";
-}
-.k-i-transperancy:before {
-  content: "\e514";
-}
-.k-i-opacity:before {
-  content: "\e514";
-}
-.k-i-greyscale:before {
-  content: "\e515";
-}
-.k-i-blur:before {
-  content: "\e516";
-}
-.k-i-sharpen:before {
-  content: "\e517";
-}
-.k-i-shape:before {
-  content: "\e518";
-}
-.k-i-round-corners:before {
-  content: "\e519";
-}
-.k-i-front-element:before {
-  content: "\e51a";
-}
-.k-i-back-element:before {
-  content: "\e51b";
-}
-.k-i-forward-element:before {
-  content: "\e51c";
-}
-.k-i-backward-element:before {
-  content: "\e51d";
-}
-.k-i-align-left-element:before {
-  content: "\e51e";
-}
-.k-i-align-center-element:before {
-  content: "\e51f";
-}
-.k-i-align-right-element:before {
-  content: "\e520";
-}
-.k-i-align-top-element:before {
-  content: "\e521";
-}
-.k-i-align-middle-element:before {
-  content: "\e522";
-}
-.k-i-align-bottom-element:before {
-  content: "\e523";
-}
-.k-i-thumbnails-up:before {
-  content: "\e524";
-}
-.k-i-thumbnails-right:before {
-  content: "\e525";
-}
-.k-i-thumbnails-down:before {
-  content: "\e526";
-}
-.k-i-thumbnails-left:before {
-  content: "\e527";
-}
-.k-i-full-screen:before {
-  content: "\e528";
-}
-.k-i-fullscreen:before {
-  content: "\e528";
-}
-.k-i-full-screen-exit:before {
-  content: "\e529";
-}
-.k-i-fullscreen-exit:before {
-  content: "\e529";
-}
-.k-i-reset-color:before {
-  content: "\e52a";
-}
-.k-i-paint-remove:before {
-  content: "\e52a";
-}
-.k-i-background-remove:before {
-  content: "\e52a";
-}
-.k-i-page-properties:before {
-  content: "\e600";
-}
-.k-i-bold:before {
-  content: "\e601";
-}
-.k-i-italic:before {
-  content: "\e602";
-}
-.k-i-underline:before {
-  content: "\e603";
-}
-.k-i-font-family:before {
-  content: "\e604";
-}
-.k-i-foreground-color:before {
-  content: "\e605";
-}
-.k-i-convert-lowercase:before {
-  content: "\e606";
-}
-.k-i-convert-uppercase:before {
-  content: "\e607";
-}
-.k-i-strikethrough:before {
-  content: "\e608";
-}
-.k-i-sub-script:before {
-  content: "\e609";
-}
-.k-i-sup-script:before {
-  content: "\e60a";
-}
-.k-i-div:before {
-  content: "\e60b";
-}
-.k-i-all:before {
-  content: "\e60c";
-}
-.k-i-h1:before {
-  content: "\e60d";
-}
-.k-i-h2:before {
-  content: "\e60e";
-}
-.k-i-h3:before {
-  content: "\e60f";
-}
-.k-i-h4:before {
-  content: "\e610";
-}
-.k-i-h5:before {
-  content: "\e611";
-}
-.k-i-h6:before {
-  content: "\e612";
-}
-.k-i-list-ordered:before {
-  content: "\e613";
-}
-.k-i-list-numbered:before {
-  content: "\e613";
-}
-.k-i-list-unordered:before {
-  content: "\e614";
-}
-.k-i-list-bulleted:before {
-  content: "\e614";
-}
-.k-i-indent-increase:before {
-  content: "\e615";
-}
-.k-i-indent:before {
-  content: "\e615";
-}
-.k-i-indent-decrease:before {
-  content: "\e616";
-}
-.k-i-outdent:before {
-  content: "\e616";
-}
-.k-i-insert-up:before {
-  content: "\e617";
-}
-.k-i-insert-top:before {
-  content: "\e617";
-}
-.k-i-insert-middle:before {
-  content: "\e618";
-}
-.k-i-insert-down:before {
-  content: "\e619";
-}
-.k-i-insert-bottom:before {
-  content: "\e619";
-}
-.k-i-align-top:before {
-  content: "\e61a";
-}
-.k-i-align-middle:before {
-  content: "\e61b";
-}
-.k-i-align-bottom:before {
-  content: "\e61c";
-}
-.k-i-align-left:before {
-  content: "\e61d";
-}
-.k-i-align-center:before {
-  content: "\e61e";
-}
-.k-i-align-right:before {
-  content: "\e61f";
-}
-.k-i-align-justify:before {
-  content: "\e620";
-}
-.k-i-align-remove:before {
-  content: "\e621";
-}
-.k-i-text-wrap:before {
-  content: "\e622";
-}
-.k-i-rule-horizontal:before {
-  content: "\e623";
-}
-.k-i-table-align-top-left:before {
-  content: "\e624";
-}
-.k-i-table-align-top-center:before {
-  content: "\e625";
-}
-.k-i-table-align-top-right:before {
-  content: "\e626";
-}
-.k-i-table-align-middle-left:before {
-  content: "\e627";
-}
-.k-i-table-align-middle-center:before {
-  content: "\e628";
-}
-.k-i-table-align-middle-right:before {
-  content: "\e629";
-}
-.k-i-table-align-bottom-left:before {
-  content: "\e62a";
-}
-.k-i-table-align-bottom-center:before {
-  content: "\e62b";
-}
-.k-i-table-align-bottom-right:before {
-  content: "\e62c";
-}
-.k-i-table-align-remove:before {
-  content: "\e62d";
-}
-.k-i-borders-all:before {
-  content: "\e62e";
-}
-.k-i-all-borders:before {
-  content: "\e62e";
-}
-.k-i-borders-outside:before {
-  content: "\e62f";
-}
-.k-i-outside-borders:before {
-  content: "\e62f";
-}
-.k-i-borders-inside:before {
-  content: "\e630";
-}
-.k-i-inside-borders:before {
-  content: "\e630";
-}
-.k-i-borders-inside-horizontal:before {
-  content: "\e631";
-}
-.k-i-inside-horizontal-borders:before {
-  content: "\e631";
-}
-.k-i-borders-inside-vertical:before {
-  content: "\e632";
-}
-.k-i-inside-vertical-borders:before {
-  content: "\e632";
-}
-.k-i-border-top:before {
-  content: "\e633";
-}
-.k-i-top-border:before {
-  content: "\e633";
-}
-.k-i-border-bottom:before {
-  content: "\e634";
-}
-.k-i-bottom-border:before {
-  content: "\e634";
-}
-.k-i-border-left:before {
-  content: "\e635";
-}
-.k-i-left-border:before {
-  content: "\e635";
-}
-.k-i-border-right:before {
-  content: "\e636";
-}
-.k-i-right-border:before {
-  content: "\e636";
-}
-.k-i-border-no:before {
-  content: "\e637";
-}
-.k-i-no-border:before {
-  content: "\e637";
-}
-.k-i-borders-show-hide:before {
-  content: "\e638";
-}
-.k-i-form:before {
-  content: "\e639";
-}
-.k-i-border:before {
-  content: "\e639";
-}
-.k-i-form-element:before {
-  content: "\e63a";
-}
-.k-i-code-snippet:before {
-  content: "\e63b";
-}
-.k-i-select-all:before {
-  content: "\e63c";
-}
-.k-i-button:before {
-  content: "\e63d";
-}
-.k-i-select-box:before {
-  content: "\e63e";
-}
-.k-i-calendar-date:before {
-  content: "\e63f";
-}
-.k-i-group-box:before {
-  content: "\e640";
-}
-.k-i-textarea:before {
-  content: "\e641";
-}
-.k-i-textbox:before {
-  content: "\e642";
-}
-.k-i-textbox-hidden:before {
-  content: "\e643";
-}
-.k-i-password:before {
-  content: "\e644";
-}
-.k-i-paragraph-add:before {
-  content: "\e645";
-}
-.k-i-edit-tools:before {
-  content: "\e646";
-}
-.k-i-template-manager:before {
-  content: "\e647";
-}
-.k-i-change-manually:before {
-  content: "\e648";
-}
-.k-i-track-changes:before {
-  content: "\e649";
-}
-.k-i-track-changes-enable:before {
-  content: "\e64a";
-}
-.k-i-track-changes-accept:before {
-  content: "\e64b";
-}
-.k-i-track-changes-accept-all:before {
-  content: "\e64c";
-}
-.k-i-track-changes-reject:before {
-  content: "\e64d";
-}
-.k-i-track-changes-reject-all:before {
-  content: "\e64e";
-}
-.k-i-document-manager:before {
-  content: "\e64f";
-}
-.k-i-custom-icon:before {
-  content: "\e650";
-}
-.k-i-dictionary-add:before {
-  content: "\e651";
-}
-.k-i-image-light-dialog:before {
-  content: "\e652";
-}
-.k-i-image-insert:before {
-  content: "\e652";
-}
-.k-i-image-edit:before {
-  content: "\e653";
-}
-.k-i-image-map-editor:before {
-  content: "\e654";
-}
-.k-i-comment:before {
-  content: "\e655";
-}
-.k-i-comment-remove:before {
-  content: "\e656";
-}
-.k-i-comments-remove-all:before {
-  content: "\e657";
-}
-.k-i-silverlight:before {
-  content: "\e658";
-}
-.k-i-media-manager:before {
-  content: "\e659";
-}
-.k-i-video-external:before {
-  content: "\e65a";
-}
-.k-i-flash-manager:before {
-  content: "\e65b";
-}
-.k-i-find-and-replace:before {
-  content: "\e65c";
-}
-.k-i-find:before {
-  content: "\e65c";
-}
-.k-i-copy:before {
-  content: "\e65d";
-}
-.k-i-files:before {
-  content: "\e65d";
-}
-.k-i-cut:before {
-  content: "\e65e";
-}
-.k-i-paste:before {
-  content: "\e65f";
-}
-.k-i-paste-as-html:before {
-  content: "\e660";
-}
-.k-i-paste-from-word:before {
-  content: "\e661";
-}
-.k-i-paste-from-word-strip-file:before {
-  content: "\e662";
-}
-.k-i-paste-html:before {
-  content: "\e663";
-}
-.k-i-paste-markdown:before {
-  content: "\e664";
-}
-.k-i-paste-plain-text:before {
-  content: "\e665";
-}
-.k-i-apply-format:before {
-  content: "\e666";
-}
-.k-i-clear-css:before {
-  content: "\e667";
-}
-.k-i-copy-format:before {
-  content: "\e668";
-}
-.k-i-strip-all-formating:before {
-  content: "\e669";
-}
-.k-i-strip-css-format:before {
-  content: "\e66a";
-}
-.k-i-strip-font-elements:before {
-  content: "\e66b";
-}
-.k-i-strip-span-elements:before {
-  content: "\e66c";
-}
-.k-i-strip-word-formatting:before {
-  content: "\e66d";
-}
-.k-i-format-code-block:before {
-  content: "\e66e";
-}
-.k-i-style-builder:before {
-  content: "\e66f";
-}
-.k-i-module-manager:before {
-  content: "\e670";
-}
-.k-i-hyperlink-light-dialog:before {
-  content: "\e671";
-}
-.k-i-hyperlink-insert:before {
-  content: "\e671";
-}
-.k-i-hyperlink-globe:before {
-  content: "\e672";
-}
-.k-i-hyperlink-globe-remove:before {
-  content: "\e673";
-}
-.k-i-hyperlink-email:before {
-  content: "\e674";
-}
-.k-i-anchor:before {
-  content: "\e675";
-}
-.k-i-table-light-dialog:before {
-  content: "\e676";
-}
-.k-i-table-insert:before {
-  content: "\e676";
-}
-.k-i-table:before {
-  content: "\e677";
-}
-.k-i-table-properties:before {
-  content: "\e678";
-}
-.k-i-table-wizard:before {
-  content: "\e678";
-}
-.k-i-table-cell:before {
-  content: "\e679";
-}
-.k-i-table-cell-properties:before {
-  content: "\e67a";
-}
-.k-i-table-column-insert-left:before {
-  content: "\e67b";
-}
-.k-i-table-column-insert-right:before {
-  content: "\e67c";
-}
-.k-i-table-row-insert-above:before {
-  content: "\e67d";
-}
-.k-i-table-row-insert-below:before {
-  content: "\e67e";
-}
-.k-i-table-column-delete:before {
-  content: "\e67f";
-}
-.k-i-table-row-delete:before {
-  content: "\e680";
-}
-.k-i-table-cell-delete:before {
-  content: "\e681";
-}
-.k-i-table-delete:before {
-  content: "\e682";
-}
-.k-i-cells-merge:before {
-  content: "\e683";
-}
-.k-i-cells-merge-horizontally:before {
-  content: "\e684";
-}
-.k-i-cells-merge-vertically:before {
-  content: "\e685";
-}
-.k-i-cell-split-horizontally:before {
-  content: "\e686";
-}
-.k-i-cell-split-vertically:before {
-  content: "\e687";
-}
-.k-i-table-unmerge:before {
-  content: "\e688";
-}
-.k-i-pane-freeze:before {
-  content: "\e689";
-}
-.k-i-row-freeze:before {
-  content: "\e68a";
-}
-.k-i-column-freeze:before {
-  content: "\e68b";
-}
-.k-i-toolbar-float:before {
-  content: "\e68c";
-}
-.k-i-spell-checker:before {
-  content: "\e68d";
-}
-.k-i-validation-xhtml:before {
-  content: "\e68e";
-}
-.k-i-validation-data:before {
-  content: "\e68f";
-}
-.k-i-toggle-full-screen-mode:before {
-  content: "\e690";
-}
-.k-i-formula-fx:before {
-  content: "\e691";
-}
-.k-i-sum:before {
-  content: "\e692";
-}
-.k-i-symbol:before {
-  content: "\e693";
-}
-.k-i-dollar:before {
-  content: "\e694";
-}
-.k-i-currency:before {
-  content: "\e694";
-}
-.k-i-percent:before {
-  content: "\e695";
-}
-.k-i-custom-format:before {
-  content: "\e696";
-}
-.k-i-decimal-increase:before {
-  content: "\e697";
-}
-.k-i-decimal-decrease:before {
-  content: "\e698";
-}
-.k-i-font-size:before {
-  content: "\e699";
-}
-.k-i-image-absolute-position:before {
-  content: "\e69a";
-}
-.k-i-globe-outline:before {
-  content: "\e700";
-}
-.k-i-globe:before {
-  content: "\e701";
-}
-.k-i-marker-pin:before {
-  content: "\e702";
-}
-.k-i-marker-pin-target:before {
-  content: "\e703";
-}
-.k-i-pin:before {
-  content: "\e704";
-}
-.k-i-unpin:before {
-  content: "\e705";
-}
-.k-i-share:before {
-  content: "\e800";
-}
-.k-i-user:before {
-  content: "\e801";
-}
-.k-i-inbox:before {
-  content: "\e802";
-}
-.k-i-blogger:before {
-  content: "\e803";
-}
-.k-i-blogger-box:before {
-  content: "\e804";
-}
-.k-i-delicious:before {
-  content: "\e805";
-}
-.k-i-delicious-box:before {
-  content: "\e806";
-}
-.k-i-digg:before {
-  content: "\e807";
-}
-.k-i-digg-box:before {
-  content: "\e808";
-}
-.k-i-email:before {
-  content: "\e809";
-}
-.k-i-envelop:before {
-  content: "\e809";
-}
-.k-i-letter:before {
-  content: "\e809";
-}
-.k-i-email-box:before {
-  content: "\e80a";
-}
-.k-i-envelop-box:before {
-  content: "\e80a";
-}
-.k-i-letter-box:before {
-  content: "\e80a";
-}
-.k-i-facebook:before {
-  content: "\e80b";
-}
-.k-i-facebook-box:before {
-  content: "\e80c";
-}
-.k-i-google:before {
-  content: "\e80d";
-}
-.k-i-google-box:before {
-  content: "\e80e";
-}
-.k-i-google-plus:before {
-  content: "\e80f";
-}
-.k-i-google-plus-box:before {
-  content: "\e810";
-}
-.k-i-linkedin:before {
-  content: "\e811";
-}
-.k-i-linkedin-box:before {
-  content: "\e812";
-}
-.k-i-myspace:before {
-  content: "\e813";
-}
-.k-i-myspace-box:before {
-  content: "\e814";
-}
-.k-i-pinterest:before {
-  content: "\e815";
-}
-.k-i-pinterest-box:before {
-  content: "\e816";
-}
-.k-i-reddit:before {
-  content: "\e817";
-}
-.k-i-reddit-box:before {
-  content: "\e818";
-}
-.k-i-stumble-upon:before {
-  content: "\e819";
-}
-.k-i-stumble-upon-box:before {
-  content: "\e81a";
-}
-.k-i-tell-a-friend:before {
-  content: "\e81b";
-}
-.k-i-tell-a-friend-box:before {
-  content: "\e81c";
-}
-.k-i-tumblr:before {
-  content: "\e81d";
-}
-.k-i-tumblr-box:before {
-  content: "\e81e";
-}
-.k-i-twitter:before {
-  content: "\e81f";
-}
-.k-i-twitter-box:before {
-  content: "\e820";
-}
-.k-i-yammer:before {
-  content: "\e821";
-}
-.k-i-yammer-box:before {
-  content: "\e822";
-}
-.k-i-behance:before {
-  content: "\e823";
-}
-.k-i-behance-box:before {
-  content: "\e824";
-}
-.k-i-dribbble:before {
-  content: "\e825";
-}
-.k-i-dribbble-box:before {
-  content: "\e826";
-}
-.k-i-rss:before {
-  content: "\e827";
-}
-.k-i-rss-box:before {
-  content: "\e828";
-}
-.k-i-vimeo:before {
-  content: "\e829";
-}
-.k-i-vimeo-box:before {
-  content: "\e82a";
-}
-.k-i-youtube:before {
-  content: "\e82b";
-}
-.k-i-youtube-box:before {
-  content: "\e82c";
-}
-.k-i-folder:before {
-  content: "\e900";
-}
-.k-i-folder-open:before {
-  content: "\e901";
-}
-.k-i-folder-add:before {
-  content: "\e902";
-}
-.k-i-folder-up:before {
-  content: "\e903";
-}
-.k-i-folder-more:before {
-  content: "\e904";
-}
-.k-i-fields-more:before {
-  content: "\e904";
-}
-.k-i-aggregate-fields:before {
-  content: "\e905";
-}
-.k-i-file:before {
-  content: "\e906";
-}
-.k-i-file-vertical:before {
-  content: "\e906";
-}
-.k-i-file-add:before {
-  content: "\e907";
-}
-.k-i-file-txt:before {
-  content: "\e908";
-}
-.k-i-txt:before {
-  content: "\e908";
-}
-.k-i-file-csv:before {
-  content: "\e909";
-}
-.k-i-csv:before {
-  content: "\e909";
-}
-.k-i-file-excel:before {
-  content: "\e90a";
-}
-.k-i-file-xls:before {
-  content: "\e90a";
-}
-.k-i-excel:before {
-  content: "\e90a";
-}
-.k-i-xls:before {
-  content: "\e90a";
-}
-.k-i-file-word:before {
-  content: "\e90b";
-}
-.k-i-file-doc:before {
-  content: "\e90b";
-}
-.k-i-word:before {
-  content: "\e90b";
-}
-.k-i-doc:before {
-  content: "\e90b";
-}
-.k-i-file-mdb:before {
-  content: "\e90c";
-}
-.k-i-mdb:before {
-  content: "\e90c";
-}
-.k-i-file-ppt:before {
-  content: "\e90d";
-}
-.k-i-ppt:before {
-  content: "\e90d";
-}
-.k-i-file-pdf:before {
-  content: "\e90e";
-}
-.k-i-pdf:before {
-  content: "\e90e";
-}
-.k-i-file-psd:before {
-  content: "\e90f";
-}
-.k-i-psd:before {
-  content: "\e90f";
-}
-.k-i-file-flash:before {
-  content: "\e910";
-}
-.k-i-flash:before {
-  content: "\e910";
-}
-.k-i-file-config:before {
-  content: "\e911";
-}
-.k-i-config:before {
-  content: "\e911";
-}
-.k-i-file-ascx:before {
-  content: "\e912";
-}
-.k-i-ascx:before {
-  content: "\e912";
-}
-.k-i-file-bac:before {
-  content: "\e913";
-}
-.k-i-bac:before {
-  content: "\e913";
-}
-.k-i-file-zip:before {
-  content: "\e914";
-}
-.k-i-zip:before {
-  content: "\e914";
-}
-.k-i-film:before {
-  content: "\e915";
-}
-.k-i-css3:before {
-  content: "\e916";
-}
-.k-i-html5:before {
-  content: "\e917";
-}
-.k-i-html:before {
-  content: "\e918";
-}
-.k-i-source-code:before {
-  content: "\e918";
-}
-.k-i-view-source:before {
-  content: "\e918";
-}
-.k-i-css:before {
-  content: "\e919";
-}
-.k-i-js:before {
-  content: "\e91a";
-}
-.k-i-exe:before {
-  content: "\e91b";
-}
-.k-i-csproj:before {
-  content: "\e91c";
-}
-.k-i-vbproj:before {
-  content: "\e91d";
-}
-.k-i-cs:before {
-  content: "\e91e";
-}
-.k-i-vb:before {
-  content: "\e91f";
-}
-.k-i-sln:before {
-  content: "\e920";
-}
-.k-i-cloud:before {
-  content: "\e921";
-}
-.k-i-file-horizontal:before {
-  content: "\e922";
-}
-/* animation classes */
-.k-fx-end .k-fx-next,
-.k-fx-end .k-fx-current {
-  transition: all 350ms ease-out;
-}
-.k-fx {
-  position: relative;
-}
-.k-fx .k-fx-current {
-  z-index: 0;
-}
-.k-fx .k-fx-next {
-  z-index: 1;
-}
-.k-fx-hidden,
-.k-fx-hidden * {
-  visibility: hidden !important;
-}
-.k-fx-reverse .k-fx-current {
-  z-index: 1;
-}
-.k-fx-reverse .k-fx-next {
-  z-index: 0;
-}
-/* Zoom */
-.k-fx-zoom.k-fx-start .k-fx-next {
-  transform: scale(0) !important;
-}
-.k-fx-zoom.k-fx-end .k-fx-next {
-  transform: scale(1) !important;
-}
-.k-fx-zoom.k-fx-reverse.k-fx-start .k-fx-next,
-.k-fx-zoom.k-fx-reverse.k-fx-end .k-fx-next {
-  transform: scale(1) !important;
-}
-.k-fx-zoom.k-fx-reverse.k-fx-start .k-fx-current {
-  transform: scale(1) !important;
-}
-.k-fx-zoom.k-fx-reverse.k-fx-end .k-fx-current {
-  transform: scale(0) !important;
-}
-/* Fade */
-.k-fx-fade.k-fx-start .k-fx-next {
-  will-change: opacity;
-  opacity: 0;
-}
-.k-fx-fade.k-fx-end .k-fx-next {
-  opacity: 1;
-}
-.k-fx-fade.k-fx-reverse.k-fx-start .k-fx-current {
-  will-change: opacity;
-  opacity: 1;
-}
-.k-fx-fade.k-fx-reverse.k-fx-end .k-fx-current {
-  opacity: 0;
-}
-/* Slide */
-.k-fx-slide {
-  /* left */
-  /* left reverse */
-  /* right */
-}
-.k-fx-slide.k-fx-end .k-fx-next .km-content,
-.k-fx-slide.k-fx-end .k-fx-next .km-header,
-.k-fx-slide.k-fx-end .k-fx-next .km-footer,
-.k-fx-slide.k-fx-end .k-fx-current .km-content,
-.k-fx-slide.k-fx-end .k-fx-current .km-header,
-.k-fx-slide.k-fx-end .k-fx-current .km-footer {
-  transition: all 350ms ease-out;
-}
-.k-fx-slide.k-fx-start .k-fx-next .km-content {
-  will-change: transform;
-  transform: translatex(100%);
-}
-.k-fx-slide.k-fx-start .k-fx-next .km-header,
-.k-fx-slide.k-fx-start .k-fx-next .km-footer {
-  will-change: opacity;
-  opacity: 0;
-}
-.k-fx-slide.k-fx-end .k-fx-current .km-content {
-  transform: translatex(-100%);
-}
-.k-fx-slide.k-fx-end .k-fx-next .km-header,
-.k-fx-slide.k-fx-end .k-fx-next .km-footer {
-  opacity: 1;
-}
-.k-fx-slide.k-fx-reverse.k-fx-start .k-fx-current .km-content {
-  will-change: transform;
-  transform: translatex(0);
-}
-.k-fx-slide.k-fx-reverse.k-fx-end .k-fx-current .km-content {
-  transform: translatex(100%);
-}
-.k-fx-slide.k-fx-reverse.k-fx-start .k-fx-next .km-content {
-  transform: translatex(-100%);
-}
-.k-fx-slide.k-fx-reverse.k-fx-end .k-fx-next .km-content {
-  transform: translatex(0);
-}
-.k-fx-slide.k-fx-reverse.k-fx-start .k-fx-current .km-header,
-.k-fx-slide.k-fx-reverse.k-fx-start .k-fx-current .km-footer {
-  will-change: opacity;
-  opacity: 1;
-}
-.k-fx-slide.k-fx-reverse.k-fx-start .k-fx-next .km-header,
-.k-fx-slide.k-fx-reverse.k-fx-start .k-fx-next .km-footer {
-  opacity: 1;
-}
-.k-fx-slide.k-fx-reverse.k-fx-end .k-fx-current .km-header,
-.k-fx-slide.k-fx-reverse.k-fx-end .k-fx-current .km-footer {
-  opacity: 0;
-}
-.k-fx-slide.k-fx-reverse.k-fx-end .k-fx-next .km-header,
-.k-fx-slide.k-fx-reverse.k-fx-end .k-fx-next .km-footer {
-  opacity: 1;
-}
-.k-fx-slide.k-fx-right {
-  /* right reverse */
-}
-.k-fx-slide.k-fx-right.k-fx-start .k-fx-next .km-content {
-  transform: translatex(-100%);
-}
-.k-fx-slide.k-fx-right.k-fx-end .k-fx-current .km-content {
-  transform: translatex(100%);
-}
-.k-fx-slide.k-fx-right.k-fx-reverse.k-fx-start .k-fx-current .km-content {
-  transform: translatex(0);
-}
-.k-fx-slide.k-fx-right.k-fx-reverse.k-fx-end .k-fx-current .km-content {
-  transform: translatex(-100%);
-}
-.k-fx-slide.k-fx-right.k-fx-reverse.k-fx-start .k-fx-next .km-content {
-  transform: translatex(100%);
-}
-.k-fx-slide.k-fx-right.k-fx-reverse.k-fx-end .k-fx-next .km-content {
-  transform: translatex(0%);
-}
-/* Tile */
-.k-fx-tile {
-  /* left */
-  /* left reverse */
-  /* right */
-}
-.k-fx-tile.k-fx-start .k-fx-next {
-  will-change: transform;
-  transform: translatex(100%);
-}
-.k-fx-tile.k-fx-end .k-fx-current {
-  transform: translatex(-100%);
-}
-.k-fx-tile.k-fx-reverse.k-fx-start .k-fx-current {
-  will-change: transform;
-  transform: translatex(0);
-}
-.k-fx-tile.k-fx-reverse.k-fx-end .k-fx-current {
-  transform: translatex(100%);
-}
-.k-fx-tile.k-fx-reverse.k-fx-start .k-fx-next {
-  transform: translatex(-100%);
-}
-.k-fx-tile.k-fx-reverse.k-fx-end .k-fx-next {
-  transform: translatex(0);
-}
-.k-fx-tile.k-fx-right {
-  /* right reverse */
-}
-.k-fx-tile.k-fx-right.k-fx-start .k-fx-next {
-  transform: translatex(-100%);
-}
-.k-fx-tile.k-fx-right.k-fx-end .k-fx-current {
-  transform: translatex(100%);
-}
-.k-fx-tile.k-fx-right.k-fx-reverse.k-fx-start .k-fx-current {
-  transform: translatex(0);
-}
-.k-fx-tile.k-fx-right.k-fx-reverse.k-fx-end .k-fx-current {
-  transform: translatex(-100%);
-}
-.k-fx-tile.k-fx-right.k-fx-reverse.k-fx-start .k-fx-next {
-  transform: translatex(100%);
-}
-.k-fx-tile.k-fx-right.k-fx-reverse.k-fx-end .k-fx-next {
-  transform: translatex(0%);
-}
-/* Tile */
-.k-fx-tile {
-  /* left */
-  /* left reverse */
-  /* right */
-}
-.k-fx-tile.k-fx-start .k-fx-next {
-  will-change: transform;
-  transform: translatex(100%);
-}
-.k-fx-tile.k-fx-end .k-fx-current {
-  transform: translatex(-100%);
-}
-.k-fx-tile.k-fx-reverse.k-fx-start .k-fx-current {
-  will-change: transform;
-  transform: translatex(0);
-}
-.k-fx-tile.k-fx-reverse.k-fx-end .k-fx-current {
-  transform: translatex(100%);
-}
-.k-fx-tile.k-fx-reverse.k-fx-start .k-fx-next {
-  transform: translatex(-100%);
-}
-.k-fx-tile.k-fx-reverse.k-fx-end .k-fx-next {
-  transform: translatex(0);
-}
-.k-fx-tile.k-fx-right {
-  /* right reverse */
-}
-.k-fx-tile.k-fx-right.k-fx-start .k-fx-next {
-  transform: translatex(-100%);
-}
-.k-fx-tile.k-fx-right.k-fx-end .k-fx-current {
-  transform: translatex(100%);
-}
-.k-fx-tile.k-fx-right.k-fx-reverse.k-fx-start .k-fx-current {
-  transform: translatex(0);
-}
-.k-fx-tile.k-fx-right.k-fx-reverse.k-fx-end .k-fx-current {
-  transform: translatex(-100%);
-}
-.k-fx-tile.k-fx-right.k-fx-reverse.k-fx-start .k-fx-next {
-  transform: translatex(100%);
-}
-.k-fx-tile.k-fx-right.k-fx-reverse.k-fx-end .k-fx-next {
-  transform: translatex(0%);
-}
-/* Overlay */
-.k-fx.k-fx-overlay.k-fx-start .k-fx-next,
-.k-fx.k-fx-overlay.k-fx-left.k-fx-start .k-fx-next {
-  will-change: transform;
-  transform: translatex(100%);
-}
-.k-fx.k-fx-overlay.k-fx-right.k-fx-start .k-fx-next {
-  transform: translatex(-100%);
-}
-.k-fx.k-fx-overlay.k-fx-up.k-fx-start .k-fx-next {
-  transform: translatey(100%);
-}
-.k-fx.k-fx-overlay.k-fx-down.k-fx-start .k-fx-next {
-  transform: translatey(-100%);
-}
-.k-fx.k-fx-overlay.k-fx-reverse.k-fx-start .k-fx-next {
-  transform: none;
-}
-.k-fx.k-fx-overlay.k-fx-reverse.k-fx-start .k-fx-current {
-  will-change: transform;
-  transform: none;
-}
-.k-fx.k-fx-overlay.k-fx-reverse.k-fx-end .k-fx-current,
-.k-fx.k-fx-overlay.k-fx-reverse.k-fx-left.k-fx-end .k-fx-current {
-  transform: translatex(100%);
-}
-.k-fx.k-fx-overlay.k-fx-reverse.k-fx-right.k-fx-end .k-fx-current {
-  transform: translatex(-100%);
-}
-.k-fx.k-fx-overlay.k-fx-reverse.k-fx-up.k-fx-end .k-fx-current {
-  transform: translatey(100%);
-}
-.k-fx.k-fx-overlay.k-fx-reverse.k-fx-down.k-fx-end .k-fx-current {
-  transform: translatey(-100%);
-}
-.k-button,
-.k-toolbar .k-button {
-  line-height: 1.143em;
-  padding: 9px 14px;
-}
-.k-widget.k-tabstrip {
-  background-image: none;
-  border-style: none;
-  box-shadow: none;
-}
-.k-tabstrip .k-tabstrip-items {
-  padding: 0;
-}
-.k-tabstrip > div.k-content,
-.k-panelbar .k-tabstrip > div.k-content {
-  margin: 0;
-}
-.k-panelbar > .k-item > .k-link,
-.k-panel > .k-item > .k-link {
-  line-height: 3.5em;
-}
-.k-panelbar .k-image {
-  margin-top: 12px;
-}
-.k-panelbar .k-link > .k-sprite {
-  margin-top: 16px;
-}
-.k-tabstrip > .k-tabstrip-items > .k-item {
-  text-transform: uppercase;
-  border-width: 0;
-  border-style: solid;
-  padding: 0;
-}
-.k-tabstrip-left > .k-tabstrip-items .k-loading,
-.k-tabstrip-right > .k-tabstrip-items .k-loading {
-  display: none;
-}
-.k-tabstrip-top > .k-tabstrip-items .k-tab-on-top,
-.k-tabstrip-top > .k-tabstrip-items .k-state-active {
-  margin-bottom: -1px;
-}
-.k-tabstrip-top > .k-tabstrip-items > .k-item {
-  border-bottom-width: 2px;
-}
-.k-tabstrip-left > .k-tabstrip-items .k-tab-on-top,
-.k-tabstrip-left > .k-tabstrip-items .k-state-active {
-  margin-right: -2px;
-}
-.k-tabstrip-left > .k-tabstrip-items > .k-item {
-  border-right-width: 2px;
-}
-.k-tabstrip-right > .k-tabstrip-items > .k-item {
-  border-left-width: 2px;
-}
-.k-tabstrip-bottom > .k-tabstrip-items > .k-item {
-  border-top-width: 2px;
-}
-.k-tabstrip .k-tabstrip-items .k-link {
-  padding: 1.071em;
-}
-.k-slider-track {
-  border-width: 1px;
-  border-style: solid;
-}
-.k-pager-numbers .k-state-selected {
-  line-height: 2.429em;
-  cursor: pointer;
-}
-.k-pager-numbers .k-link,
-.k-pager-numbers .k-state-selected {
-  border-width: 2px 0 0;
-  padding-top: .7em;
-}
-.k-pager-wrap {
-  line-height: 1.286em;
-  padding: .429em 0 .429em .25em;
-}
-.k-pager-wrap > .k-link,
-.k-pager-numbers .k-link {
-  height: 2.429em;
-  line-height: 2.429em;
-}
-.k-pager-wrap .k-link,
-.k-pager-sizes {
-  padding: 0;
-  min-width: 2.429em;
-}
-.k-pager-wrap .k-pager-numbers .k-state-selected {
-  margin-top: -0.45em;
-  padding-top: .45em;
-  min-width: 2.429em;
-}
-.k-pager-wrap input.k-textbox {
-  height: 2.571em;
-}
-.k-pager-info {
-  padding: .714em 1.333em .643em 1.333em;
-}
-.k-pager-wrap .k-pager-refresh {
-  margin-right: 1.214em;
-}
-.k-pager-wrap .k-dropdown {
-  width: 5.2em;
-}
-.k-autocomplete .k-i-loading,
-.k-multiselect .k-i-loading {
-  bottom: 10px;
-}
-.k-combobox > .k-dropdown-wrap > .k-i-close {
-  right: 3.3em;
-}
-.k-combobox-clearable .k-input {
-  padding-right: 2.5em;
-}
-.k-multiselect > .k-multiselect-wrap > .k-i-close {
-  top: 10px;
-}
-.k-autocomplete > .k-i-close,
-.k-multiselect > .k-multiselect-wrap > .k-i-close {
-  margin-right: 10px;
-}
-.k-dropdown-wrap,
-.k-picker-wrap,
-.k-numeric-wrap {
-  padding: 0 2.571em 0 0;
-}
-.k-picker-wrap .k-select,
-.k-numeric-wrap .k-select,
-.k-dropdown-wrap .k-select {
-  width: 2.571em;
-}
-.k-datetimepicker {
-  width: 19.5em;
-}
-.k-datetimepicker .k-select {
-  width: 5em;
-}
-.k-datetimepicker .k-picker-wrap {
-  padding-right: 5em;
-}
-.k-datetimepicker .k-picker-wrap .k-icon {
-  margin: 0 6px;
-}
-.k-calendar .k-header {
-  margin: 0 -5px;
-}
-.k-calendar td {
-  padding: 0;
-}
-.k-calendar .k-content .k-link {
-  min-height: 2.571em;
-  line-height: 2.571em;
-  padding: 0;
-  text-align: center;
-}
-.k-calendar .k-century .k-link {
-  text-align: left;
-  padding: 0 .7em;
-  line-height: 1.3em;
-}
-.k-calendar th {
-  border-bottom-width: 0;
-  padding: .714em .45em .714em 0;
-}
-.k-calendar .k-footer {
-  border-top-width: 1px;
-  border-top-style: solid;
-  margin: 0 -5px;
-}
-.k-popup.k-list-container {
-  padding: 0.286em 0;
-}
-.k-popup.k-calendar-containe {
-  padding: 0;
-}
-.k-popup .k-list .k-item,
-.k-popup > .k-group-header,
-.k-fieldselector .k-list .k-item {
-  min-height: 2.143em;
-  line-height: 2.143em;
-}
-.k-popup .k-list .k-item {
-  padding: 1px 11px;
-}
-.k-button,
-.k-calendar .k-header .k-link,
-.k-calendar .k-footer {
-  text-transform: uppercase;
-}
-.k-widget.k-calendar .k-nav-fast {
-  width: 65%;
-  height: 2.571em;
-  line-height: 2.571em;
-  margin: 0.429em -0.08333em 0.429em 0;
-}
-.k-calendar .k-header .k-icon {
-  vertical-align: middle;
-}
-.k-widget.k-calendar .k-nav-prev,
-.k-widget.k-calendar .k-nav-next {
-  position: absolute;
-  top: 0.429em;
-  line-height: 2.571em;
-  height: 2.571em;
-}
-.k-calendar .k-header .k-link.k-nav-prev,
-.k-calendar .k-header .k-link.k-nav-next {
-  height: 2.571em;
-  width: 2.571em;
-}
-.k-widget.k-calendar .k-nav-prev {
-  left: 0.429em;
-}
-.k-widget.k-calendar .k-nav-next {
-  right: 0.429em;
-}
-.k-calendar .k-footer .k-nav-today,
-.k-calendar .k-footer > .k-state-disabled {
-  padding: 1.143em 0 1.071em;
-}
-.k-popup.k-calendar-container {
-  padding: 0;
-  border: 0;
-}
-.k-multiselect-wrap .k-input {
-  height: 2.214em;
-}
-.k-multiselect-wrap li {
-  border-radius: 1.071em;
-  margin: 3px 0 3px 3px;
-  padding: 0 1.6em 0 .857em;
-  line-height: 1.86em;
-}
-.k-multiselect-wrap li span {
-  margin-right: .4em;
-}
-.k-multiselect-wrap .k-select {
-  padding-top: 0;
-}
-.k-numeric-wrap .k-select {
-  vertical-align: baseline;
-}
-.k-numerictextbox .k-link {
-  display: block;
-  height: 1.284em;
-}
-.k-numerictextbox .k-link .k-i-arrow-60-up {
-  vertical-align: bottom;
-}
-.k-numerictextbox .k-link .k-i-arrow-60-down {
-  vertical-align: top;
-}
-.k-menu.k-header,
-.k-menu .k-item,
-.k-widget.k-menu-horizontal > .k-item {
-  border-width: 0;
-}
-.k-popup.k-context-menu {
-  border-width: 1px;
-  border-style: solid;
-}
-.k-context-menu.k-menu-vertical > .k-item > .k-link,
-.k-menu .k-menu-group .k-item > .k-link {
-  padding: 0.5em 4.929em 0.5em 1.714em;
-}
-.k-menu .k-item > .k-link > .k-i-arrow-60-right {
-  right: 2.143rem;
-}
-.k-menu .k-animation-container .k-menu-group {
-  padding: 1.143em 0;
-}
-.k-column-menu .k-menu .k-animation-container .k-menu-group {
-  padding: 0;
-}
-.k-column-menu .k-menu-vertical .k-separator {
-  height: 0;
-}
-.k-toolbar {
-  line-height: 3.42em;
-}
-.k-toolbar > div > label {
-  line-height: 3.42em;
-}
-.k-toolbar .k-overflow-anchor > .k-icon {
-  margin-top: -6px;
-  margin-bottom: -6px;
-}
-.k-toolbar .k-dropdown {
-  margin-top: -1px;
-}
-.k-toolbar .k-split-button .k-button {
-  padding-top: 10px;
-  padding-bottom: 10px;
-}
-.k-toolbar .k-button-group {
-  line-height: 3.286em;
-}
-.k-toolbar .k-button-group .k-button {
-  line-height: inherit;
-  padding: 0 .857em;
-}
-.k-toolbar .k-input {
-  height: 2.214em;
-  line-height: 2.214em;
-  padding: 0.177em 0;
-  text-indent: 0.8em;
-  border: 0;
-  margin: 0;
-}
-.k-toolbar .k-overflow-anchor {
-  border-width: 0;
-  line-height: 3.286em;
-  width: 3.42em;
-  height: 3.42em;
-  padding: 0;
-}
-.k-overflow-container .k-overflow-button,
-.k-split-container .k-button {
-  font-size: 1.2em;
-}
-.k-button-group .k-tool {
-  margin: 6px 0;
-}
-.k-toolbar .k-split-button-arrow {
-  padding-left: .4em;
-  padding-right: .4em;
-}
-.k-filebrowser .k-filebrowser-toolbar {
-  line-height: 3.5em;
-}
-.k-filebrowser .k-filebrowser-toolbar .k-upload {
-  margin-top: 3px;
-}
-.k-filebrowser .k-filebrowser-toolbar .k-button-icon {
-  margin-top: -3px;
-}
-.k-filebrowser .k-upload .k-upload-button {
-  vertical-align: bottom;
-}
-.k-filebrowser .k-search-wrap .k-search {
-  top: 25%;
-  right: 4px;
-}
-.k-filebrowser .k-search-wrap {
-  padding: 2px .3em;
-}
-.k-filebrowser .k-tiles-arrange .k-dropdown {
-  width: 80px;
-}
-.k-draghandle {
-  border-width: 2px;
-}
-span.k-tooltip {
-  padding: 9px 17px;
-}
-.k-block > .k-header,
-.k-window-titlebar {
-  padding: 0.5em 0 0.571em;
-}
-.k-window-titlebar .k-window-actions {
-  right: 0.929em;
-  padding-top: .45em;
-}
-div.k-window {
-  border-width: 0;
-}
-.k-window-title {
-  right: 1.143em;
-  left: 1.143em;
-}
-div.k-window-content {
-  padding: 1.333em;
-}
-.k-file {
-  padding: .643em .17em .643em 1em;
-}
-.k-notification-wrap {
-  padding: 1.786em;
-}
-.k-notification-wrap > .k-i-close {
-  top: 21px;
-}
-.k-slider-track {
-  border-width: 0;
-}
-.k-slider .k-button .k-icon {
-  margin-top: 5px;
-}
-.k-slider-horizontal .k-slider-track,
-.k-slider-horizontal .k-slider-selection {
-  height: 2px;
-  margin-top: -1px;
-}
-.k-slider-vertical .k-slider-track,
-.k-slider-vertical .k-slider-selection {
-  width: 2px;
-  margin-left: -1px;
-}
-.k-slider-horizontal .k-draghandle,
-.k-slider-vertical .k-draghandle,
-.k-flatcolorpicker .k-hue-slider .k-draghandle,
-.k-flatcolorpicker .k-transparency-slider .k-draghandle {
-  width: 6px;
-  height: 6px;
-}
-.k-flatcolorpicker .k-hue-slider .k-draghandle {
-  margin-top: -1px;
-}
-.k-colorpicker .k-picker-wrap {
-  line-height: 2.214em;
-}
-.k-colorpicker .k-selected-color {
-  height: 2.214em;
-  padding: 0.177em 0;
-}
-.k-draghandle.k-state-selected,
-.k-draghandle.k-state-selected:link,
-.k-flatcolorpicker .k-hue-slider .k-draghandle.k-state-selected,
-.k-flatcolorpicker .k-transparency-slider .k-draghandle.k-state-selected {
-  width: 10px;
-  height: 10px;
-}
-.k-draghandle.k-state-focused.k-state-selected {
-  margin-left: -2px;
-}
-.k-slider-horizontal .k-draghandle.k-state-selected,
-.k-flatcolorpicker .k-hue-slider .k-draghandle.k-state-selected {
-  top: -6px;
-}
-.k-slider-vertical .k-draghandle.k-state-selected {
-  left: -4px;
-}
-/* PanelBar */
-.k-panelbar-expand,
-.k-panelbar-collapse {
-  right: 16px;
-}
-.k-popup-edit-form .k-primary {
-  float: right;
-}
-.k-popup-edit-form:after {
-  content: " ";
-  display: block;
-  clear: both;
-}
-.k-drag-clue {
-  font-size: 1em;
-  padding: .65em 1em;
-}
-.k-splitbar-horizontal-hover .k-resize-handle {
-  background-position: -165px -6px;
-}
-.k-splitbar-vertical-hover .k-resize-handle {
-  background-position: -38px -309px;
-}
-.k-splitbar-horizontal.k-state-focused .k-resize-handle {
-  background-position: -181px -6px;
-}
-.k-splitbar-vertical.k-state-focused .k-resize-handle {
-  background-position: -70px -309px;
-}
-.k-checkbox-label,
-.k-radio-label {
-  line-height: 18px;
-}
-.k-checkbox:indeterminate + .k-checkbox-label:before {
-  border-width: 2px;
-}
-.k-checkbox + .k-checkbox-label:before {
-  z-index: 1;
-}
-.k-checkbox:indeterminate + .k-checkbox-label:after {
-  width: 10px;
-  height: 10px;
-  border-width: 0;
-  margin-left: 0;
-  top: 5px;
-  left: 5px;
-  transform: none;
-  z-index: 2;
-}
-.k-radio:checked + .k-radio-label:after {
-  top: 4px;
-  left: 4px;
-}
-.k-rtl .k-widget .k-dropdown-wrap,
-.k-rtl .k-widget .k-picker-wrap,
-.k-rtl .k-widget .k-numeric-wrap {
-  padding-left: 2.5em;
-}
-.k-rtl .k-widget.k-autocomplete > .k-i-close,
-.k-rtl .k-widget.k-multiselect > .k-multiselect-wrap > .k-i-close {
-  left: 0;
-  right: initial;
-  margin-left: 10px;
-  margin-right: 0;
-}
-.k-rtl .k-widget.k-combobox > .k-dropdown-wrap > .k-i-close {
-  left: 3.3em;
-  right: initial;
-}
-.k-rtl .k-widget.k-datetimepicker .k-picker-wrap {
-  padding-left: 5em;
-}
-.k-rtl .k-widget.k-datetimepicker .k-picker-wrap .k-icon {
-  margin: 0 6px;
-}
-.k-rtl .k-checkbox-label:after {
-  right: 0;
-}
-.km-pane-wrapper .k-pager-numbers .k-link,
-.km-pane-wrapper .k-pager-numbers .k-state-selected,
-.km-pane-wrapper .k-pager-wrap > .k-link {
-  border-radius: 0;
-}
-.km-pane-wrapper .k-pager-numbers .k-link,
-.km-pane-wrapper .k-pager-wrap > .k-link,
-.km-pane-wrapper .k-pager-wrap > .k-pager-info {
-  padding: .571em .86em;
-}
-.km-pane-wrapper .k-pager-numbers .k-state-selected {
-  padding: .971em .86em .571em;
-}
-.km-pane-wrapper .k-mobile-list .k-edit-field.k-scheduler-toolbar {
-  border-bottom-width: 1px;
-  border-bottom-style: solid;
-  padding-bottom: 0;
-}
-.km-pane-wrapper .k-mobile-list .k-edit-field.k-scheduler-toolbar .k-scheduler-navigation {
-  margin-bottom: -0.6em;
-}
diff --git a/src/main/resources/META-INF/resources/designer/css/kendo.material.min.css b/src/main/resources/META-INF/resources/designer/css/kendo.material.min.css
deleted file mode 100644 (file)
index a01bc2f..0000000
+++ /dev/null
@@ -1,3740 +0,0 @@
-/* Kendo skin */
-.k-theme-test-class,
-.ktb-theme-id-material {
-  opacity: 0;
-}
-.ktb-var-accent {
-  color: #3f51b5;
-}
-.ktb-var-base {
-  color: #fff;
-}
-.ktb-var-background {
-  color: #fff;
-}
-.ktb-var-border-radius {
-  border-radius: 2px;
-}
-.ktb-var-normal-background {
-  color: #fff;
-}
-.ktb-var-normal-gradient {
-  background-image: none;
-}
-.ktb-var-normal-text-color {
-  color: #444444;
-}
-.ktb-var-hover-background {
-  color: #ebebeb;
-}
-.ktb-var-hover-gradient {
-  background-image: none;
-}
-.ktb-var-hover-text-color {
-  color: #444444;
-}
-.ktb-var-selected-background {
-  color: #00b0ff;
-}
-.ktb-var-selected-gradient {
-  background-image: none;
-}
-.ktb-var-selected-text-color {
-  color: #3f51b5;
-}
-.ktb-var-error {
-  color: #ffcdd2;
-}
-.ktb-var-warning {
-  color: #fdefba;
-}
-.ktb-var-success {
-  color: #c8e6c9;
-}
-.ktb-var-info {
-  color: #bbdefb;
-}
-.ktb-var-series-a {
-  color: #3f51b5;
-}
-.ktb-var-series-b {
-  color: #03a9f4;
-}
-.ktb-var-series-c {
-  color: #4caf50;
-}
-.ktb-var-series-d {
-  color: #f9ce1d;
-}
-.ktb-var-series-e {
-  color: #ff9800;
-}
-.ktb-var-series-f {
-  color: #ff5722;
-}
-.k-grid-norecords-template {
-  background-color: #fff;
-  border: 1px solid #e6e6e6;
-}
-.k-in,
-.k-item,
-.k-window-action {
-  border-color: transparent;
-}
-/* main colors */
-.k-header .k-window-actions .k-link {
-  color: inherit;
-}
-a.k-icon {
-  color: #444444;
-}
-a.k-icon:hover {
-  color: #444444;
-}
-.k-button-icon .k-icon {
-  opacity: .8;
-}
-.k-button-icon:hover .k-icon {
-  opacity: 1;
-}
-.k-splitbar .k-resize-handle {
-  background-color: #444444;
-}
-.k-block,
-.k-widget {
-  background-color: #fff;
-}
-.k-block,
-.k-widget,
-.k-input,
-.k-textbox,
-.k-group,
-.k-content,
-.k-header,
-.k-filter-row > th,
-.k-editable-area,
-.k-separator,
-.k-textbox > input,
-.k-autocomplete,
-.k-dropdown-wrap,
-.k-toolbar,
-.k-group-footer td,
-.k-grid-footer,
-.k-footer-template td,
-.k-state-default,
-.k-state-default .k-select,
-.k-state-disabled,
-.k-grid-header,
-.k-grid-header-wrap,
-.k-grid-header-locked,
-.k-grid-footer-locked,
-.k-grid-content-locked,
-.k-grid td,
-.k-grid td.k-state-selected,
-.k-grid-footer-wrap,
-.k-pager-wrap,
-.k-pager-wrap .k-link,
-.k-pager-refresh,
-.k-grouping-header,
-.k-grouping-header .k-group-indicator,
-.k-panelbar > .k-item > .k-link,
-.k-panel > .k-item > .k-link,
-.k-panelbar .k-panel,
-.k-panelbar .k-content,
-.k-treemap-tile,
-.k-calendar th,
-.k-slider-track,
-.k-splitbar,
-.k-dropzone-active,
-.k-tiles,
-.k-toolbar,
-.k-tooltip,
-.k-button-group .k-tool,
-.k-upload-files,
-.k-popup.k-align .k-list .k-item:last-child {
-  border-color: #e6e6e6;
-}
-.k-group,
-.k-toolbar,
-.k-grouping-header,
-.k-pager-wrap,
-.k-group-footer td,
-.k-grid-footer,
-.k-footer-template td,
-.k-widget .k-status,
-.k-calendar th,
-.k-dropzone-hovered,
-.k-widget.k-popup {
-  background-color: #3f51b5;
-}
-.k-grouping-row td,
-td.k-group-cell,
-.k-resize-handle-inner {
-  background-color: #3f51b5;
-}
-.k-list-container {
-  border-color: rgba(0, 0, 0, 0.2);
-  background-color: #ffffff;
-}
-.k-content,
-.k-editable-area,
-.k-panelbar > li.k-item,
-.k-panel > li.k-item,
-.k-tiles {
-  background-color: #fff;
-}
-.k-alt,
-.k-separator,
-.k-resource.k-alt,
-.k-pivot-layout > tbody > tr:first-child > td:first-child {
-  background-color: #f2f2f2;
-}
-.k-pivot-rowheaders .k-alt .k-alt,
-.k-header.k-alt {
-  background-color: #dedede;
-}
-.k-textbox,
-.k-autocomplete.k-header,
-.k-dropdown-wrap.k-state-active,
-.k-picker-wrap.k-state-active,
-.k-numeric-wrap.k-state-active {
-  border-color: #e6e6e6;
-  background-color: #fff;
-}
-.k-textbox > input,
-.k-autocomplete .k-input,
-.k-dropdown-wrap .k-input,
-.k-autocomplete.k-state-focused .k-input,
-.k-dropdown-wrap.k-state-focused .k-input,
-.k-picker-wrap.k-state-focused .k-input,
-.k-numeric-wrap.k-state-focused .k-input {
-  border-color: #e6e6e6;
-}
-input.k-textbox,
-textarea.k-textbox,
-input.k-textbox:hover,
-textarea.k-textbox:hover,
-.k-textbox > input {
-  background: none;
-}
-.k-input,
-input.k-textbox,
-textarea.k-textbox,
-input.k-textbox:hover,
-textarea.k-textbox:hover,
-.k-textbox > input,
-.k-multiselect-wrap {
-  background-color: #fff;
-  color: #444444;
-}
-.k-input[readonly] {
-  background-color: #fff;
-  color: #444444;
-}
-.k-block,
-.k-widget,
-.k-popup,
-.k-content,
-.k-toolbar,
-.k-dropdown .k-input {
-  color: #444444;
-}
-.k-inverse {
-  color: #ffffff;
-}
-.k-block {
-  color: #ffffff;
-}
-.k-link:link,
-.k-link:visited,
-.k-nav-current.k-state-hover .k-link {
-  color: #428bca;
-}
-.k-tabstrip-items .k-link,
-.k-panelbar > li > .k-link {
-  color: #444444;
-}
-.k-header,
-.k-treemap-title,
-.k-grid-header .k-header > .k-link {
-  color: #ffffff;
-}
-.k-header,
-.k-grid-header,
-.k-toolbar,
-.k-dropdown-wrap,
-.k-picker-wrap,
-.k-numeric-wrap,
-.k-grouping-header,
-.k-pager-wrap,
-.k-textbox,
-.k-button,
-.k-progressbar,
-.k-draghandle,
-.k-autocomplete,
-.k-state-highlight,
-.k-tabstrip-items .k-item,
-.k-panelbar .k-tabstrip-items .k-item,
-.km-pane-wrapper > .km-pane > .km-view > .km-content {
-  background-image: none;
-  background-position: 50% 50%;
-  background-color: #3f51b5;
-}
-.k-widget.k-tooltip {
-  background-image: none;
-}
-.k-block,
-.k-header,
-.k-grid-header,
-.k-toolbar,
-.k-grouping-header,
-.k-pager-wrap,
-.k-button,
-.k-draghandle,
-.k-treemap-tile,
-html .km-pane-wrapper .k-header {
-  background-color: #3f51b5;
-}
-/* icons */
-.k-icon:hover,
-.k-state-hover .k-icon,
-.k-state-selected .k-icon,
-.k-state-focused .k-icon,
-.k-column-menu .k-state-hover .k-sprite,
-.k-column-menu .k-state-active .k-sprite,
-.k-pager-numbers .k-current-page .k-link:hover:after,
-.k-scheduler-toolbar > ul.k-scheduler-views > li.k-current-view.k-state-hover > .k-link:after {
-  opacity: 1;
-}
-.k-state-disabled .k-icon,
-.k-column-menu .k-sprite,
-.k-pager-numbers .k-current-page .k-link:after,
-.k-scheduler-toolbar > ul.k-scheduler-views > li.k-current-view > .k-link:after {
-  opacity: 0.7;
-}
-.k-mobile-list .k-check:checked,
-.k-mobile-list .k-edit-field [type=checkbox]:checked,
-.k-mobile-list .k-edit-field [type=radio]:checked {
-  opacity: 0.7;
-}
-.k-tool {
-  border-color: transparent;
-}
-/* IE will ignore the above selectors if these are added too */
-.k-mobile-list .k-check:checked,
-.k-mobile-list .k-edit-field [type=checkbox]:checked,
-.k-mobile-list .k-edit-field [type=radio]:checked {
-  background-image: url('Material/sprite.png');
-  border-color: transparent;
-}
-.k-i-loading {
-  background-image: url('Material/loading.gif');
-}
-.k-loading-image {
-  background-image: url('Material/loading-image.gif');
-}
-.k-loading-color {
-  background-color: #ffffff;
-}
-.k-button {
-  color: #444444;
-  border-color: #fafafa;
-  background-color: #fafafa;
-}
-.k-draghandle {
-  border-color: #3f51b5;
-  background-color: #3f51b5;
-  box-shadow: none;
-}
-.k-draghandle:hover {
-  border-color: #3f51b5;
-  background-color: #3f51b5;
-  box-shadow: 0 0 0 8px rgba(63, 81, 181, 0.3);
-}
-/* Scheduler */
-.k-scheduler {
-  color: #ffffff;
-  background-color: #fff;
-}
-.k-scheduler-layout {
-  color: #444444;
-}
-.k-scheduler-datecolumn,
-.k-scheduler-groupcolumn {
-  background-color: #fff;
-  color: #444444;
-}
-.k-scheduler-times tr,
-.k-scheduler-times th,
-.k-scheduler-table td,
-.k-scheduler-header th,
-.k-scheduler-header-wrap,
-.k-scheduler-times {
-  border-color: #e6e6e6;
-}
-.k-nonwork-hour {
-  background-color: #fafafa;
-}
-.k-gantt .k-nonwork-hour {
-  background-color: rgba(0, 0, 0, 0.02);
-}
-.k-gantt .k-header.k-nonwork-hour {
-  background-color: rgba(0, 0, 0, 0.2);
-}
-.k-scheduler-table .k-today,
-.k-today > .k-scheduler-datecolumn,
-.k-today > .k-scheduler-groupcolumn {
-  background-color: #e9e9e9;
-}
-.k-scheduler-now-arrow {
-  border-left-color: #eed3d7;
-}
-.k-scheduler-now-line {
-  background-color: #eed3d7;
-}
-.k-event,
-.k-task-complete {
-  border-color: #606fc7;
-  background: #606fc7 0 -257px none repeat-x;
-  color: #ffffff;
-}
-.k-event-inverse {
-  color: #444444;
-}
-.k-event.k-state-selected {
-  background-position: 0 0;
-  box-shadow: 0 0 0 2px #444444;
-}
-.k-event .k-resize-handle:after,
-.k-task-single .k-resize-handle:after {
-  background-color: #ffffff;
-}
-.k-scheduler-marquee:before,
-.k-scheduler-marquee:after {
-  border-color: #fff;
-}
-.k-panelbar .k-content,
-.k-panelbar .k-panel,
-.k-panelbar .k-item {
-  background-color: #fff;
-  color: #444444;
-  border-color: #cccccc;
-}
-.k-panelbar > li > .k-link {
-  color: #444444;
-}
-.k-panelbar > .k-item > .k-link {
-  border-color: #cccccc;
-}
-.k-panel > li.k-item {
-  background-color: #fff;
-}
-/* states */
-.k-state-active,
-.k-state-active:hover,
-.k-active-filter,
-.k-tabstrip .k-state-active {
-  background-color: #ffffff;
-  border-color: #cccccc;
-  color: #444444;
-}
-.k-fieldselector .k-list-container {
-  background-color: #ffffff;
-}
-.k-button:focus,
-.k-button.k-state-focused {
-  border-color: #dbdbdb;
-}
-.k-button:hover,
-.k-button.k-state-hover {
-  color: #444444;
-  border-color: #ebebeb;
-  background-color: #ebebeb;
-}
-.k-button:active,
-.k-button.k-state-active {
-  color: #3f51b5;
-  background-color: #dbdbdb;
-  border-color: #dbdbdb;
-}
-.k-button:active:hover,
-.k-button.k-state-active:hover {
-  color: #ffffff;
-  border-color: #5c6bc0;
-  background-color: #5c6bc0;
-}
-.k-button:focus:not(.k-state-disabled):not([disabled]) {
-  box-shadow: 0 6px 17px 0 #c4c4c4;
-}
-.k-button:focus:active:not(.k-state-disabled):not([disabled]) {
-  box-shadow: 0 6px 17px 0 rgba(235, 235, 235, 0.3);
-}
-.k-menu .k-state-hover > .k-state-active {
-  background-color: transparent;
-}
-.k-state-highlight {
-  background: #ffffff;
-  color: #444444;
-}
-.k-state-focused,
-.k-grouping-row .k-state-focused {
-  border-color: #67afe9;
-}
-.k-button.k-bare {
-  position: relative;
-}
-.k-button.k-bare:before {
-  content: "";
-  background-color: currentcolor;
-  opacity: 0.12;
-  border-radius: inherit;
-  height: 100%;
-  width: 100%;
-  position: absolute;
-  left: 0;
-  top: 0;
-  z-index: -1;
-  display: none;
-}
-.k-button.k-bare.k-state-focused:before,
-.k-button.k-bare:focus:before {
-  display: block;
-}
-.k-mediaplayer-toolbar .k-button.k-bare:active,
-.k-mediaplayer-toolbar .k-button.k-bare.k-state-active,
-.k-mediaplayer-toolbar .k-button.k-bare.k-state-active:hover {
-  color: #3f51b5;
-}
-.k-mediaplayer-toolbar .k-button.k-bare:active:before,
-.k-mediaplayer-toolbar .k-button.k-bare.k-state-active:before,
-.k-mediaplayer-toolbar .k-button.k-bare.k-state-active:hover:before {
-  opacity: 0.24;
-}
-.k-mediaplayer-seekbar {
-  top: -14px;
-}
-.k-quality-list {
-  margin-left: -25px !important;
-}
-.k-calendar .k-link {
-  color: #444444;
-}
-.k-calendar .k-footer {
-  padding: 0;
-}
-.k-calendar .k-footer .k-nav-today {
-  color: #444444;
-  text-decoration: none;
-  background-color: #fff;
-}
-.k-calendar .k-footer .k-nav-today:hover,
-.k-calendar .k-footer .k-nav-today.k-state-hover {
-  background-color: #fff;
-  text-decoration: underline;
-}
-.k-calendar .k-footer .k-nav-today:active {
-  background-color: #fff;
-}
-.k-calendar .k-link.k-nav-fast {
-  color: #444444;
-}
-.k-calendar .k-nav-fast.k-state-hover {
-  text-decoration: none;
-  background-color: #ebebeb;
-  color: #444444;
-}
-.k-calendar .k-link.k-state-hover {
-  border-radius: 50%;
-}
-.k-calendar .k-footer .k-link {
-  border-radius: 0;
-}
-.k-calendar th {
-  background-color: #3f51b5;
-}
-.k-window-titlebar .k-link {
-  border-radius: 50%;
-}
-.k-calendar-container.k-group {
-  border-color: rgba(0, 0, 0, 0.2);
-}
-.k-state-selected,
-.k-state-selected:link,
-.k-state-selected:visited,
-.k-list > .k-state-selected,
-.k-list > .k-state-highlight,
-.k-panel > .k-state-selected,
-.k-ghost-splitbar-vertical,
-.k-ghost-splitbar-horizontal,
-.k-draghandle.k-state-selected:hover,
-.k-scheduler .k-scheduler-toolbar .k-state-selected,
-.k-scheduler .k-today.k-state-selected,
-.k-marquee-color,
-.k-drag-clue.k-state-selected {
-  color: #3f51b5;
-  background-color: #fff;
-  border-color: #ffffff;
-}
-.k-virtual-item.k-first,
-.k-group-header + .k-list > .k-item.k-first,
-.k-static-header + .k-list > .k-item.k-first {
-  border-top-color: #ebebeb;
-}
-.k-group-header + div > .k-list > .k-item.k-first:before {
-  border-top-color: #ebebeb;
-}
-.k-popup > .k-group-header,
-.k-popup > .k-virtual-wrap > .k-group-header {
-  background: #ebebeb;
-  color: #3f51b5;
-}
-.k-popup .k-list .k-item > .k-group {
-  background: #ebebeb;
-  color: #3f51b5;
-  border-bottom-left-radius: 1px;
-}
-.k-marquee-text {
-  color: #3f51b5;
-}
-.k-state-focused,
-.k-list > .k-state-focused,
-.k-listview > .k-state-focused,
-.k-listview > .k-state-focused.k-state-selected,
-td.k-state-focused,
-.k-button.k-state-focused,
-.k-upload-files .k-button:focus,
-.k-upload-files .k-button:focus:not(.k-state-disabled):not([disabled]) {
-  box-shadow: inset 0 0 0 1px #808080;
-}
-.k-state-focused.k-state-selected,
-.k-list > .k-state-focused.k-state-selected,
-td.k-state-focused.k-state-selected {
-  box-shadow: none;
-}
-.k-ie8 .k-panelbar span.k-state-focused,
-.k-ie8 .k-menu li.k-state-focused,
-.k-ie8 .k-listview > .k-state-focused,
-.k-ie8 .k-grid-header th.k-state-focused,
-.k-ie8 td.k-state-focused,
-.k-ie8 .k-tool.k-state-hover,
-.k-ie8 .k-button:focus,
-.k-ie8 .k-button.k-state-focused,
-.k-list > .k-state-selected.k-state-focused,
-.k-list-optionlabel.k-state-selected.k-state-focused {
-  box-shadow: none;
-}
-.k-state-selected > .k-link,
-.k-panelbar > li > .k-state-selected,
-.k-panelbar > li.k-state-default > .k-link.k-state-selected {
-  color: #3f51b5;
-}
-.k-state-hover,
-.k-state-hover:hover,
-.k-splitbar-horizontal-hover:hover,
-.k-splitbar-vertical-hover:hover,
-.k-list > .k-state-hover,
-.k-scheduler .k-scheduler-toolbar ul li.k-state-hover,
-.k-pager-wrap .k-link:hover,
-.k-dropdown .k-state-focused,
-.k-filebrowser-dropzone,
-.k-mobile-list .k-item > .k-link:active,
-.k-mobile-list .k-item > .k-label:active,
-.k-mobile-list .k-edit-label.k-check:active,
-.k-mobile-list .k-recur-view .k-check:active {
-  color: #444444;
-  background-color: #ebebeb;
-  border-color: #ebebeb;
-}
-/* this selector should be used separately, otherwise old IEs ignore the whole rule */
-.k-mobile-list .k-scheduler-timezones .k-edit-field:nth-child(2):active {
-  color: #444444;
-  background-color: #ebebeb;
-  border-color: #ebebeb;
-}
-.k-ie8 .k-window-titlebar .k-state-hover {
-  border-color: #ebebeb;
-}
-.k-state-hover > .k-select,
-.k-state-focused > .k-select {
-  border-color: #ebebeb;
-}
-.k-button:hover,
-.k-button.k-state-hover,
-.k-button:focus,
-.k-button.k-state-focused,
-.k-textbox:hover,
-.k-state-hover,
-.k-state-hover:hover,
-.k-pager-wrap .k-link:hover,
-.k-other-month.k-state-hover .k-link,
-div.k-filebrowser-dropzone em,
-.k-draghandle:hover,
-.k-listbox .k-item:hover:not(.k-state-disabled) {
-  background-image: none;
-}
-.k-pager-wrap {
-  background-color: #3f51b5;
-  color: #ffffff;
-}
-.k-autocomplete.k-state-active,
-.k-picker-wrap.k-state-active,
-.k-numeric-wrap.k-state-active,
-.k-dropdown-wrap.k-state-active,
-.k-state-active,
-.k-state-active:hover,
-.k-state-active > .k-link,
-.k-button:active,
-.k-panelbar > .k-item > .k-state-focused {
-  background-image: none;
-}
-.k-state-selected,
-.k-button:active,
-.k-button.k-state-active,
-.k-draghandle.k-state-selected:hover {
-  background-image: none;
-}
-.k-button:active,
-.k-button.k-state-active,
-.k-draghandle.k-state-selected:hover {
-  background-position: 50% 50%;
-}
-.k-state-hover > .k-link,
-.k-other-month.k-state-hover .k-link,
-div.k-filebrowser-dropzone em {
-  color: #444444;
-}
-.k-autocomplete.k-state-hover,
-.k-autocomplete.k-state-focused,
-.k-picker-wrap.k-state-hover,
-.k-picker-wrap.k-state-focused,
-.k-numeric-wrap.k-state-hover,
-.k-numeric-wrap.k-state-focused,
-.k-dropdown-wrap.k-state-hover,
-.k-dropdown-wrap.k-state-focused {
-  background-color: #ffffff;
-  background-image: none;
-  background-position: 50% 50%;
-  border-color: #ebebeb;
-}
-.km-pane-wrapper .k-mobile-list input:not([type="checkbox"]):not([type="radio"]),
-.km-pane-wrapper .km-pane .k-mobile-list select:not([multiple]),
-.km-pane-wrapper .k-mobile-list textarea,
-.k-dropdown .k-state-focused .k-input {
-  color: #444444;
-}
-.km-pane-wrapper .km-pane .k-mobile-list.k-filter-menu .k-space-right {
-  background: #fff;
-  border-color: #e6e6e6;
-}
-.km-pane-wrapper .km-pane .k-mobile-list.k-filter-menu .k-space-right > input {
-  background-color: #fff;
-  border-color: #f0f0f0;
-}
-.km-pane-wrapper .km-pane .k-mobile-list.k-filter-menu .k-space-right > input + .k-i-zoom:before {
-  color: #444444;
-}
-.km-pane-wrapper .km-pane .k-mobile-list.k-filter-menu .k-space-right > input:focus {
-  box-shadow: 0 2px 6px rgba(0, 0, 0, 0.2), 0 2px 3px rgba(0, 0, 0, 0.05);
-}
-.k-dropdown .k-state-hover .k-input {
-  color: #444444;
-}
-.k-state-error {
-  border-color: #eed3d7;
-  background-color: #f2dede;
-  color: #b94a48;
-}
-.k-state-disabled {
-  opacity: .7;
-}
-.k-ie8 .k-state-disabled {
-  filter: alpha(opacity=70);
-}
-.k-tile-empty.k-state-selected,
-.k-loading-mask.k-state-selected {
-  border-width: 0;
-  background-image: none;
-  background-color: transparent;
-}
-.k-state-disabled,
-.k-state-disabled .k-link,
-.k-state-disabled .k-button,
-.k-other-month,
-.k-other-month .k-link,
-.k-dropzone em,
-.k-dropzone .k-upload-status,
-.k-tile-empty strong,
-.k-slider .k-draghandle {
-  color: #999999;
-}
-.k-file .k-upload-status {
-  color: #444444;
-}
-/* Progressbar */
-.k-progressbar-indeterminate {
-  background: url('Material/indeterminate.gif');
-}
-.k-progressbar-indeterminate .k-progress-status-wrap,
-.k-progressbar-indeterminate .k-state-selected {
-  display: none;
-}
-/* Slider */
-.k-slider-track {
-  background-color: #e6e6e6;
-}
-.k-slider-selection {
-  background-color: #fff;
-}
-.k-slider-horizontal .k-tick {
-  background-image: url('Material/slider-h.gif');
-}
-.k-slider-vertical .k-tick {
-  background-image: url('Material/slider-v.gif');
-}
-/* Tooltip */
-.k-widget.k-tooltip,
-.k-chart-crosshair-tooltip,
-.k-chart-shared-tooltip {
-  border-color: rgba(100, 100, 100, 0.9);
-  background-color: rgba(100, 100, 100, 0.9);
-  color: #ffffff;
-}
-.k-widget.k-tooltip-validation {
-  border-color: #fdefba;
-  background-color: #fdefba;
-  color: #816704;
-}
-/* Bootstrap theme fix */
-.input-prepend .k-tooltip-validation,
-.input-append .k-tooltip-validation {
-  font-size: 12px;
-  position: relative;
-  top: 3px;
-}
-.k-callout-n {
-  border-bottom-color: rgba(100, 100, 100, 0.9);
-}
-.k-callout-w {
-  border-right-color: rgba(100, 100, 100, 0.9);
-}
-.k-callout-s {
-  border-top-color: rgba(100, 100, 100, 0.9);
-}
-.k-callout-e {
-  border-left-color: rgba(100, 100, 100, 0.9);
-}
-.k-tooltip-validation .k-callout-n {
-  border-bottom-color: #fdefba;
-}
-.k-tooltip-validation .k-callout-w {
-  border-right-color: #fdefba;
-}
-.k-tooltip-validation .k-callout-s {
-  border-top-color: #fdefba;
-}
-.k-tooltip-validation .k-callout-e {
-  border-left-color: #fdefba;
-}
-/* Splitter */
-.k-splitbar {
-  background-color: #fafafa;
-}
-.k-restricted-size-vertical,
-.k-restricted-size-horizontal {
-  background-color: #b94a48;
-}
-/* Upload */
-.k-file {
-  background-color: #fff;
-  border-color: #e6e6e6;
-}
-.k-file-progress {
-  color: #2b98f3;
-}
-.k-file-progress .k-progress {
-  background-color: #bbdefb;
-}
-.k-file-success .k-file-name,
-.k-file-success .k-upload-pct {
-  color: #5fb662;
-}
-.k-file-success .k-progress {
-  background-color: #c8e6c9;
-}
-.k-file-error {
-  color: #ff3448;
-}
-.k-file-error .k-file-extension-wrapper,
-.k-file-error .k-multiple-files-extension-wrapper {
-  color: #ff3448;
-  border-color: #ff3448;
-}
-.k-file-error .k-file-extension-wrapper:before,
-.k-file-error .k-multiple-files-extension-wrapper:before {
-  background-color: #fff;
-  border-color: transparent transparent #ff3448 #ff3448;
-}
-.k-file-error .k-progress {
-  background-color: #ffcdd2;
-}
-.k-file-extension-wrapper,
-.k-multiple-files-extension-wrapper {
-  color: #999999;
-  border-color: #999999;
-}
-.k-file-invalid .k-file-name-invalid {
-  color: #ff3448;
-}
-.k-file-invalid-extension-wrapper,
-.k-multiple-files-invalid-extension-wrapper {
-  color: #ff3448;
-  border-color: #ff3448;
-}
-.k-file-extension-wrapper:before,
-.k-multiple-files-extension-wrapper:before {
-  background-color: #fff;
-  border-color: transparent transparent #999999 #999999;
-}
-.k-file-invalid-extension-wrapper:before,
-.k-multiple-files-invalid-extension-wrapper:before {
-  background-color: #fff;
-  border-color: transparent transparent #ff3448 #ff3448;
-}
-.k-multiple-files-extension-wrapper:after {
-  border-top-color: #999999;
-  border-left-color: #999999;
-}
-.k-multiple-files-invalid-extension-wrapper:after {
-  border-top-color: #ff3448;
-  border-left-color: #ff3448;
-}
-.k-file-size,
-.k-file-information,
-.k-file-validation-message {
-  color: #999999;
-}
-.k-upload .k-upload-selected {
-  color: #3f51b5;
-  border-color: #e6e6e6;
-}
-.k-upload .k-upload-selected:hover {
-  color: #fff;
-  background-color: #3f51b5;
-}
-/* ImageBrowser */
-.k-tile {
-  border-color: #fff;
-}
-.k-textbox:hover,
-.k-tiles li.k-state-hover {
-  border-color: #ebebeb;
-}
-.k-tiles li.k-state-selected {
-  border-color: #ffffff;
-}
-/* TreeMap */
-.k-leaf,
-.k-leaf.k-state-hover:hover {
-  color: #fff;
-}
-.k-leaf.k-inverse,
-.k-leaf.k-inverse.k-state-hover:hover {
-  color: #000;
-}
-/* Shadows */
-.k-widget,
-.k-button {
-  box-shadow: none;
-}
-.k-slider,
-.k-treeview,
-.k-upload {
-  box-shadow: none;
-}
-.k-state-hover {
-  box-shadow: 0 1px 0 rgba(255, 255, 255, 0.2);
-}
-.k-textbox:focus,
-.k-autocomplete.k-state-focused,
-.k-dropdown-wrap.k-state-focused,
-.k-picker-wrap.k-state-focused,
-.k-numeric-wrap.k-state-focused {
-  box-shadow: 0 2px 6px rgba(0, 0, 0, 0.2), 0 2px 3px rgba(0, 0, 0, 0.05);
-}
-.k-state-selected {
-  box-shadow: 0 1px 1px rgba(0, 0, 0, 0.075) inset;
-}
-.k-state-active {
-  box-shadow: none;
-}
-.k-grid td.k-state-selected.k-state-focused {
-  background-color: #ffffff;
-}
-.k-popup,
-.k-menu .k-menu-group,
-.k-grid .k-filter-options,
-.k-time-popup,
-.k-datepicker-calendar,
-.k-autocomplete.k-state-border-down,
-.k-autocomplete.k-state-border-up,
-.k-dropdown-wrap.k-state-active,
-.k-picker-wrap.k-state-active,
-.k-multiselect.k-state-focused,
-.k-filebrowser .k-image,
-.k-tooltip {
-  box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.2);
-}
-.k-calendar-container.k-popup {
-  box-shadow: 0 0px 6px 1px rgba(0, 0, 0, 0.2);
-}
-.k-treemap-tile.k-state-hover {
-  box-shadow: inset 0 0 0 3px #e6e6e6;
-}
-/* Window */
-.k-window {
-  border-color: rgba(0, 0, 0, 0.2);
-  box-shadow: 1px 1px 7px 1px rgba(128, 128, 128, 0.2);
-  background-color: #fff;
-}
-.k-window.k-state-focused {
-  border-color: rgba(0, 0, 0, 0.2);
-  box-shadow: 1px 1px 7px 1px rgba(0, 0, 0, 0.2);
-}
-.k-window.k-window-maximized,
-.k-window-maximized .k-window-titlebar,
-.k-window-maximized .k-window-content {
-  border-radius: 0;
-}
-.k-shadow {
-  box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.2);
-}
-.k-inset {
-  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.2);
-}
-/* Selection */
-.k-editor-inline ::selection {
-  background-color: #3f51b5;
-  text-shadow: none;
-  color: #fff;
-}
-.k-editor-inline ::-moz-selection {
-  background-color: #3f51b5;
-  text-shadow: none;
-  color: #fff;
-}
-/* Notification */
-.k-widget.k-notification.k-notification-info {
-  background-color: #bbdefb;
-  color: #2b98f3;
-  border-color: #bbdefb;
-}
-.k-widget.k-notification.k-notification-success {
-  background-color: #c8e6c9;
-  color: #5fb662;
-  border-color: #c8e6c9;
-}
-.k-widget.k-notification.k-notification-warning {
-  background-color: #fdefba;
-  color: #f8c70d;
-  border-color: #fdefba;
-}
-.k-widget.k-notification.k-notification-error {
-  background-color: #ffcdd2;
-  color: #ff3448;
-  border-color: #ffcdd2;
-}
-/* Gantt */
-.k-gantt .k-treelist {
-  background: #f2f2f2;
-}
-.k-gantt .k-treelist .k-alt {
-  background-color: #d9d9d9;
-}
-.k-gantt .k-treelist tr:hover {
-  background-color: #ebebeb;
-}
-.k-gantt .k-treelist .k-state-selected,
-.k-gantt .k-treelist .k-state-selected td,
-.k-gantt .k-treelist .k-alt.k-state-selected,
-.k-gantt .k-treelist .k-alt.k-state-selected > td {
-  background-color: #fff;
-}
-.k-gantt .k-treelist .k-alt.k-state-selected:hover,
-.k-gantt .k-treelist .k-alt.k-state-selected:hover td {
-  background-color: #00a2eb;
-}
-.k-task-dot:after {
-  background-color: #444444;
-  border-color: #444444;
-}
-.k-task-dot:hover:after {
-  background-color: #ffffff;
-}
-.k-task-summary {
-  border-color: #98a2db;
-  background: #98a2db;
-}
-.k-task-milestone,
-.k-task-summary-complete {
-  border-color: #444444;
-  background: #444444;
-}
-.k-state-selected.k-task-summary {
-  border-color: #98a2db;
-  background: #98a2db;
-}
-.k-state-selected.k-task-milestone,
-.k-state-selected .k-task-summary-complete {
-  border-color: #fff;
-  background: #fff;
-}
-.k-task-single {
-  background-color: #7a87d1;
-  border-color: #606fc7;
-  color: #ffffff;
-}
-.k-state-selected.k-task-single {
-  border-color: #ffffff;
-}
-.k-line {
-  background-color: #444444;
-  color: #444444;
-}
-.k-state-selected.k-line {
-  background-color: #fff;
-  color: #fff;
-}
-.k-resource {
-  background-color: #fff;
-}
-/* Border radius */
-.k-block,
-.k-button,
-.k-textbox,
-.k-drag-clue,
-.k-touch-scrollbar,
-.k-window,
-.k-window-titleless .k-window-content,
-.k-window-action,
-.k-inline-block,
-.k-grid .k-filter-options,
-.k-grouping-header .k-group-indicator,
-.k-autocomplete,
-.k-multiselect,
-.k-combobox,
-.k-dropdown,
-.k-dropdown-wrap,
-.k-datepicker,
-.k-timepicker,
-.k-colorpicker,
-.k-datetimepicker,
-.k-notification,
-.k-numerictextbox,
-.k-picker-wrap,
-.k-numeric-wrap,
-.k-list-container,
-.k-calendar-container,
-.k-calendar td,
-.k-calendar .k-link,
-.k-treeview .k-in,
-.k-editor-inline,
-.k-tooltip,
-.k-tile,
-.k-slider-track,
-.k-slider-selection,
-.k-upload {
-  border-radius: 2px;
-}
-.k-tool {
-  text-align: center;
-  vertical-align: middle;
-}
-.k-toolbar .k-split-button .k-button {
-  border-radius: 2px 0 0 2px;
-}
-.k-rtl .k-tool.k-group-start,
-.k-rtl .k-toolbar .k-split-button .k-button,
-.k-rtl .k-toolbar .k-button-group .k-group-start {
-  border-radius: 0 2px 2px 0;
-}
-.k-toolbar .k-split-button .k-split-button-arrow {
-  border-radius: 0 2px 2px 0;
-}
-.k-rtl .k-tool.k-group-end,
-.k-rtl .k-toolbar .k-button-group .k-group-end,
-.k-rtl .k-toolbar .k-split-button .k-split-button-arrow {
-  border-radius: 2px 0 0 2px;
-}
-.k-calendar-container.k-state-border-up,
-.k-list-container.k-state-border-up,
-.k-autocomplete.k-state-border-up,
-.k-multiselect.k-state-border-up,
-.k-dropdown-wrap.k-state-border-up,
-.k-picker-wrap.k-state-border-up,
-.k-numeric-wrap.k-state-border-up,
-.k-window-content,
-.k-filter-menu {
-  border-radius: 0 0 2px 2px;
-}
-.k-autocomplete.k-state-border-up .k-input,
-.k-dropdown-wrap.k-state-border-up .k-input,
-.k-picker-wrap.k-state-border-up .k-input,
-.k-picker-wrap.k-state-border-up .k-selected-color,
-.k-numeric-wrap.k-state-border-up .k-input {
-  border-radius: 0 0 0 2px;
-}
-.k-multiselect.k-state-border-up .k-multiselect-wrap {
-  border-radius: 0 0 2px 2px;
-}
-.k-window-titlebar,
-.k-block > .k-header,
-.k-tabstrip-items .k-item,
-.k-panelbar .k-tabstrip-items .k-item,
-.k-tabstrip-items .k-link,
-.k-calendar-container.k-state-border-down,
-.k-list-container.k-state-border-down,
-.k-autocomplete.k-state-border-down,
-.k-multiselect.k-state-border-down,
-.k-dropdown-wrap.k-state-border-down,
-.k-picker-wrap.k-state-border-down,
-.k-numeric-wrap.k-state-border-down {
-  border-radius: 2px 2px 0 0;
-}
-.k-split-button.k-state-border-down > .k-button {
-  border-radius: 2px 0 0 0;
-}
-.k-split-button.k-state-border-up > .k-button {
-  border-radius: 0 0 0 2px;
-}
-.k-split-button.k-state-border-down > .k-split-button-arrow {
-  border-radius: 0 2px 0 0;
-}
-.k-split-button.k-state-border-up > .k-split-button-arrow {
-  border-radius: 0 0 2px 0;
-}
-.k-dropdown-wrap .k-input,
-.k-picker-wrap .k-input,
-.k-numeric-wrap .k-input {
-  border-radius: 1px 0 0 1px;
-}
-.k-rtl .k-dropdown-wrap .k-input,
-.k-rtl .k-picker-wrap .k-input,
-.k-rtl .k-numeric-wrap .k-input {
-  border-radius: 0 1px 1px 0;
-}
-.k-numeric-wrap .k-link {
-  border-radius: 0 1px 0 0;
-}
-.k-numeric-wrap .k-link + .k-link {
-  border-radius: 0 0 1px 0;
-}
-.k-colorpicker .k-selected-color {
-  border-radius: 1px 0 0 1px;
-}
-.k-rtl .k-colorpicker .k-selected-color {
-  border-radius: 0 1px 1px 0;
-}
-.k-autocomplete.k-state-border-down .k-input {
-  border-radius: 2px 2px 0 0;
-}
-.k-dropdown-wrap.k-state-border-down .k-input,
-.k-picker-wrap.k-state-border-down .k-input,
-.k-picker-wrap.k-state-border-down .k-selected-color,
-.k-numeric-wrap.k-state-border-down .k-input {
-  border-radius: 2px 0 0 0;
-}
-.k-numeric-wrap .k-link.k-state-selected {
-  background-color: #ebebeb;
-}
-.k-multiselect.k-state-border-down .k-multiselect-wrap {
-  border-radius: 1px 1px 0 0;
-}
-.k-dropdown-wrap .k-select,
-.k-picker-wrap .k-select,
-.k-numeric-wrap .k-select,
-.k-datetimepicker .k-select + .k-select,
-.k-list-container.k-state-border-right {
-  border-radius: 0 2px 2px 0;
-}
-.k-rtl .k-dropdown-wrap .k-select,
-.k-rtl .k-picker-wrap .k-select,
-.k-rtl .k-numeric-wrap .k-select,
-.k-rtl .k-datetimepicker .k-select + .k-select,
-.k-rtl .k-list-container.k-state-border-right {
-  border-radius: 2px 0 0 2px;
-}
-.k-numeric-wrap.k-expand-padding .k-input {
-  border-radius: 2px;
-}
-.k-textbox > input,
-.k-autocomplete .k-input,
-.k-multiselect-wrap {
-  border-radius: 1px;
-}
-.k-list .k-state-hover,
-.k-list .k-state-focused,
-.k-list .k-state-highlight,
-.k-list .k-state-selected,
-.k-fieldselector .k-list .k-item,
-.k-list-optionlabel,
-.k-dropzone,
-.k-listbox .k-item {
-  border-radius: 1px;
-}
-.k-slider .k-button,
-.k-grid .k-slider .k-button {
-  border-radius: 13px;
-}
-.k-draghandle {
-  border-radius: 13px;
-}
-.k-scheduler-toolbar > ul li:first-child,
-.k-scheduler-toolbar > ul li:first-child .k-link,
-.k-scheduler-toolbar > ul.k-scheduler-views li:first-child + li,
-.k-scheduler-toolbar > ul.k-scheduler-views li:first-child + li .k-link {
-  border-radius: 2px 0 0 2px;
-}
-.k-rtl .k-scheduler-toolbar > ul li:first-child,
-.k-rtl .k-scheduler-toolbar > ul li:first-child .k-link,
-.k-rtl .k-scheduler-toolbar > ul.k-scheduler-views li:first-child + li,
-.k-rtl .k-scheduler-toolbar > ul.k-scheduler-views li:first-child + li .k-link,
-.km-view.k-popup-edit-form .k-scheduler-toolbar > ul li:last-child,
-.km-view.k-popup-edit-form .k-scheduler-toolbar > ul li:last-child .k-link {
-  border-radius: 0 2px 2px 0;
-}
-.k-scheduler-phone .k-scheduler-toolbar > ul li.k-nav-today,
-.k-scheduler-phone .k-scheduler-toolbar > ul li.k-nav-today .k-link,
-.k-edit-field > .k-scheduler-navigation {
-  border-radius: 2px;
-}
-.k-scheduler-toolbar .k-nav-next,
-.k-scheduler-toolbar ul + ul li:last-child,
-.k-scheduler-toolbar .k-nav-next .k-link,
-.k-scheduler-toolbar ul + ul li:last-child .k-link {
-  border-top-right-radius: 2px;
-  border-bottom-right-radius: 2px;
-}
-.k-rtl .k-scheduler-toolbar .k-nav-next,
-.k-rtl .k-scheduler-toolbar ul + ul li:last-child,
-.k-rtl .k-scheduler-toolbar .k-nav-next .k-link,
-.k-rtl .k-scheduler-toolbar ul + ul li:last-child .k-link {
-  border-radius: 2px 0 0 2px;
-}
-.k-scheduler div.k-scheduler-footer ul li,
-.k-scheduler div.k-scheduler-footer .k-link {
-  border-radius: 2px;
-}
-.k-more-events,
-.k-event,
-.k-task-single,
-.k-task-complete,
-.k-event .k-link {
-  border-radius: 1px;
-}
-.k-scheduler-mobile .k-event {
-  border-radius: 0px;
-}
-/* Adaptive Grid */
-.k-grid-mobile .k-column-active + th.k-header {
-  border-left-color: #444444;
-}
-html .km-pane-wrapper .km-widget,
-.k-ie .km-pane-wrapper .k-widget,
-.k-ie .km-pane-wrapper .k-group,
-.k-ie .km-pane-wrapper .k-content,
-.k-ie .km-pane-wrapper .k-header,
-.k-ie .km-pane-wrapper .k-popup-edit-form .k-edit-field .k-button,
-.km-pane-wrapper .k-mobile-list .k-item,
-.km-pane-wrapper .k-mobile-list .k-edit-label,
-.km-pane-wrapper .k-mobile-list .k-edit-field {
-  color: #444444;
-}
-@media screen and (-ms-high-contrast: active) and (-ms-high-contrast: none) {
-  div.km-pane-wrapper a {
-    color: #444444;
-  }
-}
-.km-pane-wrapper .k-mobile-list .k-item,
-.km-pane-wrapper .k-mobile-list .k-edit-field,
-.km-pane-wrapper .k-mobile-list .k-recur-view > .k-edit-field .k-check {
-  background-color: #fff;
-  border-top: 1px solid #e7e7e7;
-}
-.km-pane-wrapper .k-mobile-list .k-edit-field textarea {
-  outline-width: 0;
-}
-.km-pane-wrapper .k-mobile-list .k-item.k-state-selected {
-  background-color: #fff;
-  border-top-color: #ffffff;
-}
-.km-pane-wrapper .k-mobile-list .k-recur-view > .k-edit-field .k-check:first-child {
-  border-top-color: transparent;
-}
-.km-pane-wrapper .k-mobile-list .k-item:last-child {
-  box-shadow: inset 0 -1px 0 #e7e7e7;
-}
-.km-pane-wrapper .k-mobile-list > ul > li > .k-link,
-.km-pane-wrapper .k-mobile-list .k-recur-view > .k-edit-label:nth-child(3),
-.km-pane-wrapper #recurrence .km-scroll-container > .k-edit-label:first-child {
-  color: #9b9b9b;
-}
-.km-pane-wrapper .k-mobile-list > ul > li > .k-link {
-  border-bottom: 1px solid #e7e7e7;
-}
-.km-pane-wrapper .k-mobile-list .k-edit-field {
-  box-shadow: 0 1px 1px #e7e7e7;
-}
-.km-actionsheet .k-grid-delete,
-.km-actionsheet .k-scheduler-delete,
-.km-pane-wrapper .k-scheduler-delete,
-.km-pane-wrapper .k-filter-menu .k-button[type=reset] {
-  color: #fff;
-  border-color: #eed3d7;
-  background-color: red;
-  background-image: linear-gradient(to bottom, rgba(255, 255, 255, 0.3), rgba(255, 255, 255, 0.15));
-}
-.km-actionsheet .k-grid-delete:active,
-.km-actionsheet .k-scheduler-delete:active,
-.km-pane-wrapper .k-scheduler-delete:active,
-.km-pane-wrapper .k-filter-menu .k-button[type=reset]:active {
-  background-color: #990000;
-}
-/* /Column Menu */
-.k-autocomplete.k-state-default,
-.k-picker-wrap.k-state-default,
-.k-numeric-wrap.k-state-default,
-.k-dropdown-wrap.k-state-default {
-  background-image: none;
-  background-position: 50% 50%;
-  color: #444444;
-  background-color: #fafafa;
-  border-color: #f0f0f0;
-}
-.k-autocomplete.k-state-hover,
-.k-picker-wrap.k-state-hover,
-.k-numeric-wrap.k-state-hover,
-.k-dropdown-wrap.k-state-hover {
-  background-color: #ffffff;
-  background-image: none;
-  background-position: 50% 50%;
-  border-color: #f5f5f5;
-}
-.k-multiselect.k-header {
-  border-color: #f0f0f0;
-}
-.k-multiselect.k-header.k-state-hover {
-  border-color: #f5f5f5;
-}
-.k-autocomplete.k-state-focused,
-.k-picker-wrap.k-state-focused,
-.k-numeric-wrap.k-state-focused,
-.k-dropdown-wrap.k-state-focused,
-.k-multiselect.k-header.k-state-focused {
-  background-color: #ffffff;
-  background-image: none;
-  background-position: 50% 50%;
-  border-color: #f5f5f5;
-  box-shadow: 0 2px 6px rgba(0, 0, 0, 0.2), 0 2px 3px rgba(0, 0, 0, 0.05);
-}
-.k-list-container {
-  color: #444444;
-}
-.k-nodata {
-  color: #999999;
-}
-.k-dropdown .k-input,
-.k-dropdown .k-state-focused .k-input,
-.k-menu .k-popup {
-  color: #444444;
-}
-.k-state-default > .k-select {
-  border-color: #f0f0f0;
-}
-.k-state-focused > .k-select {
-  border-color: #f5f5f5;
-}
-.k-state-hover > .k-select {
-  border-color: #f5f5f5;
-}
-.k-tabstrip:focus {
-  box-shadow: 0 2px 6px rgba(0, 0, 0, 0.2), 0 2px 3px rgba(0, 0, 0, 0.05);
-}
-.k-tabstrip-items .k-state-default .k-link,
-.k-panelbar > li.k-state-default > .k-link {
-  color: #ffffff;
-}
-.k-tabstrip-items .k-state-hover .k-link,
-.k-panelbar > li.k-state-hover > .k-link,
-.k-panelbar > li.k-state-default > .k-link.k-state-hover {
-  color: #444444;
-}
-.k-panelbar > li > .k-state-focused.k-state-hover {
-  background: #ebebeb;
-  box-shadow: none;
-}
-.k-tabstrip-items .k-state-default,
-.k-panelbar .k-tabstrip-items .k-state-default {
-  border-color: transparent;
-}
-.k-tabstrip-items .k-state-hover {
-  border-color: #ebebeb;
-}
-.k-tabstrip .k-content.k-state-active {
-  background-color: #fff;
-  color: #444444;
-}
-.k-menu.k-header,
-.k-menu .k-item {
-  border-color: #e6e6e6;
-}
-.k-column-menu,
-.k-column-menu .k-item,
-.k-overflow-container .k-overflow-group {
-  border-color: #cccccc;
-}
-.k-overflow-container .k-overflow-group {
-  box-shadow: inset 0 1px 0 #ffffff, 0 1px 0 #ffffff;
-}
-.k-toolbar-first-visible.k-overflow-group,
-.k-overflow-container .k-overflow-group + .k-overflow-group {
-  box-shadow: 0 1px 0 #ffffff;
-}
-.k-toolbar-last-visible.k-overflow-group {
-  box-shadow: inset 0 1px 0 #ffffff;
-}
-.k-column-menu .k-separator {
-  border-color: #cccccc;
-  background-color: transparent;
-}
-.k-menu .k-group {
-  border-color: rgba(0, 0, 0, 0.2);
-}
-.k-grid-filter.k-state-active {
-  background-color: #ffffff;
-}
-.k-grouping-row td,
-.k-group-footer td,
-.k-grid-footer td {
-  color: #ffffff;
-  border-color: #cccccc;
-  font-weight: bold;
-}
-.k-grouping-header {
-  color: #ffffff;
-}
-.k-header,
-.k-grid-header-wrap,
-.k-grid .k-grouping-header,
-.k-grid-header,
-.k-pager-wrap,
-.k-pager-wrap .k-textbox,
-.k-pager-wrap .k-link,
-.k-grouping-header .k-group-indicator,
-.k-gantt-toolbar .k-state-default {
-  border-color: #cccccc;
-}
-.k-primary,
-.k-overflow-container .k-primary {
-  color: #ffffff;
-  border-color: #3f51b5;
-  background-image: none;
-  background-position: 50% 50%;
-  background-color: #3f51b5;
-  box-shadow: none;
-}
-.k-primary:focus,
-.k-primary.k-state-focused {
-  color: #ffffff;
-  border-color: #eff8ff;
-  background-image: none;
-  box-shadow: 0 0 8px 0 #cfe6f8;
-}
-.k-primary:hover {
-  color: #ffffff;
-  border-color: #5c6bc0;
-  background-image: none;
-  background-color: #5c6bc0;
-  box-shadow: none;
-}
-.k-primary:focus:active:not(.k-state-disabled):not([disabled]),
-.k-primary:focus:not(.k-state-disabled):not([disabled]) {
-  box-shadow: 0 0 8px 0 #cfe6f8;
-}
-.k-primary:active {
-  color: #ffffff;
-  border-color: #283593;
-  background-image: none;
-  background-color: #283593;
-  box-shadow: 0 6px 17px 0 rgba(0, 0, 0, 0.3);
-}
-.k-primary.k-state-disabled,
-.k-state-disabled .k-primary,
-.k-primary.k-state-disabled:hover,
-.k-state-disabled .k-primary:hover,
-.k-primary.k-state-disabled:hover,
-.k-state-disabled .k-primary:active,
-.k-primary.k-state-disabled:active {
-  color: #a8a8a8;
-  border-color: #eaeaea;
-  background-color: #eaeaea;
-  background-image: none;
-  box-shadow: none;
-}
-.k-pager-numbers .k-link,
-.k-treeview .k-in {
-  border-color: transparent;
-}
-.k-treeview .k-icon,
-.k-scheduler-table .k-icon,
-.k-grid .k-hierarchy-cell .k-icon {
-  background-color: transparent;
-  border-radius: 50%;
-}
-.k-scheduler-table .k-state-hover .k-icon {
-  background-color: transparent;
-}
-.k-button:focus,
-.k-split-button:focus {
-  outline: none;
-}
-.k-split-button:focus {
-  background-color: #dbdbdb;
-}
-.k-split-button:focus > .k-button {
-  background: transparent;
-  border-color: #dbdbdb;
-}
-.k-split-button:focus > .k-button.k-split-button-arrow {
-  border-left-color: #f2f2f2;
-}
-.k-editor .k-tool {
-  color: inherit;
-}
-.k-editor .k-tool:focus {
-  outline: 0;
-  border-color: #dbdbdb;
-  box-shadow: 0 6px 17px 0 #c4c4c4;
-}
-.k-checkbox-label:before {
-  border-color: #7f7f7f;
-  background: #fff;
-  border-radius: 1px;
-}
-.k-checkbox:hover + .k-checkbox-label:before,
-.k-checkbox:checked:hover + .k-checkbox-label:before,
-.k-checkbox-label:hover:before,
-.k-checkbox:checked + .k-checkbox-label:hover:before {
-  border-color: #7f7f7f;
-  box-shadow: none;
-}
-.k-checkbox:checked + .k-checkbox-label:before {
-  background-color: #3f51b5;
-  border-color: #3f51b5;
-  color: #ffffff;
-}
-.k-checkbox:active + .k-checkbox-label:before,
-.k-checkbox-label:active:before {
-  box-shadow: none;
-  border-color: #7f7f7f;
-}
-.k-checkbox:checked:active + .k-checkbox-label:before,
-.k-checkbox:checked + .k-checkbox-label:before {
-  box-shadow: none;
-  border-color: #7f7f7f;
-}
-.k-checkbox:disabled + .k-checkbox-label {
-  color: #999999;
-}
-.k-checkbox:disabled + .k-checkbox-label:hover:before {
-  box-shadow: none;
-}
-.k-checkbox:disabled + .k-checkbox-label:before,
-.k-checkbox:checked:disabled + .k-checkbox-label:before,
-.k-checkbox:checked:disabled + .k-checkbox-label:active:before,
-.k-checkbox:checked:disabled + .k-checkbox-label:hover:before {
-  color: #999999;
-  background: #f5f5f5;
-  border-color: #bfbfbf;
-  border-radius: 1px;
-}
-.k-checkbox:focus + .k-checkbox-label:before {
-  border-color: #7f7f7f;
-  box-shadow: none;
-}
-.k-checkbox:indeterminate + .k-checkbox-label:after {
-  background-color: #3f51b5;
-  background-image: none;
-  border-color: #3f51b5;
-  border-radius: 0px;
-}
-.k-checkbox:indeterminate:hover + .k-checkbox-label:after {
-  border-color: #3f51b5;
-  background-color: #3f51b5;
-}
-.k-checkbox + .k-checkbox-label:after {
-  content: "";
-  position: absolute;
-  top: 1px;
-  left: 1px;
-  border-radius: 50%;
-  width: 1em;
-  height: 1em;
-}
-.k-checkbox:focus + .k-checkbox-label:after {
-  box-shadow: 0 0 0 12px rgba(235, 235, 235, 0.3);
-}
-.k-checkbox:active + .k-checkbox-label:after,
-.k-checkbox + .k-checkbox-label:active:after {
-  box-shadow: 0 0 0 12px rgba(235, 235, 235, 0.3);
-}
-.k-checkbox:checked:active + .k-checkbox-label:after,
-.k-checkbox:checked + .k-checkbox-label:active:after {
-  box-shadow: 0 0 0 12px rgba(63, 81, 181, 0.3);
-}
-.k-checkbox:disabled + .k-checkbox-label:active:after {
-  box-shadow: none;
-}
-.k-checkbox:indeterminate + .k-checkbox-label:before {
-  border-color: #3f51b5;
-}
-.k-radio-label:before {
-  border-color: #7f7f7f;
-  border-radius: 50%;
-  background-color: #fff;
-  border-width: 2px;
-}
-.k-radio-label:hover:before,
-.k-radio:checked + .k-radio-label:hover:before {
-  border-color: #7f7f7f;
-  box-shadow: none;
-}
-.k-radio:checked + .k-radio-label:after {
-  background-color: #3f51b5;
-  border-radius: 50%;
-}
-.k-radio-label:active:before {
-  border-color: #6b7acb;
-  box-shadow: 0 0 2px 0 #6b7acb;
-}
-.k-radio:checked + .k-radio-label:active:before {
-  box-shadow: 0 0 2px 0 #6b7acb;
-  border-color: #6b7acb;
-}
-.k-radio:disabled + .k-radio-label {
-  color: #bfbfbf;
-}
-.k-radio:disabled + .k-radio-label:before,
-.k-radio:disabled + .k-radio-label:active:before,
-.k-radio:disabled + .k-radio-label:hover:after,
-.k-radio:disabled + .k-radio-label:hover:before {
-  background: #ffffff;
-  border-color: #bfbfbf;
-  box-shadow: none;
-}
-.k-radio:disabled:checked + .k-radio-label:after {
-  background-color: #3f51b5;
-  opacity: .5;
-}
-.k-radio:focus + .k-radio-label:before {
-  border-color: #6b7acb;
-  box-shadow: 0 0 2px 0 #6b7acb;
-}
-.k-radio:checked + .k-radio-label:before,
-.k-radio:checked + .k-radio-label:hover:before {
-  border-color: #3f51b5;
-}
-.k-radio + .k-radio-label:active:before {
-  border-color: #7f7f7f;
-  box-shadow: 0 0 0 12px rgba(235, 235, 235, 0.3);
-}
-.k-radio:checked + .k-radio-label:active:before {
-  box-shadow: 0 0 0 12px rgba(63, 81, 181, 0.3);
-}
-.k-radio:focus + .k-radio-label:before {
-  border-color: #7f7f7f;
-  box-shadow: 0 0 0 12px rgba(235, 235, 235, 0.3);
-}
-.k-radio:disabled:checked + .k-radio-label:before,
-.k-radio:disabled:checked + .k-radio-label:hover:before {
-  border-color: #bfbfbf;
-}
-.k-radio:disabled:checked + .k-radio-label:active:before {
-  box-shadow: none;
-}
-@media screen and (-ms-high-contrast: active) {
-  .k-editor-toolbar-wrap .k-dropdown-wrap.k-state-focused,
-  .k-editor-toolbar-wrap .k-button-group .k-tool:focus {
-    border-color: #fff;
-  }
-}
-.k-button:hover .k-icon,
-.k-tool-icon:hover,
-.k-state-hover .k-tool-icon,
-.k-state-selected .k-tool-icon,
-.k-state-focused .k-tool-icon,
-.k-button:hover .k-tool-icon,
-.k-splitbar.k-splitbar-horizontal-hover .k-icon,
-.k-splitbar.k-splitbar-vertical-hover .k-icon,
-div.k-splitbar.k-state-focused .k-icon,
-.k-textbox:hover > .k-icon,
-.k-grouping-header .k-i-delete,
-.k-grouping-header .k-button-icon:hover > .k-icon.k-i-delete,
-.k-grouping-header .k-i-delete,
-.k-grouping-header .k-button-icon:hover > .k-icon.k-i-delete,
-.k-grouping-header .k-i-arrow-60-up,
-.k-grouping-header .k-link:hover > .k-icon.k-i-arrow-60-up,
-.k-grouping-header .k-i-arrow-60-up,
-.k-grouping-header .k-link:hover > .k-icon.k-i-arrow-60-up,
-.k-grouping-header .k-i-arrow-60-down,
-.k-grouping-header .k-link:hover > .k-icon.k-i-arrow-60-down,
-.k-grouping-header .k-i-arrow-60-down,
-.k-grouping-header .k-link:hover > .k-icon.k-i-arrow-60-down,
-.k-grid-toolbar .k-i-file-pdf,
-.k-grid-toolbar .k-button:hover > .k-i-file-pdf,
-.k-grid-toolbar .k-i-file-excel,
-.k-grid-toolbar .k-button:hover > .k-i-file-excel,
-.k-grid-toolbar .k-icon,
-.k-scheduler-toolbar .k-icon,
-.k-scheduler-footer .k-icon,
-.k-scheduler-content .k-icon,
-.k-gantt-toolbar .k-icon,
-.k-field-actions .k-icon,
-.k-notification .k-icon,
-.k-pivot-configurator-settings .k-icon:hover,
-.k-window-titlebar .k-icon {
-  opacity: 1;
-}
-.k-splitbar .k-icon,
-.k-pivot-configurator-settings .k-icon {
-  opacity: 0.7;
-}
-.k-pager-wrap .k-link.k-state-disabled .k-icon {
-  opacity: 0.25;
-}
-.k-button,
-.k-button:hover,
-.k-button.k-state-hover,
-.k-button.k-state-focused,
-.k-button:focus,
-.k-button:focus:not(.k-state-disabled):not([disabled]) {
-  box-shadow: 0 2px 6px rgba(0, 0, 0, 0.2), 0 2px 3px rgba(0, 0, 0, 0.05);
-}
-.k-button,
-.k-header {
-  font-weight: 500;
-}
-.k-button:active,
-.k-button.k-state-active,
-.k-button:focus,
-.k-button.k-state-focused {
-  color: #444444;
-  background-color: #dbdbdb;
-  border-color: #dbdbdb;
-}
-.k-button:active:hover,
-.k-button.k-state-active:hover {
-  color: #444444;
-  border-color: #dbdbdb;
-  background-color: #dbdbdb;
-  box-shadow: 0 6px 17px 0 rgba(235, 235, 235, 0.3);
-}
-.k-button:hover,
-.k-button.k-state-hover,
-.k-button:active:hover,
-.k-button.k-state-active:hover {
-  color: #444444;
-  border-color: #ebebeb;
-  background-color: #ebebeb;
-}
-.k-primary:active,
-.k-primary.k-state-active,
-.k-primary:focus,
-.k-primary.k-state-focused {
-  color: #ffffff;
-  border-color: #283593;
-  background-image: none;
-  background-color: #283593;
-  box-shadow: 0 6px 17px 0 rgba(0, 0, 0, 0.3);
-}
-.k-primary:hover,
-.k-primary.k-state-hover,
-.k-primary:active:hover,
-.k-primary.k-state-active:hover {
-  color: #ffffff;
-  border-color: #5c6bc0;
-  background-color: #5c6bc0;
-}
-.k-primary:focus:not(.k-state-disabled):not([disabled]),
-.k-primary:focus:active:not(.k-state-disabled):not([disabled]) {
-  box-shadow: 0 6px 17px 0 rgba(0, 0, 0, 0.3);
-}
-.k-primary.k-state-disabled,
-.k-state-disabled .k-primary,
-.k-primary.k-state-disabled:hover,
-.k-state-disabled .k-primary:hover,
-.k-primary.k-state-disabled:hover,
-.k-state-disabled .k-primary:active,
-.k-primary.k-state-disabled:active {
-  color: #a8a8a8;
-  border-color: #eaeaea;
-  background-color: #eaeaea;
-  background-image: none;
-  box-shadow: none;
-}
-.k-widget .k-button:active,
-.k-widget .k-button.k-state-active {
-  color: #444444;
-  background-color: #dbdbdb;
-  border-color: #ebebeb;
-}
-.k-toolbar .k-overflow-anchor.k-state-active,
-.k-toolbar .k-overflow-anchor.k-state-border-down {
-  background-color: #ffffff;
-}
-.k-widget .k-button:active:hover,
-.k-widget .k-button.k-state-active:hover {
-  color: #444444;
-  border-color: #ebebeb;
-  background-color: #ebebeb;
-}
-.k-button[disabled],
-.k-button.k-state-disabled,
-.k-state-disabled .k-button,
-.k-state-disabled .k-button:hover,
-.k-button.k-state-disabled:hover,
-.k-state-disabled .k-button:active,
-.k-button.k-state-disabled:active,
-.k-button.k-state-disabled:active:hover,
-.k-listbox .k-button.k-state-disabled {
-  color: #999999;
-  border-color: #fafafa;
-  background-color: #fafafa;
-  background-image: none;
-  box-shadow: none;
-}
-.k-dropdown .k-state-default {
-  border-color: #fafafa;
-  background-image: none;
-  background-position: 50% 50%;
-  background-color: #fafafa;
-}
-.k-dropdown,
-span.k-colorpicker {
-  background-color: #fafafa;
-}
-.k-textbox {
-  background-color: #fafafa;
-  border-color: #f0f0f0;
-}
-.k-combobox,
-.k-datepicker,
-.k-timepicker,
-.k-datetimepicker {
-  background-color: #fafafa;
-}
-.k-picker-wrap.k-state-default > .k-select {
-  border-color: #fafafa;
-}
-.k-datepicker .k-input,
-.k-timepicker .k-input {
-  background-color: #fafafa;
-}
-.k-autocomplete.k-state-active .k-input,
-.k-picker-wrap.k-state-active .k-input,
-.k-numeric-wrap.k-state-active .k-input {
-  background-color: #fff;
-}
-.k-picker-wrap.k-state-hover > .k-select,
-.k-picker-wrap.k-state-focused > .k-select {
-  border-color: #ffffff;
-}
-.k-picker-wrap.k-state-hover .k-input,
-.k-picker-wrap.k-state-focused .k-input {
-  background-color: #ffffff;
-}
-.k-textbox:hover,
-.k-overflow-anchor:hover,
-.k-autocomplete.k-state-hover,
-.k-picker-wrap.k-state-hover,
-.k-numeric-wrap.k-state-hover,
-.k-dropdown-wrap.k-state-hover {
-  background-color: #fff;
-  border-color: #f5f5f5;
-  box-shadow: 0 2px 6px rgba(0, 0, 0, 0.2), 0 2px 3px rgba(0, 0, 0, 0.05);
-}
-.k-textbox:focus,
-.k-autocomplete.k-state-focused,
-.k-picker-wrap.k-state-focused,
-.k-numeric-wrap.k-state-focused,
-.k-dropdown-wrap.k-state-focused,
-.k-multiselect.k-header.k-state-focused {
-  background-color: #ebebeb;
-  background-image: none;
-  background-position: 50% 50%;
-  border-color: #ebebeb;
-  box-shadow: 0 2px 6px rgba(0, 0, 0, 0.2), 0 2px 3px rgba(0, 0, 0, 0.05);
-}
-.k-numeric-wrap.k-state-focused > .k-select {
-  background-color: #ebebeb;
-}
-.k-textbox:focus,
-.k-autocomplete.k-state-active,
-.k-picker-wrap.k-state-active,
-.k-numeric-wrap.k-state-active,
-.k-dropdown-wrap.k-state-active,
-.k-multiselect.k-header.k-state-active {
-  background-color: #fff;
-  background-image: none;
-  background-position: 50% 50%;
-  border-color: #f5f5f5;
-  box-shadow: 0 2px 6px rgba(0, 0, 0, 0.2), 0 2px 3px rgba(0, 0, 0, 0.05);
-}
-.k-autocomplete.k-state-disabled,
-.k-picker-wrap.k-state-disabled,
-.k-numeric-wrap.k-state-disabled,
-.k-numeric-wrap.k-state-disabled .k-input,
-.k-numeric-wrap.k-state-disabled .k-select,
-.k-dropdown-wrap.k-state-disabled,
-.k-multiselect.k-header.k-state-disabled {
-  background-color: #fafafa;
-}
-.k-numeric-wrap.k-state-disabled .k-select {
-  border-color: #fafafa;
-}
-.k-numerictextbox .k-select {
-  background-color: #fff;
-  border-color: #fff;
-}
-.k-list > .k-state-selected.k-state-focused {
-  box-shadow: none;
-  color: #3f51b5;
-}
-.k-list > .k-state-selected {
-  box-shadow: none;
-}
-.k-list > .k-state-focused {
-  border-color: transparent;
-  box-shadow: none;
-}
-.k-list > .k-state-hover,
-.k-list > .k-state-selected.k-state-hover {
-  background-color: #ebebeb;
-  border-color: #ebebeb;
-}
-.k-list-container {
-  border-color: #ebebeb;
-}
-.k-grid td.k-state-focused.k-state-selected {
-  box-shadow: inset 0 0 0 1px #808080;
-}
-.k-calendar td.k-state-focused,
-.k-calendar td.k-state-selected.k-state-focused {
-  box-shadow: inset 0 0 0 1px #808080;
-}
-.k-calendar td.k-state-selected {
-  background-color: #00b0ff;
-  box-shadow: none;
-}
-.k-calendar td.k-state-selected.k-state-hover {
-  background-color: #00a2eb;
-}
-.k-calendar .k-state-selected > .k-link {
-  color: #fff;
-}
-/* Calendar */
-.k-calendar .k-header .k-link {
-  color: #ffffff;
-}
-.k-calendar .k-footer {
-  border-color: #e6e6e6;
-}
-.k-calendar td {
-  border-radius: 50%;
-}
-.k-calendar .k-content th {
-  background-color: #fff;
-}
-.k-calendar .k-alt {
-  border-radius: 0;
-  background-color: #f2f2f2;
-}
-.k-calendar .k-header .k-state-hover {
-  background-color: #32408f;
-}
-.k-calendar .k-footer .k-nav-today {
-  color: #3f51b5;
-}
-.k-calendar .k-nav-fast.k-state-hover {
-  border-radius: 0;
-}
-.k-calendar .k-today {
-  background-color: #3f51b5;
-}
-.k-calendar .k-today .k-link {
-  color: #fff;
-}
-.k-calendar .k-today.k-state-hover {
-  background-color: #32408f;
-}
-.k-calendar .k-today:active {
-  box-shadow: inset 0 0 0 1px #2b387c;
-}
-.k-calendar .k-link.k-state-hover,
-.k-window-titlebar .k-link {
-  box-shadow: none;
-}
-.k-window-titlebar .k-state-hover {
-  background-color: #5c6dc4;
-  border-color: #5c6dc4;
-}
-/* TabStrip */
-.k-tabstrip > .k-tabstrip-items > .k-item {
-  border-radius: 0;
-}
-.k-tabstrip-items .k-state-active,
-.k-panelbar .k-tabstrip-items .k-state-active {
-  background-color: #3f51b5;
-  background-image: none;
-  border-bottom-color: #00b0ff;
-}
-.k-tabstrip .k-content.k-state-active {
-  border-color: transparent;
-}
-.k-tabstrip-items .k-item.k-state-hover {
-  background: #5c6dc4;
-  border-color: #5c6dc4;
-}
-.k-tabstrip-items .k-state-hover .k-link {
-  color: #ffffff;
-}
-/* Menu */
-.k-group,
-.k-flatcolorpicker.k-group,
-.k-menu,
-.k-menu .k-group,
-.k-popup.k-widget.k-context-menu {
-  color: #444444;
-  background-color: #fff;
-}
-.k-menu .k-group,
-.k-popup.k-context-menu.k-group {
-  border-color: #e6e6e6;
-}
-.k-menu.k-header,
-.k-menu .k-item,
-.k-widget.k-menu-horizontal > .k-item {
-  box-shadow: none;
-}
-.k-menu .k-state-active,
-.k-popup.k-context-menu.k-group .k-state-hover {
-  background-color: #ebebeb;
-  border-color: #ebebeb;
-}
-/* Toolbar */
-.k-toolbar {
-  background-color: #fafafa;
-  border-color: #e6e6e6;
-}
-.k-toolbar .k-toggle-button:focus {
-  background-color: transparent;
-  border-color: #b3b3b3;
-}
-.k-toolbar .k-toggle-button:hover {
-  background-color: #ebebeb;
-}
-.k-toolbar .k-toggle-button.k-state-active {
-  color: #fff;
-  background-color: #3f51b5;
-  border-color: #3f51b5;
-}
-.k-toolbar .k-toggle-button.k-state-active:focus {
-  background-color: #3f51b5;
-  border-color: #2b387c;
-}
-.k-toolbar .k-toggle-button.k-state-active:hover {
-  color: #fff;
-  background-color: #32408f;
-  border-color: #32408f;
-}
-.k-mediaplayer-toolbar {
-  background: rgba(250, 250, 250, 0.85);
-}
-.k-toolbar .k-button {
-  box-shadow: none;
-}
-.k-ie .k-toolbar .k-input {
-  height: 2.2em;
-}
-.k-grid .k-header .k-button,
-.k-scheduler .k-header .k-button,
-.k-scheduler .k-header li,
-.k-scheduler .k-header .k-link,
-.k-gantt > .k-header li,
-.k-gantt > .k-header .k-link,
-.k-gantt-toolbar .k-button,
-.km-pane-wrapper .k-header .k-button {
-  color: #ffffff;
-  background-color: #3f51b5;
-  border-color: #3f51b5;
-  box-shadow: none;
-}
-.k-grid .k-header .k-button:hover,
-.k-scheduler .k-header .k-button:hover,
-.k-scheduler .k-scheduler-toolbar .k-scheduler-views li.k-state-hover,
-.k-scheduler .k-scheduler-toolbar .k-scheduler-views li.k-state-hover .k-link,
-.k-gantt .k-gantt-toolbar .k-gantt-views li.k-state-hover,
-.k-gantt .k-gantt-toolbar .k-gantt-views li.k-state-hover .k-link,
-.k-gantt .k-gantt-toolbar .k-button:hover,
-.km-pane-wrapper .k-header .k-button:hover {
-  background-color: #5c6dc4;
-  border-color: #5c6dc4;
-}
-.km-pane-wrapper .k-header .k-button:active:hover {
-  color: #ffffff;
-}
-.k-scheduler .k-scheduler-toolbar ul li.k-state-hover,
-.k-scheduler .k-scheduler-toolbar .k-state-selected,
-.k-gantt-toolbar .k-button {
-  background-color: #3f51b5;
-  border-color: #3f51b5;
-}
-.k-gantt .k-gantt-toolbar .k-button:active {
-  background: #fff;
-  box-shadow: none;
-}
-.k-gantt-toolbar > .k-gantt-views > li.k-state-selected,
-.k-gantt .k-gantt-toolbar .k-gantt-views li.k-state-selected.k-state-hover,
-.k-scheduler .k-scheduler-toolbar .k-scheduler-views li.k-state-selected.k-state-hover,
-.k-scheduler-toolbar > .k-scheduler-views > li.k-state-selected {
-  border-bottom-color: #00b0ff;
-}
-.k-scheduler-mark {
-  border-radius: 50%;
-}
-/* Grid */
-.k-grid .k-alt {
-  background-color: #fff;
-}
-.k-grouping-row td,
-td.k-group-cell,
-.k-resize-handle-inner {
-  color: #444444;
-  background-color: #f2f2f2;
-}
-.k-grouping-header .k-group-indicator,
-.k-pivot-toolbar .k-button {
-  color: #ffffff;
-  background-color: #32408f;
-  border-color: #32408f;
-  box-shadow: none;
-}
-.k-grid-header,
-.k-grid-header .k-header,
-.k-pager-wrap,
-.k-pager-numbers .k-state-selected,
-.k-grid-footer,
-.k-grid-footer td,
-.k-scheduler-header,
-.km-pane-wrapper .k-grid-header .k-header {
-  color: #444444;
-  background-color: #fafafa;
-}
-.k-header.k-scheduler-footer .k-header,
-.k-header.k-scheduler-footer ul.k-header li .k-link {
-  color: #00b0ff;
-  background-color: #fafafa;
-}
-.k-header.k-scheduler-footer ul.k-header li {
-  background-color: #fafafa;
-  border-color: #fafafa;
-}
-.k-header,
-.k-grid-header-wrap,
-.k-grid .k-grouping-header,
-.k-grid-header,
-.k-pager-wrap,
-.k-pager-wrap .k-textbox,
-.k-pager-wrap .k-link,
-.k-gantt-toolbar .k-state-default,
-.k-grouping-row td,
-.k-group-footer td,
-.k-grid-footer td {
-  border-color: #e6e6e6;
-}
-.k-group-footer td,
-.k-footer-template td,
-.k-fieldselector .k-item.k-header {
-  color: #444444;
-  background-color: #f2f2f2;
-}
-.k-grid .k-grouping-header {
-  color: rgba(255, 255, 255, 0.5);
-}
-.k-pager-wrap,
-.k-editor-toolbar {
-  color: #444444;
-}
-.k-grouping-header .k-link,
-.k-grouping-header .k-link:link {
-  color: #ffffff;
-}
-.k-scheduler-layout .k-state-selected,
-.k-scheduler .k-today.k-state-selected,
-.k-grid tr.k-state-selected,
-.k-grid td.k-state-selected,
-.k-grid td.k-state-selected.k-state-focused,
-.k-marquee-color,
-.k-gantt .k-treelist .k-state-selected,
-.k-gantt .k-treelist .k-state-selected td,
-.k-gantt .k-treelist .k-alt.k-state-selected,
-.k-gantt .k-treelist .k-alt.k-state-selected > td,
-.k-listview > .k-state-selected,
-.k-state-selected.k-line {
-  background-color: #00b0ff;
-}
-.k-state-selected.k-line {
-  color: #00b0ff;
-}
-.k-grid tr.k-state-selected,
-.k-grid td.k-state-selected,
-.k-listview > .k-state-selected,
-.k-state-selected .k-progress-status {
-  color: #fff;
-}
-.k-grid tr:hover {
-  background-color: #ebebeb;
-}
-.k-grid .k-filter-row:hover,
-.k-pivot-rowheaders .k-grid tr:hover {
-  background: none;
-}
-.k-grid td.k-state-selected,
-.k-grid tr.k-state-selected > td {
-  border-color: #008dcc;
-}
-.k-grid td.k-state-selected:hover,
-.k-grid tr.k-state-selected:hover td {
-  background-color: #00a2eb;
-}
-.k-grid-header .k-header .k-link,
-.k-grid-header .k-header,
-.k-grid-header .k-link,
-.k-grid-header .k-link:link,
-.k-pager-info,
-.k-scheduler-header,
-.k-scheduler-agendaview .k-scheduler-datecolumn {
-  color: #a8a8a8;
-}
-.k-gantt .k-task-draghandle {
-  border-color: #00b0ff;
-}
-.k-grid-pager .k-link,
-.k-grid-pager .k-link:link {
-  color: #444444;
-}
-.k-pager-numbers .k-link,
-.k-pager-wrap > .k-link {
-  border-radius: 0;
-}
-.k-pager-numbers .k-state-selected {
-  border-color: #3f51b5 transparent transparent;
-  border-radius: 0;
-  box-shadow: none;
-  color: #3f51b5;
-}
-.k-pager-wrap .k-link {
-  border-color: #fafafa;
-  cursor: pointer;
-}
-.k-pager-wrap .k-link:hover {
-  background-color: transparent;
-  border-color: transparent;
-}
-.k-scheduler-toolbar > ul li:first-child,
-.k-scheduler-toolbar > ul li:first-child .k-link,
-.k-scheduler-toolbar .k-nav-next,
-.k-scheduler-toolbar ul + ul li:last-child,
-.k-scheduler-toolbar .k-nav-next .k-link,
-.k-scheduler-toolbar ul + ul li:last-child .k-link,
-.k-gantt-toolbar li:first-child,
-.k-gantt-toolbar li:first-child > .k-link,
-.k-gantt-toolbar li:last-child,
-.k-gantt-toolbar li:last-child > .k-link {
-  border-radius: 0;
-}
-.k-grid,
-.k-panelbar,
-.k-notification,
-.k-popup .k-textbox:focus,
-.k-popup .k-autocomplete.k-state-focused,
-.k-popup .k-picker-wrap.k-state-focused,
-.k-popup .k-numeric-wrap.k-state-focused,
-.k-popup .k-dropdown-wrap.k-state-focused,
-.k-popup .k-multiselect.k-header.k-state-focused,
-.k-popup .k-textbox:hover,
-.k-popup .k-autocomplete.k-state-hover,
-.k-popup .k-picker-wrap.k-state-hover,
-.k-popup .k-numeric-wrap.k-state-hover,
-.k-popup .k-dropdown-wrap.k-state-hover {
-  box-shadow: none;
-}
-/* PanelBar */
-.k-panelbar,
-.k-panelbar .k-header,
-.k-panelbar .k-content,
-.k-panel > li.k-item,
-.k-panelbar .k-state-selected {
-  background-color: #fafafa;
-}
-.k-panelbar .k-grid-toolbar {
-  background-color: #3f51b5;
-}
-.k-panelbar > li.k-state-default > .k-link {
-  color: #444444;
-}
-.k-panelbar > li > .k-state-hover {
-  background-color: #ebebeb;
-}
-.k-panelbar > .k-item > .k-link,
-.k-panelbar.k-header,
-.k-panelbar .k-content,
-.k-panelbar .k-panel,
-.k-panelbar .k-item {
-  border-color: #e6e6e6;
-}
-/* Splitter */
-.k-splitbar {
-  border-color: #fafafa;
-}
-.k-splitbar.k-state-focused {
-  background-color: #3f51b5;
-  border-color: #3f51b5;
-  box-shadow: none;
-}
-/* Upload */
-.k-upload {
-  color: #444444;
-  background-color: #fff;
-}
-.k-upload-files .k-button {
-  box-shadow: none;
-}
-/* Gantt */
-.k-task-milestone,
-.k-task-summary-complete,
-.k-state-selected.k-task-milestone,
-.k-state-selected .k-task-summary-complete {
-  background-color: #3f51b5;
-  border-color: #3f51b5;
-}
-.k-task-single {
-  background-color: #66d0ff;
-}
-.k-task-complete {
-  background: #00b0ff 0 -257px none repeat-x;
-}
-.k-treelist .k-state-selected,
-.k-treelist .k-state-selected td,
-.k-treelist .k-alt.k-state-selected,
-.k-treelist .k-alt.k-state-selected > td {
-  background-color: #00b0ff;
-  border-color: #00b0ff;
-}
-.k-multiselect .k-button:focus:active:not(.k-state-disabled):not([disabled]),
-.k-toolbar .k-button:focus:active:not(.k-state-disabled):not([disabled]),
-.k-group-indicator .k-button,
-.k-group-indicator .k-button:focus:active:not(.k-state-disabled):not([disabled]),
-.k-group-indicator .k-button:focus:not(.k-state-disabled):not([disabled]),
-.k-gantt-toolbar .k-button:focus:not(.k-state-disabled):not([disabled]),
-.k-gantt-toolbar .k-button:focus:active:not(.k-state-disabled):not([disabled]),
-.k-toolbar .k-button:focus:not(.k-state-disabled):not([disabled]),
-.k-toolbar .k-button:focus:active:not(.k-state-disabled):not([disabled]),
-.k-toolbar .k-button:active:hover,
-.k-toolbar .k-button.k-state-active:hover {
-  box-shadow: none;
-}
-.k-multiselect .k-button:active:hover {
-  color: #444444;
-  background-color: #dbdbdb;
-  border-color: #dbdbdb;
-}
-.k-multiselect-wrap > ul > .k-button {
-  box-shadow: none;
-}
-/* Editor */
-table.k-editor {
-  border-color: #e6e6e6;
-}
-.k-editor.k-header,
-.editorToolbarWindow.k-header,
-.k-filebrowser .k-header {
-  background-color: #f2f2f2;
-  box-shadow: none;
-}
-.k-filebrowser .k-header {
-  color: #444444;
-}
-.k-editor-toolbar .k-tool,
-.k-group-start.k-group-end.k-tool {
-  border-color: #f2f2f2;
-}
-.k-treeview .k-state-selected,
-.k-treeview .k-state-focused,
-.k-editor-toolbar .k-dropdown,
-.k-panelbar > li > .k-state-focused {
-  box-shadow: none;
-}
-.k-treeview .k-state-focused,
-.k-panelbar > li > .k-state-focused {
-  background-color: #ebebeb;
-}
-.k-editor-toolbar .k-dropdown-wrap.k-state-default,
-.k-toolbar .k-dropdown-wrap.k-state-default {
-  border-color: #f2f2f2;
-}
-.k-editor-toolbar .k-tool.k-state-hover,
-.k-editor-toolbar .k-dropdown-wrap.k-state-hover,
-.k-toolbar .k-tool.k-state-hover,
-.k-toolbar .k-dropdown-wrap.k-state-hover {
-  color: #444444;
-  border-color: #ebebeb;
-  box-shadow: none;
-}
-.k-editor-toolbar .k-tool.k-state-selected,
-.k-toolbar .k-button-group .k-button.k-state-active {
-  box-shadow: none;
-  background-color: #dbdbdb;
-  border-color: #dbdbdb;
-}
-.k-editor-toolbar .k-tool.k-state-hover,
-.k-toolbar .k-button-group .k-button:hover {
-  background-color: #ebebeb;
-  border-color: #ebebeb;
-}
-/* Progressbar */
-.k-progressbar {
-  background-color: #fafafa;
-  border-color: #fafafa;
-}
-.k-progressbar .k-item,
-.k-progressbar .k-item.k-state-selected {
-  border-color: #fff;
-}
-.k-progressbar .k-state-selected {
-  background-color: #3f51b5;
-  border-color: #3f51b5;
-}
-.k-widget.k-tooltip-validation {
-  box-shadow: none;
-}
-/* Pivot Grid */
-.k-grid.k-alt {
-  background-color: #fafafa;
-}
-.k-gantt .k-treelist .k-alt,
-.k-gantt .k-header.k-nonwork-hour {
-  background-color: #f2f2f2;
-}
-.k-list > .k-state-hover,
-.k-list > .k-state-focused {
-  color: #444444;
-  background-color: #ebebeb;
-  border-color: #ebebeb;
-}
-/* Slider */
-.k-slider-track {
-  background-color: #cccccc;
-  box-shadow: none;
-}
-.k-slider-selection {
-  background-color: #3f51b5;
-  border-color: #3f51b5;
-}
-.k-slider .k-button,
-.k-slider .k-button.k-state-hover,
-.k-slider .k-button:active:hover,
-.k-slider .k-button:focus,
-.k-slider .k-button:active {
-  background: none;
-  border: none;
-  box-shadow: none;
-}
-.k-draghandle,
-.k-flatcolorpicker .k-slider-horizontal .k-slider-track {
-  box-shadow: none;
-}
-.k-flatcolorpicker .k-hue-slider .k-draghandle,
-.k-flatcolorpicker .k-transparency-slider .k-draghandle {
-  border-color: #3f51b5;
-  background-color: #3f51b5;
-  box-shadow: none;
-}
-.k-flatcolorpicker .k-hue-slider .k-draghandle:hover,
-.k-flatcolorpicker .k-transparency-slider .k-draghandle:hover {
-  border-color: #3f51b5;
-  background-color: #3f51b5;
-  box-shadow: 0 0 0 8px rgba(63, 81, 181, 0.3);
-}
-.k-draghandle.k-state-selected,
-.k-draghandle.k-state-selected:link,
-.k-draghandle.k-state-selected:hover,
-.k-flatcolorpicker .k-hue-slider .k-draghandle.k-state-selected,
-.k-flatcolorpicker .k-transparency-slider .k-draghandle.k-state-selected {
-  background-color: #cccccc;
-  border-color: #cccccc;
-}
-.k-draghandle.k-state-focused,
-.k-draghandle.k-state-focused:link,
-.k-flatcolorpicker .k-hue-slider .k-draghandle.k-state-focused,
-.k-flatcolorpicker .k-transparency-slider .k-draghandle.k-state-focused {
-  box-shadow: none;
-  border-color: #3f51b5;
-  background-color: #3f51b5;
-}
-.k-edit-form-container .k-edit-buttons {
-  background-color: #fafafa;
-}
-.k-popup .k-button,
-.k-popup .k-button:active:hover {
-  box-shadow: none;
-}
-.k-edit-form-container .k-button,
-.k-popup .k-button,
-.k-popup .k-primary:active,
-.k-popup .k-primary:active:hover,
-.k-edit-form-container .k-primary:active {
-  color: #444444;
-  background-color: #fafafa;
-  border-color: #fafafa;
-  box-shadow: none;
-}
-.k-popup .k-primary,
-.k-edit-form-container .k-primary {
-  color: #00b0ff;
-  background-color: #fafafa;
-  border-color: #fafafa;
-}
-.k-split-wrapper .k-button,
-.k-overflow-container .k-button,
-.k-filter-menu .k-button {
-  background: transparent;
-  border-color: transparent;
-}
-.k-split-wrapper .k-button,
-.k-overflow-container .k-button {
-  text-transform: none;
-}
-.k-split-wrapper .k-button:hover,
-.k-overflow-container .k-button:hover {
-  background-color: #ebebeb;
-  border-color: #ebebeb;
-}
-.k-split-wrapper .k-button:focus,
-.k-overflow-container .k-button:focus,
-.k-split-wrapper .k-button:focus:not(.k-state-disabled):not([disabled]),
-.k-overflow-container .k-button:focus:not(.k-state-disabled):not([disabled]) {
-  color: #3f51b5;
-  box-shadow: none;
-}
-.k-filter-menu .k-button {
-  background: transparent;
-  border-color: transparent;
-}
-.k-filter-menu .k-primary {
-  border-left-color: #f0f0f0;
-}
-.k-filter-menu > div > div:last-child {
-  border-color: #f0f0f0;
-}
-.k-popup .k-button:focus:active:not(.k-state-disabled):not([disabled]),
-.k-edit-form-container .k-button:focus:active:not(.k-state-disabled):not([disabled]) {
-  box-shadow: none;
-}
-.k-edit-form-container .k-scheduler-delete {
-  color: #00b0ff;
-}
-div.k-scheduler-marquee:before,
-div.k-scheduler-marquee:after {
-  border-color: #00b0ff;
-}
-.km-pane-wrapper > .km-pane > .km-view > .km-content {
-  color: #3f51b5;
-  background-color: #ffffff;
-}
-.km-pane-wrapper > .km-pane .km-content .k-mobile-list > ul > li > .k-link {
-  color: #3f51b5;
-}
-.k-popup.k-context-menu {
-  box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.2);
-}
-.k-drag-clue {
-  color: #444444;
-  background-color: #ebebeb;
-  border-color: #ebebeb;
-  box-shadow: inset 0 0 0 1px #808080;
-}
-.k-popup > .k-group-header,
-.k-popup > .k-virtual-wrap > .k-group-header {
-  color: #444444;
-}
-.k-popup .k-item > .k-group {
-  color: #444444;
-}
-/* Responsive styles */
-@media only screen and (max-width: 370px) {
-  .k-webkit .k-pager-refresh,
-  .k-ff .k-pager-refresh,
-  .k-ie11 .k-pager-refresh,
-  .k-edge .k-pager-refresh,
-  .k-safari .k-pager-refresh {
-    display: none;
-  }
-}
-@media only screen and (max-width: 590px) {
-  .k-webkit .k-pager-refresh,
-  .k-ff .k-pager-refresh,
-  .k-ie11 .k-pager-refresh,
-  .k-edge .k-pager-refresh,
-  .k-safari .k-pager-refresh {
-    margin-right: 0;
-  }
-}
-@media only screen and (max-width: 530px) {
-  .k-webkit .k-pager-sizes,
-  .k-ff .k-pager-sizes,
-  .k-ie11 .k-pager-sizes,
-  .k-edge .k-pager-sizes,
-  .k-safari .k-pager-sizes {
-    display: none;
-  }
-}
-@media only screen and (max-width: 687px) {
-  .k-webkit .k-pager-info,
-  .k-ff .k-pager-info,
-  .k-ie11 .k-pager-info,
-  .k-edge .k-pager-info,
-  .k-safari .k-pager-info {
-    display: none;
-  }
-}
-@media only screen and (max-width: 1024px) {
-  .k-scheduler-toolbar > ul.k-scheduler-views {
-    right: 13px;
-    top: 0;
-  }
-  .k-webkit,
-  .k-ff,
-  .k-ie11,
-  .k-edge,
-  .k-safari {
-    /* Responsive Scheduler */
-    /* Responsive Pager */
-  }
-  .k-webkit .k-scheduler-toolbar > ul.k-scheduler-views,
-  .k-ff .k-scheduler-toolbar > ul.k-scheduler-views,
-  .k-ie11 .k-scheduler-toolbar > ul.k-scheduler-views,
-  .k-edge .k-scheduler-toolbar > ul.k-scheduler-views,
-  .k-safari .k-scheduler-toolbar > ul.k-scheduler-views {
-    right: 13px;
-    top: 0;
-  }
-  .k-webkit .k-scheduler-toolbar > ul.k-scheduler-views > li.k-current-view,
-  .k-ff .k-scheduler-toolbar > ul.k-scheduler-views > li.k-current-view,
-  .k-ie11 .k-scheduler-toolbar > ul.k-scheduler-views > li.k-current-view,
-  .k-edge .k-scheduler-toolbar > ul.k-scheduler-views > li.k-current-view,
-  .k-safari .k-scheduler-toolbar > ul.k-scheduler-views > li.k-current-view,
-  .k-webkit .k-scheduler-toolbar > ul.k-scheduler-views > li.k-current-view:hover,
-  .k-ff .k-scheduler-toolbar > ul.k-scheduler-views > li.k-current-view:hover,
-  .k-ie11 .k-scheduler-toolbar > ul.k-scheduler-views > li.k-current-view:hover,
-  .k-edge .k-scheduler-toolbar > ul.k-scheduler-views > li.k-current-view:hover,
-  .k-safari .k-scheduler-toolbar > ul.k-scheduler-views > li.k-current-view:hover {
-    background-image: none;
-    background-position: 50% 50%;
-    background-color: transparent;
-    border-color: transparent;
-    border-radius: 2px;
-    text-align: right;
-  }
-  .k-webkit .k-scheduler-toolbar > ul.k-scheduler-views.k-state-expanded > li,
-  .k-ff .k-scheduler-toolbar > ul.k-scheduler-views.k-state-expanded > li,
-  .k-ie11 .k-scheduler-toolbar > ul.k-scheduler-views.k-state-expanded > li,
-  .k-edge .k-scheduler-toolbar > ul.k-scheduler-views.k-state-expanded > li,
-  .k-safari .k-scheduler-toolbar > ul.k-scheduler-views.k-state-expanded > li {
-    border-radius: 0;
-  }
-  .k-webkit .k-scheduler-toolbar > ul.k-scheduler-views.k-state-expanded > li.k-current-view,
-  .k-ff .k-scheduler-toolbar > ul.k-scheduler-views.k-state-expanded > li.k-current-view,
-  .k-ie11 .k-scheduler-toolbar > ul.k-scheduler-views.k-state-expanded > li.k-current-view,
-  .k-edge .k-scheduler-toolbar > ul.k-scheduler-views.k-state-expanded > li.k-current-view,
-  .k-safari .k-scheduler-toolbar > ul.k-scheduler-views.k-state-expanded > li.k-current-view {
-    border-radius: 1px 1px 0 0;
-  }
-  .k-webkit .k-scheduler-toolbar > ul li:first-child,
-  .k-ff .k-scheduler-toolbar > ul li:first-child,
-  .k-ie11 .k-scheduler-toolbar > ul li:first-child,
-  .k-edge .k-scheduler-toolbar > ul li:first-child,
-  .k-safari .k-scheduler-toolbar > ul li:first-child,
-  .k-webkit .k-scheduler-toolbar > ul li:first-child .k-link,
-  .k-ff .k-scheduler-toolbar > ul li:first-child .k-link,
-  .k-ie11 .k-scheduler-toolbar > ul li:first-child .k-link,
-  .k-edge .k-scheduler-toolbar > ul li:first-child .k-link,
-  .k-safari .k-scheduler-toolbar > ul li:first-child .k-link,
-  .k-webkit .k-scheduler-toolbar > ul.k-scheduler-views li,
-  .k-ff .k-scheduler-toolbar > ul.k-scheduler-views li,
-  .k-ie11 .k-scheduler-toolbar > ul.k-scheduler-views li,
-  .k-edge .k-scheduler-toolbar > ul.k-scheduler-views li,
-  .k-safari .k-scheduler-toolbar > ul.k-scheduler-views li,
-  .k-webkit .k-scheduler-toolbar > ul.k-scheduler-views li .k-link,
-  .k-ff .k-scheduler-toolbar > ul.k-scheduler-views li .k-link,
-  .k-ie11 .k-scheduler-toolbar > ul.k-scheduler-views li .k-link,
-  .k-edge .k-scheduler-toolbar > ul.k-scheduler-views li .k-link,
-  .k-safari .k-scheduler-toolbar > ul.k-scheduler-views li .k-link {
-    border-radius: 0;
-  }
-  .k-webkit .k-scheduler-toolbar > ul.k-scheduler-views li:last-child,
-  .k-ff .k-scheduler-toolbar > ul.k-scheduler-views li:last-child,
-  .k-ie11 .k-scheduler-toolbar > ul.k-scheduler-views li:last-child,
-  .k-edge .k-scheduler-toolbar > ul.k-scheduler-views li:last-child,
-  .k-safari .k-scheduler-toolbar > ul.k-scheduler-views li:last-child,
-  .k-webkit .k-scheduler-toolbar > ul.k-scheduler-views li:last-child .k-link,
-  .k-ff .k-scheduler-toolbar > ul.k-scheduler-views li:last-child .k-link,
-  .k-ie11 .k-scheduler-toolbar > ul.k-scheduler-views li:last-child .k-link,
-  .k-edge .k-scheduler-toolbar > ul.k-scheduler-views li:last-child .k-link,
-  .k-safari .k-scheduler-toolbar > ul.k-scheduler-views li:last-child .k-link {
-    border-radius: 0 0 1px 1px;
-  }
-  .k-webkit .k-scheduler-toolbar > ul.k-scheduler-views > li.k-current-view:hover,
-  .k-ff .k-scheduler-toolbar > ul.k-scheduler-views > li.k-current-view:hover,
-  .k-ie11 .k-scheduler-toolbar > ul.k-scheduler-views > li.k-current-view:hover,
-  .k-edge .k-scheduler-toolbar > ul.k-scheduler-views > li.k-current-view:hover,
-  .k-safari .k-scheduler-toolbar > ul.k-scheduler-views > li.k-current-view:hover {
-    border-color: transparent;
-    background-image: none;
-    background-color: transparent;
-  }
-  .k-webkit .k-scheduler-toolbar > ul.k-scheduler-views > li.k-current-view > .k-link,
-  .k-ff .k-scheduler-toolbar > ul.k-scheduler-views > li.k-current-view > .k-link,
-  .k-ie11 .k-scheduler-toolbar > ul.k-scheduler-views > li.k-current-view > .k-link,
-  .k-edge .k-scheduler-toolbar > ul.k-scheduler-views > li.k-current-view > .k-link,
-  .k-safari .k-scheduler-toolbar > ul.k-scheduler-views > li.k-current-view > .k-link,
-  .k-webkit .k-scheduler-toolbar > ul.k-scheduler-views > li.k-current-view:hover > .k-link,
-  .k-ff .k-scheduler-toolbar > ul.k-scheduler-views > li.k-current-view:hover > .k-link,
-  .k-ie11 .k-scheduler-toolbar > ul.k-scheduler-views > li.k-current-view:hover > .k-link,
-  .k-edge .k-scheduler-toolbar > ul.k-scheduler-views > li.k-current-view:hover > .k-link,
-  .k-safari .k-scheduler-toolbar > ul.k-scheduler-views > li.k-current-view:hover > .k-link {
-    color: #ffffff;
-    min-width: 20px;
-  }
-  .k-webkit .k-scheduler-views > li.k-state-selected > .k-link:after,
-  .k-ff .k-scheduler-views > li.k-state-selected > .k-link:after,
-  .k-ie11 .k-scheduler-views > li.k-state-selected > .k-link:after,
-  .k-edge .k-scheduler-views > li.k-state-selected > .k-link:after,
-  .k-safari .k-scheduler-views > li.k-state-selected > .k-link:after {
-    display: block;
-    content: "";
-    position: absolute;
-    top: 50%;
-    margin-top: -0.5em;
-    right: 0.333em;
-    width: 1.333em;
-    height: 1.333em;
-  }
-  .k-webkit .k-scheduler-toolbar > ul.k-scheduler-views.k-state-expanded,
-  .k-ff .k-scheduler-toolbar > ul.k-scheduler-views.k-state-expanded,
-  .k-ie11 .k-scheduler-toolbar > ul.k-scheduler-views.k-state-expanded,
-  .k-edge .k-scheduler-toolbar > ul.k-scheduler-views.k-state-expanded,
-  .k-safari .k-scheduler-toolbar > ul.k-scheduler-views.k-state-expanded {
-    border-width: 1px;
-    border-style: solid;
-    border-color: transparent;
-    /*@secondary-border-color*/
-    background-image: none;
-    background-color: #3f51b5;
-    border-radius: 2px;
-    box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.2);
-  }
-  .k-webkit .k-pager-wrap,
-  .k-ff .k-pager-wrap,
-  .k-ie11 .k-pager-wrap,
-  .k-edge .k-pager-wrap,
-  .k-safari .k-pager-wrap {
-    min-height: 2.56em;
-  }
-  .k-webkit .k-pager-wrap .k-pager-nav,
-  .k-ff .k-pager-wrap .k-pager-nav,
-  .k-ie11 .k-pager-wrap .k-pager-nav,
-  .k-edge .k-pager-wrap .k-pager-nav,
-  .k-safari .k-pager-wrap .k-pager-nav,
-  .k-webkit .k-pager-input,
-  .k-ff .k-pager-input,
-  .k-ie11 .k-pager-input,
-  .k-edge .k-pager-input,
-  .k-safari .k-pager-input {
-    display: inline-block;
-    vertical-align: top;
-  }
-  .k-webkit .k-pager-numbers,
-  .k-ff .k-pager-numbers,
-  .k-ie11 .k-pager-numbers,
-  .k-edge .k-pager-numbers,
-  .k-safari .k-pager-numbers,
-  .k-webkit .k-grid .k-pager-numbers,
-  .k-ff .k-grid .k-pager-numbers,
-  .k-ie11 .k-grid .k-pager-numbers,
-  .k-edge .k-grid .k-pager-numbers,
-  .k-safari .k-grid .k-pager-numbers {
-    position: absolute;
-    left: 5.6em;
-    display: inline-flex;
-    flex-direction: column-reverse;
-    overflow: visible;
-    height: auto;
-  }
-  .k-webkit .k-pager-numbers.k-state-expanded,
-  .k-ff .k-pager-numbers.k-state-expanded,
-  .k-ie11 .k-pager-numbers.k-state-expanded,
-  .k-edge .k-pager-numbers.k-state-expanded,
-  .k-safari .k-pager-numbers.k-state-expanded,
-  .k-webkit .k-grid .k-pager-numbers.k-state-expanded,
-  .k-ff .k-grid .k-pager-numbers.k-state-expanded,
-  .k-ie11 .k-grid .k-pager-numbers.k-state-expanded,
-  .k-edge .k-grid .k-pager-numbers.k-state-expanded,
-  .k-safari .k-grid .k-pager-numbers.k-state-expanded {
-    transform: translatey(-100%);
-  }
-  .k-webkit .km-pane-wrapper .k-pager-numbers,
-  .k-ff .km-pane-wrapper .k-pager-numbers,
-  .k-ie11 .km-pane-wrapper .k-pager-numbers,
-  .k-edge .km-pane-wrapper .k-pager-numbers,
-  .k-safari .km-pane-wrapper .k-pager-numbers,
-  .k-webkit .km-pane-wrapper .k-grid .k-pager-numbers,
-  .k-ff .km-pane-wrapper .k-grid .k-pager-numbers,
-  .k-ie11 .km-pane-wrapper .k-grid .k-pager-numbers,
-  .k-edge .km-pane-wrapper .k-grid .k-pager-numbers,
-  .k-safari .km-pane-wrapper .k-grid .k-pager-numbers {
-    position: relative;
-    left: 50%;
-    transform: translate(-50%, 0%);
-    -webkit-transform: translate(-50%, 0%);
-  }
-  .k-webkit .km-pane-wrapper .k-pager-numbers.k-state-expanded,
-  .k-ff .km-pane-wrapper .k-pager-numbers.k-state-expanded,
-  .k-ie11 .km-pane-wrapper .k-pager-numbers.k-state-expanded,
-  .k-edge .km-pane-wrapper .k-pager-numbers.k-state-expanded,
-  .k-safari .km-pane-wrapper .k-pager-numbers.k-state-expanded,
-  .k-webkit .km-pane-wrapper .k-grid .k-pager-numbers.k-state-expanded,
-  .k-ff .km-pane-wrapper .k-grid .k-pager-numbers.k-state-expanded,
-  .k-ie11 .km-pane-wrapper .k-grid .k-pager-numbers.k-state-expanded,
-  .k-edge .km-pane-wrapper .k-grid .k-pager-numbers.k-state-expanded,
-  .k-safari .km-pane-wrapper .k-grid .k-pager-numbers.k-state-expanded {
-    -webkit-transform: translate(-50%, -100%);
-    transform: translate(-50%, -100%);
-  }
-  .k-webkit .km-pane-wrapper .k-pager-numbers .k-link,
-  .k-ff .km-pane-wrapper .k-pager-numbers .k-link,
-  .k-ie11 .km-pane-wrapper .k-pager-numbers .k-link,
-  .k-edge .km-pane-wrapper .k-pager-numbers .k-link,
-  .k-safari .km-pane-wrapper .k-pager-numbers .k-link,
-  .k-webkit .km-pane-wrapper .k-pager-numbers .k-state-selected,
-  .k-ff .km-pane-wrapper .k-pager-numbers .k-state-selected,
-  .k-ie11 .km-pane-wrapper .k-pager-numbers .k-state-selected,
-  .k-edge .km-pane-wrapper .k-pager-numbers .k-state-selected,
-  .k-safari .km-pane-wrapper .k-pager-numbers .k-state-selected,
-  .k-webkit .km-pane-wrapper .k-pager-wrap > .k-link,
-  .k-ff .km-pane-wrapper .k-pager-wrap > .k-link,
-  .k-ie11 .km-pane-wrapper .k-pager-wrap > .k-link,
-  .k-edge .km-pane-wrapper .k-pager-wrap > .k-link,
-  .k-safari .km-pane-wrapper .k-pager-wrap > .k-link,
-  .k-webkit .km-pane-wrapper .k-pager-wrap > .k-pager-info,
-  .k-ff .km-pane-wrapper .k-pager-wrap > .k-pager-info,
-  .k-ie11 .km-pane-wrapper .k-pager-wrap > .k-pager-info,
-  .k-edge .km-pane-wrapper .k-pager-wrap > .k-pager-info,
-  .k-safari .km-pane-wrapper .k-pager-wrap > .k-pager-info {
-    padding-top: 0;
-    padding-bottom: 0;
-  }
-  .k-webkit .k-rtl .k-pager-numbers,
-  .k-ff .k-rtl .k-pager-numbers,
-  .k-ie11 .k-rtl .k-pager-numbers,
-  .k-edge .k-rtl .k-pager-numbers,
-  .k-safari .k-rtl .k-pager-numbers,
-  .k-webkit .k-rtl .k-grid .k-pager-numbers,
-  .k-ff .k-rtl .k-grid .k-pager-numbers,
-  .k-ie11 .k-rtl .k-grid .k-pager-numbers,
-  .k-edge .k-rtl .k-grid .k-pager-numbers,
-  .k-safari .k-rtl .k-grid .k-pager-numbers {
-    right: 5.6em;
-    width: 5.15em;
-  }
-  .k-webkit .k-pager-numbers .k-current-page,
-  .k-ff .k-pager-numbers .k-current-page,
-  .k-ie11 .k-pager-numbers .k-current-page,
-  .k-edge .k-pager-numbers .k-current-page,
-  .k-safari .k-pager-numbers .k-current-page,
-  .k-webkit .k-grid .k-pager-numbers .k-current-page,
-  .k-ff .k-grid .k-pager-numbers .k-current-page,
-  .k-ie11 .k-grid .k-pager-numbers .k-current-page,
-  .k-edge .k-grid .k-pager-numbers .k-current-page,
-  .k-safari .k-grid .k-pager-numbers .k-current-page {
-    display: block;
-    border-left: 0;
-  }
-  .k-webkit .k-pager-numbers li:not(.k-current-page),
-  .k-ff .k-pager-numbers li:not(.k-current-page),
-  .k-ie11 .k-pager-numbers li:not(.k-current-page),
-  .k-edge .k-pager-numbers li:not(.k-current-page),
-  .k-safari .k-pager-numbers li:not(.k-current-page) {
-    display: none;
-  }
-  .k-webkit .k-pager-numbers .k-current-page .k-link,
-  .k-ff .k-pager-numbers .k-current-page .k-link,
-  .k-ie11 .k-pager-numbers .k-current-page .k-link,
-  .k-edge .k-pager-numbers .k-current-page .k-link,
-  .k-safari .k-pager-numbers .k-current-page .k-link {
-    width: 3.8em;
-    line-height: 2.564em;
-    padding: 0 .429em 0 0.8em;
-    border-radius: 2px;
-    background-image: none;
-    background-position: 50% 50%;
-    background-color: #fafafa;
-    border: 1px solid transparent;
-    border-top: 0;
-    box-shadow: 0 2px 2px 0 #fafafa;
-  }
-  .k-webkit .k-pager-numbers .k-current-page:hover .k-link,
-  .k-ff .k-pager-numbers .k-current-page:hover .k-link,
-  .k-ie11 .k-pager-numbers .k-current-page:hover .k-link,
-  .k-edge .k-pager-numbers .k-current-page:hover .k-link,
-  .k-safari .k-pager-numbers .k-current-page:hover .k-link {
-    border-radius: 2px;
-    background-color: #fff;
-    border: 1px solid #ebebeb;
-    border-top: 0;
-    box-shadow: 0 2px 6px rgba(0, 0, 0, 0.2), 0 2px 3px rgba(0, 0, 0, 0.05);
-  }
-  .k-webkit .k-pager-numbers .k-current-page .k-link:after,
-  .k-ff .k-pager-numbers .k-current-page .k-link:after,
-  .k-ie11 .k-pager-numbers .k-current-page .k-link:after,
-  .k-edge .k-pager-numbers .k-current-page .k-link:after,
-  .k-safari .k-pager-numbers .k-current-page .k-link:after {
-    display: block;
-    content: "";
-    position: absolute;
-    top: 50%;
-    margin-top: -0.6em;
-    right: 0.6em;
-    width: 1.333em;
-    height: 1.333em;
-    background-position: 0 -30px;
-  }
-  .k-webkit .k-pager-numbers + .k-link,
-  .k-ff .k-pager-numbers + .k-link,
-  .k-ie11 .k-pager-numbers + .k-link,
-  .k-edge .k-pager-numbers + .k-link,
-  .k-safari .k-pager-numbers + .k-link {
-    margin-left: 5.4em;
-  }
-  .k-webkit .k-rtl .k-pager-numbers + .k-link,
-  .k-ff .k-rtl .k-pager-numbers + .k-link,
-  .k-ie11 .k-rtl .k-pager-numbers + .k-link,
-  .k-edge .k-rtl .k-pager-numbers + .k-link,
-  .k-safari .k-rtl .k-pager-numbers + .k-link {
-    margin-right: 5.4em;
-    margin-left: 0;
-  }
-  .k-webkit .k-pager-wrap .k-pager-numbers .k-state-selected,
-  .k-ff .k-pager-wrap .k-pager-numbers .k-state-selected,
-  .k-ie11 .k-pager-wrap .k-pager-numbers .k-state-selected,
-  .k-edge .k-pager-wrap .k-pager-numbers .k-state-selected,
-  .k-safari .k-pager-wrap .k-pager-numbers .k-state-selected,
-  .k-webkit .k-pager-wrap .k-pager-numbers .k-link,
-  .k-ff .k-pager-wrap .k-pager-numbers .k-link,
-  .k-ie11 .k-pager-wrap .k-pager-numbers .k-link,
-  .k-edge .k-pager-wrap .k-pager-numbers .k-link,
-  .k-safari .k-pager-wrap .k-pager-numbers .k-link {
-    display: block;
-    margin-top: 0;
-    margin-right: 0;
-    padding: 1px 5px 1px .8em;
-    text-align: left;
-    border-top: 0;
-    border-radius: 1px;
-  }
-  .k-webkit .k-pager-wrap .k-pager-numbers li:not(.k-current-page) .k-link:hover,
-  .k-ff .k-pager-wrap .k-pager-numbers li:not(.k-current-page) .k-link:hover,
-  .k-ie11 .k-pager-wrap .k-pager-numbers li:not(.k-current-page) .k-link:hover,
-  .k-edge .k-pager-wrap .k-pager-numbers li:not(.k-current-page) .k-link:hover,
-  .k-safari .k-pager-wrap .k-pager-numbers li:not(.k-current-page) .k-link:hover {
-    background-color: #ebebeb;
-  }
-  .k-webkit .k-pager-numbers.k-state-expanded,
-  .k-ff .k-pager-numbers.k-state-expanded,
-  .k-ie11 .k-pager-numbers.k-state-expanded,
-  .k-edge .k-pager-numbers.k-state-expanded,
-  .k-safari .k-pager-numbers.k-state-expanded {
-    box-sizing: border-box;
-    padding: 2px 0 0;
-    border-width: 1px 1px 0 1px;
-    border-style: solid;
-    border-color: #ebebeb;
-    /*@secondary-border-color*/
-    background-color: #fff;
-    border-radius: 2px 2px 0 0;
-    box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.2);
-  }
-  .k-webkit .k-pager-numbers.k-state-expanded .k-current-page,
-  .k-ff .k-pager-numbers.k-state-expanded .k-current-page,
-  .k-ie11 .k-pager-numbers.k-state-expanded .k-current-page,
-  .k-edge .k-pager-numbers.k-state-expanded .k-current-page,
-  .k-safari .k-pager-numbers.k-state-expanded .k-current-page {
-    margin: -2.2em -1px 0;
-    padding: 0;
-  }
-  .k-webkit .k-pager-numbers.k-state-expanded .k-current-page .k-link,
-  .k-ff .k-pager-numbers.k-state-expanded .k-current-page .k-link,
-  .k-ie11 .k-pager-numbers.k-state-expanded .k-current-page .k-link,
-  .k-edge .k-pager-numbers.k-state-expanded .k-current-page .k-link,
-  .k-safari .k-pager-numbers.k-state-expanded .k-current-page .k-link {
-    border-radius: 0 0 2px 2px;
-    background-color: #fff;
-    border: 1px solid #ebebeb;
-    border-top: 0;
-    box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.2);
-  }
-  .k-webkit .k-pager-numbers.k-state-expanded li,
-  .k-ff .k-pager-numbers.k-state-expanded li,
-  .k-ie11 .k-pager-numbers.k-state-expanded li,
-  .k-edge .k-pager-numbers.k-state-expanded li,
-  .k-safari .k-pager-numbers.k-state-expanded li {
-    display: inline-block;
-  }
-  .k-webkit .k-gantt-toolbar > ul.k-gantt-views,
-  .k-ff .k-gantt-toolbar > ul.k-gantt-views,
-  .k-ie11 .k-gantt-toolbar > ul.k-gantt-views,
-  .k-edge .k-gantt-toolbar > ul.k-gantt-views,
-  .k-safari .k-gantt-toolbar > ul.k-gantt-views {
-    top: 0;
-  }
-}
-@media only screen and (max-width: 755px) {
-  .k-webkit .k-pager-info,
-  .k-ff .k-pager-info,
-  .k-ie11 .k-pager-info,
-  .k-edge .k-pager-info,
-  .k-safari .k-pager-info {
-    display: none;
-  }
-}
-@media only screen and (max-width: 572px) {
-  .k-webkit .k-pager-sizes,
-  .k-ff .k-pager-sizes,
-  .k-ie11 .k-pager-sizes,
-  .k-edge .k-pager-sizes,
-  .k-safari .k-pager-sizes {
-    display: none;
-  }
-}
-/* Default Theme */
-.k-chart .k-mask {
-  background-color: #fff;
-  filter: alpha(opacity=68);
-  opacity: 0.68;
-}
-.k-chart .k-selection {
-  border-color: #e5e5e5;
-}
-.k-chart .k-handle {
-  width: 15px;
-  height: 15px;
-  background-color: #3f51b5;
-  border-radius: 10px;
-}
-.k-chart .k-left-handle {
-  left: -8px;
-}
-.k-chart .k-right-handle {
-  right: -8px;
-}
-.k-chart .k-handle:hover {
-  background-color: #00b0ff;
-  border-color: #00b0ff;
-}
-.k-chart .k-navigator-hint .k-tooltip {
-  border: 3px solid #ffffff;
-  box-shadow: 0 0 0 3px rgba(0, 0, 0, 0.2);
-  background: #ffffff;
-  color: #242424;
-}
-.k-chart .k-navigator-hint .k-scroll {
-  background: #3f51b5;
-  height: 4px;
-}
-.k-chart-tooltip {
-  background-image: none;
-}
-/* Map */
-.k-map .k-marker {
-  background-image: url("Material/markers.png");
-}
-@media only screen and (-webkit-min-device-pixel-ratio: 1.2), only screen and (min-device-pixel-ratio: 1.2) {
-  .k-map .k-marker {
-    background-image: url("Material/markers_2x.png");
-  }
-}
-.k-map .k-attribution {
-  color: #666666;
-}
-.k-map .k-shadow {
-  background-color: #f9f9f9;
-  border-color: #f9f9f9;
-}
-.k-map .k-zoom-control {
-  border-color: #fff;
-  box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.2);
-  border-radius: 2px;
-}
-.k-map .k-map-controls .k-button {
-  box-shadow: none;
-}
-.k-map .k-map-controls .k-button:focus,
-.k-map .k-map-controls .k-button:active,
-.k-map .k-map-controls .k-button:focus:active {
-  background-color: #d6d6d6;
-  border-color: #d6d6d6;
-  box-shadow: none;
-}
-.k-buttons-horizontal .k-zoom-out {
-  border-radius: 0 2px 2px 0;
-}
-.k-buttons-horizontal :first-child {
-  border-radius: 2px 0 0 2px;
-}
-.k-rtl .k-buttons-horizontal .k-zoom-out {
-  border-radius: 2px 0 0 2px;
-}
-.k-rtl .k-buttons-horizontal :first-child {
-  border-radius: 0 2px 2px 0;
-}
-.k-spreadsheet-row-header,
-.k-spreadsheet-column-header {
-  background-color: #fff;
-}
-.k-spreadsheet-top-corner,
-.k-spreadsheet-row-header,
-.k-spreadsheet-column-header {
-  background-color: #fff;
-  background-image: none;
-  color: #000000;
-  border-color: #cccccc;
-}
-.k-spreadsheet-top-corner {
-  border-color: #cccccc;
-}
-.k-spreadsheet-top-corner:after {
-  border-color: transparent #cccccc #cccccc transparent;
-}
-.k-spreadsheet-pane {
-  border-color: #cccccc;
-}
-.k-spreadsheet-pane .k-spreadsheet-vaxis,
-.k-spreadsheet-pane .k-spreadsheet-haxis {
-  border-color: #e6e6e6;
-}
-.k-spreadsheet-pane .k-spreadsheet-column-header,
-.k-spreadsheet-pane .k-spreadsheet-row-header {
-  border-color: #cccccc;
-}
-.k-spreadsheet-pane .k-spreadsheet-merged-cell {
-  background-color: #fff;
-}
-.k-spreadsheet-pane .k-selection-partial,
-.k-spreadsheet-pane .k-selection-full {
-  border-color: rgba(0, 176, 255, 0.2);
-  background-color: rgba(0, 176, 255, 0.2);
-}
-.k-spreadsheet-pane .k-filter-range {
-  border-color: #00b0ff;
-}
-.k-spreadsheet-pane .k-spreadsheet-column-header .k-selection-partial,
-.k-spreadsheet-pane .k-spreadsheet-column-header .k-selection-full {
-  border-bottom-color: #00b0ff;
-}
-.k-spreadsheet-pane .k-spreadsheet-row-header .k-selection-partial,
-.k-spreadsheet-pane .k-spreadsheet-row-header .k-selection-full {
-  border-right-color: #00b0ff;
-}
-.k-auto-fill,
-.k-spreadsheet-selection {
-  border-color: #00b0ff;
-  box-shadow: inset 0 0 0 1px #fff, 0 0 0 1px #00b0ff;
-}
-.k-spreadsheet-selection {
-  background-color: rgba(0, 176, 255, 0.2);
-}
-.k-spreadsheet-active-cell {
-  border-color: #00b0ff !important;
-  background-color: #fff;
-}
-.k-spreadsheet-active-cell.k-single {
-  color: #444444;
-  background-color: #fff;
-}
-.k-spreadsheet .k-spreadsheet-action-bar {
-  background-color: #fff;
-  border-color: #e6e6e6;
-}
-.k-spreadsheet .k-spreadsheet-action-bar .k-spreadsheet-name-editor {
-  border-color: #cccccc;
-}
-.k-spreadsheet .k-spreadsheet-action-bar .k-spreadsheet-formula-bar::before {
-  border-color: #cccccc;
-}
-.k-spreadsheet .k-spreadsheet-formula-input {
-  background-color: #fff;
-  color: #444444;
-}
-.k-spreadsheet .k-resize-handle,
-.k-spreadsheet .k-resize-hint-handle,
-.k-spreadsheet .k-resize-hint-marker {
-  background-color: #00b0ff;
-}
-.k-spreadsheet .k-resize-hint-vertical .k-resize-hint-handle,
-.k-spreadsheet .k-resize-hint-vertical .k-resize-hint-marker {
-  background-color: #00b0ff;
-}
-.k-spreadsheet .k-single-selection::after {
-  background-color: #00b0ff;
-  border-color: #fff;
-}
-.k-spreadsheet .k-auto-fill-punch {
-  background-color: rgba(255, 255, 255, 0.5);
-}
-.k-spreadsheet .k-single-selection.k-dim-auto-fill-handle::after {
-  background-color: rgba(0, 176, 255, 0.5);
-}
-.k-spreadsheet-format-cells .k-spreadsheet-preview {
-  border-color: #e6e6e6;
-}
-.k-spreadsheet-filter {
-  border-radius: 2px;
-  background-color: #fff;
-  box-shadow: inset 0 0 0 1px #e6e6e6;
-}
-.k-spreadsheet-filter.k-state-active {
-  color: #3f51b5;
-  background-color: #00b0ff;
-}
-.k-spreadsheet-filter:hover {
-  color: #444444;
-  background: #ebebeb;
-  border-color: #d7d7d7;
-}
-.k-action-window .k-action-buttons {
-  border-color: #e6e6e6;
-}
-.k-spreadsheet-sample {
-  color: #919191;
-}
-.k-state-selected .k-spreadsheet-sample {
-  color: inherit;
-}
-.k-spreadsheet-window .k-list-wrapper,
-.k-spreadsheet-window .k-list {
-  border-color: #e6e6e6;
-  border-radius: 2px;
-}
-.k-spreadsheet-window .export-config,
-.k-spreadsheet-window .k-edit-field > .k-orientation-label {
-  border-color: #e6e6e6;
-}
-.k-spreadsheet-window .k-edit-field > input[type="radio"]:checked + .k-orientation-label {
-  background-image: none;
-  background-color: #3f51b5;
-  color: #6776ca;
-}
-.k-spreadsheet-window .k-page-orientation {
-  border-color: #e6e6e6;
-  box-shadow: 0 5px 5px 0 rgba(0, 0, 0, 0.1);
-}
-.k-spreadsheet-window .k-page-orientation:before {
-  background: #fff;
-  border-color: transparent;
-  border-bottom-color: #e6e6e6;
-  border-left-color: #e6e6e6;
-}
-.k-spreadsheet-window .k-margins-horizontal,
-.k-spreadsheet-window .k-margins-vertical {
-  background: transparent;
-  border-color: #e6e6e6;
-}
-.k-spreadsheet-window .hint-wrapper:before {
-  background: #e6e6e6;
-}
-.k-spreadsheet-toolbar.k-toolbar .k-button-group .k-button {
-  border-radius: 2px;
-}
-.k-spreadsheet-toolbar > .k-widget,
-.k-spreadsheet-toolbar > .k-button,
-.k-spreadsheet-toolbar > .k-button-group {
-  border-radius: 2px;
-}
-.k-spreadsheet-toolbar > .k-separator {
-  border-color: #e6e6e6;
-}
-.k-spreadsheet-toolbar .k-overflow-anchor {
-  border-radius: 0;
-}
-.k-spreadsheet-popup {
-  border-radius: 2px;
-}
-.k-spreadsheet-popup .k-separator {
-  background-color: #e6e6e6;
-}
-.k-spreadsheet-popup .k-button {
-  background-color: transparent;
-}
-.k-spreadsheet-popup .k-button:hover {
-  background-color: #ebebeb;
-}
-.k-spreadsheet-popup .k-state-active {
-  background-color: #00b0ff;
-  color: #ffffff;
-}
-.k-spreadsheet-popup .k-state-active:hover {
-  background-color: #008dcc;
-}
-.k-spreadsheet-filter-menu .k-details {
-  border-color: #e6e6e6;
-}
-.k-spreadsheet-filter-menu .k-details-content .k-space-right {
-  background-color: #fff;
-}
-.k-spreadsheet-filter-menu .k-spreadsheet-value-treeview-wrapper {
-  background-color: #fff;
-  border-color: #e6e6e6;
-  border-radius: 2px 0 0 2px;
-}
-.k-syntax-ref {
-  color: #ff8822;
-}
-.k-syntax-num {
-  color: #0099ff;
-}
-.k-syntax-func {
-  font-weight: bold;
-}
-.k-syntax-str {
-  color: #38b714;
-}
-.k-syntax-error {
-  color: red;
-}
-.k-syntax-bool {
-  color: #a9169c;
-}
-.k-syntax-startexp {
-  font-weight: bold;
-}
-.k-syntax-paren-match {
-  background-color: #caf200;
-}
-.k-series-a {
-  border-color: #3f51b5;
-  background-color: rgba(63, 81, 181, 0.15);
-}
-.k-series-b {
-  border-color: #03a9f4;
-  background-color: rgba(3, 169, 244, 0.15);
-}
-.k-series-c {
-  border-color: #4caf50;
-  background-color: rgba(76, 175, 80, 0.15);
-}
-.k-series-d {
-  border-color: #f9ce1d;
-  background-color: rgba(249, 206, 29, 0.15);
-}
-.k-series-e {
-  border-color: #ff9800;
-  background-color: rgba(255, 152, 0, 0.15);
-}
-.k-series-f {
-  border-color: #ff5722;
-  background-color: rgba(255, 87, 34, 0.15);
-}
-.k-spreadsheet-sheets-remove:hover .k-icon {
-  color: #cc2222;
-}
-.k-spreadsheet-formula-list .k-state-focused {
-  background-color: #00b0ff;
-  color: #3f51b5;
-}
-.k-spreadsheet .k-spreadsheet-quick-access-toolbar .k-button,
-.k-spreadsheet .k-spreadsheet-sheets-bar .k-button {
-  box-shadow: none;
-  color: #ffffff;
-  border-radius: 0;
-  line-height: 2.6em;
-  width: 3em;
-}
-.k-spreadsheet .k-spreadsheet-quick-access-toolbar .k-button:hover,
-.k-spreadsheet .k-spreadsheet-sheets-bar .k-button:hover {
-  background-color: #324191;
-  border-color: #324191;
-}
-.k-spreadsheet .k-spreadsheet-sheets-bar .k-button {
-  left: 0;
-  bottom: 0;
-  padding-top: .5em;
-  padding-bottom: .5em;
-  line-height: 2.2em;
-}
-.k-spreadsheet .k-spreadsheet-sheets-remove {
-  margin: 0 0 0 -1em;
-}
-.k-spreadsheet-sheets-items .k-state-default .k-link,
-.k-spreadsheet-tabstrip .k-state-default .k-link {
-  color: #9fa8da;
-}
-.k-spreadsheet-sheets-items .k-item.k-state-hover,
-.k-spreadsheet-tabstrip .k-item.k-state-hover,
-.k-spreadsheet-sheets-items .k-item.k-state-active,
-.k-spreadsheet-tabstrip .k-item.k-state-active,
-.k-spreadsheet-sheets-items .k-item.k-state-focused,
-.k-spreadsheet-tabstrip .k-item.k-state-focused {
-  background-color: transparent;
-}
-.k-spreadsheet-sheets-items .k-item.k-state-hover .k-link,
-.k-spreadsheet-tabstrip .k-item.k-state-hover .k-link,
-.k-spreadsheet-sheets-items .k-item.k-state-active .k-link,
-.k-spreadsheet-tabstrip .k-item.k-state-active .k-link,
-.k-spreadsheet-sheets-items .k-item.k-state-focused .k-link,
-.k-spreadsheet-tabstrip .k-item.k-state-focused .k-link {
-  color: #ffffff;
-}
-.k-spreadsheet-sheets-items .k-state-active .k-link,
-.k-spreadsheet-tabstrip .k-state-active .k-link {
-  color: #ffffff;
-}
-.k-spreadsheet-toolbar > .k-button:not(.k-overflow-anchor) {
-  line-height: 2em;
-}
-.k-grid .k-edit-cell input.k-checkbox,
-.k-grid .k-grid-edit-row input.k-checkbox {
-  margin-top: 5px;
-  width: 16px;
-  height: 16px;
-  z-index: 2;
-}
-.k-window .k-popup-edit-form .k-edit-field input.k-checkbox {
-  width: 16px;
-  height: 17px;
-  margin-top: 1.1em;
-  z-index: 2;
-}
-.k-window .k-popup-edit-form .k-edit-field label.k-checkbox-label {
-  margin-top: 0.8em;
-}
-/* Dialog */
-.k-dialog .k-content {
-  border-bottom-right-radius: 2px;
-  border-bottom-left-radius: 2px;
-}
-.k-dialog.k-dialog-titleless .k-content {
-  border-top-right-radius: 2px;
-  border-top-left-radius: 2px;
-}
-.k-dialog .k-window-titlebar {
-  border-width: 0;
-  color: #444444;
-}
-.k-dialog .k-header {
-  background: none;
-}
-.k-dialog.k-alert .k-window-titlebar,
-.k-dialog.k-confirm .k-window-titlebar,
-.k-dialog.k-prompt .k-window-titlebar {
-  border-bottom: none;
-}
-.k-dialog.k-alert .k-window-titlebar .k-dialog-title,
-.k-dialog.k-confirm .k-window-titlebar .k-dialog-title,
-.k-dialog.k-prompt .k-window-titlebar .k-dialog-title {
-  color: #444444;
-}
-.k-dialog a.k-dialog-action.k-dialog-close.k-button.k-bare:before {
-  content: normal;
-}
-.k-dialog a.k-dialog-action.k-dialog-close {
-  top: .3em;
-  right: 0;
-}
-.k-dialog .k-dialog-buttongroup .k-button:active,
-.k-dialog .k-dialog-buttongroup .k-button:focus,
-.k-dialog .k-dialog-buttongroup .k-button:focus:active {
-  box-shadow: none;
-}
-.k-dialog .k-dialog-buttongroup.k-dialog-button-layout-stretched {
-  width: 100%;
-}
-.k-dialog .k-dialog-buttongroup.k-dialog-button-layout-stretched .k-button {
-  display: inline-block;
-  padding: 1.5em 0;
-  border-radius: 0;
-  border-bottom: 0;
-  box-shadow: none;
-}
-.k-dialog .k-dialog-buttongroup.k-dialog-button-layout-stretched .k-button:first-child {
-  border-bottom-left-radius: 2px;
-  border-left: 0;
-}
-.k-dialog .k-dialog-buttongroup.k-dialog-button-layout-stretched .k-button:last-child {
-  border-bottom-right-radius: 2px;
-  border-right: 0;
-}
-.k-dialog .k-dialog-buttongroup.k-dialog-button-layout-normal {
-  width: auto;
-  margin: 0;
-  padding: 1em;
-  text-align: right;
-}
-.k-dialog .k-dialog-buttongroup.k-dialog-button-layout-normal .k-button {
-  margin-left: 0.5em;
-  background: none;
-  border: none;
-  border-radius: 0;
-  box-shadow: none;
-}
-.k-dialog .k-dialog-buttongroup.k-dialog-button-layout-normal .k-button:first-child {
-  margin-left: 0;
-}
-.k-dialog .k-dialog-buttongroup.k-dialog-button-layout-normal .k-button.k-primary {
-  color: #00b0ff;
-}
-.k-rtl .k-grid-header .k-header:first-child,
-.k-rtl .k-filter-row th:first-child,
-.k-rtl .k-grid tbody td:first-child,
-.k-rtl .k-grid tfoot td:first-child {
-  border-left-width: 0;
-}
-.k-rtl .k-dialog a.k-dialog-action.k-dialog-close {
-  left: 0;
-}
-.k-rtl .k-dialog .k-dialog-buttongroup.k-dialog-button-layout-stretched .k-button:first-child {
-  border-bottom-right-radius: 2px;
-}
-.k-rtl .k-dialog .k-dialog-buttongroup.k-dialog-button-layout-stretched .k-button:last-child {
-  border-bottom-left-radius: 2px;
-}
-.k-rtl .k-dialog .k-dialog-buttongroup.k-dialog-button-layout-normal {
-  text-align: left;
-}
-.k-rtl .k-dialog .k-dialog-buttongroup.k-dialog-button-layout-normal .k-button {
-  margin-left: 0;
-  margin-right: 0.5em;
-}
-.k-rtl .k-dialog .k-dialog-buttongroup.k-dialog-button-layout-normal .k-button:first-child {
-  margin-right: 0;
-}
-.k-numeric-wrap .k-i-warning {
-  color: #ff3448;
-  position: absolute;
-  top: 0;
-  right: 2.2em;
-  width: 2.2em;
-}
-.k-numeric-wrap.k-state-invalid {
-  border-color: #ff3448;
-}
-.k-numeric-wrap.k-state-invalid input {
-  color: #ff3448;
-}
-.k-maskedtextbox.k-state-invalid .k-textbox {
-  border-color: #ff3448;
-  color: #ff3448;
-}
-.k-maskedtextbox.k-state-invalid .k-i-warning {
-  color: #ff3448;
-}
-.k-dateinput.k-state-invalid .k-textbox {
-  color: #ff3448;
-  border-color: #ff3448;
-}
-.k-dateinput.k-state-invalid .k-i-warning {
-  margin-left: 0;
-  margin-right: 0.7em;
-  color: #ff3448;
-}
-.k-rtl .k-dateinput .k-i-warning {
-  margin-right: 0;
-  margin-left: 0.7em;
-}
-.k-datepicker .k-picker-wrap.k-state-invalid {
-  border-color: #ff3448;
-}
-.k-datepicker .k-picker-wrap.k-state-invalid .k-input {
-  color: #ff3448;
-}
-.k-datepicker .k-picker-wrap .k-i-warning {
-  color: #ff3448;
-  margin-left: 0;
-  margin-right: 2.8em;
-}
-.k-rtl .k-datepicker .k-picker-wrap .k-i-warning {
-  margin-right: 0;
-  margin-left: 2.8em;
-}
-.k-listbox .k-list-scroller {
-  border-color: #e6e6e6;
-  background-color: #fff;
-}
-.k-listbox .k-item:hover:not(.k-state-disabled),
-.k-listbox .k-item.k-state-selected {
-  background-color: #ebebeb;
-  border-color: transparent;
-}
-.k-listbox .k-button.k-state-disabled:hover .k-icon {
-  opacity: .7;
-}
-.k-listbox .k-button.k-state-disabled:hover .k-icon {
-  opacity: .7;
-}
-.k-listbox .k-drop-hint {
-  height: 0;
-  border-top: 1px solid #3f51b5;
-}
-.k-item.k-state-selected.k-drag-clue {
-  border-color: transparent;
-  background-color: #ebebeb;
-  box-shadow: 0 2px 6px rgba(0, 0, 0, 0.2), 0 2px 3px rgba(0, 0, 0, 0.05);
-}
-.k-grid-header .k-i-sort-asc-sm,
-.k-grid-header .k-i-sort-desc-sm,
-.k-grid-header .k-sort-order {
-  color: inherit;
-  opacity: 1;
-}
-.k-grid-header .k-sort-order {
-  font-size: .7em;
-  vertical-align: text-top;
-  line-height: 1.5em;
-}
-.k-menu-scroll-button {
-  border-width: 0;
-  box-shadow: none;
-  border-color: #e6e6e6;
-  color: #444444;
-  background-color: #fff;
-}
-.k-menu-scroll-wrapper.horizontal .k-scroll-left {
-  border-right-width: 1px;
-}
-.k-menu-scroll-wrapper.horizontal .k-scroll-right {
-  border-left-width: 1px;
-}
-.k-menu-scroll-wrapper.vertical .k-scroll-up {
-  border-bottom-width: 1px;
-}
-.k-menu-scroll-wrapper.vertical .k-scroll-down {
-  border-top-width: 1px;
-}
diff --git a/src/main/resources/META-INF/resources/designer/css/plugins/morris.css b/src/main/resources/META-INF/resources/designer/css/plugins/morris.css
deleted file mode 100644 (file)
index 209f091..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-.morris-hover{position:absolute;z-index:1000}.morris-hover.morris-default-style{border-radius:10px;padding:6px;color:#666;background:rgba(255,255,255,0.8);border:solid 2px rgba(230,230,230,0.8);font-family:sans-serif;font-size:12px;text-align:center}.morris-hover.morris-default-style .morris-hover-row-label{font-weight:bold;margin:0.25em 0}
-.morris-hover.morris-default-style .morris-hover-point{white-space:nowrap;margin:0.1em 0}
index 52ae52d..5932295 100644 (file)
@@ -34,6 +34,7 @@
 <html lang="en" ng-app="clds-app">
 
 <head>
+<meta charset="utf-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=edge">
 <meta name="viewport"
        content="width=device-width, initial-scale=1.0, maximum-scale=1">
@@ -58,7 +59,6 @@
 
 
 
-<link href="css/plugins/morris.css" rel="stylesheet">
 <link href="fonts/font-awesome-4.1.0/css/font-awesome.min.css"
        rel="stylesheet" type="text/css">
 
 
        <div ng-controller="AuthenticateCtrl" ng-include="getInclude()"
                style="width: 100%; height: 100%"></div>
-    
+
        <script src="lib/jquery.min.js"></script>
+       
+       
        <script src="lib/angular.min.js"></script>
        <script src="lib/angular-cookies.js"></script>
 
        <script type="text/javascript" src="lib/angular-touch.min.js"></script>
        <script type="text/javascript" src="lib/angular-animate.js"></script>
        <script type="text/javascript" src="lib/lodash.min.js"></script>
-       <script type="text/javascript" src="lib/angular-highlightjs.js"></script>
        <script type="text/javascript" src="lib/ui-bootstrap-tpls.js"></script>
 
 
        <script src="lib/angular-vs-repeat.js"></script>
 
-       <script src="lib/angularjs-dropdown-multiselect.js"></script>
-       <script src="lib/angularjs-dropdown-multiselect-new.js"></script>
-       <script src="lib/angularjs-dropdown-multiselect-old.js"></script>
-
        <script src="lib/moment.min.js"></script>
        <script src="lib/loading-bar.js"></script>
 
      <script src="scripts/AlertService.js"></script>
 
     <!--    dialog box ctl end -->
-    <link rel="stylesheet" href="css/kendo.material.min.css">
-    <link rel="stylesheet" href="css/kendo.common-material.core.css">
-    <script src="scripts/kendo.custom.min.js"></script>
     <script src="scripts/aOnBoot.js"></script>
         
         
index 6dae4ad..84c4e4f 100644 (file)
@@ -1,5 +1,5 @@
 /**
- * @license AngularJS v1.2.16
+ * @license AngularJS v1.2.32
  * (c) 2010-2014 Google, Inc. http://angularjs.org
  * License: MIT
  */
@@ -52,9 +52,9 @@
  * }
  *
  * .slide.ng-enter { }        /&#42; starting animations for enter &#42;/
- * .slide.ng-enter-active { } /&#42; terminal animations for enter &#42;/
+ * .slide.ng-enter.ng-enter-active { } /&#42; terminal animations for enter &#42;/
  * .slide.ng-leave { }        /&#42; starting animations for leave &#42;/
- * .slide.ng-leave-active { } /&#42; terminal animations for leave &#42;/
+ * .slide.ng-leave.ng-leave-active { } /&#42; terminal animations for leave &#42;/
  * </style>
  *
  * <!--
  * <ANY class="slide" ng-include="..."></ANY>
  * ```
  *
- * Keep in mind that if an animation is running, any child elements cannot be animated until the parent element's
- * animation has completed.
+ * Keep in mind that, by default, if an animation is running, any child elements cannot be animated
+ * until the parent element's animation has completed. This blocking feature can be overridden by
+ * placing the `ng-animate-children` attribute on a parent container tag.
+ *
+ * ```html
+ * <div class="slide-animation" ng-if="on" ng-animate-children>
+ *   <div class="fade-animation" ng-if="on">
+ *     <div class="explode-animation" ng-if="on">
+ *        ...
+ *     </div>
+ *   </div>
+ * </div>
+ * ```
+ *
+ * When the `on` expression value changes and an animation is triggered then each of the elements within
+ * will all animate without the block being applied to child elements.
  *
  * <h2>CSS-defined Animations</h2>
  * The animate service will automatically apply two CSS classes to the animated element and these two CSS classes
@@ -255,6 +269,19 @@ angular.module('ngAnimate', ['ng'])
    * Please visit the {@link ngAnimate `ngAnimate`} module overview page learn more about how to use animations in your application.
    *
    */
+  .directive('ngAnimateChildren', function() {
+    var NG_ANIMATE_CHILDREN = '$$ngAnimateChildren';
+    return function(scope, element, attrs) {
+      var val = attrs.ngAnimateChildren;
+      if(angular.isString(val) && val.length === 0) { //empty attribute
+        element.data(NG_ANIMATE_CHILDREN, true);
+      } else {
+        scope.$watch(val, function(value) {
+          element.data(NG_ANIMATE_CHILDREN, !!value);
+        });
+      }
+    };
+  })
 
   //this private service is only used within CSS-enabled animations
   //IE8 + IE9 do not support rAF natively, but that is fine since they
@@ -269,9 +296,11 @@ angular.module('ngAnimate', ['ng'])
         //so that all the animated elements within the animation frame
         //will be properly updated and drawn on screen. This is
         //required to perform multi-class CSS based animations with
-        //Firefox. DO NOT REMOVE THIS LINE.
-        var a = bod.offsetWidth + 1;
-        fn();
+        //Firefox. DO NOT REMOVE THIS LINE. DO NOT OPTIMIZE THIS LINE.
+        //THE MINIFIER WILL REMOVE IT OTHERWISE WHICH WILL RESULT IN AN
+        //UNPREDICTABLE BUG THAT IS VERY HARD TO TRACK DOWN AND WILL
+        //TAKE YEARS AWAY FROM YOUR LIFE!
+        fn(bod.offsetWidth);
       });
     };
   }])
@@ -283,6 +312,7 @@ angular.module('ngAnimate', ['ng'])
 
     var ELEMENT_NODE = 1;
     var NG_ANIMATE_STATE = '$$ngAnimateState';
+    var NG_ANIMATE_CHILDREN = '$$ngAnimateChildren';
     var NG_ANIMATE_CLASS_NAME = 'ng-animate';
     var rootAnimateState = {running: true};
 
@@ -295,6 +325,10 @@ angular.module('ngAnimate', ['ng'])
       }
     }
 
+    function prepareElement(element) {
+      return element && angular.element(element);
+    }
+
     function stripCommentsFromElement(element) {
       return angular.element(extractElementNode(element));
     }
@@ -328,6 +362,12 @@ angular.module('ngAnimate', ['ng'])
                 return classNameFilter.test(className);
               };
 
+      function blockElementAnimations(element) {
+        var data = element.data(NG_ANIMATE_STATE) || {};
+        data.running = true;
+        element.data(NG_ANIMATE_STATE, data);
+      }
+
       function lookup(name) {
         if (name) {
           var matches = [],
@@ -503,7 +543,7 @@ angular.module('ngAnimate', ['ng'])
       /**
        * @ngdoc service
        * @name $animate
-       * @function
+       * @kind function
        *
        * @description
        * The `$animate` service provides animation detection support while performing DOM operations (enter, leave and move) as well as during addClass and removeClass operations.
@@ -523,7 +563,7 @@ angular.module('ngAnimate', ['ng'])
         /**
          * @ngdoc method
          * @name $animate#enter
-         * @function
+         * @kind function
          *
          * @description
          * Appends the element to the parentElement element that resides in the document and then runs the enter animation. Once
@@ -550,7 +590,11 @@ angular.module('ngAnimate', ['ng'])
          * @param {function()=} doneCallback the callback function that will be called once the animation is complete
         */
         enter : function(element, parentElement, afterElement, doneCallback) {
-          this.enabled(false, element);
+          element = angular.element(element);
+          parentElement = prepareElement(parentElement);
+          afterElement = prepareElement(afterElement);
+
+          blockElementAnimations(element);
           $delegate.enter(element, parentElement, afterElement);
           $rootScope.$$postDigest(function() {
             element = stripCommentsFromElement(element);
@@ -561,7 +605,7 @@ angular.module('ngAnimate', ['ng'])
         /**
          * @ngdoc method
          * @name $animate#leave
-         * @function
+         * @kind function
          *
          * @description
          * Runs the leave animation operation and, upon completion, removes the element from the DOM. Once
@@ -586,8 +630,9 @@ angular.module('ngAnimate', ['ng'])
          * @param {function()=} doneCallback the callback function that will be called once the animation is complete
         */
         leave : function(element, doneCallback) {
+          element = angular.element(element);
           cancelChildAnimations(element);
-          this.enabled(false, element);
+          blockElementAnimations(element);
           $rootScope.$$postDigest(function() {
             performAnimation('leave', 'ng-leave', stripCommentsFromElement(element), null, null, function() {
               $delegate.leave(element);
@@ -598,7 +643,7 @@ angular.module('ngAnimate', ['ng'])
         /**
          * @ngdoc method
          * @name $animate#move
-         * @function
+         * @kind function
          *
          * @description
          * Fires the move DOM operation. Just before the animation starts, the animate service will either append it into the parentElement container or
@@ -626,8 +671,12 @@ angular.module('ngAnimate', ['ng'])
          * @param {function()=} doneCallback the callback function that will be called once the animation is complete
         */
         move : function(element, parentElement, afterElement, doneCallback) {
+          element = angular.element(element);
+          parentElement = prepareElement(parentElement);
+          afterElement = prepareElement(afterElement);
+
           cancelChildAnimations(element);
-          this.enabled(false, element);
+          blockElementAnimations(element);
           $delegate.move(element, parentElement, afterElement);
           $rootScope.$$postDigest(function() {
             element = stripCommentsFromElement(element);
@@ -665,6 +714,7 @@ angular.module('ngAnimate', ['ng'])
          * @param {function()=} doneCallback the callback function that will be called once the animation is complete
         */
         addClass : function(element, className, doneCallback) {
+          element = angular.element(element);
           element = stripCommentsFromElement(element);
           performAnimation('addClass', className, element, null, null, function() {
             $delegate.addClass(element, className);
@@ -701,6 +751,7 @@ angular.module('ngAnimate', ['ng'])
          * @param {function()=} doneCallback the callback function that will be called once the animation is complete
         */
         removeClass : function(element, className, doneCallback) {
+          element = angular.element(element);
           element = stripCommentsFromElement(element);
           performAnimation('removeClass', className, element, null, null, function() {
             $delegate.removeClass(element, className);
@@ -714,7 +765,7 @@ angular.module('ngAnimate', ['ng'])
            * @function
            * @description Adds and/or removes the given CSS classes to and from the element.
            * Once complete, the done() callback will be fired (if provided).
-           * @param {DOMElement} element the element which will it's CSS classes changed
+           * @param {DOMElement} element the element which will its CSS classes changed
            *   removed from it
            * @param {string} add the CSS classes which will be added to the element
            * @param {string} remove the CSS class which will be removed from the element
@@ -722,6 +773,7 @@ angular.module('ngAnimate', ['ng'])
            *   CSS classes have been set on the element
            */
         setClass : function(element, add, remove, doneCallback) {
+          element = angular.element(element);
           element = stripCommentsFromElement(element);
           performAnimation('setClass', [add, remove], element, null, null, function() {
             $delegate.setClass(element, add, remove);
@@ -731,7 +783,7 @@ angular.module('ngAnimate', ['ng'])
         /**
          * @ngdoc method
          * @name $animate#enabled
-         * @function
+         * @kind function
          *
          * @param {boolean=} value If provided then set the animation on or off.
          * @param {DOMElement=} element If provided then the element will be used to represent the enable/disable operation
@@ -798,9 +850,12 @@ angular.module('ngAnimate', ['ng'])
 
         //only allow animations if the currently running animation is not structural
         //or if there is no animation running at all
-        var skipAnimations = runner.isClassBased ?
-          ngAnimateState.disabled || (lastAnimation && !lastAnimation.isClassBased) :
-          false;
+        var skipAnimations;
+        if (runner.isClassBased) {
+          skipAnimations = ngAnimateState.running ||
+                           ngAnimateState.disabled ||
+                           (lastAnimation && !lastAnimation.isClassBased);
+        }
 
         //skip the animation if animations are disabled, a parent is already being animated,
         //the element is not currently attached to the document body or then completely close
@@ -855,6 +910,7 @@ angular.module('ngAnimate', ['ng'])
         }
 
         if(skipAnimation) {
+          fireDOMOperation();
           fireBeforeCallbackAsync();
           fireAfterCallbackAsync();
           fireDoneCallbackAsync();
@@ -1016,30 +1072,49 @@ angular.module('ngAnimate', ['ng'])
       }
 
       function animationsDisabled(element, parentElement) {
-        if (rootAnimateState.disabled) return true;
+        if (rootAnimateState.disabled) {
+          return true;
+        }
 
-        if(isMatchingElement(element, $rootElement)) {
-          return rootAnimateState.disabled || rootAnimateState.running;
+        if (isMatchingElement(element, $rootElement)) {
+          return rootAnimateState.running;
         }
 
+        var allowChildAnimations, parentRunningAnimation, hasParent;
         do {
           //the element did not reach the root element which means that it
           //is not apart of the DOM. Therefore there is no reason to do
           //any animations on it
-          if(parentElement.length === 0) break;
+          if (parentElement.length === 0) break;
 
           var isRoot = isMatchingElement(parentElement, $rootElement);
-          var state = isRoot ? rootAnimateState : parentElement.data(NG_ANIMATE_STATE);
-          var result = state && (!!state.disabled || state.running || state.totalActive > 0);
-          if(isRoot || result) {
-            return result;
+          var state = isRoot ? rootAnimateState : (parentElement.data(NG_ANIMATE_STATE) || {});
+          if (state.disabled) {
+            return true;
+          }
+
+          //no matter what, for an animation to work it must reach the root element
+          //this implies that the element is attached to the DOM when the animation is run
+          if (isRoot) {
+            hasParent = true;
           }
 
-          if(isRoot) return true;
+          //once a flag is found that is strictly false then everything before
+          //it will be discarded and all child animations will be restricted
+          if (allowChildAnimations !== false) {
+            var animateChildrenFlag = parentElement.data(NG_ANIMATE_CHILDREN);
+            if(angular.isDefined(animateChildrenFlag)) {
+              allowChildAnimations = animateChildrenFlag;
+            }
+          }
+
+          parentRunningAnimation = parentRunningAnimation ||
+                                   state.running ||
+                                   (state.last && !state.last.isClassBased);
         }
         while(parentElement = parentElement.parent());
 
-        return true;
+        return !hasParent || (!allowChildAnimations && parentRunningAnimation);
       }
     }]);
 
@@ -1089,6 +1164,16 @@ angular.module('ngAnimate', ['ng'])
       var parentCounter = 0;
       var animationReflowQueue = [];
       var cancelAnimationReflow;
+      function clearCacheAfterReflow() {
+        if (!cancelAnimationReflow) {
+          cancelAnimationReflow = $$animateReflow(function() {
+            animationReflowQueue = [];
+            cancelAnimationReflow = null;
+            lookupCache = {};
+          });
+        }
+      }
+
       function afterReflow(element, callback) {
         if(cancelAnimationReflow) {
           cancelAnimationReflow();
@@ -1373,7 +1458,7 @@ angular.module('ngAnimate', ['ng'])
           //the jqLite object, so we're safe to use a single variable to house
           //the styles since there is always only one element being animated
           var oldStyle = node.getAttribute('style') || '';
-          node.setAttribute('style', oldStyle + ' ' + style);
+          node.setAttribute('style', oldStyle + '; ' + style);
         }
 
         element.on(css3AnimationEvents, onAnimationProgress);
@@ -1407,7 +1492,7 @@ angular.module('ngAnimate', ['ng'])
         function onAnimationProgress(event) {
           event.stopPropagation();
           var ev = event.originalEvent || event;
-          var timeStamp = ev.$manualTimeStamp || ev.timeStamp || Date.now();
+          var timeStamp = ev.$manualTimeStamp || Date.now();
 
           /* Firefox (or possibly just Gecko) likes to not round values up
            * when a ms measurement is used for the animation */
@@ -1415,7 +1500,7 @@ angular.module('ngAnimate', ['ng'])
 
           /* $manualTimeStamp is a mocked timeStamp value which is set
            * within browserTrigger(). This is only here so that tests can
-           * mock animations properly. Real events fallback to event.timeStamp,
+           * mock animations properly. Real events fallback to Date.now(),
            * or, if they don't, then a timeStamp is automatically created for them.
            * We're checking to see if the timeStamp surpasses the expected delay,
            * but we're using elapsedTime instead of the timeStamp on the 2nd
@@ -1457,7 +1542,8 @@ angular.module('ngAnimate', ['ng'])
         //cancellation function then it means that there is no animation
         //to perform at all
         var preReflowCancellation = animateBefore(animationEvent, element, className);
-        if(!preReflowCancellation) {
+        if (!preReflowCancellation) {
+          clearCacheAfterReflow();
           animationComplete();
           return;
         }
@@ -1532,6 +1618,7 @@ angular.module('ngAnimate', ['ng'])
             });
             return cancellationMethod;
           }
+          clearCacheAfterReflow();
           animationCompleted();
         },
 
@@ -1556,6 +1643,7 @@ angular.module('ngAnimate', ['ng'])
             });
             return cancellationMethod;
           }
+          clearCacheAfterReflow();
           animationCompleted();
         },
 
@@ -1613,4 +1701,4 @@ angular.module('ngAnimate', ['ng'])
   }]);
 
 
-})(window, window.angular);
\ No newline at end of file
+})(window, window.angular);
index 7aa5d34..31e451f 100644 (file)
@@ -1,5 +1,5 @@
 /**
- * @license AngularJS v1.3.6-build.3675+sha.facfec9
+ * @license AngularJS v1.2.32
  * (c) 2010-2014 Google, Inc. http://angularjs.org
  * License: MIT
  */
@@ -48,7 +48,7 @@ angular.module('ngCookies', ['ng']).
    *   }]);
    * ```
    */
-   factory('$cookies', ['$rootScope', '$browser', function($rootScope, $browser) {
+   factory('$cookies', ['$rootScope', '$browser', function ($rootScope, $browser) {
       var cookies = {},
           lastCookies = {},
           lastBrowserCookies,
@@ -95,7 +95,7 @@ angular.module('ngCookies', ['ng']).
         }
 
         //update all cookies updated in $cookies
-        for (name in cookies) {
+        for(name in cookies) {
           value = cookies[name];
           if (!angular.isString(value)) {
             value = '' + value;
@@ -108,7 +108,7 @@ angular.module('ngCookies', ['ng']).
         }
 
         //verify what was actually stored
-        if (updated) {
+        if (updated){
           updated = false;
           browserCookies = $browser.cookies();
 
diff --git a/src/main/resources/META-INF/resources/designer/lib/angular-highlightjs.js b/src/main/resources/META-INF/resources/designer/lib/angular-highlightjs.js
deleted file mode 100644 (file)
index 1ded24b..0000000
+++ /dev/null
@@ -1,380 +0,0 @@
-/*! angular-highlightjs
-version: 0.4.1
-build date: 2015-02-03
-author: Chih-Hsuan Fan
-https://github.com/pc035860/angular-highlightjs.git */
-
-/* commonjs package manager support (eg componentjs) */
-if (typeof module !== "undefined" && typeof exports !== "undefined" && module.exports === exports){
-  module.exports = 'hljs';
-}
-
-(function (window, angular, undefined) {
-/*global angular*/
-
-function shouldHighlightStatics(attrs) {
-  var should = true;
-  angular.forEach([
-    'source', 'include'
-  ], function (name) {
-    if (attrs[name]) {
-      should = false;
-    }
-  });
-  return should;
-}
-
-
-var ngModule = angular.module('hljs', []);
-
-/**
- * hljsService service
- */
-ngModule.provider('hljsService', function () {
-  var _hljsOptions = {};
-
-  return {
-    setOptions: function (options) {
-      angular.extend(_hljsOptions, options);
-    },
-    getOptions: function () {
-      return angular.copy(_hljsOptions);
-    },
-    $get: ['$window', function ($window) {
-      ($window.hljs.configure || angular.noop)(_hljsOptions);
-      return $window.hljs;
-    }]
-  };
-});
-
-/**
- * hljsCache service
- */
-ngModule.factory('hljsCache', [
-         '$cacheFactory',
-function ($cacheFactory) {
-  return $cacheFactory('hljsCache');
-}]);
-
-/**
- * HljsCtrl controller
- */
-ngModule.controller('HljsCtrl', [
-                  'hljsCache', 'hljsService',
-function HljsCtrl (hljsCache,   hljsService) {
-  var ctrl = this;
-
-  var _elm = null,
-      _lang = null,
-      _code = null,
-      _hlCb = null;
-
-  ctrl.init = function (codeElm) {
-    _elm = codeElm;
-  };
-
-  ctrl.setLanguage = function (lang) {
-    _lang = lang;
-
-    if (_code) {
-      ctrl.highlight(_code);
-    }
-  };
-
-  ctrl.highlightCallback = function (cb) {
-    _hlCb = cb;
-  };
-
-  ctrl.highlight = function (code) {
-    if (!_elm) {
-      return;
-    }
-
-    var res, cacheKey;
-
-    _code = code;
-
-    if (_lang) {
-      // language specified
-      cacheKey = ctrl._cacheKey(_lang, _code);
-      res = hljsCache.get(cacheKey);
-
-      if (!res) {
-        res = hljsService.highlight(_lang, hljsService.fixMarkup(_code), true);
-        hljsCache.put(cacheKey, res);
-      }
-    }
-    else {
-      // language auto-detect
-      cacheKey = ctrl._cacheKey(_code);
-      res = hljsCache.get(cacheKey);
-
-      if (!res) {
-        res = hljsService.highlightAuto(hljsService.fixMarkup(_code));
-        hljsCache.put(cacheKey, res);
-      }
-    }
-
-    _elm.html(res.value);
-    // language as class on the <code> tag
-    _elm.addClass(res.language);
-
-    if (_hlCb !== null && angular.isFunction(_hlCb)) {
-      _hlCb();
-    }
-  };
-
-  ctrl.clear = function () {
-    if (!_elm) {
-      return;
-    }
-    _code = null;
-    _elm.text('');
-  };
-
-  ctrl.release = function () {
-    _elm = null;
-  };
-
-  ctrl._cacheKey = function () {
-    var args = Array.prototype.slice.call(arguments),
-        glue = "!angular-highlightjs!";
-    return args.join(glue);
-  };
-}]);
-
-
-var hljsDir, languageDirFactory, sourceDirFactory, includeDirFactory;
-
-/**
- * hljs directive
- */
-hljsDir = ['$compile', '$parse', function ($compile, $parse) {
-  return {
-    restrict: 'EA',
-    controller: 'HljsCtrl',
-    compile: function(tElm, tAttrs, transclude) {
-      // get static code
-      // strip the starting "new line" character
-      var staticHTML = tElm[0].innerHTML.replace(/^(\r\n|\r|\n)/m, ''),
-          staticText = tElm[0].textContent.replace(/^(\r\n|\r|\n)/m, '');
-
-      // put template
-      tElm.html('<pre><code class="hljs"></code></pre>');
-
-      return function postLink(scope, iElm, iAttrs, ctrl) {
-        var compileCheck, escapeCheck;
-
-        if (angular.isDefined(iAttrs.compile)) {
-          compileCheck = $parse(iAttrs.compile);
-        }
-
-        if (angular.isDefined(iAttrs.escape)) {
-          escapeCheck = $parse(iAttrs.escape);
-        } else if (angular.isDefined(iAttrs.noEscape)) {
-          escapeCheck = $parse('false');
-        }
-
-        ctrl.init(iElm.find('code'));
-
-        if (iAttrs.onhighlight) {
-          ctrl.highlightCallback(function () {
-            scope.$eval(iAttrs.onhighlight);
-          });
-        }
-
-        if ((staticHTML || staticText) && shouldHighlightStatics(iAttrs)) {
-
-          var code;
-
-          // Auto-escape check
-          // default to "true"
-          if (escapeCheck && !escapeCheck(scope)) {
-            code = staticText;
-          }
-          else {
-            code = staticHTML;
-          }
-
-          ctrl.highlight(code);
-
-          // Check if the highlight result needs to be compiled
-          if (compileCheck && compileCheck(scope)) {
-            // compile the new DOM and link it to the current scope.
-            // NOTE: we only compile .childNodes so that
-            // we don't get into infinite loop compiling ourselves
-            $compile(iElm.find('code').contents())(scope);
-          }
-        }
-
-        scope.$on('$destroy', function () {
-          ctrl.release();
-        });
-      };
-    }
-  };
-}];
-
-/**
- * language directive
- */
-languageDirFactory = function (dirName) {
-  return [function () {
-    return {
-      require: '?hljs',
-      restrict: 'A',
-      link: function (scope, iElm, iAttrs, ctrl) {
-        if (!ctrl) {
-          return;
-        }      
-        iAttrs.$observe(dirName, function (lang) {
-          if (angular.isDefined(lang)) {
-            ctrl.setLanguage(lang);
-          }
-        });
-      }
-    };
-  }];
-};
-
-/**
- * source directive
- */
-sourceDirFactory = function (dirName) {
-  return ['$compile', '$parse', function ($compile, $parse) {
-    return {
-      require: '?hljs',
-      restrict: 'A',
-      link: function(scope, iElm, iAttrs, ctrl) {
-        var compileCheck;
-
-        if (!ctrl) {
-          return;
-        }
-
-        if (angular.isDefined(iAttrs.compile)) {
-          compileCheck = $parse(iAttrs.compile);
-        }
-
-        scope.$watch(iAttrs[dirName], function (newCode, oldCode) {
-          if (newCode) {
-            ctrl.highlight(newCode);
-
-            // Check if the highlight result needs to be compiled
-            if (compileCheck && compileCheck(scope)) {
-              // compile the new DOM and link it to the current scope.
-              // NOTE: we only compile .childNodes so that
-              // we don't get into infinite loop compiling ourselves
-              $compile(iElm.find('code').contents())(scope);
-            }
-          }
-          else {
-            ctrl.clear();
-          }
-        });
-      }
-    };
-  }];
-};
-
-/**
- * include directive
- */
-includeDirFactory = function (dirName) {
-  return [
-             '$http', '$templateCache', '$q', '$compile', '$parse',
-    function ($http,   $templateCache,   $q,   $compile,   $parse) {
-      return {
-        require: '?hljs',
-        restrict: 'A',
-        compile: function(tElm, tAttrs, transclude) {
-          var srcExpr = tAttrs[dirName];
-
-          return function postLink(scope, iElm, iAttrs, ctrl) {
-            var changeCounter = 0, compileCheck;
-
-            if (!ctrl) {
-              return;
-            }
-
-            if (angular.isDefined(iAttrs.compile)) {
-              compileCheck = $parse(iAttrs.compile);
-            }
-
-            scope.$watch(srcExpr, function (src) {
-              var thisChangeId = ++changeCounter;
-
-              if (src && angular.isString(src)) {
-                var templateCachePromise, dfd;
-
-                templateCachePromise = $templateCache.get(src);
-                if (!templateCachePromise) {
-                  dfd = $q.defer();
-                  $http.get(src, {
-                    cache: $templateCache,
-                    transformResponse: function(data, headersGetter) {
-                      // Return the raw string, so $http doesn't parse it
-                      // if it's json.
-                      return data;
-                    }
-                  }).success(function (code) {
-                    if (thisChangeId !== changeCounter) {
-                      return;
-                    }
-                    dfd.resolve(code);
-                  }).error(function() {
-                    if (thisChangeId === changeCounter) {
-                      ctrl.clear();
-                    }
-                    dfd.resolve();
-                  });
-                  templateCachePromise = dfd.promise;
-                }
-
-                $q.when(templateCachePromise)
-                .then(function (code) {
-                  if (!code) {
-                    return;
-                  }
-
-                  // $templateCache from $http
-                  if (angular.isArray(code)) {
-                    // 1.1.5
-                    code = code[1];
-                  }
-                  else if (angular.isObject(code)) {
-                    // 1.0.7
-                    code = code.data;
-                  }
-
-                  code = code.replace(/^(\r\n|\r|\n)/m, '');
-                  ctrl.highlight(code);
-
-                  // Check if the highlight result needs to be compiled
-                  if (compileCheck && compileCheck(scope)) {
-                    // compile the new DOM and link it to the current scope.
-                    // NOTE: we only compile .childNodes so that
-                    // we don't get into infinite loop compiling ourselves
-                    $compile(iElm.find('code').contents())(scope);
-                  }
-                });
-              }
-              else {
-                ctrl.clear();
-              }
-            });
-          };
-        }
-      };
-  }];
-};
-
-/**
- * Add directives
- */
-ngModule
-.directive('hljs', hljsDir)
-.directive('language', languageDirFactory('language'))
-.directive('source', sourceDirFactory('source'))
-.directive('include', includeDirFactory('include'));
-})(window, window.angular);
\ No newline at end of file
index 393d962..b880b1d 100644 (file)
@@ -1,5 +1,5 @@
 /**
- * @license AngularJS v1.2.26
+ * @license AngularJS v1.2.32
  * (c) 2010-2014 Google, Inc. http://angularjs.org
  * License: MIT
  */
@@ -582,7 +582,7 @@ function $RouteProvider(){
         if (i === 0) {
           result.push(segment);
         } else {
-          var segmentMatch = segment.match(/(\w+)(.*)/);
+          var segmentMatch = segment.match(/(\w+)(?:[?*])?(.*)/);
           var key = segmentMatch[1];
           result.push(params[key]);
           result.push(segmentMatch[2] || '');
index 2a28206..65f4719 100644 (file)
@@ -1,5 +1,5 @@
 /**
- * @license AngularJS v1.2.16
+ * @license AngularJS v1.2.32
  * (c) 2010-2014 Google, Inc. http://angularjs.org
  * License: MIT
  */
@@ -42,7 +42,7 @@ var $sanitizeMinErr = angular.$$minErr('$sanitize');
 /**
  * @ngdoc service
  * @name $sanitize
- * @function
+ * @kind function
  *
  * @description
  *   The input is sanitized by parsing the html into tokens. All safe tokens (from a whitelist) are
@@ -57,20 +57,21 @@ var $sanitizeMinErr = angular.$$minErr('$sanitize');
  * @returns {string} Sanitized html.
  *
  * @example
-   <example module="ngSanitize" deps="angular-sanitize.js">
+   <example module="sanitizeExample" deps="angular-sanitize.js">
    <file name="index.html">
      <script>
-       function Ctrl($scope, $sce) {
-         $scope.snippet =
-           '<p style="color:blue">an html\n' +
-           '<em onmouseover="this.textContent=\'PWN3D!\'">click here</em>\n' +
-           'snippet</p>';
-         $scope.deliberatelyTrustDangerousSnippet = function() {
-           return $sce.trustAsHtml($scope.snippet);
-         };
-       }
+         angular.module('sanitizeExample', ['ngSanitize'])
+           .controller('ExampleController', ['$scope', '$sce', function($scope, $sce) {
+             $scope.snippet =
+               '<p style="color:blue">an html\n' +
+               '<em onmouseover="this.textContent=\'PWN3D!\'">click here</em>\n' +
+               'snippet</p>';
+             $scope.deliberatelyTrustDangerousSnippet = function() {
+               return $sce.trustAsHtml($scope.snippet);
+             };
+           }]);
      </script>
-     <div ng-controller="Ctrl">
+     <div ng-controller="ExampleController">
         Snippet: <textarea ng-model="snippet" cols="60" rows="3"></textarea>
        <table>
          <tr>
@@ -158,14 +159,15 @@ function sanitizeText(chars) {
 
 // Regular Expressions for parsing tags and attributes
 var START_TAG_REGEXP =
-       /^<\s*([\w:-]+)((?:\s+[\w:-]+(?:\s*=\s*(?:(?:"[^"]*")|(?:'[^']*')|[^>\s]+))?)*)\s*(\/?)\s*>/,
-  END_TAG_REGEXP = /^<\s*\/\s*([\w:-]+)[^>]*>/,
+       /^<((?:[a-zA-Z])[\w:-]*)((?:\s+[\w:-]+(?:\s*=\s*(?:(?:"[^"]*")|(?:'[^']*')|[^>\s]+))?)*)\s*(\/?)\s*(>?)/,
+  END_TAG_REGEXP = /^<\/\s*([\w:-]+)[^>]*>/,
   ATTR_REGEXP = /([\w:-]+)(?:\s*=\s*(?:(?:"((?:[^"])*)")|(?:'((?:[^'])*)')|([^>\s]+)))?/g,
   BEGIN_TAG_REGEXP = /^</,
-  BEGING_END_TAGE_REGEXP = /^<\s*\//,
+  BEGING_END_TAGE_REGEXP = /^<\//,
   COMMENT_REGEXP = /<!--(.*?)-->/g,
   DOCTYPE_REGEXP = /<!DOCTYPE([^>]*?)>/i,
   CDATA_REGEXP = /<!\[CDATA\[(.*?)]]>/g,
+  SURROGATE_PAIR_REGEXP = /[\uD800-\uDBFF][\uDC00-\uDFFF]/g,
   // Match everything outside of normal chars and " (quote character)
   NON_ALPHANUMERIC_REGEXP = /([^\#-~| |!])/g;
 
@@ -207,7 +209,7 @@ var validElements = angular.extend({},
                                    optionalEndTagElements);
 
 //Attributes that have href and hence need to be sanitized
-var uriAttrs = makeMap("background,cite,href,longdesc,src,usemap");
+var uriAttrs = makeMap("background,cite,href,longdesc,src");
 var validAttrs = angular.extend({}, uriAttrs, makeMap(
     'abbr,align,alt,axis,bgcolor,border,cellpadding,cellspacing,class,clear,'+
     'color,cols,colspan,compact,coords,dir,face,headers,height,hreflang,hspace,'+
@@ -235,10 +237,18 @@ function makeMap(str) {
  * @param {object} handler
  */
 function htmlParser( html, handler ) {
-  var index, chars, match, stack = [], last = html;
+  if (typeof html !== 'string') {
+    if (html === null || typeof html === 'undefined') {
+      html = '';
+    } else {
+      html = '' + html;
+    }
+  }
+  var index, chars, match, stack = [], last = html, text;
   stack.last = function() { return stack[ stack.length - 1 ]; };
 
   while ( html ) {
+    text = '';
     chars = true;
 
     // Make sure we're not in a script or style element
@@ -277,16 +287,23 @@ function htmlParser( html, handler ) {
         match = html.match( START_TAG_REGEXP );
 
         if ( match ) {
-          html = html.substring( match[0].length );
-          match[0].replace( START_TAG_REGEXP, parseStartTag );
+          // We only have a valid start-tag if there is a '>'.
+          if ( match[4] ) {
+            html = html.substring( match[0].length );
+            match[0].replace( START_TAG_REGEXP, parseStartTag );
+          }
           chars = false;
+        } else {
+          // no ending tag found --- this piece should be encoded as an entity.
+          text += '<';
+          html = html.substring(1);
         }
       }
 
       if ( chars ) {
         index = html.indexOf("<");
 
-        var text = index < 0 ? html : html.substring( 0, index );
+        text += index < 0 ? html : html.substring( 0, index );
         html = index < 0 ? "" : html.substring( index );
 
         if (handler.chars) handler.chars( decodeEntities(text) );
@@ -404,6 +421,11 @@ function decodeEntities(value) {
 function encodeEntities(value) {
   return value.
     replace(/&/g, '&amp;').
+    replace(SURROGATE_PAIR_REGEXP, function (value) {
+      var hi = value.charCodeAt(0);
+      var low = value.charCodeAt(1);
+      return '&#' + (((hi - 0xD800) * 0x400) + (low - 0xDC00) + 0x10000) + ';';
+    }).
     replace(NON_ALPHANUMERIC_REGEXP, function(value){
       return '&#' + value.charCodeAt(0) + ';';
     }).
@@ -476,7 +498,7 @@ angular.module('ngSanitize', []).provider('$sanitize', $SanitizeProvider);
 /**
  * @ngdoc filter
  * @name linky
- * @function
+ * @kind function
  *
  * @description
  * Finds links in text input and turns them into html links. Supports http/https/ftp/mailto and
@@ -492,20 +514,21 @@ angular.module('ngSanitize', []).provider('$sanitize', $SanitizeProvider);
    <span ng-bind-html="linky_expression | linky"></span>
  *
  * @example
-   <example module="ngSanitize" deps="angular-sanitize.js">
+   <example module="linkyExample" deps="angular-sanitize.js">
      <file name="index.html">
        <script>
-         function Ctrl($scope) {
-           $scope.snippet =
-             'Pretty text with some links:\n'+
-             'http://angularjs.org/,\n'+
-             'mailto:us@somewhere.org,\n'+
-             'another@somewhere.org,\n'+
-             'and one more: ftp://127.0.0.1/.';
-           $scope.snippetWithTarget = 'http://angularjs.org/';
-         }
+         angular.module('linkyExample', ['ngSanitize'])
+           .controller('ExampleController', ['$scope', function($scope) {
+             $scope.snippet =
+               'Pretty text with some links:\n'+
+               'http://angularjs.org/,\n'+
+               'mailto:us@somewhere.org,\n'+
+               'another@somewhere.org,\n'+
+               'and one more: ftp://127.0.0.1/.';
+             $scope.snippetWithTarget = 'http://angularjs.org/';
+           }]);
        </script>
-       <div ng-controller="Ctrl">
+       <div ng-controller="ExampleController">
        Snippet: <textarea ng-model="snippet" cols="60" rows="3"></textarea>
        <table>
          <tr>
@@ -574,7 +597,7 @@ angular.module('ngSanitize', []).provider('$sanitize', $SanitizeProvider);
  */
 angular.module('ngSanitize').filter('linky', ['$sanitize', function($sanitize) {
   var LINKY_URL_REGEXP =
-        /((ftp|https?):\/\/|(mailto:)?[A-Za-z0-9._%+-]+@)\S*[^\s.;,(){}<>]/,
+        /((ftp|https?):\/\/|(mailto:)?[A-Za-z0-9._%+-]+@)\S*[^\s.;,(){}<>"]/,
       MAILTO_REGEXP = /^mailto:/;
 
   return function(text, target) {
@@ -611,9 +634,9 @@ angular.module('ngSanitize').filter('linky', ['$sanitize', function($sanitize) {
         html.push(target);
         html.push('" ');
       }
-      html.push('href="');
-      html.push(url);
-      html.push('">');
+      html.push('href="',
+                url.replace('"', '&quot;'),
+                '">');
       addText(text);
       html.push('</a>');
     }
@@ -621,4 +644,4 @@ angular.module('ngSanitize').filter('linky', ['$sanitize', function($sanitize) {
 }]);
 
 
-})(window, window.angular);
\ No newline at end of file
+})(window, window.angular);
diff --git a/src/main/resources/META-INF/resources/designer/lib/angular-touch.js b/src/main/resources/META-INF/resources/designer/lib/angular-touch.js
deleted file mode 100644 (file)
index 8d16019..0000000
+++ /dev/null
@@ -1,584 +0,0 @@
-/**
- * @license AngularJS v1.2.26
- * (c) 2010-2014 Google, Inc. http://angularjs.org
- * License: MIT
- */
-(function(window, angular, undefined) {'use strict';
-
-/**
- * @ngdoc module
- * @name ngTouch
- * @description
- *
- * # ngTouch
- *
- * The `ngTouch` module provides touch events and other helpers for touch-enabled devices.
- * The implementation is based on jQuery Mobile touch event handling
- * ([jquerymobile.com](http://jquerymobile.com/)).
- *
- *
- * See {@link ngTouch.$swipe `$swipe`} for usage.
- *
- * <div doc-module-components="ngTouch"></div>
- *
- */
-
-// define ngTouch module
-/* global -ngTouch */
-var ngTouch = angular.module('ngTouch', []);
-
-/* global ngTouch: false */
-
-    /**
-     * @ngdoc service
-     * @name $swipe
-     *
-     * @description
-     * The `$swipe` service is a service that abstracts the messier details of hold-and-drag swipe
-     * behavior, to make implementing swipe-related directives more convenient.
-     *
-     * Requires the {@link ngTouch `ngTouch`} module to be installed.
-     *
-     * `$swipe` is used by the `ngSwipeLeft` and `ngSwipeRight` directives in `ngTouch`, and by
-     * `ngCarousel` in a separate component.
-     *
-     * # Usage
-     * The `$swipe` service is an object with a single method: `bind`. `bind` takes an element
-     * which is to be watched for swipes, and an object with four handler functions. See the
-     * documentation for `bind` below.
-     */
-
-ngTouch.factory('$swipe', [function() {
-  // The total distance in any direction before we make the call on swipe vs. scroll.
-  var MOVE_BUFFER_RADIUS = 10;
-
-  function getCoordinates(event) {
-    var touches = event.touches && event.touches.length ? event.touches : [event];
-    var e = (event.changedTouches && event.changedTouches[0]) ||
-        (event.originalEvent && event.originalEvent.changedTouches &&
-            event.originalEvent.changedTouches[0]) ||
-        touches[0].originalEvent || touches[0];
-
-    return {
-      x: e.clientX,
-      y: e.clientY
-    };
-  }
-
-  return {
-    /**
-     * @ngdoc method
-     * @name $swipe#bind
-     *
-     * @description
-     * The main method of `$swipe`. It takes an element to be watched for swipe motions, and an
-     * object containing event handlers.
-     *
-     * The four events are `start`, `move`, `end`, and `cancel`. `start`, `move`, and `end`
-     * receive as a parameter a coordinates object of the form `{ x: 150, y: 310 }`.
-     *
-     * `start` is called on either `mousedown` or `touchstart`. After this event, `$swipe` is
-     * watching for `touchmove` or `mousemove` events. These events are ignored until the total
-     * distance moved in either dimension exceeds a small threshold.
-     *
-     * Once this threshold is exceeded, either the horizontal or vertical delta is greater.
-     * - If the horizontal distance is greater, this is a swipe and `move` and `end` events follow.
-     * - If the vertical distance is greater, this is a scroll, and we let the browser take over.
-     *   A `cancel` event is sent.
-     *
-     * `move` is called on `mousemove` and `touchmove` after the above logic has determined that
-     * a swipe is in progress.
-     *
-     * `end` is called when a swipe is successfully completed with a `touchend` or `mouseup`.
-     *
-     * `cancel` is called either on a `touchcancel` from the browser, or when we begin scrolling
-     * as described above.
-     *
-     */
-    bind: function(element, eventHandlers) {
-      // Absolute total movement, used to control swipe vs. scroll.
-      var totalX, totalY;
-      // Coordinates of the start position.
-      var startCoords;
-      // Last event's position.
-      var lastPos;
-      // Whether a swipe is active.
-      var active = false;
-
-      element.on('touchstart mousedown', function(event) {
-        startCoords = getCoordinates(event);
-        active = true;
-        totalX = 0;
-        totalY = 0;
-        lastPos = startCoords;
-        eventHandlers['start'] && eventHandlers['start'](startCoords, event);
-      });
-
-      element.on('touchcancel', function(event) {
-        active = false;
-        eventHandlers['cancel'] && eventHandlers['cancel'](event);
-      });
-
-      element.on('touchmove mousemove', function(event) {
-        if (!active) return;
-
-        // Android will send a touchcancel if it thinks we're starting to scroll.
-        // So when the total distance (+ or - or both) exceeds 10px in either direction,
-        // we either:
-        // - On totalX > totalY, we send preventDefault() and treat this as a swipe.
-        // - On totalY > totalX, we let the browser handle it as a scroll.
-
-        if (!startCoords) return;
-        var coords = getCoordinates(event);
-
-        totalX += Math.abs(coords.x - lastPos.x);
-        totalY += Math.abs(coords.y - lastPos.y);
-
-        lastPos = coords;
-
-        if (totalX < MOVE_BUFFER_RADIUS && totalY < MOVE_BUFFER_RADIUS) {
-          return;
-        }
-
-        // One of totalX or totalY has exceeded the buffer, so decide on swipe vs. scroll.
-        if (totalY > totalX) {
-          // Allow native scrolling to take over.
-          active = false;
-          eventHandlers['cancel'] && eventHandlers['cancel'](event);
-          return;
-        } else {
-          // Prevent the browser from scrolling.
-          event.preventDefault();
-          eventHandlers['move'] && eventHandlers['move'](coords, event);
-        }
-      });
-
-      element.on('touchend mouseup', function(event) {
-        if (!active) return;
-        active = false;
-        eventHandlers['end'] && eventHandlers['end'](getCoordinates(event), event);
-      });
-    }
-  };
-}]);
-
-/* global ngTouch: false */
-
-/**
- * @ngdoc directive
- * @name ngClick
- *
- * @description
- * A more powerful replacement for the default ngClick designed to be used on touchscreen
- * devices. Most mobile browsers wait about 300ms after a tap-and-release before sending
- * the click event. This version handles them immediately, and then prevents the
- * following click event from propagating.
- *
- * Requires the {@link ngTouch `ngTouch`} module to be installed.
- *
- * This directive can fall back to using an ordinary click event, and so works on desktop
- * browsers as well as mobile.
- *
- * This directive also sets the CSS class `ng-click-active` while the element is being held
- * down (by a mouse click or touch) so you can restyle the depressed element if you wish.
- *
- * @element ANY
- * @param {expression} ngClick {@link guide/expression Expression} to evaluate
- * upon tap. (Event object is available as `$event`)
- *
- * @example
-    <example module="ngClickExample" deps="angular-touch.js">
-      <file name="index.html">
-        <button ng-click="count = count + 1" ng-init="count=0">
-          Increment
-        </button>
-        count: {{ count }}
-      </file>
-      <file name="script.js">
-        angular.module('ngClickExample', ['ngTouch']);
-      </file>
-    </example>
- */
-
-ngTouch.config(['$provide', function($provide) {
-  $provide.decorator('ngClickDirective', ['$delegate', function($delegate) {
-    // drop the default ngClick directive
-    $delegate.shift();
-    return $delegate;
-  }]);
-}]);
-
-ngTouch.directive('ngClick', ['$parse', '$timeout', '$rootElement',
-    function($parse, $timeout, $rootElement) {
-  var TAP_DURATION = 750; // Shorter than 750ms is a tap, longer is a taphold or drag.
-  var MOVE_TOLERANCE = 12; // 12px seems to work in most mobile browsers.
-  var PREVENT_DURATION = 2500; // 2.5 seconds maximum from preventGhostClick call to click
-  var CLICKBUSTER_THRESHOLD = 25; // 25 pixels in any dimension is the limit for busting clicks.
-
-  var ACTIVE_CLASS_NAME = 'ng-click-active';
-  var lastPreventedTime;
-  var touchCoordinates;
-  var lastLabelClickCoordinates;
-
-
-  // TAP EVENTS AND GHOST CLICKS
-  //
-  // Why tap events?
-  // Mobile browsers detect a tap, then wait a moment (usually ~300ms) to see if you're
-  // double-tapping, and then fire a click event.
-  //
-  // This delay sucks and makes mobile apps feel unresponsive.
-  // So we detect touchstart, touchmove, touchcancel and touchend ourselves and determine when
-  // the user has tapped on something.
-  //
-  // What happens when the browser then generates a click event?
-  // The browser, of course, also detects the tap and fires a click after a delay. This results in
-  // tapping/clicking twice. We do "clickbusting" to prevent it.
-  //
-  // How does it work?
-  // We attach global touchstart and click handlers, that run during the capture (early) phase.
-  // So the sequence for a tap is:
-  // - global touchstart: Sets an "allowable region" at the point touched.
-  // - element's touchstart: Starts a touch
-  // (- touchmove or touchcancel ends the touch, no click follows)
-  // - element's touchend: Determines if the tap is valid (didn't move too far away, didn't hold
-  //   too long) and fires the user's tap handler. The touchend also calls preventGhostClick().
-  // - preventGhostClick() removes the allowable region the global touchstart created.
-  // - The browser generates a click event.
-  // - The global click handler catches the click, and checks whether it was in an allowable region.
-  //     - If preventGhostClick was called, the region will have been removed, the click is busted.
-  //     - If the region is still there, the click proceeds normally. Therefore clicks on links and
-  //       other elements without ngTap on them work normally.
-  //
-  // This is an ugly, terrible hack!
-  // Yeah, tell me about it. The alternatives are using the slow click events, or making our users
-  // deal with the ghost clicks, so I consider this the least of evils. Fortunately Angular
-  // encapsulates this ugly logic away from the user.
-  //
-  // Why not just put click handlers on the element?
-  // We do that too, just to be sure. If the tap event caused the DOM to change,
-  // it is possible another element is now in that position. To take account for these possibly
-  // distinct elements, the handlers are global and care only about coordinates.
-
-  // Checks if the coordinates are close enough to be within the region.
-  function hit(x1, y1, x2, y2) {
-    return Math.abs(x1 - x2) < CLICKBUSTER_THRESHOLD && Math.abs(y1 - y2) < CLICKBUSTER_THRESHOLD;
-  }
-
-  // Checks a list of allowable regions against a click location.
-  // Returns true if the click should be allowed.
-  // Splices out the allowable region from the list after it has been used.
-  function checkAllowableRegions(touchCoordinates, x, y) {
-    for (var i = 0; i < touchCoordinates.length; i += 2) {
-      if (hit(touchCoordinates[i], touchCoordinates[i+1], x, y)) {
-        touchCoordinates.splice(i, i + 2);
-        return true; // allowable region
-      }
-    }
-    return false; // No allowable region; bust it.
-  }
-
-  // Global click handler that prevents the click if it's in a bustable zone and preventGhostClick
-  // was called recently.
-  function onClick(event) {
-    if (Date.now() - lastPreventedTime > PREVENT_DURATION) {
-      return; // Too old.
-    }
-
-    var touches = event.touches && event.touches.length ? event.touches : [event];
-    var x = touches[0].clientX;
-    var y = touches[0].clientY;
-    // Work around desktop Webkit quirk where clicking a label will fire two clicks (on the label
-    // and on the input element). Depending on the exact browser, this second click we don't want
-    // to bust has either (0,0), negative coordinates, or coordinates equal to triggering label
-    // click event
-    if (x < 1 && y < 1) {
-      return; // offscreen
-    }
-    if (lastLabelClickCoordinates &&
-        lastLabelClickCoordinates[0] === x && lastLabelClickCoordinates[1] === y) {
-      return; // input click triggered by label click
-    }
-    // reset label click coordinates on first subsequent click
-    if (lastLabelClickCoordinates) {
-      lastLabelClickCoordinates = null;
-    }
-    // remember label click coordinates to prevent click busting of trigger click event on input
-    if (event.target.tagName.toLowerCase() === 'label') {
-      lastLabelClickCoordinates = [x, y];
-    }
-
-    // Look for an allowable region containing this click.
-    // If we find one, that means it was created by touchstart and not removed by
-    // preventGhostClick, so we don't bust it.
-    if (checkAllowableRegions(touchCoordinates, x, y)) {
-      return;
-    }
-
-    // If we didn't find an allowable region, bust the click.
-    event.stopPropagation();
-    event.preventDefault();
-
-    // Blur focused form elements
-    event.target && event.target.blur();
-  }
-
-
-  // Global touchstart handler that creates an allowable region for a click event.
-  // This allowable region can be removed by preventGhostClick if we want to bust it.
-  function onTouchStart(event) {
-    var touches = event.touches && event.touches.length ? event.touches : [event];
-    var x = touches[0].clientX;
-    var y = touches[0].clientY;
-    touchCoordinates.push(x, y);
-
-    $timeout(function() {
-      // Remove the allowable region.
-      for (var i = 0; i < touchCoordinates.length; i += 2) {
-        if (touchCoordinates[i] == x && touchCoordinates[i+1] == y) {
-          touchCoordinates.splice(i, i + 2);
-          return;
-        }
-      }
-    }, PREVENT_DURATION, false);
-  }
-
-  // On the first call, attaches some event handlers. Then whenever it gets called, it creates a
-  // zone around the touchstart where clicks will get busted.
-  function preventGhostClick(x, y) {
-    if (!touchCoordinates) {
-      $rootElement[0].addEventListener('click', onClick, true);
-      $rootElement[0].addEventListener('touchstart', onTouchStart, true);
-      touchCoordinates = [];
-    }
-
-    lastPreventedTime = Date.now();
-
-    checkAllowableRegions(touchCoordinates, x, y);
-  }
-
-  // Actual linking function.
-  return function(scope, element, attr) {
-    var clickHandler = $parse(attr.ngClick),
-        tapping = false,
-        tapElement,  // Used to blur the element after a tap.
-        startTime,   // Used to check if the tap was held too long.
-        touchStartX,
-        touchStartY;
-
-    function resetState() {
-      tapping = false;
-      element.removeClass(ACTIVE_CLASS_NAME);
-    }
-
-    element.on('touchstart', function(event) {
-      tapping = true;
-      tapElement = event.target ? event.target : event.srcElement; // IE uses srcElement.
-      // Hack for Safari, which can target text nodes instead of containers.
-      if(tapElement.nodeType == 3) {
-        tapElement = tapElement.parentNode;
-      }
-
-      element.addClass(ACTIVE_CLASS_NAME);
-
-      startTime = Date.now();
-
-      var touches = event.touches && event.touches.length ? event.touches : [event];
-      var e = touches[0].originalEvent || touches[0];
-      touchStartX = e.clientX;
-      touchStartY = e.clientY;
-    });
-
-    element.on('touchmove', function(event) {
-      resetState();
-    });
-
-    element.on('touchcancel', function(event) {
-      resetState();
-    });
-
-    element.on('touchend', function(event) {
-      var diff = Date.now() - startTime;
-
-      var touches = (event.changedTouches && event.changedTouches.length) ? event.changedTouches :
-          ((event.touches && event.touches.length) ? event.touches : [event]);
-      var e = touches[0].originalEvent || touches[0];
-      var x = e.clientX;
-      var y = e.clientY;
-      var dist = Math.sqrt( Math.pow(x - touchStartX, 2) + Math.pow(y - touchStartY, 2) );
-
-      if (tapping && diff < TAP_DURATION && dist < MOVE_TOLERANCE) {
-        // Call preventGhostClick so the clickbuster will catch the corresponding click.
-        preventGhostClick(x, y);
-
-        // Blur the focused element (the button, probably) before firing the callback.
-        // This doesn't work perfectly on Android Chrome, but seems to work elsewhere.
-        // I couldn't get anything to work reliably on Android Chrome.
-        if (tapElement) {
-          tapElement.blur();
-        }
-
-        if (!angular.isDefined(attr.disabled) || attr.disabled === false) {
-          element.triggerHandler('click', [event]);
-        }
-      }
-
-      resetState();
-    });
-
-    // Hack for iOS Safari's benefit. It goes searching for onclick handlers and is liable to click
-    // something else nearby.
-    element.onclick = function(event) { };
-
-    // Actual click handler.
-    // There are three different kinds of clicks, only two of which reach this point.
-    // - On desktop browsers without touch events, their clicks will always come here.
-    // - On mobile browsers, the simulated "fast" click will call this.
-    // - But the browser's follow-up slow click will be "busted" before it reaches this handler.
-    // Therefore it's safe to use this directive on both mobile and desktop.
-    element.on('click', function(event, touchend) {
-      scope.$apply(function() {
-        clickHandler(scope, {$event: (touchend || event)});
-      });
-    });
-
-    element.on('mousedown', function(event) {
-      element.addClass(ACTIVE_CLASS_NAME);
-    });
-
-    element.on('mousemove mouseup', function(event) {
-      element.removeClass(ACTIVE_CLASS_NAME);
-    });
-
-  };
-}]);
-
-/* global ngTouch: false */
-
-/**
- * @ngdoc directive
- * @name ngSwipeLeft
- *
- * @description
- * Specify custom behavior when an element is swiped to the left on a touchscreen device.
- * A leftward swipe is a quick, right-to-left slide of the finger.
- * Though ngSwipeLeft is designed for touch-based devices, it will work with a mouse click and drag
- * too.
- *
- * Requires the {@link ngTouch `ngTouch`} module to be installed.
- *
- * @element ANY
- * @param {expression} ngSwipeLeft {@link guide/expression Expression} to evaluate
- * upon left swipe. (Event object is available as `$event`)
- *
- * @example
-    <example module="ngSwipeLeftExample" deps="angular-touch.js">
-      <file name="index.html">
-        <div ng-show="!showActions" ng-swipe-left="showActions = true">
-          Some list content, like an email in the inbox
-        </div>
-        <div ng-show="showActions" ng-swipe-right="showActions = false">
-          <button ng-click="reply()">Reply</button>
-          <button ng-click="delete()">Delete</button>
-        </div>
-      </file>
-      <file name="script.js">
-        angular.module('ngSwipeLeftExample', ['ngTouch']);
-      </file>
-    </example>
- */
-
-/**
- * @ngdoc directive
- * @name ngSwipeRight
- *
- * @description
- * Specify custom behavior when an element is swiped to the right on a touchscreen device.
- * A rightward swipe is a quick, left-to-right slide of the finger.
- * Though ngSwipeRight is designed for touch-based devices, it will work with a mouse click and drag
- * too.
- *
- * Requires the {@link ngTouch `ngTouch`} module to be installed.
- *
- * @element ANY
- * @param {expression} ngSwipeRight {@link guide/expression Expression} to evaluate
- * upon right swipe. (Event object is available as `$event`)
- *
- * @example
-    <example module="ngSwipeRightExample" deps="angular-touch.js">
-      <file name="index.html">
-        <div ng-show="!showActions" ng-swipe-left="showActions = true">
-          Some list content, like an email in the inbox
-        </div>
-        <div ng-show="showActions" ng-swipe-right="showActions = false">
-          <button ng-click="reply()">Reply</button>
-          <button ng-click="delete()">Delete</button>
-        </div>
-      </file>
-      <file name="script.js">
-        angular.module('ngSwipeRightExample', ['ngTouch']);
-      </file>
-    </example>
- */
-
-function makeSwipeDirective(directiveName, direction, eventName) {
-  ngTouch.directive(directiveName, ['$parse', '$swipe', function($parse, $swipe) {
-    // The maximum vertical delta for a swipe should be less than 75px.
-    var MAX_VERTICAL_DISTANCE = 75;
-    // Vertical distance should not be more than a fraction of the horizontal distance.
-    var MAX_VERTICAL_RATIO = 0.3;
-    // At least a 30px lateral motion is necessary for a swipe.
-    var MIN_HORIZONTAL_DISTANCE = 30;
-
-    return function(scope, element, attr) {
-      var swipeHandler = $parse(attr[directiveName]);
-
-      var startCoords, valid;
-
-      function validSwipe(coords) {
-        // Check that it's within the coordinates.
-        // Absolute vertical distance must be within tolerances.
-        // Horizontal distance, we take the current X - the starting X.
-        // This is negative for leftward swipes and positive for rightward swipes.
-        // After multiplying by the direction (-1 for left, +1 for right), legal swipes
-        // (ie. same direction as the directive wants) will have a positive delta and
-        // illegal ones a negative delta.
-        // Therefore this delta must be positive, and larger than the minimum.
-        if (!startCoords) return false;
-        var deltaY = Math.abs(coords.y - startCoords.y);
-        var deltaX = (coords.x - startCoords.x) * direction;
-        return valid && // Short circuit for already-invalidated swipes.
-            deltaY < MAX_VERTICAL_DISTANCE &&
-            deltaX > 0 &&
-            deltaX > MIN_HORIZONTAL_DISTANCE &&
-            deltaY / deltaX < MAX_VERTICAL_RATIO;
-      }
-
-      $swipe.bind(element, {
-        'start': function(coords, event) {
-          startCoords = coords;
-          valid = true;
-        },
-        'cancel': function(event) {
-          valid = false;
-        },
-        'end': function(coords, event) {
-          if (validSwipe(coords)) {
-            scope.$apply(function() {
-              element.triggerHandler(eventName);
-              swipeHandler(scope, {$event: event});
-            });
-          }
-        }
-      });
-    };
-  }]);
-}
-
-// Left is negative X-coordinate, right is positive.
-makeSwipeDirective('ngSwipeLeft', -1, 'swipeleft');
-makeSwipeDirective('ngSwipeRight', 1, 'swiperight');
-
-
-
-})(window, window.angular);
\ No newline at end of file
index 5665a3c..f1a6c04 100644 (file)
@@ -1,5 +1,5 @@
 /*
- AngularJS v1.2.16
+ AngularJS v1.2.32
  (c) 2010-2014 Google, Inc. http://angularjs.org
  License: MIT
 */
@@ -10,4 +10,4 @@ a.touches&&a.touches.length?a.touches:[a],c=b[0].clientX,b=b[0].clientY;1>c&&1>b
 b,e){function d(){k=!1;b.removeClass(h)}var g=f(e.ngClick),k=!1,t,r,u,x;b.on("touchstart",function(a){k=!0;t=a.target?a.target:a.srcElement;3==t.nodeType&&(t=t.parentNode);b.addClass(h);r=Date.now();a=a.touches&&a.touches.length?a.touches:[a];a=a[0].originalEvent||a[0];u=a.clientX;x=a.clientY});b.on("touchmove",function(a){d()});b.on("touchcancel",function(a){d()});b.on("touchend",function(a){var g=Date.now()-r,f=a.changedTouches&&a.changedTouches.length?a.changedTouches:a.touches&&a.touches.length?
 a.touches:[a],h=f[0].originalEvent||f[0],f=h.clientX,h=h.clientY,s=Math.sqrt(Math.pow(f-u,2)+Math.pow(h-x,2));k&&(750>g&&12>s)&&(l||(c[0].addEventListener("click",p,!0),c[0].addEventListener("touchstart",q,!0),l=[]),n=Date.now(),m(l,f,h),t&&t.blur(),w.isDefined(e.disabled)&&!1!==e.disabled||b.triggerHandler("click",[a]));d()});b.onclick=function(a){};b.on("click",function(b,c){a.$apply(function(){g(a,{$event:c||b})})});b.on("mousedown",function(a){b.addClass(h)});b.on("mousemove mouseup",function(a){b.removeClass(h)})}}]);
 u("ngSwipeLeft",-1,"swipeleft");u("ngSwipeRight",1,"swiperight")})(window,window.angular);
-//# sourceMappingURL=angular-touch.min.js.map
\ No newline at end of file
+//# sourceMappingURL=angular-touch.min.js.map
index b9f64f4..77e1679 100644 (file)
 /*
- AngularJS v1.2.26
+ AngularJS v1.2.32
  (c) 2010-2014 Google, Inc. http://angularjs.org
  License: MIT
 */
-(function(W,X,t){'use strict';function C(b){return function(){var a=arguments[0],c,a="["+(b?b+":":"")+a+"] http://errors.angularjs.org/1.2.26/"+(b?b+"/":"")+a;for(c=1;c<arguments.length;c++)a=a+(1==c?"?":"&")+"p"+(c-1)+"="+encodeURIComponent("function"==typeof arguments[c]?arguments[c].toString().replace(/ \{[\s\S]*$/,""):"undefined"==typeof arguments[c]?"undefined":"string"!=typeof arguments[c]?JSON.stringify(arguments[c]):arguments[c]);return Error(a)}}function Pa(b){if(null==b||Ga(b))return!1;
-var a=b.length;return 1===b.nodeType&&a?!0:v(b)||J(b)||0===a||"number"===typeof a&&0<a&&a-1 in b}function r(b,a,c){var d;if(b)if(P(b))for(d in b)"prototype"==d||("length"==d||"name"==d||b.hasOwnProperty&&!b.hasOwnProperty(d))||a.call(c,b[d],d);else if(J(b)||Pa(b))for(d=0;d<b.length;d++)a.call(c,b[d],d);else if(b.forEach&&b.forEach!==r)b.forEach(a,c);else for(d in b)b.hasOwnProperty(d)&&a.call(c,b[d],d);return b}function Zb(b){var a=[],c;for(c in b)b.hasOwnProperty(c)&&a.push(c);return a.sort()}function Tc(b,
-a,c){for(var d=Zb(b),e=0;e<d.length;e++)a.call(c,b[d[e]],d[e]);return d}function $b(b){return function(a,c){b(c,a)}}function hb(){for(var b=ma.length,a;b;){b--;a=ma[b].charCodeAt(0);if(57==a)return ma[b]="A",ma.join("");if(90==a)ma[b]="0";else return ma[b]=String.fromCharCode(a+1),ma.join("")}ma.unshift("0");return ma.join("")}function ac(b,a){a?b.$$hashKey=a:delete b.$$hashKey}function D(b){var a=b.$$hashKey;r(arguments,function(a){a!==b&&r(a,function(a,c){b[c]=a})});ac(b,a);return b}function U(b){return parseInt(b,
-10)}function bc(b,a){return D(new (D(function(){},{prototype:b})),a)}function E(){}function Qa(b){return b}function ba(b){return function(){return b}}function x(b){return"undefined"===typeof b}function y(b){return"undefined"!==typeof b}function T(b){return null!=b&&"object"===typeof b}function v(b){return"string"===typeof b}function ib(b){return"number"===typeof b}function ta(b){return"[object Date]"===za.call(b)}function P(b){return"function"===typeof b}function jb(b){return"[object RegExp]"===za.call(b)}
-function Ga(b){return b&&b.document&&b.location&&b.alert&&b.setInterval}function Uc(b){return!(!b||!(b.nodeName||b.prop&&b.attr&&b.find))}function Vc(b,a,c){var d=[];r(b,function(b,f,g){d.push(a.call(c,b,f,g))});return d}function Ra(b,a){if(b.indexOf)return b.indexOf(a);for(var c=0;c<b.length;c++)if(a===b[c])return c;return-1}function Sa(b,a){var c=Ra(b,a);0<=c&&b.splice(c,1);return a}function Ha(b,a,c,d){if(Ga(b)||b&&b.$evalAsync&&b.$watch)throw Ta("cpws");if(a){if(b===a)throw Ta("cpi");c=c||[];
-d=d||[];if(T(b)){var e=Ra(c,b);if(-1!==e)return d[e];c.push(b);d.push(a)}if(J(b))for(var f=a.length=0;f<b.length;f++)e=Ha(b[f],null,c,d),T(b[f])&&(c.push(b[f]),d.push(e)),a.push(e);else{var g=a.$$hashKey;J(a)?a.length=0:r(a,function(b,c){delete a[c]});for(f in b)e=Ha(b[f],null,c,d),T(b[f])&&(c.push(b[f]),d.push(e)),a[f]=e;ac(a,g)}}else if(a=b)J(b)?a=Ha(b,[],c,d):ta(b)?a=new Date(b.getTime()):jb(b)?(a=RegExp(b.source,b.toString().match(/[^\/]*$/)[0]),a.lastIndex=b.lastIndex):T(b)&&(a=Ha(b,{},c,d));
-return a}function ha(b,a){if(J(b)){a=a||[];for(var c=0;c<b.length;c++)a[c]=b[c]}else if(T(b))for(c in a=a||{},b)!kb.call(b,c)||"$"===c.charAt(0)&&"$"===c.charAt(1)||(a[c]=b[c]);return a||b}function Aa(b,a){if(b===a)return!0;if(null===b||null===a)return!1;if(b!==b&&a!==a)return!0;var c=typeof b,d;if(c==typeof a&&"object"==c)if(J(b)){if(!J(a))return!1;if((c=b.length)==a.length){for(d=0;d<c;d++)if(!Aa(b[d],a[d]))return!1;return!0}}else{if(ta(b))return ta(a)?isNaN(b.getTime())&&isNaN(a.getTime())||b.getTime()===
-a.getTime():!1;if(jb(b)&&jb(a))return b.toString()==a.toString();if(b&&b.$evalAsync&&b.$watch||a&&a.$evalAsync&&a.$watch||Ga(b)||Ga(a)||J(a))return!1;c={};for(d in b)if("$"!==d.charAt(0)&&!P(b[d])){if(!Aa(b[d],a[d]))return!1;c[d]=!0}for(d in a)if(!c.hasOwnProperty(d)&&"$"!==d.charAt(0)&&a[d]!==t&&!P(a[d]))return!1;return!0}return!1}function Bb(b,a){var c=2<arguments.length?Ba.call(arguments,2):[];return!P(a)||a instanceof RegExp?a:c.length?function(){return arguments.length?a.apply(b,c.concat(Ba.call(arguments,
-0))):a.apply(b,c)}:function(){return arguments.length?a.apply(b,arguments):a.call(b)}}function Wc(b,a){var c=a;"string"===typeof b&&"$"===b.charAt(0)?c=t:Ga(a)?c="$WINDOW":a&&X===a?c="$DOCUMENT":a&&(a.$evalAsync&&a.$watch)&&(c="$SCOPE");return c}function na(b,a){return"undefined"===typeof b?t:JSON.stringify(b,Wc,a?"  ":null)}function cc(b){return v(b)?JSON.parse(b):b}function Ua(b){"function"===typeof b?b=!0:b&&0!==b.length?(b=K(""+b),b=!("f"==b||"0"==b||"false"==b||"no"==b||"n"==b||"[]"==b)):b=!1;
-return b}function ia(b){b=w(b).clone();try{b.empty()}catch(a){}var c=w("<div>").append(b).html();try{return 3===b[0].nodeType?K(c):c.match(/^(<[^>]+>)/)[1].replace(/^<([\w\-]+)/,function(a,b){return"<"+K(b)})}catch(d){return K(c)}}function dc(b){try{return decodeURIComponent(b)}catch(a){}}function ec(b){var a={},c,d;r((b||"").split("&"),function(b){b&&(c=b.replace(/\+/g,"%20").split("="),d=dc(c[0]),y(d)&&(b=y(c[1])?dc(c[1]):!0,kb.call(a,d)?J(a[d])?a[d].push(b):a[d]=[a[d],b]:a[d]=b))});return a}function Cb(b){var a=
-[];r(b,function(b,d){J(b)?r(b,function(b){a.push(Ca(d,!0)+(!0===b?"":"="+Ca(b,!0)))}):a.push(Ca(d,!0)+(!0===b?"":"="+Ca(b,!0)))});return a.length?a.join("&"):""}function lb(b){return Ca(b,!0).replace(/%26/gi,"&").replace(/%3D/gi,"=").replace(/%2B/gi,"+")}function Ca(b,a){return encodeURIComponent(b).replace(/%40/gi,"@").replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,a?"%20":"+")}function Xc(b,a){function c(a){a&&d.push(a)}var d=[b],e,f,g=["ng:app","ng-app","x-ng-app",
-"data-ng-app"],k=/\sng[:\-]app(:\s*([\w\d_]+);?)?\s/;r(g,function(a){g[a]=!0;c(X.getElementById(a));a=a.replace(":","\\:");b.querySelectorAll&&(r(b.querySelectorAll("."+a),c),r(b.querySelectorAll("."+a+"\\:"),c),r(b.querySelectorAll("["+a+"]"),c))});r(d,function(a){if(!e){var b=k.exec(" "+a.className+" ");b?(e=a,f=(b[2]||"").replace(/\s+/g,",")):r(a.attributes,function(b){!e&&g[b.name]&&(e=a,f=b.value)})}});e&&a(e,f?[f]:[])}function fc(b,a){var c=function(){b=w(b);if(b.injector()){var c=b[0]===X?
-"document":ia(b);throw Ta("btstrpd",c.replace(/</,"&lt;").replace(/>/,"&gt;"));}a=a||[];a.unshift(["$provide",function(a){a.value("$rootElement",b)}]);a.unshift("ng");c=gc(a);c.invoke(["$rootScope","$rootElement","$compile","$injector","$animate",function(a,b,c,d,e){a.$apply(function(){b.data("$injector",d);c(b)(a)})}]);return c},d=/^NG_DEFER_BOOTSTRAP!/;if(W&&!d.test(W.name))return c();W.name=W.name.replace(d,"");Va.resumeBootstrap=function(b){r(b,function(b){a.push(b)});c()}}function mb(b,a){a=
-a||"_";return b.replace(Yc,function(b,d){return(d?a:"")+b.toLowerCase()})}function Db(b,a,c){if(!b)throw Ta("areq",a||"?",c||"required");return b}function Wa(b,a,c){c&&J(b)&&(b=b[b.length-1]);Db(P(b),a,"not a function, got "+(b&&"object"===typeof b?b.constructor.name||"Object":typeof b));return b}function Da(b,a){if("hasOwnProperty"===b)throw Ta("badname",a);}function hc(b,a,c){if(!a)return b;a=a.split(".");for(var d,e=b,f=a.length,g=0;g<f;g++)d=a[g],b&&(b=(e=b)[d]);return!c&&P(b)?Bb(e,b):b}function Eb(b){var a=
-b[0];b=b[b.length-1];if(a===b)return w(a);var c=[a];do{a=a.nextSibling;if(!a)break;c.push(a)}while(a!==b);return w(c)}function Zc(b){var a=C("$injector"),c=C("ng");b=b.angular||(b.angular={});b.$$minErr=b.$$minErr||C;return b.module||(b.module=function(){var b={};return function(e,f,g){if("hasOwnProperty"===e)throw c("badname","module");f&&b.hasOwnProperty(e)&&(b[e]=null);return b[e]||(b[e]=function(){function b(a,d,e){return function(){c[e||"push"]([a,d,arguments]);return n}}if(!f)throw a("nomod",
-e);var c=[],d=[],l=b("$injector","invoke"),n={_invokeQueue:c,_runBlocks:d,requires:f,name:e,provider:b("$provide","provider"),factory:b("$provide","factory"),service:b("$provide","service"),value:b("$provide","value"),constant:b("$provide","constant","unshift"),animation:b("$animateProvider","register"),filter:b("$filterProvider","register"),controller:b("$controllerProvider","register"),directive:b("$compileProvider","directive"),config:l,run:function(a){d.push(a);return this}};g&&l(g);return n}())}}())}
-function $c(b){D(b,{bootstrap:fc,copy:Ha,extend:D,equals:Aa,element:w,forEach:r,injector:gc,noop:E,bind:Bb,toJson:na,fromJson:cc,identity:Qa,isUndefined:x,isDefined:y,isString:v,isFunction:P,isObject:T,isNumber:ib,isElement:Uc,isArray:J,version:ad,isDate:ta,lowercase:K,uppercase:Ia,callbacks:{counter:0},$$minErr:C,$$csp:Xa});Ya=Zc(W);try{Ya("ngLocale")}catch(a){Ya("ngLocale",[]).provider("$locale",bd)}Ya("ng",["ngLocale"],["$provide",function(a){a.provider({$$sanitizeUri:cd});a.provider("$compile",
-ic).directive({a:dd,input:jc,textarea:jc,form:ed,script:fd,select:gd,style:hd,option:id,ngBind:jd,ngBindHtml:kd,ngBindTemplate:ld,ngClass:md,ngClassEven:nd,ngClassOdd:od,ngCloak:pd,ngController:qd,ngForm:rd,ngHide:sd,ngIf:td,ngInclude:ud,ngInit:vd,ngNonBindable:wd,ngPluralize:xd,ngRepeat:yd,ngShow:zd,ngStyle:Ad,ngSwitch:Bd,ngSwitchWhen:Cd,ngSwitchDefault:Dd,ngOptions:Ed,ngTransclude:Fd,ngModel:Gd,ngList:Hd,ngChange:Id,required:kc,ngRequired:kc,ngValue:Jd}).directive({ngInclude:Kd}).directive(Fb).directive(lc);
-a.provider({$anchorScroll:Ld,$animate:Md,$browser:Nd,$cacheFactory:Od,$controller:Pd,$document:Qd,$exceptionHandler:Rd,$filter:mc,$interpolate:Sd,$interval:Td,$http:Ud,$httpBackend:Vd,$location:Wd,$log:Xd,$parse:Yd,$rootScope:Zd,$q:$d,$sce:ae,$sceDelegate:be,$sniffer:ce,$templateCache:de,$timeout:ee,$window:fe,$$rAF:ge,$$asyncCallback:he})}])}function Za(b){return b.replace(ie,function(a,b,d,e){return e?d.toUpperCase():d}).replace(je,"Moz$1")}function Gb(b,a,c,d){function e(b){var e=c&&b?[this.filter(b)]:
-[this],m=a,h,l,n,p,q,s;if(!d||null!=b)for(;e.length;)for(h=e.shift(),l=0,n=h.length;l<n;l++)for(p=w(h[l]),m?p.triggerHandler("$destroy"):m=!m,q=0,p=(s=p.children()).length;q<p;q++)e.push(Ea(s[q]));return f.apply(this,arguments)}var f=Ea.fn[b],f=f.$original||f;e.$original=f;Ea.fn[b]=e}function S(b){if(b instanceof S)return b;v(b)&&(b=aa(b));if(!(this instanceof S)){if(v(b)&&"<"!=b.charAt(0))throw Hb("nosel");return new S(b)}if(v(b)){var a=b;b=X;var c;if(c=ke.exec(a))b=[b.createElement(c[1])];else{var d=
-b,e;b=d.createDocumentFragment();c=[];if(Ib.test(a)){d=b.appendChild(d.createElement("div"));e=(le.exec(a)||["",""])[1].toLowerCase();e=ea[e]||ea._default;d.innerHTML="<div>&#160;</div>"+e[1]+a.replace(me,"<$1></$2>")+e[2];d.removeChild(d.firstChild);for(a=e[0];a--;)d=d.lastChild;a=0;for(e=d.childNodes.length;a<e;++a)c.push(d.childNodes[a]);d=b.firstChild;d.textContent=""}else c.push(d.createTextNode(a));b.textContent="";b.innerHTML="";b=c}Jb(this,b);w(X.createDocumentFragment()).append(this)}else Jb(this,
-b)}function Kb(b){return b.cloneNode(!0)}function Ja(b){Lb(b);var a=0;for(b=b.childNodes||[];a<b.length;a++)Ja(b[a])}function nc(b,a,c,d){if(y(d))throw Hb("offargs");var e=oa(b,"events");oa(b,"handle")&&(x(a)?r(e,function(a,c){$a(b,c,a);delete e[c]}):r(a.split(" "),function(a){x(c)?($a(b,a,e[a]),delete e[a]):Sa(e[a]||[],c)}))}function Lb(b,a){var c=b.ng339,d=ab[c];d&&(a?delete ab[c].data[a]:(d.handle&&(d.events.$destroy&&d.handle({},"$destroy"),nc(b)),delete ab[c],b.ng339=t))}function oa(b,a,c){var d=
-b.ng339,d=ab[d||-1];if(y(c))d||(b.ng339=d=++ne,d=ab[d]={}),d[a]=c;else return d&&d[a]}function Mb(b,a,c){var d=oa(b,"data"),e=y(c),f=!e&&y(a),g=f&&!T(a);d||g||oa(b,"data",d={});if(e)d[a]=c;else if(f){if(g)return d&&d[a];D(d,a)}else return d}function Nb(b,a){return b.getAttribute?-1<(" "+(b.getAttribute("class")||"")+" ").replace(/[\n\t]/g," ").indexOf(" "+a+" "):!1}function nb(b,a){a&&b.setAttribute&&r(a.split(" "),function(a){b.setAttribute("class",aa((" "+(b.getAttribute("class")||"")+" ").replace(/[\n\t]/g,
-" ").replace(" "+aa(a)+" "," ")))})}function ob(b,a){if(a&&b.setAttribute){var c=(" "+(b.getAttribute("class")||"")+" ").replace(/[\n\t]/g," ");r(a.split(" "),function(a){a=aa(a);-1===c.indexOf(" "+a+" ")&&(c+=a+" ")});b.setAttribute("class",aa(c))}}function Jb(b,a){if(a){a=a.nodeName||!y(a.length)||Ga(a)?[a]:a;for(var c=0;c<a.length;c++)b.push(a[c])}}function oc(b,a){return pb(b,"$"+(a||"ngController")+"Controller")}function pb(b,a,c){9==b.nodeType&&(b=b.documentElement);for(a=J(a)?a:[a];b;){for(var d=
-0,e=a.length;d<e;d++)if((c=w.data(b,a[d]))!==t)return c;b=b.parentNode||11===b.nodeType&&b.host}}function pc(b){for(var a=0,c=b.childNodes;a<c.length;a++)Ja(c[a]);for(;b.firstChild;)b.removeChild(b.firstChild)}function qc(b,a){var c=qb[a.toLowerCase()];return c&&rc[b.nodeName]&&c}function oe(b,a){var c=function(c,e){c.preventDefault||(c.preventDefault=function(){c.returnValue=!1});c.stopPropagation||(c.stopPropagation=function(){c.cancelBubble=!0});c.target||(c.target=c.srcElement||X);if(x(c.defaultPrevented)){var f=
-c.preventDefault;c.preventDefault=function(){c.defaultPrevented=!0;f.call(c)};c.defaultPrevented=!1}c.isDefaultPrevented=function(){return c.defaultPrevented||!1===c.returnValue};var g=ha(a[e||c.type]||[]);r(g,function(a){a.call(b,c)});8>=Q?(c.preventDefault=null,c.stopPropagation=null,c.isDefaultPrevented=null):(delete c.preventDefault,delete c.stopPropagation,delete c.isDefaultPrevented)};c.elem=b;return c}function Ka(b,a){var c=typeof b,d;"function"==c||"object"==c&&null!==b?"function"==typeof(d=
-b.$$hashKey)?d=b.$$hashKey():d===t&&(d=b.$$hashKey=(a||hb)()):d=b;return c+":"+d}function bb(b,a){if(a){var c=0;this.nextUid=function(){return++c}}r(b,this.put,this)}function sc(b){var a,c;"function"===typeof b?(a=b.$inject)||(a=[],b.length&&(c=b.toString().replace(pe,""),c=c.match(qe),r(c[1].split(re),function(b){b.replace(se,function(b,c,d){a.push(d)})})),b.$inject=a):J(b)?(c=b.length-1,Wa(b[c],"fn"),a=b.slice(0,c)):Wa(b,"fn",!0);return a}function gc(b){function a(a){return function(b,c){if(T(b))r(b,
-$b(a));else return a(b,c)}}function c(a,b){Da(a,"service");if(P(b)||J(b))b=n.instantiate(b);if(!b.$get)throw cb("pget",a);return l[a+k]=b}function d(a,b){return c(a,{$get:b})}function e(a){var b=[],c,d,f,k;r(a,function(a){if(!h.get(a)){h.put(a,!0);try{if(v(a))for(c=Ya(a),b=b.concat(e(c.requires)).concat(c._runBlocks),d=c._invokeQueue,f=0,k=d.length;f<k;f++){var g=d[f],m=n.get(g[0]);m[g[1]].apply(m,g[2])}else P(a)?b.push(n.invoke(a)):J(a)?b.push(n.invoke(a)):Wa(a,"module")}catch(l){throw J(a)&&(a=
-a[a.length-1]),l.message&&(l.stack&&-1==l.stack.indexOf(l.message))&&(l=l.message+"\n"+l.stack),cb("modulerr",a,l.stack||l.message||l);}}});return b}function f(a,b){function c(d){if(a.hasOwnProperty(d)){if(a[d]===g)throw cb("cdep",d+" <- "+m.join(" <- "));return a[d]}try{return m.unshift(d),a[d]=g,a[d]=b(d)}catch(e){throw a[d]===g&&delete a[d],e;}finally{m.shift()}}function d(a,b,e){var f=[],k=sc(a),g,m,h;m=0;for(g=k.length;m<g;m++){h=k[m];if("string"!==typeof h)throw cb("itkn",h);f.push(e&&e.hasOwnProperty(h)?
-e[h]:c(h))}J(a)&&(a=a[g]);return a.apply(b,f)}return{invoke:d,instantiate:function(a,b){var c=function(){},e;c.prototype=(J(a)?a[a.length-1]:a).prototype;c=new c;e=d(a,c,b);return T(e)||P(e)?e:c},get:c,annotate:sc,has:function(b){return l.hasOwnProperty(b+k)||a.hasOwnProperty(b)}}}var g={},k="Provider",m=[],h=new bb([],!0),l={$provide:{provider:a(c),factory:a(d),service:a(function(a,b){return d(a,["$injector",function(a){return a.instantiate(b)}])}),value:a(function(a,b){return d(a,ba(b))}),constant:a(function(a,
-b){Da(a,"constant");l[a]=b;p[a]=b}),decorator:function(a,b){var c=n.get(a+k),d=c.$get;c.$get=function(){var a=q.invoke(d,c);return q.invoke(b,null,{$delegate:a})}}}},n=l.$injector=f(l,function(){throw cb("unpr",m.join(" <- "));}),p={},q=p.$injector=f(p,function(a){a=n.get(a+k);return q.invoke(a.$get,a)});r(e(b),function(a){q.invoke(a||E)});return q}function Ld(){var b=!0;this.disableAutoScrolling=function(){b=!1};this.$get=["$window","$location","$rootScope",function(a,c,d){function e(a){var b=null;
-r(a,function(a){b||"a"!==K(a.nodeName)||(b=a)});return b}function f(){var b=c.hash(),d;b?(d=g.getElementById(b))?d.scrollIntoView():(d=e(g.getElementsByName(b)))?d.scrollIntoView():"top"===b&&a.scrollTo(0,0):a.scrollTo(0,0)}var g=a.document;b&&d.$watch(function(){return c.hash()},function(){d.$evalAsync(f)});return f}]}function he(){this.$get=["$$rAF","$timeout",function(b,a){return b.supported?function(a){return b(a)}:function(b){return a(b,0,!1)}}]}function te(b,a,c,d){function e(a){try{a.apply(null,
-Ba.call(arguments,1))}finally{if(s--,0===s)for(;F.length;)try{F.pop()()}catch(b){c.error(b)}}}function f(a,b){(function fa(){r(u,function(a){a()});A=b(fa,a)})()}function g(){z=null;N!=k.url()&&(N=k.url(),r(ca,function(a){a(k.url())}))}var k=this,m=a[0],h=b.location,l=b.history,n=b.setTimeout,p=b.clearTimeout,q={};k.isMock=!1;var s=0,F=[];k.$$completeOutstandingRequest=e;k.$$incOutstandingRequestCount=function(){s++};k.notifyWhenNoOutstandingRequests=function(a){r(u,function(a){a()});0===s?a():F.push(a)};
-var u=[],A;k.addPollFn=function(a){x(A)&&f(100,n);u.push(a);return a};var N=h.href,R=a.find("base"),z=null;k.url=function(a,c){h!==b.location&&(h=b.location);l!==b.history&&(l=b.history);if(a){if(N!=a)return N=a,d.history?c?l.replaceState(null,"",a):(l.pushState(null,"",a),R.attr("href",R.attr("href"))):(z=a,c?h.replace(a):h.href=a),k}else return z||h.href.replace(/%27/g,"'")};var ca=[],L=!1;k.onUrlChange=function(a){if(!L){if(d.history)w(b).on("popstate",g);if(d.hashchange)w(b).on("hashchange",g);
-else k.addPollFn(g);L=!0}ca.push(a);return a};k.$$checkUrlChange=g;k.baseHref=function(){var a=R.attr("href");return a?a.replace(/^(https?\:)?\/\/[^\/]*/,""):""};var O={},da="",B=k.baseHref();k.cookies=function(a,b){var d,e,f,k;if(a)b===t?m.cookie=escape(a)+"=;path="+B+";expires=Thu, 01 Jan 1970 00:00:00 GMT":v(b)&&(d=(m.cookie=escape(a)+"="+escape(b)+";path="+B).length+1,4096<d&&c.warn("Cookie '"+a+"' possibly not set or overflowed because it was too large ("+d+" > 4096 bytes)!"));else{if(m.cookie!==
-da)for(da=m.cookie,d=da.split("; "),O={},f=0;f<d.length;f++)e=d[f],k=e.indexOf("="),0<k&&(a=unescape(e.substring(0,k)),O[a]===t&&(O[a]=unescape(e.substring(k+1))));return O}};k.defer=function(a,b){var c;s++;c=n(function(){delete q[c];e(a)},b||0);q[c]=!0;return c};k.defer.cancel=function(a){return q[a]?(delete q[a],p(a),e(E),!0):!1}}function Nd(){this.$get=["$window","$log","$sniffer","$document",function(b,a,c,d){return new te(b,d,a,c)}]}function Od(){this.$get=function(){function b(b,d){function e(a){a!=
-n&&(p?p==a&&(p=a.n):p=a,f(a.n,a.p),f(a,n),n=a,n.n=null)}function f(a,b){a!=b&&(a&&(a.p=b),b&&(b.n=a))}if(b in a)throw C("$cacheFactory")("iid",b);var g=0,k=D({},d,{id:b}),m={},h=d&&d.capacity||Number.MAX_VALUE,l={},n=null,p=null;return a[b]={put:function(a,b){if(h<Number.MAX_VALUE){var c=l[a]||(l[a]={key:a});e(c)}if(!x(b))return a in m||g++,m[a]=b,g>h&&this.remove(p.key),b},get:function(a){if(h<Number.MAX_VALUE){var b=l[a];if(!b)return;e(b)}return m[a]},remove:function(a){if(h<Number.MAX_VALUE){var b=
-l[a];if(!b)return;b==n&&(n=b.p);b==p&&(p=b.n);f(b.n,b.p);delete l[a]}delete m[a];g--},removeAll:function(){m={};g=0;l={};n=p=null},destroy:function(){l=k=m=null;delete a[b]},info:function(){return D({},k,{size:g})}}}var a={};b.info=function(){var b={};r(a,function(a,e){b[e]=a.info()});return b};b.get=function(b){return a[b]};return b}}function de(){this.$get=["$cacheFactory",function(b){return b("templates")}]}function ic(b,a){var c={},d="Directive",e=/^\s*directive\:\s*([\d\w_\-]+)\s+(.*)$/,f=/(([\d\w_\-]+)(?:\:([^;]+))?;?)/,
-g=/^(on[a-z]+|formaction)$/;this.directive=function m(a,e){Da(a,"directive");v(a)?(Db(e,"directiveFactory"),c.hasOwnProperty(a)||(c[a]=[],b.factory(a+d,["$injector","$exceptionHandler",function(b,d){var e=[];r(c[a],function(c,f){try{var g=b.invoke(c);P(g)?g={compile:ba(g)}:!g.compile&&g.link&&(g.compile=ba(g.link));g.priority=g.priority||0;g.index=f;g.name=g.name||a;g.require=g.require||g.controller&&g.name;g.restrict=g.restrict||"A";e.push(g)}catch(m){d(m)}});return e}])),c[a].push(e)):r(a,$b(m));
-return this};this.aHrefSanitizationWhitelist=function(b){return y(b)?(a.aHrefSanitizationWhitelist(b),this):a.aHrefSanitizationWhitelist()};this.imgSrcSanitizationWhitelist=function(b){return y(b)?(a.imgSrcSanitizationWhitelist(b),this):a.imgSrcSanitizationWhitelist()};this.$get=["$injector","$interpolate","$exceptionHandler","$http","$templateCache","$parse","$controller","$rootScope","$document","$sce","$animate","$$sanitizeUri",function(a,b,l,n,p,q,s,F,u,A,N,R){function z(a,b,c,d,e){a instanceof
-w||(a=w(a));r(a,function(b,c){3==b.nodeType&&b.nodeValue.match(/\S+/)&&(a[c]=w(b).wrap("<span></span>").parent()[0])});var f=L(a,b,a,c,d,e);ca(a,"ng-scope");return function(b,c,d,e){Db(b,"scope");var g=c?La.clone.call(a):a;r(d,function(a,b){g.data("$"+b+"Controller",a)});d=0;for(var m=g.length;d<m;d++){var h=g[d].nodeType;1!==h&&9!==h||g.eq(d).data("$scope",b)}c&&c(g,b);f&&f(b,g,g,e);return g}}function ca(a,b){try{a.addClass(b)}catch(c){}}function L(a,b,c,d,e,f){function g(a,c,d,e){var f,h,l,q,n,
-p,s;f=c.length;var M=Array(f);for(q=0;q<f;q++)M[q]=c[q];p=q=0;for(n=m.length;q<n;p++)h=M[p],c=m[q++],f=m[q++],c?(c.scope?(l=a.$new(),w.data(h,"$scope",l)):l=a,s=c.transcludeOnThisElement?O(a,c.transclude,e):!c.templateOnThisElement&&e?e:!e&&b?O(a,b):null,c(f,l,h,d,s)):f&&f(a,h.childNodes,t,e)}for(var m=[],h,l,q,n,p=0;p<a.length;p++)h=new Ob,l=da(a[p],[],h,0===p?d:t,e),(f=l.length?H(l,a[p],h,b,c,null,[],[],f):null)&&f.scope&&ca(h.$$element,"ng-scope"),h=f&&f.terminal||!(q=a[p].childNodes)||!q.length?
-null:L(q,f?(f.transcludeOnThisElement||!f.templateOnThisElement)&&f.transclude:b),m.push(f,h),n=n||f||h,f=null;return n?g:null}function O(a,b,c){return function(d,e,f){var g=!1;d||(d=a.$new(),g=d.$$transcluded=!0);e=b(d,e,f,c);if(g)e.on("$destroy",function(){d.$destroy()});return e}}function da(a,b,c,d,g){var m=c.$attr,h;switch(a.nodeType){case 1:fa(b,pa(Ma(a).toLowerCase()),"E",d,g);for(var l,q,n,p=a.attributes,s=0,F=p&&p.length;s<F;s++){var A=!1,N=!1;l=p[s];if(!Q||8<=Q||l.specified){h=l.name;q=
-aa(l.value);l=pa(h);if(n=U.test(l))h=mb(l.substr(6),"-");var u=l.replace(/(Start|End)$/,"");l===u+"Start"&&(A=h,N=h.substr(0,h.length-5)+"end",h=h.substr(0,h.length-6));l=pa(h.toLowerCase());m[l]=h;if(n||!c.hasOwnProperty(l))c[l]=q,qc(a,l)&&(c[l]=!0);S(a,b,q,l);fa(b,l,"A",d,g,A,N)}}a=a.className;if(v(a)&&""!==a)for(;h=f.exec(a);)l=pa(h[2]),fa(b,l,"C",d,g)&&(c[l]=aa(h[3])),a=a.substr(h.index+h[0].length);break;case 3:K(b,a.nodeValue);break;case 8:try{if(h=e.exec(a.nodeValue))l=pa(h[1]),fa(b,l,"M",
-d,g)&&(c[l]=aa(h[2]))}catch(z){}}b.sort(x);return b}function B(a,b,c){var d=[],e=0;if(b&&a.hasAttribute&&a.hasAttribute(b)){do{if(!a)throw ja("uterdir",b,c);1==a.nodeType&&(a.hasAttribute(b)&&e++,a.hasAttribute(c)&&e--);d.push(a);a=a.nextSibling}while(0<e)}else d.push(a);return w(d)}function I(a,b,c){return function(d,e,f,g,h){e=B(e[0],b,c);return a(d,e,f,g,h)}}function H(a,c,d,e,f,g,m,n,p){function F(a,b,c,d){if(a){c&&(a=I(a,c,d));a.require=G.require;a.directiveName=C;if(L===G||G.$$isolateScope)a=
-tc(a,{isolateScope:!0});m.push(a)}if(b){c&&(b=I(b,c,d));b.require=G.require;b.directiveName=C;if(L===G||G.$$isolateScope)b=tc(b,{isolateScope:!0});n.push(b)}}function A(a,b,c,d){var e,f="data",g=!1;if(v(b)){for(;"^"==(e=b.charAt(0))||"?"==e;)b=b.substr(1),"^"==e&&(f="inheritedData"),g=g||"?"==e;e=null;d&&"data"===f&&(e=d[b]);e=e||c[f]("$"+b+"Controller");if(!e&&!g)throw ja("ctreq",b,a);}else J(b)&&(e=[],r(b,function(b){e.push(A(a,b,c,d))}));return e}function N(a,e,f,g,p){function F(a,b){var c;2>arguments.length&&
-(b=a,a=t);K&&(c=da);return p(a,b,c)}var u,M,z,O,I,B,da={},rb;u=c===f?d:ha(d,new Ob(w(f),d.$attr));M=u.$$element;if(L){var Na=/^\s*([@=&])(\??)\s*(\w*)\s*$/;B=e.$new(!0);!H||H!==L&&H!==L.$$originalDirective?M.data("$isolateScopeNoTemplate",B):M.data("$isolateScope",B);ca(M,"ng-isolate-scope");r(L.scope,function(a,c){var d=a.match(Na)||[],f=d[3]||c,g="?"==d[2],d=d[1],m,l,n,p;B.$$isolateBindings[c]=d+f;switch(d){case "@":u.$observe(f,function(a){B[c]=a});u.$$observers[f].$$scope=e;u[f]&&(B[c]=b(u[f])(e));
-break;case "=":if(g&&!u[f])break;l=q(u[f]);p=l.literal?Aa:function(a,b){return a===b||a!==a&&b!==b};n=l.assign||function(){m=B[c]=l(e);throw ja("nonassign",u[f],L.name);};m=B[c]=l(e);B.$watch(function(){var a=l(e);p(a,B[c])||(p(a,m)?n(e,a=B[c]):B[c]=a);return m=a},null,l.literal);break;case "&":l=q(u[f]);B[c]=function(a){return l(e,a)};break;default:throw ja("iscp",L.name,c,a);}})}rb=p&&F;R&&r(R,function(a){var b={$scope:a===L||a.$$isolateScope?B:e,$element:M,$attrs:u,$transclude:rb},c;I=a.controller;
-"@"==I&&(I=u[a.name]);c=s(I,b);da[a.name]=c;K||M.data("$"+a.name+"Controller",c);a.controllerAs&&(b.$scope[a.controllerAs]=c)});g=0;for(z=m.length;g<z;g++)try{O=m[g],O(O.isolateScope?B:e,M,u,O.require&&A(O.directiveName,O.require,M,da),rb)}catch(G){l(G,ia(M))}g=e;L&&(L.template||null===L.templateUrl)&&(g=B);a&&a(g,f.childNodes,t,p);for(g=n.length-1;0<=g;g--)try{O=n[g],O(O.isolateScope?B:e,M,u,O.require&&A(O.directiveName,O.require,M,da),rb)}catch(y){l(y,ia(M))}}p=p||{};for(var u=-Number.MAX_VALUE,
-O,R=p.controllerDirectives,L=p.newIsolateScopeDirective,H=p.templateDirective,fa=p.nonTlbTranscludeDirective,x=!1,D=!1,K=p.hasElementTranscludeDirective,Z=d.$$element=w(c),G,C,V,S=e,Q,Fa=0,qa=a.length;Fa<qa;Fa++){G=a[Fa];var U=G.$$start,Y=G.$$end;U&&(Z=B(c,U,Y));V=t;if(u>G.priority)break;if(V=G.scope)O=O||G,G.templateUrl||(db("new/isolated scope",L,G,Z),T(V)&&(L=G));C=G.name;!G.templateUrl&&G.controller&&(V=G.controller,R=R||{},db("'"+C+"' controller",R[C],G,Z),R[C]=G);if(V=G.transclude)x=!0,G.$$tlb||
-(db("transclusion",fa,G,Z),fa=G),"element"==V?(K=!0,u=G.priority,V=Z,Z=d.$$element=w(X.createComment(" "+C+": "+d[C]+" ")),c=Z[0],Na(f,Ba.call(V,0),c),S=z(V,e,u,g&&g.name,{nonTlbTranscludeDirective:fa})):(V=w(Kb(c)).contents(),Z.empty(),S=z(V,e));if(G.template)if(D=!0,db("template",H,G,Z),H=G,V=P(G.template)?G.template(Z,d):G.template,V=W(V),G.replace){g=G;V=Ib.test(V)?w(aa(V)):[];c=V[0];if(1!=V.length||1!==c.nodeType)throw ja("tplrt",C,"");Na(f,Z,c);qa={$attr:{}};V=da(c,[],qa);var $=a.splice(Fa+
-1,a.length-(Fa+1));L&&y(V);a=a.concat(V).concat($);E(d,qa);qa=a.length}else Z.html(V);if(G.templateUrl)D=!0,db("template",H,G,Z),H=G,G.replace&&(g=G),N=ue(a.splice(Fa,a.length-Fa),Z,d,f,x&&S,m,n,{controllerDirectives:R,newIsolateScopeDirective:L,templateDirective:H,nonTlbTranscludeDirective:fa}),qa=a.length;else if(G.compile)try{Q=G.compile(Z,d,S),P(Q)?F(null,Q,U,Y):Q&&F(Q.pre,Q.post,U,Y)}catch(ve){l(ve,ia(Z))}G.terminal&&(N.terminal=!0,u=Math.max(u,G.priority))}N.scope=O&&!0===O.scope;N.transcludeOnThisElement=
-x;N.templateOnThisElement=D;N.transclude=S;p.hasElementTranscludeDirective=K;return N}function y(a){for(var b=0,c=a.length;b<c;b++)a[b]=bc(a[b],{$$isolateScope:!0})}function fa(b,e,f,g,h,q,n){if(e===h)return null;h=null;if(c.hasOwnProperty(e)){var p;e=a.get(e+d);for(var s=0,u=e.length;s<u;s++)try{p=e[s],(g===t||g>p.priority)&&-1!=p.restrict.indexOf(f)&&(q&&(p=bc(p,{$$start:q,$$end:n})),b.push(p),h=p)}catch(F){l(F)}}return h}function E(a,b){var c=b.$attr,d=a.$attr,e=a.$$element;r(a,function(d,e){"$"!=
-e.charAt(0)&&(b[e]&&b[e]!==d&&(d+=("style"===e?";":" ")+b[e]),a.$set(e,d,!0,c[e]))});r(b,function(b,f){"class"==f?(ca(e,b),a["class"]=(a["class"]?a["class"]+" ":"")+b):"style"==f?(e.attr("style",e.attr("style")+";"+b),a.style=(a.style?a.style+";":"")+b):"$"==f.charAt(0)||a.hasOwnProperty(f)||(a[f]=b,d[f]=c[f])})}function ue(a,b,c,d,e,f,g,h){var m=[],l,q,s=b[0],u=a.shift(),F=D({},u,{templateUrl:null,transclude:null,replace:null,$$originalDirective:u}),N=P(u.templateUrl)?u.templateUrl(b,c):u.templateUrl;
-b.empty();n.get(A.getTrustedResourceUrl(N),{cache:p}).success(function(n){var p,A;n=W(n);if(u.replace){n=Ib.test(n)?w(aa(n)):[];p=n[0];if(1!=n.length||1!==p.nodeType)throw ja("tplrt",u.name,N);n={$attr:{}};Na(d,b,p);var z=da(p,[],n);T(u.scope)&&y(z);a=z.concat(a);E(c,n)}else p=s,b.html(n);a.unshift(F);l=H(a,p,c,e,b,u,f,g,h);r(d,function(a,c){a==p&&(d[c]=b[0])});for(q=L(b[0].childNodes,e);m.length;){n=m.shift();A=m.shift();var R=m.shift(),I=m.shift(),z=b[0];if(A!==s){var B=A.className;h.hasElementTranscludeDirective&&
-u.replace||(z=Kb(p));Na(R,w(A),z);ca(w(z),B)}A=l.transcludeOnThisElement?O(n,l.transclude,I):I;l(q,n,z,d,A)}m=null}).error(function(a,b,c,d){throw ja("tpload",d.url);});return function(a,b,c,d,e){a=e;m?(m.push(b),m.push(c),m.push(d),m.push(a)):(l.transcludeOnThisElement&&(a=O(b,l.transclude,e)),l(q,b,c,d,a))}}function x(a,b){var c=b.priority-a.priority;return 0!==c?c:a.name!==b.name?a.name<b.name?-1:1:a.index-b.index}function db(a,b,c,d){if(b)throw ja("multidir",b.name,c.name,a,ia(d));}function K(a,
-c){var d=b(c,!0);d&&a.push({priority:0,compile:function(a){var b=a.parent().length;b&&ca(a.parent(),"ng-binding");return function(a,c){var e=c.parent(),f=e.data("$binding")||[];f.push(d);e.data("$binding",f);b||ca(e,"ng-binding");a.$watch(d,function(a){c[0].nodeValue=a})}}})}function C(a,b){if("srcdoc"==b)return A.HTML;var c=Ma(a);if("xlinkHref"==b||"FORM"==c&&"action"==b||"IMG"!=c&&("src"==b||"ngSrc"==b))return A.RESOURCE_URL}function S(a,c,d,e){var f=b(d,!0);if(f){if("multiple"===e&&"SELECT"===
-Ma(a))throw ja("selmulti",ia(a));c.push({priority:100,compile:function(){return{pre:function(c,d,m){d=m.$$observers||(m.$$observers={});if(g.test(e))throw ja("nodomevents");if(f=b(m[e],!0,C(a,e)))m[e]=f(c),(d[e]||(d[e]=[])).$$inter=!0,(m.$$observers&&m.$$observers[e].$$scope||c).$watch(f,function(a,b){"class"===e&&a!=b?m.$updateClass(a,b):m.$set(e,a)})}}}})}}function Na(a,b,c){var d=b[0],e=b.length,f=d.parentNode,g,m;if(a)for(g=0,m=a.length;g<m;g++)if(a[g]==d){a[g++]=c;m=g+e-1;for(var h=a.length;g<
-h;g++,m++)m<h?a[g]=a[m]:delete a[g];a.length-=e-1;break}f&&f.replaceChild(c,d);a=X.createDocumentFragment();a.appendChild(d);c[w.expando]=d[w.expando];d=1;for(e=b.length;d<e;d++)f=b[d],w(f).remove(),a.appendChild(f),delete b[d];b[0]=c;b.length=1}function tc(a,b){return D(function(){return a.apply(null,arguments)},a,b)}var Ob=function(a,b){this.$$element=a;this.$attr=b||{}};Ob.prototype={$normalize:pa,$addClass:function(a){a&&0<a.length&&N.addClass(this.$$element,a)},$removeClass:function(a){a&&0<
-a.length&&N.removeClass(this.$$element,a)},$updateClass:function(a,b){var c=uc(a,b),d=uc(b,a);0===c.length?N.removeClass(this.$$element,d):0===d.length?N.addClass(this.$$element,c):N.setClass(this.$$element,c,d)},$set:function(a,b,c,d){var e=qc(this.$$element[0],a);e&&(this.$$element.prop(a,b),d=e);this[a]=b;d?this.$attr[a]=d:(d=this.$attr[a])||(this.$attr[a]=d=mb(a,"-"));e=Ma(this.$$element);if("A"===e&&"href"===a||"IMG"===e&&"src"===a)this[a]=b=R(b,"src"===a);!1!==c&&(null===b||b===t?this.$$element.removeAttr(d):
-this.$$element.attr(d,b));(c=this.$$observers)&&r(c[a],function(a){try{a(b)}catch(c){l(c)}})},$observe:function(a,b){var c=this,d=c.$$observers||(c.$$observers={}),e=d[a]||(d[a]=[]);e.push(b);F.$evalAsync(function(){e.$$inter||b(c[a])});return b}};var qa=b.startSymbol(),Z=b.endSymbol(),W="{{"==qa||"}}"==Z?Qa:function(a){return a.replace(/\{\{/g,qa).replace(/}}/g,Z)},U=/^ngAttr[A-Z]/;return z}]}function pa(b){return Za(b.replace(we,""))}function uc(b,a){var c="",d=b.split(/\s+/),e=a.split(/\s+/),f=
-0;a:for(;f<d.length;f++){for(var g=d[f],k=0;k<e.length;k++)if(g==e[k])continue a;c+=(0<c.length?" ":"")+g}return c}function Pd(){var b={},a=/^(\S+)(\s+as\s+(\w+))?$/;this.register=function(a,d){Da(a,"controller");T(a)?D(b,a):b[a]=d};this.$get=["$injector","$window",function(c,d){return function(e,f){var g,k,m;v(e)&&(g=e.match(a),k=g[1],m=g[3],e=b.hasOwnProperty(k)?b[k]:hc(f.$scope,k,!0)||hc(d,k,!0),Wa(e,k,!0));g=c.instantiate(e,f);if(m){if(!f||"object"!==typeof f.$scope)throw C("$controller")("noscp",
-k||e.name,m);f.$scope[m]=g}return g}}]}function Qd(){this.$get=["$window",function(b){return w(b.document)}]}function Rd(){this.$get=["$log",function(b){return function(a,c){b.error.apply(b,arguments)}}]}function vc(b){var a={},c,d,e;if(!b)return a;r(b.split("\n"),function(b){e=b.indexOf(":");c=K(aa(b.substr(0,e)));d=aa(b.substr(e+1));c&&(a[c]=a[c]?a[c]+", "+d:d)});return a}function wc(b){var a=T(b)?b:t;return function(c){a||(a=vc(b));return c?a[K(c)]||null:a}}function xc(b,a,c){if(P(c))return c(b,
-a);r(c,function(c){b=c(b,a)});return b}function Ud(){var b=/^\s*(\[|\{[^\{])/,a=/[\}\]]\s*$/,c=/^\)\]\}',?\n/,d={"Content-Type":"application/json;charset=utf-8"},e=this.defaults={transformResponse:[function(d){v(d)&&(d=d.replace(c,""),b.test(d)&&a.test(d)&&(d=cc(d)));return d}],transformRequest:[function(a){return T(a)&&"[object File]"!==za.call(a)&&"[object Blob]"!==za.call(a)?na(a):a}],headers:{common:{Accept:"application/json, text/plain, */*"},post:ha(d),put:ha(d),patch:ha(d)},xsrfCookieName:"XSRF-TOKEN",
-xsrfHeaderName:"X-XSRF-TOKEN"},f=this.interceptors=[],g=this.responseInterceptors=[];this.$get=["$httpBackend","$browser","$cacheFactory","$rootScope","$q","$injector",function(a,b,c,d,n,p){function q(a){function b(a){var d=D({},a,{data:xc(a.data,a.headers,c.transformResponse)});return 200<=a.status&&300>a.status?d:n.reject(d)}var c={method:"get",transformRequest:e.transformRequest,transformResponse:e.transformResponse},d=function(a){var b=e.headers,c=D({},a.headers),d,f,b=D({},b.common,b[K(a.method)]);
-a:for(d in b){a=K(d);for(f in c)if(K(f)===a)continue a;c[d]=b[d]}(function(a){var b;r(a,function(c,d){P(c)&&(b=c(),null!=b?a[d]=b:delete a[d])})})(c);return c}(a);D(c,a);c.headers=d;c.method=Ia(c.method);var f=[function(a){d=a.headers;var c=xc(a.data,wc(d),a.transformRequest);x(c)&&r(d,function(a,b){"content-type"===K(b)&&delete d[b]});x(a.withCredentials)&&!x(e.withCredentials)&&(a.withCredentials=e.withCredentials);return s(a,c,d).then(b,b)},t],g=n.when(c);for(r(A,function(a){(a.request||a.requestError)&&
-f.unshift(a.request,a.requestError);(a.response||a.responseError)&&f.push(a.response,a.responseError)});f.length;){a=f.shift();var m=f.shift(),g=g.then(a,m)}g.success=function(a){g.then(function(b){a(b.data,b.status,b.headers,c)});return g};g.error=function(a){g.then(null,function(b){a(b.data,b.status,b.headers,c)});return g};return g}function s(c,f,g){function h(a,b,c,e){I&&(200<=a&&300>a?I.put(w,[a,b,vc(c),e]):I.remove(w));p(b,a,c,e);d.$$phase||d.$apply()}function p(a,b,d,e){b=Math.max(b,0);(200<=
-b&&300>b?A.resolve:A.reject)({data:a,status:b,headers:wc(d),config:c,statusText:e})}function s(){var a=Ra(q.pendingRequests,c);-1!==a&&q.pendingRequests.splice(a,1)}var A=n.defer(),r=A.promise,I,H,w=F(c.url,c.params);q.pendingRequests.push(c);r.then(s,s);!c.cache&&!e.cache||(!1===c.cache||"GET"!==c.method&&"JSONP"!==c.method)||(I=T(c.cache)?c.cache:T(e.cache)?e.cache:u);if(I)if(H=I.get(w),y(H)){if(H&&P(H.then))return H.then(s,s),H;J(H)?p(H[1],H[0],ha(H[2]),H[3]):p(H,200,{},"OK")}else I.put(w,r);x(H)&&
-((H=Pb(c.url)?b.cookies()[c.xsrfCookieName||e.xsrfCookieName]:t)&&(g[c.xsrfHeaderName||e.xsrfHeaderName]=H),a(c.method,w,f,h,g,c.timeout,c.withCredentials,c.responseType));return r}function F(a,b){if(!b)return a;var c=[];Tc(b,function(a,b){null===a||x(a)||(J(a)||(a=[a]),r(a,function(a){T(a)&&(a=ta(a)?a.toISOString():na(a));c.push(Ca(b)+"="+Ca(a))}))});0<c.length&&(a+=(-1==a.indexOf("?")?"?":"&")+c.join("&"));return a}var u=c("$http"),A=[];r(f,function(a){A.unshift(v(a)?p.get(a):p.invoke(a))});r(g,
-function(a,b){var c=v(a)?p.get(a):p.invoke(a);A.splice(b,0,{response:function(a){return c(n.when(a))},responseError:function(a){return c(n.reject(a))}})});q.pendingRequests=[];(function(a){r(arguments,function(a){q[a]=function(b,c){return q(D(c||{},{method:a,url:b}))}})})("get","delete","head","jsonp");(function(a){r(arguments,function(a){q[a]=function(b,c,d){return q(D(d||{},{method:a,url:b,data:c}))}})})("post","put");q.defaults=e;return q}]}function xe(b){if(8>=Q&&(!b.match(/^(get|post|head|put|delete|options)$/i)||
-!W.XMLHttpRequest))return new W.ActiveXObject("Microsoft.XMLHTTP");if(W.XMLHttpRequest)return new W.XMLHttpRequest;throw C("$httpBackend")("noxhr");}function Vd(){this.$get=["$browser","$window","$document",function(b,a,c){return ye(b,xe,b.defer,a.angular.callbacks,c[0])}]}function ye(b,a,c,d,e){function f(a,b,c){var f=e.createElement("script"),g=null;f.type="text/javascript";f.src=a;f.async=!0;g=function(a){$a(f,"load",g);$a(f,"error",g);e.body.removeChild(f);f=null;var k=-1,s="unknown";a&&("load"!==
-a.type||d[b].called||(a={type:"error"}),s=a.type,k="error"===a.type?404:200);c&&c(k,s)};sb(f,"load",g);sb(f,"error",g);8>=Q&&(f.onreadystatechange=function(){v(f.readyState)&&/loaded|complete/.test(f.readyState)&&(f.onreadystatechange=null,g({type:"load"}))});e.body.appendChild(f);return g}var g=-1;return function(e,m,h,l,n,p,q,s){function F(){A=g;R&&R();z&&z.abort()}function u(a,d,e,f,g){L&&c.cancel(L);R=z=null;0===d&&(d=e?200:"file"==ua(m).protocol?404:0);a(1223===d?204:d,e,f,g||"");b.$$completeOutstandingRequest(E)}
-var A;b.$$incOutstandingRequestCount();m=m||b.url();if("jsonp"==K(e)){var N="_"+(d.counter++).toString(36);d[N]=function(a){d[N].data=a;d[N].called=!0};var R=f(m.replace("JSON_CALLBACK","angular.callbacks."+N),N,function(a,b){u(l,a,d[N].data,"",b);d[N]=E})}else{var z=a(e);z.open(e,m,!0);r(n,function(a,b){y(a)&&z.setRequestHeader(b,a)});z.onreadystatechange=function(){if(z&&4==z.readyState){var a=null,b=null,c="";A!==g&&(a=z.getAllResponseHeaders(),b="response"in z?z.response:z.responseText);A===g&&
-10>Q||(c=z.statusText);u(l,A||z.status,b,a,c)}};q&&(z.withCredentials=!0);if(s)try{z.responseType=s}catch(ca){if("json"!==s)throw ca;}z.send(h||null)}if(0<p)var L=c(F,p);else p&&P(p.then)&&p.then(F)}}function Sd(){var b="{{",a="}}";this.startSymbol=function(a){return a?(b=a,this):b};this.endSymbol=function(b){return b?(a=b,this):a};this.$get=["$parse","$exceptionHandler","$sce",function(c,d,e){function f(f,h,l){for(var n,p,q=0,s=[],F=f.length,u=!1,A=[];q<F;)-1!=(n=f.indexOf(b,q))&&-1!=(p=f.indexOf(a,
-n+g))?(q!=n&&s.push(f.substring(q,n)),s.push(q=c(u=f.substring(n+g,p))),q.exp=u,q=p+k,u=!0):(q!=F&&s.push(f.substring(q)),q=F);(F=s.length)||(s.push(""),F=1);if(l&&1<s.length)throw yc("noconcat",f);if(!h||u)return A.length=F,q=function(a){try{for(var b=0,c=F,g;b<c;b++){if("function"==typeof(g=s[b]))if(g=g(a),g=l?e.getTrusted(l,g):e.valueOf(g),null==g)g="";else switch(typeof g){case "string":break;case "number":g=""+g;break;default:g=na(g)}A[b]=g}return A.join("")}catch(k){a=yc("interr",f,k.toString()),
-d(a)}},q.exp=f,q.parts=s,q}var g=b.length,k=a.length;f.startSymbol=function(){return b};f.endSymbol=function(){return a};return f}]}function Td(){this.$get=["$rootScope","$window","$q",function(b,a,c){function d(d,g,k,m){var h=a.setInterval,l=a.clearInterval,n=c.defer(),p=n.promise,q=0,s=y(m)&&!m;k=y(k)?k:0;p.then(null,null,d);p.$$intervalId=h(function(){n.notify(q++);0<k&&q>=k&&(n.resolve(q),l(p.$$intervalId),delete e[p.$$intervalId]);s||b.$apply()},g);e[p.$$intervalId]=n;return p}var e={};d.cancel=
-function(b){return b&&b.$$intervalId in e?(e[b.$$intervalId].reject("canceled"),a.clearInterval(b.$$intervalId),delete e[b.$$intervalId],!0):!1};return d}]}function bd(){this.$get=function(){return{id:"en-us",NUMBER_FORMATS:{DECIMAL_SEP:".",GROUP_SEP:",",PATTERNS:[{minInt:1,minFrac:0,maxFrac:3,posPre:"",posSuf:"",negPre:"-",negSuf:"",gSize:3,lgSize:3},{minInt:1,minFrac:2,maxFrac:2,posPre:"\u00a4",posSuf:"",negPre:"(\u00a4",negSuf:")",gSize:3,lgSize:3}],CURRENCY_SYM:"$"},DATETIME_FORMATS:{MONTH:"January February March April May June July August September October November December".split(" "),
-SHORTMONTH:"Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec".split(" "),DAY:"Sunday Monday Tuesday Wednesday Thursday Friday Saturday".split(" "),SHORTDAY:"Sun Mon Tue Wed Thu Fri Sat".split(" "),AMPMS:["AM","PM"],medium:"MMM d, y h:mm:ss a","short":"M/d/yy h:mm a",fullDate:"EEEE, MMMM d, y",longDate:"MMMM d, y",mediumDate:"MMM d, y",shortDate:"M/d/yy",mediumTime:"h:mm:ss a",shortTime:"h:mm a"},pluralCat:function(b){return 1===b?"one":"other"}}}}function Qb(b){b=b.split("/");for(var a=b.length;a--;)b[a]=
-lb(b[a]);return b.join("/")}function zc(b,a,c){b=ua(b,c);a.$$protocol=b.protocol;a.$$host=b.hostname;a.$$port=U(b.port)||ze[b.protocol]||null}function Ac(b,a,c){var d="/"!==b.charAt(0);d&&(b="/"+b);b=ua(b,c);a.$$path=decodeURIComponent(d&&"/"===b.pathname.charAt(0)?b.pathname.substring(1):b.pathname);a.$$search=ec(b.search);a.$$hash=decodeURIComponent(b.hash);a.$$path&&"/"!=a.$$path.charAt(0)&&(a.$$path="/"+a.$$path)}function ra(b,a){if(0===a.indexOf(b))return a.substr(b.length)}function eb(b){var a=
-b.indexOf("#");return-1==a?b:b.substr(0,a)}function Rb(b){return b.substr(0,eb(b).lastIndexOf("/")+1)}function Bc(b,a){this.$$html5=!0;a=a||"";var c=Rb(b);zc(b,this,b);this.$$parse=function(a){var e=ra(c,a);if(!v(e))throw Sb("ipthprfx",a,c);Ac(e,this,b);this.$$path||(this.$$path="/");this.$$compose()};this.$$compose=function(){var a=Cb(this.$$search),b=this.$$hash?"#"+lb(this.$$hash):"";this.$$url=Qb(this.$$path)+(a?"?"+a:"")+b;this.$$absUrl=c+this.$$url.substr(1)};this.$$rewrite=function(d){var e;
-if((e=ra(b,d))!==t)return d=e,(e=ra(a,e))!==t?c+(ra("/",e)||e):b+d;if((e=ra(c,d))!==t)return c+e;if(c==d+"/")return c}}function Tb(b,a){var c=Rb(b);zc(b,this,b);this.$$parse=function(d){var e=ra(b,d)||ra(c,d),e="#"==e.charAt(0)?ra(a,e):this.$$html5?e:"";if(!v(e))throw Sb("ihshprfx",d,a);Ac(e,this,b);d=this.$$path;var f=/^\/[A-Z]:(\/.*)/;0===e.indexOf(b)&&(e=e.replace(b,""));f.exec(e)||(d=(e=f.exec(d))?e[1]:d);this.$$path=d;this.$$compose()};this.$$compose=function(){var c=Cb(this.$$search),e=this.$$hash?
-"#"+lb(this.$$hash):"";this.$$url=Qb(this.$$path)+(c?"?"+c:"")+e;this.$$absUrl=b+(this.$$url?a+this.$$url:"")};this.$$rewrite=function(a){if(eb(b)==eb(a))return a}}function Ub(b,a){this.$$html5=!0;Tb.apply(this,arguments);var c=Rb(b);this.$$rewrite=function(d){var e;if(b==eb(d))return d;if(e=ra(c,d))return b+a+e;if(c===d+"/")return c};this.$$compose=function(){var c=Cb(this.$$search),e=this.$$hash?"#"+lb(this.$$hash):"";this.$$url=Qb(this.$$path)+(c?"?"+c:"")+e;this.$$absUrl=b+a+this.$$url}}function tb(b){return function(){return this[b]}}
-function Cc(b,a){return function(c){if(x(c))return this[b];this[b]=a(c);this.$$compose();return this}}function Wd(){var b="",a=!1;this.hashPrefix=function(a){return y(a)?(b=a,this):b};this.html5Mode=function(b){return y(b)?(a=b,this):a};this.$get=["$rootScope","$browser","$sniffer","$rootElement",function(c,d,e,f){function g(a){c.$broadcast("$locationChangeSuccess",k.absUrl(),a)}var k,m,h=d.baseHref(),l=d.url(),n;a?(n=l.substring(0,l.indexOf("/",l.indexOf("//")+2))+(h||"/"),m=e.history?Bc:Ub):(n=
-eb(l),m=Tb);k=new m(n,"#"+b);k.$$parse(k.$$rewrite(l));var p=/^\s*(javascript|mailto):/i;f.on("click",function(a){if(!a.ctrlKey&&!a.metaKey&&2!=a.which){for(var e=w(a.target);"a"!==K(e[0].nodeName);)if(e[0]===f[0]||!(e=e.parent())[0])return;var g=e.prop("href");T(g)&&"[object SVGAnimatedString]"===g.toString()&&(g=ua(g.animVal).href);if(!p.test(g)){if(m===Ub){var h=e.attr("href")||e.attr("xlink:href");if(h&&0>h.indexOf("://"))if(g="#"+b,"/"==h[0])g=n+g+h;else if("#"==h[0])g=n+g+(k.path()||"/")+h;
-else{var l=k.path().split("/"),h=h.split("/");2!==l.length||l[1]||(l.length=1);for(var q=0;q<h.length;q++)"."!=h[q]&&(".."==h[q]?l.pop():h[q].length&&l.push(h[q]));g=n+g+l.join("/")}}l=k.$$rewrite(g);g&&(!e.attr("target")&&l&&!a.isDefaultPrevented())&&(a.preventDefault(),l!=d.url()&&(k.$$parse(l),c.$apply(),W.angular["ff-684208-preventDefault"]=!0))}}});k.absUrl()!=l&&d.url(k.absUrl(),!0);d.onUrlChange(function(a){k.absUrl()!=a&&(c.$evalAsync(function(){var b=k.absUrl();k.$$parse(a);c.$broadcast("$locationChangeStart",
-a,b).defaultPrevented?(k.$$parse(b),d.url(b)):g(b)}),c.$$phase||c.$digest())});var q=0;c.$watch(function(){var a=d.url(),b=k.$$replace;q&&a==k.absUrl()||(q++,c.$evalAsync(function(){c.$broadcast("$locationChangeStart",k.absUrl(),a).defaultPrevented?k.$$parse(a):(d.url(k.absUrl(),b),g(a))}));k.$$replace=!1;return q});return k}]}function Xd(){var b=!0,a=this;this.debugEnabled=function(a){return y(a)?(b=a,this):b};this.$get=["$window",function(c){function d(a){a instanceof Error&&(a.stack?a=a.message&&
--1===a.stack.indexOf(a.message)?"Error: "+a.message+"\n"+a.stack:a.stack:a.sourceURL&&(a=a.message+"\n"+a.sourceURL+":"+a.line));return a}function e(a){var b=c.console||{},e=b[a]||b.log||E;a=!1;try{a=!!e.apply}catch(m){}return a?function(){var a=[];r(arguments,function(b){a.push(d(b))});return e.apply(b,a)}:function(a,b){e(a,null==b?"":b)}}return{log:e("log"),info:e("info"),warn:e("warn"),error:e("error"),debug:function(){var c=e("debug");return function(){b&&c.apply(a,arguments)}}()}}]}function ka(b,
-a){if("__defineGetter__"===b||"__defineSetter__"===b||"__lookupGetter__"===b||"__lookupSetter__"===b||"__proto__"===b)throw la("isecfld",a);return b}function va(b,a){if(b){if(b.constructor===b)throw la("isecfn",a);if(b.document&&b.location&&b.alert&&b.setInterval)throw la("isecwindow",a);if(b.children&&(b.nodeName||b.prop&&b.attr&&b.find))throw la("isecdom",a);if(b===Object)throw la("isecobj",a);}return b}function ub(b,a,c,d,e){va(b,d);e=e||{};a=a.split(".");for(var f,g=0;1<a.length;g++){f=ka(a.shift(),
-d);var k=va(b[f],d);k||(k={},b[f]=k);b=k;b.then&&e.unwrapPromises&&(wa(d),"$$v"in b||function(a){a.then(function(b){a.$$v=b})}(b),b.$$v===t&&(b.$$v={}),b=b.$$v)}f=ka(a.shift(),d);va(b[f],d);return b[f]=c}function Dc(b,a,c,d,e,f,g){ka(b,f);ka(a,f);ka(c,f);ka(d,f);ka(e,f);return g.unwrapPromises?function(g,m){var h=m&&m.hasOwnProperty(b)?m:g,l;if(null==h)return h;(h=h[b])&&h.then&&(wa(f),"$$v"in h||(l=h,l.$$v=t,l.then(function(a){l.$$v=a})),h=h.$$v);if(!a)return h;if(null==h)return t;(h=h[a])&&h.then&&
-(wa(f),"$$v"in h||(l=h,l.$$v=t,l.then(function(a){l.$$v=a})),h=h.$$v);if(!c)return h;if(null==h)return t;(h=h[c])&&h.then&&(wa(f),"$$v"in h||(l=h,l.$$v=t,l.then(function(a){l.$$v=a})),h=h.$$v);if(!d)return h;if(null==h)return t;(h=h[d])&&h.then&&(wa(f),"$$v"in h||(l=h,l.$$v=t,l.then(function(a){l.$$v=a})),h=h.$$v);if(!e)return h;if(null==h)return t;(h=h[e])&&h.then&&(wa(f),"$$v"in h||(l=h,l.$$v=t,l.then(function(a){l.$$v=a})),h=h.$$v);return h}:function(f,g){var h=g&&g.hasOwnProperty(b)?g:f;if(null==
-h)return h;h=h[b];if(!a)return h;if(null==h)return t;h=h[a];if(!c)return h;if(null==h)return t;h=h[c];if(!d)return h;if(null==h)return t;h=h[d];return e?null==h?t:h=h[e]:h}}function Ec(b,a,c){if(Vb.hasOwnProperty(b))return Vb[b];var d=b.split("."),e=d.length,f;if(a.csp)f=6>e?Dc(d[0],d[1],d[2],d[3],d[4],c,a):function(b,f){var g=0,k;do k=Dc(d[g++],d[g++],d[g++],d[g++],d[g++],c,a)(b,f),f=t,b=k;while(g<e);return k};else{var g="var p;\n";r(d,function(b,d){ka(b,c);g+="if(s == null) return undefined;\ns="+
-(d?"s":'((k&&k.hasOwnProperty("'+b+'"))?k:s)')+'["'+b+'"];\n'+(a.unwrapPromises?'if (s && s.then) {\n pw("'+c.replace(/(["\r\n])/g,"\\$1")+'");\n if (!("$$v" in s)) {\n p=s;\n p.$$v = undefined;\n p.then(function(v) {p.$$v=v;});\n}\n s=s.$$v\n}\n':"")});var g=g+"return s;",k=new Function("s","k","pw",g);k.toString=ba(g);f=a.unwrapPromises?function(a,b){return k(a,b,wa)}:k}"hasOwnProperty"!==b&&(Vb[b]=f);return f}function Yd(){var b={},a={csp:!1,unwrapPromises:!1,logPromiseWarnings:!0};this.unwrapPromises=
-function(b){return y(b)?(a.unwrapPromises=!!b,this):a.unwrapPromises};this.logPromiseWarnings=function(b){return y(b)?(a.logPromiseWarnings=b,this):a.logPromiseWarnings};this.$get=["$filter","$sniffer","$log",function(c,d,e){a.csp=d.csp;wa=function(b){a.logPromiseWarnings&&!Fc.hasOwnProperty(b)&&(Fc[b]=!0,e.warn("[$parse] Promise found in the expression `"+b+"`. Automatic unwrapping of promises in Angular expressions is deprecated."))};return function(d){var e;switch(typeof d){case "string":if(b.hasOwnProperty(d))return b[d];
-e=new Wb(a);e=(new fb(e,c,a)).parse(d);"hasOwnProperty"!==d&&(b[d]=e);return e;case "function":return d;default:return E}}}]}function $d(){this.$get=["$rootScope","$exceptionHandler",function(b,a){return Ae(function(a){b.$evalAsync(a)},a)}]}function Ae(b,a){function c(a){return a}function d(a){return g(a)}var e=function(){var g=[],h,l;return l={resolve:function(a){if(g){var c=g;g=t;h=f(a);c.length&&b(function(){for(var a,b=0,d=c.length;b<d;b++)a=c[b],h.then(a[0],a[1],a[2])})}},reject:function(a){l.resolve(k(a))},
-notify:function(a){if(g){var c=g;g.length&&b(function(){for(var b,d=0,e=c.length;d<e;d++)b=c[d],b[2](a)})}},promise:{then:function(b,f,k){var l=e(),F=function(d){try{l.resolve((P(b)?b:c)(d))}catch(e){l.reject(e),a(e)}},u=function(b){try{l.resolve((P(f)?f:d)(b))}catch(c){l.reject(c),a(c)}},A=function(b){try{l.notify((P(k)?k:c)(b))}catch(d){a(d)}};g?g.push([F,u,A]):h.then(F,u,A);return l.promise},"catch":function(a){return this.then(null,a)},"finally":function(a){function b(a,c){var d=e();c?d.resolve(a):
-d.reject(a);return d.promise}function d(e,f){var g=null;try{g=(a||c)()}catch(k){return b(k,!1)}return g&&P(g.then)?g.then(function(){return b(e,f)},function(a){return b(a,!1)}):b(e,f)}return this.then(function(a){return d(a,!0)},function(a){return d(a,!1)})}}}},f=function(a){return a&&P(a.then)?a:{then:function(c){var d=e();b(function(){d.resolve(c(a))});return d.promise}}},g=function(a){var b=e();b.reject(a);return b.promise},k=function(c){return{then:function(f,g){var k=e();b(function(){try{k.resolve((P(g)?
-g:d)(c))}catch(b){k.reject(b),a(b)}});return k.promise}}};return{defer:e,reject:g,when:function(k,h,l,n){var p=e(),q,s=function(b){try{return(P(h)?h:c)(b)}catch(d){return a(d),g(d)}},F=function(b){try{return(P(l)?l:d)(b)}catch(c){return a(c),g(c)}},u=function(b){try{return(P(n)?n:c)(b)}catch(d){a(d)}};b(function(){f(k).then(function(a){q||(q=!0,p.resolve(f(a).then(s,F,u)))},function(a){q||(q=!0,p.resolve(F(a)))},function(a){q||p.notify(u(a))})});return p.promise},all:function(a){var b=e(),c=0,d=J(a)?
-[]:{};r(a,function(a,e){c++;f(a).then(function(a){d.hasOwnProperty(e)||(d[e]=a,--c||b.resolve(d))},function(a){d.hasOwnProperty(e)||b.reject(a)})});0===c&&b.resolve(d);return b.promise}}}function ge(){this.$get=["$window","$timeout",function(b,a){var c=b.requestAnimationFrame||b.webkitRequestAnimationFrame||b.mozRequestAnimationFrame,d=b.cancelAnimationFrame||b.webkitCancelAnimationFrame||b.mozCancelAnimationFrame||b.webkitCancelRequestAnimationFrame,e=!!c,f=e?function(a){var b=c(a);return function(){d(b)}}:
-function(b){var c=a(b,16.66,!1);return function(){a.cancel(c)}};f.supported=e;return f}]}function Zd(){var b=10,a=C("$rootScope"),c=null;this.digestTtl=function(a){arguments.length&&(b=a);return b};this.$get=["$injector","$exceptionHandler","$parse","$browser",function(d,e,f,g){function k(){this.$id=hb();this.$$phase=this.$parent=this.$$watchers=this.$$nextSibling=this.$$prevSibling=this.$$childHead=this.$$childTail=null;this["this"]=this.$root=this;this.$$destroyed=!1;this.$$asyncQueue=[];this.$$postDigestQueue=
-[];this.$$listeners={};this.$$listenerCount={};this.$$isolateBindings={}}function m(b){if(p.$$phase)throw a("inprog",p.$$phase);p.$$phase=b}function h(a,b){var c=f(a);Wa(c,b);return c}function l(a,b,c){do a.$$listenerCount[c]-=b,0===a.$$listenerCount[c]&&delete a.$$listenerCount[c];while(a=a.$parent)}function n(){}k.prototype={constructor:k,$new:function(a){a?(a=new k,a.$root=this.$root,a.$$asyncQueue=this.$$asyncQueue,a.$$postDigestQueue=this.$$postDigestQueue):(this.$$childScopeClass||(this.$$childScopeClass=
-function(){this.$$watchers=this.$$nextSibling=this.$$childHead=this.$$childTail=null;this.$$listeners={};this.$$listenerCount={};this.$id=hb();this.$$childScopeClass=null},this.$$childScopeClass.prototype=this),a=new this.$$childScopeClass);a["this"]=a;a.$parent=this;a.$$prevSibling=this.$$childTail;this.$$childHead?this.$$childTail=this.$$childTail.$$nextSibling=a:this.$$childHead=this.$$childTail=a;return a},$watch:function(a,b,d){var e=h(a,"watch"),f=this.$$watchers,g={fn:b,last:n,get:e,exp:a,
-eq:!!d};c=null;if(!P(b)){var k=h(b||E,"listener");g.fn=function(a,b,c){k(c)}}if("string"==typeof a&&e.constant){var l=g.fn;g.fn=function(a,b,c){l.call(this,a,b,c);Sa(f,g)}}f||(f=this.$$watchers=[]);f.unshift(g);return function(){Sa(f,g);c=null}},$watchCollection:function(a,b){var c=this,d,e,g,k=1<b.length,h=0,l=f(a),m=[],p={},n=!0,r=0;return this.$watch(function(){d=l(c);var a,b,f;if(T(d))if(Pa(d))for(e!==m&&(e=m,r=e.length=0,h++),a=d.length,r!==a&&(h++,e.length=r=a),b=0;b<a;b++)f=e[b]!==e[b]&&d[b]!==
-d[b],f||e[b]===d[b]||(h++,e[b]=d[b]);else{e!==p&&(e=p={},r=0,h++);a=0;for(b in d)d.hasOwnProperty(b)&&(a++,e.hasOwnProperty(b)?(f=e[b]!==e[b]&&d[b]!==d[b],f||e[b]===d[b]||(h++,e[b]=d[b])):(r++,e[b]=d[b],h++));if(r>a)for(b in h++,e)e.hasOwnProperty(b)&&!d.hasOwnProperty(b)&&(r--,delete e[b])}else e!==d&&(e=d,h++);return h},function(){n?(n=!1,b(d,d,c)):b(d,g,c);if(k)if(T(d))if(Pa(d)){g=Array(d.length);for(var a=0;a<d.length;a++)g[a]=d[a]}else for(a in g={},d)kb.call(d,a)&&(g[a]=d[a]);else g=d})},$digest:function(){var d,
-f,k,h,l=this.$$asyncQueue,r=this.$$postDigestQueue,R,z,t=b,L,O=[],w,B,I;m("$digest");g.$$checkUrlChange();c=null;do{z=!1;for(L=this;l.length;){try{I=l.shift(),I.scope.$eval(I.expression)}catch(H){p.$$phase=null,e(H)}c=null}a:do{if(h=L.$$watchers)for(R=h.length;R--;)try{if(d=h[R])if((f=d.get(L))!==(k=d.last)&&!(d.eq?Aa(f,k):"number"===typeof f&&"number"===typeof k&&isNaN(f)&&isNaN(k)))z=!0,c=d,d.last=d.eq?Ha(f,null):f,d.fn(f,k===n?f:k,L),5>t&&(w=4-t,O[w]||(O[w]=[]),B=P(d.exp)?"fn: "+(d.exp.name||d.exp.toString()):
-d.exp,B+="; newVal: "+na(f)+"; oldVal: "+na(k),O[w].push(B));else if(d===c){z=!1;break a}}catch(y){p.$$phase=null,e(y)}if(!(h=L.$$childHead||L!==this&&L.$$nextSibling))for(;L!==this&&!(h=L.$$nextSibling);)L=L.$parent}while(L=h);if((z||l.length)&&!t--)throw p.$$phase=null,a("infdig",b,na(O));}while(z||l.length);for(p.$$phase=null;r.length;)try{r.shift()()}catch(v){e(v)}},$destroy:function(){if(!this.$$destroyed){var a=this.$parent;this.$broadcast("$destroy");this.$$destroyed=!0;this!==p&&(r(this.$$listenerCount,
-Bb(null,l,this)),a.$$childHead==this&&(a.$$childHead=this.$$nextSibling),a.$$childTail==this&&(a.$$childTail=this.$$prevSibling),this.$$prevSibling&&(this.$$prevSibling.$$nextSibling=this.$$nextSibling),this.$$nextSibling&&(this.$$nextSibling.$$prevSibling=this.$$prevSibling),this.$parent=this.$$nextSibling=this.$$prevSibling=this.$$childHead=this.$$childTail=this.$root=null,this.$$listeners={},this.$$watchers=this.$$asyncQueue=this.$$postDigestQueue=[],this.$destroy=this.$digest=this.$apply=E,this.$on=
-this.$watch=function(){return E})}},$eval:function(a,b){return f(a)(this,b)},$evalAsync:function(a){p.$$phase||p.$$asyncQueue.length||g.defer(function(){p.$$asyncQueue.length&&p.$digest()});this.$$asyncQueue.push({scope:this,expression:a})},$$postDigest:function(a){this.$$postDigestQueue.push(a)},$apply:function(a){try{return m("$apply"),this.$eval(a)}catch(b){e(b)}finally{p.$$phase=null;try{p.$digest()}catch(c){throw e(c),c;}}},$on:function(a,b){var c=this.$$listeners[a];c||(this.$$listeners[a]=
-c=[]);c.push(b);var d=this;do d.$$listenerCount[a]||(d.$$listenerCount[a]=0),d.$$listenerCount[a]++;while(d=d.$parent);var e=this;return function(){c[Ra(c,b)]=null;l(e,1,a)}},$emit:function(a,b){var c=[],d,f=this,g=!1,k={name:a,targetScope:f,stopPropagation:function(){g=!0},preventDefault:function(){k.defaultPrevented=!0},defaultPrevented:!1},h=[k].concat(Ba.call(arguments,1)),l,m;do{d=f.$$listeners[a]||c;k.currentScope=f;l=0;for(m=d.length;l<m;l++)if(d[l])try{d[l].apply(null,h)}catch(p){e(p)}else d.splice(l,
-1),l--,m--;if(g)break;f=f.$parent}while(f);return k},$broadcast:function(a,b){for(var c=this,d=this,f={name:a,targetScope:this,preventDefault:function(){f.defaultPrevented=!0},defaultPrevented:!1},g=[f].concat(Ba.call(arguments,1)),k,h;c=d;){f.currentScope=c;d=c.$$listeners[a]||[];k=0;for(h=d.length;k<h;k++)if(d[k])try{d[k].apply(null,g)}catch(l){e(l)}else d.splice(k,1),k--,h--;if(!(d=c.$$listenerCount[a]&&c.$$childHead||c!==this&&c.$$nextSibling))for(;c!==this&&!(d=c.$$nextSibling);)c=c.$parent}return f}};
-var p=new k;return p}]}function cd(){var b=/^\s*(https?|ftp|mailto|tel|file):/,a=/^\s*((https?|ftp|file):|data:image\/)/;this.aHrefSanitizationWhitelist=function(a){return y(a)?(b=a,this):b};this.imgSrcSanitizationWhitelist=function(b){return y(b)?(a=b,this):a};this.$get=function(){return function(c,d){var e=d?a:b,f;if(!Q||8<=Q)if(f=ua(c).href,""!==f&&!f.match(e))return"unsafe:"+f;return c}}}function Be(b){if("self"===b)return b;if(v(b)){if(-1<b.indexOf("***"))throw xa("iwcard",b);b=b.replace(/([-()\[\]{}+?*.$\^|,:#<!\\])/g,
-"\\$1").replace(/\x08/g,"\\x08").replace("\\*\\*",".*").replace("\\*","[^:/.?&;]*");return RegExp("^"+b+"$")}if(jb(b))return RegExp("^"+b.source+"$");throw xa("imatcher");}function Gc(b){var a=[];y(b)&&r(b,function(b){a.push(Be(b))});return a}function be(){this.SCE_CONTEXTS=ga;var b=["self"],a=[];this.resourceUrlWhitelist=function(a){arguments.length&&(b=Gc(a));return b};this.resourceUrlBlacklist=function(b){arguments.length&&(a=Gc(b));return a};this.$get=["$injector",function(c){function d(a){var b=
-function(a){this.$$unwrapTrustedValue=function(){return a}};a&&(b.prototype=new a);b.prototype.valueOf=function(){return this.$$unwrapTrustedValue()};b.prototype.toString=function(){return this.$$unwrapTrustedValue().toString()};return b}var e=function(a){throw xa("unsafe");};c.has("$sanitize")&&(e=c.get("$sanitize"));var f=d(),g={};g[ga.HTML]=d(f);g[ga.CSS]=d(f);g[ga.URL]=d(f);g[ga.JS]=d(f);g[ga.RESOURCE_URL]=d(g[ga.URL]);return{trustAs:function(a,b){var c=g.hasOwnProperty(a)?g[a]:null;if(!c)throw xa("icontext",
-a,b);if(null===b||b===t||""===b)return b;if("string"!==typeof b)throw xa("itype",a);return new c(b)},getTrusted:function(c,d){if(null===d||d===t||""===d)return d;var f=g.hasOwnProperty(c)?g[c]:null;if(f&&d instanceof f)return d.$$unwrapTrustedValue();if(c===ga.RESOURCE_URL){var f=ua(d.toString()),l,n,p=!1;l=0;for(n=b.length;l<n;l++)if("self"===b[l]?Pb(f):b[l].exec(f.href)){p=!0;break}if(p)for(l=0,n=a.length;l<n;l++)if("self"===a[l]?Pb(f):a[l].exec(f.href)){p=!1;break}if(p)return d;throw xa("insecurl",
-d.toString());}if(c===ga.HTML)return e(d);throw xa("unsafe");},valueOf:function(a){return a instanceof f?a.$$unwrapTrustedValue():a}}}]}function ae(){var b=!0;this.enabled=function(a){arguments.length&&(b=!!a);return b};this.$get=["$parse","$sniffer","$sceDelegate",function(a,c,d){if(b&&c.msie&&8>c.msieDocumentMode)throw xa("iequirks");var e=ha(ga);e.isEnabled=function(){return b};e.trustAs=d.trustAs;e.getTrusted=d.getTrusted;e.valueOf=d.valueOf;b||(e.trustAs=e.getTrusted=function(a,b){return b},
-e.valueOf=Qa);e.parseAs=function(b,c){var d=a(c);return d.literal&&d.constant?d:function(a,c){return e.getTrusted(b,d(a,c))}};var f=e.parseAs,g=e.getTrusted,k=e.trustAs;r(ga,function(a,b){var c=K(b);e[Za("parse_as_"+c)]=function(b){return f(a,b)};e[Za("get_trusted_"+c)]=function(b){return g(a,b)};e[Za("trust_as_"+c)]=function(b){return k(a,b)}});return e}]}function ce(){this.$get=["$window","$document",function(b,a){var c={},d=U((/android (\d+)/.exec(K((b.navigator||{}).userAgent))||[])[1]),e=/Boxee/i.test((b.navigator||
-{}).userAgent),f=a[0]||{},g=f.documentMode,k,m=/^(Moz|webkit|O|ms)(?=[A-Z])/,h=f.body&&f.body.style,l=!1,n=!1;if(h){for(var p in h)if(l=m.exec(p)){k=l[0];k=k.substr(0,1).toUpperCase()+k.substr(1);break}k||(k="WebkitOpacity"in h&&"webkit");l=!!("transition"in h||k+"Transition"in h);n=!!("animation"in h||k+"Animation"in h);!d||l&&n||(l=v(f.body.style.webkitTransition),n=v(f.body.style.webkitAnimation))}return{history:!(!b.history||!b.history.pushState||4>d||e),hashchange:"onhashchange"in b&&(!g||7<
-g),hasEvent:function(a){if("input"==a&&9==Q)return!1;if(x(c[a])){var b=f.createElement("div");c[a]="on"+a in b}return c[a]},csp:Xa(),vendorPrefix:k,transitions:l,animations:n,android:d,msie:Q,msieDocumentMode:g}}]}function ee(){this.$get=["$rootScope","$browser","$q","$exceptionHandler",function(b,a,c,d){function e(e,k,m){var h=c.defer(),l=h.promise,n=y(m)&&!m;k=a.defer(function(){try{h.resolve(e())}catch(a){h.reject(a),d(a)}finally{delete f[l.$$timeoutId]}n||b.$apply()},k);l.$$timeoutId=k;f[k]=h;
-return l}var f={};e.cancel=function(b){return b&&b.$$timeoutId in f?(f[b.$$timeoutId].reject("canceled"),delete f[b.$$timeoutId],a.defer.cancel(b.$$timeoutId)):!1};return e}]}function ua(b,a){var c=b;Q&&(Y.setAttribute("href",c),c=Y.href);Y.setAttribute("href",c);return{href:Y.href,protocol:Y.protocol?Y.protocol.replace(/:$/,""):"",host:Y.host,search:Y.search?Y.search.replace(/^\?/,""):"",hash:Y.hash?Y.hash.replace(/^#/,""):"",hostname:Y.hostname,port:Y.port,pathname:"/"===Y.pathname.charAt(0)?Y.pathname:
-"/"+Y.pathname}}function Pb(b){b=v(b)?ua(b):b;return b.protocol===Hc.protocol&&b.host===Hc.host}function fe(){this.$get=ba(W)}function mc(b){function a(d,e){if(T(d)){var f={};r(d,function(b,c){f[c]=a(c,b)});return f}return b.factory(d+c,e)}var c="Filter";this.register=a;this.$get=["$injector",function(a){return function(b){return a.get(b+c)}}];a("currency",Ic);a("date",Jc);a("filter",Ce);a("json",De);a("limitTo",Ee);a("lowercase",Fe);a("number",Kc);a("orderBy",Lc);a("uppercase",Ge)}function Ce(){return function(b,
-a,c){if(!J(b))return b;var d=typeof c,e=[];e.check=function(a){for(var b=0;b<e.length;b++)if(!e[b](a))return!1;return!0};"function"!==d&&(c="boolean"===d&&c?function(a,b){return Va.equals(a,b)}:function(a,b){if(a&&b&&"object"===typeof a&&"object"===typeof b){for(var d in a)if("$"!==d.charAt(0)&&kb.call(a,d)&&c(a[d],b[d]))return!0;return!1}b=(""+b).toLowerCase();return-1<(""+a).toLowerCase().indexOf(b)});var f=function(a,b){if("string"==typeof b&&"!"===b.charAt(0))return!f(a,b.substr(1));switch(typeof a){case "boolean":case "number":case "string":return c(a,
-b);case "object":switch(typeof b){case "object":return c(a,b);default:for(var d in a)if("$"!==d.charAt(0)&&f(a[d],b))return!0}return!1;case "array":for(d=0;d<a.length;d++)if(f(a[d],b))return!0;return!1;default:return!1}};switch(typeof a){case "boolean":case "number":case "string":a={$:a};case "object":for(var g in a)(function(b){"undefined"!==typeof a[b]&&e.push(function(c){return f("$"==b?c:c&&c[b],a[b])})})(g);break;case "function":e.push(a);break;default:return b}d=[];for(g=0;g<b.length;g++){var k=
-b[g];e.check(k)&&d.push(k)}return d}}function Ic(b){var a=b.NUMBER_FORMATS;return function(b,d){x(d)&&(d=a.CURRENCY_SYM);return Mc(b,a.PATTERNS[1],a.GROUP_SEP,a.DECIMAL_SEP,2).replace(/\u00A4/g,d)}}function Kc(b){var a=b.NUMBER_FORMATS;return function(b,d){return Mc(b,a.PATTERNS[0],a.GROUP_SEP,a.DECIMAL_SEP,d)}}function Mc(b,a,c,d,e){if(null==b||!isFinite(b)||T(b))return"";var f=0>b;b=Math.abs(b);var g=b+"",k="",m=[],h=!1;if(-1!==g.indexOf("e")){var l=g.match(/([\d\.]+)e(-?)(\d+)/);l&&"-"==l[2]&&
-l[3]>e+1?(g="0",b=0):(k=g,h=!0)}if(h)0<e&&(-1<b&&1>b)&&(k=b.toFixed(e));else{g=(g.split(Nc)[1]||"").length;x(e)&&(e=Math.min(Math.max(a.minFrac,g),a.maxFrac));b=+(Math.round(+(b.toString()+"e"+e)).toString()+"e"+-e);0===b&&(f=!1);b=(""+b).split(Nc);g=b[0];b=b[1]||"";var l=0,n=a.lgSize,p=a.gSize;if(g.length>=n+p)for(l=g.length-n,h=0;h<l;h++)0===(l-h)%p&&0!==h&&(k+=c),k+=g.charAt(h);for(h=l;h<g.length;h++)0===(g.length-h)%n&&0!==h&&(k+=c),k+=g.charAt(h);for(;b.length<e;)b+="0";e&&"0"!==e&&(k+=d+b.substr(0,
-e))}m.push(f?a.negPre:a.posPre);m.push(k);m.push(f?a.negSuf:a.posSuf);return m.join("")}function Xb(b,a,c){var d="";0>b&&(d="-",b=-b);for(b=""+b;b.length<a;)b="0"+b;c&&(b=b.substr(b.length-a));return d+b}function $(b,a,c,d){c=c||0;return function(e){e=e["get"+b]();if(0<c||e>-c)e+=c;0===e&&-12==c&&(e=12);return Xb(e,a,d)}}function vb(b,a){return function(c,d){var e=c["get"+b](),f=Ia(a?"SHORT"+b:b);return d[f][e]}}function Jc(b){function a(a){var b;if(b=a.match(c)){a=new Date(0);var f=0,g=0,k=b[8]?
-a.setUTCFullYear:a.setFullYear,m=b[8]?a.setUTCHours:a.setHours;b[9]&&(f=U(b[9]+b[10]),g=U(b[9]+b[11]));k.call(a,U(b[1]),U(b[2])-1,U(b[3]));f=U(b[4]||0)-f;g=U(b[5]||0)-g;k=U(b[6]||0);b=Math.round(1E3*parseFloat("0."+(b[7]||0)));m.call(a,f,g,k,b)}return a}var c=/^(\d{4})-?(\d\d)-?(\d\d)(?:T(\d\d)(?::?(\d\d)(?::?(\d\d)(?:\.(\d+))?)?)?(Z|([+-])(\d\d):?(\d\d))?)?$/;return function(c,e){var f="",g=[],k,m;e=e||"mediumDate";e=b.DATETIME_FORMATS[e]||e;v(c)&&(c=He.test(c)?U(c):a(c));ib(c)&&(c=new Date(c));
-if(!ta(c))return c;for(;e;)(m=Ie.exec(e))?(g=g.concat(Ba.call(m,1)),e=g.pop()):(g.push(e),e=null);r(g,function(a){k=Je[a];f+=k?k(c,b.DATETIME_FORMATS):a.replace(/(^'|'$)/g,"").replace(/''/g,"'")});return f}}function De(){return function(b){return na(b,!0)}}function Ee(){return function(b,a){if(!J(b)&&!v(b))return b;a=Infinity===Math.abs(Number(a))?Number(a):U(a);if(v(b))return a?0<=a?b.slice(0,a):b.slice(a,b.length):"";var c=[],d,e;a>b.length?a=b.length:a<-b.length&&(a=-b.length);0<a?(d=0,e=a):(d=
-b.length+a,e=b.length);for(;d<e;d++)c.push(b[d]);return c}}function Lc(b){return function(a,c,d){function e(a,b){return Ua(b)?function(b,c){return a(c,b)}:a}function f(a,b){var c=typeof a,d=typeof b;return c==d?(ta(a)&&ta(b)&&(a=a.valueOf(),b=b.valueOf()),"string"==c&&(a=a.toLowerCase(),b=b.toLowerCase()),a===b?0:a<b?-1:1):c<d?-1:1}if(!Pa(a)||!c)return a;c=J(c)?c:[c];c=Vc(c,function(a){var c=!1,d=a||Qa;if(v(a)){if("+"==a.charAt(0)||"-"==a.charAt(0))c="-"==a.charAt(0),a=a.substring(1);d=b(a);if(d.constant){var g=
-d();return e(function(a,b){return f(a[g],b[g])},c)}}return e(function(a,b){return f(d(a),d(b))},c)});for(var g=[],k=0;k<a.length;k++)g.push(a[k]);return g.sort(e(function(a,b){for(var d=0;d<c.length;d++){var e=c[d](a,b);if(0!==e)return e}return 0},d))}}function ya(b){P(b)&&(b={link:b});b.restrict=b.restrict||"AC";return ba(b)}function Oc(b,a,c,d){function e(a,c){c=c?"-"+mb(c,"-"):"";d.setClass(b,(a?wb:xb)+c,(a?xb:wb)+c)}var f=this,g=b.parent().controller("form")||yb,k=0,m=f.$error={},h=[];f.$name=
-a.name||a.ngForm;f.$dirty=!1;f.$pristine=!0;f.$valid=!0;f.$invalid=!1;g.$addControl(f);b.addClass(Oa);e(!0);f.$addControl=function(a){Da(a.$name,"input");h.push(a);a.$name&&(f[a.$name]=a)};f.$removeControl=function(a){a.$name&&f[a.$name]===a&&delete f[a.$name];r(m,function(b,c){f.$setValidity(c,!0,a)});Sa(h,a)};f.$setValidity=function(a,b,c){var d=m[a];if(b)d&&(Sa(d,c),d.length||(k--,k||(e(b),f.$valid=!0,f.$invalid=!1),m[a]=!1,e(!0,a),g.$setValidity(a,!0,f)));else{k||e(b);if(d){if(-1!=Ra(d,c))return}else m[a]=
-d=[],k++,e(!1,a),g.$setValidity(a,!1,f);d.push(c);f.$valid=!1;f.$invalid=!0}};f.$setDirty=function(){d.removeClass(b,Oa);d.addClass(b,zb);f.$dirty=!0;f.$pristine=!1;g.$setDirty()};f.$setPristine=function(){d.removeClass(b,zb);d.addClass(b,Oa);f.$dirty=!1;f.$pristine=!0;r(h,function(a){a.$setPristine()})}}function sa(b,a,c,d){b.$setValidity(a,c);return c?d:t}function Pc(b,a){var c,d;if(a)for(c=0;c<a.length;++c)if(d=a[c],b[d])return!0;return!1}function Ke(b,a,c,d,e){T(e)&&(b.$$hasNativeValidators=!0,
-b.$parsers.push(function(f){if(b.$error[a]||Pc(e,d)||!Pc(e,c))return f;b.$setValidity(a,!1)}))}function Ab(b,a,c,d,e,f){var g=a.prop(Le),k=a[0].placeholder,m={},h=K(a[0].type);d.$$validityState=g;if(!e.android){var l=!1;a.on("compositionstart",function(a){l=!0});a.on("compositionend",function(){l=!1;n()})}var n=function(e){if(!l){var f=a.val();if(Q&&"input"===(e||m).type&&a[0].placeholder!==k)k=a[0].placeholder;else if("password"!==h&&Ua(c.ngTrim||"T")&&(f=aa(f)),e=g&&d.$$hasNativeValidators,d.$viewValue!==
-f||""===f&&e)b.$root.$$phase?d.$setViewValue(f):b.$apply(function(){d.$setViewValue(f)})}};if(e.hasEvent("input"))a.on("input",n);else{var p,q=function(){p||(p=f.defer(function(){n();p=null}))};a.on("keydown",function(a){a=a.keyCode;91===a||(15<a&&19>a||37<=a&&40>=a)||q()});if(e.hasEvent("paste"))a.on("paste cut",q)}a.on("change",n);d.$render=function(){a.val(d.$isEmpty(d.$viewValue)?"":d.$viewValue)};var s=c.ngPattern;s&&((e=s.match(/^\/(.*)\/([gim]*)$/))?(s=RegExp(e[1],e[2]),e=function(a){return sa(d,
-"pattern",d.$isEmpty(a)||s.test(a),a)}):e=function(c){var e=b.$eval(s);if(!e||!e.test)throw C("ngPattern")("noregexp",s,e,ia(a));return sa(d,"pattern",d.$isEmpty(c)||e.test(c),c)},d.$formatters.push(e),d.$parsers.push(e));if(c.ngMinlength){var r=U(c.ngMinlength);e=function(a){return sa(d,"minlength",d.$isEmpty(a)||a.length>=r,a)};d.$parsers.push(e);d.$formatters.push(e)}if(c.ngMaxlength){var u=U(c.ngMaxlength);e=function(a){return sa(d,"maxlength",d.$isEmpty(a)||a.length<=u,a)};d.$parsers.push(e);
-d.$formatters.push(e)}}function Yb(b,a){b="ngClass"+b;return["$animate",function(c){function d(a,b){var c=[],d=0;a:for(;d<a.length;d++){for(var e=a[d],l=0;l<b.length;l++)if(e==b[l])continue a;c.push(e)}return c}function e(a){if(!J(a)){if(v(a))return a.split(" ");if(T(a)){var b=[];r(a,function(a,c){a&&(b=b.concat(c.split(" ")))});return b}}return a}return{restrict:"AC",link:function(f,g,k){function m(a,b){var c=g.data("$classCounts")||{},d=[];r(a,function(a){if(0<b||c[a])c[a]=(c[a]||0)+b,c[a]===+(0<
-b)&&d.push(a)});g.data("$classCounts",c);return d.join(" ")}function h(b){if(!0===a||f.$index%2===a){var h=e(b||[]);if(!l){var q=m(h,1);k.$addClass(q)}else if(!Aa(b,l)){var s=e(l),q=d(h,s),h=d(s,h),h=m(h,-1),q=m(q,1);0===q.length?c.removeClass(g,h):0===h.length?c.addClass(g,q):c.setClass(g,q,h)}}l=ha(b)}var l;f.$watch(k[b],h,!0);k.$observe("class",function(a){h(f.$eval(k[b]))});"ngClass"!==b&&f.$watch("$index",function(c,d){var g=c&1;if(g!==(d&1)){var h=e(f.$eval(k[b]));g===a?(g=m(h,1),k.$addClass(g)):
-(g=m(h,-1),k.$removeClass(g))}})}}}]}var Le="validity",K=function(b){return v(b)?b.toLowerCase():b},kb=Object.prototype.hasOwnProperty,Ia=function(b){return v(b)?b.toUpperCase():b},Q,w,Ea,Ba=[].slice,Me=[].push,za=Object.prototype.toString,Ta=C("ng"),Va=W.angular||(W.angular={}),Ya,Ma,ma=["0","0","0"];Q=U((/msie (\d+)/.exec(K(navigator.userAgent))||[])[1]);isNaN(Q)&&(Q=U((/trident\/.*; rv:(\d+)/.exec(K(navigator.userAgent))||[])[1]));E.$inject=[];Qa.$inject=[];var J=function(){return P(Array.isArray)?
-Array.isArray:function(b){return"[object Array]"===za.call(b)}}(),aa=function(){return String.prototype.trim?function(b){return v(b)?b.trim():b}:function(b){return v(b)?b.replace(/^\s\s*/,"").replace(/\s\s*$/,""):b}}();Ma=9>Q?function(b){b=b.nodeName?b:b[0];return b.scopeName&&"HTML"!=b.scopeName?Ia(b.scopeName+":"+b.nodeName):b.nodeName}:function(b){return b.nodeName?b.nodeName:b[0].nodeName};var Xa=function(){if(y(Xa.isActive_))return Xa.isActive_;var b=!(!X.querySelector("[ng-csp]")&&!X.querySelector("[data-ng-csp]"));
-if(!b)try{new Function("")}catch(a){b=!0}return Xa.isActive_=b},Yc=/[A-Z]/g,ad={full:"1.2.26",major:1,minor:2,dot:26,codeName:"captivating-disinterest"};S.expando="ng339";var ab=S.cache={},ne=1,sb=W.document.addEventListener?function(b,a,c){b.addEventListener(a,c,!1)}:function(b,a,c){b.attachEvent("on"+a,c)},$a=W.document.removeEventListener?function(b,a,c){b.removeEventListener(a,c,!1)}:function(b,a,c){b.detachEvent("on"+a,c)};S._data=function(b){return this.cache[b[this.expando]]||{}};var ie=/([\:\-\_]+(.))/g,
-je=/^moz([A-Z])/,Hb=C("jqLite"),ke=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,Ib=/<|&#?\w+;/,le=/<([\w:]+)/,me=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,ea={option:[1,'<select multiple="multiple">',"</select>"],thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};ea.optgroup=ea.option;ea.tbody=ea.tfoot=ea.colgroup=ea.caption=ea.thead;ea.th=
-ea.td;var La=S.prototype={ready:function(b){function a(){c||(c=!0,b())}var c=!1;"complete"===X.readyState?setTimeout(a):(this.on("DOMContentLoaded",a),S(W).on("load",a))},toString:function(){var b=[];r(this,function(a){b.push(""+a)});return"["+b.join(", ")+"]"},eq:function(b){return 0<=b?w(this[b]):w(this[this.length+b])},length:0,push:Me,sort:[].sort,splice:[].splice},qb={};r("multiple selected checked disabled readOnly required open".split(" "),function(b){qb[K(b)]=b});var rc={};r("input select option textarea button form details".split(" "),
-function(b){rc[Ia(b)]=!0});r({data:Mb,removeData:Lb},function(b,a){S[a]=b});r({data:Mb,inheritedData:pb,scope:function(b){return w.data(b,"$scope")||pb(b.parentNode||b,["$isolateScope","$scope"])},isolateScope:function(b){return w.data(b,"$isolateScope")||w.data(b,"$isolateScopeNoTemplate")},controller:oc,injector:function(b){return pb(b,"$injector")},removeAttr:function(b,a){b.removeAttribute(a)},hasClass:Nb,css:function(b,a,c){a=Za(a);if(y(c))b.style[a]=c;else{var d;8>=Q&&(d=b.currentStyle&&b.currentStyle[a],
-""===d&&(d="auto"));d=d||b.style[a];8>=Q&&(d=""===d?t:d);return d}},attr:function(b,a,c){var d=K(a);if(qb[d])if(y(c))c?(b[a]=!0,b.setAttribute(a,d)):(b[a]=!1,b.removeAttribute(d));else return b[a]||(b.attributes.getNamedItem(a)||E).specified?d:t;else if(y(c))b.setAttribute(a,c);else if(b.getAttribute)return b=b.getAttribute(a,2),null===b?t:b},prop:function(b,a,c){if(y(c))b[a]=c;else return b[a]},text:function(){function b(b,d){var e=a[b.nodeType];if(x(d))return e?b[e]:"";b[e]=d}var a=[];9>Q?(a[1]=
-"innerText",a[3]="nodeValue"):a[1]=a[3]="textContent";b.$dv="";return b}(),val:function(b,a){if(x(a)){if("SELECT"===Ma(b)&&b.multiple){var c=[];r(b.options,function(a){a.selected&&c.push(a.value||a.text)});return 0===c.length?null:c}return b.value}b.value=a},html:function(b,a){if(x(a))return b.innerHTML;for(var c=0,d=b.childNodes;c<d.length;c++)Ja(d[c]);b.innerHTML=a},empty:pc},function(b,a){S.prototype[a]=function(a,d){var e,f,g=this.length;if(b!==pc&&(2==b.length&&b!==Nb&&b!==oc?a:d)===t){if(T(a)){for(e=
-0;e<g;e++)if(b===Mb)b(this[e],a);else for(f in a)b(this[e],f,a[f]);return this}e=b.$dv;g=e===t?Math.min(g,1):g;for(f=0;f<g;f++){var k=b(this[f],a,d);e=e?e+k:k}return e}for(e=0;e<g;e++)b(this[e],a,d);return this}});r({removeData:Lb,dealoc:Ja,on:function a(c,d,e,f){if(y(f))throw Hb("onargs");var g=oa(c,"events"),k=oa(c,"handle");g||oa(c,"events",g={});k||oa(c,"handle",k=oe(c,g));r(d.split(" "),function(d){var f=g[d];if(!f){if("mouseenter"==d||"mouseleave"==d){var l=X.body.contains||X.body.compareDocumentPosition?
-function(a,c){var d=9===a.nodeType?a.documentElement:a,e=c&&c.parentNode;return a===e||!!(e&&1===e.nodeType&&(d.contains?d.contains(e):a.compareDocumentPosition&&a.compareDocumentPosition(e)&16))}:function(a,c){if(c)for(;c=c.parentNode;)if(c===a)return!0;return!1};g[d]=[];a(c,{mouseleave:"mouseout",mouseenter:"mouseover"}[d],function(a){var c=a.relatedTarget;c&&(c===this||l(this,c))||k(a,d)})}else sb(c,d,k),g[d]=[];f=g[d]}f.push(e)})},off:nc,one:function(a,c,d){a=w(a);a.on(c,function f(){a.off(c,
-d);a.off(c,f)});a.on(c,d)},replaceWith:function(a,c){var d,e=a.parentNode;Ja(a);r(new S(c),function(c){d?e.insertBefore(c,d.nextSibling):e.replaceChild(c,a);d=c})},children:function(a){var c=[];r(a.childNodes,function(a){1===a.nodeType&&c.push(a)});return c},contents:function(a){return a.contentDocument||a.childNodes||[]},append:function(a,c){r(new S(c),function(c){1!==a.nodeType&&11!==a.nodeType||a.appendChild(c)})},prepend:function(a,c){if(1===a.nodeType){var d=a.firstChild;r(new S(c),function(c){a.insertBefore(c,
-d)})}},wrap:function(a,c){c=w(c)[0];var d=a.parentNode;d&&d.replaceChild(c,a);c.appendChild(a)},remove:function(a){Ja(a);var c=a.parentNode;c&&c.removeChild(a)},after:function(a,c){var d=a,e=a.parentNode;r(new S(c),function(a){e.insertBefore(a,d.nextSibling);d=a})},addClass:ob,removeClass:nb,toggleClass:function(a,c,d){c&&r(c.split(" "),function(c){var f=d;x(f)&&(f=!Nb(a,c));(f?ob:nb)(a,c)})},parent:function(a){return(a=a.parentNode)&&11!==a.nodeType?a:null},next:function(a){if(a.nextElementSibling)return a.nextElementSibling;
-for(a=a.nextSibling;null!=a&&1!==a.nodeType;)a=a.nextSibling;return a},find:function(a,c){return a.getElementsByTagName?a.getElementsByTagName(c):[]},clone:Kb,triggerHandler:function(a,c,d){var e,f;e=c.type||c;var g=(oa(a,"events")||{})[e];g&&(e={preventDefault:function(){this.defaultPrevented=!0},isDefaultPrevented:function(){return!0===this.defaultPrevented},stopPropagation:E,type:e,target:a},c.type&&(e=D(e,c)),c=ha(g),f=d?[e].concat(d):[e],r(c,function(c){c.apply(a,f)}))}},function(a,c){S.prototype[c]=
-function(c,e,f){for(var g,k=0;k<this.length;k++)x(g)?(g=a(this[k],c,e,f),y(g)&&(g=w(g))):Jb(g,a(this[k],c,e,f));return y(g)?g:this};S.prototype.bind=S.prototype.on;S.prototype.unbind=S.prototype.off});bb.prototype={put:function(a,c){this[Ka(a,this.nextUid)]=c},get:function(a){return this[Ka(a,this.nextUid)]},remove:function(a){var c=this[a=Ka(a,this.nextUid)];delete this[a];return c}};var qe=/^function\s*[^\(]*\(\s*([^\)]*)\)/m,re=/,/,se=/^\s*(_?)(\S+?)\1\s*$/,pe=/((\/\/.*$)|(\/\*[\s\S]*?\*\/))/mg,
-cb=C("$injector"),Ne=C("$animate"),Md=["$provide",function(a){this.$$selectors={};this.register=function(c,d){var e=c+"-animation";if(c&&"."!=c.charAt(0))throw Ne("notcsel",c);this.$$selectors[c.substr(1)]=e;a.factory(e,d)};this.classNameFilter=function(a){1===arguments.length&&(this.$$classNameFilter=a instanceof RegExp?a:null);return this.$$classNameFilter};this.$get=["$timeout","$$asyncCallback",function(a,d){return{enter:function(a,c,g,k){g?g.after(a):(c&&c[0]||(c=g.parent()),c.append(a));k&&
-d(k)},leave:function(a,c){a.remove();c&&d(c)},move:function(a,c,d,k){this.enter(a,c,d,k)},addClass:function(a,c,g){c=v(c)?c:J(c)?c.join(" "):"";r(a,function(a){ob(a,c)});g&&d(g)},removeClass:function(a,c,g){c=v(c)?c:J(c)?c.join(" "):"";r(a,function(a){nb(a,c)});g&&d(g)},setClass:function(a,c,g,k){r(a,function(a){ob(a,c);nb(a,g)});k&&d(k)},enabled:E}}]}],ja=C("$compile");ic.$inject=["$provide","$$sanitizeUriProvider"];var we=/^(x[\:\-_]|data[\:\-_])/i,yc=C("$interpolate"),Oe=/^([^\?#]*)(\?([^#]*))?(#(.*))?$/,
-ze={http:80,https:443,ftp:21},Sb=C("$location");Ub.prototype=Tb.prototype=Bc.prototype={$$html5:!1,$$replace:!1,absUrl:tb("$$absUrl"),url:function(a){if(x(a))return this.$$url;a=Oe.exec(a);a[1]&&this.path(decodeURIComponent(a[1]));(a[2]||a[1])&&this.search(a[3]||"");this.hash(a[5]||"");return this},protocol:tb("$$protocol"),host:tb("$$host"),port:tb("$$port"),path:Cc("$$path",function(a){a=a?a.toString():"";return"/"==a.charAt(0)?a:"/"+a}),search:function(a,c){switch(arguments.length){case 0:return this.$$search;
-case 1:if(v(a)||ib(a))a=a.toString(),this.$$search=ec(a);else if(T(a))r(a,function(c,e){null==c&&delete a[e]}),this.$$search=a;else throw Sb("isrcharg");break;default:x(c)||null===c?delete this.$$search[a]:this.$$search[a]=c}this.$$compose();return this},hash:Cc("$$hash",function(a){return a?a.toString():""}),replace:function(){this.$$replace=!0;return this}};var la=C("$parse"),Fc={},wa,Pe=Function.prototype.call,Qe=Function.prototype.apply,Qc=Function.prototype.bind,gb={"null":function(){return null},
-"true":function(){return!0},"false":function(){return!1},undefined:E,"+":function(a,c,d,e){d=d(a,c);e=e(a,c);return y(d)?y(e)?d+e:d:y(e)?e:t},"-":function(a,c,d,e){d=d(a,c);e=e(a,c);return(y(d)?d:0)-(y(e)?e:0)},"*":function(a,c,d,e){return d(a,c)*e(a,c)},"/":function(a,c,d,e){return d(a,c)/e(a,c)},"%":function(a,c,d,e){return d(a,c)%e(a,c)},"^":function(a,c,d,e){return d(a,c)^e(a,c)},"=":E,"===":function(a,c,d,e){return d(a,c)===e(a,c)},"!==":function(a,c,d,e){return d(a,c)!==e(a,c)},"==":function(a,
-c,d,e){return d(a,c)==e(a,c)},"!=":function(a,c,d,e){return d(a,c)!=e(a,c)},"<":function(a,c,d,e){return d(a,c)<e(a,c)},">":function(a,c,d,e){return d(a,c)>e(a,c)},"<=":function(a,c,d,e){return d(a,c)<=e(a,c)},">=":function(a,c,d,e){return d(a,c)>=e(a,c)},"&&":function(a,c,d,e){return d(a,c)&&e(a,c)},"||":function(a,c,d,e){return d(a,c)||e(a,c)},"&":function(a,c,d,e){return d(a,c)&e(a,c)},"|":function(a,c,d,e){return e(a,c)(a,c,d(a,c))},"!":function(a,c,d){return!d(a,c)}},Re={n:"\n",f:"\f",r:"\r",
-t:"\t",v:"\v","'":"'",'"':'"'},Wb=function(a){this.options=a};Wb.prototype={constructor:Wb,lex:function(a){this.text=a;this.index=0;this.ch=t;this.lastCh=":";for(this.tokens=[];this.index<this.text.length;){this.ch=this.text.charAt(this.index);if(this.is("\"'"))this.readString(this.ch);else if(this.isNumber(this.ch)||this.is(".")&&this.isNumber(this.peek()))this.readNumber();else if(this.isIdent(this.ch))this.readIdent();else if(this.is("(){}[].,;:?"))this.tokens.push({index:this.index,text:this.ch}),
-this.index++;else if(this.isWhitespace(this.ch)){this.index++;continue}else{a=this.ch+this.peek();var c=a+this.peek(2),d=gb[this.ch],e=gb[a],f=gb[c];f?(this.tokens.push({index:this.index,text:c,fn:f}),this.index+=3):e?(this.tokens.push({index:this.index,text:a,fn:e}),this.index+=2):d?(this.tokens.push({index:this.index,text:this.ch,fn:d}),this.index+=1):this.throwError("Unexpected next character ",this.index,this.index+1)}this.lastCh=this.ch}return this.tokens},is:function(a){return-1!==a.indexOf(this.ch)},
-was:function(a){return-1!==a.indexOf(this.lastCh)},peek:function(a){a=a||1;return this.index+a<this.text.length?this.text.charAt(this.index+a):!1},isNumber:function(a){return"0"<=a&&"9">=a},isWhitespace:function(a){return" "===a||"\r"===a||"\t"===a||"\n"===a||"\v"===a||"\u00a0"===a},isIdent:function(a){return"a"<=a&&"z">=a||"A"<=a&&"Z">=a||"_"===a||"$"===a},isExpOperator:function(a){return"-"===a||"+"===a||this.isNumber(a)},throwError:function(a,c,d){d=d||this.index;c=y(c)?"s "+c+"-"+this.index+" ["+
-this.text.substring(c,d)+"]":" "+d;throw la("lexerr",a,c,this.text);},readNumber:function(){for(var a="",c=this.index;this.index<this.text.length;){var d=K(this.text.charAt(this.index));if("."==d||this.isNumber(d))a+=d;else{var e=this.peek();if("e"==d&&this.isExpOperator(e))a+=d;else if(this.isExpOperator(d)&&e&&this.isNumber(e)&&"e"==a.charAt(a.length-1))a+=d;else if(!this.isExpOperator(d)||e&&this.isNumber(e)||"e"!=a.charAt(a.length-1))break;else this.throwError("Invalid exponent")}this.index++}a*=
-1;this.tokens.push({index:c,text:a,literal:!0,constant:!0,fn:function(){return a}})},readIdent:function(){for(var a=this,c="",d=this.index,e,f,g,k;this.index<this.text.length;){k=this.text.charAt(this.index);if("."===k||this.isIdent(k)||this.isNumber(k))"."===k&&(e=this.index),c+=k;else break;this.index++}if(e)for(f=this.index;f<this.text.length;){k=this.text.charAt(f);if("("===k){g=c.substr(e-d+1);c=c.substr(0,e-d);this.index=f;break}if(this.isWhitespace(k))f++;else break}d={index:d,text:c};if(gb.hasOwnProperty(c))d.fn=
-gb[c],d.literal=!0,d.constant=!0;else{var m=Ec(c,this.options,this.text);d.fn=D(function(a,c){return m(a,c)},{assign:function(d,e){return ub(d,c,e,a.text,a.options)}})}this.tokens.push(d);g&&(this.tokens.push({index:e,text:"."}),this.tokens.push({index:e+1,text:g}))},readString:function(a){var c=this.index;this.index++;for(var d="",e=a,f=!1;this.index<this.text.length;){var g=this.text.charAt(this.index),e=e+g;if(f)"u"===g?(f=this.text.substring(this.index+1,this.index+5),f.match(/[\da-f]{4}/i)||
-this.throwError("Invalid unicode escape [\\u"+f+"]"),this.index+=4,d+=String.fromCharCode(parseInt(f,16))):d+=Re[g]||g,f=!1;else if("\\"===g)f=!0;else{if(g===a){this.index++;this.tokens.push({index:c,text:e,string:d,literal:!0,constant:!0,fn:function(){return d}});return}d+=g}this.index++}this.throwError("Unterminated quote",c)}};var fb=function(a,c,d){this.lexer=a;this.$filter=c;this.options=d};fb.ZERO=D(function(){return 0},{constant:!0});fb.prototype={constructor:fb,parse:function(a){this.text=
-a;this.tokens=this.lexer.lex(a);a=this.statements();0!==this.tokens.length&&this.throwError("is an unexpected token",this.tokens[0]);a.literal=!!a.literal;a.constant=!!a.constant;return a},primary:function(){var a;if(this.expect("("))a=this.filterChain(),this.consume(")");else if(this.expect("["))a=this.arrayDeclaration();else if(this.expect("{"))a=this.object();else{var c=this.expect();(a=c.fn)||this.throwError("not a primary expression",c);a.literal=!!c.literal;a.constant=!!c.constant}for(var d;c=
-this.expect("(","[",".");)"("===c.text?(a=this.functionCall(a,d),d=null):"["===c.text?(d=a,a=this.objectIndex(a)):"."===c.text?(d=a,a=this.fieldAccess(a)):this.throwError("IMPOSSIBLE");return a},throwError:function(a,c){throw la("syntax",c.text,a,c.index+1,this.text,this.text.substring(c.index));},peekToken:function(){if(0===this.tokens.length)throw la("ueoe",this.text);return this.tokens[0]},peek:function(a,c,d,e){if(0<this.tokens.length){var f=this.tokens[0],g=f.text;if(g===a||g===c||g===d||g===
-e||!(a||c||d||e))return f}return!1},expect:function(a,c,d,e){return(a=this.peek(a,c,d,e))?(this.tokens.shift(),a):!1},consume:function(a){this.expect(a)||this.throwError("is unexpected, expecting ["+a+"]",this.peek())},unaryFn:function(a,c){return D(function(d,e){return a(d,e,c)},{constant:c.constant})},ternaryFn:function(a,c,d){return D(function(e,f){return a(e,f)?c(e,f):d(e,f)},{constant:a.constant&&c.constant&&d.constant})},binaryFn:function(a,c,d){return D(function(e,f){return c(e,f,a,d)},{constant:a.constant&&
-d.constant})},statements:function(){for(var a=[];;)if(0<this.tokens.length&&!this.peek("}",")",";","]")&&a.push(this.filterChain()),!this.expect(";"))return 1===a.length?a[0]:function(c,d){for(var e,f=0;f<a.length;f++){var g=a[f];g&&(e=g(c,d))}return e}},filterChain:function(){for(var a=this.expression(),c;;)if(c=this.expect("|"))a=this.binaryFn(a,c.fn,this.filter());else return a},filter:function(){for(var a=this.expect(),c=this.$filter(a.text),d=[];;)if(a=this.expect(":"))d.push(this.expression());
-else{var e=function(a,e,k){k=[k];for(var m=0;m<d.length;m++)k.push(d[m](a,e));return c.apply(a,k)};return function(){return e}}},expression:function(){return this.assignment()},assignment:function(){var a=this.ternary(),c,d;return(d=this.expect("="))?(a.assign||this.throwError("implies assignment but ["+this.text.substring(0,d.index)+"] can not be assigned to",d),c=this.ternary(),function(d,f){return a.assign(d,c(d,f),f)}):a},ternary:function(){var a=this.logicalOR(),c,d;if(this.expect("?")){c=this.assignment();
-if(d=this.expect(":"))return this.ternaryFn(a,c,this.assignment());this.throwError("expected :",d)}else return a},logicalOR:function(){for(var a=this.logicalAND(),c;;)if(c=this.expect("||"))a=this.binaryFn(a,c.fn,this.logicalAND());else return a},logicalAND:function(){var a=this.equality(),c;if(c=this.expect("&&"))a=this.binaryFn(a,c.fn,this.logicalAND());return a},equality:function(){var a=this.relational(),c;if(c=this.expect("==","!=","===","!=="))a=this.binaryFn(a,c.fn,this.equality());return a},
-relational:function(){var a=this.additive(),c;if(c=this.expect("<",">","<=",">="))a=this.binaryFn(a,c.fn,this.relational());return a},additive:function(){for(var a=this.multiplicative(),c;c=this.expect("+","-");)a=this.binaryFn(a,c.fn,this.multiplicative());return a},multiplicative:function(){for(var a=this.unary(),c;c=this.expect("*","/","%");)a=this.binaryFn(a,c.fn,this.unary());return a},unary:function(){var a;return this.expect("+")?this.primary():(a=this.expect("-"))?this.binaryFn(fb.ZERO,a.fn,
-this.unary()):(a=this.expect("!"))?this.unaryFn(a.fn,this.unary()):this.primary()},fieldAccess:function(a){var c=this,d=this.expect().text,e=Ec(d,this.options,this.text);return D(function(c,d,k){return e(k||a(c,d))},{assign:function(e,g,k){(k=a(e,k))||a.assign(e,k={});return ub(k,d,g,c.text,c.options)}})},objectIndex:function(a){var c=this,d=this.expression();this.consume("]");return D(function(e,f){var g=a(e,f),k=d(e,f),m;ka(k,c.text);if(!g)return t;(g=va(g[k],c.text))&&(g.then&&c.options.unwrapPromises)&&
-(m=g,"$$v"in g||(m.$$v=t,m.then(function(a){m.$$v=a})),g=g.$$v);return g},{assign:function(e,f,g){var k=ka(d(e,g),c.text);(g=va(a(e,g),c.text))||a.assign(e,g={});return g[k]=f}})},functionCall:function(a,c){var d=[];if(")"!==this.peekToken().text){do d.push(this.expression());while(this.expect(","))}this.consume(")");var e=this;return function(f,g){for(var k=[],m=c?c(f,g):f,h=0;h<d.length;h++)k.push(va(d[h](f,g),e.text));h=a(f,g,m)||E;va(m,e.text);var l=e.text;if(h){if(h.constructor===h)throw la("isecfn",
-l);if(h===Pe||h===Qe||Qc&&h===Qc)throw la("isecff",l);}k=h.apply?h.apply(m,k):h(k[0],k[1],k[2],k[3],k[4]);return va(k,e.text)}},arrayDeclaration:function(){var a=[],c=!0;if("]"!==this.peekToken().text){do{if(this.peek("]"))break;var d=this.expression();a.push(d);d.constant||(c=!1)}while(this.expect(","))}this.consume("]");return D(function(c,d){for(var g=[],k=0;k<a.length;k++)g.push(a[k](c,d));return g},{literal:!0,constant:c})},object:function(){var a=[],c=!0;if("}"!==this.peekToken().text){do{if(this.peek("}"))break;
-var d=this.expect(),d=d.string||d.text;this.consume(":");var e=this.expression();a.push({key:d,value:e});e.constant||(c=!1)}while(this.expect(","))}this.consume("}");return D(function(c,d){for(var e={},m=0;m<a.length;m++){var h=a[m];e[h.key]=h.value(c,d)}return e},{literal:!0,constant:c})}};var Vb={},xa=C("$sce"),ga={HTML:"html",CSS:"css",URL:"url",RESOURCE_URL:"resourceUrl",JS:"js"},Y=X.createElement("a"),Hc=ua(W.location.href,!0);mc.$inject=["$provide"];Ic.$inject=["$locale"];Kc.$inject=["$locale"];
-var Nc=".",Je={yyyy:$("FullYear",4),yy:$("FullYear",2,0,!0),y:$("FullYear",1),MMMM:vb("Month"),MMM:vb("Month",!0),MM:$("Month",2,1),M:$("Month",1,1),dd:$("Date",2),d:$("Date",1),HH:$("Hours",2),H:$("Hours",1),hh:$("Hours",2,-12),h:$("Hours",1,-12),mm:$("Minutes",2),m:$("Minutes",1),ss:$("Seconds",2),s:$("Seconds",1),sss:$("Milliseconds",3),EEEE:vb("Day"),EEE:vb("Day",!0),a:function(a,c){return 12>a.getHours()?c.AMPMS[0]:c.AMPMS[1]},Z:function(a){a=-1*a.getTimezoneOffset();return a=(0<=a?"+":"")+(Xb(Math[0<
-a?"floor":"ceil"](a/60),2)+Xb(Math.abs(a%60),2))}},Ie=/((?:[^yMdHhmsaZE']+)|(?:'(?:[^']|'')*')|(?:E+|y+|M+|d+|H+|h+|m+|s+|a|Z))(.*)/,He=/^\-?\d+$/;Jc.$inject=["$locale"];var Fe=ba(K),Ge=ba(Ia);Lc.$inject=["$parse"];var dd=ba({restrict:"E",compile:function(a,c){8>=Q&&(c.href||c.name||c.$set("href",""),a.append(X.createComment("IE fix")));if(!c.href&&!c.xlinkHref&&!c.name)return function(a,c){var f="[object SVGAnimatedString]"===za.call(c.prop("href"))?"xlink:href":"href";c.on("click",function(a){c.attr(f)||
-a.preventDefault()})}}}),Fb={};r(qb,function(a,c){if("multiple"!=a){var d=pa("ng-"+c);Fb[d]=function(){return{priority:100,link:function(a,f,g){a.$watch(g[d],function(a){g.$set(c,!!a)})}}}}});r(["src","srcset","href"],function(a){var c=pa("ng-"+a);Fb[c]=function(){return{priority:99,link:function(d,e,f){var g=a,k=a;"href"===a&&"[object SVGAnimatedString]"===za.call(e.prop("href"))&&(k="xlinkHref",f.$attr[k]="xlink:href",g=null);f.$observe(c,function(c){c?(f.$set(k,c),Q&&g&&e.prop(g,f[k])):"href"===
-a&&f.$set(k,null)})}}}});var yb={$addControl:E,$removeControl:E,$setValidity:E,$setDirty:E,$setPristine:E};Oc.$inject=["$element","$attrs","$scope","$animate"];var Rc=function(a){return["$timeout",function(c){return{name:"form",restrict:a?"EAC":"E",controller:Oc,compile:function(){return{pre:function(a,e,f,g){if(!f.action){var k=function(a){a.preventDefault?a.preventDefault():a.returnValue=!1};sb(e[0],"submit",k);e.on("$destroy",function(){c(function(){$a(e[0],"submit",k)},0,!1)})}var m=e.parent().controller("form"),
-h=f.name||f.ngForm;h&&ub(a,h,g,h);if(m)e.on("$destroy",function(){m.$removeControl(g);h&&ub(a,h,t,h);D(g,yb)})}}}}}]},ed=Rc(),rd=Rc(!0),Se=/^(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?$/,Te=/^[a-z0-9!#$%&'*+\/=?^_`{|}~.-]+@[a-z0-9]([a-z0-9-]*[a-z0-9])?(\.[a-z0-9]([a-z0-9-]*[a-z0-9])?)*$/i,Ue=/^\s*(\-|\+)?(\d+|(\d*(\.\d*)))\s*$/,Sc={text:Ab,number:function(a,c,d,e,f,g){Ab(a,c,d,e,f,g);e.$parsers.push(function(a){var c=e.$isEmpty(a);if(c||Ue.test(a))return e.$setValidity("number",
-!0),""===a?null:c?a:parseFloat(a);e.$setValidity("number",!1);return t});Ke(e,"number",Ve,null,e.$$validityState);e.$formatters.push(function(a){return e.$isEmpty(a)?"":""+a});d.min&&(a=function(a){var c=parseFloat(d.min);return sa(e,"min",e.$isEmpty(a)||a>=c,a)},e.$parsers.push(a),e.$formatters.push(a));d.max&&(a=function(a){var c=parseFloat(d.max);return sa(e,"max",e.$isEmpty(a)||a<=c,a)},e.$parsers.push(a),e.$formatters.push(a));e.$formatters.push(function(a){return sa(e,"number",e.$isEmpty(a)||
-ib(a),a)})},url:function(a,c,d,e,f,g){Ab(a,c,d,e,f,g);a=function(a){return sa(e,"url",e.$isEmpty(a)||Se.test(a),a)};e.$formatters.push(a);e.$parsers.push(a)},email:function(a,c,d,e,f,g){Ab(a,c,d,e,f,g);a=function(a){return sa(e,"email",e.$isEmpty(a)||Te.test(a),a)};e.$formatters.push(a);e.$parsers.push(a)},radio:function(a,c,d,e){x(d.name)&&c.attr("name",hb());c.on("click",function(){c[0].checked&&a.$apply(function(){e.$setViewValue(d.value)})});e.$render=function(){c[0].checked=d.value==e.$viewValue};
-d.$observe("value",e.$render)},checkbox:function(a,c,d,e){var f=d.ngTrueValue,g=d.ngFalseValue;v(f)||(f=!0);v(g)||(g=!1);c.on("click",function(){a.$apply(function(){e.$setViewValue(c[0].checked)})});e.$render=function(){c[0].checked=e.$viewValue};e.$isEmpty=function(a){return a!==f};e.$formatters.push(function(a){return a===f});e.$parsers.push(function(a){return a?f:g})},hidden:E,button:E,submit:E,reset:E,file:E},Ve=["badInput"],jc=["$browser","$sniffer",function(a,c){return{restrict:"E",require:"?ngModel",
-link:function(d,e,f,g){g&&(Sc[K(f.type)]||Sc.text)(d,e,f,g,c,a)}}}],wb="ng-valid",xb="ng-invalid",Oa="ng-pristine",zb="ng-dirty",We=["$scope","$exceptionHandler","$attrs","$element","$parse","$animate",function(a,c,d,e,f,g){function k(a,c){c=c?"-"+mb(c,"-"):"";g.removeClass(e,(a?xb:wb)+c);g.addClass(e,(a?wb:xb)+c)}this.$modelValue=this.$viewValue=Number.NaN;this.$parsers=[];this.$formatters=[];this.$viewChangeListeners=[];this.$pristine=!0;this.$dirty=!1;this.$valid=!0;this.$invalid=!1;this.$name=
-d.name;var m=f(d.ngModel),h=m.assign;if(!h)throw C("ngModel")("nonassign",d.ngModel,ia(e));this.$render=E;this.$isEmpty=function(a){return x(a)||""===a||null===a||a!==a};var l=e.inheritedData("$formController")||yb,n=0,p=this.$error={};e.addClass(Oa);k(!0);this.$setValidity=function(a,c){p[a]!==!c&&(c?(p[a]&&n--,n||(k(!0),this.$valid=!0,this.$invalid=!1)):(k(!1),this.$invalid=!0,this.$valid=!1,n++),p[a]=!c,k(c,a),l.$setValidity(a,c,this))};this.$setPristine=function(){this.$dirty=!1;this.$pristine=
-!0;g.removeClass(e,zb);g.addClass(e,Oa)};this.$setViewValue=function(d){this.$viewValue=d;this.$pristine&&(this.$dirty=!0,this.$pristine=!1,g.removeClass(e,Oa),g.addClass(e,zb),l.$setDirty());r(this.$parsers,function(a){d=a(d)});this.$modelValue!==d&&(this.$modelValue=d,h(a,d),r(this.$viewChangeListeners,function(a){try{a()}catch(d){c(d)}}))};var q=this;a.$watch(function(){var c=m(a);if(q.$modelValue!==c){var d=q.$formatters,e=d.length;for(q.$modelValue=c;e--;)c=d[e](c);q.$viewValue!==c&&(q.$viewValue=
-c,q.$render())}return c})}],Gd=function(){return{require:["ngModel","^?form"],controller:We,link:function(a,c,d,e){var f=e[0],g=e[1]||yb;g.$addControl(f);a.$on("$destroy",function(){g.$removeControl(f)})}}},Id=ba({require:"ngModel",link:function(a,c,d,e){e.$viewChangeListeners.push(function(){a.$eval(d.ngChange)})}}),kc=function(){return{require:"?ngModel",link:function(a,c,d,e){if(e){d.required=!0;var f=function(a){if(d.required&&e.$isEmpty(a))e.$setValidity("required",!1);else return e.$setValidity("required",
-!0),a};e.$formatters.push(f);e.$parsers.unshift(f);d.$observe("required",function(){f(e.$viewValue)})}}}},Hd=function(){return{require:"ngModel",link:function(a,c,d,e){var f=(a=/\/(.*)\//.exec(d.ngList))&&RegExp(a[1])||d.ngList||",";e.$parsers.push(function(a){if(!x(a)){var c=[];a&&r(a.split(f),function(a){a&&c.push(aa(a))});return c}});e.$formatters.push(function(a){return J(a)?a.join(", "):t});e.$isEmpty=function(a){return!a||!a.length}}}},Xe=/^(true|false|\d+)$/,Jd=function(){return{priority:100,
-compile:function(a,c){return Xe.test(c.ngValue)?function(a,c,f){f.$set("value",a.$eval(f.ngValue))}:function(a,c,f){a.$watch(f.ngValue,function(a){f.$set("value",a)})}}}},jd=ya({compile:function(a){a.addClass("ng-binding");return function(a,d,e){d.data("$binding",e.ngBind);a.$watch(e.ngBind,function(a){d.text(a==t?"":a)})}}}),ld=["$interpolate",function(a){return function(c,d,e){c=a(d.attr(e.$attr.ngBindTemplate));d.addClass("ng-binding").data("$binding",c);e.$observe("ngBindTemplate",function(a){d.text(a)})}}],
-kd=["$sce","$parse",function(a,c){return{compile:function(d){d.addClass("ng-binding");return function(d,f,g){f.data("$binding",g.ngBindHtml);var k=c(g.ngBindHtml);d.$watch(function(){return(k(d)||"").toString()},function(c){f.html(a.getTrustedHtml(k(d))||"")})}}}}],md=Yb("",!0),od=Yb("Odd",0),nd=Yb("Even",1),pd=ya({compile:function(a,c){c.$set("ngCloak",t);a.removeClass("ng-cloak")}}),qd=[function(){return{scope:!0,controller:"@",priority:500}}],lc={},Ye={blur:!0,focus:!0};r("click dblclick mousedown mouseup mouseover mouseout mousemove mouseenter mouseleave keydown keyup keypress submit focus blur copy cut paste".split(" "),
-function(a){var c=pa("ng-"+a);lc[c]=["$parse","$rootScope",function(d,e){return{compile:function(f,g){var k=d(g[c]);return function(c,d){d.on(a,function(d){var f=function(){k(c,{$event:d})};Ye[a]&&e.$$phase?c.$evalAsync(f):c.$apply(f)})}}}}]});var td=["$animate",function(a){return{transclude:"element",priority:600,terminal:!0,restrict:"A",$$tlb:!0,link:function(c,d,e,f,g){var k,m,h;c.$watch(e.ngIf,function(f){Ua(f)?m||(m=c.$new(),g(m,function(c){c[c.length++]=X.createComment(" end ngIf: "+e.ngIf+
-" ");k={clone:c};a.enter(c,d.parent(),d)})):(h&&(h.remove(),h=null),m&&(m.$destroy(),m=null),k&&(h=Eb(k.clone),a.leave(h,function(){h=null}),k=null))})}}}],ud=["$http","$templateCache","$anchorScroll","$animate","$sce",function(a,c,d,e,f){return{restrict:"ECA",priority:400,terminal:!0,transclude:"element",controller:Va.noop,compile:function(g,k){var m=k.ngInclude||k.src,h=k.onload||"",l=k.autoscroll;return function(g,k,q,r,F){var u=0,t,w,R,z=function(){w&&(w.remove(),w=null);t&&(t.$destroy(),t=null);
-R&&(e.leave(R,function(){w=null}),w=R,R=null)};g.$watch(f.parseAsResourceUrl(m),function(f){var m=function(){!y(l)||l&&!g.$eval(l)||d()},q=++u;f?(a.get(f,{cache:c}).success(function(a){if(q===u){var c=g.$new();r.template=a;a=F(c,function(a){z();e.enter(a,null,k,m)});t=c;R=a;t.$emit("$includeContentLoaded");g.$eval(h)}}).error(function(){q===u&&z()}),g.$emit("$includeContentRequested")):(z(),r.template=null)})}}}}],Kd=["$compile",function(a){return{restrict:"ECA",priority:-400,require:"ngInclude",
-link:function(c,d,e,f){d.html(f.template);a(d.contents())(c)}}}],vd=ya({priority:450,compile:function(){return{pre:function(a,c,d){a.$eval(d.ngInit)}}}}),wd=ya({terminal:!0,priority:1E3}),xd=["$locale","$interpolate",function(a,c){var d=/{}/g;return{restrict:"EA",link:function(e,f,g){var k=g.count,m=g.$attr.when&&f.attr(g.$attr.when),h=g.offset||0,l=e.$eval(m)||{},n={},p=c.startSymbol(),q=c.endSymbol(),s=/^when(Minus)?(.+)$/;r(g,function(a,c){s.test(c)&&(l[K(c.replace("when","").replace("Minus","-"))]=
-f.attr(g.$attr[c]))});r(l,function(a,e){n[e]=c(a.replace(d,p+k+"-"+h+q))});e.$watch(function(){var c=parseFloat(e.$eval(k));if(isNaN(c))return"";c in l||(c=a.pluralCat(c-h));return n[c](e,f,!0)},function(a){f.text(a)})}}}],yd=["$parse","$animate",function(a,c){var d=C("ngRepeat");return{transclude:"element",priority:1E3,terminal:!0,$$tlb:!0,link:function(e,f,g,k,m){var h=g.ngRepeat,l=h.match(/^\s*([\s\S]+?)\s+in\s+([\s\S]+?)(?:\s+track\s+by\s+([\s\S]+?))?\s*$/),n,p,q,s,t,u,A={$id:Ka};if(!l)throw d("iexp",
-h);g=l[1];k=l[2];(l=l[3])?(n=a(l),p=function(a,c,d){u&&(A[u]=a);A[t]=c;A.$index=d;return n(e,A)}):(q=function(a,c){return Ka(c)},s=function(a){return a});l=g.match(/^(?:([\$\w]+)|\(([\$\w]+)\s*,\s*([\$\w]+)\))$/);if(!l)throw d("iidexp",g);t=l[3]||l[1];u=l[2];var y={};e.$watchCollection(k,function(a){var g,k,l=f[0],n,A={},B,I,H,v,E,C,x,J=[];if(Pa(a))C=a,E=p||q;else{E=p||s;C=[];for(H in a)a.hasOwnProperty(H)&&"$"!=H.charAt(0)&&C.push(H);C.sort()}B=C.length;k=J.length=C.length;for(g=0;g<k;g++)if(H=a===
-C?g:C[g],v=a[H],n=E(H,v,g),Da(n,"`track by` id"),y.hasOwnProperty(n))x=y[n],delete y[n],A[n]=x,J[g]=x;else{if(A.hasOwnProperty(n))throw r(J,function(a){a&&a.scope&&(y[a.id]=a)}),d("dupes",h,n,na(v));J[g]={id:n};A[n]=!1}for(H in y)y.hasOwnProperty(H)&&(x=y[H],g=Eb(x.clone),c.leave(g),r(g,function(a){a.$$NG_REMOVED=!0}),x.scope.$destroy());g=0;for(k=C.length;g<k;g++){H=a===C?g:C[g];v=a[H];x=J[g];J[g-1]&&(l=J[g-1].clone[J[g-1].clone.length-1]);if(x.scope){I=x.scope;n=l;do n=n.nextSibling;while(n&&n.$$NG_REMOVED);
-x.clone[0]!=n&&c.move(Eb(x.clone),null,w(l));l=x.clone[x.clone.length-1]}else I=e.$new();I[t]=v;u&&(I[u]=H);I.$index=g;I.$first=0===g;I.$last=g===B-1;I.$middle=!(I.$first||I.$last);I.$odd=!(I.$even=0===(g&1));x.scope||m(I,function(a){a[a.length++]=X.createComment(" end ngRepeat: "+h+" ");c.enter(a,null,w(l));l=a;x.scope=I;x.clone=a;A[x.id]=x})}y=A})}}}],zd=["$animate",function(a){return function(c,d,e){c.$watch(e.ngShow,function(c){a[Ua(c)?"removeClass":"addClass"](d,"ng-hide")})}}],sd=["$animate",
-function(a){return function(c,d,e){c.$watch(e.ngHide,function(c){a[Ua(c)?"addClass":"removeClass"](d,"ng-hide")})}}],Ad=ya(function(a,c,d){a.$watch(d.ngStyle,function(a,d){d&&a!==d&&r(d,function(a,d){c.css(d,"")});a&&c.css(a)},!0)}),Bd=["$animate",function(a){return{restrict:"EA",require:"ngSwitch",controller:["$scope",function(){this.cases={}}],link:function(c,d,e,f){var g=[],k=[],m=[],h=[];c.$watch(e.ngSwitch||e.on,function(d){var n,p;n=0;for(p=m.length;n<p;++n)m[n].remove();n=m.length=0;for(p=
-h.length;n<p;++n){var q=k[n];h[n].$destroy();m[n]=q;a.leave(q,function(){m.splice(n,1)})}k.length=0;h.length=0;if(g=f.cases["!"+d]||f.cases["?"])c.$eval(e.change),r(g,function(d){var e=c.$new();h.push(e);d.transclude(e,function(c){var e=d.element;k.push(c);a.enter(c,e.parent(),e)})})})}}}],Cd=ya({transclude:"element",priority:800,require:"^ngSwitch",link:function(a,c,d,e,f){e.cases["!"+d.ngSwitchWhen]=e.cases["!"+d.ngSwitchWhen]||[];e.cases["!"+d.ngSwitchWhen].push({transclude:f,element:c})}}),Dd=
-ya({transclude:"element",priority:800,require:"^ngSwitch",link:function(a,c,d,e,f){e.cases["?"]=e.cases["?"]||[];e.cases["?"].push({transclude:f,element:c})}}),Fd=ya({link:function(a,c,d,e,f){if(!f)throw C("ngTransclude")("orphan",ia(c));f(function(a){c.empty();c.append(a)})}}),fd=["$templateCache",function(a){return{restrict:"E",terminal:!0,compile:function(c,d){"text/ng-template"==d.type&&a.put(d.id,c[0].text)}}}],Ze=C("ngOptions"),Ed=ba({terminal:!0}),gd=["$compile","$parse",function(a,c){var d=
-/^\s*([\s\S]+?)(?:\s+as\s+([\s\S]+?))?(?:\s+group\s+by\s+([\s\S]+?))?\s+for\s+(?:([\$\w][\$\w]*)|(?:\(\s*([\$\w][\$\w]*)\s*,\s*([\$\w][\$\w]*)\s*\)))\s+in\s+([\s\S]+?)(?:\s+track\s+by\s+([\s\S]+?))?$/,e={$setViewValue:E};return{restrict:"E",require:["select","?ngModel"],controller:["$element","$scope","$attrs",function(a,c,d){var m=this,h={},l=e,n;m.databound=d.ngModel;m.init=function(a,c,d){l=a;n=d};m.addOption=function(c){Da(c,'"option value"');h[c]=!0;l.$viewValue==c&&(a.val(c),n.parent()&&n.remove())};
-m.removeOption=function(a){this.hasOption(a)&&(delete h[a],l.$viewValue==a&&this.renderUnknownOption(a))};m.renderUnknownOption=function(c){c="? "+Ka(c)+" ?";n.val(c);a.prepend(n);a.val(c);n.prop("selected",!0)};m.hasOption=function(a){return h.hasOwnProperty(a)};c.$on("$destroy",function(){m.renderUnknownOption=E})}],link:function(e,g,k,m){function h(a,c,d,e){d.$render=function(){var a=d.$viewValue;e.hasOption(a)?(v.parent()&&v.remove(),c.val(a),""===a&&u.prop("selected",!0)):x(a)&&u?c.val(""):e.renderUnknownOption(a)};
-c.on("change",function(){a.$apply(function(){v.parent()&&v.remove();d.$setViewValue(c.val())})})}function l(a,c,d){var e;d.$render=function(){var a=new bb(d.$viewValue);r(c.find("option"),function(c){c.selected=y(a.get(c.value))})};a.$watch(function(){Aa(e,d.$viewValue)||(e=ha(d.$viewValue),d.$render())});c.on("change",function(){a.$apply(function(){var a=[];r(c.find("option"),function(c){c.selected&&a.push(c.value)});d.$setViewValue(a)})})}function n(e,f,g){function k(){var a={"":[]},c=[""],d,h,
-s,t,v;s=g.$modelValue;t=w(e)||[];var E=n?Zb(t):t,I,M,B;M={};B=!1;if(q)if(h=g.$modelValue,x&&J(h))for(B=new bb([]),d={},v=0;v<h.length;v++)d[m]=h[v],B.put(x(e,d),h[v]);else B=new bb(h);v=B;var D,K;for(B=0;I=E.length,B<I;B++){h=B;if(n){h=E[B];if("$"===h.charAt(0))continue;M[n]=h}M[m]=t[h];d=r(e,M)||"";(h=a[d])||(h=a[d]=[],c.push(d));q?d=y(v.remove(x?x(e,M):u(e,M))):(x?(d={},d[m]=s,d=x(e,d)===x(e,M)):d=s===u(e,M),v=v||d);D=l(e,M);D=y(D)?D:"";h.push({id:x?x(e,M):n?E[B]:B,label:D,selected:d})}q||(F||null===
-s?a[""].unshift({id:"",label:"",selected:!v}):v||a[""].unshift({id:"?",label:"",selected:!0}));M=0;for(E=c.length;M<E;M++){d=c[M];h=a[d];z.length<=M?(s={element:C.clone().attr("label",d),label:h.label},t=[s],z.push(t),f.append(s.element)):(t=z[M],s=t[0],s.label!=d&&s.element.attr("label",s.label=d));D=null;B=0;for(I=h.length;B<I;B++)d=h[B],(v=t[B+1])?(D=v.element,v.label!==d.label&&D.text(v.label=d.label),v.id!==d.id&&D.val(v.id=d.id),D[0].selected!==d.selected&&(D.prop("selected",v.selected=d.selected),
-Q&&D.prop("selected",v.selected))):(""===d.id&&F?K=F:(K=A.clone()).val(d.id).prop("selected",d.selected).attr("selected",d.selected).text(d.label),t.push({element:K,label:d.label,id:d.id,selected:d.selected}),p.addOption(d.label,K),D?D.after(K):s.element.append(K),D=K);for(B++;t.length>B;)d=t.pop(),p.removeOption(d.label),d.element.remove()}for(;z.length>M;)z.pop()[0].element.remove()}var h;if(!(h=s.match(d)))throw Ze("iexp",s,ia(f));var l=c(h[2]||h[1]),m=h[4]||h[6],n=h[5],r=c(h[3]||""),u=c(h[2]?
-h[1]:m),w=c(h[7]),x=h[8]?c(h[8]):null,z=[[{element:f,label:""}]];F&&(a(F)(e),F.removeClass("ng-scope"),F.remove());f.empty();f.on("change",function(){e.$apply(function(){var a,c=w(e)||[],d={},h,l,p,r,s,v,y;if(q)for(l=[],r=0,v=z.length;r<v;r++)for(a=z[r],p=1,s=a.length;p<s;p++){if((h=a[p].element)[0].selected){h=h.val();n&&(d[n]=h);if(x)for(y=0;y<c.length&&(d[m]=c[y],x(e,d)!=h);y++);else d[m]=c[h];l.push(u(e,d))}}else if(h=f.val(),"?"==h)l=t;else if(""===h)l=null;else if(x)for(y=0;y<c.length;y++){if(d[m]=
-c[y],x(e,d)==h){l=u(e,d);break}}else d[m]=c[h],n&&(d[n]=h),l=u(e,d);g.$setViewValue(l);k()})});g.$render=k;e.$watchCollection(w,k);e.$watchCollection(function(){var a={},c=w(e);if(c){for(var d=Array(c.length),f=0,g=c.length;f<g;f++)a[m]=c[f],d[f]=l(e,a);return d}},k);q&&e.$watchCollection(function(){return g.$modelValue},k)}if(m[1]){var p=m[0];m=m[1];var q=k.multiple,s=k.ngOptions,F=!1,u,A=w(X.createElement("option")),C=w(X.createElement("optgroup")),v=A.clone();k=0;for(var z=g.children(),E=z.length;k<
-E;k++)if(""===z[k].value){u=F=z.eq(k);break}p.init(m,F,v);q&&(m.$isEmpty=function(a){return!a||0===a.length});s?n(e,g,m):q?l(e,g,m):h(e,g,m,p)}}}}],id=["$interpolate",function(a){var c={addOption:E,removeOption:E};return{restrict:"E",priority:100,compile:function(d,e){if(x(e.value)){var f=a(d.text(),!0);f||e.$set("value",d.text())}return function(a,d,e){var h=d.parent(),l=h.data("$selectController")||h.parent().data("$selectController");l&&l.databound?d.prop("selected",!1):l=c;f?a.$watch(f,function(a,
-c){e.$set("value",a);a!==c&&l.removeOption(c);l.addOption(a)}):l.addOption(e.value);d.on("$destroy",function(){l.removeOption(e.value)})}}}}],hd=ba({restrict:"E",terminal:!0});W.angular.bootstrap?console.log("WARNING: Tried to load angular more than once."):((Ea=W.jQuery)&&Ea.fn.on?(w=Ea,D(Ea.fn,{scope:La.scope,isolateScope:La.isolateScope,controller:La.controller,injector:La.injector,inheritedData:La.inheritedData}),Gb("remove",!0,!0,!1),Gb("empty",!1,!1,!1),Gb("html",!1,!1,!0)):w=S,Va.element=w,
-$c(Va),w(X).ready(function(){Xc(X,fc)}))})(window,document);!window.angular.$$csp()&&window.angular.element(document).find("head").prepend('<style type="text/css">@charset "UTF-8";[ng\\:cloak],[ng-cloak],[data-ng-cloak],[x-ng-cloak],.ng-cloak,.x-ng-cloak,.ng-hide{display:none !important;}ng\\:form{display:block;}.ng-animate-block-transitions{transition:0s all!important;-webkit-transition:0s all!important;}.ng-hide-add-active,.ng-hide-remove{display:block!important;}</style>');
+(function(V,W,v){'use strict';function z(b){return function(){var a=arguments[0],c,a="["+(b?b+":":"")+a+"] http://errors.angularjs.org/1.2.32/"+(b?b+"/":"")+a;for(c=1;c<arguments.length;c++)a=a+(1==c?"?":"&")+"p"+(c-1)+"="+encodeURIComponent("function"==typeof arguments[c]?arguments[c].toString().replace(/ \{[\s\S]*$/,""):"undefined"==typeof arguments[c]?"undefined":"string"!=typeof arguments[c]?JSON.stringify(arguments[c]):arguments[c]);return Error(a)}}function Ra(b){if(null==b||Ha(b))return!1;
+var a=b.length;return 1===b.nodeType&&a?!0:E(b)||M(b)||0===a||"number"===typeof a&&0<a&&a-1 in b}function r(b,a,c){var d;if(b)if(O(b))for(d in b)"prototype"==d||("length"==d||"name"==d||b.hasOwnProperty&&!b.hasOwnProperty(d))||a.call(c,b[d],d);else if(M(b)||Ra(b))for(d=0;d<b.length;d++)a.call(c,b[d],d);else if(b.forEach&&b.forEach!==r)b.forEach(a,c);else for(d in b)b.hasOwnProperty(d)&&a.call(c,b[d],d);return b}function Wb(b){var a=[],c;for(c in b)b.hasOwnProperty(c)&&a.push(c);return a.sort()}function Tc(b,
+a,c){for(var d=Wb(b),e=0;e<d.length;e++)a.call(c,b[d[e]],d[e]);return d}function Xb(b){return function(a,c){b(c,a)}}function hb(){for(var b=na.length,a;b;){b--;a=na[b].charCodeAt(0);if(57==a)return na[b]="A",na.join("");if(90==a)na[b]="0";else return na[b]=String.fromCharCode(a+1),na.join("")}na.unshift("0");return na.join("")}function Yb(b,a){a?b.$$hashKey=a:delete b.$$hashKey}function F(b){var a=b.$$hashKey;r(arguments,function(a){a!==b&&r(a,function(a,c){b[c]=a})});Yb(b,a);return b}function U(b){return parseInt(b,
+10)}function Zb(b,a){return F(new (F(function(){},{prototype:b})),a)}function B(){}function ga(b){return b}function Z(b){return function(){return b}}function H(b){return"undefined"===typeof b}function G(b){return"undefined"!==typeof b}function T(b){return null!=b&&"object"===typeof b}function E(b){return"string"===typeof b}function ib(b){return"number"===typeof b}function ua(b){return"[object Date]"===Aa.call(b)}function O(b){return"function"===typeof b}function jb(b){return"[object RegExp]"===Aa.call(b)}
+function Ha(b){return b&&b.document&&b.location&&b.alert&&b.setInterval}function Uc(b){return!(!b||!(b.nodeName||b.prop&&b.attr&&b.find))}function Vc(b,a,c){var d=[];r(b,function(b,f,g){d.push(a.call(c,b,f,g))});return d}function Sa(b,a){if(b.indexOf)return b.indexOf(a);for(var c=0;c<b.length;c++)if(a===b[c])return c;return-1}function Ta(b,a){var c=Sa(b,a);0<=c&&b.splice(c,1);return a}function Ia(b,a,c,d){if(Ha(b)||b&&b.$evalAsync&&b.$watch)throw Ua("cpws");if(a){if(b===a)throw Ua("cpi");c=c||[];
+d=d||[];if(T(b)){var e=Sa(c,b);if(-1!==e)return d[e];c.push(b);d.push(a)}if(M(b))for(var f=a.length=0;f<b.length;f++)e=Ia(b[f],null,c,d),T(b[f])&&(c.push(b[f]),d.push(e)),a.push(e);else{var g=a.$$hashKey;M(a)?a.length=0:r(a,function(b,c){delete a[c]});for(f in b)e=Ia(b[f],null,c,d),T(b[f])&&(c.push(b[f]),d.push(e)),a[f]=e;Yb(a,g)}}else if(a=b)M(b)?a=Ia(b,[],c,d):ua(b)?a=new Date(b.getTime()):jb(b)?(a=RegExp(b.source,b.toString().match(/[^\/]*$/)[0]),a.lastIndex=b.lastIndex):T(b)&&(a=Ia(b,{},c,d));
+return a}function ha(b,a){if(M(b)){a=a||[];for(var c=0;c<b.length;c++)a[c]=b[c]}else if(T(b))for(c in a=a||{},b)!kb.call(b,c)||"$"===c.charAt(0)&&"$"===c.charAt(1)||(a[c]=b[c]);return a||b}function Ba(b,a){if(b===a)return!0;if(null===b||null===a)return!1;if(b!==b&&a!==a)return!0;var c=typeof b,d;if(c==typeof a&&"object"==c)if(M(b)){if(!M(a))return!1;if((c=b.length)==a.length){for(d=0;d<c;d++)if(!Ba(b[d],a[d]))return!1;return!0}}else{if(ua(b))return ua(a)?isNaN(b.getTime())&&isNaN(a.getTime())||b.getTime()===
+a.getTime():!1;if(jb(b)&&jb(a))return b.toString()==a.toString();if(b&&b.$evalAsync&&b.$watch||a&&a.$evalAsync&&a.$watch||Ha(b)||Ha(a)||M(a))return!1;c={};for(d in b)if("$"!==d.charAt(0)&&!O(b[d])){if(!Ba(b[d],a[d]))return!1;c[d]=!0}for(d in a)if(!c.hasOwnProperty(d)&&"$"!==d.charAt(0)&&a[d]!==v&&!O(a[d]))return!1;return!0}return!1}function Ab(b,a){var c=2<arguments.length?va.call(arguments,2):[];return!O(a)||a instanceof RegExp?a:c.length?function(){return arguments.length?a.apply(b,c.concat(va.call(arguments,
+0))):a.apply(b,c)}:function(){return arguments.length?a.apply(b,arguments):a.call(b)}}function Wc(b,a){var c=a;"string"===typeof b&&"$"===b.charAt(0)?c=v:Ha(a)?c="$WINDOW":a&&W===a?c="$DOCUMENT":a&&(a.$evalAsync&&a.$watch)&&(c="$SCOPE");return c}function oa(b,a){return"undefined"===typeof b?v:JSON.stringify(b,Wc,a?"  ":null)}function $b(b){return E(b)?JSON.parse(b):b}function Va(b){"function"===typeof b?b=!0:b&&0!==b.length?(b=A(""+b),b=!("f"==b||"0"==b||"false"==b||"no"==b||"n"==b||"[]"==b)):b=!1;
+return b}function ia(b){b=D(b).clone();try{b.empty()}catch(a){}var c=D("<div>").append(b).html();try{return 3===b[0].nodeType?A(c):c.match(/^(<[^>]+>)/)[1].replace(/^<([\w\-]+)/,function(a,b){return"<"+A(b)})}catch(d){return A(c)}}function ac(b){try{return decodeURIComponent(b)}catch(a){}}function bc(b){var a={},c,d;r((b||"").split("&"),function(b){b&&(c=b.replace(/\+/g,"%20").split("="),d=ac(c[0]),G(d)&&(b=G(c[1])?ac(c[1]):!0,kb.call(a,d)?M(a[d])?a[d].push(b):a[d]=[a[d],b]:a[d]=b))});return a}function Bb(b){var a=
+[];r(b,function(b,d){M(b)?r(b,function(b){a.push(Ca(d,!0)+(!0===b?"":"="+Ca(b,!0)))}):a.push(Ca(d,!0)+(!0===b?"":"="+Ca(b,!0)))});return a.length?a.join("&"):""}function lb(b){return Ca(b,!0).replace(/%26/gi,"&").replace(/%3D/gi,"=").replace(/%2B/gi,"+")}function Ca(b,a){return encodeURIComponent(b).replace(/%40/gi,"@").replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,a?"%20":"+")}function Xc(b,a){function c(a){a&&d.push(a)}var d=[b],e,f,g=["ng:app","ng-app","x-ng-app",
+"data-ng-app"],h=/\sng[:\-]app(:\s*([\w\d_]+);?)?\s/;r(g,function(a){g[a]=!0;c(W.getElementById(a));a=a.replace(":","\\:");b.querySelectorAll&&(r(b.querySelectorAll("."+a),c),r(b.querySelectorAll("."+a+"\\:"),c),r(b.querySelectorAll("["+a+"]"),c))});r(d,function(a){if(!e){var b=h.exec(" "+a.className+" ");b?(e=a,f=(b[2]||"").replace(/\s+/g,",")):r(a.attributes,function(b){!e&&g[b.name]&&(e=a,f=b.value)})}});e&&a(e,f?[f]:[])}function cc(b,a){var c=function(){b=D(b);if(b.injector()){var c=b[0]===W?
+"document":ia(b);throw Ua("btstrpd",c.replace(/</,"&lt;").replace(/>/,"&gt;"));}a=a||[];a.unshift(["$provide",function(a){a.value("$rootElement",b)}]);a.unshift("ng");c=dc(a);c.invoke(["$rootScope","$rootElement","$compile","$injector","$animate",function(a,b,c,d,e){a.$apply(function(){b.data("$injector",d);c(b)(a)})}]);return c},d=/^NG_DEFER_BOOTSTRAP!/;if(V&&!d.test(V.name))return c();V.name=V.name.replace(d,"");Wa.resumeBootstrap=function(b){r(b,function(b){a.push(b)});c()}}function mb(b,a){a=
+a||"_";return b.replace(Yc,function(b,d){return(d?a:"")+b.toLowerCase()})}function Cb(b,a,c){if(!b)throw Ua("areq",a||"?",c||"required");return b}function Xa(b,a,c){c&&M(b)&&(b=b[b.length-1]);Cb(O(b),a,"not a function, got "+(b&&"object"===typeof b?b.constructor.name||"Object":typeof b));return b}function Da(b,a){if("hasOwnProperty"===b)throw Ua("badname",a);}function ec(b,a,c){if(!a)return b;a=a.split(".");for(var d,e=b,f=a.length,g=0;g<f;g++)d=a[g],b&&(b=(e=b)[d]);return!c&&O(b)?Ab(e,b):b}function Db(b){var a=
+b[0];b=b[b.length-1];if(a===b)return D(a);var c=[a];do{a=a.nextSibling;if(!a)break;c.push(a)}while(a!==b);return D(c)}function Zc(b){var a=z("$injector"),c=z("ng");b=b.angular||(b.angular={});b.$$minErr=b.$$minErr||z;return b.module||(b.module=function(){var b={};return function(e,f,g){if("hasOwnProperty"===e)throw c("badname","module");f&&b.hasOwnProperty(e)&&(b[e]=null);return b[e]||(b[e]=function(){function b(a,d,e){return function(){c[e||"push"]([a,d,arguments]);return n}}if(!f)throw a("nomod",
+e);var c=[],d=[],m=b("$injector","invoke"),n={_invokeQueue:c,_runBlocks:d,requires:f,name:e,provider:b("$provide","provider"),factory:b("$provide","factory"),service:b("$provide","service"),value:b("$provide","value"),constant:b("$provide","constant","unshift"),animation:b("$animateProvider","register"),filter:b("$filterProvider","register"),controller:b("$controllerProvider","register"),directive:b("$compileProvider","directive"),config:m,run:function(a){d.push(a);return this}};g&&m(g);return n}())}}())}
+function $c(b){F(b,{bootstrap:cc,copy:Ia,extend:F,equals:Ba,element:D,forEach:r,injector:dc,noop:B,bind:Ab,toJson:oa,fromJson:$b,identity:ga,isUndefined:H,isDefined:G,isString:E,isFunction:O,isObject:T,isNumber:ib,isElement:Uc,isArray:M,version:ad,isDate:ua,lowercase:A,uppercase:Ja,callbacks:{counter:0},$$minErr:z,$$csp:Ya});Za=Zc(V);try{Za("ngLocale")}catch(a){Za("ngLocale",[]).provider("$locale",bd)}Za("ng",["ngLocale"],["$provide",function(a){a.provider({$$sanitizeUri:cd});a.provider("$compile",
+fc).directive({a:dd,input:gc,textarea:gc,form:ed,script:fd,select:gd,style:hd,option:id,ngBind:jd,ngBindHtml:kd,ngBindTemplate:ld,ngClass:md,ngClassEven:nd,ngClassOdd:od,ngCloak:pd,ngController:qd,ngForm:rd,ngHide:sd,ngIf:td,ngInclude:ud,ngInit:vd,ngNonBindable:wd,ngPluralize:xd,ngRepeat:yd,ngShow:zd,ngStyle:Ad,ngSwitch:Bd,ngSwitchWhen:Cd,ngSwitchDefault:Dd,ngOptions:Ed,ngTransclude:Fd,ngModel:Gd,ngList:Hd,ngChange:Id,required:hc,ngRequired:hc,ngValue:Jd}).directive({ngInclude:Kd}).directive(Eb).directive(ic);
+a.provider({$anchorScroll:Ld,$animate:Md,$browser:Nd,$cacheFactory:Od,$controller:Pd,$document:Qd,$exceptionHandler:Rd,$filter:jc,$interpolate:Sd,$interval:Td,$http:Ud,$httpBackend:Vd,$location:Wd,$log:Xd,$parse:Yd,$rootScope:Zd,$q:$d,$sce:ae,$sceDelegate:be,$sniffer:ce,$templateCache:de,$timeout:ee,$window:fe,$$rAF:ge,$$asyncCallback:he})}])}function $a(b){return b.replace(ie,function(a,b,d,e){return e?d.toUpperCase():d}).replace(je,"Moz$1")}function Fb(b,a,c,d){function e(b){var e=c&&b?[this.filter(b)]:
+[this],k=a,l,m,n,q,p,s;if(!d||null!=b)for(;e.length;)for(l=e.shift(),m=0,n=l.length;m<n;m++)for(q=D(l[m]),k?q.triggerHandler("$destroy"):k=!k,p=0,q=(s=q.children()).length;p<q;p++)e.push(Ea(s[p]));return f.apply(this,arguments)}var f=Ea.fn[b],f=f.$original||f;e.$original=f;Ea.fn[b]=e}function S(b){if(b instanceof S)return b;E(b)&&(b=$(b));if(!(this instanceof S)){if(E(b)&&"<"!=b.charAt(0))throw Gb("nosel");return new S(b)}if(E(b)){var a=b;b=W;var c;if(c=ke.exec(a))b=[b.createElement(c[1])];else{var d=
+b,e;b=d.createDocumentFragment();c=[];if(Hb.test(a)){d=b.appendChild(d.createElement("div"));e=(le.exec(a)||["",""])[1].toLowerCase();e=ca[e]||ca._default;d.innerHTML="<div>&#160;</div>"+e[1]+a.replace(me,"<$1></$2>")+e[2];d.removeChild(d.firstChild);for(a=e[0];a--;)d=d.lastChild;a=0;for(e=d.childNodes.length;a<e;++a)c.push(d.childNodes[a]);d=b.firstChild;d.textContent=""}else c.push(d.createTextNode(a));b.textContent="";b.innerHTML="";b=c}Ib(this,b);D(W.createDocumentFragment()).append(this)}else Ib(this,
+b)}function Jb(b){return b.cloneNode(!0)}function Ka(b){Kb(b);var a=0;for(b=b.childNodes||[];a<b.length;a++)Ka(b[a])}function kc(b,a,c,d){if(G(d))throw Gb("offargs");var e=pa(b,"events");pa(b,"handle")&&(H(a)?r(e,function(a,c){ab(b,c,a);delete e[c]}):r(a.split(" "),function(a){H(c)?(ab(b,a,e[a]),delete e[a]):Ta(e[a]||[],c)}))}function Kb(b,a){var c=b.ng339,d=bb[c];d&&(a?delete bb[c].data[a]:(d.handle&&(d.events.$destroy&&d.handle({},"$destroy"),kc(b)),delete bb[c],b.ng339=v))}function pa(b,a,c){var d=
+b.ng339,d=bb[d||-1];if(G(c))d||(b.ng339=d=++ne,d=bb[d]={}),d[a]=c;else return d&&d[a]}function Lb(b,a,c){var d=pa(b,"data"),e=G(c),f=!e&&G(a),g=f&&!T(a);d||g||pa(b,"data",d={});if(e)d[a]=c;else if(f){if(g)return d&&d[a];F(d,a)}else return d}function Mb(b,a){return b.getAttribute?-1<(" "+(b.getAttribute("class")||"")+" ").replace(/[\n\t]/g," ").indexOf(" "+a+" "):!1}function nb(b,a){a&&b.setAttribute&&r(a.split(" "),function(a){b.setAttribute("class",$((" "+(b.getAttribute("class")||"")+" ").replace(/[\n\t]/g,
+" ").replace(" "+$(a)+" "," ")))})}function ob(b,a){if(a&&b.setAttribute){var c=(" "+(b.getAttribute("class")||"")+" ").replace(/[\n\t]/g," ");r(a.split(" "),function(a){a=$(a);-1===c.indexOf(" "+a+" ")&&(c+=a+" ")});b.setAttribute("class",$(c))}}function Ib(b,a){if(a){a=a.nodeName||!G(a.length)||Ha(a)?[a]:a;for(var c=0;c<a.length;c++)b.push(a[c])}}function lc(b,a){return pb(b,"$"+(a||"ngController")+"Controller")}function pb(b,a,c){9==b.nodeType&&(b=b.documentElement);for(a=M(a)?a:[a];b;){for(var d=
+0,e=a.length;d<e;d++)if((c=D.data(b,a[d]))!==v)return c;b=b.parentNode||11===b.nodeType&&b.host}}function mc(b){for(var a=0,c=b.childNodes;a<c.length;a++)Ka(c[a]);for(;b.firstChild;)b.removeChild(b.firstChild)}function nc(b,a){var c=qb[a.toLowerCase()];return c&&oc[b.nodeName]&&c}function oe(b,a){var c=function(c,e){c.preventDefault||(c.preventDefault=function(){c.returnValue=!1});c.stopPropagation||(c.stopPropagation=function(){c.cancelBubble=!0});c.target||(c.target=c.srcElement||W);if(H(c.defaultPrevented)){var f=
+c.preventDefault;c.preventDefault=function(){c.defaultPrevented=!0;f.call(c)};c.defaultPrevented=!1}c.isDefaultPrevented=function(){return c.defaultPrevented||!1===c.returnValue};var g=ha(a[e||c.type]||[]);r(g,function(a){a.call(b,c)});8>=u?(c.preventDefault=null,c.stopPropagation=null,c.isDefaultPrevented=null):(delete c.preventDefault,delete c.stopPropagation,delete c.isDefaultPrevented)};c.elem=b;return c}function La(b,a){var c=typeof b,d;"function"==c||"object"==c&&null!==b?"function"==typeof(d=
+b.$$hashKey)?d=b.$$hashKey():d===v&&(d=b.$$hashKey=(a||hb)()):d=b;return c+":"+d}function cb(b,a){if(a){var c=0;this.nextUid=function(){return++c}}r(b,this.put,this)}function pc(b){var a,c;"function"===typeof b?(a=b.$inject)||(a=[],b.length&&(c=b.toString().replace(pe,""),c=c.match(qe),r(c[1].split(re),function(b){b.replace(se,function(b,c,d){a.push(d)})})),b.$inject=a):M(b)?(c=b.length-1,Xa(b[c],"fn"),a=b.slice(0,c)):Xa(b,"fn",!0);return a}function dc(b){function a(a){return function(b,c){if(T(b))r(b,
+Xb(a));else return a(b,c)}}function c(a,b){Da(a,"service");if(O(b)||M(b))b=n.instantiate(b);if(!b.$get)throw db("pget",a);return m[a+h]=b}function d(a,b){return c(a,{$get:b})}function e(a){var b=[],c,d,f,h;r(a,function(a){if(!l.get(a)){l.put(a,!0);try{if(E(a))for(c=Za(a),b=b.concat(e(c.requires)).concat(c._runBlocks),d=c._invokeQueue,f=0,h=d.length;f<h;f++){var g=d[f],k=n.get(g[0]);k[g[1]].apply(k,g[2])}else O(a)?b.push(n.invoke(a)):M(a)?b.push(n.invoke(a)):Xa(a,"module")}catch(p){throw M(a)&&(a=
+a[a.length-1]),p.message&&(p.stack&&-1==p.stack.indexOf(p.message))&&(p=p.message+"\n"+p.stack),db("modulerr",a,p.stack||p.message||p);}}});return b}function f(a,b){function c(d){if(a.hasOwnProperty(d)){if(a[d]===g)throw db("cdep",d+" <- "+k.join(" <- "));return a[d]}try{return k.unshift(d),a[d]=g,a[d]=b(d)}catch(e){throw a[d]===g&&delete a[d],e;}finally{k.shift()}}function d(a,b,e){var f=[],h=pc(a),g,k,p;k=0;for(g=h.length;k<g;k++){p=h[k];if("string"!==typeof p)throw db("itkn",p);f.push(e&&e.hasOwnProperty(p)?
+e[p]:c(p))}M(a)&&(a=a[g]);return a.apply(b,f)}return{invoke:d,instantiate:function(a,b){var c=function(){},e;c.prototype=(M(a)?a[a.length-1]:a).prototype;c=new c;e=d(a,c,b);return T(e)||O(e)?e:c},get:c,annotate:pc,has:function(b){return m.hasOwnProperty(b+h)||a.hasOwnProperty(b)}}}var g={},h="Provider",k=[],l=new cb([],!0),m={$provide:{provider:a(c),factory:a(d),service:a(function(a,b){return d(a,["$injector",function(a){return a.instantiate(b)}])}),value:a(function(a,b){return d(a,Z(b))}),constant:a(function(a,
+b){Da(a,"constant");m[a]=b;q[a]=b}),decorator:function(a,b){var c=n.get(a+h),d=c.$get;c.$get=function(){var a=p.invoke(d,c);return p.invoke(b,null,{$delegate:a})}}}},n=m.$injector=f(m,function(){throw db("unpr",k.join(" <- "));}),q={},p=q.$injector=f(q,function(a){a=n.get(a+h);return p.invoke(a.$get,a)});r(e(b),function(a){p.invoke(a||B)});return p}function Ld(){var b=!0;this.disableAutoScrolling=function(){b=!1};this.$get=["$window","$location","$rootScope",function(a,c,d){function e(a){var b=null;
+r(a,function(a){b||"a"!==A(a.nodeName)||(b=a)});return b}function f(){var b=c.hash(),d;b?(d=g.getElementById(b))?d.scrollIntoView():(d=e(g.getElementsByName(b)))?d.scrollIntoView():"top"===b&&a.scrollTo(0,0):a.scrollTo(0,0)}var g=a.document;b&&d.$watch(function(){return c.hash()},function(){d.$evalAsync(f)});return f}]}function he(){this.$get=["$$rAF","$timeout",function(b,a){return b.supported?function(a){return b(a)}:function(b){return a(b,0,!1)}}]}function te(b,a,c,d){function e(a){try{a.apply(null,
+va.call(arguments,1))}finally{if(s--,0===s)for(;K.length;)try{K.pop()()}catch(b){c.error(b)}}}function f(a,b){(function da(){r(w,function(a){a()});t=b(da,a)})()}function g(){x!=h.url()&&(x=h.url(),r(aa,function(a){a(h.url())}))}var h=this,k=a[0],l=b.location,m=b.history,n=b.setTimeout,q=b.clearTimeout,p={};h.isMock=!1;var s=0,K=[];h.$$completeOutstandingRequest=e;h.$$incOutstandingRequestCount=function(){s++};h.notifyWhenNoOutstandingRequests=function(a){r(w,function(a){a()});0===s?a():K.push(a)};
+var w=[],t;h.addPollFn=function(a){H(t)&&f(100,n);w.push(a);return a};var x=l.href,L=a.find("base"),y=null;h.url=function(a,c){l!==b.location&&(l=b.location);m!==b.history&&(m=b.history);if(a){if(x!=a){var e=x&&Fa(x)===Fa(a);x=a;if(!e&&d.history)c?m.replaceState(null,"",a):(m.pushState(null,"",a),L.attr("href",L.attr("href")));else if(e||(y=a),c)l.replace(a);else if(e){var e=l,f;f=a.indexOf("#");f=-1===f?"":a.substr(f+1);e.hash=f}else l.href=a;return h}}else return y||l.href.replace(/%27/g,"'")};
+var aa=[],P=!1;h.onUrlChange=function(a){if(!P){if(d.history)D(b).on("popstate",g);if(d.hashchange)D(b).on("hashchange",g);else h.addPollFn(g);P=!0}aa.push(a);return a};h.$$checkUrlChange=g;h.baseHref=function(){var a=L.attr("href");return a?a.replace(/^(https?\:)?\/\/[^\/]*/,""):""};var N={},ba="",Q=h.baseHref();h.cookies=function(a,b){var d,e,f,h;if(a)b===v?k.cookie=escape(a)+"=;path="+Q+";expires=Thu, 01 Jan 1970 00:00:00 GMT":E(b)&&(d=(k.cookie=escape(a)+"="+escape(b)+";path="+Q).length+1,4096<
+d&&c.warn("Cookie '"+a+"' possibly not set or overflowed because it was too large ("+d+" > 4096 bytes)!"));else{if(k.cookie!==ba)for(ba=k.cookie,d=ba.split("; "),N={},f=0;f<d.length;f++)e=d[f],h=e.indexOf("="),0<h&&(a=unescape(e.substring(0,h)),N[a]===v&&(N[a]=unescape(e.substring(h+1))));return N}};h.defer=function(a,b){var c;s++;c=n(function(){delete p[c];e(a)},b||0);p[c]=!0;return c};h.defer.cancel=function(a){return p[a]?(delete p[a],q(a),e(B),!0):!1}}function Nd(){this.$get=["$window","$log",
+"$sniffer","$document",function(b,a,c,d){return new te(b,d,a,c)}]}function Od(){this.$get=function(){function b(b,d){function e(a){a!=n&&(q?q==a&&(q=a.n):q=a,f(a.n,a.p),f(a,n),n=a,n.n=null)}function f(a,b){a!=b&&(a&&(a.p=b),b&&(b.n=a))}if(b in a)throw z("$cacheFactory")("iid",b);var g=0,h=F({},d,{id:b}),k={},l=d&&d.capacity||Number.MAX_VALUE,m={},n=null,q=null;return a[b]={put:function(a,b){if(l<Number.MAX_VALUE){var c=m[a]||(m[a]={key:a});e(c)}if(!H(b))return a in k||g++,k[a]=b,g>l&&this.remove(q.key),
+b},get:function(a){if(l<Number.MAX_VALUE){var b=m[a];if(!b)return;e(b)}return k[a]},remove:function(a){if(l<Number.MAX_VALUE){var b=m[a];if(!b)return;b==n&&(n=b.p);b==q&&(q=b.n);f(b.n,b.p);delete m[a]}delete k[a];g--},removeAll:function(){k={};g=0;m={};n=q=null},destroy:function(){m=h=k=null;delete a[b]},info:function(){return F({},h,{size:g})}}}var a={};b.info=function(){var b={};r(a,function(a,e){b[e]=a.info()});return b};b.get=function(b){return a[b]};return b}}function de(){this.$get=["$cacheFactory",
+function(b){return b("templates")}]}function fc(b,a){var c={},d="Directive",e=/^\s*directive\:\s*([\d\w_\-]+)\s+(.*)$/,f=/(([\d\w_\-]+)(?:\:([^;]+))?;?)/,g=/^(on[a-z]+|formaction)$/;this.directive=function k(a,e){Da(a,"directive");E(a)?(Cb(e,"directiveFactory"),c.hasOwnProperty(a)||(c[a]=[],b.factory(a+d,["$injector","$exceptionHandler",function(b,d){var e=[];r(c[a],function(c,f){try{var g=b.invoke(c);O(g)?g={compile:Z(g)}:!g.compile&&g.link&&(g.compile=Z(g.link));g.priority=g.priority||0;g.index=
+f;g.name=g.name||a;g.require=g.require||g.controller&&g.name;g.restrict=g.restrict||"A";e.push(g)}catch(k){d(k)}});return e}])),c[a].push(e)):r(a,Xb(k));return this};this.aHrefSanitizationWhitelist=function(b){return G(b)?(a.aHrefSanitizationWhitelist(b),this):a.aHrefSanitizationWhitelist()};this.imgSrcSanitizationWhitelist=function(b){return G(b)?(a.imgSrcSanitizationWhitelist(b),this):a.imgSrcSanitizationWhitelist()};this.$get=["$injector","$interpolate","$exceptionHandler","$http","$templateCache",
+"$parse","$controller","$rootScope","$document","$sce","$animate","$$sanitizeUri",function(a,b,m,n,q,p,s,K,w,t,x,L){function y(a,b,c,d,e){a instanceof D||(a=D(a));r(a,function(b,c){3==b.nodeType&&b.nodeValue.match(/\S+/)&&(a[c]=D(b).wrap("<span></span>").parent()[0])});var f=P(a,b,a,c,d,e);aa(a,"ng-scope");return function(b,c,d,e){Cb(b,"scope");var g=c?Ma.clone.call(a):a;r(d,function(a,b){g.data("$"+b+"Controller",a)});d=0;for(var k=g.length;d<k;d++){var p=g[d].nodeType;1!==p&&9!==p||g.eq(d).data("$scope",
+b)}c&&c(g,b);f&&f(b,g,g,e);return g}}function aa(a,b){try{a.addClass(b)}catch(c){}}function P(a,b,c,d,e,f){function g(a,c,d,e){var f,p,m,l,q,n,w;f=c.length;var s=Array(f);for(l=0;l<f;l++)s[l]=c[l];n=l=0;for(q=k.length;l<q;n++)p=s[n],c=k[l++],f=k[l++],c?(c.scope?(m=a.$new(),D.data(p,"$scope",m)):m=a,w=c.transcludeOnThisElement?N(a,c.transclude,e):!c.templateOnThisElement&&e?e:!e&&b?N(a,b):null,c(f,m,p,d,w)):f&&f(a,p.childNodes,v,e)}for(var k=[],p,m,l,q,n=0;n<a.length;n++)p=new Nb,m=ba(a[n],[],p,0===
+n?d:v,e),(f=m.length?J(m,a[n],p,b,c,null,[],[],f):null)&&f.scope&&aa(p.$$element,"ng-scope"),p=f&&f.terminal||!(l=a[n].childNodes)||!l.length?null:P(l,f?(f.transcludeOnThisElement||!f.templateOnThisElement)&&f.transclude:b),k.push(f,p),q=q||f||p,f=null;return q?g:null}function N(a,b,c){return function(d,e,f){var g=!1;d||(d=a.$new(),g=d.$$transcluded=!0);e=b(d,e,f,c);if(g)e.on("$destroy",function(){d.$destroy()});return e}}function ba(a,b,c,d,g){var k=c.$attr,p;switch(a.nodeType){case 1:p=Na(a).toLowerCase();
+da(b,qa(p),"E",d,g);for(var l,m,q,n,w=a.attributes,s=0,t=w&&w.length;s<t;s++){var K=!1,x=!1;l=w[s];if(!u||8<=u||l.specified){m=l.name;q=$(l.value);l=qa(m);if(n=U.test(l))m=mb(l.substr(6),"-");var y=l.replace(/(Start|End)$/,"");l===y+"Start"&&(K=m,x=m.substr(0,m.length-5)+"end",m=m.substr(0,m.length-6));l=qa(m.toLowerCase());k[l]=m;if(n||!c.hasOwnProperty(l))c[l]=q,nc(a,l)&&(c[l]=!0);S(a,b,q,l);da(b,l,"A",d,g,K,x)}}"input"===p&&"hidden"===a.getAttribute("type")&&a.setAttribute("autocomplete","off");
+a=a.className;if(E(a)&&""!==a)for(;p=f.exec(a);)l=qa(p[2]),da(b,l,"C",d,g)&&(c[l]=$(p[3])),a=a.substr(p.index+p[0].length);break;case 3:if(11===u)for(;a.parentNode&&a.nextSibling&&3===a.nextSibling.nodeType;)a.nodeValue+=a.nextSibling.nodeValue,a.parentNode.removeChild(a.nextSibling);A(b,a.nodeValue);break;case 8:try{if(p=e.exec(a.nodeValue))l=qa(p[1]),da(b,l,"M",d,g)&&(c[l]=$(p[2]))}catch(r){}}b.sort(H);return b}function Q(a,b,c){var d=[],e=0;if(b&&a.hasAttribute&&a.hasAttribute(b)){do{if(!a)throw ja("uterdir",
+b,c);1==a.nodeType&&(a.hasAttribute(b)&&e++,a.hasAttribute(c)&&e--);d.push(a);a=a.nextSibling}while(0<e)}else d.push(a);return D(d)}function C(a,b,c){return function(d,e,f,g,k){e=Q(e[0],b,c);return a(d,e,f,g,k)}}function J(a,c,d,e,f,g,k,q,n){function w(a,b,c,d){if(a){c&&(a=C(a,c,d));a.require=I.require;a.directiveName=z;if(L===I||I.$$isolateScope)a=qc(a,{isolateScope:!0});k.push(a)}if(b){c&&(b=C(b,c,d));b.require=I.require;b.directiveName=z;if(L===I||I.$$isolateScope)b=qc(b,{isolateScope:!0});q.push(b)}}
+function t(a,b,c,d){var e,f="data",g=!1;if(E(b)){for(;"^"==(e=b.charAt(0))||"?"==e;)b=b.substr(1),"^"==e&&(f="inheritedData"),g=g||"?"==e;e=null;d&&"data"===f&&(e=d[b]);e=e||c[f]("$"+b+"Controller");if(!e&&!g)throw ja("ctreq",b,a);}else M(b)&&(e=[],r(b,function(b){e.push(t(a,b,c,d))}));return e}function K(a,e,f,g,n){function w(a,b){var c;2>arguments.length&&(b=a,a=v);Ga&&(c=ba);return n(a,b,c)}var x,R,y,N,C,Q,ba={},ra;x=c===f?d:ha(d,new Nb(D(f),d.$attr));R=x.$$element;if(L){var ve=/^\s*([@=&])(\??)\s*(\w*)\s*$/;
+Q=e.$new(!0);!J||J!==L&&J!==L.$$originalDirective?R.data("$isolateScopeNoTemplate",Q):R.data("$isolateScope",Q);aa(R,"ng-isolate-scope");r(L.scope,function(a,c){var d=a.match(ve)||[],f=d[3]||c,g="?"==d[2],d=d[1],k,m,n,q;Q.$$isolateBindings[c]=d+f;switch(d){case "@":x.$observe(f,function(a){Q[c]=a});x.$$observers[f].$$scope=e;x[f]&&(Q[c]=b(x[f])(e));break;case "=":if(g&&!x[f])break;m=p(x[f]);q=m.literal?Ba:function(a,b){return a===b||a!==a&&b!==b};n=m.assign||function(){k=Q[c]=m(e);throw ja("nonassign",
+x[f],L.name);};k=Q[c]=m(e);Q.$watch(function(){var a=m(e);q(a,Q[c])||(q(a,k)?n(e,a=Q[c]):Q[c]=a);return k=a},null,m.literal);break;case "&":m=p(x[f]);Q[c]=function(a){return m(e,a)};break;default:throw ja("iscp",L.name,c,a);}})}ra=n&&w;P&&r(P,function(a){var b={$scope:a===L||a.$$isolateScope?Q:e,$element:R,$attrs:x,$transclude:ra},c;C=a.controller;"@"==C&&(C=x[a.name]);c=s(C,b);ba[a.name]=c;Ga||R.data("$"+a.name+"Controller",c);a.controllerAs&&(b.$scope[a.controllerAs]=c)});g=0;for(y=k.length;g<y;g++)try{N=
+k[g],N(N.isolateScope?Q:e,R,x,N.require&&t(N.directiveName,N.require,R,ba),ra)}catch(u){m(u,ia(R))}g=e;L&&(L.template||null===L.templateUrl)&&(g=Q);a&&a(g,f.childNodes,v,n);for(g=q.length-1;0<=g;g--)try{N=q[g],N(N.isolateScope?Q:e,R,x,N.require&&t(N.directiveName,N.require,R,ba),ra)}catch(I){m(I,ia(R))}}n=n||{};for(var x=-Number.MAX_VALUE,N,P=n.controllerDirectives,L=n.newIsolateScopeDirective,J=n.templateDirective,da=n.nonTlbTranscludeDirective,H=!1,F=!1,Ga=n.hasElementTranscludeDirective,A=d.$$element=
+D(c),I,z,u,S=e,Oa,ka=0,U=a.length;ka<U;ka++){I=a[ka];var X=I.$$start,Y=I.$$end;X&&(A=Q(c,X,Y));u=v;if(x>I.priority)break;if(u=I.scope)N=N||I,I.templateUrl||(eb("new/isolated scope",L,I,A),T(u)&&(L=I));z=I.name;!I.templateUrl&&I.controller&&(u=I.controller,P=P||{},eb("'"+z+"' controller",P[z],I,A),P[z]=I);if(u=I.transclude)H=!0,I.$$tlb||(eb("transclusion",da,I,A),da=I),"element"==u?(Ga=!0,x=I.priority,u=A,A=d.$$element=D(W.createComment(" "+z+": "+d[z]+" ")),c=A[0],ra(f,va.call(u,0),c),S=y(u,e,x,g&&
+g.name,{nonTlbTranscludeDirective:da})):(u=D(Jb(c)).contents(),A.empty(),S=y(u,e));if(I.template)if(F=!0,eb("template",J,I,A),J=I,u=O(I.template)?I.template(A,d):I.template,u=V(u),I.replace){g=I;u=Hb.test(u)?D($(u)):[];c=u[0];if(1!=u.length||1!==c.nodeType)throw ja("tplrt",z,"");ra(f,A,c);U={$attr:{}};u=ba(c,[],U);var we=a.splice(ka+1,a.length-(ka+1));L&&G(u);a=a.concat(u).concat(we);B(d,U);U=a.length}else A.html(u);if(I.templateUrl)F=!0,eb("template",J,I,A),J=I,I.replace&&(g=I),K=ue(a.splice(ka,
+a.length-ka),A,d,f,H&&S,k,q,{controllerDirectives:P,newIsolateScopeDirective:L,templateDirective:J,nonTlbTranscludeDirective:da}),U=a.length;else if(I.compile)try{Oa=I.compile(A,d,S),O(Oa)?w(null,Oa,X,Y):Oa&&w(Oa.pre,Oa.post,X,Y)}catch(Z){m(Z,ia(A))}I.terminal&&(K.terminal=!0,x=Math.max(x,I.priority))}K.scope=N&&!0===N.scope;K.transcludeOnThisElement=H;K.templateOnThisElement=F;K.transclude=S;n.hasElementTranscludeDirective=Ga;return K}function G(a){for(var b=0,c=a.length;b<c;b++)a[b]=Zb(a[b],{$$isolateScope:!0})}
+function da(b,e,f,g,p,l,n){if(e===p)return null;p=null;if(c.hasOwnProperty(e)){var q;e=a.get(e+d);for(var w=0,s=e.length;w<s;w++)try{q=e[w],(g===v||g>q.priority)&&-1!=q.restrict.indexOf(f)&&(l&&(q=Zb(q,{$$start:l,$$end:n})),b.push(q),p=q)}catch(x){m(x)}}return p}function B(a,b){var c=b.$attr,d=a.$attr,e=a.$$element;r(a,function(d,e){"$"!=e.charAt(0)&&(b[e]&&b[e]!==d&&(d+=("style"===e?";":" ")+b[e]),a.$set(e,d,!0,c[e]))});r(b,function(b,f){"class"==f?(aa(e,b),a["class"]=(a["class"]?a["class"]+" ":
+"")+b):"style"==f?(e.attr("style",e.attr("style")+";"+b),a.style=(a.style?a.style+";":"")+b):"$"==f.charAt(0)||a.hasOwnProperty(f)||(a[f]=b,d[f]=c[f])})}function ue(a,b,c,d,e,f,g,k){var p=[],l,m,w=b[0],s=a.shift(),x=F({},s,{templateUrl:null,transclude:null,replace:null,$$originalDirective:s}),K=O(s.templateUrl)?s.templateUrl(b,c):s.templateUrl;b.empty();n.get(t.getTrustedResourceUrl(K),{cache:q}).success(function(q){var n,t;q=V(q);if(s.replace){q=Hb.test(q)?D($(q)):[];n=q[0];if(1!=q.length||1!==n.nodeType)throw ja("tplrt",
+s.name,K);q={$attr:{}};ra(d,b,n);var y=ba(n,[],q);T(s.scope)&&G(y);a=y.concat(a);B(c,q)}else n=w,b.html(q);a.unshift(x);l=J(a,n,c,e,b,s,f,g,k);r(d,function(a,c){a==n&&(d[c]=b[0])});for(m=P(b[0].childNodes,e);p.length;){q=p.shift();t=p.shift();var L=p.shift(),C=p.shift(),y=b[0];if(t!==w){var Q=t.className;k.hasElementTranscludeDirective&&s.replace||(y=Jb(n));ra(L,D(t),y);aa(D(y),Q)}t=l.transcludeOnThisElement?N(q,l.transclude,C):C;l(m,q,y,d,t)}p=null}).error(function(a,b,c,d){throw ja("tpload",d.url);
+});return function(a,b,c,d,e){a=e;p?(p.push(b),p.push(c),p.push(d),p.push(a)):(l.transcludeOnThisElement&&(a=N(b,l.transclude,e)),l(m,b,c,d,a))}}function H(a,b){var c=b.priority-a.priority;return 0!==c?c:a.name!==b.name?a.name<b.name?-1:1:a.index-b.index}function eb(a,b,c,d){if(b)throw ja("multidir",b.name,c.name,a,ia(d));}function A(a,c){var d=b(c,!0);d&&a.push({priority:0,compile:function(a){var b=a.parent().length;b&&aa(a.parent(),"ng-binding");return function(a,c){var e=c.parent(),f=e.data("$binding")||
+[];f.push(d);e.data("$binding",f);b||aa(e,"ng-binding");a.$watch(d,function(a){c[0].nodeValue=a})}}})}function z(a,b){if("srcdoc"==b)return t.HTML;var c=Na(a);if("xlinkHref"==b||"FORM"==c&&"action"==b||"LINK"==c&&"href"==b||"IMG"!=c&&("src"==b||"ngSrc"==b))return t.RESOURCE_URL}function S(a,c,d,e){var f=b(d,!0);if(f){if("multiple"===e&&"SELECT"===Na(a))throw ja("selmulti",ia(a));c.push({priority:100,compile:function(){return{pre:function(c,d,k){d=k.$$observers||(k.$$observers={});if(g.test(e))throw ja("nodomevents");
+if(f=b(k[e],!0,z(a,e)))k[e]=f(c),(d[e]||(d[e]=[])).$$inter=!0,(k.$$observers&&k.$$observers[e].$$scope||c).$watch(f,function(a,b){"class"===e&&a!=b?k.$updateClass(a,b):k.$set(e,a)})}}}})}}function ra(a,b,c){var d=b[0],e=b.length,f=d.parentNode,g,k;if(a)for(g=0,k=a.length;g<k;g++)if(a[g]==d){a[g++]=c;k=g+e-1;for(var p=a.length;g<p;g++,k++)k<p?a[g]=a[k]:delete a[g];a.length-=e-1;break}f&&f.replaceChild(c,d);a=W.createDocumentFragment();a.appendChild(d);c[D.expando]=d[D.expando];d=1;for(e=b.length;d<
+e;d++)f=b[d],D(f).remove(),a.appendChild(f),delete b[d];b[0]=c;b.length=1}function qc(a,b){return F(function(){return a.apply(null,arguments)},a,b)}var Nb=function(a,b){this.$$element=a;this.$attr=b||{}};Nb.prototype={$normalize:qa,$addClass:function(a){a&&0<a.length&&x.addClass(this.$$element,a)},$removeClass:function(a){a&&0<a.length&&x.removeClass(this.$$element,a)},$updateClass:function(a,b){var c=rc(a,b),d=rc(b,a);0===c.length?x.removeClass(this.$$element,d):0===d.length?x.addClass(this.$$element,
+c):x.setClass(this.$$element,c,d)},$set:function(a,b,c,d){var e=nc(this.$$element[0],a);e&&(this.$$element.prop(a,b),d=e);this[a]=b;d?this.$attr[a]=d:(d=this.$attr[a])||(this.$attr[a]=d=mb(a,"-"));e=Na(this.$$element).toUpperCase();if("A"===e&&("href"===a||"xlinkHref"===a)||"IMG"===e&&"src"===a)this[a]=b=L(b,"src"===a);!1!==c&&(null===b||b===v?this.$$element.removeAttr(d):this.$$element.attr(d,b));(c=this.$$observers)&&r(c[a],function(a){try{a(b)}catch(c){m(c)}})},$observe:function(a,b){var c=this,
+d=c.$$observers||(c.$$observers={}),e=d[a]||(d[a]=[]);e.push(b);K.$evalAsync(function(){e.$$inter||b(c[a])});return b}};var ka=b.startSymbol(),Ga=b.endSymbol(),V="{{"==ka||"}}"==Ga?ga:function(a){return a.replace(/\{\{/g,ka).replace(/}}/g,Ga)},U=/^ngAttr[A-Z]/;return y}]}function qa(b){return $a(b.replace(xe,""))}function rc(b,a){var c="",d=b.split(/\s+/),e=a.split(/\s+/),f=0;a:for(;f<d.length;f++){for(var g=d[f],h=0;h<e.length;h++)if(g==e[h])continue a;c+=(0<c.length?" ":"")+g}return c}function Pd(){var b=
+{},a=/^(\S+)(\s+as\s+(\w+))?$/;this.register=function(a,d){Da(a,"controller");T(a)?F(b,a):b[a]=d};this.$get=["$injector","$window",function(c,d){return function(e,f){var g,h,k;E(e)&&(g=e.match(a),h=g[1],k=g[3],e=b.hasOwnProperty(h)?b[h]:ec(f.$scope,h,!0)||ec(d,h,!0),Xa(e,h,!0));g=c.instantiate(e,f);if(k){if(!f||"object"!==typeof f.$scope)throw z("$controller")("noscp",h||e.name,k);f.$scope[k]=g}return g}}]}function Qd(){this.$get=["$window",function(b){return D(b.document)}]}function Rd(){this.$get=
+["$log",function(b){return function(a,c){b.error.apply(b,arguments)}}]}function sc(b){var a={},c,d,e;if(!b)return a;r(b.split("\n"),function(b){e=b.indexOf(":");c=A($(b.substr(0,e)));d=$(b.substr(e+1));c&&(a[c]=a[c]?a[c]+", "+d:d)});return a}function tc(b){var a=T(b)?b:v;return function(c){a||(a=sc(b));return c?a[A(c)]||null:a}}function uc(b,a,c){if(O(c))return c(b,a);r(c,function(c){b=c(b,a)});return b}function Ud(){var b=/^\s*(\[|\{[^\{])/,a=/[\}\]]\s*$/,c=/^\)\]\}',?\n/,d={"Content-Type":"application/json;charset=utf-8"},
+e=this.defaults={transformResponse:[function(d){E(d)&&(d=d.replace(c,""),b.test(d)&&a.test(d)&&(d=$b(d)));return d}],transformRequest:[function(a){return T(a)&&"[object File]"!==Aa.call(a)&&"[object Blob]"!==Aa.call(a)?oa(a):a}],headers:{common:{Accept:"application/json, text/plain, */*"},post:ha(d),put:ha(d),patch:ha(d)},xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN"},f=this.interceptors=[],g=this.responseInterceptors=[];this.$get=["$httpBackend","$browser","$cacheFactory","$rootScope",
+"$q","$injector",function(a,b,c,d,n,q){function p(a){function b(a){var d=F({},a,{data:uc(a.data,a.headers,c.transformResponse)});return 200<=a.status&&300>a.status?d:n.reject(d)}var c={method:"get",transformRequest:e.transformRequest,transformResponse:e.transformResponse},d=function(a){var b=e.headers,c=F({},a.headers),d,f,b=F({},b.common,b[A(a.method)]);a:for(d in b){a=A(d);for(f in c)if(A(f)===a)continue a;c[d]=b[d]}(function(a){var b;r(a,function(c,d){O(c)&&(b=c(),null!=b?a[d]=b:delete a[d])})})(c);
+return c}(a);F(c,a);c.headers=d;c.method=Ja(c.method);var f=[function(a){d=a.headers;var c=uc(a.data,tc(d),a.transformRequest);H(c)&&r(d,function(a,b){"content-type"===A(b)&&delete d[b]});H(a.withCredentials)&&!H(e.withCredentials)&&(a.withCredentials=e.withCredentials);return s(a,c,d).then(b,b)},v],g=n.when(c);for(r(t,function(a){(a.request||a.requestError)&&f.unshift(a.request,a.requestError);(a.response||a.responseError)&&f.push(a.response,a.responseError)});f.length;){a=f.shift();var h=f.shift(),
+g=g.then(a,h)}g.success=function(a){g.then(function(b){a(b.data,b.status,b.headers,c)});return g};g.error=function(a){g.then(null,function(b){a(b.data,b.status,b.headers,c)});return g};return g}function s(c,f,g){function l(a,b,c,e){C&&(200<=a&&300>a?C.put(u,[a,b,sc(c),e]):C.remove(u));q(b,a,c,e);d.$$phase||d.$apply()}function q(a,b,d,e){b=Math.max(b,0);(200<=b&&300>b?t.resolve:t.reject)({data:a,status:b,headers:tc(d),config:c,statusText:e})}function s(){var a=Sa(p.pendingRequests,c);-1!==a&&p.pendingRequests.splice(a,
+1)}var t=n.defer(),r=t.promise,C,J,u=K(c.url,c.params);p.pendingRequests.push(c);r.then(s,s);!c.cache&&!e.cache||(!1===c.cache||"GET"!==c.method&&"JSONP"!==c.method)||(C=T(c.cache)?c.cache:T(e.cache)?e.cache:w);if(C)if(J=C.get(u),G(J)){if(J&&O(J.then))return J.then(s,s),J;M(J)?q(J[1],J[0],ha(J[2]),J[3]):q(J,200,{},"OK")}else C.put(u,r);H(J)&&((J=Ob(c.url)?b.cookies()[c.xsrfCookieName||e.xsrfCookieName]:v)&&(g[c.xsrfHeaderName||e.xsrfHeaderName]=J),a(c.method,u,f,l,g,c.timeout,c.withCredentials,c.responseType));
+return r}function K(a,b){if(!b)return a;var c=[];Tc(b,function(a,b){null===a||H(a)||(M(a)||(a=[a]),r(a,function(a){T(a)&&(a=ua(a)?a.toISOString():oa(a));c.push(Ca(b)+"="+Ca(a))}))});0<c.length&&(a+=(-1==a.indexOf("?")?"?":"&")+c.join("&"));return a}var w=c("$http"),t=[];r(f,function(a){t.unshift(E(a)?q.get(a):q.invoke(a))});r(g,function(a,b){var c=E(a)?q.get(a):q.invoke(a);t.splice(b,0,{response:function(a){return c(n.when(a))},responseError:function(a){return c(n.reject(a))}})});p.pendingRequests=
+[];(function(a){r(arguments,function(a){p[a]=function(b,c){return p(F(c||{},{method:a,url:b}))}})})("get","delete","head","jsonp");(function(a){r(arguments,function(a){p[a]=function(b,c,d){return p(F(d||{},{method:a,url:b,data:c}))}})})("post","put","patch");p.defaults=e;return p}]}function ye(b){if(8>=u&&(!b.match(/^(get|post|head|put|delete|options)$/i)||!V.XMLHttpRequest))return new V.ActiveXObject("Microsoft.XMLHTTP");if(V.XMLHttpRequest)return new V.XMLHttpRequest;throw z("$httpBackend")("noxhr");
+}function Vd(){this.$get=["$browser","$window","$document",function(b,a,c){return ze(b,ye,b.defer,a.angular.callbacks,c[0])}]}function ze(b,a,c,d,e){function f(a,b,c){var f=e.createElement("script"),g=null;f.type="text/javascript";f.src=a;f.async=!0;g=function(a){ab(f,"load",g);ab(f,"error",g);e.body.removeChild(f);f=null;var h=-1,s="unknown";a&&("load"!==a.type||d[b].called||(a={type:"error"}),s=a.type,h="error"===a.type?404:200);c&&c(h,s)};rb(f,"load",g);rb(f,"error",g);8>=u&&(f.onreadystatechange=
+function(){E(f.readyState)&&/loaded|complete/.test(f.readyState)&&(f.onreadystatechange=null,g({type:"load"}))});e.body.appendChild(f);return g}var g=-1;return function(e,k,l,m,n,q,p,s){function K(){t=g;L&&L();y&&y.abort()}function w(a,d,e,f,g){P&&c.cancel(P);L=y=null;0===d&&(d=e?200:"file"==wa(k).protocol?404:0);a(1223===d?204:d,e,f,g||"");b.$$completeOutstandingRequest(B)}var t;b.$$incOutstandingRequestCount();k=k||b.url();if("jsonp"==A(e)){var x="_"+(d.counter++).toString(36);d[x]=function(a){d[x].data=
+a;d[x].called=!0};var L=f(k.replace("JSON_CALLBACK","angular.callbacks."+x),x,function(a,b){w(m,a,d[x].data,"",b);d[x]=B})}else{var y=a(e);y.open(e,k,!0);r(n,function(a,b){G(a)&&y.setRequestHeader(b,a)});y.onreadystatechange=function(){if(y&&4==y.readyState){var a=null,b=null,c="";t!==g&&(a=y.getAllResponseHeaders(),b="response"in y?y.response:y.responseText);t===g&&10>u||(c=y.statusText);w(m,t||y.status,b,a,c)}};p&&(y.withCredentials=!0);if(s)try{y.responseType=s}catch(aa){if("json"!==s)throw aa;
+}y.send(l||null)}if(0<q)var P=c(K,q);else q&&O(q.then)&&q.then(K)}}function Sd(){var b="{{",a="}}";this.startSymbol=function(a){return a?(b=a,this):b};this.endSymbol=function(b){return b?(a=b,this):a};this.$get=["$parse","$exceptionHandler","$sce",function(c,d,e){function f(f,l,m){for(var n,q,p=0,s=[],K=f.length,w=!1,t=[];p<K;)-1!=(n=f.indexOf(b,p))&&-1!=(q=f.indexOf(a,n+g))?(p!=n&&s.push(f.substring(p,n)),s.push(p=c(w=f.substring(n+g,q))),p.exp=w,p=q+h,w=!0):(p!=K&&s.push(f.substring(p)),p=K);(K=
+s.length)||(s.push(""),K=1);if(m&&1<s.length)throw vc("noconcat",f);if(!l||w)return t.length=K,p=function(a){try{for(var b=0,c=K,g;b<c;b++){if("function"==typeof(g=s[b]))if(g=g(a),g=m?e.getTrusted(m,g):e.valueOf(g),null==g)g="";else switch(typeof g){case "string":break;case "number":g=""+g;break;default:g=oa(g)}t[b]=g}return t.join("")}catch(h){a=vc("interr",f,h.toString()),d(a)}},p.exp=f,p.parts=s,p}var g=b.length,h=a.length;f.startSymbol=function(){return b};f.endSymbol=function(){return a};return f}]}
+function Td(){this.$get=["$rootScope","$window","$q",function(b,a,c){function d(d,g,h,k){var l=a.setInterval,m=a.clearInterval,n=c.defer(),q=n.promise,p=0,s=G(k)&&!k;h=G(h)?h:0;q.then(null,null,d);q.$$intervalId=l(function(){n.notify(p++);0<h&&p>=h&&(n.resolve(p),m(q.$$intervalId),delete e[q.$$intervalId]);s||b.$apply()},g);e[q.$$intervalId]=n;return q}var e={};d.cancel=function(b){return b&&b.$$intervalId in e?(e[b.$$intervalId].reject("canceled"),a.clearInterval(b.$$intervalId),delete e[b.$$intervalId],
+!0):!1};return d}]}function bd(){this.$get=function(){return{id:"en-us",NUMBER_FORMATS:{DECIMAL_SEP:".",GROUP_SEP:",",PATTERNS:[{minInt:1,minFrac:0,maxFrac:3,posPre:"",posSuf:"",negPre:"-",negSuf:"",gSize:3,lgSize:3},{minInt:1,minFrac:2,maxFrac:2,posPre:"\u00a4",posSuf:"",negPre:"(\u00a4",negSuf:")",gSize:3,lgSize:3}],CURRENCY_SYM:"$"},DATETIME_FORMATS:{MONTH:"January February March April May June July August September October November December".split(" "),SHORTMONTH:"Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec".split(" "),
+DAY:"Sunday Monday Tuesday Wednesday Thursday Friday Saturday".split(" "),SHORTDAY:"Sun Mon Tue Wed Thu Fri Sat".split(" "),AMPMS:["AM","PM"],medium:"MMM d, y h:mm:ss a","short":"M/d/yy h:mm a",fullDate:"EEEE, MMMM d, y",longDate:"MMMM d, y",mediumDate:"MMM d, y",shortDate:"M/d/yy",mediumTime:"h:mm:ss a",shortTime:"h:mm a"},pluralCat:function(b){return 1===b?"one":"other"}}}}function Pb(b){b=b.split("/");for(var a=b.length;a--;)b[a]=lb(b[a]);return b.join("/")}function wc(b,a,c){b=wa(b,c);a.$$protocol=
+b.protocol;a.$$host=b.hostname;a.$$port=U(b.port)||Ae[b.protocol]||null}function xc(b,a,c){var d="/"!==b.charAt(0);d&&(b="/"+b);b=wa(b,c);a.$$path=decodeURIComponent(d&&"/"===b.pathname.charAt(0)?b.pathname.substring(1):b.pathname);a.$$search=bc(b.search);a.$$hash=decodeURIComponent(b.hash);a.$$path&&"/"!=a.$$path.charAt(0)&&(a.$$path="/"+a.$$path)}function sa(b,a){if(0===a.indexOf(b))return a.substr(b.length)}function Fa(b){var a=b.indexOf("#");return-1==a?b:b.substr(0,a)}function yc(b){return b.replace(/(#.+)|#$/,
+"$1")}function Qb(b){return b.substr(0,Fa(b).lastIndexOf("/")+1)}function zc(b,a){this.$$html5=!0;a=a||"";var c=Qb(b);wc(b,this,b);this.$$parse=function(a){var e=sa(c,a);if(!E(e))throw Rb("ipthprfx",a,c);xc(e,this,b);this.$$path||(this.$$path="/");this.$$compose()};this.$$compose=function(){var a=Bb(this.$$search),b=this.$$hash?"#"+lb(this.$$hash):"";this.$$url=Pb(this.$$path)+(a?"?"+a:"")+b;this.$$absUrl=c+this.$$url.substr(1)};this.$$parseLinkUrl=function(d,e){var f,g;(f=sa(b,d))!==v?(g=f,g=(f=
+sa(a,f))!==v?c+(sa("/",f)||f):b+g):(f=sa(c,d))!==v?g=c+f:c==d+"/"&&(g=c);g&&this.$$parse(g);return!!g}}function Sb(b,a){var c=Qb(b);wc(b,this,b);this.$$parse=function(d){var e=sa(b,d)||sa(c,d),e="#"==e.charAt(0)?sa(a,e):this.$$html5?e:"";if(!E(e))throw Rb("ihshprfx",d,a);xc(e,this,b);d=this.$$path;var f=/^\/[A-Z]:(\/.*)/;0===e.indexOf(b)&&(e=e.replace(b,""));f.exec(e)||(d=(e=f.exec(d))?e[1]:d);this.$$path=d;this.$$compose()};this.$$compose=function(){var c=Bb(this.$$search),e=this.$$hash?"#"+lb(this.$$hash):
+"";this.$$url=Pb(this.$$path)+(c?"?"+c:"")+e;this.$$absUrl=b+(this.$$url?a+this.$$url:"")};this.$$parseLinkUrl=function(a,c){return Fa(b)==Fa(a)?(this.$$parse(a),!0):!1}}function Ac(b,a){this.$$html5=!0;Sb.apply(this,arguments);var c=Qb(b);this.$$parseLinkUrl=function(d,e){var f,g;b==Fa(d)?f=d:(g=sa(c,d))?f=b+a+g:c===d+"/"&&(f=c);f&&this.$$parse(f);return!!f};this.$$compose=function(){var c=Bb(this.$$search),e=this.$$hash?"#"+lb(this.$$hash):"";this.$$url=Pb(this.$$path)+(c?"?"+c:"")+e;this.$$absUrl=
+b+a+this.$$url}}function sb(b){return function(){return this[b]}}function Bc(b,a){return function(c){if(H(c))return this[b];this[b]=a(c);this.$$compose();return this}}function Wd(){var b="",a=!1;this.hashPrefix=function(a){return G(a)?(b=a,this):b};this.html5Mode=function(b){return G(b)?(a=b,this):a};this.$get=["$rootScope","$browser","$sniffer","$rootElement",function(c,d,e,f){function g(a){c.$broadcast("$locationChangeSuccess",h.absUrl(),a)}var h,k=d.baseHref(),l=d.url();a?(k=l.substring(0,l.indexOf("/",
+l.indexOf("//")+2))+(k||"/"),e=e.history?zc:Ac):(k=Fa(l),e=Sb);h=new e(k,"#"+b);h.$$parseLinkUrl(l,l);var m=/^\s*(javascript|mailto):/i;f.on("click",function(a){if(!a.ctrlKey&&!a.metaKey&&2!=a.which){for(var b=D(a.target);"a"!==A(b[0].nodeName);)if(b[0]===f[0]||!(b=b.parent())[0])return;var e=b.prop("href"),g=b.attr("href")||b.attr("xlink:href");T(e)&&"[object SVGAnimatedString]"===e.toString()&&(e=wa(e.animVal).href);m.test(e)||(!e||(b.attr("target")||a.isDefaultPrevented())||!h.$$parseLinkUrl(e,
+g))||(a.preventDefault(),h.absUrl()!=d.url()&&(c.$apply(),V.angular["ff-684208-preventDefault"]=!0))}});h.absUrl()!=l&&d.url(h.absUrl(),!0);d.onUrlChange(function(a){h.absUrl()!=a&&(c.$evalAsync(function(){var b=h.absUrl();h.$$parse(a);c.$broadcast("$locationChangeStart",a,b).defaultPrevented?(h.$$parse(b),d.url(b)):g(b)}),c.$$phase||c.$digest())});var n=0;c.$watch(function(){var a=yc(d.url()),b=yc(h.absUrl()),e=h.$$replace;n&&a==b||(n++,c.$evalAsync(function(){c.$broadcast("$locationChangeStart",
+h.absUrl(),a).defaultPrevented?h.$$parse(a):(d.url(h.absUrl(),e),g(a))}));h.$$replace=!1;return n});return h}]}function Xd(){var b=!0,a=this;this.debugEnabled=function(a){return G(a)?(b=a,this):b};this.$get=["$window",function(c){function d(a){a instanceof Error&&(a.stack?a=a.message&&-1===a.stack.indexOf(a.message)?"Error: "+a.message+"\n"+a.stack:a.stack:a.sourceURL&&(a=a.message+"\n"+a.sourceURL+":"+a.line));return a}function e(a){var b=c.console||{},e=b[a]||b.log||B;a=!1;try{a=!!e.apply}catch(k){}return a?
+function(){var a=[];r(arguments,function(b){a.push(d(b))});return e.apply(b,a)}:function(a,b){e(a,null==b?"":b)}}return{log:e("log"),info:e("info"),warn:e("warn"),error:e("error"),debug:function(){var c=e("debug");return function(){b&&c.apply(a,arguments)}}()}}]}function la(b,a){if("__defineGetter__"===b||"__defineSetter__"===b||"__lookupGetter__"===b||"__lookupSetter__"===b||"__proto__"===b)throw ea("isecfld",a);return b}function Cc(b,a){b+="";if(!E(b))throw ea("iseccst",a);return b}function ma(b,
+a){if(b){if(b.constructor===b)throw ea("isecfn",a);if(b.document&&b.location&&b.alert&&b.setInterval)throw ea("isecwindow",a);if(b.children&&(b.nodeName||b.prop&&b.attr&&b.find))throw ea("isecdom",a);if(b===Object)throw ea("isecobj",a);}return b}function tb(b,a,c,d,e){ma(b,d);e=e||{};a=a.split(".");for(var f,g=0;1<a.length;g++){f=la(a.shift(),d);var h=ma(b[f],d);h||(h={},b[f]=h);b=h;b.then&&e.unwrapPromises&&(xa(d),"$$v"in b||function(a){a.then(function(b){a.$$v=b})}(b),b.$$v===v&&(b.$$v={}),b=b.$$v)}f=
+la(a.shift(),d);ma(b[f],d);return b[f]=c}function Pa(b){return"constructor"==b}function Dc(b,a,c,d,e,f,g){la(b,f);la(a,f);la(c,f);la(d,f);la(e,f);var h=function(a){return ma(a,f)},k=g.expensiveChecks,l=k||Pa(b)?h:ga,m=k||Pa(a)?h:ga,n=k||Pa(c)?h:ga,q=k||Pa(d)?h:ga,p=k||Pa(e)?h:ga;return g.unwrapPromises?function(g,h){var k=h&&h.hasOwnProperty(b)?h:g,t;if(null==k)return k;(k=l(k[b]))&&k.then&&(xa(f),"$$v"in k||(t=k,t.$$v=v,t.then(function(a){t.$$v=l(a)})),k=l(k.$$v));if(!a)return k;if(null==k)return v;
+(k=m(k[a]))&&k.then&&(xa(f),"$$v"in k||(t=k,t.$$v=v,t.then(function(a){t.$$v=m(a)})),k=m(k.$$v));if(!c)return k;if(null==k)return v;(k=n(k[c]))&&k.then&&(xa(f),"$$v"in k||(t=k,t.$$v=v,t.then(function(a){t.$$v=n(a)})),k=n(k.$$v));if(!d)return k;if(null==k)return v;(k=q(k[d]))&&k.then&&(xa(f),"$$v"in k||(t=k,t.$$v=v,t.then(function(a){t.$$v=q(a)})),k=q(k.$$v));if(!e)return k;if(null==k)return v;(k=p(k[e]))&&k.then&&(xa(f),"$$v"in k||(t=k,t.$$v=v,t.then(function(a){t.$$v=p(a)})),k=p(k.$$v));return k}:
+function(f,g){var h=g&&g.hasOwnProperty(b)?g:f;if(null==h)return h;h=l(h[b]);if(!a)return h;if(null==h)return v;h=m(h[a]);if(!c)return h;if(null==h)return v;h=n(h[c]);if(!d)return h;if(null==h)return v;h=q(h[d]);return e?null==h?v:h=p(h[e]):h}}function Be(b,a){return function(c,d){return b(c,d,xa,ma,a)}}function Ec(b,a,c){var d=a.expensiveChecks,e=d?Ce:De;if(e.hasOwnProperty(b))return e[b];var f=b.split("."),g=f.length,h;if(a.csp)h=6>g?Dc(f[0],f[1],f[2],f[3],f[4],c,a):function(b,d){var e=0,h;do h=
+Dc(f[e++],f[e++],f[e++],f[e++],f[e++],c,a)(b,d),d=v,b=h;while(e<g);return h};else{var k="var p;\n";d&&(k+="s = eso(s, fe);\nl = eso(l, fe);\n");var l=d;r(f,function(b,e){la(b,c);var f=(e?"s":'((l&&l.hasOwnProperty("'+b+'"))?l:s)')+'["'+b+'"]',g=d||Pa(b);g&&(f="eso("+f+", fe)",l=!0);k+="if(s == null) return undefined;\ns="+f+";\n";a.unwrapPromises&&(k+='if (s && s.then) {\n pw("'+c.replace(/(["\r\n])/g,"\\$1")+'");\n if (!("$$v" in s)) {\n p=s;\n p.$$v = undefined;\n p.then(function(v) {p.$$v='+(g?
+"eso(v)":"v")+";});\n}\n s="+(g?"eso(s.$$v)":"s.$$v")+"\n}\n")});k+="return s;";h=new Function("s","l","pw","eso","fe",k);h.toString=Z(k);if(l||a.unwrapPromises)h=Be(h,c)}"hasOwnProperty"!==b&&(e[b]=h);return h}function Yd(){var b={},a={},c={csp:!1,unwrapPromises:!1,logPromiseWarnings:!0,expensiveChecks:!1};this.unwrapPromises=function(a){return G(a)?(c.unwrapPromises=!!a,this):c.unwrapPromises};this.logPromiseWarnings=function(a){return G(a)?(c.logPromiseWarnings=a,this):c.logPromiseWarnings};this.$get=
+["$filter","$sniffer","$log",function(d,e,f){c.csp=e.csp;var g={csp:c.csp,unwrapPromises:c.unwrapPromises,logPromiseWarnings:c.logPromiseWarnings,expensiveChecks:!0};xa=function(a){c.logPromiseWarnings&&!Fc.hasOwnProperty(a)&&(Fc[a]=!0,f.warn("[$parse] Promise found in the expression `"+a+"`. Automatic unwrapping of promises in Angular expressions is deprecated."))};return function(e,f){var l;switch(typeof e){case "string":var m=f?a:b;if(m.hasOwnProperty(e))return m[e];l=f?g:c;var n=new Tb(l);l=(new fb(n,
+d,l)).parse(e);"hasOwnProperty"!==e&&(m[e]=l);return l;case "function":return e;default:return B}}}]}function $d(){this.$get=["$rootScope","$exceptionHandler",function(b,a){return Ee(function(a){b.$evalAsync(a)},a)}]}function Ee(b,a){function c(a){return a}function d(a){return g(a)}var e=function(){var g=[],l,m;return m={resolve:function(a){if(g){var c=g;g=v;l=f(a);c.length&&b(function(){for(var a,b=0,d=c.length;b<d;b++)a=c[b],l.then(a[0],a[1],a[2])})}},reject:function(a){m.resolve(h(a))},notify:function(a){if(g){var c=
+g;g.length&&b(function(){for(var b,d=0,e=c.length;d<e;d++)b=c[d],b[2](a)})}},promise:{then:function(b,f,h){var m=e(),K=function(d){try{m.resolve((O(b)?b:c)(d))}catch(e){m.reject(e),a(e)}},w=function(b){try{m.resolve((O(f)?f:d)(b))}catch(c){m.reject(c),a(c)}},t=function(b){try{m.notify((O(h)?h:c)(b))}catch(d){a(d)}};g?g.push([K,w,t]):l.then(K,w,t);return m.promise},"catch":function(a){return this.then(null,a)},"finally":function(a){function b(a,c){var d=e();c?d.resolve(a):d.reject(a);return d.promise}
+function d(e,f){var g=null;try{g=(a||c)()}catch(h){return b(h,!1)}return g&&O(g.then)?g.then(function(){return b(e,f)},function(a){return b(a,!1)}):b(e,f)}return this.then(function(a){return d(a,!0)},function(a){return d(a,!1)})}}}},f=function(a){return a&&O(a.then)?a:{then:function(c){var d=e();b(function(){d.resolve(c(a))});return d.promise}}},g=function(a){var b=e();b.reject(a);return b.promise},h=function(c){return{then:function(f,g){var h=e();b(function(){try{h.resolve((O(g)?g:d)(c))}catch(b){h.reject(b),
+a(b)}});return h.promise}}};return{defer:e,reject:g,when:function(h,l,m,n){var q=e(),p,s=function(b){try{return(O(l)?l:c)(b)}catch(d){return a(d),g(d)}},K=function(b){try{return(O(m)?m:d)(b)}catch(c){return a(c),g(c)}},w=function(b){try{return(O(n)?n:c)(b)}catch(d){a(d)}};b(function(){f(h).then(function(a){p||(p=!0,q.resolve(f(a).then(s,K,w)))},function(a){p||(p=!0,q.resolve(K(a)))},function(a){p||q.notify(w(a))})});return q.promise},all:function(a){var b=e(),c=0,d=M(a)?[]:{};r(a,function(a,e){c++;
+f(a).then(function(a){d.hasOwnProperty(e)||(d[e]=a,--c||b.resolve(d))},function(a){d.hasOwnProperty(e)||b.reject(a)})});0===c&&b.resolve(d);return b.promise}}}function ge(){this.$get=["$window","$timeout",function(b,a){var c=b.requestAnimationFrame||b.webkitRequestAnimationFrame||b.mozRequestAnimationFrame,d=b.cancelAnimationFrame||b.webkitCancelAnimationFrame||b.mozCancelAnimationFrame||b.webkitCancelRequestAnimationFrame,e=!!c,f=e?function(a){var b=c(a);return function(){d(b)}}:function(b){var c=
+a(b,16.66,!1);return function(){a.cancel(c)}};f.supported=e;return f}]}function Zd(){var b=10,a=z("$rootScope"),c=null;this.digestTtl=function(a){arguments.length&&(b=a);return b};this.$get=["$injector","$exceptionHandler","$parse","$browser",function(d,e,f,g){function h(){this.$id=hb();this.$$phase=this.$parent=this.$$watchers=this.$$nextSibling=this.$$prevSibling=this.$$childHead=this.$$childTail=null;this["this"]=this.$root=this;this.$$destroyed=!1;this.$$asyncQueue=[];this.$$postDigestQueue=[];
+this.$$listeners={};this.$$listenerCount={};this.$$isolateBindings={}}function k(b){if(q.$$phase)throw a("inprog",q.$$phase);q.$$phase=b}function l(a,b){var c=f(a);Xa(c,b);return c}function m(a,b,c){do a.$$listenerCount[c]-=b,0===a.$$listenerCount[c]&&delete a.$$listenerCount[c];while(a=a.$parent)}function n(){}h.prototype={constructor:h,$new:function(a){a?(a=new h,a.$root=this.$root,a.$$asyncQueue=this.$$asyncQueue,a.$$postDigestQueue=this.$$postDigestQueue):(this.$$childScopeClass||(this.$$childScopeClass=
+function(){this.$$watchers=this.$$nextSibling=this.$$childHead=this.$$childTail=null;this.$$listeners={};this.$$listenerCount={};this.$id=hb();this.$$childScopeClass=null},this.$$childScopeClass.prototype=this),a=new this.$$childScopeClass);a["this"]=a;a.$parent=this;a.$$prevSibling=this.$$childTail;this.$$childHead?this.$$childTail=this.$$childTail.$$nextSibling=a:this.$$childHead=this.$$childTail=a;return a},$watch:function(a,b,d){var e=l(a,"watch"),f=this.$$watchers,g={fn:b,last:n,get:e,exp:a,
+eq:!!d};c=null;if(!O(b)){var h=l(b||B,"listener");g.fn=function(a,b,c){h(c)}}if("string"==typeof a&&e.constant){var k=g.fn;g.fn=function(a,b,c){k.call(this,a,b,c);Ta(f,g)}}f||(f=this.$$watchers=[]);f.unshift(g);return function(){Ta(f,g);c=null}},$watchCollection:function(a,b){var c=this,d,e,g,h=1<b.length,k=0,l=f(a),m=[],n={},q=!0,r=0;return this.$watch(function(){d=l(c);var a,b,f;if(T(d))if(Ra(d))for(e!==m&&(e=m,r=e.length=0,k++),a=d.length,r!==a&&(k++,e.length=r=a),b=0;b<a;b++)f=e[b]!==e[b]&&d[b]!==
+d[b],f||e[b]===d[b]||(k++,e[b]=d[b]);else{e!==n&&(e=n={},r=0,k++);a=0;for(b in d)d.hasOwnProperty(b)&&(a++,e.hasOwnProperty(b)?(f=e[b]!==e[b]&&d[b]!==d[b],f||e[b]===d[b]||(k++,e[b]=d[b])):(r++,e[b]=d[b],k++));if(r>a)for(b in k++,e)e.hasOwnProperty(b)&&!d.hasOwnProperty(b)&&(r--,delete e[b])}else e!==d&&(e=d,k++);return k},function(){q?(q=!1,b(d,d,c)):b(d,g,c);if(h)if(T(d))if(Ra(d)){g=Array(d.length);for(var a=0;a<d.length;a++)g[a]=d[a]}else for(a in g={},d)kb.call(d,a)&&(g[a]=d[a]);else g=d})},$digest:function(){var d,
+f,h,l,m=this.$$asyncQueue,r=this.$$postDigestQueue,L,y,v=b,P,N=[],u,Q,C;k("$digest");g.$$checkUrlChange();c=null;do{y=!1;for(P=this;m.length;){try{C=m.shift(),C.scope.$eval(C.expression)}catch(J){q.$$phase=null,e(J)}c=null}a:do{if(l=P.$$watchers)for(L=l.length;L--;)try{if(d=l[L])if((f=d.get(P))!==(h=d.last)&&!(d.eq?Ba(f,h):"number"===typeof f&&"number"===typeof h&&isNaN(f)&&isNaN(h)))y=!0,c=d,d.last=d.eq?Ia(f,null):f,d.fn(f,h===n?f:h,P),5>v&&(u=4-v,N[u]||(N[u]=[]),Q=O(d.exp)?"fn: "+(d.exp.name||d.exp.toString()):
+d.exp,Q+="; newVal: "+oa(f)+"; oldVal: "+oa(h),N[u].push(Q));else if(d===c){y=!1;break a}}catch(D){q.$$phase=null,e(D)}if(!(l=P.$$childHead||P!==this&&P.$$nextSibling))for(;P!==this&&!(l=P.$$nextSibling);)P=P.$parent}while(P=l);if((y||m.length)&&!v--)throw q.$$phase=null,a("infdig",b,oa(N));}while(y||m.length);for(q.$$phase=null;r.length;)try{r.shift()()}catch(G){e(G)}},$destroy:function(){if(!this.$$destroyed){var a=this.$parent;this.$broadcast("$destroy");this.$$destroyed=!0;this!==q&&(r(this.$$listenerCount,
+Ab(null,m,this)),a.$$childHead==this&&(a.$$childHead=this.$$nextSibling),a.$$childTail==this&&(a.$$childTail=this.$$prevSibling),this.$$prevSibling&&(this.$$prevSibling.$$nextSibling=this.$$nextSibling),this.$$nextSibling&&(this.$$nextSibling.$$prevSibling=this.$$prevSibling),this.$parent=this.$$nextSibling=this.$$prevSibling=this.$$childHead=this.$$childTail=this.$root=null,this.$$listeners={},this.$$watchers=this.$$asyncQueue=this.$$postDigestQueue=[],this.$destroy=this.$digest=this.$apply=B,this.$on=
+this.$watch=function(){return B})}},$eval:function(a,b){return f(a)(this,b)},$evalAsync:function(a){q.$$phase||q.$$asyncQueue.length||g.defer(function(){q.$$asyncQueue.length&&q.$digest()});this.$$asyncQueue.push({scope:this,expression:a})},$$postDigest:function(a){this.$$postDigestQueue.push(a)},$apply:function(a){try{return k("$apply"),this.$eval(a)}catch(b){e(b)}finally{q.$$phase=null;try{q.$digest()}catch(c){throw e(c),c;}}},$on:function(a,b){var c=this.$$listeners[a];c||(this.$$listeners[a]=
+c=[]);c.push(b);var d=this;do d.$$listenerCount[a]||(d.$$listenerCount[a]=0),d.$$listenerCount[a]++;while(d=d.$parent);var e=this;return function(){var d=Sa(c,b);-1!==d&&(c[d]=null,m(e,1,a))}},$emit:function(a,b){var c=[],d,f=this,g=!1,h={name:a,targetScope:f,stopPropagation:function(){g=!0},preventDefault:function(){h.defaultPrevented=!0},defaultPrevented:!1},k=[h].concat(va.call(arguments,1)),l,m;do{d=f.$$listeners[a]||c;h.currentScope=f;l=0;for(m=d.length;l<m;l++)if(d[l])try{d[l].apply(null,k)}catch(n){e(n)}else d.splice(l,
+1),l--,m--;if(g)break;f=f.$parent}while(f);return h},$broadcast:function(a,b){for(var c=this,d=this,f={name:a,targetScope:this,preventDefault:function(){f.defaultPrevented=!0},defaultPrevented:!1},g=[f].concat(va.call(arguments,1)),h,k;c=d;){f.currentScope=c;d=c.$$listeners[a]||[];h=0;for(k=d.length;h<k;h++)if(d[h])try{d[h].apply(null,g)}catch(l){e(l)}else d.splice(h,1),h--,k--;if(!(d=c.$$listenerCount[a]&&c.$$childHead||c!==this&&c.$$nextSibling))for(;c!==this&&!(d=c.$$nextSibling);)c=c.$parent}return f}};
+var q=new h;return q}]}function cd(){var b=/^\s*(https?|ftp|mailto|tel|file):/,a=/^\s*((https?|ftp|file):|data:image\/)/;this.aHrefSanitizationWhitelist=function(a){return G(a)?(b=a,this):b};this.imgSrcSanitizationWhitelist=function(b){return G(b)?(a=b,this):a};this.$get=function(){return function(c,d){var e=d?a:b,f;if(!u||8<=u)if(f=wa(c).href,""!==f&&!f.match(e))return"unsafe:"+f;return c}}}function Fe(b){if("self"===b)return b;if(E(b)){if(-1<b.indexOf("***"))throw ya("iwcard",b);b=b.replace(/([-()\[\]{}+?*.$\^|,:#<!\\])/g,
+"\\$1").replace(/\x08/g,"\\x08").replace("\\*\\*",".*").replace("\\*","[^:/.?&;]*");return RegExp("^"+b+"$")}if(jb(b))return RegExp("^"+b.source+"$");throw ya("imatcher");}function Gc(b){var a=[];G(b)&&r(b,function(b){a.push(Fe(b))});return a}function be(){this.SCE_CONTEXTS=fa;var b=["self"],a=[];this.resourceUrlWhitelist=function(a){arguments.length&&(b=Gc(a));return b};this.resourceUrlBlacklist=function(b){arguments.length&&(a=Gc(b));return a};this.$get=["$injector",function(c){function d(a){var b=
+function(a){this.$$unwrapTrustedValue=function(){return a}};a&&(b.prototype=new a);b.prototype.valueOf=function(){return this.$$unwrapTrustedValue()};b.prototype.toString=function(){return this.$$unwrapTrustedValue().toString()};return b}var e=function(a){throw ya("unsafe");};c.has("$sanitize")&&(e=c.get("$sanitize"));var f=d(),g={};g[fa.HTML]=d(f);g[fa.CSS]=d(f);g[fa.URL]=d(f);g[fa.JS]=d(f);g[fa.RESOURCE_URL]=d(g[fa.URL]);return{trustAs:function(a,b){var c=g.hasOwnProperty(a)?g[a]:null;if(!c)throw ya("icontext",
+a,b);if(null===b||b===v||""===b)return b;if("string"!==typeof b)throw ya("itype",a);return new c(b)},getTrusted:function(c,d){if(null===d||d===v||""===d)return d;var f=g.hasOwnProperty(c)?g[c]:null;if(f&&d instanceof f)return d.$$unwrapTrustedValue();if(c===fa.RESOURCE_URL){var f=wa(d.toString()),m,n,q=!1;m=0;for(n=b.length;m<n;m++)if("self"===b[m]?Ob(f):b[m].exec(f.href)){q=!0;break}if(q)for(m=0,n=a.length;m<n;m++)if("self"===a[m]?Ob(f):a[m].exec(f.href)){q=!1;break}if(q)return d;throw ya("insecurl",
+d.toString());}if(c===fa.HTML)return e(d);throw ya("unsafe");},valueOf:function(a){return a instanceof f?a.$$unwrapTrustedValue():a}}}]}function ae(){var b=!0;this.enabled=function(a){arguments.length&&(b=!!a);return b};this.$get=["$parse","$sniffer","$sceDelegate",function(a,c,d){if(b&&c.msie&&8>c.msieDocumentMode)throw ya("iequirks");var e=ha(fa);e.isEnabled=function(){return b};e.trustAs=d.trustAs;e.getTrusted=d.getTrusted;e.valueOf=d.valueOf;b||(e.trustAs=e.getTrusted=function(a,b){return b},
+e.valueOf=ga);e.parseAs=function(b,c){var d=a(c);return d.literal&&d.constant?d:function(a,c){return e.getTrusted(b,d(a,c))}};var f=e.parseAs,g=e.getTrusted,h=e.trustAs;r(fa,function(a,b){var c=A(b);e[$a("parse_as_"+c)]=function(b){return f(a,b)};e[$a("get_trusted_"+c)]=function(b){return g(a,b)};e[$a("trust_as_"+c)]=function(b){return h(a,b)}});return e}]}function ce(){this.$get=["$window","$document",function(b,a){var c={},d=U((/android (\d+)/.exec(A((b.navigator||{}).userAgent))||[])[1]),e=/Boxee/i.test((b.navigator||
+{}).userAgent),f=a[0]||{},g=f.documentMode,h,k=/^(Moz|webkit|O|ms)(?=[A-Z])/,l=f.body&&f.body.style,m=!1,n=!1;if(l){for(var q in l)if(m=k.exec(q)){h=m[0];h=h.substr(0,1).toUpperCase()+h.substr(1);break}h||(h="WebkitOpacity"in l&&"webkit");m=!!("transition"in l||h+"Transition"in l);n=!!("animation"in l||h+"Animation"in l);!d||m&&n||(m=E(f.body.style.webkitTransition),n=E(f.body.style.webkitAnimation))}return{history:!(!b.history||!b.history.pushState||4>d||e),hashchange:"onhashchange"in b&&(!g||7<
+g),hasEvent:function(a){if("input"==a&&9==u)return!1;if(H(c[a])){var b=f.createElement("div");c[a]="on"+a in b}return c[a]},csp:Ya(),vendorPrefix:h,transitions:m,animations:n,android:d,msie:u,msieDocumentMode:g}}]}function ee(){this.$get=["$rootScope","$browser","$q","$exceptionHandler",function(b,a,c,d){function e(e,h,k){var l=c.defer(),m=l.promise,n=G(k)&&!k;h=a.defer(function(){try{l.resolve(e())}catch(a){l.reject(a),d(a)}finally{delete f[m.$$timeoutId]}n||b.$apply()},h);m.$$timeoutId=h;f[h]=l;
+return m}var f={};e.cancel=function(b){return b&&b.$$timeoutId in f?(f[b.$$timeoutId].reject("canceled"),delete f[b.$$timeoutId],a.defer.cancel(b.$$timeoutId)):!1};return e}]}function wa(b,a){var c=b;u&&(X.setAttribute("href",c),c=X.href);X.setAttribute("href",c);return{href:X.href,protocol:X.protocol?X.protocol.replace(/:$/,""):"",host:X.host,search:X.search?X.search.replace(/^\?/,""):"",hash:X.hash?X.hash.replace(/^#/,""):"",hostname:X.hostname,port:X.port,pathname:"/"===X.pathname.charAt(0)?X.pathname:
+"/"+X.pathname}}function Ob(b){b=E(b)?wa(b):b;return b.protocol===Hc.protocol&&b.host===Hc.host}function fe(){this.$get=Z(V)}function jc(b){function a(d,e){if(T(d)){var f={};r(d,function(b,c){f[c]=a(c,b)});return f}return b.factory(d+c,e)}var c="Filter";this.register=a;this.$get=["$injector",function(a){return function(b){return a.get(b+c)}}];a("currency",Ic);a("date",Jc);a("filter",Ge);a("json",He);a("limitTo",Ie);a("lowercase",Je);a("number",Kc);a("orderBy",Lc);a("uppercase",Ke)}function Ge(){return function(b,
+a,c){if(!M(b))return b;var d=typeof c,e=[];e.check=function(a){for(var b=0;b<e.length;b++)if(!e[b](a))return!1;return!0};"function"!==d&&(c="boolean"===d&&c?function(a,b){return Wa.equals(a,b)}:function(a,b){if(a&&b&&"object"===typeof a&&"object"===typeof b){for(var d in a)if("$"!==d.charAt(0)&&kb.call(a,d)&&c(a[d],b[d]))return!0;return!1}b=(""+b).toLowerCase();return-1<(""+a).toLowerCase().indexOf(b)});var f=function(a,b){if("string"===typeof b&&"!"===b.charAt(0))return!f(a,b.substr(1));switch(typeof a){case "boolean":case "number":case "string":return c(a,
+b);case "object":switch(typeof b){case "object":return c(a,b);default:for(var d in a)if("$"!==d.charAt(0)&&f(a[d],b))return!0}return!1;case "array":for(d=0;d<a.length;d++)if(f(a[d],b))return!0;return!1;default:return!1}};switch(typeof a){case "boolean":case "number":case "string":a={$:a};case "object":for(var g in a)(function(b){"undefined"!==typeof a[b]&&e.push(function(c){return f("$"==b?c:c&&c[b],a[b])})})(g);break;case "function":e.push(a);break;default:return b}d=[];for(g=0;g<b.length;g++){var h=
+b[g];e.check(h)&&d.push(h)}return d}}function Ic(b){var a=b.NUMBER_FORMATS;return function(b,d){H(d)&&(d=a.CURRENCY_SYM);return Mc(b,a.PATTERNS[1],a.GROUP_SEP,a.DECIMAL_SEP,2).replace(/\u00A4/g,d)}}function Kc(b){var a=b.NUMBER_FORMATS;return function(b,d){return Mc(b,a.PATTERNS[0],a.GROUP_SEP,a.DECIMAL_SEP,d)}}function Mc(b,a,c,d,e){if(null==b||!isFinite(b)||T(b))return"";var f=0>b;b=Math.abs(b);var g=b+"",h="",k=[],l=!1;if(-1!==g.indexOf("e")){var m=g.match(/([\d\.]+)e(-?)(\d+)/);m&&"-"==m[2]&&
+m[3]>e+1?(g="0",b=0):(h=g,l=!0)}if(l)0<e&&(-1<b&&1>b)&&(h=b.toFixed(e));else{g=(g.split(Nc)[1]||"").length;H(e)&&(e=Math.min(Math.max(a.minFrac,g),a.maxFrac));b=+(Math.round(+(b.toString()+"e"+e)).toString()+"e"+-e);0===b&&(f=!1);b=(""+b).split(Nc);g=b[0];b=b[1]||"";var m=0,n=a.lgSize,q=a.gSize;if(g.length>=n+q)for(m=g.length-n,l=0;l<m;l++)0===(m-l)%q&&0!==l&&(h+=c),h+=g.charAt(l);for(l=m;l<g.length;l++)0===(g.length-l)%n&&0!==l&&(h+=c),h+=g.charAt(l);for(;b.length<e;)b+="0";e&&"0"!==e&&(h+=d+b.substr(0,
+e))}k.push(f?a.negPre:a.posPre);k.push(h);k.push(f?a.negSuf:a.posSuf);return k.join("")}function Ub(b,a,c){var d="";0>b&&(d="-",b=-b);for(b=""+b;b.length<a;)b="0"+b;c&&(b=b.substr(b.length-a));return d+b}function Y(b,a,c,d){c=c||0;return function(e){e=e["get"+b]();if(0<c||e>-c)e+=c;0===e&&-12==c&&(e=12);return Ub(e,a,d)}}function ub(b,a){return function(c,d){var e=c["get"+b](),f=Ja(a?"SHORT"+b:b);return d[f][e]}}function Jc(b){function a(a){var b;if(b=a.match(c)){a=new Date(0);var f=0,g=0,h=b[8]?
+a.setUTCFullYear:a.setFullYear,k=b[8]?a.setUTCHours:a.setHours;b[9]&&(f=U(b[9]+b[10]),g=U(b[9]+b[11]));h.call(a,U(b[1]),U(b[2])-1,U(b[3]));f=U(b[4]||0)-f;g=U(b[5]||0)-g;h=U(b[6]||0);b=Math.round(1E3*parseFloat("0."+(b[7]||0)));k.call(a,f,g,h,b)}return a}var c=/^(\d{4})-?(\d\d)-?(\d\d)(?:T(\d\d)(?::?(\d\d)(?::?(\d\d)(?:\.(\d+))?)?)?(Z|([+-])(\d\d):?(\d\d))?)?$/;return function(c,e){var f="",g=[],h,k;e=e||"mediumDate";e=b.DATETIME_FORMATS[e]||e;E(c)&&(c=Le.test(c)?U(c):a(c));ib(c)&&(c=new Date(c));
+if(!ua(c))return c;for(;e;)(k=Me.exec(e))?(g=g.concat(va.call(k,1)),e=g.pop()):(g.push(e),e=null);r(g,function(a){h=Ne[a];f+=h?h(c,b.DATETIME_FORMATS):a.replace(/(^'|'$)/g,"").replace(/''/g,"'")});return f}}function He(){return function(b){return oa(b,!0)}}function Ie(){return function(b,a){return M(b)||E(b)?(a=Infinity===Math.abs(Number(a))?Number(a):U(a))?0<a?b.slice(0,a):b.slice(a):E(b)?"":[]:b}}function Lc(b){return function(a,c,d){function e(a,b){return Va(b)?function(b,c){return a(c,b)}:a}function f(a,
+b){var c=typeof a,d=typeof b;return c==d?(ua(a)&&ua(b)&&(a=a.valueOf(),b=b.valueOf()),"string"==c&&(a=a.toLowerCase(),b=b.toLowerCase()),a===b?0:a<b?-1:1):c<d?-1:1}if(!Ra(a))return a;c=M(c)?c:[c];0===c.length&&(c=["+"]);c=Vc(c,function(a){var c=!1,d=a||ga;if(E(a)){if("+"==a.charAt(0)||"-"==a.charAt(0))c="-"==a.charAt(0),a=a.substring(1);if(""===a)return e(function(a,b){return f(a,b)},c);d=b(a);if(d.constant){var l=d();return e(function(a,b){return f(a[l],b[l])},c)}}return e(function(a,b){return f(d(a),
+d(b))},c)});return va.call(a).sort(e(function(a,b){for(var d=0;d<c.length;d++){var e=c[d](a,b);if(0!==e)return e}return 0},d))}}function za(b){O(b)&&(b={link:b});b.restrict=b.restrict||"AC";return Z(b)}function Oc(b,a,c,d){function e(a,c){c=c?"-"+mb(c,"-"):"";d.setClass(b,(a?vb:wb)+c,(a?wb:vb)+c)}var f=this,g=b.parent().controller("form")||xb,h=0,k=f.$error={},l=[];f.$name=a.name||a.ngForm;f.$dirty=!1;f.$pristine=!0;f.$valid=!0;f.$invalid=!1;g.$addControl(f);b.addClass(Qa);e(!0);f.$addControl=function(a){Da(a.$name,
+"input");l.push(a);a.$name&&(f[a.$name]=a)};f.$removeControl=function(a){a.$name&&f[a.$name]===a&&delete f[a.$name];r(k,function(b,c){f.$setValidity(c,!0,a)});Ta(l,a)};f.$setValidity=function(a,b,c){var d=k[a];if(b)d&&(Ta(d,c),d.length||(h--,h||(e(b),f.$valid=!0,f.$invalid=!1),k[a]=!1,e(!0,a),g.$setValidity(a,!0,f)));else{h||e(b);if(d){if(-1!=Sa(d,c))return}else k[a]=d=[],h++,e(!1,a),g.$setValidity(a,!1,f);d.push(c);f.$valid=!1;f.$invalid=!0}};f.$setDirty=function(){d.removeClass(b,Qa);d.addClass(b,
+yb);f.$dirty=!0;f.$pristine=!1;g.$setDirty()};f.$setPristine=function(){d.removeClass(b,yb);d.addClass(b,Qa);f.$dirty=!1;f.$pristine=!0;r(l,function(a){a.$setPristine()})}}function ta(b,a,c,d){b.$setValidity(a,c);return c?d:v}function Pc(b,a){var c,d;if(a)for(c=0;c<a.length;++c)if(d=a[c],b[d])return!0;return!1}function Oe(b,a,c,d,e){T(e)&&(b.$$hasNativeValidators=!0,b.$parsers.push(function(f){if(b.$error[a]||Pc(e,d)||!Pc(e,c))return f;b.$setValidity(a,!1)}))}function zb(b,a,c,d,e,f){var g=a.prop(Pe),
+h=a[0].placeholder,k={},l=A(a[0].type);d.$$validityState=g;if(!e.android){var m=!1;a.on("compositionstart",function(a){m=!0});a.on("compositionend",function(){m=!1;n()})}var n=function(e){if(!m){var f=a.val();if(u&&"input"===(e||k).type&&a[0].placeholder!==h)h=a[0].placeholder;else if("password"!==l&&Va(c.ngTrim||"T")&&(f=$(f)),e=g&&d.$$hasNativeValidators,d.$viewValue!==f||""===f&&e)b.$root.$$phase?d.$setViewValue(f):b.$apply(function(){d.$setViewValue(f)})}};if(e.hasEvent("input"))a.on("input",
+n);else{var q,p=function(){q||(q=f.defer(function(){n();q=null}))};a.on("keydown",function(a){a=a.keyCode;91===a||(15<a&&19>a||37<=a&&40>=a)||p()});if(e.hasEvent("paste"))a.on("paste cut",p)}a.on("change",n);d.$render=function(){a.val(d.$isEmpty(d.$viewValue)?"":d.$viewValue)};var s=c.ngPattern;s&&((e=s.match(/^\/(.*)\/([gim]*)$/))?(s=RegExp(e[1],e[2]),e=function(a){return ta(d,"pattern",d.$isEmpty(a)||s.test(a),a)}):e=function(c){var e=b.$eval(s);if(!e||!e.test)throw z("ngPattern")("noregexp",s,
+e,ia(a));return ta(d,"pattern",d.$isEmpty(c)||e.test(c),c)},d.$formatters.push(e),d.$parsers.push(e));if(c.ngMinlength){var r=U(c.ngMinlength);e=function(a){return ta(d,"minlength",d.$isEmpty(a)||a.length>=r,a)};d.$parsers.push(e);d.$formatters.push(e)}if(c.ngMaxlength){var w=U(c.ngMaxlength);e=function(a){return ta(d,"maxlength",d.$isEmpty(a)||a.length<=w,a)};d.$parsers.push(e);d.$formatters.push(e)}}function Vb(b,a){b="ngClass"+b;return["$animate",function(c){function d(a,b){var c=[],d=0;a:for(;d<
+a.length;d++){for(var e=a[d],m=0;m<b.length;m++)if(e==b[m])continue a;c.push(e)}return c}function e(a){if(!M(a)){if(E(a))return a.split(" ");if(T(a)){var b=[];r(a,function(a,c){a&&(b=b.concat(c.split(" ")))});return b}}return a}return{restrict:"AC",link:function(f,g,h){function k(a,b){var c=g.data("$classCounts")||{},d=[];r(a,function(a){if(0<b||c[a])c[a]=(c[a]||0)+b,c[a]===+(0<b)&&d.push(a)});g.data("$classCounts",c);return d.join(" ")}function l(b){if(!0===a||f.$index%2===a){var l=e(b||[]);if(!m){var p=
+k(l,1);h.$addClass(p)}else if(!Ba(b,m)){var s=e(m),p=d(l,s),l=d(s,l),l=k(l,-1),p=k(p,1);0===p.length?c.removeClass(g,l):0===l.length?c.addClass(g,p):c.setClass(g,p,l)}}m=ha(b)}var m;f.$watch(h[b],l,!0);h.$observe("class",function(a){l(f.$eval(h[b]))});"ngClass"!==b&&f.$watch("$index",function(c,d){var g=c&1;if(g!==(d&1)){var l=e(f.$eval(h[b]));g===a?(g=k(l,1),h.$addClass(g)):(g=k(l,-1),h.$removeClass(g))}})}}}]}var Pe="validity",A=function(b){return E(b)?b.toLowerCase():b},kb=Object.prototype.hasOwnProperty,
+Ja=function(b){return E(b)?b.toUpperCase():b},u,D,Ea,va=[].slice,Qe=[].push,Aa=Object.prototype.toString,Ua=z("ng"),Wa=V.angular||(V.angular={}),Za,Na,na=["0","0","0"];u=U((/msie (\d+)/.exec(A(navigator.userAgent))||[])[1]);isNaN(u)&&(u=U((/trident\/.*; rv:(\d+)/.exec(A(navigator.userAgent))||[])[1]));B.$inject=[];ga.$inject=[];var M=function(){return O(Array.isArray)?Array.isArray:function(b){return"[object Array]"===Aa.call(b)}}(),$=function(){return String.prototype.trim?function(b){return E(b)?
+b.trim():b}:function(b){return E(b)?b.replace(/^\s\s*/,"").replace(/\s\s*$/,""):b}}();Na=9>u?function(b){b=b.nodeName?b:b[0];return b.scopeName&&"HTML"!=b.scopeName?Ja(b.scopeName+":"+b.nodeName):b.nodeName}:function(b){return b.nodeName?b.nodeName:b[0].nodeName};var Ya=function(){if(G(Ya.isActive_))return Ya.isActive_;var b=!(!W.querySelector("[ng-csp]")&&!W.querySelector("[data-ng-csp]"));if(!b)try{new Function("")}catch(a){b=!0}return Ya.isActive_=b},Yc=/[A-Z]/g,ad={full:"1.2.32",major:1,minor:2,
+dot:32,codeName:"alternation-intention"};S.expando="ng339";var bb=S.cache={},ne=1,rb=V.document.addEventListener?function(b,a,c){b.addEventListener(a,c,!1)}:function(b,a,c){b.attachEvent("on"+a,c)},ab=V.document.removeEventListener?function(b,a,c){b.removeEventListener(a,c,!1)}:function(b,a,c){b.detachEvent("on"+a,c)};S._data=function(b){return this.cache[b[this.expando]]||{}};var ie=/([\:\-\_]+(.))/g,je=/^moz([A-Z])/,Gb=z("jqLite"),ke=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,Hb=/<|&#?\w+;/,le=/<([\w:]+)/,me=
+/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,ca={option:[1,'<select multiple="multiple">',"</select>"],thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};ca.optgroup=ca.option;ca.tbody=ca.tfoot=ca.colgroup=ca.caption=ca.thead;ca.th=ca.td;var Ma=S.prototype={ready:function(b){function a(){c||(c=!0,b())}var c=!1;"complete"===W.readyState?
+setTimeout(a):(this.on("DOMContentLoaded",a),S(V).on("load",a))},toString:function(){var b=[];r(this,function(a){b.push(""+a)});return"["+b.join(", ")+"]"},eq:function(b){return 0<=b?D(this[b]):D(this[this.length+b])},length:0,push:Qe,sort:[].sort,splice:[].splice},qb={};r("multiple selected checked disabled readOnly required open".split(" "),function(b){qb[A(b)]=b});var oc={};r("input select option textarea button form details".split(" "),function(b){oc[Ja(b)]=!0});r({data:Lb,removeData:Kb},function(b,
+a){S[a]=b});r({data:Lb,inheritedData:pb,scope:function(b){return D.data(b,"$scope")||pb(b.parentNode||b,["$isolateScope","$scope"])},isolateScope:function(b){return D.data(b,"$isolateScope")||D.data(b,"$isolateScopeNoTemplate")},controller:lc,injector:function(b){return pb(b,"$injector")},removeAttr:function(b,a){b.removeAttribute(a)},hasClass:Mb,css:function(b,a,c){a=$a(a);if(G(c))b.style[a]=c;else{var d;8>=u&&(d=b.currentStyle&&b.currentStyle[a],""===d&&(d="auto"));d=d||b.style[a];8>=u&&(d=""===
+d?v:d);return d}},attr:function(b,a,c){var d=A(a);if(qb[d])if(G(c))c?(b[a]=!0,b.setAttribute(a,d)):(b[a]=!1,b.removeAttribute(d));else return b[a]||(b.attributes.getNamedItem(a)||B).specified?d:v;else if(G(c))b.setAttribute(a,c);else if(b.getAttribute)return b=b.getAttribute(a,2),null===b?v:b},prop:function(b,a,c){if(G(c))b[a]=c;else return b[a]},text:function(){function b(b,d){var e=a[b.nodeType];if(H(d))return e?b[e]:"";b[e]=d}var a=[];9>u?(a[1]="innerText",a[3]="nodeValue"):a[1]=a[3]="textContent";
+b.$dv="";return b}(),val:function(b,a){if(H(a)){if("SELECT"===Na(b)&&b.multiple){var c=[];r(b.options,function(a){a.selected&&c.push(a.value||a.text)});return 0===c.length?null:c}return b.value}b.value=a},html:function(b,a){if(H(a))return b.innerHTML;for(var c=0,d=b.childNodes;c<d.length;c++)Ka(d[c]);b.innerHTML=a},empty:mc},function(b,a){S.prototype[a]=function(a,d){var e,f,g=this.length;if(b!==mc&&(2==b.length&&b!==Mb&&b!==lc?a:d)===v){if(T(a)){for(e=0;e<g;e++)if(b===Lb)b(this[e],a);else for(f in a)b(this[e],
+f,a[f]);return this}e=b.$dv;g=e===v?Math.min(g,1):g;for(f=0;f<g;f++){var h=b(this[f],a,d);e=e?e+h:h}return e}for(e=0;e<g;e++)b(this[e],a,d);return this}});r({removeData:Kb,dealoc:Ka,on:function a(c,d,e,f){if(G(f))throw Gb("onargs");var g=pa(c,"events"),h=pa(c,"handle");g||pa(c,"events",g={});h||pa(c,"handle",h=oe(c,g));r(d.split(" "),function(d){var f=g[d];if(!f){if("mouseenter"==d||"mouseleave"==d){var m=W.body.contains||W.body.compareDocumentPosition?function(a,c){var d=9===a.nodeType?a.documentElement:
+a,e=c&&c.parentNode;return a===e||!!(e&&1===e.nodeType&&(d.contains?d.contains(e):a.compareDocumentPosition&&a.compareDocumentPosition(e)&16))}:function(a,c){if(c)for(;c=c.parentNode;)if(c===a)return!0;return!1};g[d]=[];a(c,{mouseleave:"mouseout",mouseenter:"mouseover"}[d],function(a){var c=a.relatedTarget;c&&(c===this||m(this,c))||h(a,d)})}else rb(c,d,h),g[d]=[];f=g[d]}f.push(e)})},off:kc,one:function(a,c,d){a=D(a);a.on(c,function f(){a.off(c,d);a.off(c,f)});a.on(c,d)},replaceWith:function(a,c){var d,
+e=a.parentNode;Ka(a);r(new S(c),function(c){d?e.insertBefore(c,d.nextSibling):e.replaceChild(c,a);d=c})},children:function(a){var c=[];r(a.childNodes,function(a){1===a.nodeType&&c.push(a)});return c},contents:function(a){return a.contentDocument||a.childNodes||[]},append:function(a,c){r(new S(c),function(c){1!==a.nodeType&&11!==a.nodeType||a.appendChild(c)})},prepend:function(a,c){if(1===a.nodeType){var d=a.firstChild;r(new S(c),function(c){a.insertBefore(c,d)})}},wrap:function(a,c){c=D(c)[0];var d=
+a.parentNode;d&&d.replaceChild(c,a);c.appendChild(a)},remove:function(a){Ka(a);var c=a.parentNode;c&&c.removeChild(a)},after:function(a,c){var d=a,e=a.parentNode;r(new S(c),function(a){e.insertBefore(a,d.nextSibling);d=a})},addClass:ob,removeClass:nb,toggleClass:function(a,c,d){c&&r(c.split(" "),function(c){var f=d;H(f)&&(f=!Mb(a,c));(f?ob:nb)(a,c)})},parent:function(a){return(a=a.parentNode)&&11!==a.nodeType?a:null},next:function(a){if(a.nextElementSibling)return a.nextElementSibling;for(a=a.nextSibling;null!=
+a&&1!==a.nodeType;)a=a.nextSibling;return a},find:function(a,c){return a.getElementsByTagName?a.getElementsByTagName(c):[]},clone:Jb,triggerHandler:function(a,c,d){var e,f;e=c.type||c;var g=(pa(a,"events")||{})[e];g&&(e={preventDefault:function(){this.defaultPrevented=!0},isDefaultPrevented:function(){return!0===this.defaultPrevented},stopPropagation:B,type:e,target:a},c.type&&(e=F(e,c)),c=ha(g),f=d?[e].concat(d):[e],r(c,function(c){c.apply(a,f)}))}},function(a,c){S.prototype[c]=function(c,e,f){for(var g,
+h=0;h<this.length;h++)H(g)?(g=a(this[h],c,e,f),G(g)&&(g=D(g))):Ib(g,a(this[h],c,e,f));return G(g)?g:this};S.prototype.bind=S.prototype.on;S.prototype.unbind=S.prototype.off});cb.prototype={put:function(a,c){this[La(a,this.nextUid)]=c},get:function(a){return this[La(a,this.nextUid)]},remove:function(a){var c=this[a=La(a,this.nextUid)];delete this[a];return c}};var qe=/^function\s*[^\(]*\(\s*([^\)]*)\)/m,re=/,/,se=/^\s*(_?)(\S+?)\1\s*$/,pe=/((\/\/.*$)|(\/\*[\s\S]*?\*\/))/mg,db=z("$injector"),Re=z("$animate"),
+Md=["$provide",function(a){this.$$selectors={};this.register=function(c,d){var e=c+"-animation";if(c&&"."!=c.charAt(0))throw Re("notcsel",c);this.$$selectors[c.substr(1)]=e;a.factory(e,d)};this.classNameFilter=function(a){1===arguments.length&&(this.$$classNameFilter=a instanceof RegExp?a:null);return this.$$classNameFilter};this.$get=["$timeout","$$asyncCallback",function(a,d){return{enter:function(a,c,g,h){g?g.after(a):(c&&c[0]||(c=g.parent()),c.append(a));h&&d(h)},leave:function(a,c){a.remove();
+c&&d(c)},move:function(a,c,d,h){this.enter(a,c,d,h)},addClass:function(a,c,g){c=E(c)?c:M(c)?c.join(" "):"";r(a,function(a){ob(a,c)});g&&d(g)},removeClass:function(a,c,g){c=E(c)?c:M(c)?c.join(" "):"";r(a,function(a){nb(a,c)});g&&d(g)},setClass:function(a,c,g,h){r(a,function(a){ob(a,c);nb(a,g)});h&&d(h)},enabled:B}}]}],ja=z("$compile");fc.$inject=["$provide","$$sanitizeUriProvider"];var xe=/^(x[\:\-_]|data[\:\-_])/i,vc=z("$interpolate"),Se=/^([^\?#]*)(\?([^#]*))?(#(.*))?$/,Ae={http:80,https:443,ftp:21},
+Rb=z("$location");Ac.prototype=Sb.prototype=zc.prototype={$$html5:!1,$$replace:!1,absUrl:sb("$$absUrl"),url:function(a){if(H(a))return this.$$url;a=Se.exec(a);a[1]&&this.path(decodeURIComponent(a[1]));(a[2]||a[1])&&this.search(a[3]||"");this.hash(a[5]||"");return this},protocol:sb("$$protocol"),host:sb("$$host"),port:sb("$$port"),path:Bc("$$path",function(a){a=null!==a?a.toString():"";return"/"==a.charAt(0)?a:"/"+a}),search:function(a,c){switch(arguments.length){case 0:return this.$$search;case 1:if(E(a)||
+ib(a))a=a.toString(),this.$$search=bc(a);else if(T(a))r(a,function(c,e){null==c&&delete a[e]}),this.$$search=a;else throw Rb("isrcharg");break;default:H(c)||null===c?delete this.$$search[a]:this.$$search[a]=c}this.$$compose();return this},hash:Bc("$$hash",function(a){return null!==a?a.toString():""}),replace:function(){this.$$replace=!0;return this}};var ea=z("$parse"),Fc={},xa,Te=Function.prototype.call,Ue=Function.prototype.apply,Qc=Function.prototype.bind,gb={"null":function(){return null},"true":function(){return!0},
+"false":function(){return!1},undefined:B,"+":function(a,c,d,e){d=d(a,c);e=e(a,c);return G(d)?G(e)?d+e:d:G(e)?e:v},"-":function(a,c,d,e){d=d(a,c);e=e(a,c);return(G(d)?d:0)-(G(e)?e:0)},"*":function(a,c,d,e){return d(a,c)*e(a,c)},"/":function(a,c,d,e){return d(a,c)/e(a,c)},"%":function(a,c,d,e){return d(a,c)%e(a,c)},"^":function(a,c,d,e){return d(a,c)^e(a,c)},"=":B,"===":function(a,c,d,e){return d(a,c)===e(a,c)},"!==":function(a,c,d,e){return d(a,c)!==e(a,c)},"==":function(a,c,d,e){return d(a,c)==e(a,
+c)},"!=":function(a,c,d,e){return d(a,c)!=e(a,c)},"<":function(a,c,d,e){return d(a,c)<e(a,c)},">":function(a,c,d,e){return d(a,c)>e(a,c)},"<=":function(a,c,d,e){return d(a,c)<=e(a,c)},">=":function(a,c,d,e){return d(a,c)>=e(a,c)},"&&":function(a,c,d,e){return d(a,c)&&e(a,c)},"||":function(a,c,d,e){return d(a,c)||e(a,c)},"&":function(a,c,d,e){return d(a,c)&e(a,c)},"|":function(a,c,d,e){return e(a,c)(a,c,d(a,c))},"!":function(a,c,d){return!d(a,c)}},Ve={n:"\n",f:"\f",r:"\r",t:"\t",v:"\v","'":"'",'"':'"'},
+Tb=function(a){this.options=a};Tb.prototype={constructor:Tb,lex:function(a){this.text=a;this.index=0;this.ch=v;this.lastCh=":";for(this.tokens=[];this.index<this.text.length;){this.ch=this.text.charAt(this.index);if(this.is("\"'"))this.readString(this.ch);else if(this.isNumber(this.ch)||this.is(".")&&this.isNumber(this.peek()))this.readNumber();else if(this.isIdent(this.ch))this.readIdent();else if(this.is("(){}[].,;:?"))this.tokens.push({index:this.index,text:this.ch}),this.index++;else if(this.isWhitespace(this.ch)){this.index++;
+continue}else{a=this.ch+this.peek();var c=a+this.peek(2),d=gb[this.ch],e=gb[a],f=gb[c];f?(this.tokens.push({index:this.index,text:c,fn:f}),this.index+=3):e?(this.tokens.push({index:this.index,text:a,fn:e}),this.index+=2):d?(this.tokens.push({index:this.index,text:this.ch,fn:d}),this.index+=1):this.throwError("Unexpected next character ",this.index,this.index+1)}this.lastCh=this.ch}return this.tokens},is:function(a){return-1!==a.indexOf(this.ch)},was:function(a){return-1!==a.indexOf(this.lastCh)},
+peek:function(a){a=a||1;return this.index+a<this.text.length?this.text.charAt(this.index+a):!1},isNumber:function(a){return"0"<=a&&"9">=a},isWhitespace:function(a){return" "===a||"\r"===a||"\t"===a||"\n"===a||"\v"===a||"\u00a0"===a},isIdent:function(a){return"a"<=a&&"z">=a||"A"<=a&&"Z">=a||"_"===a||"$"===a},isExpOperator:function(a){return"-"===a||"+"===a||this.isNumber(a)},throwError:function(a,c,d){d=d||this.index;c=G(c)?"s "+c+"-"+this.index+" ["+this.text.substring(c,d)+"]":" "+d;throw ea("lexerr",
+a,c,this.text);},readNumber:function(){for(var a="",c=this.index;this.index<this.text.length;){var d=A(this.text.charAt(this.index));if("."==d||this.isNumber(d))a+=d;else{var e=this.peek();if("e"==d&&this.isExpOperator(e))a+=d;else if(this.isExpOperator(d)&&e&&this.isNumber(e)&&"e"==a.charAt(a.length-1))a+=d;else if(!this.isExpOperator(d)||e&&this.isNumber(e)||"e"!=a.charAt(a.length-1))break;else this.throwError("Invalid exponent")}this.index++}a*=1;this.tokens.push({index:c,text:a,literal:!0,constant:!0,
+fn:function(){return a}})},readIdent:function(){for(var a=this,c="",d=this.index,e,f,g,h;this.index<this.text.length;){h=this.text.charAt(this.index);if("."===h||this.isIdent(h)||this.isNumber(h))"."===h&&(e=this.index),c+=h;else break;this.index++}if(e)for(f=this.index;f<this.text.length;){h=this.text.charAt(f);if("("===h){g=c.substr(e-d+1);c=c.substr(0,e-d);this.index=f;break}if(this.isWhitespace(h))f++;else break}d={index:d,text:c};if(gb.hasOwnProperty(c))d.fn=gb[c],d.literal=!0,d.constant=!0;
+else{var k=Ec(c,this.options,this.text);d.fn=F(function(a,c){return k(a,c)},{assign:function(d,e){return tb(d,c,e,a.text,a.options)}})}this.tokens.push(d);g&&(this.tokens.push({index:e,text:"."}),this.tokens.push({index:e+1,text:g}))},readString:function(a){var c=this.index;this.index++;for(var d="",e=a,f=!1;this.index<this.text.length;){var g=this.text.charAt(this.index),e=e+g;if(f)"u"===g?(f=this.text.substring(this.index+1,this.index+5),f.match(/[\da-f]{4}/i)||this.throwError("Invalid unicode escape [\\u"+
+f+"]"),this.index+=4,d+=String.fromCharCode(parseInt(f,16))):d+=Ve[g]||g,f=!1;else if("\\"===g)f=!0;else{if(g===a){this.index++;this.tokens.push({index:c,text:e,string:d,literal:!0,constant:!0,fn:function(){return d}});return}d+=g}this.index++}this.throwError("Unterminated quote",c)}};var fb=function(a,c,d){this.lexer=a;this.$filter=c;this.options=d};fb.ZERO=F(function(){return 0},{constant:!0});fb.prototype={constructor:fb,parse:function(a){this.text=a;this.tokens=this.lexer.lex(a);a=this.statements();
+0!==this.tokens.length&&this.throwError("is an unexpected token",this.tokens[0]);a.literal=!!a.literal;a.constant=!!a.constant;return a},primary:function(){var a;if(this.expect("("))a=this.filterChain(),this.consume(")");else if(this.expect("["))a=this.arrayDeclaration();else if(this.expect("{"))a=this.object();else{var c=this.expect();(a=c.fn)||this.throwError("not a primary expression",c);a.literal=!!c.literal;a.constant=!!c.constant}for(var d;c=this.expect("(","[",".");)"("===c.text?(a=this.functionCall(a,
+d),d=null):"["===c.text?(d=a,a=this.objectIndex(a)):"."===c.text?(d=a,a=this.fieldAccess(a)):this.throwError("IMPOSSIBLE");return a},throwError:function(a,c){throw ea("syntax",c.text,a,c.index+1,this.text,this.text.substring(c.index));},peekToken:function(){if(0===this.tokens.length)throw ea("ueoe",this.text);return this.tokens[0]},peek:function(a,c,d,e){if(0<this.tokens.length){var f=this.tokens[0],g=f.text;if(g===a||g===c||g===d||g===e||!(a||c||d||e))return f}return!1},expect:function(a,c,d,e){return(a=
+this.peek(a,c,d,e))?(this.tokens.shift(),a):!1},consume:function(a){this.expect(a)||this.throwError("is unexpected, expecting ["+a+"]",this.peek())},unaryFn:function(a,c){return F(function(d,e){return a(d,e,c)},{constant:c.constant})},ternaryFn:function(a,c,d){return F(function(e,f){return a(e,f)?c(e,f):d(e,f)},{constant:a.constant&&c.constant&&d.constant})},binaryFn:function(a,c,d){return F(function(e,f){return c(e,f,a,d)},{constant:a.constant&&d.constant})},statements:function(){for(var a=[];;)if(0<
+this.tokens.length&&!this.peek("}",")",";","]")&&a.push(this.filterChain()),!this.expect(";"))return 1===a.length?a[0]:function(c,d){for(var e,f=0;f<a.length;f++){var g=a[f];g&&(e=g(c,d))}return e}},filterChain:function(){for(var a=this.expression(),c;;)if(c=this.expect("|"))a=this.binaryFn(a,c.fn,this.filter());else return a},filter:function(){for(var a=this.expect(),c=this.$filter(a.text),d=[];;)if(a=this.expect(":"))d.push(this.expression());else{var e=function(a,e,h){h=[h];for(var k=0;k<d.length;k++)h.push(d[k](a,
+e));return c.apply(a,h)};return function(){return e}}},expression:function(){return this.assignment()},assignment:function(){var a=this.ternary(),c,d;return(d=this.expect("="))?(a.assign||this.throwError("implies assignment but ["+this.text.substring(0,d.index)+"] can not be assigned to",d),c=this.ternary(),function(d,f){return a.assign(d,c(d,f),f)}):a},ternary:function(){var a=this.logicalOR(),c,d;if(this.expect("?")){c=this.assignment();if(d=this.expect(":"))return this.ternaryFn(a,c,this.assignment());
+this.throwError("expected :",d)}else return a},logicalOR:function(){for(var a=this.logicalAND(),c;;)if(c=this.expect("||"))a=this.binaryFn(a,c.fn,this.logicalAND());else return a},logicalAND:function(){var a=this.equality(),c;if(c=this.expect("&&"))a=this.binaryFn(a,c.fn,this.logicalAND());return a},equality:function(){var a=this.relational(),c;if(c=this.expect("==","!=","===","!=="))a=this.binaryFn(a,c.fn,this.equality());return a},relational:function(){var a=this.additive(),c;if(c=this.expect("<",
+">","<=",">="))a=this.binaryFn(a,c.fn,this.relational());return a},additive:function(){for(var a=this.multiplicative(),c;c=this.expect("+","-");)a=this.binaryFn(a,c.fn,this.multiplicative());return a},multiplicative:function(){for(var a=this.unary(),c;c=this.expect("*","/","%");)a=this.binaryFn(a,c.fn,this.unary());return a},unary:function(){var a;return this.expect("+")?this.primary():(a=this.expect("-"))?this.binaryFn(fb.ZERO,a.fn,this.unary()):(a=this.expect("!"))?this.unaryFn(a.fn,this.unary()):
+this.primary()},fieldAccess:function(a){var c=this,d=this.expect().text,e=Ec(d,this.options,this.text);return F(function(c,d,h){return e(h||a(c,d))},{assign:function(e,g,h){(h=a(e,h))||a.assign(e,h={});return tb(h,d,g,c.text,c.options)}})},objectIndex:function(a){var c=this,d=this.expression();this.consume("]");return F(function(e,f){var g=a(e,f),h=Cc(d(e,f),c.text),k;la(h,c.text);if(!g)return v;(g=ma(g[h],c.text))&&(g.then&&c.options.unwrapPromises)&&(k=g,"$$v"in g||(k.$$v=v,k.then(function(a){k.$$v=
+a})),g=g.$$v);return g},{assign:function(e,f,g){var h=la(Cc(d(e,g),c.text),c.text);(g=ma(a(e,g),c.text))||a.assign(e,g={});return g[h]=f}})},functionCall:function(a,c){var d=[];if(")"!==this.peekToken().text){do d.push(this.expression());while(this.expect(","))}this.consume(")");var e=this;return function(f,g){for(var h=[],k=c?c(f,g):f,l=0;l<d.length;l++)h.push(ma(d[l](f,g),e.text));l=a(f,g,k)||B;ma(k,e.text);var m=e.text;if(l){if(l.constructor===l)throw ea("isecfn",m);if(l===Te||l===Ue||Qc&&l===
+Qc)throw ea("isecff",m);}h=l.apply?l.apply(k,h):l(h[0],h[1],h[2],h[3],h[4]);return ma(h,e.text)}},arrayDeclaration:function(){var a=[],c=!0;if("]"!==this.peekToken().text){do{if(this.peek("]"))break;var d=this.expression();a.push(d);d.constant||(c=!1)}while(this.expect(","))}this.consume("]");return F(function(c,d){for(var g=[],h=0;h<a.length;h++)g.push(a[h](c,d));return g},{literal:!0,constant:c})},object:function(){var a=[],c=!0;if("}"!==this.peekToken().text){do{if(this.peek("}"))break;var d=this.expect(),
+d=d.string||d.text;this.consume(":");var e=this.expression();a.push({key:d,value:e});e.constant||(c=!1)}while(this.expect(","))}this.consume("}");return F(function(c,d){for(var e={},k=0;k<a.length;k++){var l=a[k];e[l.key]=l.value(c,d)}return e},{literal:!0,constant:c})}};var De={},Ce={},ya=z("$sce"),fa={HTML:"html",CSS:"css",URL:"url",RESOURCE_URL:"resourceUrl",JS:"js"},X=W.createElement("a"),Hc=wa(V.location.href,!0);jc.$inject=["$provide"];Ic.$inject=["$locale"];Kc.$inject=["$locale"];var Nc=".",
+Ne={yyyy:Y("FullYear",4),yy:Y("FullYear",2,0,!0),y:Y("FullYear",1),MMMM:ub("Month"),MMM:ub("Month",!0),MM:Y("Month",2,1),M:Y("Month",1,1),dd:Y("Date",2),d:Y("Date",1),HH:Y("Hours",2),H:Y("Hours",1),hh:Y("Hours",2,-12),h:Y("Hours",1,-12),mm:Y("Minutes",2),m:Y("Minutes",1),ss:Y("Seconds",2),s:Y("Seconds",1),sss:Y("Milliseconds",3),EEEE:ub("Day"),EEE:ub("Day",!0),a:function(a,c){return 12>a.getHours()?c.AMPMS[0]:c.AMPMS[1]},Z:function(a){a=-1*a.getTimezoneOffset();return a=(0<=a?"+":"")+(Ub(Math[0<a?
+"floor":"ceil"](a/60),2)+Ub(Math.abs(a%60),2))}},Me=/((?:[^yMdHhmsaZE']+)|(?:'(?:[^']|'')*')|(?:E+|y+|M+|d+|H+|h+|m+|s+|a|Z))(.*)/,Le=/^\-?\d+$/;Jc.$inject=["$locale"];var Je=Z(A),Ke=Z(Ja);Lc.$inject=["$parse"];var dd=Z({restrict:"E",compile:function(a,c){8>=u&&(c.href||c.name||c.$set("href",""),a.append(W.createComment("IE fix")));if(!c.href&&!c.xlinkHref&&!c.name)return function(a,c){var f="[object SVGAnimatedString]"===Aa.call(c.prop("href"))?"xlink:href":"href";c.on("click",function(a){c.attr(f)||
+a.preventDefault()})}}}),Eb={};r(qb,function(a,c){if("multiple"!=a){var d=qa("ng-"+c);Eb[d]=function(){return{priority:100,link:function(a,f,g){a.$watch(g[d],function(a){g.$set(c,!!a)})}}}}});r(["src","srcset","href"],function(a){var c=qa("ng-"+a);Eb[c]=function(){return{priority:99,link:function(d,e,f){var g=a,h=a;"href"===a&&"[object SVGAnimatedString]"===Aa.call(e.prop("href"))&&(h="xlinkHref",f.$attr[h]="xlink:href",g=null);f.$observe(c,function(c){c?(f.$set(h,c),u&&g&&e.prop(g,f[h])):"href"===
+a&&f.$set(h,null)})}}}});var xb={$addControl:B,$removeControl:B,$setValidity:B,$setDirty:B,$setPristine:B};Oc.$inject=["$element","$attrs","$scope","$animate"];var Rc=function(a){return["$timeout",function(c){return{name:"form",restrict:a?"EAC":"E",controller:Oc,compile:function(){return{pre:function(a,e,f,g){if(!f.action){var h=function(a){a.preventDefault?a.preventDefault():a.returnValue=!1};rb(e[0],"submit",h);e.on("$destroy",function(){c(function(){ab(e[0],"submit",h)},0,!1)})}var k=e.parent().controller("form"),
+l=f.name||f.ngForm;l&&tb(a,l,g,l);if(k)e.on("$destroy",function(){k.$removeControl(g);l&&tb(a,l,v,l);F(g,xb)})}}}}}]},ed=Rc(),rd=Rc(!0),We=/^(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?$/,Xe=/^[a-z0-9!#$%&'*+\/=?^_`{|}~.-]+@[a-z0-9]([a-z0-9-]*[a-z0-9])?(\.[a-z0-9]([a-z0-9-]*[a-z0-9])?)*$/i,Ye=/^\s*(\-|\+)?(\d+|(\d*(\.\d*)))\s*$/,Sc={text:zb,number:function(a,c,d,e,f,g){zb(a,c,d,e,f,g);e.$parsers.push(function(a){var c=e.$isEmpty(a);if(c||Ye.test(a))return e.$setValidity("number",
+!0),""===a?null:c?a:parseFloat(a);e.$setValidity("number",!1);return v});Oe(e,"number",Ze,null,e.$$validityState);e.$formatters.push(function(a){return e.$isEmpty(a)?"":""+a});d.min&&(a=function(a){var c=parseFloat(d.min);return ta(e,"min",e.$isEmpty(a)||a>=c,a)},e.$parsers.push(a),e.$formatters.push(a));d.max&&(a=function(a){var c=parseFloat(d.max);return ta(e,"max",e.$isEmpty(a)||a<=c,a)},e.$parsers.push(a),e.$formatters.push(a));e.$formatters.push(function(a){return ta(e,"number",e.$isEmpty(a)||
+ib(a),a)})},url:function(a,c,d,e,f,g){zb(a,c,d,e,f,g);a=function(a){return ta(e,"url",e.$isEmpty(a)||We.test(a),a)};e.$formatters.push(a);e.$parsers.push(a)},email:function(a,c,d,e,f,g){zb(a,c,d,e,f,g);a=function(a){return ta(e,"email",e.$isEmpty(a)||Xe.test(a),a)};e.$formatters.push(a);e.$parsers.push(a)},radio:function(a,c,d,e){H(d.name)&&c.attr("name",hb());c.on("click",function(){c[0].checked&&a.$apply(function(){e.$setViewValue(d.value)})});e.$render=function(){c[0].checked=d.value==e.$viewValue};
+d.$observe("value",e.$render)},checkbox:function(a,c,d,e){var f=d.ngTrueValue,g=d.ngFalseValue;E(f)||(f=!0);E(g)||(g=!1);c.on("click",function(){a.$apply(function(){e.$setViewValue(c[0].checked)})});e.$render=function(){c[0].checked=e.$viewValue};e.$isEmpty=function(a){return a!==f};e.$formatters.push(function(a){return a===f});e.$parsers.push(function(a){return a?f:g})},hidden:B,button:B,submit:B,reset:B,file:B},Ze=["badInput"],gc=["$browser","$sniffer",function(a,c){return{restrict:"E",require:"?ngModel",
+link:function(d,e,f,g){g&&(Sc[A(f.type)]||Sc.text)(d,e,f,g,c,a)}}}],vb="ng-valid",wb="ng-invalid",Qa="ng-pristine",yb="ng-dirty",$e=["$scope","$exceptionHandler","$attrs","$element","$parse","$animate",function(a,c,d,e,f,g){function h(a,c){c=c?"-"+mb(c,"-"):"";g.removeClass(e,(a?wb:vb)+c);g.addClass(e,(a?vb:wb)+c)}this.$modelValue=this.$viewValue=Number.NaN;this.$parsers=[];this.$formatters=[];this.$viewChangeListeners=[];this.$pristine=!0;this.$dirty=!1;this.$valid=!0;this.$invalid=!1;this.$name=
+d.name;var k=f(d.ngModel),l=k.assign;if(!l)throw z("ngModel")("nonassign",d.ngModel,ia(e));this.$render=B;this.$isEmpty=function(a){return H(a)||""===a||null===a||a!==a};var m=e.inheritedData("$formController")||xb,n=0,q=this.$error={};e.addClass(Qa);h(!0);this.$setValidity=function(a,c){q[a]!==!c&&(c?(q[a]&&n--,n||(h(!0),this.$valid=!0,this.$invalid=!1)):(h(!1),this.$invalid=!0,this.$valid=!1,n++),q[a]=!c,h(c,a),m.$setValidity(a,c,this))};this.$setPristine=function(){this.$dirty=!1;this.$pristine=
+!0;g.removeClass(e,yb);g.addClass(e,Qa)};this.$setViewValue=function(d){this.$viewValue=d;this.$pristine&&(this.$dirty=!0,this.$pristine=!1,g.removeClass(e,Qa),g.addClass(e,yb),m.$setDirty());r(this.$parsers,function(a){d=a(d)});this.$modelValue!==d&&(this.$modelValue=d,l(a,d),r(this.$viewChangeListeners,function(a){try{a()}catch(d){c(d)}}))};var p=this;a.$watch(function(){var c=k(a);if(p.$modelValue!==c){var d=p.$formatters,e=d.length;for(p.$modelValue=c;e--;)c=d[e](c);p.$viewValue!==c&&(p.$viewValue=
+c,p.$render())}return c})}],Gd=function(){return{require:["ngModel","^?form"],controller:$e,link:function(a,c,d,e){var f=e[0],g=e[1]||xb;g.$addControl(f);a.$on("$destroy",function(){g.$removeControl(f)})}}},Id=Z({require:"ngModel",link:function(a,c,d,e){e.$viewChangeListeners.push(function(){a.$eval(d.ngChange)})}}),hc=function(){return{require:"?ngModel",link:function(a,c,d,e){if(e){d.required=!0;var f=function(a){if(d.required&&e.$isEmpty(a))e.$setValidity("required",!1);else return e.$setValidity("required",
+!0),a};e.$formatters.push(f);e.$parsers.unshift(f);d.$observe("required",function(){f(e.$viewValue)})}}}},Hd=function(){return{require:"ngModel",link:function(a,c,d,e){var f=(a=/\/(.*)\//.exec(d.ngList))&&RegExp(a[1])||d.ngList||",";e.$parsers.push(function(a){if(!H(a)){var c=[];a&&r(a.split(f),function(a){a&&c.push($(a))});return c}});e.$formatters.push(function(a){return M(a)?a.join(", "):v});e.$isEmpty=function(a){return!a||!a.length}}}},af=/^(true|false|\d+)$/,Jd=function(){return{priority:100,
+compile:function(a,c){return af.test(c.ngValue)?function(a,c,f){f.$set("value",a.$eval(f.ngValue))}:function(a,c,f){a.$watch(f.ngValue,function(a){f.$set("value",a)})}}}},jd=za({compile:function(a){a.addClass("ng-binding");return function(a,d,e){d.data("$binding",e.ngBind);a.$watch(e.ngBind,function(a){d.text(a==v?"":a)})}}}),ld=["$interpolate",function(a){return function(c,d,e){c=a(d.attr(e.$attr.ngBindTemplate));d.addClass("ng-binding").data("$binding",c);e.$observe("ngBindTemplate",function(a){d.text(a)})}}],
+kd=["$sce","$parse",function(a,c){return{compile:function(d){d.addClass("ng-binding");return function(d,f,g){f.data("$binding",g.ngBindHtml);var h=c(g.ngBindHtml);d.$watch(function(){return(h(d)||"").toString()},function(c){f.html(a.getTrustedHtml(h(d))||"")})}}}}],md=Vb("",!0),od=Vb("Odd",0),nd=Vb("Even",1),pd=za({compile:function(a,c){c.$set("ngCloak",v);a.removeClass("ng-cloak")}}),qd=[function(){return{scope:!0,controller:"@",priority:500}}],ic={},bf={blur:!0,focus:!0};r("click dblclick mousedown mouseup mouseover mouseout mousemove mouseenter mouseleave keydown keyup keypress submit focus blur copy cut paste".split(" "),
+function(a){var c=qa("ng-"+a);ic[c]=["$parse","$rootScope",function(d,e){return{compile:function(f,g){var h=d(g[c],!0);return function(c,d){d.on(a,function(d){var f=function(){h(c,{$event:d})};bf[a]&&e.$$phase?c.$evalAsync(f):c.$apply(f)})}}}}]});var td=["$animate",function(a){return{transclude:"element",priority:600,terminal:!0,restrict:"A",$$tlb:!0,link:function(c,d,e,f,g){var h,k,l;c.$watch(e.ngIf,function(f){Va(f)?k||(k=c.$new(),g(k,function(c){c[c.length++]=W.createComment(" end ngIf: "+e.ngIf+
+" ");h={clone:c};a.enter(c,d.parent(),d)})):(l&&(l.remove(),l=null),k&&(k.$destroy(),k=null),h&&(l=Db(h.clone),a.leave(l,function(){l=null}),h=null))})}}}],ud=["$http","$templateCache","$anchorScroll","$animate","$sce",function(a,c,d,e,f){return{restrict:"ECA",priority:400,terminal:!0,transclude:"element",controller:Wa.noop,compile:function(g,h){var k=h.ngInclude||h.src,l=h.onload||"",m=h.autoscroll;return function(g,h,p,r,K){var w=0,t,x,u,y=function(){x&&(x.remove(),x=null);t&&(t.$destroy(),t=null);
+u&&(e.leave(u,function(){x=null}),x=u,u=null)};g.$watch(f.parseAsResourceUrl(k),function(f){var k=function(){!G(m)||m&&!g.$eval(m)||d()},p=++w;f?(a.get(f,{cache:c}).success(function(a){if(p===w){var c=g.$new();r.template=a;a=K(c,function(a){y();e.enter(a,null,h,k)});t=c;u=a;t.$emit("$includeContentLoaded");g.$eval(l)}}).error(function(){p===w&&y()}),g.$emit("$includeContentRequested")):(y(),r.template=null)})}}}}],Kd=["$compile",function(a){return{restrict:"ECA",priority:-400,require:"ngInclude",
+link:function(c,d,e,f){d.html(f.template);a(d.contents())(c)}}}],vd=za({priority:450,compile:function(){return{pre:function(a,c,d){a.$eval(d.ngInit)}}}}),wd=za({terminal:!0,priority:1E3}),xd=["$locale","$interpolate",function(a,c){var d=/{}/g;return{restrict:"EA",link:function(e,f,g){var h=g.count,k=g.$attr.when&&f.attr(g.$attr.when),l=g.offset||0,m=e.$eval(k)||{},n={},q=c.startSymbol(),p=c.endSymbol(),s=/^when(Minus)?(.+)$/;r(g,function(a,c){s.test(c)&&(m[A(c.replace("when","").replace("Minus","-"))]=
+f.attr(g.$attr[c]))});r(m,function(a,e){n[e]=c(a.replace(d,q+h+"-"+l+p))});e.$watch(function(){var c=parseFloat(e.$eval(h));if(isNaN(c))return"";c in m||(c=a.pluralCat(c-l));return n[c](e,f,!0)},function(a){f.text(a)})}}}],yd=["$parse","$animate",function(a,c){var d=z("ngRepeat");return{transclude:"element",priority:1E3,terminal:!0,$$tlb:!0,link:function(e,f,g,h,k){var l=g.ngRepeat,m=l.match(/^\s*([\s\S]+?)\s+in\s+([\s\S]+?)(?:\s+track\s+by\s+([\s\S]+?))?\s*$/),n,q,p,s,u,v,t={$id:La};if(!m)throw d("iexp",
+l);g=m[1];h=m[2];(m=m[3])?(n=a(m),q=function(a,c,d){v&&(t[v]=a);t[u]=c;t.$index=d;return n(e,t)}):(p=function(a,c){return La(c)},s=function(a){return a});m=g.match(/^(?:([\$\w]+)|\(([\$\w]+)\s*,\s*([\$\w]+)\))$/);if(!m)throw d("iidexp",g);u=m[3]||m[1];v=m[2];var x={};e.$watchCollection(h,function(a){var g,h,m=f[0],n,t={},G,C,J,A,E,B,z,H=[];if(Ra(a))B=a,E=q||p;else{E=q||s;B=[];for(J in a)a.hasOwnProperty(J)&&"$"!=J.charAt(0)&&B.push(J);B.sort()}G=B.length;h=H.length=B.length;for(g=0;g<h;g++)if(J=a===
+B?g:B[g],A=a[J],n=E(J,A,g),Da(n,"`track by` id"),x.hasOwnProperty(n))z=x[n],delete x[n],t[n]=z,H[g]=z;else{if(t.hasOwnProperty(n))throw r(H,function(a){a&&a.scope&&(x[a.id]=a)}),d("dupes",l,n,oa(A));H[g]={id:n};t[n]=!1}for(J in x)x.hasOwnProperty(J)&&(z=x[J],g=Db(z.clone),c.leave(g),r(g,function(a){a.$$NG_REMOVED=!0}),z.scope.$destroy());g=0;for(h=B.length;g<h;g++){J=a===B?g:B[g];A=a[J];z=H[g];H[g-1]&&(m=H[g-1].clone[H[g-1].clone.length-1]);if(z.scope){C=z.scope;n=m;do n=n.nextSibling;while(n&&n.$$NG_REMOVED);
+z.clone[0]!=n&&c.move(Db(z.clone),null,D(m));m=z.clone[z.clone.length-1]}else C=e.$new();C[u]=A;v&&(C[v]=J);C.$index=g;C.$first=0===g;C.$last=g===G-1;C.$middle=!(C.$first||C.$last);C.$odd=!(C.$even=0===(g&1));z.scope||k(C,function(a){a[a.length++]=W.createComment(" end ngRepeat: "+l+" ");c.enter(a,null,D(m));m=a;z.scope=C;z.clone=a;t[z.id]=z})}x=t})}}}],zd=["$animate",function(a){return function(c,d,e){c.$watch(e.ngShow,function(c){a[Va(c)?"removeClass":"addClass"](d,"ng-hide")})}}],sd=["$animate",
+function(a){return function(c,d,e){c.$watch(e.ngHide,function(c){a[Va(c)?"addClass":"removeClass"](d,"ng-hide")})}}],Ad=za(function(a,c,d){a.$watch(d.ngStyle,function(a,d){d&&a!==d&&r(d,function(a,d){c.css(d,"")});a&&c.css(a)},!0)}),Bd=["$animate",function(a){return{restrict:"EA",require:"ngSwitch",controller:["$scope",function(){this.cases={}}],link:function(c,d,e,f){var g=[],h=[],k=[],l=[];c.$watch(e.ngSwitch||e.on,function(d){var n,q;n=0;for(q=k.length;n<q;++n)k[n].remove();n=k.length=0;for(q=
+l.length;n<q;++n){var p=h[n];l[n].$destroy();k[n]=p;a.leave(p,function(){k.splice(n,1)})}h.length=0;l.length=0;if(g=f.cases["!"+d]||f.cases["?"])c.$eval(e.change),r(g,function(d){var e=c.$new();l.push(e);d.transclude(e,function(c){var e=d.element;h.push(c);a.enter(c,e.parent(),e)})})})}}}],Cd=za({transclude:"element",priority:800,require:"^ngSwitch",link:function(a,c,d,e,f){e.cases["!"+d.ngSwitchWhen]=e.cases["!"+d.ngSwitchWhen]||[];e.cases["!"+d.ngSwitchWhen].push({transclude:f,element:c})}}),Dd=
+za({transclude:"element",priority:800,require:"^ngSwitch",link:function(a,c,d,e,f){e.cases["?"]=e.cases["?"]||[];e.cases["?"].push({transclude:f,element:c})}}),Fd=za({link:function(a,c,d,e,f){if(!f)throw z("ngTransclude")("orphan",ia(c));f(function(a){c.empty();c.append(a)})}}),fd=["$templateCache",function(a){return{restrict:"E",terminal:!0,compile:function(c,d){"text/ng-template"==d.type&&a.put(d.id,c[0].text)}}}],cf=z("ngOptions"),Ed=Z({terminal:!0}),gd=["$compile","$parse",function(a,c){var d=
+/^\s*([\s\S]+?)(?:\s+as\s+([\s\S]+?))?(?:\s+group\s+by\s+([\s\S]+?))?\s+for\s+(?:([\$\w][\$\w]*)|(?:\(\s*([\$\w][\$\w]*)\s*,\s*([\$\w][\$\w]*)\s*\)))\s+in\s+([\s\S]+?)(?:\s+track\s+by\s+([\s\S]+?))?$/,e={$setViewValue:B};return{restrict:"E",require:["select","?ngModel"],controller:["$element","$scope","$attrs",function(a,c,d){var k=this,l={},m=e,n;k.databound=d.ngModel;k.init=function(a,c,d){m=a;n=d};k.addOption=function(c){Da(c,'"option value"');l[c]=!0;m.$viewValue==c&&(a.val(c),n.parent()&&n.remove())};
+k.removeOption=function(a){this.hasOption(a)&&(delete l[a],m.$viewValue==a&&this.renderUnknownOption(a))};k.renderUnknownOption=function(c){c="? "+La(c)+" ?";n.val(c);a.prepend(n);a.val(c);n.prop("selected",!0)};k.hasOption=function(a){return l.hasOwnProperty(a)};c.$on("$destroy",function(){k.renderUnknownOption=B})}],link:function(e,g,h,k){function l(a,c,d,e){d.$render=function(){var a=d.$viewValue;e.hasOption(a)?(B.parent()&&B.remove(),c.val(a),""===a&&A.prop("selected",!0)):H(a)&&A?c.val(""):e.renderUnknownOption(a)};
+c.on("change",function(){a.$apply(function(){B.parent()&&B.remove();d.$setViewValue(c.val())})})}function m(a,c,d){var e;d.$render=function(){var a=new cb(d.$viewValue);r(c.find("option"),function(c){c.selected=G(a.get(c.value))})};a.$watch(function(){Ba(e,d.$viewValue)||(e=ha(d.$viewValue),d.$render())});c.on("change",function(){a.$apply(function(){var a=[];r(c.find("option"),function(c){c.selected&&a.push(c.value)});d.$setViewValue(a)})})}function n(e,f,g){function h(){var a={"":[]},c=[""],d,k,
+s,v,w;s=g.$modelValue;v=B(e)||[];var E=n?Wb(v):v,H,R,C;R={};C=!1;if(p)if(k=g.$modelValue,y&&M(k))for(C=new cb([]),d={},w=0;w<k.length;w++)d[m]=k[w],C.put(y(e,d),k[w]);else C=new cb(k);w=C;var F,L;for(C=0;H=E.length,C<H;C++){k=C;if(n){k=E[C];if("$"===k.charAt(0))continue;R[n]=k}R[m]=v[k];d=r(e,R)||"";(k=a[d])||(k=a[d]=[],c.push(d));p?d=G(w.remove(y?y(e,R):A(e,R))):(y?(d={},d[m]=s,d=y(e,d)===y(e,R)):d=s===A(e,R),w=w||d);F=l(e,R);F=G(F)?F:"";k.push({id:y?y(e,R):n?E[C]:C,label:F,selected:d})}p||(z||null===
+s?a[""].unshift({id:"",label:"",selected:!w}):w||a[""].unshift({id:"?",label:"",selected:!0}));R=0;for(E=c.length;R<E;R++){d=c[R];k=a[d];D.length<=R?(s={element:x.clone().attr("label",d),label:k.label},v=[s],D.push(v),f.append(s.element)):(v=D[R],s=v[0],s.label!=d&&s.element.attr("label",s.label=d));F=null;C=0;for(H=k.length;C<H;C++)d=k[C],(w=v[C+1])?(F=w.element,w.label!==d.label&&(F.text(w.label=d.label),F.prop("label",w.label)),w.id!==d.id&&F.val(w.id=d.id),F[0].selected!==d.selected&&(F.prop("selected",
+w.selected=d.selected),u&&F.prop("selected",w.selected))):(""===d.id&&z?L=z:(L=t.clone()).val(d.id).prop("selected",d.selected).attr("selected",d.selected).prop("label",d.label).text(d.label),v.push({element:L,label:d.label,id:d.id,selected:d.selected}),q.addOption(d.label,L),F?F.after(L):s.element.append(L),F=L);for(C++;v.length>C;)d=v.pop(),q.removeOption(d.label),d.element.remove()}for(;D.length>R;)D.pop()[0].element.remove()}var k;if(!(k=s.match(d)))throw cf("iexp",s,ia(f));var l=c(k[2]||k[1]),
+m=k[4]||k[6],n=k[5],r=c(k[3]||""),A=c(k[2]?k[1]:m),B=c(k[7]),y=k[8]?c(k[8]):null,D=[[{element:f,label:""}]];z&&(a(z)(e),z.removeClass("ng-scope"),z.remove());f.empty();f.on("change",function(){e.$apply(function(){var a,c=B(e)||[],d={},k,l,q,r,s,t,u;if(p)for(l=[],r=0,t=D.length;r<t;r++)for(a=D[r],q=1,s=a.length;q<s;q++){if((k=a[q].element)[0].selected){k=k.val();n&&(d[n]=k);if(y)for(u=0;u<c.length&&(d[m]=c[u],y(e,d)!=k);u++);else d[m]=c[k];l.push(A(e,d))}}else if(k=f.val(),"?"==k)l=v;else if(""===
+k)l=null;else if(y)for(u=0;u<c.length;u++){if(d[m]=c[u],y(e,d)==k){l=A(e,d);break}}else d[m]=c[k],n&&(d[n]=k),l=A(e,d);g.$setViewValue(l);h()})});g.$render=h;e.$watchCollection(B,h);e.$watchCollection(function(){var a={},c=B(e);if(c){for(var d=Array(c.length),f=0,g=c.length;f<g;f++)a[m]=c[f],d[f]=l(e,a);return d}},h);p&&e.$watchCollection(function(){return g.$modelValue},h)}if(k[1]){var q=k[0];k=k[1];var p=h.multiple,s=h.ngOptions,z=!1,A,t=D(W.createElement("option")),x=D(W.createElement("optgroup")),
+B=t.clone();h=0;for(var y=g.children(),E=y.length;h<E;h++)if(""===y[h].value){A=z=y.eq(h);break}q.init(k,z,B);p&&(k.$isEmpty=function(a){return!a||0===a.length});s?n(e,g,k):p?m(e,g,k):l(e,g,k,q)}}}}],id=["$interpolate",function(a){var c={addOption:B,removeOption:B};return{restrict:"E",priority:100,compile:function(d,e){if(H(e.value)){var f=a(d.text(),!0);f||e.$set("value",d.text())}return function(a,d,e){var l=d.parent(),m=l.data("$selectController")||l.parent().data("$selectController");m&&m.databound?
+d.prop("selected",!1):m=c;f?a.$watch(f,function(a,c){e.$set("value",a);a!==c&&m.removeOption(c);m.addOption(a)}):m.addOption(e.value);d.on("$destroy",function(){m.removeOption(e.value)})}}}}],hd=Z({restrict:"E",terminal:!0});V.angular.bootstrap?console.log("WARNING: Tried to load angular more than once."):((Ea=V.jQuery)&&Ea.fn.on?(D=Ea,F(Ea.fn,{scope:Ma.scope,isolateScope:Ma.isolateScope,controller:Ma.controller,injector:Ma.injector,inheritedData:Ma.inheritedData}),Fb("remove",!0,!0,!1),Fb("empty",
+!1,!1,!1),Fb("html",!1,!1,!0)):D=S,Wa.element=D,$c(Wa),D(W).ready(function(){Xc(W,cc)}))})(window,document);!window.angular.$$csp()&&window.angular.element(document).find("head").prepend('<style type="text/css">@charset "UTF-8";[ng\\:cloak],[ng-cloak],[data-ng-cloak],[x-ng-cloak],.ng-cloak,.x-ng-cloak,.ng-hide{display:none !important;}ng\\:form{display:block;}.ng-animate-block-transitions{transition:0s all!important;-webkit-transition:0s all!important;}.ng-hide-add-active,.ng-hide-remove{display:block!important;}</style>');
 //# sourceMappingURL=angular.min.js.map
index 178bdf4..aa2610f 100644 (file)
@@ -1,8 +1,8 @@
 {
 "version":3,
 "file":"angular.min.js",
-"lineCount":246,
-"mappings":"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",
+"lineCount":217,
+"mappings":"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",
 "sources":["angular.js"],
-"names":["window","document","undefined","minErr","isArrayLike","obj","isWindow","length","nodeType","NODE_TYPE_ELEMENT","isString","isArray","forEach","iterator","context","key","isFunction","hasOwnProperty","call","isPrimitive","sortedKeys","keys","push","sort","forEachSorted","i","reverseParams","iteratorFn","value","nextUid","uid","setHashKey","h","$$hashKey","extend","dst","ii","arguments","Object","j","jj","int","str","parseInt","inherit","parent","extra","prototype","noop","identity","$","valueFn","isUndefined","isDefined","isObject","isNumber","isDate","toString","isRegExp","isScope","$evalAsync","$watch","isBoolean","isElement","node","nodeName","prop","attr","find","makeMap","items","split","nodeName_","element","lowercase","arrayRemove","array","index","indexOf","splice","copy","source","destination","stackSource","stackDest","ngMinErr","result","Date","getTime","RegExp","match","lastIndex","emptyObject","create","getPrototypeOf","shallowCopy","src","charAt","equals","o1","o2","t1","t2","keySet","concat","array1","array2","slice","bind","self","fn","curryArgs","startIndex","apply","toJsonReplacer","val","toJson","pretty","JSON","stringify","fromJson","json","parse","startingTag","jqLite","clone","empty","e","elemHtml","append","html","NODE_TYPE_TEXT","replace","tryDecodeURIComponent","decodeURIComponent","parseKeyValue","keyValue","key_value","toKeyValue","parts","arrayValue","encodeUriQuery","join","encodeUriSegment","pctEncodeSpaces","encodeURIComponent","getNgAttribute","ngAttr","ngAttrPrefixes","angularInit","bootstrap","appElement","module","config","prefix","name","hasAttribute","getAttribute","candidate","querySelector","strictDi","modules","defaultConfig","doBootstrap","injector","tag","unshift","$provide","debugInfoEnabled","$compileProvider","createInjector","invoke","bootstrapApply","scope","compile","$apply","data","NG_ENABLE_DEBUG_INFO","NG_DEFER_BOOTSTRAP","test","angular","resumeBootstrap","angular.resumeBootstrap","extraModules","reloadWithDebugInfo","location","reload","getTestability","rootElement","get","snake_case","separator","SNAKE_CASE_REGEXP","letter","pos","toLowerCase","bindJQuery","originalCleanData","bindJQueryFired","jQuery","on","JQLitePrototype","isolateScope","controller","inheritedData","cleanData","jQuery.cleanData","elems","events","skipDestroyOnNextJQueryCleanData","elem","_data","$destroy","triggerHandler","JQLite","assertArg","arg","reason","assertArgFn","acceptArrayAnnotation","constructor","assertNotHasOwnProperty","getter","path","bindFnToScope","lastInstance","len","getBlockNodes","nodes","endNode","blockNodes","nextSibling","createMap","setupModuleLoader","ensure","factory","$injectorMinErr","$$minErr","requires","configFn","invokeLater","provider","method","insertMethod","queue","invokeQueue","moduleInstance","configBlocks","runBlocks","_invokeQueue","_configBlocks","_runBlocks","service","constant","animation","filter","directive","run","block","publishExternalAPI","version","uppercase","counter","csp","angularModule","$LocaleProvider","ngModule","$$sanitizeUri","$$SanitizeUriProvider","$CompileProvider","a","htmlAnchorDirective","input","inputDirective","textarea","form","formDirective","script","scriptDirective","select","selectDirective","style","styleDirective","option","optionDirective","ngBind","ngBindDirective","ngBindHtml","ngBindHtmlDirective","ngBindTemplate","ngBindTemplateDirective","ngClass","ngClassDirective","ngClassEven","ngClassEvenDirective","ngClassOdd","ngClassOddDirective","ngCloak","ngCloakDirective","ngController","ngControllerDirective","ngForm","ngFormDirective","ngHide","ngHideDirective","ngIf","ngIfDirective","ngInclude","ngIncludeDirective","ngInit","ngInitDirective","ngNonBindable","ngNonBindableDirective","ngPluralize","ngPluralizeDirective","ngRepeat","ngRepeatDirective","ngShow","ngShowDirective","ngStyle","ngStyleDirective","ngSwitch","ngSwitchDirective","ngSwitchWhen","ngSwitchWhenDirective","ngSwitchDefault","ngSwitchDefaultDirective","ngOptions","ngOptionsDirective","ngTransclude","ngTranscludeDirective","ngModel","ngModelDirective","ngList","ngListDirective","ngChange","ngChangeDirective","pattern","patternDirective","ngPattern","required","requiredDirective","ngRequired","minlength","minlengthDirective","ngMinlength","maxlength","maxlengthDirective","ngMaxlength","ngValue","ngValueDirective","ngModelOptions","ngModelOptionsDirective","ngIncludeFillContentDirective","ngAttributeAliasDirectives","ngEventDirectives","$anchorScroll","$AnchorScrollProvider","$animate","$AnimateProvider","$browser","$BrowserProvider","$cacheFactory","$CacheFactoryProvider","$controller","$ControllerProvider","$document","$DocumentProvider","$exceptionHandler","$ExceptionHandlerProvider","$filter","$FilterProvider","$interpolate","$InterpolateProvider","$interval","$IntervalProvider","$http","$HttpProvider","$httpBackend","$HttpBackendProvider","$location","$LocationProvider","$log","$LogProvider","$parse","$ParseProvider","$rootScope","$RootScopeProvider","$q","$QProvider","$$q","$$QProvider","$sce","$SceProvider","$sceDelegate","$SceDelegateProvider","$sniffer","$SnifferProvider","$templateCache","$TemplateCacheProvider","$templateRequest","$TemplateRequestProvider","$$testability","$$TestabilityProvider","$timeout","$TimeoutProvider","$window","$WindowProvider","$$rAF","$$RAFProvider","$$asyncCallback","$$AsyncCallbackProvider","camelCase","SPECIAL_CHARS_REGEXP","_","offset","toUpperCase","MOZ_HACK_REGEXP","jqLiteAcceptsData","NODE_TYPE_DOCUMENT","jqLiteBuildFragment","tmp","fragment","createDocumentFragment","HTML_REGEXP","appendChild","createElement","TAG_NAME_REGEXP","exec","wrap","wrapMap","_default","innerHTML","XHTML_TAG_REGEXP","lastChild","childNodes","firstChild","textContent","createTextNode","argIsString","trim","jqLiteMinErr","parsed","SINGLE_TAG_REGEXP","jqLiteAddNodes","jqLiteClone","cloneNode","jqLiteDealoc","onlyDescendants","jqLiteRemoveData","querySelectorAll","descendants","l","jqLiteOff","type","unsupported","expandoStore","jqLiteExpandoStore","handle","listenerFns","removeEventListener","expandoId","ng339","jqCache","createIfNecessary","jqId","jqLiteData","isSimpleSetter","isSimpleGetter","massGetter","jqLiteHasClass","selector","jqLiteRemoveClass","cssClasses","setAttribute","cssClass","jqLiteAddClass","existingClasses","root","elements","jqLiteController","jqLiteInheritedData","documentElement","names","parentNode","NODE_TYPE_DOCUMENT_FRAGMENT","host","jqLiteEmpty","removeChild","jqLiteRemove","keepData","jqLiteDocumentLoaded","action","win","readyState","setTimeout","getBooleanAttrName","booleanAttr","BOOLEAN_ATTR","BOOLEAN_ELEMENTS","getAliasedAttrName","ALIASED_ATTR","createEventHandler","eventHandler","event","isDefaultPrevented","event.isDefaultPrevented","defaultPrevented","eventFns","eventFnsLength","immediatePropagationStopped","originalStopImmediatePropagation","stopImmediatePropagation","event.stopImmediatePropagation","stopPropagation","isImmediatePropagationStopped","event.isImmediatePropagationStopped","hashKey","nextUidFn","objType","HashMap","isolatedUid","this.nextUid","put","anonFn","args","fnText","STRIP_COMMENTS","FN_ARGS","annotate","$inject","argDecl","FN_ARG_SPLIT","FN_ARG","all","underscore","last","modulesToLoad","supportObject","delegate","provider_","providerInjector","instantiate","$get","providerCache","providerSuffix","enforceReturnValue","enforcedReturnValue","instanceInjector","factoryFn","enforce","loadModules","moduleFn","runInvokeQueue","invokeArgs","loadedModules","message","stack","createInternalInjector","cache","getService","serviceName","INSTANTIATING","err","shift","locals","Type","Constructor","instance","returnedValue","has","$injector","instanceCache","decorator","decorFn","origProvider","orig$get","origProvider.$get","origInstance","$delegate","servicename","autoScrollingEnabled","disableAutoScrolling","this.disableAutoScrolling","getFirstAnchor","list","Array","some","scrollTo","scrollIntoView","scroll","yOffset","getComputedStyle","position","getBoundingClientRect","bottom","elemTop","top","scrollBy","hash","elm","getElementById","getElementsByName","autoScrollWatch","autoScrollWatchAction","newVal","oldVal","supported","Browser","completeOutstandingRequest","outstandingRequestCount","outstandingRequestCallbacks","pop","error","startPoller","interval","check","pollFns","pollFn","pollTimeout","cacheStateAndFireUrlChange","cacheState","fireUrlChange","cachedState","history","state","lastCachedState","lastBrowserUrl","url","lastHistoryState","urlChangeListeners","listener","safeDecodeURIComponent","rawDocument","clearTimeout","pendingDeferIds","isMock","$$completeOutstandingRequest","$$incOutstandingRequestCount","self.$$incOutstandingRequestCount","notifyWhenNoOutstandingRequests","self.notifyWhenNoOutstandingRequests","callback","addPollFn","self.addPollFn","href","baseElement","reloadLocation","self.url","sameState","sameBase","stripHash","self.state","urlChangeInit","onUrlChange","self.onUrlChange","$$checkUrlChange","baseHref","self.baseHref","lastCookies","lastCookieString","cookiePath","cookies","self.cookies","cookieLength","cookie","warn","cookieArray","substring","defer","self.defer","delay","timeoutId","cancel","self.defer.cancel","deferId","this.$get","cacheFactory","cacheId","options","refresh","entry","freshEnd","staleEnd","n","link","p","nextEntry","prevEntry","caches","size","stats","id","capacity","Number","MAX_VALUE","lruHash","lruEntry","remove","removeAll","destroy","info","cacheFactory.info","cacheFactory.get","$$sanitizeUriProvider","parseIsolateBindings","directiveName","LOCAL_REGEXP","bindings","definition","scopeName","$compileMinErr","attrName","mode","optional","hasDirectives","COMMENT_DIRECTIVE_REGEXP","CLASS_DIRECTIVE_REGEXP","ALL_OR_NOTHING_ATTRS","REQUIRE_PREFIX_REGEXP","EVENT_HANDLER_ATTR_REGEXP","this.directive","registerDirective","directiveFactory","Suffix","directives","priority","require","restrict","$$isolateBindings","aHrefSanitizationWhitelist","this.aHrefSanitizationWhitelist","regexp","imgSrcSanitizationWhitelist","this.imgSrcSanitizationWhitelist","this.debugInfoEnabled","enabled","safeAddClass","$element","className","addClass","$compileNodes","transcludeFn","maxPriority","ignoreDirective","previousCompileContext","nodeValue","compositeLinkFn","compileNodes","$$addScopeClass","namespace","publicLinkFn","cloneConnectFn","transcludeControllers","parentBoundTranscludeFn","futureParentElement","$linkNode","wrapTemplate","controllerName","$$addScopeInfo","nodeList","$rootElement","childLinkFn","childScope","childBoundTranscludeFn","stableNodeList","nodeLinkFnFound","linkFns","idx","nodeLinkFn","$new","transcludeOnThisElement","createBoundTranscludeFn","transclude","elementTranscludeOnThisElement","templateOnThisElement","attrs","linkFnFound","Attributes","collectDirectives","applyDirectivesToNode","$$element","terminal","previousBoundTranscludeFn","elementTransclusion","boundTranscludeFn","transcludedScope","cloneFn","controllers","containingScope","$$transcluded","attrsMap","$attr","addDirective","directiveNormalize","nName","isNgAttr","nAttrs","attributes","attrStartName","attrEndName","ngAttrName","NG_ATTR_BINDING","substr","directiveNName","multiElement","addAttrInterpolateDirective","addTextInterpolateDirective","NODE_TYPE_COMMENT","byPriority","groupScan","attrStart","attrEnd","depth","groupElementsLinkFnWrapper","linkFn","compileNode","templateAttrs","jqCollection","originalReplaceDirective","preLinkFns","postLinkFns","addLinkFns","pre","post","newIsolateScopeDirective","$$isolateScope","cloneAndAnnotateFn","getControllers","elementControllers","retrievalMethod","$searchElement","linkNode","controllersBoundTransclude","cloneAttachFn","hasElementTranscludeDirective","scopeToChild","controllerDirectives","$scope","$attrs","$transclude","controllerInstance","controllerAs","templateDirective","$$originalDirective","isolateScopeController","isolateBindingContext","identifier","bindToController","lastValue","parentGet","parentSet","compare","$observe","$$observers","$$scope","literal","b","assign","parentValueWatch","parentValue","$stateful","unwatch","$on","invokeLinkFn","template","templateUrl","terminalPriority","newScopeDirective","nonTlbTranscludeDirective","hasTranscludeDirective","hasTemplate","$compileNode","$template","childTranscludeFn","$$start","$$end","directiveValue","assertNoDuplicate","$$tlb","createComment","replaceWith","replaceDirective","contents","denormalizeTemplate","removeComments","templateNamespace","newTemplateAttrs","templateDirectives","unprocessedDirectives","markDirectivesAsIsolate","mergeTemplateAttributes","compileTemplateUrl","Math","max","tDirectives","startAttrName","endAttrName","srcAttr","dstAttr","$set","tAttrs","linkQueue","afterTemplateNodeLinkFn","afterTemplateChildLinkFn","beforeTemplateCompileNode","origAsyncDirective","derivedSyncDirective","getTrustedResourceUrl","then","content","tempTemplateAttrs","beforeTemplateLinkNode","linkRootElement","$$destroyed","oldClasses","delayedNodeLinkFn","ignoreChildLinkFn","diff","what","previousDirective","text","interpolateFn","textInterpolateCompileFn","templateNode","templateNodeParent","hasCompileParent","$$addBindingClass","textInterpolateLinkFn","$$addBindingInfo","expressions","interpolateFnWatchAction","wrapper","getTrustedContext","attrNormalizedName","HTML","RESOURCE_URL","allOrNothing","attrInterpolatePreLinkFn","$$inter","newValue","oldValue","$updateClass","elementsToRemove","newNode","firstElementToRemove","removeCount","j2","replaceChild","expando","k","kk","annotation","attributesToCopy","$normalize","$addClass","classVal","$removeClass","removeClass","newClasses","toAdd","tokenDifference","toRemove","writeAttr","booleanKey","aliasedKey","observer","trimmedSrcset","srcPattern","rawUris","nbrUrisWith2parts","floor","innerIdx","lastTuple","removeAttr","listeners","startSymbol","endSymbol","binding","isolated","noTemplate","dataName","PREFIX_REGEXP","str1","str2","values","tokens1","tokens2","token","jqNodes","globals","CNTRL_REG","register","this.register","allowGlobals","this.allowGlobals","addIdentifier","expression","later","ident","exception","cause","parseHeaders","headers","line","headersGetter","headersObj","transformData","fns","JSON_START","JSON_END","PROTECTION_PREFIX","CONTENT_TYPE_APPLICATION_JSON","defaults","transformResponse","defaultHttpResponseTransform","contentType","APPLICATION_JSON","transformRequest","d","common","patch","xsrfCookieName","xsrfHeaderName","useApplyAsync","this.useApplyAsync","interceptorFactories","interceptors","requestConfig","response","resp","status","reject","mergeHeaders","defHeaders","reqHeaders","defHeaderName","reqHeaderName","lowercaseDefHeaderName","execHeaders","headerContent","headerFn","header","chain","serverRequest","reqData","withCredentials","sendReq","promise","when","reversedInterceptors","interceptor","request","requestError","responseError","thenFn","rejectFn","success","promise.success","promise.error","done","headersString","statusText","resolveHttpPromise","resolvePromise","$applyAsync","$$phase","deferred","resolve","removePendingReq","pendingRequests","cachedResp","buildUrl","params","defaultCache","xsrfValue","urlIsSameOrigin","timeout","responseType","v","toISOString","interceptorFactory","createShortMethods","createShortMethodsWithData","createXhr","XMLHttpRequest","createHttpBackend","callbacks","$browserDefer","jsonpReq","callbackId","async","body","called","addEventListener","timeoutRequest","jsonpDone","xhr","abort","completeRequest","open","setRequestHeader","onload","xhr.onload","responseText","urlResolve","protocol","getAllResponseHeaders","onerror","onabort","send","this.startSymbol","this.endSymbol","escape","ch","mustHaveExpression","trustedContext","unescapeText","escapedStartRegexp","escapedEndRegexp","parseStringifyInterceptor","getTrusted","valueOf","newErr","$interpolateMinErr","endIndex","parseFns","textLength","expressionPositions","startSymbolLength","exp","endSymbolLength","compute","interpolationFn","$$watchDelegate","objectEquality","$watchGroup","interpolateFnWatcher","oldValues","currValue","$interpolate.startSymbol","$interpolate.endSymbol","count","invokeApply","setInterval","clearInterval","iteration","skipApply","$$intervalId","tick","notify","intervals","interval.cancel","NUMBER_FORMATS","DECIMAL_SEP","GROUP_SEP","PATTERNS","minInt","minFrac","maxFrac","posPre","posSuf","negPre","negSuf","gSize","lgSize","CURRENCY_SYM","DATETIME_FORMATS","MONTH","SHORTMONTH","DAY","SHORTDAY","AMPMS","medium","short","fullDate","longDate","mediumDate","shortDate","mediumTime","shortTime","pluralCat","num","encodePath","segments","parseAbsoluteUrl","absoluteUrl","locationObj","appBase","parsedUrl","$$protocol","$$host","hostname","$$port","port","DEFAULT_PORTS","parseAppUrl","relativeUrl","prefixed","$$path","pathname","$$search","search","$$hash","beginsWith","begin","whole","stripFile","lastIndexOf","LocationHtml5Url","basePrefix","$$html5","appBaseNoFile","$$parse","this.$$parse","pathUrl","$locationMinErr","$$compose","this.$$compose","$$url","$$absUrl","$$parseLinkUrl","this.$$parseLinkUrl","relHref","appUrl","prevAppUrl","rewrittenUrl","LocationHashbangUrl","hashPrefix","withoutBaseUrl","withoutHashUrl","windowsFilePathExp","firstPathSegmentMatch","LocationHashbangInHtml5Url","locationGetter","property","locationGetterSetter","preprocess","html5Mode","requireBase","rewriteLinks","this.hashPrefix","this.html5Mode","setBrowserUrlWithFallback","oldUrl","oldState","$$state","afterLocationChange","$broadcast","absUrl","LocationMode","initialUrl","IGNORE_URI_REGEXP","ctrlKey","metaKey","which","target","absHref","animVal","preventDefault","initializing","newUrl","newState","$digest","$locationWatch","currentReplace","$$replace","urlOrStateChanged","debug","debugEnabled","this.debugEnabled","flag","formatError","Error","sourceURL","consoleLog","console","logFn","log","hasApply","arg1","arg2","ensureSafeMemberName","fullExpression","$parseMinErr","ensureSafeObject","children","isConstant","setter","setValue","fullExp","propertyObj","cspSafeGetterFn","key0","key1","key2","key3","key4","cspSafeGetter","pathVal","getterFn","getterFnCache","pathKeys","pathKeysLength","code","evaledFnGetter","Function","sharedGetter","fn.assign","$parseOptions","wrapSharedExpression","wrapped","collectExpressionInputs","inputs","expressionInputDirtyCheck","oldValueOfValue","inputsWatchDelegate","parsedExpression","inputExpressions","$$inputs","lastResult","oldInputValue","expressionInputWatch","newInputValue","oldInputValueOfValues","expressionInputsWatch","changed","oneTimeWatchDelegate","oneTimeWatch","oneTimeListener","old","$$postDigest","oneTimeLiteralWatchDelegate","isAllDefined","allDefined","constantWatchDelegate","constantWatch","constantListener","addInterceptor","interceptorFn","oneTime","cacheKey","lexer","Lexer","parser","Parser","qFactory","nextTick","exceptionHandler","callOnce","resolveFn","Promise","simpleBind","scheduleProcessQueue","processScheduled","pending","Deferred","$qMinErr","TypeError","onFulfilled","onRejected","progressBack","catch","finally","handleCallback","$$reject","$$resolve","progress","makePromise","resolved","isResolved","callbackOutput","errback","$Q","Q","resolver","promises","results","requestAnimationFrame","webkitRequestAnimationFrame","mozRequestAnimationFrame","cancelAnimationFrame","webkitCancelAnimationFrame","mozCancelAnimationFrame","webkitCancelRequestAnimationFrame","rafSupported","raf","timer","TTL","$rootScopeMinErr","lastDirtyWatch","applyAsyncId","digestTtl","this.digestTtl","Scope","$id","$parent","$$watchers","$$nextSibling","$$prevSibling","$$childHead","$$childTail","$root","$$listeners","$$listenerCount","beginPhase","phase","decrementListenerCount","current","initWatchVal","flushApplyAsync","applyAsyncQueue","scheduleApplyAsync","isolate","destroyChild","child","$$ChildScope","this.$$ChildScope","watchExp","watcher","eq","deregisterWatch","watchExpressions","watchGroupAction","changeReactionScheduled","firstRun","newValues","deregisterFns","shouldCall","deregisterWatchGroup","expr","unwatchFn","watchGroupSubAction","$watchCollection","$watchCollectionInterceptor","_value","bothNaN","newItem","oldItem","internalArray","oldLength","changeDetected","newLength","internalObject","veryOldValue","trackVeryOldValue","changeDetector","initRun","$watchCollectionAction","watch","watchers","dirty","ttl","watchLog","logIdx","logMsg","asyncTask","asyncQueue","$eval","isNaN","next","postDigestQueue","eventName","this.$watchGroup","$applyAsyncExpression","namedListeners","$emit","targetScope","listenerArgs","currentScope","$$asyncQueue","$$postDigestQueue","$$applyAsyncQueue","sanitizeUri","uri","isImage","regex","normalizedVal","adjustMatcher","matcher","$sceMinErr","adjustMatchers","matchers","adjustedMatchers","SCE_CONTEXTS","resourceUrlWhitelist","resourceUrlBlacklist","this.resourceUrlWhitelist","this.resourceUrlBlacklist","matchUrl","generateHolderType","Base","holderType","trustedValue","$$unwrapTrustedValue","this.$$unwrapTrustedValue","holderType.prototype.valueOf","holderType.prototype.toString","htmlSanitizer","trustedValueHolderBase","byType","CSS","URL","JS","trustAs","maybeTrusted","allowed","this.enabled","documentMode","sce","isEnabled","sce.isEnabled","sce.getTrusted","parseAs","sce.parseAs","enumValue","lName","eventSupport","android","userAgent","navigator","boxee","vendorPrefix","vendorRegex","bodyStyle","transitions","animations","webkitTransition","webkitAnimation","pushState","hasEvent","msie","divElm","handleRequestFn","tpl","ignoreRequestError","handleError","totalPendingRequests","testability","testability.findBindings","opt_exactMatch","getElementsByClassName","matches","dataBinding","bindingName","testability.findModels","prefixes","attributeEquals","testability.getLocation","testability.setLocation","testability.whenStable","deferreds","$$timeoutId","timeout.cancel","base","urlParsingNode","requestUrl","originUrl","filters","suffix","currencyFilter","dateFilter","filterFilter","jsonFilter","limitToFilter","lowercaseFilter","numberFilter","orderByFilter","uppercaseFilter","comparator","comparatorType","predicates","predicates.check","objKey","filtered","$locale","formats","amount","currencySymbol","fractionSize","formatNumber","number","groupSep","decimalSep","isFinite","isNegative","abs","numStr","formatedText","hasExponent","toFixed","fractionLen","min","round","fraction","lgroup","group","padNumber","digits","neg","dateGetter","date","dateStrGetter","shortForm","getFirstThursdayOfYear","year","dayOfWeekOnFirst","getDay","weekGetter","firstThurs","getFullYear","thisThurs","getMonth","getDate","jsonStringToDate","string","R_ISO8601_STR","tzHour","tzMin","dateSetter","setUTCFullYear","setFullYear","timeSetter","setUTCHours","setHours","m","s","ms","parseFloat","format","timezone","NUMBER_STRING","DATE_FORMATS_SPLIT","setMinutes","getMinutes","getTimezoneOffset","DATE_FORMATS","object","limit","Infinity","out","sortPredicate","reverseOrder","reverseComparator","comp","descending","v1","v2","map","predicate","arrayCopy","ngDirective","FormController","controls","parentForm","$$parentForm","nullFormCtrl","$error","$$success","$pending","$name","$dirty","$pristine","$valid","$invalid","$submitted","$addControl","$rollbackViewValue","form.$rollbackViewValue","control","$commitViewValue","form.$commitViewValue","form.$addControl","$$renameControl","form.$$renameControl","newName","oldName","$removeControl","form.$removeControl","$setValidity","addSetValidityMethod","ctrl","set","unset","$setDirty","form.$setDirty","PRISTINE_CLASS","DIRTY_CLASS","$setPristine","form.$setPristine","setClass","SUBMITTED_CLASS","$setUntouched","form.$setUntouched","$setSubmitted","form.$setSubmitted","stringBasedInputType","$formatters","$isEmpty","baseInputType","VALIDITY_STATE_PROPERTY","placeholder","noevent","composing","ev","ngTrim","$viewValue","$$hasNativeValidators","$setViewValue","deferListener","keyCode","$render","ctrl.$render","$modelValue","createDateParser","mapping","iso","ISO_DATE_REGEXP","yyyy","MM","dd","HH","getHours","mm","ss","getSeconds","sss","getMilliseconds","part","NaN","createDateInputType","parseDate","dynamicDateInputType","parseObservedDateValue","badInputChecker","$options","previousDate","$$parserName","$parsers","parsedDate","$ngModelMinErr","timezoneOffset","ngMin","minVal","$validators","ctrl.$validators.min","$validate","ngMax","maxVal","ctrl.$validators.max","ctrl.$isEmpty","validity","badInput","typeMismatch","parseConstantExpr","fallback","parseFn","cachedToggleClass","switchValue","classCache","toggleValidationCss","validationErrorKey","isValid","VALID_CLASS","INVALID_CLASS","hasClass","setValidity","isObjectEmpty","PENDING_CLASS","combinedState","classDirective","arrayDifference","arrayClasses","classes","digestClassCounts","classCounts","classesToUpdate","ngClassWatchAction","$index","old$index","mod","REGEX_STRING_REGEXP","isActive_","active","full","major","minor","dot","codeName","JQLite._data","MOUSE_EVENT_MAP","mouseleave","mouseenter","optgroup","tbody","tfoot","colgroup","caption","thead","th","td","ready","trigger","fired","removeData","removeAttribute","css","lowercasedName","specified","getNamedItem","ret","getText","$dv","multiple","selected","nodeCount","jqLiteOn","types","related","relatedTarget","contains","off","one","onFn","replaceNode","insertBefore","contentDocument","prepend","wrapNode","detach","after","newElement","toggleClass","condition","classCondition","nextElementSibling","getElementsByTagName","extraParameters","dummyEvent","handlerArgs","eventFnsCopy","arg3","unbind","$$annotate","$animateMinErr","$$selectors","classNameFilter","this.classNameFilter","$$classNameFilter","runAnimationPostDigest","cancelFn","$$cancelFn","defer.promise.$$cancelFn","ngAnimatePostDigest","ngAnimateNotifyComplete","resolveElementClasses","hasClasses","cachedClassManipulation","op","asyncPromise","currentDefer","applyStyles","styles","from","to","animate","enter","leave","move","$$addClassImmediately","$$removeClassImmediately","add","createdCache","STORAGE_KEY","$$setClassImmediately","PATH_MATCH","locationPrototype","paramValue","Location","Location.prototype.state","CALL","APPLY","BIND","CONSTANTS","null","true","false","constantGetter","OPERATORS","+","-","*","/","%","===","!==","==","!=","<",">","<=",">=","&&","||","!","ESCAPE","lex","tokens","is","readString","peek","readNumber","isIdent","readIdent","isWhitespace","ch2","ch3","fn2","fn3","throwError","chars","isExpOperator","start","end","colStr","peekCh","lastDot","peekIndex","methodName","quote","rawString","hex","String","fromCharCode","rep","ZERO","statements","primary","expect","filterChain","consume","arrayDeclaration","functionCall","objectIndex","fieldAccess","msg","peekToken","e1","e2","e3","e4","t","unaryFn","right","$parseUnaryFn","binaryFn","left","isBranching","$parseBinaryFn","$parseStatements","inputFn","argsFn","$parseFilter","every","assignment","ternary","$parseAssignment","logicalOR","middle","$parseTernary","logicalAND","equality","relational","additive","multiplicative","unary","field","$parseFieldAccess","o","indexFn","$parseObjectIndex","fnGetter","contextGetter","expressionText","$parseFunctionCall","elementFns","elementFn","$parseArrayLiteral","valueFns","$parseObjectLiteral","yy","y","MMMM","MMM","M","H","hh","EEEE","EEE","ampmGetter","Z","timeZoneGetter","zone","paddedZone","ww","w","xlinkHref","propName","normalized","ngBooleanAttrWatchAction","htmlAttr","ngAttrAliasWatchAction","nullFormRenameControl","formDirectiveFactory","isNgForm","ngFormCompile","formElement","ngFormPreLink","handleFormSubmission","returnValue","parentFormCtrl","alias","URL_REGEXP","EMAIL_REGEXP","NUMBER_REGEXP","DATE_REGEXP","DATETIMELOCAL_REGEXP","WEEK_REGEXP","MONTH_REGEXP","TIME_REGEXP","DEFAULT_REGEXP","inputType","textInputType","weekParser","isoWeek","existingDate","week","minutes","hours","seconds","milliseconds","addDays","numberInputType","urlInputType","ctrl.$validators.url","emailInputType","email","ctrl.$validators.email","radioInputType","checked","checkboxInputType","trueValue","ngTrueValue","falseValue","ngFalseValue","ctrls","NgModelController","$asyncValidators","$viewChangeListeners","$untouched","$touched","parsedNgModel","pendingDebounce","ngModelGet","modelValue","getterSetter","ngModelSet","$$setOptions","this.$$setOptions","this.$isEmpty","currentValidationRunId","this.$setPristine","this.$setUntouched","UNTOUCHED_CLASS","TOUCHED_CLASS","$setTouched","this.$setTouched","this.$rollbackViewValue","$$lastCommittedViewValue","this.$validate","$$parseAndValidate","$$runValidators","this.$$runValidators","parseValid","viewValue","doneCallback","processSyncValidators","syncValidatorsValid","validator","processAsyncValidators","validatorPromises","allValid","validationDone","localValidationRunId","processParseErrors","errorKey","this.$commitViewValue","this.$$parseAndValidate","parserValid","prevModelValue","allowInvalid","$$writeModelToScope","this.$$writeModelToScope","this.$setViewValue","updateOnDefault","$$debounceViewValueCommit","this.$$debounceViewValueCommit","debounceDelay","debounce","ngModelWatch","formatters","ngModelCompile","ngModelPreLink","modelCtrl","formCtrl","ngModelPostLink","updateOn","ctrl.$validators.required","patternExp","ctrl.$validators.pattern","ctrl.$validators.maxlength","ctrl.$validators.minlength","trimValues","CONSTANT_VALUE_REGEXP","tplAttr","ngValueConstantLink","ngValueLink","valueWatchAction","that","$compile","ngBindCompile","templateElement","ngBindLink","ngBindWatchAction","ngBindTemplateCompile","ngBindTemplateLink","ngBindHtmlCompile","tElement","ngBindHtmlGetter","ngBindHtmlWatch","getStringValue","ngBindHtmlLink","ngBindHtmlWatchAction","getTrustedHtml","forceAsyncEvents","ngEventHandler","$event","previousElements","ngIfWatchAction","newScope","srcExp","onloadExp","autoScrollExp","autoscroll","changeCounter","previousElement","currentElement","cleanupLastIncludeContent","parseAsResourceUrl","ngIncludeWatchAction","afterAnimation","thisChangeId","namespaceAdaptedClone","BRACE","numberExp","whenExp","whens","whensExpFns","isWhen","attributeName","ngPluralizeWatch","ngPluralizeWatchAction","ngRepeatMinErr","updateScope","valueIdentifier","keyIdentifier","arrayLength","$first","$last","$middle","$odd","$even","ngRepeatCompile","ngRepeatEndComment","lhs","rhs","aliasAs","trackByExp","trackByExpGetter","trackByIdExpFn","trackByIdArrayFn","trackByIdObjFn","hashFnLocals","ngRepeatLink","lastBlockMap","ngRepeatAction","collection","previousNode","nextNode","nextBlockMap","collectionLength","trackById","collectionKeys","nextBlockOrder","trackByIdFn","itemKey","blockKey","ngRepeatTransclude","ngShowWatchAction","NG_HIDE_CLASS","tempClasses","NG_HIDE_IN_PROGRESS_CLASS","ngHideWatchAction","ngStyleWatchAction","newStyles","oldStyles","ngSwitchController","cases","selectedTranscludes","selectedElements","previousLeaveAnimations","selectedScopes","spliceFactory","ngSwitchWatchAction","selectedTransclude","caseElement","selectedScope","anchor","ngOptionsMinErr","NG_OPTIONS_REGEXP","nullModelCtrl","optionsMap","ngModelCtrl","unknownOption","databound","init","self.init","ngModelCtrl_","nullOption_","unknownOption_","addOption","self.addOption","removeOption","self.removeOption","hasOption","renderUnknownOption","self.renderUnknownOption","unknownVal","self.hasOption","setupAsSingle","selectElement","selectCtrl","ngModelCtrl.$render","emptyOption","setupAsMultiple","lastView","selectMultipleWatch","setupAsOptions","callExpression","exprFn","valueName","keyName","createIsSelectedFn","selectedSet","trackFn","trackIndex","isSelected","compareValueFn","selectAsFn","scheduleRendering","renderScheduled","render","updateLabelMap","labelMap","label","added","optionGroups","optionGroupNames","optionGroupName","optionGroup","existingParent","existingOptions","existingOption","valuesFn","groupIndex","anySelected","groupByFn","displayFn","nullOption","groupLength","optionGroupsCache","optGroupTemplate","lastElement","optionTemplate","optionsExp","selectAs","track","selectionChanged","selectedKey","viewValueFn","getLabels","toDisplay","ngModelCtrl.$isEmpty","nullSelectCtrl","selectCtrlName","interpolateWatchAction","$$csp"]
+"names":["window","document","undefined","minErr","isArrayLike","obj","isWindow","length","nodeType","isString","isArray","forEach","iterator","context","key","isFunction","hasOwnProperty","call","sortedKeys","keys","push","sort","forEachSorted","i","reverseParams","iteratorFn","value","nextUid","index","uid","digit","charCodeAt","join","String","fromCharCode","unshift","setHashKey","h","$$hashKey","extend","dst","arguments","int","str","parseInt","inherit","parent","extra","noop","identity","$","valueFn","isUndefined","isDefined","isObject","isNumber","isDate","toString","isRegExp","location","alert","setInterval","isElement","node","nodeName","prop","attr","find","map","results","list","indexOf","array","arrayRemove","splice","copy","source","destination","stackSource","stackDest","$evalAsync","$watch","ngMinErr","result","Date","getTime","RegExp","match","lastIndex","shallowCopy","src","charAt","equals","o1","o2","t1","t2","isNaN","keySet","bind","self","fn","curryArgs","slice","startIndex","apply","concat","toJsonReplacer","val","toJson","pretty","JSON","stringify","fromJson","json","parse","toBoolean","v","lowercase","startingTag","element","jqLite","clone","empty","e","elemHtml","append","html","TEXT_NODE","replace","tryDecodeURIComponent","decodeURIComponent","parseKeyValue","keyValue","key_value","split","toKeyValue","parts","arrayValue","encodeUriQuery","encodeUriSegment","pctEncodeSpaces","encodeURIComponent","angularInit","bootstrap","elements","appElement","module","names","NG_APP_CLASS_REGEXP","name","getElementById","querySelectorAll","exec","className","attributes","modules","doBootstrap","injector","tag","$provide","createInjector","invoke","scope","compile","animate","$apply","data","NG_DEFER_BOOTSTRAP","test","angular","resumeBootstrap","angular.resumeBootstrap","extraModules","snake_case","separator","SNAKE_CASE_REGEXP","letter","pos","toLowerCase","assertArg","arg","reason","assertArgFn","acceptArrayAnnotation","constructor","assertNotHasOwnProperty","getter","path","bindFnToScope","lastInstance","len","getBlockElements","nodes","startNode","endNode","nextSibling","setupModuleLoader","$injectorMinErr","$$minErr","factory","requires","configFn","invokeLater","provider","method","insertMethod","invokeQueue","moduleInstance","runBlocks","config","run","block","publishExternalAPI","version","uppercase","csp","angularModule","$LocaleProvider","ngModule","$$SanitizeUriProvider","$CompileProvider","directive","htmlAnchorDirective","inputDirective","formDirective","scriptDirective","selectDirective","styleDirective","optionDirective","ngBindDirective","ngBindHtmlDirective","ngBindTemplateDirective","ngClassDirective","ngClassEvenDirective","ngClassOddDirective","ngCloakDirective","ngControllerDirective","ngFormDirective","ngHideDirective","ngIfDirective","ngIncludeDirective","ngInitDirective","ngNonBindableDirective","ngPluralizeDirective","ngRepeatDirective","ngShowDirective","ngStyleDirective","ngSwitchDirective","ngSwitchWhenDirective","ngSwitchDefaultDirective","ngOptionsDirective","ngTranscludeDirective","ngModelDirective","ngListDirective","ngChangeDirective","requiredDirective","ngValueDirective","ngIncludeFillContentDirective","ngAttributeAliasDirectives","ngEventDirectives","$AnchorScrollProvider","$AnimateProvider","$BrowserProvider","$CacheFactoryProvider","$ControllerProvider","$DocumentProvider","$ExceptionHandlerProvider","$FilterProvider","$InterpolateProvider","$IntervalProvider","$HttpProvider","$HttpBackendProvider","$LocationProvider","$LogProvider","$ParseProvider","$RootScopeProvider","$QProvider","$SceProvider","$SceDelegateProvider","$SnifferProvider","$TemplateCacheProvider","$TimeoutProvider","$WindowProvider","$$RAFProvider","$$AsyncCallbackProvider","camelCase","SPECIAL_CHARS_REGEXP","_","offset","toUpperCase","MOZ_HACK_REGEXP","jqLitePatchJQueryRemove","dispatchThis","filterElems","getterIfNoArguments","removePatch","param","filter","fireEvent","set","setIndex","setLength","childIndex","children","shift","triggerHandler","childLength","jQuery","originalJqFn","$original","JQLite","trim","jqLiteMinErr","parsed","SINGLE_TAG_REGEXP","fragment","createDocumentFragment","HTML_REGEXP","tmp","appendChild","createElement","TAG_NAME_REGEXP","wrap","wrapMap","_default","innerHTML","XHTML_TAG_REGEXP","removeChild","firstChild","lastChild","j","jj","childNodes","textContent","createTextNode","jqLiteAddNodes","jqLiteClone","cloneNode","jqLiteDealoc","jqLiteRemoveData","jqLiteOff","type","unsupported","events","jqLiteExpandoStore","handle","eventHandler","removeEventListenerFn","expandoId","ng339","expandoStore","jqCache","$destroy","jqId","jqLiteData","isSetter","keyDefined","isSimpleGetter","jqLiteHasClass","selector","getAttribute","jqLiteRemoveClass","cssClasses","setAttribute","cssClass","jqLiteAddClass","existingClasses","root","jqLiteController","jqLiteInheritedData","documentElement","ii","parentNode","host","jqLiteEmpty","getBooleanAttrName","booleanAttr","BOOLEAN_ATTR","BOOLEAN_ELEMENTS","createEventHandler","event","preventDefault","event.preventDefault","returnValue","stopPropagation","event.stopPropagation","cancelBubble","target","srcElement","defaultPrevented","prevent","isDefaultPrevented","event.isDefaultPrevented","eventHandlersCopy","msie","elem","hashKey","nextUidFn","objType","HashMap","isolatedUid","this.nextUid","put","annotate","$inject","fnText","STRIP_COMMENTS","argDecl","FN_ARGS","FN_ARG_SPLIT","FN_ARG","all","underscore","last","modulesToLoad","supportObject","delegate","provider_","providerInjector","instantiate","$get","providerCache","providerSuffix","factoryFn","loadModules","moduleFn","loadedModules","get","_runBlocks","_invokeQueue","invokeArgs","message","stack","createInternalInjector","cache","getService","serviceName","INSTANTIATING","err","locals","args","Type","Constructor","returnedValue","prototype","instance","has","service","$injector","constant","instanceCache","decorator","decorFn","origProvider","orig$get","origProvider.$get","origInstance","instanceInjector","servicename","autoScrollingEnabled","disableAutoScrolling","this.disableAutoScrolling","$window","$location","$rootScope","getFirstAnchor","scroll","hash","elm","scrollIntoView","getElementsByName","scrollTo","autoScrollWatch","autoScrollWatchAction","$$rAF","$timeout","supported","Browser","$log","$sniffer","completeOutstandingRequest","outstandingRequestCount","outstandingRequestCallbacks","pop","error","startPoller","interval","setTimeout","check","pollFns","pollFn","pollTimeout","fireUrlChange","lastBrowserUrl","url","urlChangeListeners","listener","rawDocument","history","clearTimeout","pendingDeferIds","isMock","$$completeOutstandingRequest","$$incOutstandingRequestCount","self.$$incOutstandingRequestCount","notifyWhenNoOutstandingRequests","self.notifyWhenNoOutstandingRequests","callback","addPollFn","self.addPollFn","href","baseElement","reloadLocation","self.url","sameBase","stripHash","replaceState","pushState","substr","urlChangeInit","onUrlChange","self.onUrlChange","on","hashchange","$$checkUrlChange","baseHref","self.baseHref","lastCookies","lastCookieString","cookiePath","cookies","self.cookies","cookieLength","cookie","escape","warn","cookieArray","unescape","substring","defer","self.defer","delay","timeoutId","cancel","self.defer.cancel","deferId","$document","this.$get","cacheFactory","cacheId","options","refresh","entry","freshEnd","staleEnd","n","link","p","nextEntry","prevEntry","caches","size","stats","capacity","Number","MAX_VALUE","lruHash","lruEntry","remove","removeAll","destroy","info","cacheFactory.info","cacheFactory.get","$cacheFactory","$$sanitizeUriProvider","hasDirectives","Suffix","COMMENT_DIRECTIVE_REGEXP","CLASS_DIRECTIVE_REGEXP","EVENT_HANDLER_ATTR_REGEXP","this.directive","registerDirective","directiveFactory","$exceptionHandler","directives","priority","require","controller","restrict","aHrefSanitizationWhitelist","this.aHrefSanitizationWhitelist","regexp","imgSrcSanitizationWhitelist","this.imgSrcSanitizationWhitelist","$interpolate","$http","$templateCache","$parse","$controller","$sce","$animate","$$sanitizeUri","$compileNodes","transcludeFn","maxPriority","ignoreDirective","previousCompileContext","nodeValue","compositeLinkFn","compileNodes","safeAddClass","publicLinkFn","cloneConnectFn","transcludeControllers","parentBoundTranscludeFn","$linkNode","JQLitePrototype","eq","$element","addClass","nodeList","$rootElement","childLinkFn","childScope","childBoundTranscludeFn","nodeListLength","stableNodeList","Array","linkFns","nodeLinkFn","$new","transcludeOnThisElement","createBoundTranscludeFn","transclude","templateOnThisElement","attrs","linkFnFound","Attributes","collectDirectives","applyDirectivesToNode","$$element","terminal","previousBoundTranscludeFn","boundTranscludeFn","transcludedScope","cloneFn","controllers","scopeCreated","$$transcluded","attrsMap","$attr","nodeName_","addDirective","directiveNormalize","isNgAttr","nAttrs","attrStartName","attrEndName","specified","ngAttrName","NG_ATTR_BINDING","directiveNName","nName","addAttrInterpolateDirective","addTextInterpolateDirective","byPriority","groupScan","attrStart","attrEnd","depth","hasAttribute","$compileMinErr","groupElementsLinkFnWrapper","linkFn","compileNode","templateAttrs","jqCollection","originalReplaceDirective","preLinkFns","postLinkFns","addLinkFns","pre","post","directiveName","newIsolateScopeDirective","$$isolateScope","cloneAndAnnotateFn","getControllers","elementControllers","retrievalMethod","optional","linkNode","controllersBoundTransclude","cloneAttachFn","hasElementTranscludeDirective","isolateScope","LOCAL_REGEXP","templateDirective","$$originalDirective","definition","scopeName","attrName","mode","lastValue","parentGet","parentSet","compare","$$isolateBindings","$observe","$$observers","$$scope","literal","a","b","assign","parentValueWatch","parentValue","controllerDirectives","controllerInstance","controllerAs","$scope","scopeToChild","template","templateUrl","terminalPriority","newScopeDirective","nonTlbTranscludeDirective","hasTranscludeDirective","hasTemplate","$compileNode","$template","childTranscludeFn","$$start","$$end","directiveValue","assertNoDuplicate","$$tlb","createComment","replaceWith","replaceDirective","contents","denormalizeTemplate","newTemplateAttrs","templateDirectives","unprocessedDirectives","markDirectivesAsIsolate","mergeTemplateAttributes","compileTemplateUrl","Math","max","tDirectives","startAttrName","endAttrName","srcAttr","dstAttr","$set","tAttrs","linkQueue","afterTemplateNodeLinkFn","afterTemplateChildLinkFn","beforeTemplateCompileNode","origAsyncDirective","derivedSyncDirective","getTrustedResourceUrl","success","content","tempTemplateAttrs","beforeTemplateLinkNode","linkRootElement","oldClasses","response","code","headers","delayedNodeLinkFn","ignoreChildLinkFn","rootElement","diff","what","previousDirective","text","interpolateFn","textInterpolateCompileFn","templateNode","hasCompileParent","textInterpolateLinkFn","bindings","interpolateFnWatchAction","getTrustedContext","attrNormalizedName","HTML","RESOURCE_URL","attrInterpolatePreLinkFn","$$inter","newValue","oldValue","$updateClass","elementsToRemove","newNode","firstElementToRemove","removeCount","j2","replaceChild","expando","k","kk","annotation","$addClass","classVal","$removeClass","removeClass","newClasses","toAdd","tokenDifference","toRemove","setClass","writeAttr","booleanKey","removeAttr","listeners","startSymbol","endSymbol","PREFIX_REGEXP","str1","str2","values","tokens1","tokens2","token","CNTRL_REG","register","this.register","expression","identifier","exception","cause","parseHeaders","line","headersGetter","headersObj","transformData","fns","JSON_START","JSON_END","PROTECTION_PREFIX","CONTENT_TYPE_APPLICATION_JSON","defaults","d","interceptorFactories","interceptors","responseInterceptorFactories","responseInterceptors","$httpBackend","$browser","$q","requestConfig","transformResponse","resp","status","reject","transformRequest","mergeHeaders","defHeaders","reqHeaders","defHeaderName","reqHeaderName","common","lowercaseDefHeaderName","execHeaders","headerContent","headerFn","header","chain","serverRequest","reqData","withCredentials","sendReq","then","promise","when","reversedInterceptors","interceptor","request","requestError","responseError","thenFn","rejectFn","promise.success","promise.error","done","headersString","statusText","resolvePromise","$$phase","deferred","resolve","removePendingReq","idx","pendingRequests","cachedResp","buildUrl","params","defaultCache","xsrfValue","urlIsSameOrigin","xsrfCookieName","xsrfHeaderName","timeout","responseType","toISOString","interceptorFactory","responseFn","createShortMethods","createShortMethodsWithData","createXhr","XMLHttpRequest","ActiveXObject","createHttpBackend","callbacks","$browserDefer","jsonpReq","callbackId","script","async","body","called","addEventListenerFn","onreadystatechange","script.onreadystatechange","readyState","ABORTED","timeoutRequest","jsonpDone","xhr","abort","completeRequest","urlResolve","protocol","counter","open","setRequestHeader","xhr.onreadystatechange","responseHeaders","getAllResponseHeaders","responseText","send","this.startSymbol","this.endSymbol","mustHaveExpression","trustedContext","endIndex","hasInterpolation","startSymbolLength","exp","endSymbolLength","$interpolateMinErr","part","getTrusted","valueOf","newErr","$interpolate.startSymbol","$interpolate.endSymbol","count","invokeApply","clearInterval","iteration","skipApply","$$intervalId","tick","notify","intervals","interval.cancel","short","pluralCat","num","encodePath","segments","parseAbsoluteUrl","absoluteUrl","locationObj","appBase","parsedUrl","$$protocol","$$host","hostname","$$port","port","DEFAULT_PORTS","parseAppUrl","relativeUrl","prefixed","$$path","pathname","$$search","search","$$hash","beginsWith","begin","whole","trimEmptyHash","stripFile","lastIndexOf","LocationHtml5Url","basePrefix","$$html5","appBaseNoFile","$$parse","this.$$parse","pathUrl","$locationMinErr","$$compose","this.$$compose","$$url","$$absUrl","$$parseLinkUrl","this.$$parseLinkUrl","relHref","appUrl","prevAppUrl","rewrittenUrl","LocationHashbangUrl","hashPrefix","withoutBaseUrl","withoutHashUrl","windowsFilePathExp","firstPathSegmentMatch","LocationHashbangInHtml5Url","locationGetter","property","locationGetterSetter","preprocess","html5Mode","this.hashPrefix","prefix","this.html5Mode","afterLocationChange","oldUrl","$broadcast","absUrl","initialUrl","LocationMode","IGNORE_URI_REGEXP","ctrlKey","metaKey","which","absHref","animVal","newUrl","$digest","changeCounter","$locationWatch","currentReplace","$$replace","debug","debugEnabled","this.debugEnabled","flag","formatError","Error","sourceURL","consoleLog","console","logFn","log","hasApply","arg1","arg2","ensureSafeMemberName","fullExpression","$parseMinErr","getStringValue","ensureSafeObject","Object","setter","setValue","fullExp","propertyObj","unwrapPromises","promiseWarning","$$v","isPossiblyDangerousMemberName","cspSafeGetterFn","key0","key1","key2","key3","key4","eso","o","expensiveChecks","eso0","eso1","eso2","eso3","eso4","cspSafePromiseEnabledGetter","pathVal","cspSafeGetter","getterFnWithExtraArgs","s","l","getterFn","getterFnCache","getterFnCacheExpensive","getterFnCacheDefault","pathKeys","pathKeysLength","needsEnsureSafeObject","lookupJs","wrapWithEso","evaledFnGetter","Function","cacheDefault","cacheExpensive","$parseOptions","this.unwrapPromises","logPromiseWarnings","this.logPromiseWarnings","$filter","$parseOptionsExpensive","promiseWarningCache","parsedExpression","parseOptions","lexer","Lexer","parser","Parser","qFactory","nextTick","exceptionHandler","defaultCallback","defaultErrback","pending","ref","createInternalRejectedPromise","progress","errback","progressback","wrappedCallback","wrappedErrback","wrappedProgressback","catch","finally","makePromise","resolved","handleCallback","isResolved","callbackOutput","promises","requestAnimationFrame","webkitRequestAnimationFrame","mozRequestAnimationFrame","cancelAnimationFrame","webkitCancelAnimationFrame","mozCancelAnimationFrame","webkitCancelRequestAnimationFrame","rafSupported","raf","id","timer","TTL","$rootScopeMinErr","lastDirtyWatch","digestTtl","this.digestTtl","Scope","$id","$parent","$$watchers","$$nextSibling","$$prevSibling","$$childHead","$$childTail","$root","$$destroyed","$$asyncQueue","$$postDigestQueue","$$listeners","$$listenerCount","beginPhase","phase","compileToFn","decrementListenerCount","current","initWatchVal","isolate","child","$$childScopeClass","this.$$childScopeClass","watchExp","objectEquality","watcher","listenFn","watcher.fn","newVal","oldVal","originalFn","deregisterWatch","$watchCollection","veryOldValue","trackVeryOldValue","changeDetected","objGetter","internalArray","internalObject","initRun","oldLength","$watchCollectionWatch","newLength","bothNaN","$watchCollectionAction","watch","watchers","asyncQueue","postDigestQueue","dirty","ttl","watchLog","logIdx","logMsg","asyncTask","$eval","next","$on","this.$watch","expr","$$postDigest","namedListeners","indexOfListener","$emit","listenerArgs","array1","currentScope","sanitizeUri","uri","isImage","regex","normalizedVal","adjustMatcher","matcher","$sceMinErr","adjustMatchers","matchers","adjustedMatchers","SCE_CONTEXTS","resourceUrlWhitelist","resourceUrlBlacklist","this.resourceUrlWhitelist","this.resourceUrlBlacklist","generateHolderType","Base","holderType","trustedValue","$$unwrapTrustedValue","this.$$unwrapTrustedValue","holderType.prototype.valueOf","holderType.prototype.toString","htmlSanitizer","trustedValueHolderBase","byType","CSS","URL","JS","trustAs","maybeTrusted","allowed","enabled","this.enabled","$sceDelegate","msieDocumentMode","sce","isEnabled","sce.isEnabled","sce.getTrusted","parseAs","sce.parseAs","sceParseAsTrusted","enumValue","lName","eventSupport","android","userAgent","navigator","boxee","documentMode","vendorPrefix","vendorRegex","bodyStyle","style","transitions","animations","webkitTransition","webkitAnimation","hasEvent","divElm","deferreds","$$timeoutId","timeout.cancel","base","urlParsingNode","requestUrl","originUrl","filters","suffix","currencyFilter","dateFilter","filterFilter","jsonFilter","limitToFilter","lowercaseFilter","numberFilter","orderByFilter","uppercaseFilter","comparator","comparatorType","predicates","predicates.check","objKey","filtered","$locale","formats","NUMBER_FORMATS","amount","currencySymbol","CURRENCY_SYM","formatNumber","PATTERNS","GROUP_SEP","DECIMAL_SEP","number","fractionSize","pattern","groupSep","decimalSep","isFinite","isNegative","abs","numStr","formatedText","hasExponent","toFixed","fractionLen","min","minFrac","maxFrac","round","fraction","lgroup","lgSize","group","gSize","negPre","posPre","negSuf","posSuf","padNumber","digits","neg","dateGetter","date","dateStrGetter","shortForm","jsonStringToDate","string","R_ISO8601_STR","tzHour","tzMin","dateSetter","setUTCFullYear","setFullYear","timeSetter","setUTCHours","setHours","m","ms","parseFloat","format","DATETIME_FORMATS","NUMBER_STRING","DATE_FORMATS_SPLIT","DATE_FORMATS","object","input","limit","Infinity","sortPredicate","reverseOrder","reverseComparator","comp","descending","v1","v2","predicate","ngDirective","FormController","toggleValidCss","isValid","validationErrorKey","VALID_CLASS","INVALID_CLASS","form","parentForm","nullFormCtrl","invalidCount","errors","$error","controls","$name","ngForm","$dirty","$pristine","$valid","$invalid","$addControl","PRISTINE_CLASS","form.$addControl","control","$removeControl","form.$removeControl","queue","validationToken","$setValidity","form.$setValidity","$setDirty","form.$setDirty","DIRTY_CLASS","$setPristine","form.$setPristine","validate","ctrl","validatorName","validity","testFlags","flags","addNativeHtml5Validators","badFlags","ignoreFlags","$$hasNativeValidators","$parsers","validator","textInputType","VALIDITY_STATE_PROPERTY","placeholder","noevent","$$validityState","composing","ev","ngTrim","revalidate","$viewValue","$setViewValue","deferListener","keyCode","$render","ctrl.$render","$isEmpty","ngPattern","patternValidator","patternObj","$formatters","ngMinlength","minlength","minLengthValidator","ngMaxlength","maxlength","maxLengthValidator","classDirective","arrayDifference","arrayClasses","classes","digestClassCounts","classCounts","classesToUpdate","ngClassWatchAction","$index","old$index","mod","isActive_","active","querySelector","addEventListener","attachEvent","removeEventListener","detachEvent","_data","JQLite._data","optgroup","option","tbody","tfoot","colgroup","caption","thead","th","td","ready","trigger","fired","removeAttribute","css","currentStyle","lowercasedName","getNamedItem","ret","getText","textProp","NODE_TYPE_TEXT_PROPERTY","$dv","multiple","selected","nodeCount","onFn","eventFns","contains","compareDocumentPosition","adown","bup","eventmap","related","relatedTarget","one","off","replaceNode","insertBefore","contentDocument","prepend","wrapNode","after","newElement","toggleClass","condition","classCondition","nextElementSibling","getElementsByTagName","extraParameters","dummyEvent","handlerArgs","eventName","eventFnsCopy","arg3","unbind","$animateMinErr","$$selectors","classNameFilter","this.classNameFilter","$$classNameFilter","$$asyncCallback","enter","leave","move","add","PATH_MATCH","paramValue","CALL","APPLY","BIND","OPERATORS","null","true","false","+","-","*","/","%","^","===","!==","==","!=","<",">","<=",">=","&&","||","&","|","!","ESCAPE","lex","ch","lastCh","tokens","is","readString","peek","readNumber","isIdent","readIdent","isWhitespace","ch2","ch3","fn2","fn3","throwError","chars","was","isExpOperator","start","end","colStr","peekCh","ident","lastDot","peekIndex","methodName","quote","rawString","hex","rep","ZERO","statements","primary","expect","filterChain","consume","arrayDeclaration","functionCall","objectIndex","fieldAccess","msg","peekToken","e1","e2","e3","e4","t","unaryFn","right","ternaryFn","left","middle","binaryFn","statement","argsFn","fnInvoke","assignment","ternary","logicalOR","logicalAND","equality","relational","additive","multiplicative","unary","field","indexFn","contextGetter","fnPtr","elementFns","allConstant","elementFn","keyValues","ampmGetter","getHours","AMPMS","timeZoneGetter","zone","getTimezoneOffset","paddedZone","xlinkHref","propName","normalized","ngBooleanAttrWatchAction","formDirectiveFactory","isNgForm","formElement","action","preventDefaultListener","parentFormCtrl","alias","URL_REGEXP","EMAIL_REGEXP","NUMBER_REGEXP","inputType","numberInputType","numberBadFlags","minValidator","maxValidator","urlInputType","urlValidator","emailInputType","emailValidator","radioInputType","checked","checkboxInputType","trueValue","ngTrueValue","falseValue","ngFalseValue","ctrl.$isEmpty","NgModelController","$modelValue","NaN","$viewChangeListeners","ngModelGet","ngModel","ngModelSet","this.$isEmpty","inheritedData","this.$setValidity","this.$setPristine","this.$setViewValue","ngModelWatch","formatters","ctrls","modelCtrl","formCtrl","ngChange","required","ngList","viewValue","CONSTANT_VALUE_REGEXP","tpl","tplAttr","ngValue","ngValueConstantLink","ngValueLink","valueWatchAction","templateElement","ngBind","ngBindWatchAction","ngBindTemplate","tElement","ngBindHtml","ngBindHtmlWatchAction","getTrustedHtml","forceAsyncEvents","ngEventHandler","$transclude","previousElements","ngIf","ngIfWatchAction","$anchorScroll","srcExp","ngInclude","onloadExp","onload","autoScrollExp","autoscroll","previousElement","currentElement","cleanupLastIncludeContent","parseAsResourceUrl","ngIncludeWatchAction","afterAnimation","thisChangeId","newScope","$compile","ngInit","BRACE","numberExp","whenExp","whens","whensExpFns","isWhen","attributeName","ngPluralizeWatch","ngPluralizeWatchAction","ngRepeatMinErr","ngRepeat","trackByExpGetter","trackByIdExpFn","trackByIdArrayFn","trackByIdObjFn","valueIdentifier","keyIdentifier","hashFnLocals","lhs","rhs","trackByExp","lastBlockMap","ngRepeatAction","collection","previousNode","nextNode","nextBlockMap","arrayLength","trackByIdFn","collectionKeys","nextBlockOrder","trackById","$first","$last","$middle","$odd","$even","ngShow","ngShowWatchAction","ngHide","ngHideWatchAction","ngStyle","ngStyleWatchAction","newStyles","oldStyles","ngSwitchController","cases","selectedTranscludes","selectedElements","selectedScopes","ngSwitch","ngSwitchWatchAction","change","selectedTransclude","selectedScope","caseElement","anchor","ngSwitchWhen","$attrs","ngOptionsMinErr","NG_OPTIONS_REGEXP","nullModelCtrl","optionsMap","ngModelCtrl","unknownOption","databound","init","self.init","ngModelCtrl_","nullOption_","unknownOption_","addOption","self.addOption","removeOption","self.removeOption","hasOption","renderUnknownOption","self.renderUnknownOption","unknownVal","self.hasOption","setupAsSingle","selectElement","selectCtrl","ngModelCtrl.$render","emptyOption","setupAsMultiple","lastView","items","selectMultipleWatch","setupAsOptions","render","optionGroups","optionGroupNames","optionGroupName","optionGroup","existingParent","existingOptions","existingOption","modelValue","valuesFn","keyName","groupIndex","selectedSet","trackFn","trackIndex","valueName","lastElement","groupByFn","modelCast","label","displayFn","nullOption","groupLength","optionGroupsCache","optGroupTemplate","optionTemplate","optionsExp","track","optionElement","toDisplay","ngOptions","ngModelCtrl.$isEmpty","nullSelectCtrl","selectCtrlName","interpolateWatchAction","$$csp"]
 }
diff --git a/src/main/resources/META-INF/resources/designer/lib/angularjs-dropdown-multiselect-new.js b/src/main/resources/META-INF/resources/designer/lib/angularjs-dropdown-multiselect-new.js
deleted file mode 100644 (file)
index 6675e49..0000000
+++ /dev/null
@@ -1,296 +0,0 @@
-'use strict';
-
-var directiveModule = angular.module('angularjs-dropdown-multiselect-new', ['vs-repeat']);
-
-directiveModule.directive('ngDropdownMultiselectNew', ['$filter', '$document', '$compile', '$parse',
-    function ($filter, $document, $compile, $parse) {
-
-        return {
-            restrict: 'AE',
-            scope: {
-                selectedModel: '=',
-                options: '=',
-                extraSettings: '=',
-                events: '=',
-                searchFilter: '=?',
-                translationTexts: '=',
-                groupBy: '@'
-            },
-            template: function (element, attrs) {
-                var checkboxes = attrs.checkboxes ? true : false;
-                var groups = attrs.groupBy ? true : false;
-
-                var template = '<div class="multiselect-parent btn-group dropdown-multiselect" style="width:100%;">';
-                template += '<div style="width:100%;" class="dropdown-toggle" ng-class="settings.buttonClasses" ng-click="toggleDropdown()">{{getButtonText()}}&nbsp;<span class="caret"></span></div>';
-                template += '<ul class="dropdown-menu dropdown-menu-form" ng-style="{display: open ? \'block\' : \'none\', height : settings.scrollable ? settings.scrollableHeight : \'auto\' }" style="overflow: scroll; width:280px;" >';
-                template += '<li ng-hide="!settings.showCheckAll"><a data-ng-click="selectAll()"><span class="glyphicon glyphicon-ok"></span>  {{texts.checkAll}}</a>';
-                template += '<li ng-show="settings.showUncheckAll"><a data-ng-click="deselectAll();"><span class="glyphicon glyphicon-remove"></span>   {{texts.uncheckAll}}</a></li>';
-                template += '<li ng-hide="(!settings.showCheckAll) && !settings.showUncheckAll" class="divider"></li>';
-                template += '<li ng-show="settings.enableSearch"><div class="dropdown-header"><input type="text" class="form-control" style="width: 100%;" ng-model="searchFilter" placeholder="{{texts.searchPlaceholder}}" /></li>';
-                template += '<li ng-show="settings.enableSearch" class="divider"></li>';
-                       
-                template += '<div style="width:98%;" vs-repeat> ';
-                
-                if (groups) {
-                    template += '<li ng-repeat-start="option in orderedItems | filter: searchFilter" ng-show="getPropertyForObject(option, settings.groupBy) !== getPropertyForObject(orderedItems[$index - 1], settings.groupBy)" role="presentation" class="dropdown-header">{{ getGroupTitle(getPropertyForObject(option, settings.groupBy)) }}</li>';
-                    template += '<li ng-repeat-end role="presentation">';
-                } else {
-                    template += '<li role="presentation" ng-repeat="option in options| filter: searchFilter">';
-                }
-
-                template += '<a role="menuitem" tabindex="-1" ng-click="setSelectedItem(getPropertyForObject(option,settings.idProp))">';
-
-                if (checkboxes) {
-                    template += '<div class="checkbox"><label><input class="checkboxInput" type="checkbox" ng-click="checkboxClick($event, getPropertyForObject(option,settings.idProp))" ng-checked="isChecked(getPropertyForObject(option,settings.idProp))" /> {{getPropertyForObject(option, settings.displayProp)}}</label></div></a>';
-                } else {
-                    template += '<span data-ng-class="{\'glyphicon glyphicon-ok\': isChecked(getPropertyForObject(option,settings.idProp))}"></span> {{getPropertyForObject(option, settings.displayProp)}}</a>';
-                }
-
-                template += '</li>';
-                template += '</div>';
-                
-
-                template += '<li class="divider" ng-show="settings.selectionLimit > 1"></li>';
-                template += '<li role="presentation" ng-show="settings.selectionLimit > 1"><a role="menuitem">{{selectedModel.length}} {{texts.selectionOf}} {{settings.selectionLimit}} {{texts.selectionCount}}</a></li>';
-
-                template += '</ul>';
-                template += '</div>';
-
-                element.html(template);
-            },
-            link: function ($scope, $element, $attrs) {
-                var $dropdownTrigger = $element.children()[0];
-                
-                $scope.toggleDropdown = function () {
-                    $scope.open = !$scope.open;
-                };
-
-                $scope.checkboxClick = function ($event, id) {
-                    $scope.setSelectedItem(id);
-                    $event.stopImmediatePropagation();
-                };
-
-                $scope.externalEvents = {
-                    onItemSelect: angular.noop,
-                    onItemDeselect: angular.noop,
-                    onSelectAll: angular.noop,
-                    onDeselectAll: angular.noop,
-                    onInitDone: angular.noop,
-                    onMaxSelectionReached: angular.noop
-                };
-
-                $scope.settings = {
-                    dynamicTitle: true,
-                    scrollable: false,
-                    scrollableHeight: '300px',
-                    closeOnBlur: true,
-                    displayProp: 'label',
-                    idProp: 'id',
-                    externalIdProp: 'id',
-                    enableSearch: false,
-                    selectionLimit: 0,
-                    showCheckAll: false,
-                    showUncheckAll: false,
-                    closeOnSelect: false,
-                    buttonClasses: 'btn btn-default',
-                    closeOnDeselect: false,
-                    groupBy: $attrs.groupBy || undefined,
-                    groupByTextProvider: null,
-                    smartButtonMaxItems: 0,
-                    smartButtonTextConverter: angular.noop
-                };
-
-                $scope.texts = {
-                    checkAll: 'Check All',
-                    uncheckAll: 'Uncheck All',
-                    selectionCount: 'checked',
-                    selectionOf: '/',
-                    searchPlaceholder: 'Search...',
-                    buttonDefaultText: 'Select',
-                    dynamicButtonTextSuffix: 'checked'
-                };
-
-                $scope.searchFilter = $scope.searchFilter || '';
-
-                if (angular.isDefined($scope.settings.groupBy)) {
-                    $scope.$watch('options', function (newValue) {
-                        if (angular.isDefined(newValue)) {
-                            $scope.orderedItems = $filter('orderBy')(newValue, $scope.settings.groupBy);
-                        }
-                    });
-                }
-
-                angular.extend($scope.settings, $scope.extraSettings || []);
-                angular.extend($scope.externalEvents, $scope.events || []);
-                angular.extend($scope.texts, $scope.translationTexts);
-
-                $scope.singleSelection = $scope.settings.selectionLimit === 1;
-
-                function getFindObj(id) {
-                    var findObj = {};
-
-                    if ($scope.settings.externalIdProp === '') {
-                        findObj[$scope.settings.idProp] = id;
-                    } else {
-                        findObj[$scope.settings.externalIdProp] = id;
-                    }
-
-                    return findObj;
-                }
-
-                function clearObject(object) {
-                    for (var prop in object) {
-                        delete object[prop];
-                    }
-                }
-
-                if ($scope.singleSelection) {
-                    if (angular.isArray($scope.selectedModel) && $scope.selectedModel.length === 0) {
-                        clearObject($scope.selectedModel);
-                    }
-                }
-
-                if ($scope.settings.closeOnBlur) {
-                    $document.on('click', function (e) {
-                        var target = e.target.parentElement;
-                        var parentFound = false;
-
-                        while (angular.isDefined(target) && target !== null && !parentFound) {
-                            if (_.contains(target.className.split(' '), 'multiselect-parent') && !parentFound) {
-                                if(target === $dropdownTrigger) {
-                                    parentFound = true;
-                                }
-                            }
-                            target = target.parentElement;
-                        }
-
-                        if (!parentFound) {
-                            $scope.$apply(function () {
-                                $scope.open = false;
-                            });
-                        }
-                    });
-                }
-
-                $scope.getGroupTitle = function (groupValue) {
-                    if ($scope.settings.groupByTextProvider !== null) {
-                        return $scope.settings.groupByTextProvider(groupValue);
-                    }
-
-                    return groupValue;
-                };
-
-                $scope.getButtonText = function () {
-                    if ($scope.settings.dynamicTitle && ($scope.selectedModel.length > 0 || (angular.isObject($scope.selectedModel) && _.keys($scope.selectedModel).length > 0))) {
-                        if ($scope.settings.smartButtonMaxItems > 0) {
-                            var itemsText = [];
-
-                            angular.forEach($scope.options, function (optionItem) {
-                                if ($scope.isChecked($scope.getPropertyForObject(optionItem, $scope.settings.idProp))) {
-                                    var displayText = $scope.getPropertyForObject(optionItem, $scope.settings.displayProp);
-                                    var converterResponse = $scope.settings.smartButtonTextConverter(displayText, optionItem);
-
-                                    itemsText.push(converterResponse ? converterResponse : displayText);
-                                }
-                            });
-
-                            if ($scope.selectedModel.length > $scope.settings.smartButtonMaxItems) {
-                                itemsText = itemsText.slice(0, $scope.settings.smartButtonMaxItems);
-                                itemsText.push('...');
-                            }
-
-                            return itemsText.join(', ');
-                        } else {
-                            var totalSelected;
-
-                            if ($scope.singleSelection) {
-                                totalSelected = ($scope.selectedModel !== null && angular.isDefined($scope.selectedModel[$scope.settings.idProp])) ? 1 : 0;
-                            } else {
-                                totalSelected = angular.isDefined($scope.selectedModel) ? $scope.selectedModel.length : 0;
-                            }
-
-                            if (totalSelected === 0) {
-                                return $scope.texts.buttonDefaultText;
-                            } else {
-                                return totalSelected + ' ' + $scope.texts.dynamicButtonTextSuffix;
-                            }
-                        }
-                    } else {
-                        return $scope.texts.buttonDefaultText;
-                    }
-                };
-
-                $scope.getPropertyForObject = function (object, property) {
-                    if (angular.isDefined(object) && object.hasOwnProperty(property)) {
-                        return object[property];
-                    }
-
-                    return '';
-                };
-
-                $scope.selectAll = function () {
-                    $scope.deselectAll(false);
-                    $scope.externalEvents.onSelectAll();
-
-                    angular.forEach($scope.options, function (value) {
-                        $scope.setSelectedItem(value[$scope.settings.idProp], true);
-                    });
-                };
-
-                $scope.deselectAll = function (sendEvent) {
-                    sendEvent = sendEvent || true;
-
-                    if (sendEvent) {
-                        $scope.externalEvents.onDeselectAll();
-                    }
-
-                    if ($scope.singleSelection) {
-                        clearObject($scope.selectedModel);
-                    } else {
-                        $scope.selectedModel.splice(0, $scope.selectedModel.length);
-                    }
-                };
-
-                $scope.setSelectedItem = function (id, dontRemove) {
-                    var findObj = getFindObj(id);
-                    var finalObj = null;
-
-                    if ($scope.settings.externalIdProp === '') {
-                        finalObj = _.find($scope.options, findObj);
-                    } else {
-                        finalObj = findObj;
-                    }
-
-                    if ($scope.singleSelection) {
-                        clearObject($scope.selectedModel);
-                        angular.extend($scope.selectedModel, finalObj);
-                        $scope.externalEvents.onItemSelect(finalObj);
-
-                        return;
-                    }
-
-                    dontRemove = dontRemove || false;
-
-                    var exists = _.findIndex($scope.selectedModel, findObj) !== -1;
-
-                    if (!dontRemove && exists) {
-                        $scope.selectedModel.splice(_.findIndex($scope.selectedModel, findObj), 1);
-                        $scope.externalEvents.onItemDeselect(findObj);
-                    } else if (!exists && ($scope.settings.selectionLimit === 0 || $scope.selectedModel.length < $scope.settings.selectionLimit)) {
-                        $scope.selectedModel.push(finalObj);
-                        $scope.externalEvents.onItemSelect(finalObj);
-                    }
-                };
-
-                $scope.isChecked = function (id) {
-                    if ($scope.singleSelection) {
-                        return $scope.selectedModel !== null && angular.isDefined($scope.selectedModel[$scope.settings.idProp]) && $scope.selectedModel[$scope.settings.idProp] === getFindObj(id)[$scope.settings.idProp];
-                    }
-
-                    return _.findIndex($scope.selectedModel, getFindObj(id)) !== -1;
-                };
-
-                $scope.externalEvents.onInitDone();
-            }
-        };
-}]);
diff --git a/src/main/resources/META-INF/resources/designer/lib/angularjs-dropdown-multiselect-old.js b/src/main/resources/META-INF/resources/designer/lib/angularjs-dropdown-multiselect-old.js
deleted file mode 100644 (file)
index 7a67bae..0000000
+++ /dev/null
@@ -1,433 +0,0 @@
-'use strict';
-
-var directiveModule = angular.module('angularjs-dropdown-multiselect-old', ['ngRoute', 
-                                                                        'ngResource',                                                                        
-                                                                        'hljs',
-                                                                        'ui.bootstrap',
-                                                                        'angular-loading-bar', 
-                                                                        'ngAnimate',
-                                                                        'dialogs.main',
-                                                                        'ui.grid', 
-                                                                        'ui.grid.resizeColumns',
-                                                                        'ui.grid.paging',
-                                                                        'ui.grid.selection',
-                                                                        'ui.grid.cellNav',
-                                                                        'ui.grid.pinning',
-                                                                        'ngSanitize','vs-repeat']);
-
-directiveModule.directive('ngDropdownMultiselectOld', ['$filter', '$document', '$compile', '$parse','$rootScope', '$resource', '$http','$location',
-    function ($filter, $document, $compile, $parse, $rootScope, $resource, $http,$location) 
-    {
-       
-               //console.log($http);
-
-        return {
-            restrict: 'AE',
-            scope: {
-                selectedModel: '=',
-                options: '=',
-                extraSettings: '=',
-                events: '=',
-                searchFilter: '=?',
-                translationTexts: '=',
-                groupBy: '@'
-            },
-            template: function (element, attrs) 
-            {
-                var checkboxes = attrs.checkboxes ? true : false;
-                var groups = attrs.groupBy ? true : false;
-
-                var template = '<div class="multiselect-parent btn-group dropdown-multiselect" style="width:100%;">';
-                template += '<div style="width:98%;" class="dropdown-toggle" ng-class="settings.buttonClasses" ng-click="toggleDropdown()">{{getButtonText()}}&nbsp;<span class="caret"></span></div>';
-                template += '<ul class="dropdown-menu dropdown-menu-form" ng-style="{display: open ? \'block\' : \'none\', height : settings.scrollable ? settings.scrollableHeight : \'auto\' }" style="overflow: scroll; width:280px;" >';
-                template += '<li ng-show="settings.enableSearch"><div class="dropdown-header"><input type="text"  class="form-control" style="width: 100%;" ng-model="searchFilter"  ng-focus="this"  placeholder="{{texts.searchPlaceholder}}" /></li>';
-                template += '<li ng-show="settings.enableSearch" class="divider"></li>';
-                       
-                template += '<div>';
-                
-                if (groups) {
-                       
-                    template += '<li ng-repeat-start="option in orderedItems | filter: searchFilter" ng-show="getPropertyForObject(option, settings.groupBy) !== getPropertyForObject(orderedItems[$index - 1], settings.groupBy)" role="presentation" class="dropdown-header1">{{ getGroupTitle(getPropertyForObject(option, settings.groupBy)) }}</li>';
-                    template += '<li ng-repeat-end role="presentation">';
-                } else {
-                    template += '<li role="presentation" ng-repeat="option in options| filter: searchFilter">';
-                }
-
-                template += '<a role="menuitem" tabindex="-1" ng-click="setSelectedItem(getPropertyForObject(option,settings.idProp))">';
-
-                if (checkboxes) {
-                    template += '<div class="checkbox"><label><input class="checkboxInput" type="checkbox" ng-click="checkboxClick($event, getPropertyForObject(option,settings.idProp))" ng-checked="isChecked(getPropertyForObject(option,settings.idProp))" /> {{getPropertyForObject(option, settings.displayProp)}}</label></div></a>';
-                } else {
-                    template += '<span data-ng-class="{\'glyphicon glyphicon-ok\': isChecked(getPropertyForObject(option,settings.idProp))}"></span> {{getPropertyForObject(option, settings.displayProp)}}</a>';
-                }
-
-                template += '</li>';
-                template += '</div>';
-                
-                template += '<li ng-hide="(!settings.showCheckAll) && !settings.showUncheckAll" class="divider"></li>';
-                template += '<li ng-hide="!settings.showCheckAll"><a data-ng-click="selectAll()"><span class="glyphicon glyphicon-ok"></span> {{texts.checkAll}}</a>';
-                template += '<li ng-show="settings.showUncheckAll"><a data-ng-click="deselectAll();"><span class="glyphicon glyphicon-remove"></span> {{texts.uncheckAll}}</a></li>';
-
-                template += '<li class="divider" ng-show="settings.selectionLimit > 1"></li>';
-                template += '<li role="presentation" ng-show="settings.selectionLimit > 1"><a role="menuitem">{{selectedModel.length}} {{texts.selectionOf}} {{settings.selectionLimit}} {{texts.selectionCount}}</a></li>';
-
-                template += '</ul>';
-                template += '</div>';
-
-                element.html(template);
-            },
-            link: function ($scope, $element, $attrs) 
-            {
-                var $dropdownTrigger = $element.children()[0];
-            
-               
-                $scope.toggleDropdown = function () {
-                    $scope.open = !$scope.open;
-                   
-                   
-                    
-                    
-                };
-
-                $scope.checkboxClick = function ($event, id) {
-                    $scope.setSelectedItem(id);
-                    $event.stopImmediatePropagation();
-                };
-
-                $scope.externalEvents = 
-                {
-                    onItemSelect: angular.noop,
-                    onItemDeselect: angular.noop,
-                    onSelectAll: angular.noop,
-                    onDeselectAll: angular.noop,
-                    onInitDone: angular.noop,
-                    onMaxSelectionReached: angular.noop
-                };
-
-                $scope.settings = {
-                    dynamicTitle: true,
-                    scrollable: false,
-                    scrollableHeight: '300px',
-                    closeOnBlur: true,
-                    displayProp: 'id',
-                    idProp: 'id',
-                    externalIdProp: 'id',
-                    enableSearch: false,
-                    selectionLimit: 0,
-                    showCheckAll: true,
-                    showUncheckAll: true,
-                    closeOnSelect: false,
-                    buttonClasses: 'btn btn-default',
-                    closeOnDeselect: false,
-                    groupBy: $attrs.groupBy || undefined,
-                    groupByTextProvider: null,
-                    smartButtonMaxItems: 0,
-                    smartButtonTextConverter: angular.noop
-                };
-
-                $scope.texts = {
-                    checkAll: 'Check All',
-                    uncheckAll: 'Uncheck All',
-                    selectionCount: 'checked',
-                    selectionOf: '/',
-                    searchPlaceholder: 'Search...',
-                    buttonDefaultText: 'Select',
-                    dynamicButtonTextSuffix: 'checked'
-                };
-
-                $scope.searchFilter = $scope.searchFilter || '';
-
-                if (angular.isDefined($scope.settings.groupBy)) 
-                {
-                    $scope.$watch('options', function (newValue)
-                    {
-                        if (angular.isDefined(newValue)) 
-                        {
-                            $scope.orderedItems = $filter('orderBy')(newValue, $scope.settings.groupBy);
-                        }
-                    });
-                }
-
-                angular.extend($scope.settings, $scope.extraSettings || []);
-                angular.extend($scope.externalEvents, $scope.events || []);
-                angular.extend($scope.texts, $scope.translationTexts);
-
-                $scope.singleSelection = $scope.settings.selectionLimit === 1;
-
-                function getFindObj(id) 
-                {
-                    var findObj = {};
-
-                    if ($scope.settings.externalIdProp === '') 
-                    {
-                        findObj[$scope.settings.idProp] = id;
-                    } 
-                    else 
-                    {
-                        findObj[$scope.settings.externalIdProp] = id;
-                    }
-
-                    return findObj;
-                }
-
-                function clearObject(object) 
-                {
-                    for (var prop in object) 
-                    {
-                        delete object[prop];
-                    }
-                }
-
-                if ($scope.singleSelection) 
-                {
-                    if (angular.isArray($scope.selectedModel) && $scope.selectedModel.length === 0) 
-                    {
-                        clearObject($scope.selectedModel);
-                    }
-                }
-
-                if ($scope.settings.closeOnBlur) 
-                {
-                    $document.on('click', function (e) 
-                    {
-                       var target = e.target.parentElement;
-                        var parentFound = false;
-
-                        while (angular.isDefined(target) && target !== null && !parentFound) 
-                        {
-                               try
-                               {
-                                       if (_.contains(target.className.split(' '), 'multiselect-parent') && !parentFound)
-                                    {
-                                        if(target === $dropdownTrigger) 
-                                        {
-                                            parentFound = true;
-                                        }
-                                    }
-                                    
-                                    target = target.parentElement;                               
-                                       
-                               }catch(e){break;}
-                               
-                        }
-
-                        if (!parentFound) {
-                            $scope.$apply(function () {
-                                $scope.open = false;
-                            });
-                        }
-                    });
-                }
-
-                $scope.getGroupTitle = function (groupValue) {
-                    if ($scope.settings.groupByTextProvider !== null) {
-                        return $scope.settings.groupByTextProvider(groupValue);
-                    }
-
-                    return groupValue;
-                };
-
-                $scope.getButtonText = function () {
-                    if ($scope.settings.dynamicTitle && ($scope.selectedModel.length > 0 || (angular.isObject($scope.selectedModel) && _.keys($scope.selectedModel).length > 0))) {
-                        if ($scope.settings.smartButtonMaxItems > 0) {
-                            var itemsText = [];
-
-                            angular.forEach($scope.options, function (optionItem) {
-                                if ($scope.isChecked($scope.getPropertyForObject(optionItem, $scope.settings.idProp))) {
-                                    var displayText = $scope.getPropertyForObject(optionItem, $scope.settings.displayProp);
-                                    var converterResponse = $scope.settings.smartButtonTextConverter(displayText, optionItem);
-
-                                    itemsText.push(converterResponse ? converterResponse : displayText);
-                                }
-                            });
-
-                            if ($scope.selectedModel.length > $scope.settings.smartButtonMaxItems) {
-                                itemsText = itemsText.slice(0, $scope.settings.smartButtonMaxItems);
-                                itemsText.push('...');
-                            }
-
-                            return itemsText.join(', ');
-                        } else {
-                            var totalSelected;
-
-                            if ($scope.singleSelection) {
-                                totalSelected = ($scope.selectedModel !== null && angular.isDefined($scope.selectedModel[$scope.settings.idProp])) ? 1 : 0;
-                            } else {
-                                totalSelected = angular.isDefined($scope.selectedModel) ? $scope.selectedModel.length : 0;
-                            }
-
-                            if (totalSelected === 0) {
-                                return $scope.texts.buttonDefaultText;
-                            } else {
-                                return totalSelected + ' ' + $scope.texts.dynamicButtonTextSuffix;
-                            }
-                        }
-                    } else {
-                        return $scope.texts.buttonDefaultText;
-                    }
-                };
-
-                $scope.getPropertyForObject = function (object, property)
-                {
-                    if (angular.isDefined(object) && object.hasOwnProperty(property)) {
-                        return object[property];
-                    }
-
-                    return '';
-                };
-
-                $scope.selectAll = function () 
-                {
-                       $scope.deselectAll(false,true);
-                    $scope.externalEvents.onSelectAll();
-                    
-                    var len = $scope.selectedModel.length;
-                    
-                    angular.forEach($scope.options, function (value) 
-                    {
-                       if(value[$scope.settings.idProp]=="All")
-                               {
-                               if(len > 1)
-                            {
-                                       $scope.setSelectedItem(value[$scope.settings.idProp], true, true);
-                            }
-                            else
-                               {
-                               $scope.setSelectedItem(value[$scope.settings.idProp], true, true);
-                            }
-                               }
-                    });
-                };
-
-                $scope.deselectAll = function (sendEvent,ignore) 
-                {
-                       var len = $scope.selectedModel.length;
-                       
-                       sendEvent = sendEvent || true;
-
-                    if (sendEvent) 
-                    {
-                        $scope.externalEvents.onDeselectAll();
-                    }
-
-                    if ($scope.singleSelection) 
-                    {
-                        clearObject($scope.selectedModel);
-                    } 
-                    else 
-                    {
-                        $scope.selectedModel.splice(0, $scope.selectedModel.length);
-                    }                    
-                    
-                    if(ignore!=true || ignore==undefined)
-                    {
-                           if(len > 1)
-                           {
-                               $scope.setSelectedItem("All", true, true);
-                           }
-                           else
-                               {
-                               $scope.setSelectedItem("All", true, true);
-                           } 
-                    }
-                    
-                    
-                };
-
-                $scope.setSelectedItem = function (id, dontRemove, refresh) 
-                {
-                       var findObj = getFindObj(id);
-                    var finalObj = null;
-
-                    if ($scope.settings.externalIdProp === '') 
-                    {
-                        finalObj = _.find($scope.options, findObj);
-                    } 
-                    else 
-                    {
-                        finalObj = findObj;
-                    }
-                    
-                    
-                    if ($scope.singleSelection) 
-                    {
-                        clearObject($scope.selectedModel);
-                        angular.extend($scope.selectedModel, finalObj);
-                        $scope.externalEvents.onItemSelect(finalObj);
-                        
-                        if ($scope.settings.closeOnSelect) $scope.open = false;
-                        
-                        return;
-                    }
-
-                    dontRemove = dontRemove || false;
-                    
-
-                    var exists = _.findIndex($scope.selectedModel, findObj) !== -1;
-
-                    if (!dontRemove && exists) {
-                        $scope.selectedModel.splice(_.findIndex($scope.selectedModel, findObj), 1);
-                        $scope.externalEvents.onItemDeselect(findObj);
-                    } else if (!exists && ($scope.settings.selectionLimit === 0 || $scope.selectedModel.length < $scope.settings.selectionLimit)) {
-                        $scope.selectedModel.push(finalObj);
-                        $scope.externalEvents.onItemSelect(finalObj);
-                    }
-                    
-                    if ($scope.settings.closeOnSelect) $scope.open = false;
-                    
-                    if(refresh || refresh==undefined)
-                       {
-                        if("/dashboard"==$location.path())
-                                {
-                               $rootScope.ReLoadDashboardComboBox($scope.translationTexts.buttonDefaultText,finalObj.id);       
-                                 }
-                                 else if("/api_portfolio"==$location.path())
-                                 {
-                                       $rootScope.ReLoadAPIPortfolioComboBox($scope.translationTexts.buttonDefaultText,finalObj.id);
-                                 }
-                                 else if("/project_portfolio"==$location.path())
-                                 {
-                                       $rootScope.ReLoadProjectPortFolioComboBox($scope.translationTexts.buttonDefaultText,finalObj.id);
-                                 }
-                                 else if("/installed_bundle_versions"==$location.path())
-                                 {
-                                       $rootScope.ReLoadInstalledBundleComboBox($scope.translationTexts.buttonDefaultText,finalObj.id);        
-                                 }else if("/adapter_inventory"==$location.path())
-                                 {
-                                               $rootScope.ReLoadAdapterInventoryComboBox($scope.translationTexts.buttonDefaultText,finalObj.id);       
-                                 }
-                                 else if("/api_taxonomy"==$location.path())
-                                 {
-                                               $rootScope.ReLoadAPITaxonomyComboBox($scope.translationTexts.buttonDefaultText,finalObj.id);    
-                                 }else if("/defects"==$location.path())
-                                 {
-                                               $rootScope.ReLoadDefectReportComboBox($scope.translationTexts.buttonDefaultText,finalObj.id);   
-                                 } else if("/environment_configurations"==$location.path())
-                                 {
-                                               $rootScope.ReLoadEnvConfigComboBox($scope.translationTexts.buttonDefaultText,finalObj.id);      
-                                 }
-                                       else if("/federated_qc_coverage"==$location.path())       {
-                                               $rootScope.ReLoadQcCodeCoverageComboBox($scope.translationTexts.buttonDefaultText,finalObj.id); 
-                                 }
-                        
-                        
-                        
-                        
-                        
-                       
-                       }
-                    
-                };
-
-                $scope.isChecked = function (id) {
-                    if ($scope.singleSelection) {
-                        return $scope.selectedModel !== null && angular.isDefined($scope.selectedModel[$scope.settings.idProp]) && $scope.selectedModel[$scope.settings.idProp] === getFindObj(id)[$scope.settings.idProp];
-                    }
-
-                    return _.findIndex($scope.selectedModel, getFindObj(id)) !== -1;
-                };
-
-                $scope.externalEvents.onInitDone();
-            }
-        };
-}]);
diff --git a/src/main/resources/META-INF/resources/designer/lib/angularjs-dropdown-multiselect.js b/src/main/resources/META-INF/resources/designer/lib/angularjs-dropdown-multiselect.js
deleted file mode 100644 (file)
index 126cc2f..0000000
+++ /dev/null
@@ -1,436 +0,0 @@
-'use strict';
-
-var directiveModule = angular.module('angularjs-dropdown-multiselect', ['ngRoute', 
-                                                                        'ngResource',                                                                        
-                                                                        'hljs',
-                                                                        'ui.bootstrap',
-                                                                        'angular-loading-bar', 
-                                                                        'ngAnimate',
-                                                                        'dialogs.main',
-                                                                        'ui.grid', 
-                                                                        'ui.grid.resizeColumns',
-                                                                        'ui.grid.paging',
-                                                                        'ui.grid.selection',
-                                                                        'ui.grid.cellNav',
-                                                                        'ui.grid.pinning',
-                                                                        'ngSanitize','vs-repeat']);
-
-directiveModule.directive('ngDropdownMultiselect', ['$filter', '$document', '$compile', '$parse','$rootScope', '$resource', '$http','$location',
-    function ($filter, $document, $compile, $parse, $rootScope, $resource, $http,$location) 
-    {
-       
-               //console.log($http);
-
-        return {
-            restrict: 'AE',
-            scope: {
-                selectedModel: '=',
-                options: '=',
-                extraSettings: '=',
-                events: '=',
-                searchFilter: '=?',
-                translationTexts: '=',
-                groupBy: '@'
-            },
-            template: function (element, attrs) 
-            {
-                var checkboxes = attrs.checkboxes ? true : false;
-                var groups = attrs.groupBy ? true : false;
-
-                var template = '<div class="multiselect-parent btn-group dropdown-multiselect" style="width:100%;">';
-                template += '<div style="width:98%;" class="dropdown-toggle" ng-class="settings.buttonClasses" ng-click="toggleDropdown()">{{getButtonText()}}&nbsp;<span class="caret"></span></div>';
-                template += '<ul class="dropdown-menu dropdown-menu-form" ng-style="{display: open ? \'block\' : \'none\', height : settings.scrollable ? settings.scrollableHeight : \'auto\' }" style="overflow: scroll; width:280px;" >';
-                template += '<li ng-hide="!settings.showCheckAll"><a data-ng-click="selectAll()"><span class="glyphicon glyphicon-ok"></span>  {{texts.checkAll}}</a>';
-                template += '<li ng-show="settings.showUncheckAll"><a data-ng-click="deselectAll();"><span class="glyphicon glyphicon-remove"></span>   {{texts.uncheckAll}}</a></li>';
-                template += '<li ng-hide="(!settings.showCheckAll) && !settings.showUncheckAll" class="divider"></li>';
-                template += '<li ng-show="settings.enableSearch"><div class="dropdown-header"><input type="text" class="form-control" style="width: 100%;" ng-model="searchFilter" placeholder="{{texts.searchPlaceholder}}" /></li>';
-                template += '<li ng-show="settings.enableSearch" class="divider"></li>';
-                       
-                template += '<div vs-repeat> ';
-                
-                if (groups) {
-                    template += '<li ng-repeat-start="option in orderedItems | filter: searchFilter" ng-show="getPropertyForObject(option, settings.groupBy) !== getPropertyForObject(orderedItems[$index - 1], settings.groupBy)" role="presentation" class="dropdown-header">{{ getGroupTitle(getPropertyForObject(option, settings.groupBy)) }}</li>';
-                    template += '<li ng-repeat-end role="presentation">';
-                } else {
-                    template += '<li role="presentation" ng-repeat="option in options| filter: searchFilter">';
-                }
-
-                template += '<a role="menuitem" tabindex="-1" ng-click="setSelectedItem(getPropertyForObject(option,settings.idProp))">';
-
-                if (checkboxes) {
-                    template += '<div class="checkbox"><label><input class="checkboxInput" type="checkbox" ng-click="checkboxClick($event, getPropertyForObject(option,settings.idProp))" ng-checked="isChecked(getPropertyForObject(option,settings.idProp))" /> {{getPropertyForObject(option, settings.displayProp)}}</label></div></a>';
-                } else {
-                    template += '<span data-ng-class="{\'glyphicon glyphicon-ok\': isChecked(getPropertyForObject(option,settings.idProp))}"></span> {{getPropertyForObject(option, settings.displayProp)}}</a>';
-                }
-
-                template += '</li>';
-                template += '</div>';
-                
-
-                template += '<li class="divider" ng-show="settings.selectionLimit > 1"></li>';
-                template += '<li role="presentation" ng-show="settings.selectionLimit > 1"><a role="menuitem">{{selectedModel.length}} {{texts.selectionOf}} {{settings.selectionLimit}} {{texts.selectionCount}}</a></li>';
-
-                template += '</ul>';
-                template += '</div>';
-
-                element.html(template);
-            },
-            link: function ($scope, $element, $attrs) 
-            {
-                var $dropdownTrigger = $element.children()[0];
-                
-                $scope.toggleDropdown = function () {
-                    $scope.open = !$scope.open;
-                    if ($('#left').height()<$('#right').height()){
-                       $('#left').height($('#right').height());        
-                    }                    
-                       setTimeout(function(){ $('#left').scrollTop($('#left')[0].scrollHeight); }, 1);                 
-                };
-
-                $scope.checkboxClick = function ($event, id) {
-                    $scope.setSelectedItem(id);
-                    $event.stopImmediatePropagation();
-                };
-
-                $scope.externalEvents = 
-                {
-                    onItemSelect: angular.noop,
-                    onItemDeselect: angular.noop,
-                    onSelectAll: angular.noop,
-                    onDeselectAll: angular.noop,
-                    onInitDone: angular.noop,
-                    onMaxSelectionReached: angular.noop
-                };
-
-                $scope.settings = {
-                    dynamicTitle: true,
-                    scrollable: false,
-                    scrollableHeight: '300px',
-                    closeOnBlur: true,
-                    displayProp: 'id',
-                    idProp: 'id',
-                    externalIdProp: 'id',
-                    enableSearch: false,
-                    selectionLimit: 0,
-                    showCheckAll: true,
-                    showUncheckAll: true,
-                    closeOnSelect: false,
-                    buttonClasses: 'btn btn-default',
-                    closeOnDeselect: false,
-                    groupBy: $attrs.groupBy || undefined,
-                    groupByTextProvider: null,
-                    smartButtonMaxItems: 0,
-                    smartButtonTextConverter: angular.noop
-                };
-
-                $scope.texts = {
-                    checkAll: 'Check All',
-                    uncheckAll: 'Uncheck All',
-                    selectionCount: 'checked',
-                    selectionOf: '/',
-                    searchPlaceholder: 'Search...',
-                    buttonDefaultText: 'Select',
-                    dynamicButtonTextSuffix: 'checked'
-                };
-
-                $scope.searchFilter = $scope.searchFilter || '';
-
-                if (angular.isDefined($scope.settings.groupBy)) 
-                {
-                    $scope.$watch('options', function (newValue)
-                    {
-                        if (angular.isDefined(newValue)) 
-                        {
-                            $scope.orderedItems = $filter('orderBy')(newValue, $scope.settings.groupBy);
-                        }
-                    });
-                }
-
-                angular.extend($scope.settings, $scope.extraSettings || []);
-                angular.extend($scope.externalEvents, $scope.events || []);
-                angular.extend($scope.texts, $scope.translationTexts);
-
-                $scope.singleSelection = $scope.settings.selectionLimit === 1;
-
-                function getFindObj(id) 
-                {
-                    var findObj = {};
-
-                    if ($scope.settings.externalIdProp === '') 
-                    {
-                        findObj[$scope.settings.idProp] = id;
-                    } 
-                    else 
-                    {
-                        findObj[$scope.settings.externalIdProp] = id;
-                    }
-
-                    return findObj;
-                }
-
-                function clearObject(object) 
-                {
-                    for (var prop in object) 
-                    {
-                        delete object[prop];
-                    }
-                }
-
-                if ($scope.singleSelection) 
-                {
-                    if (angular.isArray($scope.selectedModel) && $scope.selectedModel.length === 0) 
-                    {
-                        clearObject($scope.selectedModel);
-                    }
-                }
-
-                if ($scope.settings.closeOnBlur) 
-                {
-                    $document.on('click', function (e) 
-                    {
-                       var target = e.target.parentElement;
-                        var parentFound = false;
-
-                        while (angular.isDefined(target) && target !== null && !parentFound) 
-                        {
-                               try
-                               {
-                                       if (_.contains(target.className.split(' '), 'multiselect-parent') && !parentFound)
-                                    {
-                                        if(target === $dropdownTrigger) 
-                                        {
-                                            parentFound = true;
-                                        }
-                                    }
-                                    
-                                    target = target.parentElement;                               
-                                       
-                               }catch(e){break;}
-                               
-                        }
-
-                        if (!parentFound) {
-                            $scope.$apply(function () {
-                                $scope.open = false;
-                            });
-                        }
-                    });
-                }
-
-                $scope.getGroupTitle = function (groupValue) {
-                    if ($scope.settings.groupByTextProvider !== null) {
-                        return $scope.settings.groupByTextProvider(groupValue);
-                    }
-
-                    return groupValue;
-                };
-
-                $scope.getButtonText = function () {
-                    if ($scope.settings.dynamicTitle && ($scope.selectedModel.length > 0 || (angular.isObject($scope.selectedModel) && _.keys($scope.selectedModel).length > 0))) {
-                        if ($scope.settings.smartButtonMaxItems > 0) {
-                            var itemsText = [];
-
-                            angular.forEach($scope.options, function (optionItem) {
-                                if ($scope.isChecked($scope.getPropertyForObject(optionItem, $scope.settings.idProp))) {
-                                    var displayText = $scope.getPropertyForObject(optionItem, $scope.settings.displayProp);
-                                    var converterResponse = $scope.settings.smartButtonTextConverter(displayText, optionItem);
-
-                                    itemsText.push(converterResponse ? converterResponse : displayText);
-                                }
-                            });
-
-                            if ($scope.selectedModel.length > $scope.settings.smartButtonMaxItems) {
-                                itemsText = itemsText.slice(0, $scope.settings.smartButtonMaxItems);
-                                itemsText.push('...');
-                            }
-
-                            return itemsText.join(', ');
-                        } else {
-                            var totalSelected;
-
-                            if ($scope.singleSelection) {
-                                totalSelected = ($scope.selectedModel !== null && angular.isDefined($scope.selectedModel[$scope.settings.idProp])) ? 1 : 0;
-                            } else {
-                                totalSelected = angular.isDefined($scope.selectedModel) ? $scope.selectedModel.length : 0;
-                            }
-
-                            if (totalSelected === 0) {
-                                return $scope.texts.buttonDefaultText;
-                            } else {
-                                return totalSelected + ' ' + $scope.texts.dynamicButtonTextSuffix;
-                            }
-                        }
-                    } else {
-                        return $scope.texts.buttonDefaultText;
-                    }
-                };
-
-                $scope.getPropertyForObject = function (object, property)
-                {
-                    if (angular.isDefined(object) && object.hasOwnProperty(property)) {
-                        return object[property];
-                    }
-
-                    return '';
-                };
-
-                $scope.selectAll = function () 
-                {
-                       $scope.deselectAll(false,true);
-                    $scope.externalEvents.onSelectAll();
-                    
-                    var len = $scope.selectedModel.length;
-                    
-                    angular.forEach($scope.options, function (value) 
-                    {
-                       if(value[$scope.settings.idProp]=="All")
-                               {
-                               if(len > 1)
-                            {
-                                       $scope.setSelectedItem(value[$scope.settings.idProp], true, true);
-                            }
-                            else
-                               {
-                               $scope.setSelectedItem(value[$scope.settings.idProp], true, true);
-                            }
-                               }
-                    });
-                };
-
-                $scope.deselectAll = function (sendEvent,ignore) 
-                {
-                       var len = $scope.selectedModel.length;
-                       
-                       sendEvent = sendEvent || true;
-
-                    if (sendEvent) 
-                    {
-                        $scope.externalEvents.onDeselectAll();
-                    }
-
-                    if ($scope.singleSelection) 
-                    {
-                        clearObject($scope.selectedModel);
-                    } 
-                    else 
-                    {
-                        $scope.selectedModel.splice(0, $scope.selectedModel.length);
-                    }                    
-                    
-                    if(ignore!=true || ignore==undefined)
-                    {
-                           if(len > 1)
-                           {
-                               $scope.setSelectedItem("All", true, true);
-                           }
-                           else
-                               {
-                               $scope.setSelectedItem("All", true, true);
-                           } 
-                    }
-                    
-                    
-                };
-
-                $scope.setSelectedItem = function (id, dontRemove, refresh) 
-                {
-                       var findObj = getFindObj(id);
-                    var finalObj = null;
-
-                    if ($scope.settings.externalIdProp === '') 
-                    {
-                        finalObj = _.find($scope.options, findObj);
-                    } 
-                    else 
-                    {
-                        finalObj = findObj;
-                    }
-                    
-                    
-                    if ($scope.singleSelection) 
-                    {
-                        clearObject($scope.selectedModel);
-                        angular.extend($scope.selectedModel, finalObj);
-                        $scope.externalEvents.onItemSelect(finalObj);
-                        
-                        if ($scope.settings.closeOnSelect) $scope.open = false;
-                        
-                        return;
-                    }
-
-                    dontRemove = dontRemove || false;
-                    
-
-                    var exists = _.findIndex($scope.selectedModel, findObj) !== -1;
-
-                    if (!dontRemove && exists) {
-                        $scope.selectedModel.splice(_.findIndex($scope.selectedModel, findObj), 1);
-                        $scope.externalEvents.onItemDeselect(findObj);
-                    } else if (!exists && ($scope.settings.selectionLimit === 0 || $scope.selectedModel.length < $scope.settings.selectionLimit)) {
-                        $scope.selectedModel.push(finalObj);
-                        $scope.externalEvents.onItemSelect(finalObj);
-                    }
-                    
-                    if ($scope.settings.closeOnSelect) $scope.open = false;
-                    
-                    if(refresh || refresh==undefined)
-                       {
-                        if("/dashboard"==$location.path())
-                                {
-                               $rootScope.ReLoadDashboardComboBox($scope.translationTexts.buttonDefaultText,finalObj.id);       
-                                 }
-                                 else if("/api_portfolio"==$location.path())
-                                 {
-                                       $rootScope.ReLoadAPIPortfolioComboBox($scope.translationTexts.buttonDefaultText,finalObj.id);
-                                 }
-                                 else if("/project_portfolio"==$location.path())
-                                 {
-                                       $rootScope.ReLoadProjectPortFolioComboBox($scope.translationTexts.buttonDefaultText,finalObj.id);
-                                 }
-                                 else if("/installed_bundle_versions"==$location.path())
-                                 {
-                                       $rootScope.ReLoadInstalledBundleComboBox($scope.translationTexts.buttonDefaultText,finalObj.id);        
-                                 }else if("/adapter_inventory"==$location.path())
-                                 {
-                                               $rootScope.ReLoadAdapterInventoryComboBox($scope.translationTexts.buttonDefaultText,finalObj.id);       
-                                 }
-                                 else if("/api_taxonomy"==$location.path())
-                                 {
-                                               $rootScope.ReLoadAPITaxonomyComboBox($scope.translationTexts.buttonDefaultText,finalObj.id);    
-                                 }else if("/defects"==$location.path())
-                                 {
-                                               $rootScope.ReLoadDefectReportComboBox($scope.translationTexts.buttonDefaultText,finalObj.id);   
-                                 } else if("/environment_configurations"==$location.path())
-                                 {
-                                               $rootScope.ReLoadEnvConfigComboBox($scope.translationTexts.buttonDefaultText,finalObj.id);      
-                                 }
-                                       else if("/qc_coverage_report"==$location.path())          {
-                                               $rootScope.ReLoadQcCodeCoverageComboBox($scope.translationTexts.buttonDefaultText,finalObj.id); 
-                                 }else if("/func_test_exec_status"==$location.path())    {
-                                               $rootScope.ReLoadFunTestResultComboBox($scope.translationTexts.buttonDefaultText,finalObj.id);  
-                                 }
-                                       else if("/api_schema"==$location.path())          {
-                                               
-                                               $rootScope.reloadApiSchemaPage($scope.translationTexts.buttonDefaultText,finalObj.id);  
-                                 }
-                        
-                        
-                        
-                        
-                       
-                       }
-                    
-                };
-
-                $scope.isChecked = function (id) {
-                    if ($scope.singleSelection) {
-                        return $scope.selectedModel !== null && angular.isDefined($scope.selectedModel[$scope.settings.idProp]) && $scope.selectedModel[$scope.settings.idProp] === getFindObj(id)[$scope.settings.idProp];
-                    }
-
-                    return _.findIndex($scope.selectedModel, getFindObj(id)) !== -1;
-                };
-
-                $scope.externalEvents.onInitDone();
-            }
-        };
-}]);
diff --git a/src/main/resources/META-INF/resources/designer/lib/angularjs-dropdown-multiselect.min.js b/src/main/resources/META-INF/resources/designer/lib/angularjs-dropdown-multiselect.min.js
deleted file mode 100644 (file)
index 373c58b..0000000
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";var directiveModule=angular.module("angularjs-dropdown-multiselect",[]);directiveModule.directive("ngDropdownMultiselect",["$filter","$document","$compile","$parse",function($filter,$document){return{restrict:"AE",scope:{selectedModel:"=",options:"=",extraSettings:"=",events:"=",searchFilter:"=?",translationTexts:"=",groupBy:"@"},template:function(element,attrs){var checkboxes=attrs.checkboxes?!0:!1,groups=attrs.groupBy?!0:!1,template='<div class="multiselect-parent btn-group dropdown-multiselect">';template+='<button type="button" class="dropdown-toggle" ng-class="settings.buttonClasses" ng-click="toggleDropdown()">{{getButtonText()}}&nbsp;<span class="caret"></span></button>',template+="<ul class=\"dropdown-menu dropdown-menu-form\" ng-style=\"{display: open ? 'block' : 'none', height : settings.scrollable ? settings.scrollableHeight : 'auto' }\" style=\"overflow: scroll\" >",template+='<li ng-hide="!settings.showCheckAll || settings.selectionLimit > 0"><a data-ng-click="selectAll()"><span class="glyphicon glyphicon-ok"></span>  {{texts.checkAll}}</a>',template+='<li ng-show="settings.showUncheckAll"><a data-ng-click="deselectAll();"><span class="glyphicon glyphicon-remove"></span>   {{texts.uncheckAll}}</a></li>',template+='<li ng-hide="(!settings.showCheckAll || settings.selectionLimit > 0) && !settings.showUncheckAll" class="divider"></li>',template+='<li ng-show="settings.enableSearch"><div class="dropdown-header"><input type="text" class="form-control" style="width: 100%;" ng-model="searchFilter" placeholder="{{texts.searchPlaceholder}}" /></li>',template+='<li ng-show="settings.enableSearch" class="divider"></li>',groups?(template+='<li ng-repeat-start="option in orderedItems | filter: searchFilter" ng-show="getPropertyForObject(option, settings.groupBy) !== getPropertyForObject(orderedItems[$index - 1], settings.groupBy)" role="presentation" class="dropdown-header">{{ getGroupTitle(getPropertyForObject(option, settings.groupBy)) }}</li>',template+='<li ng-repeat-end role="presentation">'):template+='<li role="presentation" ng-repeat="option in options | filter: searchFilter">',template+='<a role="menuitem" tabindex="-1" ng-click="setSelectedItem(getPropertyForObject(option,settings.idProp))">',template+=checkboxes?'<div class="checkbox"><label><input class="checkboxInput" type="checkbox" ng-click="checkboxClick($event, getPropertyForObject(option,settings.idProp))" ng-checked="isChecked(getPropertyForObject(option,settings.idProp))" /> {{getPropertyForObject(option, settings.displayProp)}}</label></div></a>':"<span data-ng-class=\"{'glyphicon glyphicon-ok': isChecked(getPropertyForObject(option,settings.idProp))}\"></span> {{getPropertyForObject(option, settings.displayProp)}}</a>",template+="</li>",template+='<li class="divider" ng-show="settings.selectionLimit > 1"></li>',template+='<li role="presentation" ng-show="settings.selectionLimit > 1"><a role="menuitem">{{selectedModel.length}} {{texts.selectionOf}} {{settings.selectionLimit}} {{texts.selectionCount}}</a></li>',template+="</ul>",template+="</div>",element.html(template)},link:function($scope,$element,$attrs){function getFindObj(id){var findObj={};return""===$scope.settings.externalIdProp?findObj[$scope.settings.idProp]=id:findObj[$scope.settings.externalIdProp]=id,findObj}function clearObject(object){for(var prop in object)delete object[prop]}var $dropdownTrigger=$element.children()[0];$scope.toggleDropdown=function(){$scope.open=!$scope.open},$scope.checkboxClick=function($event,id){$scope.setSelectedItem(id),$event.stopImmediatePropagation()},$scope.externalEvents={onItemSelect:angular.noop,onItemDeselect:angular.noop,onSelectAll:angular.noop,onDeselectAll:angular.noop,onInitDone:angular.noop,onMaxSelectionReached:angular.noop},$scope.settings={dynamicTitle:!0,scrollable:!1,scrollableHeight:"300px",closeOnBlur:!0,displayProp:"label",idProp:"id",externalIdProp:"id",enableSearch:!1,selectionLimit:0,showCheckAll:!0,showUncheckAll:!0,closeOnSelect:!1,buttonClasses:"btn btn-default",closeOnDeselect:!1,groupBy:$attrs.groupBy||void 0,groupByTextProvider:null,smartButtonMaxItems:0,smartButtonTextConverter:angular.noop},$scope.texts={checkAll:"Check All",uncheckAll:"Uncheck All",selectionCount:"checked",selectionOf:"/",searchPlaceholder:"Search...",buttonDefaultText:"Select",dynamicButtonTextSuffix:"checked"},$scope.searchFilter=$scope.searchFilter||"",angular.isDefined($scope.settings.groupBy)&&$scope.$watch("options",function(newValue){angular.isDefined(newValue)&&($scope.orderedItems=$filter("orderBy")(newValue,$scope.settings.groupBy))}),angular.extend($scope.settings,$scope.extraSettings||[]),angular.extend($scope.externalEvents,$scope.events||[]),angular.extend($scope.texts,$scope.translationTexts),$scope.singleSelection=1===$scope.settings.selectionLimit,$scope.singleSelection&&angular.isArray($scope.selectedModel)&&0===$scope.selectedModel.length&&clearObject($scope.selectedModel),$scope.settings.closeOnBlur&&$document.on("click",function(e){for(var target=e.target.parentElement,parentFound=!1;angular.isDefined(target)&&null!==target&&!parentFound;)_.contains(target.className.split(" "),"multiselect-parent")&&!parentFound&&target===$dropdownTrigger&&(parentFound=!0),target=target.parentElement;parentFound||$scope.$apply(function(){$scope.open=!1})}),$scope.getGroupTitle=function(groupValue){return null!==$scope.settings.groupByTextProvider?$scope.settings.groupByTextProvider(groupValue):groupValue},$scope.getButtonText=function(){if($scope.settings.dynamicTitle&&($scope.selectedModel.length>0||angular.isObject($scope.selectedModel)&&_.keys($scope.selectedModel).length>0)){if($scope.settings.smartButtonMaxItems>0){var itemsText=[];return angular.forEach($scope.options,function(optionItem){if($scope.isChecked($scope.getPropertyForObject(optionItem,$scope.settings.idProp))){var displayText=$scope.getPropertyForObject(optionItem,$scope.settings.displayProp),converterResponse=$scope.settings.smartButtonTextConverter(displayText,optionItem);itemsText.push(converterResponse?converterResponse:displayText)}}),$scope.selectedModel.length>$scope.settings.smartButtonMaxItems&&(itemsText=itemsText.slice(0,$scope.settings.smartButtonMaxItems),itemsText.push("...")),itemsText.join(", ")}var totalSelected;return totalSelected=$scope.singleSelection?null!==$scope.selectedModel&&angular.isDefined($scope.selectedModel[$scope.settings.idProp])?1:0:angular.isDefined($scope.selectedModel)?$scope.selectedModel.length:0,0===totalSelected?$scope.texts.buttonDefaultText:totalSelected+" "+$scope.texts.dynamicButtonTextSuffix}return $scope.texts.buttonDefaultText},$scope.getPropertyForObject=function(object,property){return angular.isDefined(object)&&object.hasOwnProperty(property)?object[property]:""},$scope.selectAll=function(){$scope.deselectAll(!1),$scope.externalEvents.onSelectAll(),angular.forEach($scope.options,function(value){$scope.setSelectedItem(value[$scope.settings.idProp],!0)})},$scope.deselectAll=function(sendEvent){sendEvent=sendEvent||!0,sendEvent&&$scope.externalEvents.onDeselectAll(),$scope.singleSelection?clearObject($scope.selectedModel):$scope.selectedModel.splice(0,$scope.selectedModel.length)},$scope.setSelectedItem=function(id,dontRemove){var findObj=getFindObj(id),finalObj=null;if(finalObj=""===$scope.settings.externalIdProp?_.find($scope.options,findObj):findObj,$scope.singleSelection)return clearObject($scope.selectedModel),angular.extend($scope.selectedModel,finalObj),void $scope.externalEvents.onItemSelect(finalObj);dontRemove=dontRemove||!1;var exists=-1!==_.findIndex($scope.selectedModel,findObj);!dontRemove&&exists?($scope.selectedModel.splice(_.findIndex($scope.selectedModel,findObj),1),$scope.externalEvents.onItemDeselect(findObj)):!exists&&(0===$scope.settings.selectionLimit||$scope.selectedModel.length<$scope.settings.selectionLimit)&&($scope.selectedModel.push(finalObj),$scope.externalEvents.onItemSelect(finalObj))},$scope.isChecked=function(id){return $scope.singleSelection?null!==$scope.selectedModel&&angular.isDefined($scope.selectedModel[$scope.settings.idProp])&&$scope.selectedModel[$scope.settings.idProp]===getFindObj(id)[$scope.settings.idProp]:-1!==_.findIndex($scope.selectedModel,getFindObj(id))},$scope.externalEvents.onInitDone()}}}]);
diff --git a/src/main/resources/META-INF/resources/designer/lib/bootstrap-toggle.js b/src/main/resources/META-INF/resources/designer/lib/bootstrap-toggle.js
deleted file mode 100644 (file)
index fe077fe..0000000
+++ /dev/null
@@ -1,172 +0,0 @@
-/*! ========================================================================
- * Bootstrap Toggle: bootstrap-toggle.js v2.0.0
- * http://www.bootstraptoggle.com
- * ========================================================================
- * Copyright 2014 Min Hur, The New York Times Company
- * Licensed under MIT
- * ======================================================================== */
-
-
- +function ($) {
-       'use strict';
-
-       // TOGGLE PUBLIC CLASS DEFINITION
-       // ==============================
-
-       var Toggle = function (element, options) {
-               this.$element  = $(element)
-               this.options   = $.extend({}, this.defaults(), options)
-               this.render()
-       }
-
-       Toggle.VERSION  = '3.0.0'
-
-       Toggle.DEFAULTS = {
-               on: 'On',
-               off: 'Off',
-               onstyle: 'primary',
-               offstyle: 'default',
-               size: 'normal',
-               style: ''
-       }
-
-       Toggle.prototype.defaults = function() {
-               return {
-                       on: this.$element.attr('data-on') || Toggle.DEFAULTS.on,
-                       off: this.$element.attr('data-off') || Toggle.DEFAULTS.off,
-                       onstyle: this.$element.attr('data-onstyle') || Toggle.DEFAULTS.onstyle,
-                       offstyle: this.$element.attr('data-offstyle') || Toggle.DEFAULTS.offstyle,
-                       size: this.$element.attr('data-size') || Toggle.DEFAULTS.size,
-                       style: this.$element.attr('data-style') || Toggle.DEFAULTS.style
-               }
-       }
-
-       Toggle.prototype.render = function () {
-               this._onstyle = 'btn-' + this.options.onstyle
-               this._offstyle = 'btn-' + this.options.offstyle
-               var size = this.options.size === 'large' ? 'btn-lg'
-                       : this.options.size === 'small' ? 'btn-sm'
-                       : this.options.size === 'mini' ? 'btn-xs'
-                       : ''
-               var $toggleOn = $('<label class="btn">').html(this.options.on)
-                       .addClass(this._onstyle + ' ' + size)
-               var $toggleOff = $('<label class="btn">').html(this.options.off)
-                       .addClass(this._offstyle + ' ' + size + ' active')
-               var $toggleHandle = $('<span class="toggle-handle btn btn-default">')
-                       .addClass(size)
-               var $toggleGroup = $('<div class="toggle-group">')
-                       .append($toggleOn, $toggleOff, $toggleHandle)
-               var $toggle = $('<div class="toggle btn" data-toggle="toggle">')
-                       .addClass( this.$element.prop('checked') ? this._onstyle : this._offstyle+' off' )
-                       .addClass(size).addClass(this.options.style)
-
-               this.$element.wrap($toggle)
-               $.extend(this, {
-                       $toggle: this.$element.parent(),
-                       $toggleOn: $toggleOn,
-                       $toggleOff: $toggleOff,
-                       $toggleGroup: $toggleGroup
-               })
-               this.$toggle.append($toggleGroup)
-
-               var width = Math.max($toggleOn.outerWidth(), $toggleOff.outerWidth())+($toggleHandle.outerWidth()/2)
-               var height = Math.max($toggleOn.outerHeight(), $toggleOff.outerHeight())
-               $toggleOn.addClass('toggle-on')
-               $toggleOff.addClass('toggle-off')
-               this.$toggle.css({ width: width, height: height })
-               this.update()
-               this.trigger(true)
-       }
-
-       Toggle.prototype.toggle = function () {
-               if (this.$element.prop('checked')) this.off()
-               else this.on()
-       }
-
-       Toggle.prototype.on = function () {
-               if (this.$element.prop('disabled')) return false
-               this.$toggle.removeClass(this._offstyle + ' off').addClass(this._onstyle)
-               this.$element.prop('checked', true)
-               this.trigger()
-       }
-
-       Toggle.prototype.off = function () {
-               if (this.$element.prop('disabled')) return false
-               this.$toggle.removeClass(this._onstyle).addClass(this._offstyle + ' off')
-               this.$element.prop('checked', false)
-               this.trigger()
-       }
-
-       Toggle.prototype.enable = function () {
-               this.$toggle.removeAttr('disabled')
-               this.$element.prop('disabled', false)
-       }
-
-       Toggle.prototype.disable = function () {
-               this.$toggle.attr('disabled', 'disabled')
-               this.$element.prop('disabled', true)
-       }
-
-       Toggle.prototype.update = function () {
-               if (this.$element.prop('disabled')) this.disable()
-               else this.enable()
-               if (this.$element.prop('checked')) this.on()
-               else this.off()
-       }
-
-       Toggle.prototype.trigger = function (silent) {
-               this.$element.off('change.bs.toggle')
-               if (!silent) this.$element.change()
-               this.$element.on('change.bs.toggle', $.proxy(function() {
-                       this.update()
-               }, this))
-       }
-
-       Toggle.prototype.destroy = function() {
-               this.$element.off('change.bs.toggle')
-               this.$toggleGroup.remove()
-               this.$element.removeData('bs.toggle')
-               this.$element.unwrap()
-       }
-
-       // TOGGLE PLUGIN DEFINITION
-       // ========================
-
-       function Plugin(option) {
-               return this.each(function () {
-                       var $this   = $(this)
-                       var data    = $this.data('bs.toggle')
-                       var options = typeof option == 'object' && option
-
-                       if (!data) $this.data('bs.toggle', (data = new Toggle(this, options)))
-                       if (typeof option == 'string' && data[option]) data[option]()
-               })
-       }
-
-       var old = $.fn.bootstrapToggle
-
-       $.fn.bootstrapToggle             = Plugin
-       $.fn.bootstrapToggle.Constructor = Toggle
-
-       // TOGGLE NO CONFLICT
-       // ==================
-
-       $.fn.toggle.noConflict = function () {
-               $.fn.bootstrapToggle = old
-               return this
-       }
-
-       // TOGGLE DATA-API
-       // ===============
-
-       $(function() {
-               $('input[type=checkbox][data-toggle^=toggle]').bootstrapToggle()
-       })
-
-       $(document).on('click.bs.toggle', 'div[data-toggle^=toggle]', function(e) {
-               var $checkbox = $(this).find('input[type=checkbox]')
-               $checkbox.bootstrapToggle('toggle')
-               e.preventDefault()
-       })
-
-}(jQuery);
diff --git a/src/main/resources/META-INF/resources/designer/lib/bootstrap-toggle.min.js b/src/main/resources/META-INF/resources/designer/lib/bootstrap-toggle.min.js
deleted file mode 100644 (file)
index d05310d..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-/*! ========================================================================
- * Bootstrap Toggle: bootstrap-toggle.js v2.0.0
- * http://www.bootstraptoggle.com
- * ========================================================================
- * Copyright 2014 Min Hur, The New York Times Company
- * Licensed under MIT
- * ======================================================================== */
-+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.toggle"),f="object"==typeof b&&b;e||d.data("bs.toggle",e=new c(this,f)),"string"==typeof b&&e[b]&&e[b]()})}var c=function(b,c){this.$element=a(b),this.options=a.extend({},this.defaults(),c),this.render()};c.VERSION="3.0.0",c.DEFAULTS={on:"On",off:"Off",onstyle:"primary",offstyle:"default",size:"normal",style:""},c.prototype.defaults=function(){return{on:this.$element.attr("data-on")||c.DEFAULTS.on,off:this.$element.attr("data-off")||c.DEFAULTS.off,onstyle:this.$element.attr("data-onstyle")||c.DEFAULTS.onstyle,offstyle:this.$element.attr("data-offstyle")||c.DEFAULTS.offstyle,size:this.$element.attr("data-size")||c.DEFAULTS.size,style:this.$element.attr("data-style")||c.DEFAULTS.style}},c.prototype.render=function(){this._onstyle="btn-"+this.options.onstyle,this._offstyle="btn-"+this.options.offstyle;var b="large"===this.options.size?"btn-lg":"small"===this.options.size?"btn-sm":"mini"===this.options.size?"btn-xs":"",c=a('<label class="btn">').html(this.options.on).addClass(this._onstyle+" "+b),d=a('<label class="btn">').html(this.options.off).addClass(this._offstyle+" "+b+" active"),e=a('<span class="toggle-handle btn btn-default">').addClass(b),f=a('<div class="toggle-group">').append(c,d,e),g=a('<div class="toggle btn" data-toggle="toggle">').addClass(this.$element.prop("checked")?this._onstyle:this._offstyle+" off").addClass(b).addClass(this.options.style);this.$element.wrap(g),a.extend(this,{$toggle:this.$element.parent(),$toggleOn:c,$toggleOff:d,$toggleGroup:f}),this.$toggle.append(f);var h=Math.max(c.outerWidth(),d.outerWidth())+e.outerWidth()/2,i=Math.max(c.outerHeight(),d.outerHeight());c.addClass("toggle-on"),d.addClass("toggle-off"),this.$toggle.css({width:h,height:i}),this.update(),this.trigger(!0)},c.prototype.toggle=function(){this.$element.prop("checked")?this.off():this.on()},c.prototype.on=function(){return this.$element.prop("disabled")?!1:(this.$toggle.removeClass(this._offstyle+" off").addClass(this._onstyle),this.$element.prop("checked",!0),void this.trigger())},c.prototype.off=function(){return this.$element.prop("disabled")?!1:(this.$toggle.removeClass(this._onstyle).addClass(this._offstyle+" off"),this.$element.prop("checked",!1),void this.trigger())},c.prototype.enable=function(){this.$toggle.removeAttr("disabled"),this.$element.prop("disabled",!1)},c.prototype.disable=function(){this.$toggle.attr("disabled","disabled"),this.$element.prop("disabled",!0)},c.prototype.update=function(){this.$element.prop("disabled")?this.disable():this.enable(),this.$element.prop("checked")?this.on():this.off()},c.prototype.trigger=function(b){this.$element.off("change.bs.toggle"),b||this.$element.change(),this.$element.on("change.bs.toggle",a.proxy(function(){this.update()},this))},c.prototype.destroy=function(){this.$element.off("change.bs.toggle"),this.$toggleGroup.remove(),this.$element.removeData("bs.toggle"),this.$element.unwrap()};var d=a.fn.bootstrapToggle;a.fn.bootstrapToggle=b,a.fn.bootstrapToggle.Constructor=c,a.fn.toggle.noConflict=function(){return a.fn.bootstrapToggle=d,this},a(function(){a("input[type=checkbox][data-toggle^=toggle]").bootstrapToggle()}),a(document).on("click.bs.toggle","div[data-toggle^=toggle]",function(b){var c=a(this).find("input[type=checkbox]");c.bootstrapToggle("toggle"),b.preventDefault()})}(jQuery);
-//# sourceMappingURL=bootstrap-toggle.min.js.map
\ No newline at end of file
diff --git a/src/main/resources/META-INF/resources/designer/lib/dialogs-controllers.js b/src/main/resources/META-INF/resources/designer/lib/dialogs-controllers.js
deleted file mode 100644 (file)
index 5573fc8..0000000
+++ /dev/null
@@ -1,116 +0,0 @@
-//== Controllers =============================================================//
-
-var ctrlrs; // will be dialogs.controllers module
-
-// determine if Angular-Translate is available, if not use the substitute
-try{
-       angular.module('pascalprecht.translate'); // throws error if module not loaded
-       // console.log('Dialogs (Angular-Translate): OK');
-       
-       // dialogs.controllers: module declaration
-       ctrlrs = angular.module('dialogs.controllers',['ui.bootstrap.modal','pascalprecht.translate']);
-}catch(err){
-       // console.log('Dialogs: (Angular-Translate): ' + err.message);
-       // console.log('Dialogs: Attempting to use translate.sub module.');
-
-       // dialogs.controllers: module declaration
-       ctrlrs = angular.module('dialogs.controllers',['ui.bootstrap.modal','translate.sub']);
-} // end try/catch
-
-// angular.module('dialogs.controllers',['ui.bootstrap.modal','pascalprecht.translate'])
-
-/**
- * Error Dialog Controller 
- */
-ctrlrs.controller('errorDialogCtrl',['$scope','$modalInstance','$translate','data',function($scope,$modalInstance,$translate,data){
-       //-- Variables -----//
-
-       $scope.header = (angular.isDefined(data.header)) ? data.header : $translate.instant('DIALOGS_ERROR');
-       $scope.msg = (angular.isDefined(data.msg)) ? data.msg : $translate.instant('DIALOGS_ERROR_MSG');
-       $scope.icon = (angular.isDefined(data.fa) && angular.equals(data.fa,true)) ? 'fa fa-warning' : 'glyphicon glyphicon-warning-sign';
-
-       //-- Methods -----//
-       
-       $scope.close = function(){
-               $modalInstance.close();
-               $scope.$destroy();
-       }; // end close
-}]); // end ErrorDialogCtrl
-       
-/**
- * Wait Dialog Controller 
- */
-ctrlrs.controller('waitDialogCtrl',['$scope','$modalInstance','$translate','$timeout','data',function($scope,$modalInstance,$translate,$timeout,data){
-       //-- Variables -----//
-
-       $scope.header = (angular.isDefined(data.header)) ? data.header : $translate.instant('DIALOGS_PLEASE_WAIT_ELIPS');
-       $scope.msg = (angular.isDefined(data.msg)) ? data.msg : $translate.instant('DIALOGS_PLEASE_WAIT_MSG');
-       $scope.progress = (angular.isDefined(data.progress)) ? data.progress : 100;
-       $scope.icon = (angular.isDefined(data.fa) && angular.equals(data.fa,true)) ? 'fa fa-clock-o' : 'glyphicon glyphicon-time';
-
-       //-- Listeners -----//
-       
-       // Note: used $timeout instead of $scope.$apply() because I was getting a $$nextSibling error
-       
-       // close wait dialog
-       $scope.$on('dialogs.wait.complete',function(){
-               $timeout(function(){ $modalInstance.close(); $scope.$destroy(); });
-       }); // end on(dialogs.wait.complete)
-       
-       // update the dialog's message
-       $scope.$on('dialogs.wait.message',function(evt,args){
-               $scope.msg = (angular.isDefined(args.msg)) ? args.msg : $scope.msg;
-       }); // end on(dialogs.wait.message)
-       
-       // update the dialog's progress (bar) and/or message
-       $scope.$on('dialogs.wait.progress',function(evt,args){
-               $scope.msg = (angular.isDefined(args.msg)) ? args.msg : $scope.msg;
-               $scope.progress = (angular.isDefined(args.progress)) ? args.progress : $scope.progress;
-       }); // end on(dialogs.wait.progress)
-       
-       //-- Methods -----//
-
-       $scope.getProgress = function(){
-               return {'width': $scope.progress + '%'};
-       }; // end getProgress
-       
-}]); // end WaitDialogCtrl
-
-/**
- * Notify Dialog Controller 
- */
-ctrlrs.controller('notifyDialogCtrl',['$scope','$modalInstance','$translate','data',function($scope,$modalInstance,$translate,data){
-       //-- Variables -----//
-
-       $scope.header = (angular.isDefined(data.header)) ? data.header : $translate.instant('DIALOGS_NOTIFICATION');
-       $scope.msg = (angular.isDefined(data.msg)) ? data.msg : $translate.instant('DIALOGS_NOTIFICATION_MSG');
-       $scope.icon = (angular.isDefined(data.fa) && angular.equals(data.fa,true)) ? 'fa fa-info' : 'glyphicon glyphicon-info-sign';
-
-       //-- Methods -----//
-       
-       $scope.close = function(){
-               $modalInstance.close();
-               $scope.$destroy();
-       }; // end close
-}]); // end WaitDialogCtrl
-
-/**
- * Confirm Dialog Controller 
- */
-ctrlrs.controller('confirmDialogCtrl',['$scope','$modalInstance','$translate','data',function($scope,$modalInstance,$translate,data){
-       //-- Variables -----//
-
-       $scope.header = (angular.isDefined(data.header)) ? data.header : $translate.instant('DIALOGS_CONFIRMATION');
-       $scope.msg = (angular.isDefined(data.msg)) ? data.msg : $translate.instant('DIALOGS_CONFIRMATION_MSG');
-       $scope.icon = (angular.isDefined(data.fa) && angular.equals(data.fa,true)) ? 'fa fa-check' : 'glyphicon glyphicon-check';
-
-       //-- Methods -----//
-       
-       $scope.no = function(){
-               $modalInstance.dismiss('no');
-       }; // end close
-       
-       $scope.yes = function(){
-               $modalInstance.close('yes');
-       }; // end yes
-}]); // end ConfirmDialogCtrl / dialogs.controllers
\ No newline at end of file
diff --git a/src/main/resources/META-INF/resources/designer/lib/dialogs-default-translations.js b/src/main/resources/META-INF/resources/designer/lib/dialogs-default-translations.js
deleted file mode 100644 (file)
index 2bf4466..0000000
+++ /dev/null
@@ -1,50 +0,0 @@
-/**
- * Dialog Default Translations.
- *
- * Include this module if you're not already using angular-translate in your application, and
- * add it to your application module's dependency list in order to get default header and 
- * dialog messages to appear.
- * 
- * Ex: var myApp = angular.module('myApplication',['dialogs.main','dialogs.default-translations']);
- *
- * It was necessary to separate this out for those already using angular-translate because this would
- * automatically reset their translation list for 'en-US'
- *
- * For those already using angular-translate, just copy the list of DIALOG_[..] translations to your
- * translation list where you set 'en-US' using the $translateProvider.
- */
-
-//== Translations =============================================================//
-
- angular.module('dialogs.default-translations',['pascalprecht.translate'])
- /**
-     * Default translations in English.
-     * 
-     * Use angular-translate's $translateProvider to provide translations in an
-     * alternate language.
-     *
-     * $translateProvider.translations('[lang]',{[translations]});
-     * To use alternate translations set the preferred language to your desired
-     * language.
-     * $translateProvider.preferredLanguage('[lang]');
-     */
-    .config(['$translateProvider',function($translateProvider){
-        $translateProvider.translations('en-US',{
-            DIALOGS_ERROR: "Error",
-            DIALOGS_ERROR_MSG: "An unknown error has occurred.",
-            DIALOGS_CLOSE: "Close",
-            DIALOGS_PLEASE_WAIT: "Please Wait",
-            DIALOGS_PLEASE_WAIT_ELIPS: "Please Wait...",
-            DIALOGS_PLEASE_WAIT_MSG: "Waiting on operation to complete.",
-            DIALOGS_PERCENT_COMPLETE: "% Complete",
-            DIALOGS_NOTIFICATION: "Notification",
-            DIALOGS_NOTIFICATION_MSG: "Unknown application notification.",
-            DIALOGS_CONFIRMATION: "Confirmation",
-            DIALOGS_CONFIRMATION_MSG: "Confirmation required.",
-            DIALOGS_OK: "OK",
-            DIALOGS_YES: "Yes",
-            DIALOGS_NO: "No"
-        });
-
-        $translateProvider.preferredLanguage('en-US');
-    }]); // end config
\ No newline at end of file
diff --git a/src/main/resources/META-INF/resources/designer/lib/dialogs-main.js b/src/main/resources/META-INF/resources/designer/lib/dialogs-main.js
deleted file mode 100644 (file)
index 68afc46..0000000
+++ /dev/null
@@ -1,105 +0,0 @@
-//== Dialogs.Main Module =====================================================//
-
-/**
- * Include this module 'dialogs.main' in your module's dependency list where you
- * intend to use it.  Then inject the 'dialogs' service in your controllers that
- * need it.
- */
-
-angular.module('dialogs.main',['dialogs.services','ngSanitize']) // requires angular-sanitize.min.js (ngSanitize) //code.angularjs.org/1.2.1/angular-sanitize.min.js
-               
-       .config(['$translateProvider','dialogsProvider',function($translateProvider,dialogsProvider){
-               /** 
-                * if Angular-Translate is not loaded, use the translate substitute
-                * module and create default translations to use as default modal texts
-                */
-               try{
-                       angular.module('pascalprecht.translate');
-               }catch(err){
-                       // console.log('Dialogs: Creating default translations for use without Angular-Translate.');
-
-                       // This will set default modal buttons, header and message text
-                       $translateProvider.translations('en-US',{
-                   DIALOGS_ERROR: "Error",
-                   DIALOGS_ERROR_MSG: "An unknown error has occurred.",
-                   DIALOGS_CLOSE: "Close",
-                   DIALOGS_PLEASE_WAIT: "Please Wait",
-                   DIALOGS_PLEASE_WAIT_ELIPS: "Please Wait...",
-                   DIALOGS_PLEASE_WAIT_MSG: "Waiting on operation to complete.",
-                   DIALOGS_PERCENT_COMPLETE: "% Complete",
-                   DIALOGS_NOTIFICATION: "Notification",
-                   DIALOGS_NOTIFICATION_MSG: "Unknown application notification.",
-                   DIALOGS_CONFIRMATION: "Confirmation",
-                   DIALOGS_CONFIRMATION_MSG: "Confirmation required.",
-                   DIALOGS_OK: "OK",
-                   DIALOGS_YES: "Yes",
-                   DIALOGS_NO: "No"
-               });
-               } // end try/catch
-
-               /**
-                * Attempt to ascertain if page is using Font Awesome instead of the
-                * regular Bootstrap Icons.  If you are changing the stylesheet name or
-                * not including it from a CDN or have included Font-Awesome as a 
-                * concatentation of CSS sheets together, then you will have to manually
-                * set Font-Awesome usage in your Angular Module's config by including
-                * the $dialogsProvider and calling the method $dialogsProvider.useFontAwesome().
-                */
-                try{
-                       var _sheets = document.styleSheets;
-
-                       sheetLoop:
-                       for(var i = (_sheets.length - 1);i >= 0;i--){
-                               var _matches = null;
-                               var _rules = null;
-
-                               if(!_sheets[i].disabled){
-                                       // check href of style sheet first
-                                       if(_sheets[i].href !== null)
-                                               _matches = _sheets[i].match(/font\-*awesome/i);
-
-                                       if(angular.isArray(_matches)){
-                                               dialogsProvider.useFontAwesome();
-                                               break; // done, leave the style sheet for loop
-                                       }else{
-                                               // try to find css rule .fa, in case style sheet has been concatenated
-                                               _rules = _sheets[i].cssRules;
-                                               for(var x = (_rules.length - 1);x >= 0;x--){
-                                                       if(_rules[x].selectorText.toLowerCase() == '.fa'){
-                                                               dialogsProvider.useFontAwesome();
-                                                               break sheetLoop; // done, exit both for loops
-                                                       }
-                                               }
-                                       }
-                               } // end if(disabled)
-                       } // end for
-
-                       /* Removed in favor of above, will delete this permanently after more testing
-                       angular.forEach(_sheets,function(_sheet,key){
-                               var _matches = null;
-                               if(!angular.equals(_sheet.href,null))
-                                       _matches = _sheet.href.match(/font\-*awesome/);
-
-                               if(!_sheet.disabled && angular.isArray(_matches)){
-                                       // console.log('Dialogs: Using Font-Awesome Icons');
-                                       dialogsProvider.useFontAwesome();
-                               }
-                       });
-                       */
-                }catch(err){
-                       // console.log('Error Message: ' + err);
-                }
-       }]) // end config
-
-       // Add default templates via $templateCache
-       .run(['$templateCache','$interpolate',function($templateCache,$interpolate){
-    
-       // get interpolation symbol (possible that someone may have changed it in their application instead of using '{{}}')
-       var startSym = $interpolate.startSymbol();
-       var endSym = $interpolate.endSymbol();
-    
-       $templateCache.put('/dialogs/error.html','<div class="modal-header dialog-header-error"><button type="button" class="close" ng-click="close()">&times;</button><h4 class="modal-title text-danger"><span class="'+startSym+'icon'+endSym+'"></span> <span ng-bind-html="header"></span></h4></div><div class="modal-body text-danger" ng-bind-html="msg"></div><div class="modal-footer"><button type="button" class="btn btn-default" ng-click="close()">'+startSym+'"DIALOGS_CLOSE" | translate'+endSym+'</button></div>');
-       $templateCache.put('/dialogs/wait.html','<div class="modal-header dialog-header-wait"><h4 class="modal-title"><span class="'+startSym+'icon'+endSym+'"></span> '+startSym+'header'+endSym+'</h4></div><div class="modal-body"><p ng-bind-html="msg"></p><div class="progress progress-striped active"><div class="progress-bar progress-bar-info" ng-style="getProgress()"></div><span class="sr-only">'+startSym+'progress'+endSym+''+startSym+'"DIALOGS_PERCENT_COMPLETE" | translate'+endSym+'</span></div></div>');
-       $templateCache.put('/dialogs/notify.html','<div class="modal-header dialog-header-notify"><button type="button" class="close" ng-click="close()" class="pull-right">&times;</button><h4 class="modal-title text-info"><span class="'+startSym+'icon'+endSym+'"></span> '+startSym+'header'+endSym+'</h4></div><div class="modal-body text-info" ng-bind-html="msg"></div><div class="modal-footer"><button type="button" class="btn btn-primary" ng-click="close()">'+startSym+'"DIALOGS_OK" | translate'+endSym+'</button></div>');
-       $templateCache.put('/dialogs/confirm.html','<div class="modal-header dialog-header-confirm"><button type="button" class="close" ng-click="no()">&times;</button><h4 class="modal-title"><span class="'+startSym+'icon'+endSym+'"></span> '+startSym+'header'+endSym+'</h4></div><div class="modal-body" ng-bind-html="msg"></div><div class="modal-footer"><button type="button" class="btn btn-default" ng-click="yes()">'+startSym+'"DIALOGS_YES" | translate'+endSym+'</button><button type="button" class="btn btn-primary" ng-click="no()">'+startSym+'"DIALOGS_NO" | translate'+endSym+'</button></div>');
-       }]); // end run / dialogs.main
\ No newline at end of file
diff --git a/src/main/resources/META-INF/resources/designer/lib/dialogs-services.js b/src/main/resources/META-INF/resources/designer/lib/dialogs-services.js
deleted file mode 100644 (file)
index d7301f0..0000000
+++ /dev/null
@@ -1,265 +0,0 @@
-//== Services ================================================================//
-
-angular.module('dialogs.services',['ui.bootstrap.modal','dialogs.controllers'])
-
-       .provider('dialogs',[function(){
-               var _b = true; // backdrop
-               var _k = true; // keyboard
-               var _w = 'dialogs-default'; // windowClass
-               var _copy = true; // controls use of angular.copy
-               var _wTmpl = null; // window template
-               var _wSize = 'lg'; // large modal window default
-
-               var _fa = false; // fontawesome flag
-
-               var _setOpts = function(opts){
-                       var _opts = {};
-                       opts = opts || {};
-                       _opts.kb = (angular.isDefined(opts.keyboard)) ? opts.keyboard : _k; // values: true,false
-                       _opts.bd = (angular.isDefined(opts.backdrop)) ? opts.backdrop : _b; // values: 'static',true,false
-                       _opts.ws = (angular.isDefined(opts.size) && (angular.equals(opts.size,'sm') || angular.equals(opts.size,'lg') || angular.equals(opts.size,'md'))) ? opts.size : _wSize; // values: 'sm', 'lg', 'md'
-                       _opts.wc = (angular.isDefined(opts.windowClass)) ? opts.windowClass : _w; // additional CSS class(es) to be added to a modal window
-
-                       return _opts;
-               }; // end _setOpts
-
-               /**
-                * Use Backdrop
-                * 
-                * Sets the use of the modal backdrop.  Either to have one or not and
-                * whether or not it responds to mouse clicks ('static' sets the 
-                * backdrop to true and does not respond to mouse clicks).
-                *
-                * @param       val     mixed   (true, false, 'static')
-                */
-               this.useBackdrop = function(val){ // possible values : true, false, 'static'
-                       if(angular.isDefined(val))
-                               _b = val;
-               }; // end useStaticBackdrop
-
-               /**
-                * Use ESC Close
-                * 
-                * Sets the use of the ESC (escape) key to close modal windows.
-                *
-                * @param       val     boolean
-                */
-               this.useEscClose = function(val){ // possible values : true, false
-                       if(angular.isDefined(val))
-                               _k = (!angular.equals(val,0) && !angular.equals(val,'false') && !angular.equals(val,'no') && !angular.equals(val,null) && !angular.equals(val,false)) ? true : false;
-               }; // end useESCClose
-
-               /**
-                * Use Class
-                *
-                * Sets the additional CSS window class of the modal window template.
-                *
-                * @param       val     string
-                */
-               this.useClass = function(val){
-                       if(angular.isDefined(val))
-                               _w = val;
-               }; // end useClass
-
-               /**
-                * Use Copy
-                * 
-                * Determines the use of angular.copy when sending data to the modal controller.
-                *
-                * @param       val     boolean
-                */
-               this.useCopy = function(val){
-                       if(angular.isDefined(val))
-                               _copy = (!angular.equals(val,0) && !angular.equals(val,'false') && !angular.equals(val,'no') && !angular.equals(val,null) && !angular.equals(val,false)) ? true : false;
-               }; // end useCopy
-
-               /**
-                * Set Window Template
-                *
-                * Sets a path to a template to use overriding modal's window template.
-                *
-                * @param       val     string
-                */
-               this.setWindowTmpl = function(val){
-                       if(angular.isDefined(val))
-                               _wTmpl = val;
-               }; // end setWindowTmpl
-
-               /**
-                * Set Size
-                *
-                * Sets the modal size to use (sm,lg,md), requires Angular-ui-Bootstrap 0.11.0 and Bootstrap 3.1.0 + 
-                *
-                * @param       val     string (sm,lg,md)
-                */
-               this.setSize = function(val){
-                       if(angular.isDefined(val))
-                               _wSize = (angular.equals(val,'sm') || angular.equals(val,'lg') || angular.equals(val,'md')) ? val : _wSize;
-               }; // end setSize
-
-               /**
-                * Use Font-Awesome.
-                *
-                * Sets Font-Awesome flag to true and substitutes font-awesome icons for
-                * Bootstrap's glyphicons.
-                */
-               this.useFontAwesome = function(){
-                       _fa = true;
-               }; // end useFontAwesome
-
-
-               this.$get = ['$modal',function ($modal){
-                       
-                       return {
-                               /**
-                                * Error Dialog
-                                *
-                                * @param       header  string
-                                * @param       msg     string
-                                * @param       opts    object
-                                */
-                               error : function(header,msg,opts){
-                                       opts = _setOpts(opts);
-
-                                       return $modal.open({
-                                               templateUrl : '/dialogs/error.html',
-                                               controller : 'errorDialogCtrl',
-                                               backdrop: opts.bd,
-                                               keyboard: opts.kb,
-                                               windowClass: opts.wc,
-                                               size: opts.ws,
-                                               resolve : {
-                                                       data : function(){
-                                                               return {
-                                                                       header : angular.copy(header),
-                                                                       msg : angular.copy(msg),
-                                                                       fa : _fa
-                                                               };
-                                                       }
-                                               }
-                                       }); // end modal.open
-                               }, // end error
-                               
-                               /**
-                                * Wait Dialog
-                                *
-                                * @param       header          string
-                                * @param       msg             string
-                                * @param       progress        int
-                                * @param       opts    object
-                                */
-                               wait : function(header,msg,progress,opts){
-                                       opts = _setOpts(opts);
-
-                                       return $modal.open({
-                                               templateUrl : '/dialogs/wait.html',
-                                               controller : 'waitDialogCtrl',
-                                               backdrop: opts.bd,
-                                               keyboard: opts.kb,
-                                               windowClass: opts.wc,
-                                               size: opts.ws,
-                                               resolve : {
-                                                       data : function(){
-                                                               return {
-                                                                       header : angular.copy(header),
-                                                                       msg : angular.copy(msg),
-                                                                       progress : angular.copy(progress),
-                                                                       fa : _fa
-                                                               };
-                                                       }
-                                               }
-                                       }); // end modal.open
-                               }, // end wait
-                               
-                               /**
-                                * Notify Dialog
-                                *
-                                * @param       header          string
-                                * @param       msg             string
-                                * @param       opts    object
-                                */
-                               notify : function(header,msg,opts){
-                                       opts = _setOpts(opts);
-
-                                       return $modal.open({
-                                               templateUrl : '/dialogs/notify.html',
-                                               controller : 'notifyDialogCtrl',
-                                               backdrop: opts.bd,
-                                               keyboard: opts.kb,
-                                               windowClass: opts.wc,
-                                               size: opts.ws,
-                                               resolve : {
-                                                       data : function(){
-                                                               return {
-                                                                       header : angular.copy(header),
-                                                                       msg : angular.copy(msg),
-                                                                       fa : _fa
-                                                               };
-                                                       }
-                                               }
-                                       }); // end modal.open
-                               }, // end notify
-                               
-                               /**
-                                * Confirm Dialog
-                                *
-                                * @param       header  string
-                                * @param       msg     string
-                                * @param       opts    object
-                                */
-                               confirm : function(header,msg,opts){
-                                       opts = _setOpts(opts);
-
-                                       return $modal.open({
-                                               templateUrl : '/dialogs/confirm.html',
-                                               controller : 'confirmDialogCtrl',
-                                               backdrop: opts.bd,
-                                               keyboard: opts.kb,
-                                               windowClass: opts.wc,
-                                               size: opts.ws,
-                                               resolve : {
-                                                       data : function(){
-                                                               return {
-                                                                       header : angular.copy(header),
-                                                                       msg : angular.copy(msg),
-                                                                       fa : _fa
-                                                               };
-                                                       }
-                                               }
-                                       }); // end modal.open
-                               }, // end confirm
-                               
-                               /**
-                                * Create Custom Dialog
-                                *
-                                * @param       url     string
-                                * @param       ctrlr   string
-                                * @param       data    object
-                                * @param       opts    object
-                                */
-                               create : function(url,ctrlr,data,opts){
-                                       var copy = (opts && angular.isDefined(opts.copy)) ? opts.copy : _copy;
-                                       opts = _setOpts(opts);
-
-                                       return $modal.open({
-                                               templateUrl : url,
-                                               controller : ctrlr,
-                                               keyboard : opts.kb,
-                                               backdrop : opts.bd,
-                                               windowClass: opts.wc,
-                                               size: opts.ws,
-                                               resolve : {
-                                                       data : function() { 
-                                                               if(copy)
-                                                                       return angular.copy(data);
-                                                               else
-                                                                       return data;
-                                                       }
-                                               }
-                                       }); // end modal.open
-                               } // end create
-
-                       }; // end return
-
-               }]; // end $get
-       }]); // end provider dialogs
\ No newline at end of file
diff --git a/src/main/resources/META-INF/resources/designer/lib/excanvas.js b/src/main/resources/META-INF/resources/designer/lib/excanvas.js
deleted file mode 100644 (file)
index 4ca9653..0000000
+++ /dev/null
@@ -1,1438 +0,0 @@
-// Memory Leaks patch from http://explorercanvas.googlecode.com/svn/trunk/ 
-//  svn : r73
-// ------------------------------------------------------------------
-// Copyright 2006 Google Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//   http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-
-// Known Issues:
-//
-// * Patterns only support repeat.
-// * Radial gradient are not implemented. The VML version of these look very
-//   different from the canvas one.
-// * Clipping paths are not implemented.
-// * Coordsize. The width and height attribute have higher priority than the
-//   width and height style values which isn't correct.
-// * Painting mode isn't implemented.
-// * Canvas width/height should is using content-box by default. IE in
-//   Quirks mode will draw the canvas using border-box. Either change your
-//   doctype to HTML5
-//   (http://www.whatwg.org/specs/web-apps/current-work/#the-doctype)
-//   or use Box Sizing Behavior from WebFX
-//   (http://webfx.eae.net/dhtml/boxsizing/boxsizing.html)
-// * Non uniform scaling does not correctly scale strokes.
-// * Optimize. There is always room for speed improvements.
-
-// Only add this code if we do not already have a canvas implementation
-if (!document.createElement('canvas').getContext) {
-
-(function() {
-
-  // alias some functions to make (compiled) code shorter
-  var m = Math;
-  var mr = m.round;
-  var ms = m.sin;
-  var mc = m.cos;
-  var abs = m.abs;
-  var sqrt = m.sqrt;
-
-  // this is used for sub pixel precision
-  var Z = 10;
-  var Z2 = Z / 2;
-
-  var IE_VERSION = +navigator.userAgent.match(/MSIE ([\d.]+)?/)[1];
-
-  /**
-   * This funtion is assigned to the <canvas> elements as element.getContext().
-   * @this {HTMLElement}
-   * @return {CanvasRenderingContext2D_}
-   */
-  function getContext() {
-    return this.context_ ||
-        (this.context_ = new CanvasRenderingContext2D_(this));
-  }
-
-  var slice = Array.prototype.slice;
-
-  /**
-   * Binds a function to an object. The returned function will always use the
-   * passed in {@code obj} as {@code this}.
-   *
-   * Example:
-   *
-   *   g = bind(f, obj, a, b)
-   *   g(c, d) // will do f.call(obj, a, b, c, d)
-   *
-   * @param {Function} f The function to bind the object to
-   * @param {Object} obj The object that should act as this when the function
-   *     is called
-   * @param {*} var_args Rest arguments that will be used as the initial
-   *     arguments when the function is called
-   * @return {Function} A new function that has bound this
-   */
-  function bind(f, obj, var_args) {
-    var a = slice.call(arguments, 2);
-    return function() {
-      return f.apply(obj, a.concat(slice.call(arguments)));
-    };
-  }
-
-  function encodeHtmlAttribute(s) {
-    return String(s).replace(/&/g, '&amp;').replace(/"/g, '&quot;');
-  }
-
-  function addNamespace(doc, prefix, urn) {
-    if (!doc.namespaces[prefix]) {
-      doc.namespaces.add(prefix, urn, '#default#VML');
-    }
-  }
-
-  function addNamespacesAndStylesheet(doc) {
-    addNamespace(doc, 'g_vml_', 'urn:schemas-microsoft-com:vml');
-    addNamespace(doc, 'g_o_', 'urn:schemas-microsoft-com:office:office');
-
-    // Setup default CSS.  Only add one style sheet per document
-    if (!doc.styleSheets['ex_canvas_']) {
-      var ss = doc.createStyleSheet();
-      ss.owningElement.id = 'ex_canvas_';
-      ss.cssText = 'canvas{display:inline-block;overflow:hidden;' +
-          // default size is 300x150 in Gecko and Opera
-          'text-align:left;width:300px;height:150px}';
-    }
-  }
-
-  // Add namespaces and stylesheet at startup.
-  addNamespacesAndStylesheet(document);
-
-  var G_vmlCanvasManager_ = {
-    init: function(opt_doc) {
-      var doc = opt_doc || document;
-      // Create a dummy element so that IE will allow canvas elements to be
-      // recognized.
-      doc.createElement('canvas');
-      doc.attachEvent('onreadystatechange', bind(this.init_, this, doc));
-    },
-
-    init_: function(doc) {
-      // find all canvas elements
-      var els = doc.getElementsByTagName('canvas');
-      for (var i = 0; i < els.length; i++) {
-        this.initElement(els[i]);
-      }
-    },
-
-    /**
-     * Public initializes a canvas element so that it can be used as canvas
-     * element from now on. This is called automatically before the page is
-     * loaded but if you are creating elements using createElement you need to
-     * make sure this is called on the element.
-     * @param {HTMLElement} el The canvas element to initialize.
-     * @return {HTMLElement} the element that was created.
-     */
-    initElement: function(el) {
-      if (!el.getContext) {
-        el.getContext = getContext;
-
-        // Add namespaces and stylesheet to document of the element.
-        addNamespacesAndStylesheet(el.ownerDocument);
-
-        // Remove fallback content. There is no way to hide text nodes so we
-        // just remove all childNodes. We could hide all elements and remove
-        // text nodes but who really cares about the fallback content.
-        el.innerHTML = '';
-
-        // do not use inline function because that will leak memory
-        el.attachEvent('onpropertychange', onPropertyChange);
-        el.attachEvent('onresize', onResize);
-
-        var attrs = el.attributes;
-        if (attrs.width && attrs.width.specified) {
-          // TODO: use runtimeStyle and coordsize
-          // el.getContext().setWidth_(attrs.width.nodeValue);
-          el.style.width = attrs.width.nodeValue + 'px';
-        } else {
-          el.width = el.clientWidth;
-        }
-        if (attrs.height && attrs.height.specified) {
-          // TODO: use runtimeStyle and coordsize
-          // el.getContext().setHeight_(attrs.height.nodeValue);
-          el.style.height = attrs.height.nodeValue + 'px';
-        } else {
-          el.height = el.clientHeight;
-        }
-        //el.getContext().setCoordsize_()
-      }
-      return el;
-    },
-
-    // Memory Leaks patch : see http://code.google.com/p/explorercanvas/issues/detail?id=82
-    uninitElement: function(el){
-      if (el.getContext) {
-        var ctx = el.getContext();
-        delete ctx.element_;
-        delete ctx.canvas;
-        el.innerHTML = "";
-        //el.outerHTML = "";
-        el.context_ = null;
-        el.getContext = null;
-        el.detachEvent("onpropertychange", onPropertyChange);
-        el.detachEvent("onresize", onResize);
-      }
-    }
-  };
-
-  function onPropertyChange(e) {
-    var el = e.srcElement;
-
-    switch (e.propertyName) {
-      case 'width':
-        el.getContext().clearRect();
-        el.style.width = el.attributes.width.nodeValue + 'px';
-        // In IE8 this does not trigger onresize.
-        el.firstChild.style.width =  el.clientWidth + 'px';
-        break;
-      case 'height':
-        el.getContext().clearRect();
-        el.style.height = el.attributes.height.nodeValue + 'px';
-        el.firstChild.style.height = el.clientHeight + 'px';
-        break;
-    }
-  }
-
-  function onResize(e) {
-    var el = e.srcElement;
-    if (el.firstChild) {
-      el.firstChild.style.width =  el.clientWidth + 'px';
-      el.firstChild.style.height = el.clientHeight + 'px';
-    }
-  }
-
-  G_vmlCanvasManager_.init();
-
-  // precompute "00" to "FF"
-  var decToHex = [];
-  for (var i = 0; i < 16; i++) {
-    for (var j = 0; j < 16; j++) {
-      decToHex[i * 16 + j] = i.toString(16) + j.toString(16);
-    }
-  }
-
-  function createMatrixIdentity() {
-    return [
-      [1, 0, 0],
-      [0, 1, 0],
-      [0, 0, 1]
-    ];
-  }
-
-  function matrixMultiply(m1, m2) {
-    var result = createMatrixIdentity();
-
-    for (var x = 0; x < 3; x++) {
-      for (var y = 0; y < 3; y++) {
-        var sum = 0;
-
-        for (var z = 0; z < 3; z++) {
-          sum += m1[x][z] * m2[z][y];
-        }
-
-        result[x][y] = sum;
-      }
-    }
-    return result;
-  }
-
-  function copyState(o1, o2) {
-    o2.fillStyle     = o1.fillStyle;
-    o2.lineCap       = o1.lineCap;
-    o2.lineJoin      = o1.lineJoin;
-    o2.lineWidth     = o1.lineWidth;
-    o2.miterLimit    = o1.miterLimit;
-    o2.shadowBlur    = o1.shadowBlur;
-    o2.shadowColor   = o1.shadowColor;
-    o2.shadowOffsetX = o1.shadowOffsetX;
-    o2.shadowOffsetY = o1.shadowOffsetY;
-    o2.strokeStyle   = o1.strokeStyle;
-    o2.globalAlpha   = o1.globalAlpha;
-    o2.font          = o1.font;
-    o2.textAlign     = o1.textAlign;
-    o2.textBaseline  = o1.textBaseline;
-    o2.arcScaleX_    = o1.arcScaleX_;
-    o2.arcScaleY_    = o1.arcScaleY_;
-    o2.lineScale_    = o1.lineScale_;
-  }
-
-  var colorData = {
-    aliceblue: '#F0F8FF',
-    antiquewhite: '#FAEBD7',
-    aquamarine: '#7FFFD4',
-    azure: '#F0FFFF',
-    beige: '#F5F5DC',
-    bisque: '#FFE4C4',
-    black: '#000000',
-    blanchedalmond: '#FFEBCD',
-    blueviolet: '#8A2BE2',
-    brown: '#A52A2A',
-    burlywood: '#DEB887',
-    cadetblue: '#5F9EA0',
-    chartreuse: '#7FFF00',
-    chocolate: '#D2691E',
-    coral: '#FF7F50',
-    cornflowerblue: '#6495ED',
-    cornsilk: '#FFF8DC',
-    crimson: '#DC143C',
-    cyan: '#00FFFF',
-    darkblue: '#00008B',
-    darkcyan: '#008B8B',
-    darkgoldenrod: '#B8860B',
-    darkgray: '#A9A9A9',
-    darkgreen: '#006400',
-    darkgrey: '#A9A9A9',
-    darkkhaki: '#BDB76B',
-    darkmagenta: '#8B008B',
-    darkolivegreen: '#556B2F',
-    darkorange: '#FF8C00',
-    darkorchid: '#9932CC',
-    darkred: '#8B0000',
-    darksalmon: '#E9967A',
-    darkseagreen: '#8FBC8F',
-    darkslateblue: '#483D8B',
-    darkslategray: '#2F4F4F',
-    darkslategrey: '#2F4F4F',
-    darkturquoise: '#00CED1',
-    darkviolet: '#9400D3',
-    deeppink: '#FF1493',
-    deepskyblue: '#00BFFF',
-    dimgray: '#696969',
-    dimgrey: '#696969',
-    dodgerblue: '#1E90FF',
-    firebrick: '#B22222',
-    floralwhite: '#FFFAF0',
-    forestgreen: '#228B22',
-    gainsboro: '#DCDCDC',
-    ghostwhite: '#F8F8FF',
-    gold: '#FFD700',
-    goldenrod: '#DAA520',
-    grey: '#808080',
-    greenyellow: '#ADFF2F',
-    honeydew: '#F0FFF0',
-    hotpink: '#FF69B4',
-    indianred: '#CD5C5C',
-    indigo: '#4B0082',
-    ivory: '#FFFFF0',
-    khaki: '#F0E68C',
-    lavender: '#E6E6FA',
-    lavenderblush: '#FFF0F5',
-    lawngreen: '#7CFC00',
-    lemonchiffon: '#FFFACD',
-    lightblue: '#ADD8E6',
-    lightcoral: '#F08080',
-    lightcyan: '#E0FFFF',
-    lightgoldenrodyellow: '#FAFAD2',
-    lightgreen: '#90EE90',
-    lightgrey: '#D3D3D3',
-    lightpink: '#FFB6C1',
-    lightsalmon: '#FFA07A',
-    lightseagreen: '#20B2AA',
-    lightskyblue: '#87CEFA',
-    lightslategray: '#778899',
-    lightslategrey: '#778899',
-    lightsteelblue: '#B0C4DE',
-    lightyellow: '#FFFFE0',
-    limegreen: '#32CD32',
-    linen: '#FAF0E6',
-    magenta: '#FF00FF',
-    mediumaquamarine: '#66CDAA',
-    mediumblue: '#0000CD',
-    mediumorchid: '#BA55D3',
-    mediumpurple: '#9370DB',
-    mediumseagreen: '#3CB371',
-    mediumslateblue: '#7B68EE',
-    mediumspringgreen: '#00FA9A',
-    mediumturquoise: '#48D1CC',
-    mediumvioletred: '#C71585',
-    midnightblue: '#191970',
-    mintcream: '#F5FFFA',
-    mistyrose: '#FFE4E1',
-    moccasin: '#FFE4B5',
-    navajowhite: '#FFDEAD',
-    oldlace: '#FDF5E6',
-    olivedrab: '#6B8E23',
-    orange: '#FFA500',
-    orangered: '#FF4500',
-    orchid: '#DA70D6',
-    palegoldenrod: '#EEE8AA',
-    palegreen: '#98FB98',
-    paleturquoise: '#AFEEEE',
-    palevioletred: '#DB7093',
-    papayawhip: '#FFEFD5',
-    peachpuff: '#FFDAB9',
-    peru: '#CD853F',
-    pink: '#FFC0CB',
-    plum: '#DDA0DD',
-    powderblue: '#B0E0E6',
-    rosybrown: '#BC8F8F',
-    royalblue: '#4169E1',
-    saddlebrown: '#8B4513',
-    salmon: '#FA8072',
-    sandybrown: '#F4A460',
-    seagreen: '#2E8B57',
-    seashell: '#FFF5EE',
-    sienna: '#A0522D',
-    skyblue: '#87CEEB',
-    slateblue: '#6A5ACD',
-    slategray: '#708090',
-    slategrey: '#708090',
-    snow: '#FFFAFA',
-    springgreen: '#00FF7F',
-    steelblue: '#4682B4',
-    tan: '#D2B48C',
-    thistle: '#D8BFD8',
-    tomato: '#FF6347',
-    turquoise: '#40E0D0',
-    violet: '#EE82EE',
-    wheat: '#F5DEB3',
-    whitesmoke: '#F5F5F5',
-    yellowgreen: '#9ACD32'
-  };
-
-
-  function getRgbHslContent(styleString) {
-    var start = styleString.indexOf('(', 3);
-    var end = styleString.indexOf(')', start + 1);
-    var parts = styleString.substring(start + 1, end).split(',');
-    // add alpha if needed
-    if (parts.length != 4 || styleString.charAt(3) != 'a') {
-      parts[3] = 1;
-    }
-    return parts;
-  }
-
-  function percent(s) {
-    return parseFloat(s) / 100;
-  }
-
-  function clamp(v, min, max) {
-    return Math.min(max, Math.max(min, v));
-  }
-
-  function hslToRgb(parts){
-    var r, g, b, h, s, l;
-    h = parseFloat(parts[0]) / 360 % 360;
-    if (h < 0)
-      h++;
-    s = clamp(percent(parts[1]), 0, 1);
-    l = clamp(percent(parts[2]), 0, 1);
-    if (s == 0) {
-      r = g = b = l; // achromatic
-    } else {
-      var q = l < 0.5 ? l * (1 + s) : l + s - l * s;
-      var p = 2 * l - q;
-      r = hueToRgb(p, q, h + 1 / 3);
-      g = hueToRgb(p, q, h);
-      b = hueToRgb(p, q, h - 1 / 3);
-    }
-
-    return '#' + decToHex[Math.floor(r * 255)] +
-        decToHex[Math.floor(g * 255)] +
-        decToHex[Math.floor(b * 255)];
-  }
-
-  function hueToRgb(m1, m2, h) {
-    if (h < 0)
-      h++;
-    if (h > 1)
-      h--;
-
-    if (6 * h < 1)
-      return m1 + (m2 - m1) * 6 * h;
-    else if (2 * h < 1)
-      return m2;
-    else if (3 * h < 2)
-      return m1 + (m2 - m1) * (2 / 3 - h) * 6;
-    else
-      return m1;
-  }
-
-  var processStyleCache = {};
-
-  function processStyle(styleString) {
-    if (styleString in processStyleCache) {
-      return processStyleCache[styleString];
-    }
-
-    var str, alpha = 1;
-
-    styleString = String(styleString);
-    if (styleString.charAt(0) == '#') {
-      str = styleString;
-    } else if (/^rgb/.test(styleString)) {
-      var parts = getRgbHslContent(styleString);
-      var str = '#', n;
-      for (var i = 0; i < 3; i++) {
-        if (parts[i].indexOf('%') != -1) {
-          n = Math.floor(percent(parts[i]) * 255);
-        } else {
-          n = +parts[i];
-        }
-        str += decToHex[clamp(n, 0, 255)];
-      }
-      alpha = +parts[3];
-    } else if (/^hsl/.test(styleString)) {
-      var parts = getRgbHslContent(styleString);
-      str = hslToRgb(parts);
-      alpha = parts[3];
-    } else {
-      str = colorData[styleString] || styleString;
-    }
-    return processStyleCache[styleString] = {color: str, alpha: alpha};
-  }
-
-  var DEFAULT_STYLE = {
-    style: 'normal',
-    variant: 'normal',
-    weight: 'normal',
-    size: 10,
-    family: 'sans-serif'
-  };
-
-  // Internal text style cache
-  var fontStyleCache = {};
-
-  function processFontStyle(styleString) {
-    if (fontStyleCache[styleString]) {
-      return fontStyleCache[styleString];
-    }
-
-    var el = document.createElement('div');
-    var style = el.style;
-    try {
-      style.font = styleString;
-    } catch (ex) {
-      // Ignore failures to set to invalid font.
-    }
-
-    return fontStyleCache[styleString] = {
-      style: style.fontStyle || DEFAULT_STYLE.style,
-      variant: style.fontVariant || DEFAULT_STYLE.variant,
-      weight: style.fontWeight || DEFAULT_STYLE.weight,
-      size: style.fontSize || DEFAULT_STYLE.size,
-      family: style.fontFamily || DEFAULT_STYLE.family
-    };
-  }
-
-  function getComputedStyle(style, element) {
-    var computedStyle = {};
-
-    for (var p in style) {
-      computedStyle[p] = style[p];
-    }
-
-    // Compute the size
-    var canvasFontSize = parseFloat(element.currentStyle.fontSize),
-        fontSize = parseFloat(style.size);
-
-    if (typeof style.size == 'number') {
-      computedStyle.size = style.size;
-    } else if (style.size.indexOf('px') != -1) {
-      computedStyle.size = fontSize;
-    } else if (style.size.indexOf('em') != -1) {
-      computedStyle.size = canvasFontSize * fontSize;
-    } else if(style.size.indexOf('%') != -1) {
-      computedStyle.size = (canvasFontSize / 100) * fontSize;
-    } else if (style.size.indexOf('pt') != -1) {
-      computedStyle.size = fontSize / .75;
-    } else {
-      computedStyle.size = canvasFontSize;
-    }
-
-    // Different scaling between normal text and VML text. This was found using
-    // trial and error to get the same size as non VML text.
-    computedStyle.size *= 0.981;
-
-    // Fix for VML handling of bare font family names.  Add a '' around font family names.
-    computedStyle.family =  "'" + computedStyle.family.replace(/(\'|\")/g,'').replace(/\s*,\s*/g, "', '") + "'";
-
-    return computedStyle;
-  }
-
-  function buildStyle(style) {
-    return style.style + ' ' + style.variant + ' ' + style.weight + ' ' +
-        style.size + 'px ' + style.family;
-  }
-
-  var lineCapMap = {
-    'butt': 'flat',
-    'round': 'round'
-  };
-
-  function processLineCap(lineCap) {
-    return lineCapMap[lineCap] || 'square';
-  }
-
-  /**
-   * This class implements CanvasRenderingContext2D interface as described by
-   * the WHATWG.
-   * @param {HTMLElement} canvasElement The element that the 2D context should
-   * be associated with
-   */
-  function CanvasRenderingContext2D_(canvasElement) {
-    this.m_ = createMatrixIdentity();
-
-    this.mStack_ = [];
-    this.aStack_ = [];
-    this.currentPath_ = [];
-
-    // Canvas context properties
-    this.strokeStyle = '#000';
-    this.fillStyle = '#000';
-
-    this.lineWidth = 1;
-    this.lineJoin = 'miter';
-    this.lineCap = 'butt';
-    this.miterLimit = Z * 1;
-    this.globalAlpha = 1;
-    this.font = '10px sans-serif';
-    this.textAlign = 'left';
-    this.textBaseline = 'alphabetic';
-    this.canvas = canvasElement;
-
-    var cssText = 'width:' + canvasElement.clientWidth + 'px;height:' +
-        canvasElement.clientHeight + 'px;overflow:hidden;position:absolute';
-    var el = canvasElement.ownerDocument.createElement('div');
-    el.style.cssText = cssText;
-    canvasElement.appendChild(el);
-
-    var overlayEl = el.cloneNode(false);
-    // Use a non transparent background.
-    overlayEl.style.backgroundColor = 'red';
-    overlayEl.style.filter = 'alpha(opacity=0)';
-    canvasElement.appendChild(overlayEl);
-
-    this.element_ = el;
-    this.arcScaleX_ = 1;
-    this.arcScaleY_ = 1;
-    this.lineScale_ = 1;
-  }
-
-  var contextPrototype = CanvasRenderingContext2D_.prototype;
-  contextPrototype.clearRect = function() {
-    if (this.textMeasureEl_) {
-      this.textMeasureEl_.removeNode(true);
-      this.textMeasureEl_ = null;
-    }
-    this.element_.innerHTML = '';
-  };
-
-  contextPrototype.beginPath = function() {
-    // TODO: Branch current matrix so that save/restore has no effect
-    //       as per safari docs.
-    this.currentPath_ = [];
-  };
-
-  contextPrototype.moveTo = function(aX, aY) {
-    var p = getCoords(this, aX, aY);
-    this.currentPath_.push({type: 'moveTo', x: p.x, y: p.y});
-    this.currentX_ = p.x;
-    this.currentY_ = p.y;
-  };
-
-  contextPrototype.lineTo = function(aX, aY) {
-    var p = getCoords(this, aX, aY);
-    this.currentPath_.push({type: 'lineTo', x: p.x, y: p.y});
-
-    this.currentX_ = p.x;
-    this.currentY_ = p.y;
-  };
-
-  contextPrototype.bezierCurveTo = function(aCP1x, aCP1y,
-                                            aCP2x, aCP2y,
-                                            aX, aY) {
-    var p = getCoords(this, aX, aY);
-    var cp1 = getCoords(this, aCP1x, aCP1y);
-    var cp2 = getCoords(this, aCP2x, aCP2y);
-    bezierCurveTo(this, cp1, cp2, p);
-  };
-
-  // Helper function that takes the already fixed cordinates.
-  function bezierCurveTo(self, cp1, cp2, p) {
-    self.currentPath_.push({
-      type: 'bezierCurveTo',
-      cp1x: cp1.x,
-      cp1y: cp1.y,
-      cp2x: cp2.x,
-      cp2y: cp2.y,
-      x: p.x,
-      y: p.y
-    });
-    self.currentX_ = p.x;
-    self.currentY_ = p.y;
-  }
-
-  contextPrototype.quadraticCurveTo = function(aCPx, aCPy, aX, aY) {
-    // the following is lifted almost directly from
-    // http://developer.mozilla.org/en/docs/Canvas_tutorial:Drawing_shapes
-
-    var cp = getCoords(this, aCPx, aCPy);
-    var p = getCoords(this, aX, aY);
-
-    var cp1 = {
-      x: this.currentX_ + 2.0 / 3.0 * (cp.x - this.currentX_),
-      y: this.currentY_ + 2.0 / 3.0 * (cp.y - this.currentY_)
-    };
-    var cp2 = {
-      x: cp1.x + (p.x - this.currentX_) / 3.0,
-      y: cp1.y + (p.y - this.currentY_) / 3.0
-    };
-
-    bezierCurveTo(this, cp1, cp2, p);
-  };
-
-  contextPrototype.arc = function(aX, aY, aRadius,
-                                  aStartAngle, aEndAngle, aClockwise) {
-    aRadius *= Z;
-    var arcType = aClockwise ? 'at' : 'wa';
-
-    var xStart = aX + mc(aStartAngle) * aRadius - Z2;
-    var yStart = aY + ms(aStartAngle) * aRadius - Z2;
-
-    var xEnd = aX + mc(aEndAngle) * aRadius - Z2;
-    var yEnd = aY + ms(aEndAngle) * aRadius - Z2;
-
-    // IE won't render arches drawn counter clockwise if xStart == xEnd.
-    if (xStart == xEnd && !aClockwise) {
-      xStart += 0.125; // Offset xStart by 1/80 of a pixel. Use something
-                       // that can be represented in binary
-    }
-
-    var p = getCoords(this, aX, aY);
-    var pStart = getCoords(this, xStart, yStart);
-    var pEnd = getCoords(this, xEnd, yEnd);
-
-    this.currentPath_.push({type: arcType,
-                           x: p.x,
-                           y: p.y,
-                           radius: aRadius,
-                           xStart: pStart.x,
-                           yStart: pStart.y,
-                           xEnd: pEnd.x,
-                           yEnd: pEnd.y});
-
-  };
-
-  contextPrototype.rect = function(aX, aY, aWidth, aHeight) {
-    this.moveTo(aX, aY);
-    this.lineTo(aX + aWidth, aY);
-    this.lineTo(aX + aWidth, aY + aHeight);
-    this.lineTo(aX, aY + aHeight);
-    this.closePath();
-  };
-
-  contextPrototype.strokeRect = function(aX, aY, aWidth, aHeight) {
-    var oldPath = this.currentPath_;
-    this.beginPath();
-
-    this.moveTo(aX, aY);
-    this.lineTo(aX + aWidth, aY);
-    this.lineTo(aX + aWidth, aY + aHeight);
-    this.lineTo(aX, aY + aHeight);
-    this.closePath();
-    this.stroke();
-
-    this.currentPath_ = oldPath;
-  };
-
-  contextPrototype.fillRect = function(aX, aY, aWidth, aHeight) {
-    var oldPath = this.currentPath_;
-    this.beginPath();
-
-    this.moveTo(aX, aY);
-    this.lineTo(aX + aWidth, aY);
-    this.lineTo(aX + aWidth, aY + aHeight);
-    this.lineTo(aX, aY + aHeight);
-    this.closePath();
-    this.fill();
-
-    this.currentPath_ = oldPath;
-  };
-
-  contextPrototype.createLinearGradient = function(aX0, aY0, aX1, aY1) {
-    var gradient = new CanvasGradient_('gradient');
-    gradient.x0_ = aX0;
-    gradient.y0_ = aY0;
-    gradient.x1_ = aX1;
-    gradient.y1_ = aY1;
-    return gradient;
-  };
-
-  contextPrototype.createRadialGradient = function(aX0, aY0, aR0,
-                                                   aX1, aY1, aR1) {
-    var gradient = new CanvasGradient_('gradientradial');
-    gradient.x0_ = aX0;
-    gradient.y0_ = aY0;
-    gradient.r0_ = aR0;
-    gradient.x1_ = aX1;
-    gradient.y1_ = aY1;
-    gradient.r1_ = aR1;
-    return gradient;
-  };
-
-  contextPrototype.drawImage = function(image, var_args) {
-    var dx, dy, dw, dh, sx, sy, sw, sh;
-
-    // to find the original width we overide the width and height
-    var oldRuntimeWidth = image.runtimeStyle.width;
-    var oldRuntimeHeight = image.runtimeStyle.height;
-    image.runtimeStyle.width = 'auto';
-    image.runtimeStyle.height = 'auto';
-
-    // get the original size
-    var w = image.width;
-    var h = image.height;
-
-    // and remove overides
-    image.runtimeStyle.width = oldRuntimeWidth;
-    image.runtimeStyle.height = oldRuntimeHeight;
-
-    if (arguments.length == 3) {
-      dx = arguments[1];
-      dy = arguments[2];
-      sx = sy = 0;
-      sw = dw = w;
-      sh = dh = h;
-    } else if (arguments.length == 5) {
-      dx = arguments[1];
-      dy = arguments[2];
-      dw = arguments[3];
-      dh = arguments[4];
-      sx = sy = 0;
-      sw = w;
-      sh = h;
-    } else if (arguments.length == 9) {
-      sx = arguments[1];
-      sy = arguments[2];
-      sw = arguments[3];
-      sh = arguments[4];
-      dx = arguments[5];
-      dy = arguments[6];
-      dw = arguments[7];
-      dh = arguments[8];
-    } else {
-      throw Error('Invalid number of arguments');
-    }
-
-    var d = getCoords(this, dx, dy);
-
-    var w2 = sw / 2;
-    var h2 = sh / 2;
-
-    var vmlStr = [];
-
-    var W = 10;
-    var H = 10;
-
-    // For some reason that I've now forgotten, using divs didn't work
-    vmlStr.push(' <g_vml_:group',
-                ' coordsize="', Z * W, ',', Z * H, '"',
-                ' coordorigin="0,0"' ,
-                ' style="width:', W, 'px;height:', H, 'px;position:absolute;');
-
-    // If filters are necessary (rotation exists), create them
-    // filters are bog-slow, so only create them if abbsolutely necessary
-    // The following check doesn't account for skews (which don't exist
-    // in the canvas spec (yet) anyway.
-
-    if (this.m_[0][0] != 1 || this.m_[0][1] ||
-        this.m_[1][1] != 1 || this.m_[1][0]) {
-      var filter = [];
-
-      // Note the 12/21 reversal
-      filter.push('M11=', this.m_[0][0], ',',
-                  'M12=', this.m_[1][0], ',',
-                  'M21=', this.m_[0][1], ',',
-                  'M22=', this.m_[1][1], ',',
-                  'Dx=', mr(d.x / Z), ',',
-                  'Dy=', mr(d.y / Z), '');
-
-      // Bounding box calculation (need to minimize displayed area so that
-      // filters don't waste time on unused pixels.
-      var max = d;
-      var c2 = getCoords(this, dx + dw, dy);
-      var c3 = getCoords(this, dx, dy + dh);
-      var c4 = getCoords(this, dx + dw, dy + dh);
-
-      max.x = m.max(max.x, c2.x, c3.x, c4.x);
-      max.y = m.max(max.y, c2.y, c3.y, c4.y);
-
-      vmlStr.push('padding:0 ', mr(max.x / Z), 'px ', mr(max.y / Z),
-                  'px 0;filter:progid:DXImageTransform.Microsoft.Matrix(',
-                  filter.join(''), ", sizingmethod='clip');");
-
-    } else {
-      vmlStr.push('top:', mr(d.y / Z), 'px;left:', mr(d.x / Z), 'px;');
-    }
-
-    vmlStr.push(' ">' ,
-                '<g_vml_:image src="', image.src, '"',
-                ' style="width:', Z * dw, 'px;',
-                ' height:', Z * dh, 'px"',
-                ' cropleft="', sx / w, '"',
-                ' croptop="', sy / h, '"',
-                ' cropright="', (w - sx - sw) / w, '"',
-                ' cropbottom="', (h - sy - sh) / h, '"',
-                ' />',
-                '</g_vml_:group>');
-
-    this.element_.insertAdjacentHTML('BeforeEnd', vmlStr.join(''));
-  };
-
-  contextPrototype.stroke = function(aFill) {
-    var lineStr = [];
-    var lineOpen = false;
-
-    var W = 10;
-    var H = 10;
-
-    lineStr.push('<g_vml_:shape',
-                 ' filled="', !!aFill, '"',
-                 ' style="position:absolute;width:', W, 'px;height:', H, 'px;"',
-                 ' coordorigin="0,0"',
-                 ' coordsize="', Z * W, ',', Z * H, '"',
-                 ' stroked="', !aFill, '"',
-                 ' path="');
-
-    var newSeq = false;
-    var min = {x: null, y: null};
-    var max = {x: null, y: null};
-
-    for (var i = 0; i < this.currentPath_.length; i++) {
-      var p = this.currentPath_[i];
-      var c;
-
-      switch (p.type) {
-        case 'moveTo':
-          c = p;
-          lineStr.push(' m ', mr(p.x), ',', mr(p.y));
-          break;
-        case 'lineTo':
-          lineStr.push(' l ', mr(p.x), ',', mr(p.y));
-          break;
-        case 'close':
-          lineStr.push(' x ');
-          p = null;
-          break;
-        case 'bezierCurveTo':
-          lineStr.push(' c ',
-                       mr(p.cp1x), ',', mr(p.cp1y), ',',
-                       mr(p.cp2x), ',', mr(p.cp2y), ',',
-                       mr(p.x), ',', mr(p.y));
-          break;
-        case 'at':
-        case 'wa':
-          lineStr.push(' ', p.type, ' ',
-                       mr(p.x - this.arcScaleX_ * p.radius), ',',
-                       mr(p.y - this.arcScaleY_ * p.radius), ' ',
-                       mr(p.x + this.arcScaleX_ * p.radius), ',',
-                       mr(p.y + this.arcScaleY_ * p.radius), ' ',
-                       mr(p.xStart), ',', mr(p.yStart), ' ',
-                       mr(p.xEnd), ',', mr(p.yEnd));
-          break;
-      }
-
-
-      // TODO: Following is broken for curves due to
-      //       move to proper paths.
-
-      // Figure out dimensions so we can do gradient fills
-      // properly
-      if (p) {
-        if (min.x == null || p.x < min.x) {
-          min.x = p.x;
-        }
-        if (max.x == null || p.x > max.x) {
-          max.x = p.x;
-        }
-        if (min.y == null || p.y < min.y) {
-          min.y = p.y;
-        }
-        if (max.y == null || p.y > max.y) {
-          max.y = p.y;
-        }
-      }
-    }
-    lineStr.push(' ">');
-
-    if (!aFill) {
-      appendStroke(this, lineStr);
-    } else {
-      appendFill(this, lineStr, min, max);
-    }
-
-    lineStr.push('</g_vml_:shape>');
-
-    this.element_.insertAdjacentHTML('beforeEnd', lineStr.join(''));
-  };
-
-  function appendStroke(ctx, lineStr) {
-    var a = processStyle(ctx.strokeStyle);
-    var color = a.color;
-    var opacity = a.alpha * ctx.globalAlpha;
-    var lineWidth = ctx.lineScale_ * ctx.lineWidth;
-
-    // VML cannot correctly render a line if the width is less than 1px.
-    // In that case, we dilute the color to make the line look thinner.
-    if (lineWidth < 1) {
-      opacity *= lineWidth;
-    }
-
-    lineStr.push(
-      '<g_vml_:stroke',
-      ' opacity="', opacity, '"',
-      ' joinstyle="', ctx.lineJoin, '"',
-      ' miterlimit="', ctx.miterLimit, '"',
-      ' endcap="', processLineCap(ctx.lineCap), '"',
-      ' weight="', lineWidth, 'px"',
-      ' color="', color, '" />'
-    );
-  }
-
-  function appendFill(ctx, lineStr, min, max) {
-    var fillStyle = ctx.fillStyle;
-    var arcScaleX = ctx.arcScaleX_;
-    var arcScaleY = ctx.arcScaleY_;
-    var width = max.x - min.x;
-    var height = max.y - min.y;
-    if (fillStyle instanceof CanvasGradient_) {
-      // TODO: Gradients transformed with the transformation matrix.
-      var angle = 0;
-      var focus = {x: 0, y: 0};
-
-      // additional offset
-      var shift = 0;
-      // scale factor for offset
-      var expansion = 1;
-
-      if (fillStyle.type_ == 'gradient') {
-        var x0 = fillStyle.x0_ / arcScaleX;
-        var y0 = fillStyle.y0_ / arcScaleY;
-        var x1 = fillStyle.x1_ / arcScaleX;
-        var y1 = fillStyle.y1_ / arcScaleY;
-        var p0 = getCoords(ctx, x0, y0);
-        var p1 = getCoords(ctx, x1, y1);
-        var dx = p1.x - p0.x;
-        var dy = p1.y - p0.y;
-        angle = Math.atan2(dx, dy) * 180 / Math.PI;
-
-        // The angle should be a non-negative number.
-        if (angle < 0) {
-          angle += 360;
-        }
-
-        // Very small angles produce an unexpected result because they are
-        // converted to a scientific notation string.
-        if (angle < 1e-6) {
-          angle = 0;
-        }
-      } else {
-        var p0 = getCoords(ctx, fillStyle.x0_, fillStyle.y0_);
-        focus = {
-          x: (p0.x - min.x) / width,
-          y: (p0.y - min.y) / height
-        };
-
-        width  /= arcScaleX * Z;
-        height /= arcScaleY * Z;
-        var dimension = m.max(width, height);
-        shift = 2 * fillStyle.r0_ / dimension;
-        expansion = 2 * fillStyle.r1_ / dimension - shift;
-      }
-
-      // We need to sort the color stops in ascending order by offset,
-      // otherwise IE won't interpret it correctly.
-      var stops = fillStyle.colors_;
-      stops.sort(function(cs1, cs2) {
-        return cs1.offset - cs2.offset;
-      });
-
-      var length = stops.length;
-      var color1 = stops[0].color;
-      var color2 = stops[length - 1].color;
-      var opacity1 = stops[0].alpha * ctx.globalAlpha;
-      var opacity2 = stops[length - 1].alpha * ctx.globalAlpha;
-
-      var colors = [];
-      for (var i = 0; i < length; i++) {
-        var stop = stops[i];
-        colors.push(stop.offset * expansion + shift + ' ' + stop.color);
-      }
-
-      // When colors attribute is used, the meanings of opacity and o:opacity2
-      // are reversed.
-      lineStr.push('<g_vml_:fill type="', fillStyle.type_, '"',
-                   ' method="none" focus="100%"',
-                   ' color="', color1, '"',
-                   ' color2="', color2, '"',
-                   ' colors="', colors.join(','), '"',
-                   ' opacity="', opacity2, '"',
-                   ' g_o_:opacity2="', opacity1, '"',
-                   ' angle="', angle, '"',
-                   ' focusposition="', focus.x, ',', focus.y, '" />');
-    } else if (fillStyle instanceof CanvasPattern_) {
-      if (width && height) {
-        var deltaLeft = -min.x;
-        var deltaTop = -min.y;
-        lineStr.push('<g_vml_:fill',
-                     ' position="',
-                     deltaLeft / width * arcScaleX * arcScaleX, ',',
-                     deltaTop / height * arcScaleY * arcScaleY, '"',
-                     ' type="tile"',
-                     // TODO: Figure out the correct size to fit the scale.
-                     //' size="', w, 'px ', h, 'px"',
-                     ' src="', fillStyle.src_, '" />');
-       }
-    } else {
-      var a = processStyle(ctx.fillStyle);
-      var color = a.color;
-      var opacity = a.alpha * ctx.globalAlpha;
-      lineStr.push('<g_vml_:fill color="', color, '" opacity="', opacity,
-                   '" />');
-    }
-  }
-
-  contextPrototype.fill = function() {
-    this.stroke(true);
-  };
-
-  contextPrototype.closePath = function() {
-    this.currentPath_.push({type: 'close'});
-  };
-
-  function getCoords(ctx, aX, aY) {
-    var m = ctx.m_;
-    return {
-      x: Z * (aX * m[0][0] + aY * m[1][0] + m[2][0]) - Z2,
-      y: Z * (aX * m[0][1] + aY * m[1][1] + m[2][1]) - Z2
-    };
-  };
-
-  contextPrototype.save = function() {
-    var o = {};
-    copyState(this, o);
-    this.aStack_.push(o);
-    this.mStack_.push(this.m_);
-    this.m_ = matrixMultiply(createMatrixIdentity(), this.m_);
-  };
-
-  contextPrototype.restore = function() {
-    if (this.aStack_.length) {
-      copyState(this.aStack_.pop(), this);
-      this.m_ = this.mStack_.pop();
-    }
-  };
-
-  function matrixIsFinite(m) {
-    return isFinite(m[0][0]) && isFinite(m[0][1]) &&
-        isFinite(m[1][0]) && isFinite(m[1][1]) &&
-        isFinite(m[2][0]) && isFinite(m[2][1]);
-  }
-
-  function setM(ctx, m, updateLineScale) {
-    if (!matrixIsFinite(m)) {
-      return;
-    }
-    ctx.m_ = m;
-
-    if (updateLineScale) {
-      // Get the line scale.
-      // Determinant of this.m_ means how much the area is enlarged by the
-      // transformation. So its square root can be used as a scale factor
-      // for width.
-      var det = m[0][0] * m[1][1] - m[0][1] * m[1][0];
-      ctx.lineScale_ = sqrt(abs(det));
-    }
-  }
-
-  contextPrototype.translate = function(aX, aY) {
-    var m1 = [
-      [1,  0,  0],
-      [0,  1,  0],
-      [aX, aY, 1]
-    ];
-
-    setM(this, matrixMultiply(m1, this.m_), false);
-  };
-
-  contextPrototype.rotate = function(aRot) {
-    var c = mc(aRot);
-    var s = ms(aRot);
-
-    var m1 = [
-      [c,  s, 0],
-      [-s, c, 0],
-      [0,  0, 1]
-    ];
-
-    setM(this, matrixMultiply(m1, this.m_), false);
-  };
-
-  contextPrototype.scale = function(aX, aY) {
-    this.arcScaleX_ *= aX;
-    this.arcScaleY_ *= aY;
-    var m1 = [
-      [aX, 0,  0],
-      [0,  aY, 0],
-      [0,  0,  1]
-    ];
-
-    setM(this, matrixMultiply(m1, this.m_), true);
-  };
-
-  contextPrototype.transform = function(m11, m12, m21, m22, dx, dy) {
-    var m1 = [
-      [m11, m12, 0],
-      [m21, m22, 0],
-      [dx,  dy,  1]
-    ];
-
-    setM(this, matrixMultiply(m1, this.m_), true);
-  };
-
-  contextPrototype.setTransform = function(m11, m12, m21, m22, dx, dy) {
-    var m = [
-      [m11, m12, 0],
-      [m21, m22, 0],
-      [dx,  dy,  1]
-    ];
-
-    setM(this, m, true);
-  };
-
-  /**
-   * The text drawing function.
-   * The maxWidth argument isn't taken in account, since no browser supports
-   * it yet.
-   */
-  contextPrototype.drawText_ = function(text, x, y, maxWidth, stroke) {
-    var m = this.m_,
-        delta = 1000,
-        left = 0,
-        right = delta,
-        offset = {x: 0, y: 0},
-        lineStr = [];
-
-    var fontStyle = getComputedStyle(processFontStyle(this.font), this.element_);
-
-    var fontStyleString = buildStyle(fontStyle);
-
-    var elementStyle = this.element_.currentStyle;
-    var textAlign = this.textAlign.toLowerCase();
-    switch (textAlign) {
-      case 'left':
-      case 'center':
-      case 'right':
-        break;
-      case 'end':
-        textAlign = elementStyle.direction == 'ltr' ? 'right' : 'left';
-        break;
-      case 'start':
-        textAlign = elementStyle.direction == 'rtl' ? 'right' : 'left';
-        break;
-      default:
-        textAlign = 'left';
-    }
-
-    // 1.75 is an arbitrary number, as there is no info about the text baseline
-    switch (this.textBaseline) {
-      case 'hanging':
-      case 'top':
-        offset.y = fontStyle.size / 1.75;
-        break;
-      case 'middle':
-        break;
-      default:
-      case null:
-      case 'alphabetic':
-      case 'ideographic':
-      case 'bottom':
-        offset.y = -fontStyle.size / 2.25;
-        break;
-    }
-
-    switch(textAlign) {
-      case 'right':
-        left = delta;
-        right = 0.05;
-        break;
-      case 'center':
-        left = right = delta / 2;
-        break;
-    }
-
-    var d = getCoords(this, x + offset.x, y + offset.y);
-
-    lineStr.push('<g_vml_:line from="', -left ,' 0" to="', right ,' 0.05" ',
-                 ' coordsize="100 100" coordorigin="0 0"',
-                 ' filled="', !stroke, '" stroked="', !!stroke,
-                 '" style="position:absolute;width:1px;height:1px;">');
-
-    if (stroke) {
-      appendStroke(this, lineStr);
-    } else {
-      // TODO: Fix the min and max params.
-      appendFill(this, lineStr, {x: -left, y: 0},
-                 {x: right, y: fontStyle.size});
-    }
-
-    var skewM = m[0][0].toFixed(3) + ',' + m[1][0].toFixed(3) + ',' +
-                m[0][1].toFixed(3) + ',' + m[1][1].toFixed(3) + ',0,0';
-
-    var skewOffset = mr(d.x / Z + 1 - m[0][0]) + ',' + mr(d.y / Z - 2 * m[1][0]);
-
-
-    lineStr.push('<g_vml_:skew on="t" matrix="', skewM ,'" ',
-                 ' offset="', skewOffset, '" origin="', left ,' 0" />',
-                 '<g_vml_:path textpathok="true" />',
-                 '<g_vml_:textpath on="true" string="',
-                 encodeHtmlAttribute(text),
-                 '" style="v-text-align:', textAlign,
-                 ';font:', encodeHtmlAttribute(fontStyleString),
-                 '" /></g_vml_:line>');
-
-    this.element_.insertAdjacentHTML('beforeEnd', lineStr.join(''));
-  };
-
-  contextPrototype.fillText = function(text, x, y, maxWidth) {
-    this.drawText_(text, x, y, maxWidth, false);
-  };
-
-  contextPrototype.strokeText = function(text, x, y, maxWidth) {
-    this.drawText_(text, x, y, maxWidth, true);
-  };
-
-  contextPrototype.measureText = function(text) {
-    if (!this.textMeasureEl_) {
-      var s = '<span style="position:absolute;' +
-          'top:-20000px;left:0;padding:0;margin:0;border:none;' +
-          'white-space:pre;"></span>';
-      this.element_.insertAdjacentHTML('beforeEnd', s);
-      this.textMeasureEl_ = this.element_.lastChild;
-    }
-    var doc = this.element_.ownerDocument;
-    this.textMeasureEl_.innerHTML = '';
-    this.textMeasureEl_.style.font = this.font;
-    // Don't use innerHTML or innerText because they allow markup/whitespace.
-    this.textMeasureEl_.appendChild(doc.createTextNode(text));
-    return {width: this.textMeasureEl_.offsetWidth};
-  };
-
-  /******** STUBS ********/
-  contextPrototype.clip = function() {
-    // TODO: Implement
-  };
-
-  contextPrototype.arcTo = function() {
-    // TODO: Implement
-  };
-
-  contextPrototype.createPattern = function(image, repetition) {
-    return new CanvasPattern_(image, repetition);
-  };
-
-  // Gradient / Pattern Stubs
-  function CanvasGradient_(aType) {
-    this.type_ = aType;
-    this.x0_ = 0;
-    this.y0_ = 0;
-    this.r0_ = 0;
-    this.x1_ = 0;
-    this.y1_ = 0;
-    this.r1_ = 0;
-    this.colors_ = [];
-  }
-
-  CanvasGradient_.prototype.addColorStop = function(aOffset, aColor) {
-    aColor = processStyle(aColor);
-    this.colors_.push({offset: aOffset,
-                       color: aColor.color,
-                       alpha: aColor.alpha});
-  };
-
-  function CanvasPattern_(image, repetition) {
-    assertImageIsValid(image);
-    switch (repetition) {
-      case 'repeat':
-      case null:
-      case '':
-        this.repetition_ = 'repeat';
-        break;
-      case 'repeat-x':
-      case 'repeat-y':
-      case 'no-repeat':
-        this.repetition_ = repetition;
-        break;
-      default:
-        throwException('SYNTAX_ERR');
-    }
-
-    this.src_ = image.src;
-    this.width_ = image.width;
-    this.height_ = image.height;
-  }
-
-  function throwException(s) {
-    throw new DOMException_(s);
-  }
-
-  function assertImageIsValid(img) {
-    if (!img || img.nodeType != 1 || img.tagName != 'IMG') {
-      throwException('TYPE_MISMATCH_ERR');
-    }
-    if (img.readyState != 'complete') {
-      throwException('INVALID_STATE_ERR');
-    }
-  }
-
-  function DOMException_(s) {
-    this.code = this[s];
-    this.message = s +': DOM Exception ' + this.code;
-  }
-  var p = DOMException_.prototype = new Error;
-  p.INDEX_SIZE_ERR = 1;
-  p.DOMSTRING_SIZE_ERR = 2;
-  p.HIERARCHY_REQUEST_ERR = 3;
-  p.WRONG_DOCUMENT_ERR = 4;
-  p.INVALID_CHARACTER_ERR = 5;
-  p.NO_DATA_ALLOWED_ERR = 6;
-  p.NO_MODIFICATION_ALLOWED_ERR = 7;
-  p.NOT_FOUND_ERR = 8;
-  p.NOT_SUPPORTED_ERR = 9;
-  p.INUSE_ATTRIBUTE_ERR = 10;
-  p.INVALID_STATE_ERR = 11;
-  p.SYNTAX_ERR = 12;
-  p.INVALID_MODIFICATION_ERR = 13;
-  p.NAMESPACE_ERR = 14;
-  p.INVALID_ACCESS_ERR = 15;
-  p.VALIDATION_ERR = 16;
-  p.TYPE_MISMATCH_ERR = 17;
-
-  // set up externs
-  G_vmlCanvasManager = G_vmlCanvasManager_;
-  CanvasRenderingContext2D = CanvasRenderingContext2D_;
-  CanvasGradient = CanvasGradient_;
-  CanvasPattern = CanvasPattern_;
-  DOMException = DOMException_;
-  G_vmlCanvasManager._version = 888;
-})();
-
-} // if
diff --git a/src/main/resources/META-INF/resources/designer/lib/excanvas.min.js b/src/main/resources/META-INF/resources/designer/lib/excanvas.min.js
deleted file mode 100644 (file)
index e699a26..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-/* jqPlot @VERSION | (c) 2009-2013 Chris Leonello | jplot.com
-   jsDate | (c) 2010-2013 Chris Leonello
- */if(!document.createElement("canvas").getContext){(function(){var ab=Math;var n=ab.round;var l=ab.sin;var A=ab.cos;var H=ab.abs;var N=ab.sqrt;var d=10;var f=d/2;var z=+navigator.userAgent.match(/MSIE ([\d.]+)?/)[1];function y(){return this.context_||(this.context_=new D(this))}var t=Array.prototype.slice;function g(j,m,p){var i=t.call(arguments,2);return function(){return j.apply(m,i.concat(t.call(arguments)))}}function af(i){return String(i).replace(/&/g,"&amp;").replace(/"/g,"&quot;")}function Y(m,j,i){if(!m.namespaces[j]){m.namespaces.add(j,i,"#default#VML")}}function R(j){Y(j,"g_vml_","urn:schemas-microsoft-com:vml");Y(j,"g_o_","urn:schemas-microsoft-com:office:office");if(!j.styleSheets.ex_canvas_){var i=j.createStyleSheet();i.owningElement.id="ex_canvas_";i.cssText="canvas{display:inline-block;overflow:hidden;text-align:left;width:300px;height:150px}"}}R(document);var e={init:function(i){var j=i||document;j.createElement("canvas");j.attachEvent("onreadystatechange",g(this.init_,this,j))},init_:function(p){var m=p.getElementsByTagName("canvas");for(var j=0;j<m.length;j++){this.initElement(m[j])}},initElement:function(j){if(!j.getContext){j.getContext=y;R(j.ownerDocument);j.innerHTML="";j.attachEvent("onpropertychange",x);j.attachEvent("onresize",W);var i=j.attributes;if(i.width&&i.width.specified){j.style.width=i.width.nodeValue+"px"}else{j.width=j.clientWidth}if(i.height&&i.height.specified){j.style.height=i.height.nodeValue+"px"}else{j.height=j.clientHeight}}return j},uninitElement:function(j){if(j.getContext){var i=j.getContext();delete i.element_;delete i.canvas;j.innerHTML="";j.context_=null;j.getContext=null;j.detachEvent("onpropertychange",x);j.detachEvent("onresize",W)}}};function x(j){var i=j.srcElement;switch(j.propertyName){case"width":i.getContext().clearRect();i.style.width=i.attributes.width.nodeValue+"px";i.firstChild.style.width=i.clientWidth+"px";break;case"height":i.getContext().clearRect();i.style.height=i.attributes.height.nodeValue+"px";i.firstChild.style.height=i.clientHeight+"px";break}}function W(j){var i=j.srcElement;if(i.firstChild){i.firstChild.style.width=i.clientWidth+"px";i.firstChild.style.height=i.clientHeight+"px"}}e.init();var k=[];for(var ae=0;ae<16;ae++){for(var ad=0;ad<16;ad++){k[ae*16+ad]=ae.toString(16)+ad.toString(16)}}function B(){return[[1,0,0],[0,1,0],[0,0,1]]}function J(p,m){var j=B();for(var i=0;i<3;i++){for(var ah=0;ah<3;ah++){var Z=0;for(var ag=0;ag<3;ag++){Z+=p[i][ag]*m[ag][ah]}j[i][ah]=Z}}return j}function v(j,i){i.fillStyle=j.fillStyle;i.lineCap=j.lineCap;i.lineJoin=j.lineJoin;i.lineWidth=j.lineWidth;i.miterLimit=j.miterLimit;i.shadowBlur=j.shadowBlur;i.shadowColor=j.shadowColor;i.shadowOffsetX=j.shadowOffsetX;i.shadowOffsetY=j.shadowOffsetY;i.strokeStyle=j.strokeStyle;i.globalAlpha=j.globalAlpha;i.font=j.font;i.textAlign=j.textAlign;i.textBaseline=j.textBaseline;i.arcScaleX_=j.arcScaleX_;i.arcScaleY_=j.arcScaleY_;i.lineScale_=j.lineScale_}var b={aliceblue:"#F0F8FF",antiquewhite:"#FAEBD7",aquamarine:"#7FFFD4",azure:"#F0FFFF",beige:"#F5F5DC",bisque:"#FFE4C4",black:"#000000",blanchedalmond:"#FFEBCD",blueviolet:"#8A2BE2",brown:"#A52A2A",burlywood:"#DEB887",cadetblue:"#5F9EA0",chartreuse:"#7FFF00",chocolate:"#D2691E",coral:"#FF7F50",cornflowerblue:"#6495ED",cornsilk:"#FFF8DC",crimson:"#DC143C",cyan:"#00FFFF",darkblue:"#00008B",darkcyan:"#008B8B",darkgoldenrod:"#B8860B",darkgray:"#A9A9A9",darkgreen:"#006400",darkgrey:"#A9A9A9",darkkhaki:"#BDB76B",darkmagenta:"#8B008B",darkolivegreen:"#556B2F",darkorange:"#FF8C00",darkorchid:"#9932CC",darkred:"#8B0000",darksalmon:"#E9967A",darkseagreen:"#8FBC8F",darkslateblue:"#483D8B",darkslategray:"#2F4F4F",darkslategrey:"#2F4F4F",darkturquoise:"#00CED1",darkviolet:"#9400D3",deeppink:"#FF1493",deepskyblue:"#00BFFF",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1E90FF",firebrick:"#B22222",floralwhite:"#FFFAF0",forestgreen:"#228B22",gainsboro:"#DCDCDC",ghostwhite:"#F8F8FF",gold:"#FFD700",goldenrod:"#DAA520",grey:"#808080",greenyellow:"#ADFF2F",honeydew:"#F0FFF0",hotpink:"#FF69B4",indianred:"#CD5C5C",indigo:"#4B0082",ivory:"#FFFFF0",khaki:"#F0E68C",lavender:"#E6E6FA",lavenderblush:"#FFF0F5",lawngreen:"#7CFC00",lemonchiffon:"#FFFACD",lightblue:"#ADD8E6",lightcoral:"#F08080",lightcyan:"#E0FFFF",lightgoldenrodyellow:"#FAFAD2",lightgreen:"#90EE90",lightgrey:"#D3D3D3",lightpink:"#FFB6C1",lightsalmon:"#FFA07A",lightseagreen:"#20B2AA",lightskyblue:"#87CEFA",lightslategray:"#778899",lightslategrey:"#778899",lightsteelblue:"#B0C4DE",lightyellow:"#FFFFE0",limegreen:"#32CD32",linen:"#FAF0E6",magenta:"#FF00FF",mediumaquamarine:"#66CDAA",mediumblue:"#0000CD",mediumorchid:"#BA55D3",mediumpurple:"#9370DB",mediumseagreen:"#3CB371",mediumslateblue:"#7B68EE",mediumspringgreen:"#00FA9A",mediumturquoise:"#48D1CC",mediumvioletred:"#C71585",midnightblue:"#191970",mintcream:"#F5FFFA",mistyrose:"#FFE4E1",moccasin:"#FFE4B5",navajowhite:"#FFDEAD",oldlace:"#FDF5E6",olivedrab:"#6B8E23",orange:"#FFA500",orangered:"#FF4500",orchid:"#DA70D6",palegoldenrod:"#EEE8AA",palegreen:"#98FB98",paleturquoise:"#AFEEEE",palevioletred:"#DB7093",papayawhip:"#FFEFD5",peachpuff:"#FFDAB9",peru:"#CD853F",pink:"#FFC0CB",plum:"#DDA0DD",powderblue:"#B0E0E6",rosybrown:"#BC8F8F",royalblue:"#4169E1",saddlebrown:"#8B4513",salmon:"#FA8072",sandybrown:"#F4A460",seagreen:"#2E8B57",seashell:"#FFF5EE",sienna:"#A0522D",skyblue:"#87CEEB",slateblue:"#6A5ACD",slategray:"#708090",slategrey:"#708090",snow:"#FFFAFA",springgreen:"#00FF7F",steelblue:"#4682B4",tan:"#D2B48C",thistle:"#D8BFD8",tomato:"#FF6347",turquoise:"#40E0D0",violet:"#EE82EE",wheat:"#F5DEB3",whitesmoke:"#F5F5F5",yellowgreen:"#9ACD32"};function M(j){var p=j.indexOf("(",3);var i=j.indexOf(")",p+1);var m=j.substring(p+1,i).split(",");if(m.length!=4||j.charAt(3)!="a"){m[3]=1}return m}function c(i){return parseFloat(i)/100}function r(j,m,i){return Math.min(i,Math.max(m,j))}function I(ag){var i,ai,aj,ah,ak,Z;ah=parseFloat(ag[0])/360%360;if(ah<0){ah++}ak=r(c(ag[1]),0,1);Z=r(c(ag[2]),0,1);if(ak==0){i=ai=aj=Z}else{var j=Z<0.5?Z*(1+ak):Z+ak-Z*ak;var m=2*Z-j;i=a(m,j,ah+1/3);ai=a(m,j,ah);aj=a(m,j,ah-1/3)}return"#"+k[Math.floor(i*255)]+k[Math.floor(ai*255)]+k[Math.floor(aj*255)]}function a(j,i,m){if(m<0){m++}if(m>1){m--}if(6*m<1){return j+(i-j)*6*m}else{if(2*m<1){return i}else{if(3*m<2){return j+(i-j)*(2/3-m)*6}else{return j}}}}var C={};function F(j){if(j in C){return C[j]}var ag,Z=1;j=String(j);if(j.charAt(0)=="#"){ag=j}else{if(/^rgb/.test(j)){var p=M(j);var ag="#",ah;for(var m=0;m<3;m++){if(p[m].indexOf("%")!=-1){ah=Math.floor(c(p[m])*255)}else{ah=+p[m]}ag+=k[r(ah,0,255)]}Z=+p[3]}else{if(/^hsl/.test(j)){var p=M(j);ag=I(p);Z=p[3]}else{ag=b[j]||j}}}return C[j]={color:ag,alpha:Z}}var o={style:"normal",variant:"normal",weight:"normal",size:10,family:"sans-serif"};var L={};function E(i){if(L[i]){return L[i]}var p=document.createElement("div");var m=p.style;try{m.font=i}catch(j){}return L[i]={style:m.fontStyle||o.style,variant:m.fontVariant||o.variant,weight:m.fontWeight||o.weight,size:m.fontSize||o.size,family:m.fontFamily||o.family}}function u(m,j){var i={};for(var ah in m){i[ah]=m[ah]}var ag=parseFloat(j.currentStyle.fontSize),Z=parseFloat(m.size);if(typeof m.size=="number"){i.size=m.size}else{if(m.size.indexOf("px")!=-1){i.size=Z}else{if(m.size.indexOf("em")!=-1){i.size=ag*Z}else{if(m.size.indexOf("%")!=-1){i.size=(ag/100)*Z}else{if(m.size.indexOf("pt")!=-1){i.size=Z/0.75}else{i.size=ag}}}}}i.size*=0.981;i.family="'"+i.family.replace(/(\'|\")/g,"").replace(/\s*,\s*/g,"', '")+"'";return i}function ac(i){return i.style+" "+i.variant+" "+i.weight+" "+i.size+"px "+i.family}var s={butt:"flat",round:"round"};function S(i){return s[i]||"square"}function D(i){this.m_=B();this.mStack_=[];this.aStack_=[];this.currentPath_=[];this.strokeStyle="#000";this.fillStyle="#000";this.lineWidth=1;this.lineJoin="miter";this.lineCap="butt";this.miterLimit=d*1;this.globalAlpha=1;this.font="10px sans-serif";this.textAlign="left";this.textBaseline="alphabetic";this.canvas=i;var m="width:"+i.clientWidth+"px;height:"+i.clientHeight+"px;overflow:hidden;position:absolute";var j=i.ownerDocument.createElement("div");j.style.cssText=m;i.appendChild(j);var p=j.cloneNode(false);p.style.backgroundColor="red";p.style.filter="alpha(opacity=0)";i.appendChild(p);this.element_=j;this.arcScaleX_=1;this.arcScaleY_=1;this.lineScale_=1}var q=D.prototype;q.clearRect=function(){if(this.textMeasureEl_){this.textMeasureEl_.removeNode(true);this.textMeasureEl_=null}this.element_.innerHTML=""};q.beginPath=function(){this.currentPath_=[]};q.moveTo=function(j,i){var m=V(this,j,i);this.currentPath_.push({type:"moveTo",x:m.x,y:m.y});this.currentX_=m.x;this.currentY_=m.y};q.lineTo=function(j,i){var m=V(this,j,i);this.currentPath_.push({type:"lineTo",x:m.x,y:m.y});this.currentX_=m.x;this.currentY_=m.y};q.bezierCurveTo=function(m,j,ak,aj,ai,ag){var i=V(this,ai,ag);var ah=V(this,m,j);var Z=V(this,ak,aj);K(this,ah,Z,i)};function K(i,Z,m,j){i.currentPath_.push({type:"bezierCurveTo",cp1x:Z.x,cp1y:Z.y,cp2x:m.x,cp2y:m.y,x:j.x,y:j.y});i.currentX_=j.x;i.currentY_=j.y}q.quadraticCurveTo=function(ai,m,j,i){var ah=V(this,ai,m);var ag=V(this,j,i);var aj={x:this.currentX_+2/3*(ah.x-this.currentX_),y:this.currentY_+2/3*(ah.y-this.currentY_)};var Z={x:aj.x+(ag.x-this.currentX_)/3,y:aj.y+(ag.y-this.currentY_)/3};K(this,aj,Z,ag)};q.arc=function(al,aj,ak,ag,j,m){ak*=d;var ap=m?"at":"wa";var am=al+A(ag)*ak-f;var ao=aj+l(ag)*ak-f;var i=al+A(j)*ak-f;var an=aj+l(j)*ak-f;if(am==i&&!m){am+=0.125}var Z=V(this,al,aj);var ai=V(this,am,ao);var ah=V(this,i,an);this.currentPath_.push({type:ap,x:Z.x,y:Z.y,radius:ak,xStart:ai.x,yStart:ai.y,xEnd:ah.x,yEnd:ah.y})};q.rect=function(m,j,i,p){this.moveTo(m,j);this.lineTo(m+i,j);this.lineTo(m+i,j+p);this.lineTo(m,j+p);this.closePath()};q.strokeRect=function(m,j,i,p){var Z=this.currentPath_;this.beginPath();this.moveTo(m,j);this.lineTo(m+i,j);this.lineTo(m+i,j+p);this.lineTo(m,j+p);this.closePath();this.stroke();this.currentPath_=Z};q.fillRect=function(m,j,i,p){var Z=this.currentPath_;this.beginPath();this.moveTo(m,j);this.lineTo(m+i,j);this.lineTo(m+i,j+p);this.lineTo(m,j+p);this.closePath();this.fill();this.currentPath_=Z};q.createLinearGradient=function(j,p,i,m){var Z=new U("gradient");Z.x0_=j;Z.y0_=p;Z.x1_=i;Z.y1_=m;return Z};q.createRadialGradient=function(p,ag,m,j,Z,i){var ah=new U("gradientradial");ah.x0_=p;ah.y0_=ag;ah.r0_=m;ah.x1_=j;ah.y1_=Z;ah.r1_=i;return ah};q.drawImage=function(aq,m){var aj,ah,al,ay,ao,am,at,aA;var ak=aq.runtimeStyle.width;var ap=aq.runtimeStyle.height;aq.runtimeStyle.width="auto";aq.runtimeStyle.height="auto";var ai=aq.width;var aw=aq.height;aq.runtimeStyle.width=ak;aq.runtimeStyle.height=ap;if(arguments.length==3){aj=arguments[1];ah=arguments[2];ao=am=0;at=al=ai;aA=ay=aw}else{if(arguments.length==5){aj=arguments[1];ah=arguments[2];al=arguments[3];ay=arguments[4];ao=am=0;at=ai;aA=aw}else{if(arguments.length==9){ao=arguments[1];am=arguments[2];at=arguments[3];aA=arguments[4];aj=arguments[5];ah=arguments[6];al=arguments[7];ay=arguments[8]}else{throw Error("Invalid number of arguments")}}}var az=V(this,aj,ah);var p=at/2;var j=aA/2;var ax=[];var i=10;var ag=10;ax.push(" <g_vml_:group",' coordsize="',d*i,",",d*ag,'"',' coordorigin="0,0"',' style="width:',i,"px;height:",ag,"px;position:absolute;");if(this.m_[0][0]!=1||this.m_[0][1]||this.m_[1][1]!=1||this.m_[1][0]){var Z=[];Z.push("M11=",this.m_[0][0],",","M12=",this.m_[1][0],",","M21=",this.m_[0][1],",","M22=",this.m_[1][1],",","Dx=",n(az.x/d),",","Dy=",n(az.y/d),"");var av=az;var au=V(this,aj+al,ah);var ar=V(this,aj,ah+ay);var an=V(this,aj+al,ah+ay);av.x=ab.max(av.x,au.x,ar.x,an.x);av.y=ab.max(av.y,au.y,ar.y,an.y);ax.push("padding:0 ",n(av.x/d),"px ",n(av.y/d),"px 0;filter:progid:DXImageTransform.Microsoft.Matrix(",Z.join(""),", sizingmethod='clip');")}else{ax.push("top:",n(az.y/d),"px;left:",n(az.x/d),"px;")}ax.push(' ">','<g_vml_:image src="',aq.src,'"',' style="width:',d*al,"px;"," height:",d*ay,'px"',' cropleft="',ao/ai,'"',' croptop="',am/aw,'"',' cropright="',(ai-ao-at)/ai,'"',' cropbottom="',(aw-am-aA)/aw,'"'," />","</g_vml_:group>");this.element_.insertAdjacentHTML("BeforeEnd",ax.join(""))};q.stroke=function(al){var aj=[];var Z=false;var m=10;var am=10;aj.push("<g_vml_:shape",' filled="',!!al,'"',' style="position:absolute;width:',m,"px;height:",am,'px;"',' coordorigin="0,0"',' coordsize="',d*m,",",d*am,'"',' stroked="',!al,'"',' path="');var an=false;var ag={x:null,y:null};var ak={x:null,y:null};for(var ah=0;ah<this.currentPath_.length;ah++){var j=this.currentPath_[ah];var ai;switch(j.type){case"moveTo":ai=j;aj.push(" m ",n(j.x),",",n(j.y));break;case"lineTo":aj.push(" l ",n(j.x),",",n(j.y));break;case"close":aj.push(" x ");j=null;break;case"bezierCurveTo":aj.push(" c ",n(j.cp1x),",",n(j.cp1y),",",n(j.cp2x),",",n(j.cp2y),",",n(j.x),",",n(j.y));break;case"at":case"wa":aj.push(" ",j.type," ",n(j.x-this.arcScaleX_*j.radius),",",n(j.y-this.arcScaleY_*j.radius)," ",n(j.x+this.arcScaleX_*j.radius),",",n(j.y+this.arcScaleY_*j.radius)," ",n(j.xStart),",",n(j.yStart)," ",n(j.xEnd),",",n(j.yEnd));break}if(j){if(ag.x==null||j.x<ag.x){ag.x=j.x}if(ak.x==null||j.x>ak.x){ak.x=j.x}if(ag.y==null||j.y<ag.y){ag.y=j.y}if(ak.y==null||j.y>ak.y){ak.y=j.y}}}aj.push(' ">');if(!al){w(this,aj)}else{G(this,aj,ag,ak)}aj.push("</g_vml_:shape>");this.element_.insertAdjacentHTML("beforeEnd",aj.join(""))};function w(m,ag){var j=F(m.strokeStyle);var p=j.color;var Z=j.alpha*m.globalAlpha;var i=m.lineScale_*m.lineWidth;if(i<1){Z*=i}ag.push("<g_vml_:stroke",' opacity="',Z,'"',' joinstyle="',m.lineJoin,'"',' miterlimit="',m.miterLimit,'"',' endcap="',S(m.lineCap),'"',' weight="',i,'px"',' color="',p,'" />')}function G(aq,ai,aK,ar){var aj=aq.fillStyle;var aB=aq.arcScaleX_;var aA=aq.arcScaleY_;var j=ar.x-aK.x;var p=ar.y-aK.y;if(aj instanceof U){var an=0;var aF={x:0,y:0};var ax=0;var am=1;if(aj.type_=="gradient"){var al=aj.x0_/aB;var m=aj.y0_/aA;var ak=aj.x1_/aB;var aM=aj.y1_/aA;var aJ=V(aq,al,m);var aI=V(aq,ak,aM);var ag=aI.x-aJ.x;var Z=aI.y-aJ.y;an=Math.atan2(ag,Z)*180/Math.PI;if(an<0){an+=360}if(an<0.000001){an=0}}else{var aJ=V(aq,aj.x0_,aj.y0_);aF={x:(aJ.x-aK.x)/j,y:(aJ.y-aK.y)/p};j/=aB*d;p/=aA*d;var aD=ab.max(j,p);ax=2*aj.r0_/aD;am=2*aj.r1_/aD-ax}var av=aj.colors_;av.sort(function(aN,i){return aN.offset-i.offset});var ap=av.length;var au=av[0].color;var at=av[ap-1].color;var az=av[0].alpha*aq.globalAlpha;var ay=av[ap-1].alpha*aq.globalAlpha;var aE=[];for(var aH=0;aH<ap;aH++){var ao=av[aH];aE.push(ao.offset*am+ax+" "+ao.color)}ai.push('<g_vml_:fill type="',aj.type_,'"',' method="none" focus="100%"',' color="',au,'"',' color2="',at,'"',' colors="',aE.join(","),'"',' opacity="',ay,'"',' g_o_:opacity2="',az,'"',' angle="',an,'"',' focusposition="',aF.x,",",aF.y,'" />')}else{if(aj instanceof T){if(j&&p){var ah=-aK.x;var aC=-aK.y;ai.push("<g_vml_:fill",' position="',ah/j*aB*aB,",",aC/p*aA*aA,'"',' type="tile"',' src="',aj.src_,'" />')}}else{var aL=F(aq.fillStyle);var aw=aL.color;var aG=aL.alpha*aq.globalAlpha;ai.push('<g_vml_:fill color="',aw,'" opacity="',aG,'" />')}}}q.fill=function(){this.stroke(true)};q.closePath=function(){this.currentPath_.push({type:"close"})};function V(j,Z,p){var i=j.m_;return{x:d*(Z*i[0][0]+p*i[1][0]+i[2][0])-f,y:d*(Z*i[0][1]+p*i[1][1]+i[2][1])-f}}q.save=function(){var i={};v(this,i);this.aStack_.push(i);this.mStack_.push(this.m_);this.m_=J(B(),this.m_)};q.restore=function(){if(this.aStack_.length){v(this.aStack_.pop(),this);this.m_=this.mStack_.pop()}};function h(i){return isFinite(i[0][0])&&isFinite(i[0][1])&&isFinite(i[1][0])&&isFinite(i[1][1])&&isFinite(i[2][0])&&isFinite(i[2][1])}function aa(j,i,p){if(!h(i)){return}j.m_=i;if(p){var Z=i[0][0]*i[1][1]-i[0][1]*i[1][0];j.lineScale_=N(H(Z))}}q.translate=function(m,j){var i=[[1,0,0],[0,1,0],[m,j,1]];aa(this,J(i,this.m_),false)};q.rotate=function(j){var p=A(j);var m=l(j);var i=[[p,m,0],[-m,p,0],[0,0,1]];aa(this,J(i,this.m_),false)};q.scale=function(m,j){this.arcScaleX_*=m;this.arcScaleY_*=j;var i=[[m,0,0],[0,j,0],[0,0,1]];aa(this,J(i,this.m_),true)};q.transform=function(Z,p,ah,ag,j,i){var m=[[Z,p,0],[ah,ag,0],[j,i,1]];aa(this,J(m,this.m_),true)};q.setTransform=function(ag,Z,ai,ah,p,j){var i=[[ag,Z,0],[ai,ah,0],[p,j,1]];aa(this,i,true)};q.drawText_=function(am,ak,aj,ap,ai){var ao=this.m_,at=1000,j=0,ar=at,ah={x:0,y:0},ag=[];var i=u(E(this.font),this.element_);var p=ac(i);var au=this.element_.currentStyle;var Z=this.textAlign.toLowerCase();switch(Z){case"left":case"center":case"right":break;case"end":Z=au.direction=="ltr"?"right":"left";break;case"start":Z=au.direction=="rtl"?"right":"left";break;default:Z="left"}switch(this.textBaseline){case"hanging":case"top":ah.y=i.size/1.75;break;case"middle":break;default:case null:case"alphabetic":case"ideographic":case"bottom":ah.y=-i.size/2.25;break}switch(Z){case"right":j=at;ar=0.05;break;case"center":j=ar=at/2;break}var aq=V(this,ak+ah.x,aj+ah.y);ag.push('<g_vml_:line from="',-j,' 0" to="',ar,' 0.05" ',' coordsize="100 100" coordorigin="0 0"',' filled="',!ai,'" stroked="',!!ai,'" style="position:absolute;width:1px;height:1px;">');if(ai){w(this,ag)}else{G(this,ag,{x:-j,y:0},{x:ar,y:i.size})}var an=ao[0][0].toFixed(3)+","+ao[1][0].toFixed(3)+","+ao[0][1].toFixed(3)+","+ao[1][1].toFixed(3)+",0,0";var al=n(aq.x/d+1-ao[0][0])+","+n(aq.y/d-2*ao[1][0]);ag.push('<g_vml_:skew on="t" matrix="',an,'" ',' offset="',al,'" origin="',j,' 0" />','<g_vml_:path textpathok="true" />','<g_vml_:textpath on="true" string="',af(am),'" style="v-text-align:',Z,";font:",af(p),'" /></g_vml_:line>');this.element_.insertAdjacentHTML("beforeEnd",ag.join(""))};q.fillText=function(m,i,p,j){this.drawText_(m,i,p,j,false)};q.strokeText=function(m,i,p,j){this.drawText_(m,i,p,j,true)};q.measureText=function(m){if(!this.textMeasureEl_){var i='<span style="position:absolute;top:-20000px;left:0;padding:0;margin:0;border:none;white-space:pre;"></span>';this.element_.insertAdjacentHTML("beforeEnd",i);this.textMeasureEl_=this.element_.lastChild}var j=this.element_.ownerDocument;this.textMeasureEl_.innerHTML="";this.textMeasureEl_.style.font=this.font;this.textMeasureEl_.appendChild(j.createTextNode(m));return{width:this.textMeasureEl_.offsetWidth}};q.clip=function(){};q.arcTo=function(){};q.createPattern=function(j,i){return new T(j,i)};function U(i){this.type_=i;this.x0_=0;this.y0_=0;this.r0_=0;this.x1_=0;this.y1_=0;this.r1_=0;this.colors_=[]}U.prototype.addColorStop=function(j,i){i=F(i);this.colors_.push({offset:j,color:i.color,alpha:i.alpha})};function T(j,i){Q(j);switch(i){case"repeat":case null:case"":this.repetition_="repeat";break;case"repeat-x":case"repeat-y":case"no-repeat":this.repetition_=i;break;default:O("SYNTAX_ERR")}this.src_=j.src;this.width_=j.width;this.height_=j.height}function O(i){throw new P(i)}function Q(i){if(!i||i.nodeType!=1||i.tagName!="IMG"){O("TYPE_MISMATCH_ERR")}if(i.readyState!="complete"){O("INVALID_STATE_ERR")}}function P(i){this.code=this[i];this.message=i+": DOM Exception "+this.code}var X=P.prototype=new Error;X.INDEX_SIZE_ERR=1;X.DOMSTRING_SIZE_ERR=2;X.HIERARCHY_REQUEST_ERR=3;X.WRONG_DOCUMENT_ERR=4;X.INVALID_CHARACTER_ERR=5;X.NO_DATA_ALLOWED_ERR=6;X.NO_MODIFICATION_ALLOWED_ERR=7;X.NOT_FOUND_ERR=8;X.NOT_SUPPORTED_ERR=9;X.INUSE_ATTRIBUTE_ERR=10;X.INVALID_STATE_ERR=11;X.SYNTAX_ERR=12;X.INVALID_MODIFICATION_ERR=13;X.NAMESPACE_ERR=14;X.INVALID_ACCESS_ERR=15;X.VALIDATION_ERR=16;X.TYPE_MISMATCH_ERR=17;G_vmlCanvasManager=e;CanvasRenderingContext2D=D;CanvasGradient=U;CanvasPattern=T;DOMException=P;G_vmlCanvasManager._version=888})()};
\ No newline at end of file
diff --git a/src/main/resources/META-INF/resources/designer/lib/flexigrid/js/flexigrid.js b/src/main/resources/META-INF/resources/designer/lib/flexigrid/js/flexigrid.js
deleted file mode 100644 (file)
index d2ff279..0000000
+++ /dev/null
@@ -1,1575 +0,0 @@
-/*
- * Flexigrid for jQuery -  v1.1
- *
- * Copyright (c) 2008 Paulo P. Marinas (code.google.com/p/flexigrid/)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- */
-(function ($) {
-       /*
-        * jQuery 1.9 support. browser object has been removed in 1.9 
-        */
-       var browser = $.browser
-       
-       if (!browser) {
-               function uaMatch( ua ) {
-                       ua = ua.toLowerCase();
-
-                       var match = /(chrome)[ \/]([\w.]+)/.exec( ua ) ||
-                               /(webkit)[ \/]([\w.]+)/.exec( ua ) ||
-                               /(opera)(?:.*version|)[ \/]([\w.]+)/.exec( ua ) ||
-                               /(msie) ([\w.]+)/.exec( ua ) ||
-                               ua.indexOf("compatible") < 0 && /(mozilla)(?:.*? rv:([\w.]+)|)/.exec( ua ) ||
-                               [];
-
-                       return {
-                               browser: match[ 1 ] || "",
-                               version: match[ 2 ] || "0"
-                       };
-               };
-
-               var matched = uaMatch( navigator.userAgent );
-               browser = {};
-
-               if ( matched.browser ) {
-                       browser[ matched.browser ] = true;
-                       browser.version = matched.version;
-               }
-
-               // Chrome is Webkit, but Webkit is also Safari.
-               if ( browser.chrome ) {
-                       browser.webkit = true;
-               } else if ( browser.webkit ) {
-                       browser.safari = true;
-               }
-       }
-       
-    /*!
-     * START code from jQuery UI
-     *
-     * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
-     * Dual licensed under the MIT or GPL Version 2 licenses.
-     * http://jquery.org/license
-     *
-     * http://docs.jquery.com/UI
-     */
-     
-    if(typeof $.support.selectstart != 'function') {
-        $.support.selectstart = "onselectstart" in document.createElement("div");
-    }
-    
-    if(typeof $.fn.disableSelection != 'function') {
-        $.fn.disableSelection = function() {
-            return this.bind( ( $.support.selectstart ? "selectstart" : "mousedown" ) +
-                ".ui-disableSelection", function( event ) {
-                event.preventDefault();
-            });
-        };
-    }
-    
-    /* END code from jQuery UI */
-    
-       $.addFlex = function (t, p) {
-               if (t.grid) return false; //return if already exist
-               p = $.extend({ //apply default properties
-                       height: 200, //default height
-                       width: 'auto', //auto width
-                       striped: true, //apply odd even stripes
-                       novstripe: false,
-                       minwidth: 30, //min width of columns
-                       minheight: 80, //min height of columns
-                       resizable: true, //allow table resizing
-                       url: false, //URL if using data from AJAX
-                       method: 'POST', //data sending method
-                       dataType: 'xml', //type of data for AJAX, either xml or json
-                       errormsg: 'Connection Error',
-                       usepager: false,
-                       nowrap: true,
-                       page: 1, //current page
-                       total: 1, //total pages
-                       useRp: true, //use the results per page select box
-                       rp: 15, //results per page
-                       rpOptions: [10, 15, 20, 30, 50], //allowed per-page values
-                       title: false,
-                       idProperty: 'id',
-                       pagestat: 'Displaying {from} to {to} of {total} items',
-                       pagetext: 'Page',
-                       outof: 'of',
-                       findtext: 'Find',
-                       params: [], //allow optional parameters to be passed around
-                       procmsg: 'Processing, please wait ...',
-                       query: '',
-                       qtype: '',
-                       nomsg: 'No items',
-                       minColToggle: 1, //minimum allowed column to be hidden
-                       showToggleBtn: true, //show or hide column toggle popup
-                       hideOnSubmit: true,
-                       autoload: true,
-                       blockOpacity: 0.5,
-                       preProcess: false,
-                       addTitleToCell: false, // add a title attr to cells with truncated contents
-                       dblClickResize: false, //auto resize column by double clicking
-                       onDragCol: false,
-                       onToggleCol: false,
-                       onChangeSort: false,
-                       onDoubleClick: false,
-                       onSuccess: false,
-                       onError: false,
-                       onSubmit: false, //using a custom populate function
-            __mw: { //extendable middleware function holding object
-                datacol: function(p, col, val) { //middleware for formatting data columns
-                    var _col = (typeof p.datacol[col] == 'function') ? p.datacol[col](val) : val; //format column using function
-                    if(typeof p.datacol['*'] == 'function') { //if wildcard function exists
-                        return p.datacol['*'](_col); //run wildcard function
-                    } else {
-                        return _col; //return column without wildcard
-                    }
-                }
-            },
-            getGridClass: function(g) { //get the grid class, always returns g
-                return g;
-            },
-            datacol: {}, //datacol middleware object 'colkey': function(colval) {}
-            colResize: true, //from: http://stackoverflow.com/a/10615589
-            colMove: true
-               }, p);
-               $(t).show() //show if hidden
-                       .attr({
-                               cellPadding: 0,
-                               cellSpacing: 0,
-                               border: 0
-                       }) //remove padding and spacing
-                       .removeAttr('width'); //remove width properties
-               //create grid class
-               var g = {
-                       hset: {},
-                       rePosDrag: function () {
-                               var cdleft = 0 - this.hDiv.scrollLeft;
-                               if (this.hDiv.scrollLeft > 0) cdleft -= Math.floor(p.cgwidth / 2);
-                               $(g.cDrag).css({
-                                       top: g.hDiv.offsetTop + 1
-                               });
-                               var cdpad = this.cdpad;
-                               var cdcounter=0;
-                               $('div', g.cDrag).hide();
-                               $('thead tr:first th:visible', this.hDiv).each(function () {
-                                       var n = $('thead tr:first th:visible', g.hDiv).index(this);
-                                       var cdpos = parseInt($('div', this).width());
-                                       if (cdleft == 0) cdleft -= Math.floor(p.cgwidth / 2);
-                                       cdpos = cdpos + cdleft + cdpad;
-                                       if (isNaN(cdpos)) {
-                                               cdpos = 0;
-                                       }
-                                       $('div:eq(' + n + ')', g.cDrag).css({
-                                               'left': (!(browser.mozilla) ? cdpos - cdcounter : cdpos) + 'px'
-                                       }).show();
-                                       cdleft = cdpos;
-                                       cdcounter++;
-                               });
-                       },
-                       fixHeight: function (newH) {
-                               newH = false;
-                               if (!newH) newH = $(g.bDiv).height();
-                               var hdHeight = $(this.hDiv).height();
-                               $('div', this.cDrag).each(
-                                       function () {
-                                               $(this).height(newH + hdHeight);
-                                       }
-                               );
-                               var nd = parseInt($(g.nDiv).height(), 10);
-                               if (nd > newH) $(g.nDiv).height(newH).width(200);
-                               else $(g.nDiv).height('auto').width('auto');
-                               $(g.block).css({
-                                       height: newH,
-                                       marginBottom: (newH * -1)
-                               });
-                               var hrH = g.bDiv.offsetTop + newH;
-                               if (p.height != 'auto' && p.resizable) hrH = g.vDiv.offsetTop;
-                               $(g.rDiv).css({
-                                       height: hrH
-                               });
-                       },
-                       dragStart: function (dragtype, e, obj) { //default drag function start
-                if (dragtype == 'colresize' && p.colResize === true) {//column resize
-                                       $(g.nDiv).hide();
-                                       $(g.nBtn).hide();
-                                       var n = $('div', this.cDrag).index(obj);
-                                       var ow = $('th:visible div:eq(' + n + ')', this.hDiv).width();
-                                       $(obj).addClass('dragging').siblings().hide();
-                                       $(obj).prev().addClass('dragging').show();
-                                       this.colresize = {
-                                               startX: e.pageX,
-                                               ol: parseInt(obj.style.left, 10),
-                                               ow: ow,
-                                               n: n
-                                       };
-                                       $('body').css('cursor', 'col-resize');
-                               } else if (dragtype == 'vresize') {//table resize
-                                       var hgo = false;
-                                       $('body').css('cursor', 'row-resize');
-                                       if (obj) {
-                                               hgo = true;
-                                               $('body').css('cursor', 'col-resize');
-                                       }
-                                       this.vresize = {
-                                               h: p.height,
-                                               sy: e.pageY,
-                                               w: p.width,
-                                               sx: e.pageX,
-                                               hgo: hgo
-                                       };
-                               } else if (dragtype == 'colMove') {//column header drag
-                    $(e.target).disableSelection(); //disable selecting the column header
-                    if((p.colMove === true)) {
-                        $(g.nDiv).hide();
-                        $(g.nBtn).hide();
-                        this.hset = $(this.hDiv).offset();
-                        this.hset.right = this.hset.left + $('table', this.hDiv).width();
-                        this.hset.bottom = this.hset.top + $('table', this.hDiv).height();
-                        this.dcol = obj;
-                        this.dcoln = $('th', this.hDiv).index(obj);
-                        this.colCopy = document.createElement("div");
-                        this.colCopy.className = "colCopy";
-                        this.colCopy.innerHTML = obj.innerHTML;
-                        if (browser.msie) {
-                            this.colCopy.className = "colCopy ie";
-                        }
-                        $(this.colCopy).css({
-                            position: 'absolute',
-                            'float': 'left',
-                            display: 'none',
-                            textAlign: obj.align
-                        });
-                        $('body').append(this.colCopy);
-                        $(this.cDrag).hide();
-                    }
-                               }
-                               $('body').noSelect();
-                       },
-                       dragMove: function (e) {
-                               if (this.colresize) {//column resize
-                                       var n = this.colresize.n;
-                                       var diff = e.pageX - this.colresize.startX;
-                                       var nleft = this.colresize.ol + diff;
-                                       var nw = this.colresize.ow + diff;
-                                       if (nw > p.minwidth) {
-                                               $('div:eq(' + n + ')', this.cDrag).css('left', nleft);
-                                               this.colresize.nw = nw;
-                                       }
-                               } else if (this.vresize) {//table resize
-                                       var v = this.vresize;
-                                       var y = e.pageY;
-                                       var diff = y - v.sy;
-                                       if (!p.defwidth) p.defwidth = p.width;
-                                       if (p.width != 'auto' && !p.nohresize && v.hgo) {
-                                               var x = e.pageX;
-                                               var xdiff = x - v.sx;
-                                               var newW = v.w + xdiff;
-                                               if (newW > p.defwidth) {
-                                                       this.gDiv.style.width = newW + 'px';
-                                                       p.width = newW;
-                                               }
-                                       }
-                                       var newH = v.h + diff;
-                                       if ((newH > p.minheight || p.height < p.minheight) && !v.hgo) {
-                                               this.bDiv.style.height = newH + 'px';
-                                               p.height = newH;
-                                               this.fixHeight(newH);
-                                       }
-                                       v = null;
-                               } else if (this.colCopy) {
-                                       $(this.dcol).addClass('thMove').removeClass('thOver');
-                                       if (e.pageX > this.hset.right || e.pageX < this.hset.left || e.pageY > this.hset.bottom || e.pageY < this.hset.top) {
-                                               //this.dragEnd();
-                                               $('body').css('cursor', 'move');
-                                       } else {
-                                               $('body').css('cursor', 'pointer');
-                                       }
-                                       $(this.colCopy).css({
-                                               top: e.pageY + 10,
-                                               left: e.pageX + 20,
-                                               display: 'block'
-                                       });
-                               }
-                       },
-                       dragEnd: function () {
-                               if (this.colresize) {
-                                       var n = this.colresize.n;
-                                       var nw = this.colresize.nw;
-                                       $('th:visible div:eq(' + n + ')', this.hDiv).css('width', nw);
-                                       $('tr', this.bDiv).each(
-                                               function () {
-                                                       var $tdDiv = $('td:visible div:eq(' + n + ')', this);
-                                                       $tdDiv.css('width', nw);
-                                                       g.addTitleToCell($tdDiv);
-                                               }
-                                       );
-                                       this.hDiv.scrollLeft = this.bDiv.scrollLeft;
-                                       $('div:eq(' + n + ')', this.cDrag).siblings().show();
-                                       $('.dragging', this.cDrag).removeClass('dragging');
-                                       this.rePosDrag();
-                                       this.fixHeight();
-                                       this.colresize = false;
-                                       if ($.cookies) {
-                                               var name = p.colModel[n].name;          // Store the widths in the cookies
-                                               $.cookie('flexiwidths/'+name, nw);
-                                       }
-                               } else if (this.vresize) {
-                                       this.vresize = false;
-                               } else if (this.colCopy) {
-                                       $(this.colCopy).remove();
-                                       if (this.dcolt !== null) {
-                                               if (this.dcoln > this.dcolt) $('th:eq(' + this.dcolt + ')', this.hDiv).before(this.dcol);
-                                               else $('th:eq(' + this.dcolt + ')', this.hDiv).after(this.dcol);
-                                               this.switchCol(this.dcoln, this.dcolt);
-                                               $(this.cdropleft).remove();
-                                               $(this.cdropright).remove();
-                                               this.rePosDrag();
-                                               if (p.onDragCol) {
-                                                       p.onDragCol(this.dcoln, this.dcolt);
-                                               }
-                                       }
-                                       this.dcol = null;
-                                       this.hset = null;
-                                       this.dcoln = null;
-                                       this.dcolt = null;
-                                       this.colCopy = null;
-                                       $('.thMove', this.hDiv).removeClass('thMove');
-                                       $(this.cDrag).show();
-                               }
-                               $('body').css('cursor', 'default');
-                               $('body').noSelect(false);
-                       },
-                       toggleCol: function (cid, visible) {
-                               var ncol = $("th[axis='col" + cid + "']", this.hDiv)[0];
-                               var n = $('thead th', g.hDiv).index(ncol);
-                               var cb = $('input[value=' + cid + ']', g.nDiv)[0];
-                               if (visible == null) {
-                                       visible = ncol.hidden;
-                               }
-                               if ($('input:checked', g.nDiv).length < p.minColToggle && !visible) {
-                                       return false;
-                               }
-                               if (visible) {
-                                       ncol.hidden = false;
-                                       $(ncol).show();
-                                       cb.checked = true;
-                               } else {
-                                       ncol.hidden = true;
-                                       $(ncol).hide();
-                                       cb.checked = false;
-                               }
-                               $('tbody tr', t).each(
-                                       function () {
-                                               if (visible) {
-                                                       $('td:eq(' + n + ')', this).show();
-                                               } else {
-                                                       $('td:eq(' + n + ')', this).hide();
-                                               }
-                                       }
-                               );
-                               this.rePosDrag();
-                               if (p.onToggleCol) {
-                                       p.onToggleCol(cid, visible);
-                               }
-                               return visible;
-                       },
-                       switchCol: function (cdrag, cdrop) { //switch columns
-                               $('tbody tr', t).each(
-                                       function () {
-                                               if (cdrag > cdrop) $('td:eq(' + cdrop + ')', this).before($('td:eq(' + cdrag + ')', this));
-                                               else $('td:eq(' + cdrop + ')', this).after($('td:eq(' + cdrag + ')', this));
-                                       }
-                               );
-                               //switch order in nDiv
-                               if (cdrag > cdrop) {
-                                       $('tr:eq(' + cdrop + ')', this.nDiv).before($('tr:eq(' + cdrag + ')', this.nDiv));
-                               } else {
-                                       $('tr:eq(' + cdrop + ')', this.nDiv).after($('tr:eq(' + cdrag + ')', this.nDiv));
-                               }
-                               if (browser.msie && browser.version < 7.0) {
-                                       $('tr:eq(' + cdrop + ') input', this.nDiv)[0].checked = true;
-                               }
-                               this.hDiv.scrollLeft = this.bDiv.scrollLeft;
-                       },
-                       scroll: function () {
-                               this.hDiv.scrollLeft = this.bDiv.scrollLeft;
-                               this.rePosDrag();
-                       },
-                       addData: function (data) { //parse data
-                               if (p.dataType == 'json') {
-                                       data = $.extend({rows: [], page: 0, total: 0}, data);
-                               }
-                               if (p.preProcess) {
-                                       data = p.preProcess(data);
-                               }
-                               $('.pReload', this.pDiv).removeClass('loading');
-                               this.loading = false;
-                               if (!data) {
-                                       $('.pPageStat', this.pDiv).html(p.errormsg);
-                    if (p.onSuccess) p.onSuccess(this);
-                                       return false;
-                               }
-                               if (p.dataType == 'xml') {
-                                       p.total = +$('rows total', data).text();
-                               } else {
-                                       p.total = data.total;
-                               }
-                               if (p.total === 0) {
-                                       $('tr, a, td, div', t).unbind();
-                                       $(t).empty();
-                                       p.pages = 1;
-                                       p.page = 1;
-                                       this.buildpager();
-                                       $('.pPageStat', this.pDiv).html(p.nomsg);
-                    if (p.onSuccess) p.onSuccess(this);
-                                       return false;
-                               }
-                               p.pages = Math.ceil(p.total / p.rp);
-                               if (p.dataType == 'xml') {
-                                       p.page = +$('rows page', data).text();
-                               } else {
-                                       p.page = data.page;
-                               }
-                               this.buildpager();
-                               //build new body
-                               var tbody = document.createElement('tbody');
-                               if (p.dataType == 'json') {
-                                       $.each(data.rows, function (i, row) {
-                                               var tr = document.createElement('tr');
-                                               var jtr = $(tr);
-                                               if (row.name) tr.name = row.name;
-                                               if (row.color) {
-                                                       jtr.css('background',row.color);
-                                               } else {
-                                                       if (i % 2 && p.striped) tr.className = 'erow';
-                                               }
-                                               if (row[p.idProperty]) {
-                                                       tr.id = 'row' + row[p.idProperty];
-                                                       jtr.attr('data-id', row[p.idProperty]);
-                                               }
-                                               $('thead tr:first th', g.hDiv).each( //add cell
-                                                       function () {
-                                                               var td = document.createElement('td');
-                                                               var idx = $(this).attr('axis').substr(3);
-                                                               td.align = this.align;
-                                                               // If each row is the object itself (no 'cell' key)
-                                                               if (typeof row.cell == 'undefined') {
-                                                                       td.innerHTML = row[p.colModel[idx].name];
-                                                               } else {
-                                                                       // If the json elements aren't named (which is typical), use numeric order
-                                    var iHTML = '';
-                                    if (typeof row.cell[idx] != "undefined") {
-                                        iHTML = (row.cell[idx] !== null) ? row.cell[idx] : ''; //null-check for Opera-browser
-                                    } else {
-                                        iHTML = row.cell[p.colModel[idx].name];
-                                    }
-                                    td.innerHTML = p.__mw.datacol(p, $(this).attr('abbr'), iHTML); //use middleware datacol to format cols
-                                                               }
-                                                               // If the content has a <BGCOLOR=nnnnnn> option, decode it.
-                                                               var offs = td.innerHTML.indexOf( '<BGCOLOR=' );
-                                                               if( offs >0 ) {
-                                    $(td).css('background', text.substr(offs+7,7) );
-                                                               }
-
-                                                               $(td).attr('abbr', $(this).attr('abbr'));
-                                                               $(tr).append(td);
-                                                               td = null;
-                                                       }
-                                               );
-                                               if ($('thead', this.gDiv).length < 1) {//handle if grid has no headers
-                                                       for (idx = 0; idx < row.cell.length; idx++) {
-                                                               var td = document.createElement('td');
-                                                               // If the json elements aren't named (which is typical), use numeric order
-                                                               if (typeof row.cell[idx] != "undefined") {
-                                                                       td.innerHTML = (row.cell[idx] != null) ? row.cell[idx] : '';//null-check for Opera-browser
-                                                               } else {
-                                                                       td.innerHTML = row.cell[p.colModel[idx].name];
-                                                               }
-                                                               $(tr).append(td);
-                                                               td = null;
-                                                       }
-                                               }
-                                               $(tbody).append(tr);
-                                               tr = null;
-                                       });
-                               } else if (p.dataType == 'xml') {
-                                       var i = 1;
-                                       $("rows row", data).each(function () {
-                                               i++;
-                                               var tr = document.createElement('tr');
-                                               if ($(this).attr('name')) tr.name = $(this).attr('name');
-                                               if ($(this).attr('color')) {
-                                                       $(tr).css('background',$(this).attr('id'));
-                                               } else {
-                                                       if (i % 2 && p.striped) tr.className = 'erow';
-                                               }
-                                               var nid = $(this).attr('id');
-                                               if (nid) {
-                                                       tr.id = 'row' + nid;
-                                               }
-                                               nid = null;
-                                               var robj = this;
-                                               $('thead tr:first th', g.hDiv).each(function () {
-                                                       var td = document.createElement('td');
-                                                       var idx = $(this).attr('axis').substr(3);
-                                                       td.align = this.align;
-
-                                                       var text = $("cell:eq(" + idx + ")", robj).text();
-                                                       var offs = text.indexOf( '<BGCOLOR=' );
-                                                       if( offs >0 ) {
-                                                               $(td).css('background',  text.substr(offs+7,7) );
-                                                       }
-                            td.innerHTML = p.__mw.datacol(p, $(this).attr('abbr'), text); //use middleware datacol to format cols
-                                                       $(td).attr('abbr', $(this).attr('abbr'));
-                                                       $(tr).append(td);
-                                                       td = null;
-                                               });
-                                               if ($('thead', this.gDiv).length < 1) {//handle if grid has no headers
-                                                       $('cell', this).each(function () {
-                                                               var td = document.createElement('td');
-                                                               td.innerHTML = $(this).text();
-                                                               $(tr).append(td);
-                                                               td = null;
-                                                       });
-                                               }
-                                               $(tbody).append(tr);
-                                               tr = null;
-                                               robj = null;
-                                       });
-                               }
-                               $('tr', t).unbind();
-                               $(t).empty();
-                               $(t).append(tbody);
-                               this.addCellProp();
-                               this.addRowProp();
-                               this.rePosDrag();
-                               tbody = null;
-                               data = null;
-                               i = null;
-                               if (p.onSuccess) {
-                                       p.onSuccess(this);
-                               }
-                               if (p.hideOnSubmit) {
-                                       $(g.block).remove();
-                               }
-                               this.hDiv.scrollLeft = this.bDiv.scrollLeft;
-                               if (browser.opera) {
-                                       $(t).css('visibility', 'visible');
-                               }
-                       },
-                       changeSort: function (th) { //change sortorder
-                               if (this.loading) {
-                                       return true;
-                               }
-                               $(g.nDiv).hide();
-                               $(g.nBtn).hide();
-                               if (p.sortname == $(th).attr('abbr')) {
-                                       if (p.sortorder == 'asc') {
-                                               p.sortorder = 'desc';
-                                       } else {
-                                               p.sortorder = 'asc';
-                                       }
-                               }
-                               $(th).addClass('sorted').siblings().removeClass('sorted');
-                               $('.sdesc', this.hDiv).removeClass('sdesc');
-                               $('.sasc', this.hDiv).removeClass('sasc');
-                               $('div', th).addClass('s' + p.sortorder);
-                               p.sortname = $(th).attr('abbr');
-                               if (p.onChangeSort) {
-                                       p.onChangeSort(p.sortname, p.sortorder);
-                               } else {
-                                       this.populate();
-                               }
-                       },
-                       buildpager: function () { //rebuild pager based on new properties
-                               $('.pcontrol input', this.pDiv).val(p.page);
-                               $('.pcontrol span', this.pDiv).html(p.pages);
-                               var r1 = p.total == 0 ? 0 : (p.page - 1) * p.rp + 1;
-                               var r2 = r1 + p.rp - 1;
-                               if (p.total < r2) {
-                                       r2 = p.total;
-                               }
-                               var stat = p.pagestat;
-                               stat = stat.replace(/{from}/, r1);
-                               stat = stat.replace(/{to}/, r2);
-                               stat = stat.replace(/{total}/, p.total);
-                               $('.pPageStat', this.pDiv).html(stat);
-                       },
-                       populate: function () { //get latest data
-                               if (this.loading) {
-                                       return true;
-                               }
-                               if (p.onSubmit) {
-                                       var gh = p.onSubmit();
-                                       if (!gh) {
-                                               return false;
-                                       }
-                               }
-                               this.loading = true;
-                               if (!p.url) {
-                                       return false;
-                               }
-                               $('.pPageStat', this.pDiv).html(p.procmsg);
-                               $('.pReload', this.pDiv).addClass('loading');
-                               $(g.block).css({
-                                       top: g.bDiv.offsetTop
-                               });
-                               if (p.hideOnSubmit) {
-                                       $(this.gDiv).prepend(g.block);
-                               }
-                               if (browser.opera) {
-                                       $(t).css('visibility', 'hidden');
-                               }
-                               if (!p.newp) {
-                                       p.newp = 1;
-                               }
-                               if (p.page > p.pages) {
-                                       p.page = p.pages;
-                               }
-                               var param = [{
-                                       name: 'page',
-                                       value: p.newp
-                               }, {
-                                       name: 'rp',
-                                       value: p.rp
-                               }, {
-                                       name: 'sortname',
-                                       value: p.sortname
-                               }, {
-                                       name: 'sortorder',
-                                       value: p.sortorder
-                               }, {
-                                       name: 'query',
-                                       value: p.query
-                               }, {
-                                       name: 'qtype',
-                                       value: p.qtype
-                               }];
-                               if (p.params.length) {
-                                       for (var pi = 0; pi < p.params.length; pi++) {
-                                               param[param.length] = p.params[pi];
-                                       }
-                               }
-                               $.ajax({
-                                       type: p.method,
-                                       url: p.url,
-                                       data: param,
-                                       dataType: p.dataType,
-                                       success: function (data) {
-                                               g.addData(data);
-                                       },
-                                       error: function (XMLHttpRequest, textStatus, errorThrown) {
-                                               try {
-                                                       if (p.onError) p.onError(XMLHttpRequest, textStatus, errorThrown);
-                                               } catch (e) {}
-                                       }
-                               });
-                       },
-                       doSearch: function () {
-                               p.query = $('input[name=q]', g.sDiv).val();
-                               p.qtype = $('select[name=qtype]', g.sDiv).val();
-                               p.newp = 1;
-                               this.populate();
-                       },
-                       changePage: function (ctype) { //change page
-                               if (this.loading) {
-                                       return true;
-                               }
-                               switch (ctype) {
-                                       case 'first':
-                                               p.newp = 1;
-                                               break;
-                                       case 'prev':
-                                               if (p.page > 1) {
-                                                       p.newp = parseInt(p.page, 10) - 1;
-                                               }
-                                               break;
-                                       case 'next':
-                                               if (p.page < p.pages) {
-                                                       p.newp = parseInt(p.page, 10) + 1;
-                                               }
-                                               break;
-                                       case 'last':
-                                               p.newp = p.pages;
-                                               break;
-                                       case 'input':
-                                               var nv = parseInt($('.pcontrol input', this.pDiv).val(), 10);
-                                               if (isNaN(nv)) {
-                                                       nv = 1;
-                                               }
-                                               if (nv < 1) {
-                                                       nv = 1;
-                                               } else if (nv > p.pages) {
-                                                       nv = p.pages;
-                                               }
-                                               $('.pcontrol input', this.pDiv).val(nv);
-                                               p.newp = nv;
-                                               break;
-                               }
-                               if (p.newp == p.page) {
-                                       return false;
-                               }
-                               if (p.onChangePage) {
-                                       p.onChangePage(p.newp);
-                               } else {
-                                       this.populate();
-                               }
-                       },
-                       addCellProp: function () {
-                               $('tbody tr td', g.bDiv).each(function () {
-                                       var tdDiv = document.createElement('div');
-                                       var n = $('td', $(this).parent()).index(this);
-                                       var pth = $('th:eq(' + n + ')', g.hDiv).get(0);
-                                       if (pth != null) {
-                                               if (p.sortname == $(pth).attr('abbr') && p.sortname) {
-                                                       this.className = 'sorted';
-                                               }
-                                               $(tdDiv).css({
-                                                       textAlign: pth.align,
-                                                       width: $('div:first', pth)[0].style.width
-                                               });
-                                               if (pth.hidden) {
-                                                       $(this).css('display', 'none');
-                                               }
-                                       }
-                                       if (p.nowrap == false) {
-                                               $(tdDiv).css('white-space', 'normal');
-                                       }
-                                       if (this.innerHTML == '') {
-                                               this.innerHTML = '&nbsp;';
-                                       }
-                                       tdDiv.innerHTML = this.innerHTML;
-                                       var prnt = $(this).parent()[0];
-                                       var pid = false;
-                                       if (prnt.id) {
-                                               pid = prnt.id.substr(3);
-                                       }
-                                       if (pth != null) {
-                                               if (pth.process) pth.process(tdDiv, pid);
-                                       }
-                                       $(this).empty().append(tdDiv).removeAttr('width'); //wrap content
-                                       g.addTitleToCell(tdDiv);
-                               });
-                       },
-                       getCellDim: function (obj) {// get cell prop for editable event
-                               var ht = parseInt($(obj).height(), 10);
-                               var pht = parseInt($(obj).parent().height(), 10);
-                               var wt = parseInt(obj.style.width, 10);
-                               var pwt = parseInt($(obj).parent().width(), 10);
-                               var top = obj.offsetParent.offsetTop;
-                               var left = obj.offsetParent.offsetLeft;
-                               var pdl = parseInt($(obj).css('paddingLeft'), 10);
-                               var pdt = parseInt($(obj).css('paddingTop'), 10);
-                               return {
-                                       ht: ht,
-                                       wt: wt,
-                                       top: top,
-                                       left: left,
-                                       pdl: pdl,
-                                       pdt: pdt,
-                                       pht: pht,
-                                       pwt: pwt
-                               };
-                       },
-                       addRowProp: function () {
-                               $('tbody tr', g.bDiv).on('click', function (e) {
-                                       var obj = (e.target || e.srcElement);
-                                       if (obj.href || obj.type) return true;
-                                       if (e.ctrlKey || e.metaKey) {
-                                               // mousedown already took care of this case
-                                               return;
-                                       }
-                                       $(this).toggleClass('trSelected');
-                                       if (p.singleSelect && ! g.multisel) {
-                                               $(this).siblings().removeClass('trSelected');
-                                       }
-                               }).on('mousedown', function (e) {
-                                       if (e.shiftKey) {
-                                               $(this).toggleClass('trSelected');
-                                               g.multisel = true;
-                                               this.focus();
-                                               $(g.gDiv).noSelect();
-                                       }
-                                       if (e.ctrlKey || e.metaKey) {
-                                               $(this).toggleClass('trSelected');
-                                               g.multisel = true;
-                                               this.focus();
-                                       }
-                               }).on('mouseup', function (e) {
-                                       if (g.multisel && ! (e.ctrlKey || e.metaKey)) {
-                                               g.multisel = false;
-                                               $(g.gDiv).noSelect(false);
-                                       }
-                               }).on('dblclick', function () {
-                                       if (p.onDoubleClick) {
-                                               p.onDoubleClick(this, g, p);
-                                       }
-                               }).hover(function (e) {
-                                       if (g.multisel && e.shiftKey) {
-                                               $(this).toggleClass('trSelected');
-                                       }
-                               }, function () {});
-                               if (browser.msie && browser.version < 7.0) {
-                                       $(this).hover(function () {
-                                               $(this).addClass('trOver');
-                                       }, function () {
-                                               $(this).removeClass('trOver');
-                                       });
-                               }
-                       },
-
-                       combo_flag: true,
-                       combo_resetIndex: function(selObj)
-                       {
-                               if(this.combo_flag) {
-                                       selObj.selectedIndex = 0;
-                               }
-                               this.combo_flag = true;
-                       },
-                       combo_doSelectAction: function(selObj)
-                       {
-                               eval( selObj.options[selObj.selectedIndex].value );
-                               selObj.selectedIndex = 0;
-                               this.combo_flag = false;
-                       },
-                       //Add title attribute to div if cell contents is truncated
-                       addTitleToCell: function(tdDiv) {
-                               if(p.addTitleToCell) {
-                                       var $span = $('<span />').css('display', 'none'),
-                                               $div = (tdDiv instanceof jQuery) ? tdDiv : $(tdDiv),
-                                               div_w = $div.outerWidth(),
-                                               span_w = 0;
-
-                                       $('body').children(':first').before($span);
-                                       $span.html($div.html());
-                                       $span.css('font-size', '' + $div.css('font-size'));
-                                       $span.css('padding-left', '' + $div.css('padding-left'));
-                                       span_w = $span.innerWidth();
-                                       $span.remove();
-
-                                       if(span_w > div_w) {
-                                               $div.attr('title', $div.text());
-                                       } else {
-                                               $div.removeAttr('title');
-                                       }
-                               }
-                       },
-                       autoResizeColumn: function (obj) {
-                               if(!p.dblClickResize) {
-                                       return;
-                               }
-                               var n = $('div', this.cDrag).index(obj),
-                                       $th = $('th:visible div:eq(' + n + ')', this.hDiv),
-                                       ol = parseInt(obj.style.left, 10),
-                                       ow = $th.width(),
-                                       nw = 0,
-                                       nl = 0,
-                                       $span = $('<span />');
-                               $('body').children(':first').before($span);
-                               $span.html($th.html());
-                               $span.css('font-size', '' + $th.css('font-size'));
-                               $span.css('padding-left', '' + $th.css('padding-left'));
-                               $span.css('padding-right', '' + $th.css('padding-right'));
-                               nw = $span.width();
-                               $('tr', this.bDiv).each(function () {
-                                       var $tdDiv = $('td:visible div:eq(' + n + ')', this),
-                                               spanW = 0;
-                                       $span.html($tdDiv.html());
-                                       $span.css('font-size', '' + $tdDiv.css('font-size'));
-                                       $span.css('padding-left', '' + $tdDiv.css('padding-left'));
-                                       $span.css('padding-right', '' + $tdDiv.css('padding-right'));
-                                       spanW = $span.width();
-                                       nw = (spanW > nw) ? spanW : nw;
-                               });
-                               $span.remove();
-                               nw = (p.minWidth > nw) ? p.minWidth : nw;
-                               nl = ol + (nw - ow);
-                               $('div:eq(' + n + ')', this.cDrag).css('left', nl);
-                               this.colresize = {
-                                       nw: nw,
-                                       n: n
-                               };
-                               g.dragEnd();
-                       },
-                       pager: 0
-               };
-        
-        g = p.getGridClass(g); //get the grid class
-        
-               if (p.colModel) { //create model if any
-                       thead = document.createElement('thead');
-                       var tr = document.createElement('tr');
-                       for (var i = 0; i < p.colModel.length; i++) {
-                               var cm = p.colModel[i];
-                               var th = document.createElement('th');
-                               $(th).attr('axis', 'col' + i);
-                               if( cm ) {      // only use cm if its defined
-                                       if ($.cookies) {
-                                               var cookie_width = 'flexiwidths/'+cm.name;              // Re-Store the widths in the cookies
-                                               if( $.cookie(cookie_width) != undefined ) {
-                                                       cm.width = $.cookie(cookie_width);
-                                               }
-                                       }
-                                       if( cm.display != undefined ) {
-                                               th.innerHTML = cm.display;
-                                       }
-                                       if (cm.name && cm.sortable) {
-                                               $(th).attr('abbr', cm.name);
-                                       }
-                                       if (cm.align) {
-                                               th.align = cm.align;
-                                       }
-                                       if (cm.width) {
-                                               $(th).attr('width', cm.width);
-                                       }
-                                       if ($(cm).attr('hide')) {
-                                               th.hidden = true;
-                                       }
-                                       if (cm.process) {
-                                               th.process = cm.process;
-                                       }
-                               } else {
-                                       th.innerHTML = "";
-                                       $(th).attr('width',30);
-                               }
-                               $(tr).append(th);
-                       }
-                       $(thead).append(tr);
-                       $(t).prepend(thead);
-               } // end if p.colmodel
-               //init divs
-               g.gDiv = document.createElement('div'); //create global container
-               g.mDiv = document.createElement('div'); //create title container
-               g.hDiv = document.createElement('div'); //create header container
-               g.bDiv = document.createElement('div'); //create body container
-               g.vDiv = document.createElement('div'); //create grip
-               g.rDiv = document.createElement('div'); //create horizontal resizer
-               g.cDrag = document.createElement('div'); //create column drag
-               g.block = document.createElement('div'); //creat blocker
-               g.nDiv = document.createElement('div'); //create column show/hide popup
-               g.nBtn = document.createElement('div'); //create column show/hide button
-               g.iDiv = document.createElement('div'); //create editable layer
-               g.tDiv = document.createElement('div'); //create toolbar
-               g.sDiv = document.createElement('div');
-               g.pDiv = document.createElement('div'); //create pager container
-        
-        if(p.colResize === false) { //don't display column drag if we are not using it
-            $(g.cDrag).css('display', 'none');
-        }
-        
-               if (!p.usepager) {
-                       g.pDiv.style.display = 'none';
-               }
-               g.hTable = document.createElement('table');
-               g.gDiv.className = 'flexigrid';
-               if (p.width != 'auto') {
-                       g.gDiv.style.width = p.width + (isNaN(p.width) ? '' : 'px');
-               } 
-               //add conditional classes
-               if (browser.msie) {
-                       $(g.gDiv).addClass('ie');
-               }
-               if (p.novstripe) {
-                       $(g.gDiv).addClass('novstripe');
-               }
-               $(t).before(g.gDiv);
-               $(g.gDiv).append(t);
-               //set toolbar
-               if (p.buttons) {
-                       g.tDiv.className = 'tDiv';
-                       var tDiv2 = document.createElement('div');
-                       tDiv2.className = 'tDiv2';
-                       for (var i = 0; i < p.buttons.length; i++) {
-                               var btn = p.buttons[i];
-                               if (!btn.separator) {
-                                       var btnDiv = document.createElement('div');
-                                       btnDiv.className = 'fbutton';
-                                       btnDiv.innerHTML = ("<div><span>") + (btn.hidename ? "&nbsp;" : btn.name) + ("</span></div>");
-                                       if (btn.bclass) $('span', btnDiv).addClass(btn.bclass).css({
-                                               paddingLeft: 20
-                                       });
-                                       if (btn.bimage) // if bimage defined, use its string as an image url for this buttons style (RS)
-                                               $('span',btnDiv).css( 'background', 'url('+btn.bimage+') no-repeat center left' );
-                                               $('span',btnDiv).css( 'paddingLeft', 20 );
-
-                                       if (btn.tooltip) // add title if exists (RS)
-                                               $('span',btnDiv)[0].title = btn.tooltip;
-
-                                       btnDiv.onpress = btn.onpress;
-                                       btnDiv.name = btn.name;
-                                       if (btn.id) {
-                                               btnDiv.id = btn.id;
-                                       }
-                                       if (btn.onpress) {
-                                               $(btnDiv).click(function () {
-                                                       this.onpress(this.id || this.name, g.gDiv);
-                                               });
-                                       }
-                                       $(tDiv2).append(btnDiv);
-                                       if (browser.msie && browser.version < 7.0) {
-                                               $(btnDiv).hover(function () {
-                                                       $(this).addClass('fbOver');
-                                               }, function () {
-                                                       $(this).removeClass('fbOver');
-                                               });
-                                       }
-                               } else {
-                                       $(tDiv2).append("<div class='btnseparator'></div>");
-                               }
-                       }
-                       $(g.tDiv).append(tDiv2);
-                       $(g.tDiv).append("<div style='clear:both'></div>");
-                       $(g.gDiv).prepend(g.tDiv);
-               }
-               g.hDiv.className = 'hDiv';
-
-               // Define a combo button set with custom action'ed calls when clicked.
-               if( p.combobuttons && $(g.tDiv2) )
-               {
-                       var btnDiv = document.createElement('div');
-                       btnDiv.className = 'fbutton';
-
-                       var tSelect = document.createElement('select');
-                       $(tSelect).change( function () { g.combo_doSelectAction( tSelect ) } );
-                       $(tSelect).click( function () { g.combo_resetIndex( tSelect) } );
-                       tSelect.className = 'cselect';
-                       $(btnDiv).append(tSelect);
-
-                       for (i=0;i<p.combobuttons.length;i++)
-                       {
-                               var btn = p.combobuttons[i];
-                               if (!btn.separator)
-                               {
-                                       var btnOpt = document.createElement('option');
-                                       btnOpt.innerHTML = btn.name;
-
-                                       if (btn.bclass)
-                                               $(btnOpt)
-                                               .addClass(btn.bclass)
-                                               .css({paddingLeft:20})
-                                               ;
-                                       if (btn.bimage)  // if bimage defined, use its string as an image url for this buttons style (RS)
-                                               $(btnOpt).css( 'background', 'url('+btn.bimage+') no-repeat center left' );
-                                               $(btnOpt).css( 'paddingLeft', 20 );
-
-                                       if (btn.tooltip) // add title if exists (RS)
-                                               $(btnOpt)[0].title = btn.tooltip;
-
-                                       if (btn.onpress)
-                                       {
-                                               btnOpt.value = btn.onpress;
-                                       }
-                                       $(tSelect).append(btnOpt);
-                               }
-                       }
-                       $('.tDiv2').append(btnDiv);
-               }
-
-
-               $(t).before(g.hDiv);
-               g.hTable.cellPadding = 0;
-               g.hTable.cellSpacing = 0;
-               $(g.hDiv).append('<div class="hDivBox"></div>');
-               $('div', g.hDiv).append(g.hTable);
-               var thead = $("thead:first", t).get(0);
-               if (thead) $(g.hTable).append(thead);
-               thead = null;
-               if (!p.colmodel) var ci = 0;
-               $('thead tr:first th', g.hDiv).each(function () {
-                       var thdiv = document.createElement('div');
-                       if ($(this).attr('abbr')) {
-                               $(this).click(function (e) {
-                                       if (!$(this).hasClass('thOver')) return false;
-                                       var obj = (e.target || e.srcElement);
-                                       if (obj.href || obj.type) return true;
-                                       g.changeSort(this);
-                               });
-                               if ($(this).attr('abbr') == p.sortname) {
-                                       this.className = 'sorted';
-                                       thdiv.className = 's' + p.sortorder;
-                               }
-                       }
-                       if (this.hidden) {
-                               $(this).hide();
-                       }
-                       if (!p.colmodel) {
-                               $(this).attr('axis', 'col' + ci++);
-                       }
-                       
-                       // if there isn't a default width, then the column headers don't match
-                       // i'm sure there is a better way, but this at least stops it failing
-                       if (this.width == '') {
-                               this.width = 100;
-                       }
-                       
-                       $(thdiv).css({
-                               textAlign: this.align,
-                               width: this.width + 'px'
-                       });
-                       thdiv.innerHTML = this.innerHTML;
-                       $(this).empty().append(thdiv).removeAttr('width').mousedown(function (e) {
-                               g.dragStart('colMove', e, this);
-                       }).hover(function () {
-                               if (!g.colresize && !$(this).hasClass('thMove') && !g.colCopy) {
-                                       $(this).addClass('thOver');
-                               }
-                               if ($(this).attr('abbr') != p.sortname && !g.colCopy && !g.colresize && $(this).attr('abbr')) {
-                                       $('div', this).addClass('s' + p.sortorder);
-                               } else if ($(this).attr('abbr') == p.sortname && !g.colCopy && !g.colresize && $(this).attr('abbr')) {
-                                       var no = (p.sortorder == 'asc') ? 'desc' : 'asc';
-                                       $('div', this).removeClass('s' + p.sortorder).addClass('s' + no);
-                               }
-                               if (g.colCopy) {
-                                       var n = $('th', g.hDiv).index(this);
-                                       if (n == g.dcoln) {
-                                               return false;
-                                       }
-                                       if (n < g.dcoln) {
-                                               $(this).append(g.cdropleft);
-                                       } else {
-                                               $(this).append(g.cdropright);
-                                       }
-                                       g.dcolt = n;
-                               } else if (!g.colresize) {
-                                       var nv = $('th:visible', g.hDiv).index(this);
-                                       var onl = parseInt($('div:eq(' + nv + ')', g.cDrag).css('left'), 10);
-                                       var nw = jQuery(g.nBtn).outerWidth();
-                                       var nl = onl - nw + Math.floor(p.cgwidth / 2);
-                                       $(g.nDiv).hide();
-                                       $(g.nBtn).hide();
-                                       $(g.nBtn).css({
-                                               'left': nl,
-                                               top: g.hDiv.offsetTop
-                                       }).show();
-                                       var ndw = parseInt($(g.nDiv).width(), 10);
-                                       $(g.nDiv).css({
-                                               top: g.bDiv.offsetTop
-                                       });
-                                       if ((nl + ndw) > $(g.gDiv).width()) {
-                                               $(g.nDiv).css('left', onl - ndw + 1);
-                                       } else {
-                                               $(g.nDiv).css('left', nl);
-                                       }
-                                       if ($(this).hasClass('sorted')) {
-                                               $(g.nBtn).addClass('srtd');
-                                       } else {
-                                               $(g.nBtn).removeClass('srtd');
-                                       }
-                               }
-                       }, function () {
-                               $(this).removeClass('thOver');
-                               if ($(this).attr('abbr') != p.sortname) {
-                                       $('div', this).removeClass('s' + p.sortorder);
-                               } else if ($(this).attr('abbr') == p.sortname) {
-                                       var no = (p.sortorder == 'asc') ? 'desc' : 'asc';
-                                       $('div', this).addClass('s' + p.sortorder).removeClass('s' + no);
-                               }
-                               if (g.colCopy) {
-                                       $(g.cdropleft).remove();
-                                       $(g.cdropright).remove();
-                                       g.dcolt = null;
-                               }
-                       }); //wrap content
-               });
-               //set bDiv
-               g.bDiv.className = 'bDiv';
-               $(t).before(g.bDiv);
-               $(g.bDiv).css({
-                       height: (p.height == 'auto') ? 'auto' : p.height + "px"
-               }).scroll(function (e) {
-                       g.scroll()
-               }).append(t);
-               if (p.height == 'auto') {
-                       $('table', g.bDiv).addClass('autoht');
-               }
-               //add td & row properties
-               g.addCellProp();
-               g.addRowProp();
-        //set cDrag only if we are using it
-        if (p.colResize === true) {
-            var cdcol = $('thead tr:first th:first', g.hDiv).get(0);
-            if(cdcol !== null) {
-                g.cDrag.className = 'cDrag';
-                g.cdpad = 0;
-                g.cdpad += (isNaN(parseInt($('div', cdcol).css('borderLeftWidth'), 10)) ? 0 : parseInt($('div', cdcol).css('borderLeftWidth'), 10));
-                g.cdpad += (isNaN(parseInt($('div', cdcol).css('borderRightWidth'), 10)) ? 0 : parseInt($('div', cdcol).css('borderRightWidth'), 10));
-                g.cdpad += (isNaN(parseInt($('div', cdcol).css('paddingLeft'), 10)) ? 0 : parseInt($('div', cdcol).css('paddingLeft'), 10));
-                g.cdpad += (isNaN(parseInt($('div', cdcol).css('paddingRight'), 10)) ? 0 : parseInt($('div', cdcol).css('paddingRight'), 10));
-                g.cdpad += (isNaN(parseInt($(cdcol).css('borderLeftWidth'), 10)) ? 0 : parseInt($(cdcol).css('borderLeftWidth'), 10));
-                g.cdpad += (isNaN(parseInt($(cdcol).css('borderRightWidth'), 10)) ? 0 : parseInt($(cdcol).css('borderRightWidth'), 10));
-                g.cdpad += (isNaN(parseInt($(cdcol).css('paddingLeft'), 10)) ? 0 : parseInt($(cdcol).css('paddingLeft'), 10));
-                g.cdpad += (isNaN(parseInt($(cdcol).css('paddingRight'), 10)) ? 0 : parseInt($(cdcol).css('paddingRight'), 10));
-                $(g.bDiv).before(g.cDrag);
-                var cdheight = $(g.bDiv).height();
-                var hdheight = $(g.hDiv).height();
-                $(g.cDrag).css({
-                    top: -hdheight + 'px'
-                });
-                $('thead tr:first th', g.hDiv).each(function() {
-                    var cgDiv = document.createElement('div');
-                    $(g.cDrag).append(cgDiv);
-                    if (!p.cgwidth) {
-                        p.cgwidth = $(cgDiv).width();
-                    }
-                    $(cgDiv).css({
-                        height: cdheight + hdheight
-                    }).mousedown(function(e) {
-                        g.dragStart('colresize', e, this);
-                    }).dblclick(function(e) {
-                        g.autoResizeColumn(this);
-                    });
-                    if (browser.msie && browser.version < 7.0) {
-                        g.fixHeight($(g.gDiv).height());
-                        $(cgDiv).hover(function() {
-                            g.fixHeight();
-                            $(this).addClass('dragging');
-                        }, function() {
-                            if(!g.colresize) {
-                                $(this).removeClass('dragging');
-                            }
-                        });
-                    }
-                });
-            }
-        }
-               //add strip
-               if (p.striped) {
-                       $('tbody tr:odd', g.bDiv).addClass('erow');
-               }
-               if (p.resizable && p.height != 'auto') {
-                       g.vDiv.className = 'vGrip';
-                       $(g.vDiv).mousedown(function (e) {
-                               g.dragStart('vresize', e);
-                       }).html('<span></span>');
-                       $(g.bDiv).after(g.vDiv);
-               }
-               if (p.resizable && p.width != 'auto' && !p.nohresize) {
-                       g.rDiv.className = 'hGrip';
-                       $(g.rDiv).mousedown(function (e) {
-                               g.dragStart('vresize', e, true);
-                       }).html('<span></span>').css('height', $(g.gDiv).height());
-                       if (browser.msie && browser.version < 7.0) {
-                               $(g.rDiv).hover(function () {
-                                       $(this).addClass('hgOver');
-                               }, function () {
-                                       $(this).removeClass('hgOver');
-                               });
-                       }
-                       $(g.gDiv).append(g.rDiv);
-               }
-               // add pager
-               if (p.usepager) {
-                       g.pDiv.className = 'pDiv';
-                       g.pDiv.innerHTML = '<div class="pDiv2"></div>';
-                       $(g.bDiv).after(g.pDiv);
-                       var html = ' <div class="pGroup"> <div class="pFirst pButton"><span></span></div><div class="pPrev pButton"><span></span></div> </div> <div class="btnseparator"></div> <div class="pGroup"><span class="pcontrol">' + p.pagetext + ' <input type="text" size="4" value="1" /> ' + p.outof + ' <span> 1 </span></span></div> <div class="btnseparator"></div> <div class="pGroup"> <div class="pNext pButton"><span></span></div><div class="pLast pButton"><span></span></div> </div> <div class="btnseparator"></div> <div class="pGroup"> <div class="pReload pButton"><span></span></div> </div> <div class="btnseparator"></div> <div class="pGroup"><span class="pPageStat"></span></div>';
-                       $('div', g.pDiv).html(html);
-                       $('.pReload', g.pDiv).click(function () {
-                               g.populate();
-                       });
-                       $('.pFirst', g.pDiv).click(function () {
-                               g.changePage('first');
-                       });
-                       $('.pPrev', g.pDiv).click(function () {
-                               g.changePage('prev');
-                       });
-                       $('.pNext', g.pDiv).click(function () {
-                               g.changePage('next');
-                       });
-                       $('.pLast', g.pDiv).click(function () {
-                               g.changePage('last');
-                       });
-                       $('.pcontrol input', g.pDiv).keydown(function (e) {
-                               if (e.keyCode == 13) { 
-                    g.changePage('input');
-                               }
-                       });
-                       if (browser.msie && browser.version < 7) $('.pButton', g.pDiv).hover(function () {
-                               $(this).addClass('pBtnOver');
-                       }, function () {
-                               $(this).removeClass('pBtnOver');
-                       });
-                       if (p.useRp) {
-                               var opt = '',
-                                       sel = '';
-                               for (var nx = 0; nx < p.rpOptions.length; nx++) {
-                                       if (p.rp == p.rpOptions[nx]) sel = 'selected="selected"';
-                                       else sel = '';
-                                       opt += "<option value='" + p.rpOptions[nx] + "' " + sel + " >" + p.rpOptions[nx] + "&nbsp;&nbsp;</option>";
-                               }
-                               $('.pDiv2', g.pDiv).prepend("<div class='pGroup'><select name='rp'>" + opt + "</select></div> <div class='btnseparator'></div>");
-                               $('select', g.pDiv).change(function () {
-                                       if (p.onRpChange) {
-                                               p.onRpChange(+this.value);
-                                       } else {
-                                               p.newp = 1;
-                                               p.rp = +this.value;
-                                               g.populate();
-                                       }
-                               });
-                       }
-                       //add search button
-                       if (p.searchitems) {
-                               $('.pDiv2', g.pDiv).prepend("<div class='pGroup'> <div class='pSearch pButton'><span></span></div> </div>  <div class='btnseparator'></div>");
-                               $('.pSearch', g.pDiv).click(function () {
-                                       $(g.sDiv).slideToggle('fast', function () {
-                                               $('.sDiv:visible input:first', g.gDiv).trigger('focus');
-                                       });
-                               });
-                               //add search box
-                               g.sDiv.className = 'sDiv';
-                               var sitems = p.searchitems;
-                               var sopt = '', sel = '';
-                               for (var s = 0; s < sitems.length; s++) {
-                                       if (p.qtype === '' && sitems[s].isdefault === true) {
-                                               p.qtype = sitems[s].name;
-                                               sel = 'selected="selected"';
-                                       } else {
-                                               sel = '';
-                                       }
-                                       sopt += "<option value='" + sitems[s].name + "' " + sel + " >" + sitems[s].display + "&nbsp;&nbsp;</option>";
-                               }
-                               if (p.qtype === '') {
-                                       p.qtype = sitems[0].name;
-                               }
-                               $(g.sDiv).append("<div class='sDiv2'>" + p.findtext +
-                                               " <input type='text' value='" + p.query +"' size='30' name='q' class='qsbox' /> "+
-                                               " <select name='qtype'>" + sopt + "</select></div>");
-                               //Split into separate selectors because of bug in jQuery 1.3.2
-                               $('input[name=q]', g.sDiv).keydown(function (e) {
-                                       if (e.keyCode == 13) {
-                                               g.doSearch();
-                                       }
-                               });
-                               $('select[name=qtype]', g.sDiv).keydown(function (e) {
-                                       if (e.keyCode == 13) {
-                                               g.doSearch();
-                                       }
-                               });
-                               $('input[value=Clear]', g.sDiv).click(function () {
-                                       $('input[name=q]', g.sDiv).val('');
-                                       p.query = '';
-                                       g.doSearch();
-                               });
-                               $(g.bDiv).after(g.sDiv);
-                       }
-               }
-               $(g.pDiv, g.sDiv).append("<div style='clear:both'></div>");
-               // add title
-               if (p.title) {
-                       g.mDiv.className = 'mDiv';
-                       g.mDiv.innerHTML = '<div class="ftitle">' + p.title + '</div>';
-                       $(g.gDiv).prepend(g.mDiv);
-                       if (p.showTableToggleBtn) {
-                               $(g.mDiv).append('<div class="ptogtitle" title="Minimize/Maximize Table"><span></span></div>');
-                               $('div.ptogtitle', g.mDiv).click(function () {
-                                       $(g.gDiv).toggleClass('hideBody');
-                                       $(this).toggleClass('vsble');
-                               });
-                       }
-               }
-               //setup cdrops
-               g.cdropleft = document.createElement('span');
-               g.cdropleft.className = 'cdropleft';
-               g.cdropright = document.createElement('span');
-               g.cdropright.className = 'cdropright';
-               //add block
-               g.block.className = 'gBlock';
-               var gh = $(g.bDiv).height();
-               var gtop = g.bDiv.offsetTop;
-               $(g.block).css({
-                       width: g.bDiv.style.width,
-                       height: gh,
-                       background: 'white',
-                       position: 'relative',
-                       marginBottom: (gh * -1),
-                       zIndex: 1,
-                       top: gtop,
-                       left: '0px'
-               });
-               $(g.block).fadeTo(0, p.blockOpacity);
-               // add column control
-               if ($('th', g.hDiv).length) {
-                       g.nDiv.className = 'nDiv';
-                       g.nDiv.innerHTML = "<table cellpadding='0' cellspacing='0'><tbody></tbody></table>";
-                       $(g.nDiv).css({
-                               marginBottom: (gh * -1),
-                               display: 'none',
-                               top: gtop
-                       }).noSelect();
-                       var cn = 0;
-                       $('th div', g.hDiv).each(function () {
-                               var kcol = $("th[axis='col" + cn + "']", g.hDiv)[0];
-                               var chk = 'checked="checked"';
-                               if (kcol.style.display == 'none') {
-                                       chk = '';
-                               }
-                               $('tbody', g.nDiv).append('<tr><td class="ndcol1"><input type="checkbox" ' + chk + ' class="togCol" value="' + cn + '" /></td><td class="ndcol2">' + this.innerHTML + '</td></tr>');
-                               cn++;
-                       });
-                       if (browser.msie && browser.version < 7.0) $('tr', g.nDiv).hover(function () {
-                               $(this).addClass('ndcolover');
-                       }, function () {
-                               $(this).removeClass('ndcolover');
-                       });
-                       $('td.ndcol2', g.nDiv).click(function () {
-                               if ($('input:checked', g.nDiv).length <= p.minColToggle && $(this).prev().find('input')[0].checked) return false;
-                               return g.toggleCol($(this).prev().find('input').val());
-                       });
-                       $('input.togCol', g.nDiv).click(function () {
-                               if ($('input:checked', g.nDiv).length < p.minColToggle && this.checked === false) return false;
-                               $(this).parent().next().trigger('click');
-                       });
-                       $(g.gDiv).prepend(g.nDiv);
-                       $(g.nBtn).addClass('nBtn')
-                               .html('<div></div>')
-                               .attr('title', 'Hide/Show Columns')
-                               .click(function () {
-                                       $(g.nDiv).toggle();
-                                       return true;
-                               }
-                       );
-                       if (p.showToggleBtn) {
-                               $(g.gDiv).prepend(g.nBtn);
-                       }
-               }
-               // add date edit layer
-               $(g.iDiv).addClass('iDiv').css({
-                       display: 'none'
-               });
-               $(g.bDiv).append(g.iDiv);
-               // add flexigrid events
-               $(g.bDiv).hover(function () {
-                       $(g.nDiv).hide();
-                       $(g.nBtn).hide();
-               }, function () {
-                       if (g.multisel) {
-                               g.multisel = false;
-                       }
-               });
-               $(g.gDiv).hover(function () {}, function () {
-                       $(g.nDiv).hide();
-                       $(g.nBtn).hide();
-               });
-               //add document events
-               $(document).mousemove(function (e) {
-                       g.dragMove(e);
-               }).mouseup(function (e) {
-                       g.dragEnd();
-               }).hover(function () {}, function () {
-                       g.dragEnd();
-               });
-               //browser adjustments
-               if (browser.msie && browser.version < 7.0) {
-                       $('.hDiv,.bDiv,.mDiv,.pDiv,.vGrip,.tDiv, .sDiv', g.gDiv).css({
-                               width: '100%'
-                       });
-                       $(g.gDiv).addClass('ie6');
-                       if (p.width != 'auto') {
-                               $(g.gDiv).addClass('ie6fullwidthbug');
-                       }
-               }
-               g.rePosDrag();
-               g.fixHeight();
-               //make grid functions accessible
-               t.p = p;
-               t.grid = g;
-               // load data
-               if (p.url && p.autoload) {
-                       g.populate();
-               }
-               return t;
-       };
-       var docloaded = false;
-       $(document).ready(function () {
-               docloaded = true;
-       });
-       $.fn.flexigrid = function (p) {
-               return this.each(function () {
-                       if (!docloaded) {
-                               $(this).hide();
-                               var t = this;
-                               $(document).ready(function () {
-                                       $.addFlex(t, p);
-                               });
-                       } else {
-                               $.addFlex(this, p);
-                       }
-               });
-       }; //end flexigrid
-       $.fn.flexReload = function (p) { // function to reload grid
-               return this.each(function () {
-                       if (this.grid && this.p.url) this.grid.populate();
-               });
-       }; //end flexReload
-       $.fn.flexOptions = function (p) { //function to update general options
-               return this.each(function () {
-                       if (this.grid) $.extend(this.p, p);
-               });
-       }; //end flexOptions
-       $.fn.flexToggleCol = function (cid, visible) { // function to reload grid
-               return this.each(function () {
-                       if (this.grid) this.grid.toggleCol(cid, visible);
-               });
-       }; //end flexToggleCol
-       $.fn.flexAddData = function (data) { // function to add data to grid
-               return this.each(function () {
-                       if (this.grid) this.grid.addData(data);
-               });
-       };
-       $.fn.noSelect = function (p) { //no select plugin by me :-)
-               var prevent = (p === null) ? true : p;
-               if (prevent) {
-                       return this.each(function () {
-                               if (browser.msie || browser.safari) $(this).bind('selectstart', function () {
-                                       return false;
-                               });
-                               else if (browser.mozilla) {
-                                       $(this).css('MozUserSelect', 'none');
-                                       $('body').trigger('focus');
-                               } else if (browser.opera) $(this).bind('mousedown', function () {
-                                       return false;
-                               });
-                               else $(this).attr('unselectable', 'on');
-                       });
-               } else {
-                       return this.each(function () {
-                               if (browser.msie || browser.safari) $(this).unbind('selectstart');
-                               else if (browser.mozilla) $(this).css('MozUserSelect', 'inherit');
-                               else if (browser.opera) $(this).unbind('mousedown');
-                               else $(this).removeAttr('unselectable', 'on');
-                       });
-               }
-       }; //end noSelect
-       $.fn.flexSearch = function(p) { // function to search grid
-               return this.each( function() { if (this.grid&&this.p.searchitems) this.grid.doSearch(); });
-       }; //end flexSearch
-       $.fn.selectedRows = function (p) { // Returns the selected rows as an array, taken and adapted from http://stackoverflow.com/questions/11868404/flexigrid-get-selected-row-columns-values
-               var arReturn = [];
-               var arRow = [];
-               var selector = $(this.selector + ' .trSelected');
-
-
-               $(selector).each(function (i, row) {
-                       arRow = [];
-                       var idr = $(row).data('id');
-                       $.each(row.cells, function (c, cell) {
-                               var col = cell.abbr;
-                               var val = cell.firstChild.innerHTML;
-                               if (val == '&nbsp;') val = '';      // Trim the content
-                               var idx = cell.cellIndex;                
-
-                               arRow.push({
-                                       Column: col,        // Column identifier
-                                       Value: val,         // Column value
-                                       CellIndex: idx,     // Cell index
-                                       RowIdentifier: idr  // Identifier of this row element
-                               });
-                       });
-                       arReturn.push(arRow);
-               });
-               return arReturn;
-       };
-})(jQuery);
diff --git a/src/main/resources/META-INF/resources/designer/lib/flexigrid/js/flexigrid.pack.js b/src/main/resources/META-INF/resources/designer/lib/flexigrid/js/flexigrid.pack.js
deleted file mode 100644 (file)
index 2f9ee95..0000000
+++ /dev/null
@@ -1 +0,0 @@
-(function($){var browser=$.browser;if(!browser){function uaMatch(e){e=e.toLowerCase();var t=/(chrome)[ \/]([\w.]+)/.exec(e)||/(webkit)[ \/]([\w.]+)/.exec(e)||/(opera)(?:.*version|)[ \/]([\w.]+)/.exec(e)||/(msie) ([\w.]+)/.exec(e)||e.indexOf("compatible")<0&&/(mozilla)(?:.*? rv:([\w.]+)|)/.exec(e)||[];return{browser:t[1]||"",version:t[2]||"0"}}var matched=uaMatch(navigator.userAgent);browser={};if(matched.browser){browser[matched.browser]=true;browser.version=matched.version}if(browser.chrome){browser.webkit=true}else if(browser.webkit){browser.safari=true}}if(typeof $.support.selectstart!="function"){$.support.selectstart="onselectstart"in document.createElement("div")}if(typeof $.fn.disableSelection!="function"){$.fn.disableSelection=function(){return this.bind(($.support.selectstart?"selectstart":"mousedown")+".ui-disableSelection",function(e){e.preventDefault()})}}$.addFlex=function(t,p){if(t.grid)return false;p=$.extend({height:200,width:"auto",striped:true,novstripe:false,minwidth:30,minheight:80,resizable:true,url:false,method:"POST",dataType:"xml",errormsg:"Connection Error",usepager:false,nowrap:true,page:1,total:1,useRp:true,rp:15,rpOptions:[10,20,30,50,100],title:false,idProperty:"id",pagestat:"Displaying {from} to {to} of {total} items",pagetext:"Page",outof:"of",findtext:"Find",params:[],procmsg:"Processing, please wait ...",query:"",qtype:"",nomsg:"No items",minColToggle:1,showToggleBtn:true,hideOnSubmit:true,autoload:true,blockOpacity:.5,preProcess:false,addTitleToCell:false,dblClickResize:false,onDragCol:false,onToggleCol:false,onChangeSort:false,onDoubleClick:false,onSuccess:false,onError:false,onSubmit:false,__mw:{datacol:function(e,t,n){var r=typeof e.datacol[t]=="function"?e.datacol[t](n):n;if(typeof e.datacol["*"]=="function"){return e.datacol["*"](r)}else{return r}}},getGridClass:function(e){return e},datacol:{},colResize:true,colMove:true},p);$(t).show().attr({cellPadding:0,cellSpacing:0,border:0}).removeAttr("width");var g={hset:{},rePosDrag:function(){var e=0-this.hDiv.scrollLeft;if(this.hDiv.scrollLeft>0)e-=Math.floor(p.cgwidth/2);$(g.cDrag).css({top:g.hDiv.offsetTop+1});var t=this.cdpad;var n=0;$("div",g.cDrag).hide();$("thead tr:first th:visible",this.hDiv).each(function(){var r=$("thead tr:first th:visible",g.hDiv).index(this);var i=parseInt($("div",this).width());if(e==0)e-=Math.floor(p.cgwidth/2);i=i+e+t;if(isNaN(i)){i=0}$("div:eq("+r+")",g.cDrag).css({left:(!browser.mozilla?i-n:i)+"px"}).show();e=i;n++})},fixHeight:function(e){e=false;if(!e)e=$(g.bDiv).height();var t=$(this.hDiv).height();$("div",this.cDrag).each(function(){$(this).height(e+t)});var n=parseInt($(g.nDiv).height(),10);if(n>e)$(g.nDiv).height(e).width(200);else $(g.nDiv).height("auto").width("auto");$(g.block).css({height:e,marginBottom:e*-1});var r=g.bDiv.offsetTop+e;if(p.height!="auto"&&p.resizable)r=g.vDiv.offsetTop;$(g.rDiv).css({height:r})},dragStart:function(e,t,n){if(e=="colresize"&&p.colResize===true){$(g.nDiv).hide();$(g.nBtn).hide();var r=$("div",this.cDrag).index(n);var i=$("th:visible div:eq("+r+")",this.hDiv).width();$(n).addClass("dragging").siblings().hide();$(n).prev().addClass("dragging").show();this.colresize={startX:t.pageX,ol:parseInt(n.style.left,10),ow:i,n:r};$("body").css("cursor","col-resize")}else if(e=="vresize"){var s=false;$("body").css("cursor","row-resize");if(n){s=true;$("body").css("cursor","col-resize")}this.vresize={h:p.height,sy:t.pageY,w:p.width,sx:t.pageX,hgo:s}}else if(e=="colMove"){$(t.target).disableSelection();if(p.colMove===true){$(g.nDiv).hide();$(g.nBtn).hide();this.hset=$(this.hDiv).offset();this.hset.right=this.hset.left+$("table",this.hDiv).width();this.hset.bottom=this.hset.top+$("table",this.hDiv).height();this.dcol=n;this.dcoln=$("th",this.hDiv).index(n);this.colCopy=document.createElement("div");this.colCopy.className="colCopy";this.colCopy.innerHTML=n.innerHTML;if(browser.msie){this.colCopy.className="colCopy ie"}$(this.colCopy).css({position:"absolute","float":"left",display:"none",textAlign:n.align});$("body").append(this.colCopy);$(this.cDrag).hide()}}$("body").noSelect()},dragMove:function(e){if(this.colresize){var t=this.colresize.n;var n=e.pageX-this.colresize.startX;var r=this.colresize.ol+n;var i=this.colresize.ow+n;if(i>p.minwidth){$("div:eq("+t+")",this.cDrag).css("left",r);this.colresize.nw=i}}else if(this.vresize){var s=this.vresize;var o=e.pageY;var n=o-s.sy;if(!p.defwidth)p.defwidth=p.width;if(p.width!="auto"&&!p.nohresize&&s.hgo){var u=e.pageX;var a=u-s.sx;var f=s.w+a;if(f>p.defwidth){this.gDiv.style.width=f+"px";p.width=f}}var l=s.h+n;if((l>p.minheight||p.height<p.minheight)&&!s.hgo){this.bDiv.style.height=l+"px";p.height=l;this.fixHeight(l)}s=null}else if(this.colCopy){$(this.dcol).addClass("thMove").removeClass("thOver");if(e.pageX>this.hset.right||e.pageX<this.hset.left||e.pageY>this.hset.bottom||e.pageY<this.hset.top){$("body").css("cursor","move")}else{$("body").css("cursor","pointer")}$(this.colCopy).css({top:e.pageY+10,left:e.pageX+20,display:"block"})}},dragEnd:function(){if(this.colresize){var e=this.colresize.n;var t=this.colresize.nw;$("th:visible div:eq("+e+")",this.hDiv).css("width",t);$("tr",this.bDiv).each(function(){var n=$("td:visible div:eq("+e+")",this);n.css("width",t);g.addTitleToCell(n)});this.hDiv.scrollLeft=this.bDiv.scrollLeft;$("div:eq("+e+")",this.cDrag).siblings().show();$(".dragging",this.cDrag).removeClass("dragging");this.rePosDrag();this.fixHeight();this.colresize=false;if($.cookies){var n=p.colModel[e].name;$.cookie("flexiwidths/"+n,t)}}else if(this.vresize){this.vresize=false}else if(this.colCopy){$(this.colCopy).remove();if(this.dcolt!==null){if(this.dcoln>this.dcolt)$("th:eq("+this.dcolt+")",this.hDiv).before(this.dcol);else $("th:eq("+this.dcolt+")",this.hDiv).after(this.dcol);this.switchCol(this.dcoln,this.dcolt);$(this.cdropleft).remove();$(this.cdropright).remove();this.rePosDrag();if(p.onDragCol){p.onDragCol(this.dcoln,this.dcolt)}}this.dcol=null;this.hset=null;this.dcoln=null;this.dcolt=null;this.colCopy=null;$(".thMove",this.hDiv).removeClass("thMove");$(this.cDrag).show()}$("body").css("cursor","default");$("body").noSelect(false)},toggleCol:function(e,n){var r=$("th[axis='col"+e+"']",this.hDiv)[0];var i=$("thead th",g.hDiv).index(r);var s=$("input[value="+e+"]",g.nDiv)[0];if(n==null){n=r.hidden}if($("input:checked",g.nDiv).length<p.minColToggle&&!n){return false}if(n){r.hidden=false;$(r).show();s.checked=true}else{r.hidden=true;$(r).hide();s.checked=false}$("tbody tr",t).each(function(){if(n){$("td:eq("+i+")",this).show()}else{$("td:eq("+i+")",this).hide()}});this.rePosDrag();if(p.onToggleCol){p.onToggleCol(e,n)}return n},switchCol:function(e,n){$("tbody tr",t).each(function(){if(e>n)$("td:eq("+n+")",this).before($("td:eq("+e+")",this));else $("td:eq("+n+")",this).after($("td:eq("+e+")",this))});if(e>n){$("tr:eq("+n+")",this.nDiv).before($("tr:eq("+e+")",this.nDiv))}else{$("tr:eq("+n+")",this.nDiv).after($("tr:eq("+e+")",this.nDiv))}if(browser.msie&&browser.version<7){$("tr:eq("+n+") input",this.nDiv)[0].checked=true}this.hDiv.scrollLeft=this.bDiv.scrollLeft},scroll:function(){this.hDiv.scrollLeft=this.bDiv.scrollLeft;this.rePosDrag()},addData:function(e){if(p.dataType=="json"){e=$.extend({rows:[],page:0,total:0},e)}if(p.preProcess){e=p.preProcess(e)}$(".pReload",this.pDiv).removeClass("loading");this.loading=false;if(!e){$(".pPageStat",this.pDiv).html(p.errormsg);if(p.onSuccess)p.onSuccess(this);return false}if(p.dataType=="xml"){p.total=+$("rows total",e).text()}else{p.total=e.total}if(p.total===0){$("tr, a, td, div",t).unbind();$(t).empty();p.pages=1;p.page=1;this.buildpager();$(".pPageStat",this.pDiv).html(p.nomsg);if(p.onSuccess)p.onSuccess(this);return false}p.pages=Math.ceil(p.total/p.rp);if(p.dataType=="xml"){p.page=+$("rows page",e).text()}else{p.page=e.page}this.buildpager();var n=document.createElement("tbody");if(p.dataType=="json"){$.each(e.rows,function(e,t){var r=document.createElement("tr");var i=$(r);if(t.name)r.name=t.name;if(t.color){i.css("background",t.color)}else{if(e%2&&p.striped)r.className="erow"}if(t[p.idProperty]){r.id="row"+t[p.idProperty];i.attr("data-id",t[p.idProperty])}$("thead tr:first th",g.hDiv).each(function(){var e=document.createElement("td");var n=$(this).attr("axis").substr(3);e.align=this.align;if(typeof t.cell=="undefined"){e.innerHTML=t[p.colModel[n].name]}else{var i="";if(typeof t.cell[n]!="undefined"){i=t.cell[n]!==null?t.cell[n]:""}else{i=t.cell[p.colModel[n].name]}e.innerHTML=p.__mw.datacol(p,$(this).attr("abbr"),i)}var s=e.innerHTML.indexOf("<BGCOLOR=");if(s>0){$(e).css("background",text.substr(s+7,7))}$(e).attr("abbr",$(this).attr("abbr"));$(r).append(e);e=null});if($("thead",this.gDiv).length<1){for(idx=0;idx<t.cell.length;idx++){var s=document.createElement("td");if(typeof t.cell[idx]!="undefined"){s.innerHTML=t.cell[idx]!=null?t.cell[idx]:""}else{s.innerHTML=t.cell[p.colModel[idx].name]}$(r).append(s);s=null}}$(n).append(r);r=null})}else if(p.dataType=="xml"){var r=1;$("rows row",e).each(function(){r++;var e=document.createElement("tr");if($(this).attr("name"))e.name=$(this).attr("name");if($(this).attr("color")){$(e).css("background",$(this).attr("id"))}else{if(r%2&&p.striped)e.className="erow"}var t=$(this).attr("id");if(t){e.id="row"+t}t=null;var s=this;$("thead tr:first th",g.hDiv).each(function(){var t=document.createElement("td");var n=$(this).attr("axis").substr(3);t.align=this.align;var r=$("cell:eq("+n+")",s).text();var i=r.indexOf("<BGCOLOR=");if(i>0){$(t).css("background",r.substr(i+7,7))}t.innerHTML=p.__mw.datacol(p,$(this).attr("abbr"),r);$(t).attr("abbr",$(this).attr("abbr"));$(e).append(t);t=null});if($("thead",this.gDiv).length<1){$("cell",this).each(function(){var t=document.createElement("td");t.innerHTML=$(this).text();$(e).append(t);t=null})}$(n).append(e);e=null;s=null})}$("tr",t).unbind();$(t).empty();$(t).append(n);this.addCellProp();this.addRowProp();this.rePosDrag();n=null;e=null;r=null;if(p.onSuccess){p.onSuccess(this)}if(p.hideOnSubmit){$(g.block).remove()}this.hDiv.scrollLeft=this.bDiv.scrollLeft;if(browser.opera){$(t).css("visibility","visible")}},changeSort:function(e){if(this.loading){return true}$(g.nDiv).hide();$(g.nBtn).hide();if(p.sortname==$(e).attr("abbr")){if(p.sortorder=="asc"){p.sortorder="desc"}else{p.sortorder="asc"}}$(e).addClass("sorted").siblings().removeClass("sorted");$(".sdesc",this.hDiv).removeClass("sdesc");$(".sasc",this.hDiv).removeClass("sasc");$("div",e).addClass("s"+p.sortorder);p.sortname=$(e).attr("abbr");if(p.onChangeSort){p.onChangeSort(p.sortname,p.sortorder)}else{this.populate()}},buildpager:function(){$(".pcontrol input",this.pDiv).val(p.page);$(".pcontrol span",this.pDiv).html(p.pages);var e=(p.page-1)*p.rp+1;var t=e+p.rp-1;if(p.total<t){t=p.total}var n=p.pagestat;n=n.replace(/{from}/,e);n=n.replace(/{to}/,t);n=n.replace(/{total}/,p.total);$(".pPageStat",this.pDiv).html(n)},populate:function(){if(this.loading){return true}if(p.onSubmit){var e=p.onSubmit();if(!e){return false}}this.loading=true;if(!p.url){return false}$(".pPageStat",this.pDiv).html(p.procmsg);$(".pReload",this.pDiv).addClass("loading");$(g.block).css({top:g.bDiv.offsetTop});if(p.hideOnSubmit){$(this.gDiv).prepend(g.block)}if(browser.opera){$(t).css("visibility","hidden")}if(!p.newp){p.newp=1}if(p.page>p.pages){p.page=p.pages}var n=[{name:"page",value:p.newp},{name:"rp",value:p.rp},{name:"sortname",value:p.sortname},{name:"sortorder",value:p.sortorder},{name:"query",value:p.query},{name:"qtype",value:p.qtype}];if(p.params.length){for(var r=0;r<p.params.length;r++){n[n.length]=p.params[r]}}$.ajax({type:p.method,url:p.url,data:n,dataType:p.dataType,success:function(e){g.addData(e)},error:function(e,t,n){try{if(p.onError)p.onError(e,t,n)}catch(r){}}})},doSearch:function(){p.query=$("input[name=q]",g.sDiv).val();p.qtype=$("select[name=qtype]",g.sDiv).val();p.newp=1;this.populate()},changePage:function(e){if(this.loading){return true}switch(e){case"first":p.newp=1;break;case"prev":if(p.page>1){p.newp=parseInt(p.page,10)-1}break;case"next":if(p.page<p.pages){p.newp=parseInt(p.page,10)+1}break;case"last":p.newp=p.pages;break;case"input":var t=parseInt($(".pcontrol input",this.pDiv).val(),10);if(isNaN(t)){t=1}if(t<1){t=1}else if(t>p.pages){t=p.pages}$(".pcontrol input",this.pDiv).val(t);p.newp=t;break}if(p.newp==p.page){return false}if(p.onChangePage){p.onChangePage(p.newp)}else{this.populate()}},addCellProp:function(){$("tbody tr td",g.bDiv).each(function(){var e=document.createElement("div");var t=$("td",$(this).parent()).index(this);var n=$("th:eq("+t+")",g.hDiv).get(0);if(n!=null){if(p.sortname==$(n).attr("abbr")&&p.sortname){this.className="sorted"}$(e).css({textAlign:n.align,width:$("div:first",n)[0].style.width});if(n.hidden){$(this).css("display","none")}}if(p.nowrap==false){$(e).css("white-space","normal")}if(this.innerHTML==""){this.innerHTML=" "}e.innerHTML=this.innerHTML;var r=$(this).parent()[0];var i=false;if(r.id){i=r.id.substr(3)}if(n!=null){if(n.process)n.process(e,i)}$(this).empty().append(e).removeAttr("width");g.addTitleToCell(e)})},getCellDim:function(e){var t=parseInt($(e).height(),10);var n=parseInt($(e).parent().height(),10);var r=parseInt(e.style.width,10);var i=parseInt($(e).parent().width(),10);var s=e.offsetParent.offsetTop;var o=e.offsetParent.offsetLeft;var u=parseInt($(e).css("paddingLeft"),10);var a=parseInt($(e).css("paddingTop"),10);return{ht:t,wt:r,top:s,left:o,pdl:u,pdt:a,pht:n,pwt:i}},addRowProp:function(){$("tbody tr",g.bDiv).on("click",function(e){var t=e.target||e.srcElement;if(t.href||t.type)return true;if(e.ctrlKey||e.metaKey){return}$(this).toggleClass("trSelected");if(p.singleSelect&&!g.multisel){$(this).siblings().removeClass("trSelected")}}).on("mousedown",function(e){if(e.shiftKey){$(this).toggleClass("trSelected");g.multisel=true;this.focus();$(g.gDiv).noSelect()}if(e.ctrlKey||e.metaKey){$(this).toggleClass("trSelected");g.multisel=true;this.focus()}}).on("mouseup",function(e){if(g.multisel&&!(e.ctrlKey||e.metaKey)){g.multisel=false;$(g.gDiv).noSelect(false)}}).on("dblclick",function(){$(this).addClass("trSelected");if(p.onDoubleClick){p.onDoubleClick(this,g,p)}}).hover(function(e){if(g.multisel&&e.shiftKey){$(this).toggleClass("trSelected")}},function(){});if(browser.msie&&browser.version<7){$(this).hover(function(){$(this).addClass("trOver")},function(){$(this).removeClass("trOver")})}},combo_flag:true,combo_resetIndex:function(e){if(this.combo_flag){e.selectedIndex=0}this.combo_flag=true},combo_doSelectAction:function(selObj){eval(selObj.options[selObj.selectedIndex].value);selObj.selectedIndex=0;this.combo_flag=false},addTitleToCell:function(e){if(p.addTitleToCell){var t=$("<span />").css("display","none"),n=e instanceof jQuery?e:$(e),r=n.outerWidth(),i=0;$("body").children(":first").before(t);t.html(n.html());t.css("font-size",""+n.css("font-size"));t.css("padding-left",""+n.css("padding-left"));i=t.innerWidth();t.remove();if(i>r){n.attr("title",n.text())}else{n.removeAttr("title")}}},autoResizeColumn:function(e){if(!p.dblClickResize){return}var t=$("div",this.cDrag).index(e),n=$("th:visible div:eq("+t+")",this.hDiv),r=parseInt(e.style.left,10),i=n.width(),s=0,o=0,u=$("<span />");$("body").children(":first").before(u);u.html(n.html());u.css("font-size",""+n.css("font-size"));u.css("padding-left",""+n.css("padding-left"));u.css("padding-right",""+n.css("padding-right"));s=u.width();$("tr",this.bDiv).each(function(){var e=$("td:visible div:eq("+t+")",this),n=0;u.html(e.html());u.css("font-size",""+e.css("font-size"));u.css("padding-left",""+e.css("padding-left"));u.css("padding-right",""+e.css("padding-right"));n=u.width();s=n>s?n:s});u.remove();s=p.minWidth>s?p.minWidth:s;o=r+(s-i);$("div:eq("+t+")",this.cDrag).css("left",o);this.colresize={nw:s,n:t};g.dragEnd()},pager:0};g=p.getGridClass(g);if(p.colModel){thead=document.createElement("thead");var tr=document.createElement("tr");for(var i=0;i<p.colModel.length;i++){var cm=p.colModel[i];var th=document.createElement("th");$(th).attr("axis","col"+i);if(cm){if($.cookies){var cookie_width="flexiwidths/"+cm.name;if($.cookie(cookie_width)!=undefined){cm.width=$.cookie(cookie_width)}}if(cm.display!=undefined){th.innerHTML=cm.display}if(cm.name&&cm.sortable){$(th).attr("abbr",cm.name)}if(cm.align){th.align=cm.align}if(cm.width){$(th).attr("width",cm.width)}if($(cm).attr("hide")){th.hidden=true}if(cm.process){th.process=cm.process}}else{th.innerHTML="";$(th).attr("width",30)}$(tr).append(th)}$(thead).append(tr);$(t).prepend(thead)}g.gDiv=document.createElement("div");g.mDiv=document.createElement("div");g.hDiv=document.createElement("div");g.bDiv=document.createElement("div");g.vDiv=document.createElement("div");g.rDiv=document.createElement("div");g.cDrag=document.createElement("div");g.block=document.createElement("div");g.nDiv=document.createElement("div");g.nBtn=document.createElement("div");g.iDiv=document.createElement("div");g.tDiv=document.createElement("div");g.sDiv=document.createElement("div");g.pDiv=document.createElement("div");if(p.colResize===false){$(g.cDrag).css("display","none")}if(!p.usepager){g.pDiv.style.display="none"}g.hTable=document.createElement("table");g.gDiv.className="flexigrid";if(p.width!="auto"){g.gDiv.style.width=p.width+(isNaN(p.width)?"":"px")}if(browser.msie){$(g.gDiv).addClass("ie")}if(p.novstripe){$(g.gDiv).addClass("novstripe")}$(t).before(g.gDiv);$(g.gDiv).append(t);if(p.buttons){g.tDiv.className="tDiv";var tDiv2=document.createElement("div");tDiv2.className="tDiv2";for(var i=0;i<p.buttons.length;i++){var btn=p.buttons[i];if(!btn.separator){var btnDiv=document.createElement("div");btnDiv.className="fbutton";btnDiv.innerHTML="<div><span>"+(btn.hidename?" ":btn.name)+"</span></div>";if(btn.bclass)$("span",btnDiv).addClass(btn.bclass).css({paddingLeft:20});if(btn.bimage)$("span",btnDiv).css("background","url("+btn.bimage+") no-repeat center left");$("span",btnDiv).css("paddingLeft",20);if(btn.tooltip)$("span",btnDiv)[0].title=btn.tooltip;btnDiv.onpress=btn.onpress;btnDiv.name=btn.name;if(btn.id){btnDiv.id=btn.id}if(btn.onpress){$(btnDiv).click(function(){this.onpress(this.id||this.name,g.gDiv)})}$(tDiv2).append(btnDiv);if(browser.msie&&browser.version<7){$(btnDiv).hover(function(){$(this).addClass("fbOver")},function(){$(this).removeClass("fbOver")})}}else{$(tDiv2).append("<div class='btnseparator'></div>")}}$(g.tDiv).append(tDiv2);$(g.tDiv).append("<div style='clear:both'></div>");$(g.gDiv).prepend(g.tDiv)}g.hDiv.className="hDiv";if(p.combobuttons&&$(g.tDiv2)){var btnDiv=document.createElement("div");btnDiv.className="fbutton";var tSelect=document.createElement("select");$(tSelect).change(function(){g.combo_doSelectAction(tSelect)});$(tSelect).click(function(){g.combo_resetIndex(tSelect)});tSelect.className="cselect";$(btnDiv).append(tSelect);for(i=0;i<p.combobuttons.length;i++){var btn=p.combobuttons[i];if(!btn.separator){var btnOpt=document.createElement("option");btnOpt.innerHTML=btn.name;if(btn.bclass)$(btnOpt).addClass(btn.bclass).css({paddingLeft:20});if(btn.bimage)$(btnOpt).css("background","url("+btn.bimage+") no-repeat center left");$(btnOpt).css("paddingLeft",20);if(btn.tooltip)$(btnOpt)[0].title=btn.tooltip;if(btn.onpress){btnOpt.value=btn.onpress}$(tSelect).append(btnOpt)}}$(".tDiv2").append(btnDiv)}$(t).before(g.hDiv);g.hTable.cellPadding=0;g.hTable.cellSpacing=0;$(g.hDiv).append('<div class="hDivBox"></div>');$("div",g.hDiv).append(g.hTable);var thead=$("thead:first",t).get(0);if(thead)$(g.hTable).append(thead);thead=null;if(!p.colmodel)var ci=0;$("thead tr:first th",g.hDiv).each(function(){var e=document.createElement("div");if($(this).attr("abbr")){$(this).click(function(e){if(!$(this).hasClass("thOver"))return false;var t=e.target||e.srcElement;if(t.href||t.type)return true;g.changeSort(this)});if($(this).attr("abbr")==p.sortname){this.className="sorted";e.className="s"+p.sortorder}}if(this.hidden){$(this).hide()}if(!p.colmodel){$(this).attr("axis","col"+ci++)}if(this.width==""){this.width=100}$(e).css({textAlign:this.align,width:this.width+"px"});e.innerHTML=this.innerHTML;$(this).empty().append(e).removeAttr("width").mousedown(function(e){g.dragStart("colMove",e,this)}).hover(function(){if(!g.colresize&&!$(this).hasClass("thMove")&&!g.colCopy){$(this).addClass("thOver")}if($(this).attr("abbr")!=p.sortname&&!g.colCopy&&!g.colresize&&$(this).attr("abbr")){$("div",this).addClass("s"+p.sortorder)}else if($(this).attr("abbr")==p.sortname&&!g.colCopy&&!g.colresize&&$(this).attr("abbr")){var e=p.sortorder=="asc"?"desc":"asc";$("div",this).removeClass("s"+p.sortorder).addClass("s"+e)}if(g.colCopy){var t=$("th",g.hDiv).index(this);if(t==g.dcoln){return false}if(t<g.dcoln){$(this).append(g.cdropleft)}else{$(this).append(g.cdropright)}g.dcolt=t}else if(!g.colresize){var n=$("th:visible",g.hDiv).index(this);var r=parseInt($("div:eq("+n+")",g.cDrag).css("left"),10);var i=jQuery(g.nBtn).outerWidth();var s=r-i+Math.floor(p.cgwidth/2);$(g.nDiv).hide();$(g.nBtn).hide();$(g.nBtn).css({left:s,top:g.hDiv.offsetTop}).show();var o=parseInt($(g.nDiv).width(),10);$(g.nDiv).css({top:g.bDiv.offsetTop});if(s+o>$(g.gDiv).width()){$(g.nDiv).css("left",r-o+1)}else{$(g.nDiv).css("left",s)}if($(this).hasClass("sorted")){$(g.nBtn).addClass("srtd")}else{$(g.nBtn).removeClass("srtd")}}},function(){$(this).removeClass("thOver");if($(this).attr("abbr")!=p.sortname){$("div",this).removeClass("s"+p.sortorder)}else if($(this).attr("abbr")==p.sortname){var e=p.sortorder=="asc"?"desc":"asc";$("div",this).addClass("s"+p.sortorder).removeClass("s"+e)}if(g.colCopy){$(g.cdropleft).remove();$(g.cdropright).remove();g.dcolt=null}})});g.bDiv.className="bDiv";$(t).before(g.bDiv);$(g.bDiv).css({height:p.height=="auto"?"auto":p.height+"px"}).scroll(function(e){g.scroll()}).append(t);if(p.height=="auto"){$("table",g.bDiv).addClass("autoht")}g.addCellProp();g.addRowProp();if(p.colResize===true){var cdcol=$("thead tr:first th:first",g.hDiv).get(0);if(cdcol!==null){g.cDrag.className="cDrag";g.cdpad=0;g.cdpad+=isNaN(parseInt($("div",cdcol).css("borderLeftWidth"),10))?0:parseInt($("div",cdcol).css("borderLeftWidth"),10);g.cdpad+=isNaN(parseInt($("div",cdcol).css("borderRightWidth"),10))?0:parseInt($("div",cdcol).css("borderRightWidth"),10);g.cdpad+=isNaN(parseInt($("div",cdcol).css("paddingLeft"),10))?0:parseInt($("div",cdcol).css("paddingLeft"),10);g.cdpad+=isNaN(parseInt($("div",cdcol).css("paddingRight"),10))?0:parseInt($("div",cdcol).css("paddingRight"),10);g.cdpad+=isNaN(parseInt($(cdcol).css("borderLeftWidth"),10))?0:parseInt($(cdcol).css("borderLeftWidth"),10);g.cdpad+=isNaN(parseInt($(cdcol).css("borderRightWidth"),10))?0:parseInt($(cdcol).css("borderRightWidth"),10);g.cdpad+=isNaN(parseInt($(cdcol).css("paddingLeft"),10))?0:parseInt($(cdcol).css("paddingLeft"),10);g.cdpad+=isNaN(parseInt($(cdcol).css("paddingRight"),10))?0:parseInt($(cdcol).css("paddingRight"),10);$(g.bDiv).before(g.cDrag);var cdheight=$(g.bDiv).height();var hdheight=$(g.hDiv).height();$(g.cDrag).css({top:-hdheight+"px"});$("thead tr:first th",g.hDiv).each(function(){var e=document.createElement("div");$(g.cDrag).append(e);if(!p.cgwidth){p.cgwidth=$(e).width()}$(e).css({height:cdheight+hdheight}).mousedown(function(e){g.dragStart("colresize",e,this)}).dblclick(function(e){g.autoResizeColumn(this)});if(browser.msie&&browser.version<7){g.fixHeight($(g.gDiv).height());$(e).hover(function(){g.fixHeight();$(this).addClass("dragging")},function(){if(!g.colresize){$(this).removeClass("dragging")}})}})}}if(p.striped){$("tbody tr:odd",g.bDiv).addClass("erow")}if(p.resizable&&p.height!="auto"){g.vDiv.className="vGrip";$(g.vDiv).mousedown(function(e){g.dragStart("vresize",e)}).html("<span></span>");$(g.bDiv).after(g.vDiv)}if(p.resizable&&p.width!="auto"&&!p.nohresize){g.rDiv.className="hGrip";$(g.rDiv).mousedown(function(e){g.dragStart("vresize",e,true)}).html("<span></span>").css("height",$(g.gDiv).height());if(browser.msie&&browser.version<7){$(g.rDiv).hover(function(){$(this).addClass("hgOver")},function(){$(this).removeClass("hgOver")})}$(g.gDiv).append(g.rDiv)}if(p.usepager){g.pDiv.className="pDiv";g.pDiv.innerHTML='<div class="pDiv2"></div>';$(g.bDiv).after(g.pDiv);var html=' <div class="pGroup"> <div class="pFirst pButton"><span></span></div><div class="pPrev pButton"><span></span></div> </div> <div class="btnseparator"></div> <div class="pGroup"><span class="pcontrol">'+p.pagetext+' <input type="text" size="4" value="1" /> '+p.outof+' <span> 1 </span></span></div> <div class="btnseparator"></div> <div class="pGroup"> <div class="pNext pButton"><span></span></div><div class="pLast pButton"><span></span></div> </div> <div class="btnseparator"></div> <div class="pGroup"> <div class="pReload pButton"><span></span></div> </div> <div class="btnseparator"></div> <div class="pGroup"><span class="pPageStat"></span></div>';$("div",g.pDiv).html(html);$(".pReload",g.pDiv).click(function(){g.populate()});$(".pFirst",g.pDiv).click(function(){g.changePage("first")});$(".pPrev",g.pDiv).click(function(){g.changePage("prev")});$(".pNext",g.pDiv).click(function(){g.changePage("next")});$(".pLast",g.pDiv).click(function(){g.changePage("last")});$(".pcontrol input",g.pDiv).keydown(function(e){if(e.keyCode==13){g.changePage("input")}});if(browser.msie&&browser.version<7)$(".pButton",g.pDiv).hover(function(){$(this).addClass("pBtnOver")},function(){$(this).removeClass("pBtnOver")});if(p.useRp){var opt="",sel="";for(var nx=0;nx<p.rpOptions.length;nx++){if(p.rp==p.rpOptions[nx])sel='selected="selected"';else sel="";opt+="<option value='"+p.rpOptions[nx]+"' "+sel+" >"+p.rpOptions[nx]+"  </option>"}$(".pDiv2",g.pDiv).prepend("<div class='pGroup'><select name='rp'>"+opt+"</select></div> <div class='btnseparator'></div>");$("select",g.pDiv).change(function(){if(p.onRpChange){p.onRpChange(+this.value)}else{p.newp=1;p.rp=+this.value;g.populate()}})}if(p.searchitems){$(".pDiv2",g.pDiv).prepend("<div class='pGroup'> <div class='pSearch pButton'><span></span></div> </div>  <div class='btnseparator'></div>");$(".pSearch",g.pDiv).click(function(){$(g.sDiv).slideToggle("fast",function(){$(".sDiv:visible input:first",g.gDiv).trigger("focus")})});g.sDiv.className="sDiv";var sitems=p.searchitems;var sopt="",sel="";for(var s=0;s<sitems.length;s++){if(p.qtype===""&&sitems[s].isdefault===true){p.qtype=sitems[s].name;sel='selected="selected"'}else{sel=""}sopt+="<option value='"+sitems[s].name+"' "+sel+" >"+sitems[s].display+"  </option>"}if(p.qtype===""){p.qtype=sitems[0].name}$(g.sDiv).append("<div class='sDiv2'>"+p.findtext+" <input type='text' value='"+p.query+"' size='30' name='q' class='qsbox' /> "+" <select name='qtype'>"+sopt+"</select></div>");$("input[name=q]",g.sDiv).keydown(function(e){if(e.keyCode==13){g.doSearch()}});$("select[name=qtype]",g.sDiv).keydown(function(e){if(e.keyCode==13){g.doSearch()}});$("input[value=Clear]",g.sDiv).click(function(){$("input[name=q]",g.sDiv).val("");p.query="";g.doSearch()});$(g.bDiv).after(g.sDiv)}}$(g.pDiv,g.sDiv).append("<div style='clear:both'></div>");if(p.title){g.mDiv.className="mDiv";g.mDiv.innerHTML='<div class="ftitle">'+p.title+"</div>";$(g.gDiv).prepend(g.mDiv);if(p.showTableToggleBtn){$(g.mDiv).append('<div class="ptogtitle" title="Minimize/Maximize Table"><span></span></div>');$("div.ptogtitle",g.mDiv).click(function(){$(g.gDiv).toggleClass("hideBody");$(this).toggleClass("vsble")})}}g.cdropleft=document.createElement("span");g.cdropleft.className="cdropleft";g.cdropright=document.createElement("span");g.cdropright.className="cdropright";g.block.className="gBlock";var gh=$(g.bDiv).height();var gtop=g.bDiv.offsetTop;$(g.block).css({width:g.bDiv.style.width,height:gh,background:"white",position:"relative",marginBottom:gh*-1,zIndex:1,top:gtop,left:"0px"});$(g.block).fadeTo(0,p.blockOpacity);if($("th",g.hDiv).length){g.nDiv.className="nDiv";g.nDiv.innerHTML="<table cellpadding='0' cellspacing='0'><tbody></tbody></table>";$(g.nDiv).css({marginBottom:gh*-1,display:"none",top:gtop}).noSelect();var cn=0;$("th div",g.hDiv).each(function(){var e=$("th[axis='col"+cn+"']",g.hDiv)[0];var t='checked="checked"';if(e.style.display=="none"){t=""}$("tbody",g.nDiv).append('<tr><td class="ndcol1"><input type="checkbox" '+t+' class="togCol" value="'+cn+'" /></td><td class="ndcol2">'+this.innerHTML+"</td></tr>");cn++});if(browser.msie&&browser.version<7)$("tr",g.nDiv).hover(function(){$(this).addClass("ndcolover")},function(){$(this).removeClass("ndcolover")});$("td.ndcol2",g.nDiv).click(function(){if($("input:checked",g.nDiv).length<=p.minColToggle&&$(this).prev().find("input")[0].checked)return false;return g.toggleCol($(this).prev().find("input").val())});$("input.togCol",g.nDiv).click(function(){if($("input:checked",g.nDiv).length<p.minColToggle&&this.checked===false)return false;$(this).parent().next().trigger("click")});$(g.gDiv).prepend(g.nDiv);$(g.nBtn).addClass("nBtn").html("<div></div>").attr("title","Hide/Show Columns").click(function(){$(g.nDiv).toggle();return true});if(p.showToggleBtn){$(g.gDiv).prepend(g.nBtn)}}$(g.iDiv).addClass("iDiv").css({display:"none"});$(g.bDiv).append(g.iDiv);$(g.bDiv).hover(function(){$(g.nDiv).hide();$(g.nBtn).hide()},function(){if(g.multisel){g.multisel=false}});$(g.gDiv).hover(function(){},function(){$(g.nDiv).hide();$(g.nBtn).hide()});$(document).mousemove(function(e){g.dragMove(e)}).mouseup(function(e){g.dragEnd()}).hover(function(){},function(){g.dragEnd()});if(browser.msie&&browser.version<7){$(".hDiv,.bDiv,.mDiv,.pDiv,.vGrip,.tDiv, .sDiv",g.gDiv).css({width:"100%"});$(g.gDiv).addClass("ie6");if(p.width!="auto"){$(g.gDiv).addClass("ie6fullwidthbug")}}g.rePosDrag();g.fixHeight();t.p=p;t.grid=g;if(p.url&&p.autoload){g.populate()}return t};var docloaded=false;$(document).ready(function(){docloaded=true});$.fn.flexigrid=function(e){return this.each(function(){if(!docloaded){$(this).hide();var t=this;$(document).ready(function(){$.addFlex(t,e)})}else{$.addFlex(this,e)}})};$.fn.flexReload=function(e){return this.each(function(){if(this.grid&&this.p.url)this.grid.populate()})};$.fn.flexOptions=function(e){return this.each(function(){if(this.grid)$.extend(this.p,e)})};$.fn.flexToggleCol=function(e,t){return this.each(function(){if(this.grid)this.grid.toggleCol(e,t)})};$.fn.flexAddData=function(e){return this.each(function(){if(this.grid)this.grid.addData(e)})};$.fn.noSelect=function(e){var t=e===null?true:e;if(t){return this.each(function(){if(browser.msie||browser.safari)$(this).bind("selectstart",function(){return false});else if(browser.mozilla){$(this).css("MozUserSelect","none");$("body").trigger("focus")}else if(browser.opera)$(this).bind("mousedown",function(){return false});else $(this).attr("unselectable","on")})}else{return this.each(function(){if(browser.msie||browser.safari)$(this).unbind("selectstart");else if(browser.mozilla)$(this).css("MozUserSelect","inherit");else if(browser.opera)$(this).unbind("mousedown");else $(this).removeAttr("unselectable","on")})}};$.fn.flexSearch=function(e){return this.each(function(){if(this.grid&&this.p.searchitems)this.grid.doSearch()})};$.fn.selectedRows=function(e){var t=[];var n=[];var r=$(this.selector+" .trSelected");$(r).each(function(e,r){n=[];var i=$(r).data("id");$.each(r.cells,function(e,t){var r=t.abbr;var s=t.firstChild.innerHTML;if(s==" ")s="";var o=t.cellIndex;n.push({Column:r,Value:s,CellIndex:o,RowIdentifier:i})});t.push(n)});return t}})(jQuery)
diff --git a/src/main/resources/META-INF/resources/designer/lib/jquery-ui-1.11.3.custom/external/jquery/jquery.js b/src/main/resources/META-INF/resources/designer/lib/jquery-ui-1.11.3.custom/external/jquery/jquery.js
deleted file mode 100644 (file)
index c5c6482..0000000
+++ /dev/null
@@ -1,9789 +0,0 @@
-/*!
- * jQuery JavaScript Library v1.10.2
- * http://jquery.com/
- *
- * Includes Sizzle.js
- * http://sizzlejs.com/
- *
- * Copyright 2005, 2013 jQuery Foundation, Inc. and other contributors
- * Released under the MIT license
- * http://jquery.org/license
- *
- * Date: 2013-07-03T13:48Z
- */
-(function( window, undefined ) {
-
-// Can't do this because several apps including ASP.NET trace
-// the stack via arguments.caller.callee and Firefox dies if
-// you try to trace through "use strict" call chains. (#13335)
-// Support: Firefox 18+
-//"use strict";
-var
-       // The deferred used on DOM ready
-       readyList,
-
-       // A central reference to the root jQuery(document)
-       rootjQuery,
-
-       // Support: IE<10
-       // For `typeof xmlNode.method` instead of `xmlNode.method !== undefined`
-       core_strundefined = typeof undefined,
-
-       // Use the correct document accordingly with window argument (sandbox)
-       location = window.location,
-       document = window.document,
-       docElem = document.documentElement,
-
-       // Map over jQuery in case of overwrite
-       _jQuery = window.jQuery,
-
-       // Map over the $ in case of overwrite
-       _$ = window.$,
-
-       // [[Class]] -> type pairs
-       class2type = {},
-
-       // List of deleted data cache ids, so we can reuse them
-       core_deletedIds = [],
-
-       core_version = "1.10.2",
-
-       // Save a reference to some core methods
-       core_concat = core_deletedIds.concat,
-       core_push = core_deletedIds.push,
-       core_slice = core_deletedIds.slice,
-       core_indexOf = core_deletedIds.indexOf,
-       core_toString = class2type.toString,
-       core_hasOwn = class2type.hasOwnProperty,
-       core_trim = core_version.trim,
-
-       // Define a local copy of jQuery
-       jQuery = function( selector, context ) {
-               // The jQuery object is actually just the init constructor 'enhanced'
-               return new jQuery.fn.init( selector, context, rootjQuery );
-       },
-
-       // Used for matching numbers
-       core_pnum = /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,
-
-       // Used for splitting on whitespace
-       core_rnotwhite = /\S+/g,
-
-       // Make sure we trim BOM and NBSP (here's looking at you, Safari 5.0 and IE)
-       rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,
-
-       // A simple way to check for HTML strings
-       // Prioritize #id over <tag> to avoid XSS via location.hash (#9521)
-       // Strict HTML recognition (#11290: must start with <)
-       rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,
-
-       // Match a standalone tag
-       rsingleTag = /^<(\w+)\s*\/?>(?:<\/\1>|)$/,
-
-       // JSON RegExp
-       rvalidchars = /^[\],:{}\s]*$/,
-       rvalidbraces = /(?:^|:|,)(?:\s*\[)+/g,
-       rvalidescape = /\\(?:["\\\/bfnrt]|u[\da-fA-F]{4})/g,
-       rvalidtokens = /"[^"\\\r\n]*"|true|false|null|-?(?:\d+\.|)\d+(?:[eE][+-]?\d+|)/g,
-
-       // Matches dashed string for camelizing
-       rmsPrefix = /^-ms-/,
-       rdashAlpha = /-([\da-z])/gi,
-
-       // Used by jQuery.camelCase as callback to replace()
-       fcamelCase = function( all, letter ) {
-               return letter.toUpperCase();
-       },
-
-       // The ready event handler
-       completed = function( event ) {
-
-               // readyState === "complete" is good enough for us to call the dom ready in oldIE
-               if ( document.addEventListener || event.type === "load" || document.readyState === "complete" ) {
-                       detach();
-                       jQuery.ready();
-               }
-       },
-       // Clean-up method for dom ready events
-       detach = function() {
-               if ( document.addEventListener ) {
-                       document.removeEventListener( "DOMContentLoaded", completed, false );
-                       window.removeEventListener( "load", completed, false );
-
-               } else {
-                       document.detachEvent( "onreadystatechange", completed );
-                       window.detachEvent( "onload", completed );
-               }
-       };
-
-jQuery.fn = jQuery.prototype = {
-       // The current version of jQuery being used
-       jquery: core_version,
-
-       constructor: jQuery,
-       init: function( selector, context, rootjQuery ) {
-               var match, elem;
-
-               // HANDLE: $(""), $(null), $(undefined), $(false)
-               if ( !selector ) {
-                       return this;
-               }
-
-               // Handle HTML strings
-               if ( typeof selector === "string" ) {
-                       if ( selector.charAt(0) === "<" && selector.charAt( selector.length - 1 ) === ">" && selector.length >= 3 ) {
-                               // Assume that strings that start and end with <> are HTML and skip the regex check
-                               match = [ null, selector, null ];
-
-                       } else {
-                               match = rquickExpr.exec( selector );
-                       }
-
-                       // Match html or make sure no context is specified for #id
-                       if ( match && (match[1] || !context) ) {
-
-                               // HANDLE: $(html) -> $(array)
-                               if ( match[1] ) {
-                                       context = context instanceof jQuery ? context[0] : context;
-
-                                       // scripts is true for back-compat
-                                       jQuery.merge( this, jQuery.parseHTML(
-                                               match[1],
-                                               context && context.nodeType ? context.ownerDocument || context : document,
-                                               true
-                                       ) );
-
-                                       // HANDLE: $(html, props)
-                                       if ( rsingleTag.test( match[1] ) && jQuery.isPlainObject( context ) ) {
-                                               for ( match in context ) {
-                                                       // Properties of context are called as methods if possible
-                                                       if ( jQuery.isFunction( this[ match ] ) ) {
-                                                               this[ match ]( context[ match ] );
-
-                                                       // ...and otherwise set as attributes
-                                                       } else {
-                                                               this.attr( match, context[ match ] );
-                                                       }
-                                               }
-                                       }
-
-                                       return this;
-
-                               // HANDLE: $(#id)
-                               } else {
-                                       elem = document.getElementById( match[2] );
-
-                                       // Check parentNode to catch when Blackberry 4.6 returns
-                                       // nodes that are no longer in the document #6963
-                                       if ( elem && elem.parentNode ) {
-                                               // Handle the case where IE and Opera return items
-                                               // by name instead of ID
-                                               if ( elem.id !== match[2] ) {
-                                                       return rootjQuery.find( selector );
-                                               }
-
-                                               // Otherwise, we inject the element directly into the jQuery object
-                                               this.length = 1;
-                                               this[0] = elem;
-                                       }
-
-                                       this.context = document;
-                                       this.selector = selector;
-                                       return this;
-                               }
-
-                       // HANDLE: $(expr, $(...))
-                       } else if ( !context || context.jquery ) {
-                               return ( context || rootjQuery ).find( selector );
-
-                       // HANDLE: $(expr, context)
-                       // (which is just equivalent to: $(context).find(expr)
-                       } else {
-                               return this.constructor( context ).find( selector );
-                       }
-
-               // HANDLE: $(DOMElement)
-               } else if ( selector.nodeType ) {
-                       this.context = this[0] = selector;
-                       this.length = 1;
-                       return this;
-
-               // HANDLE: $(function)
-               // Shortcut for document ready
-               } else if ( jQuery.isFunction( selector ) ) {
-                       return rootjQuery.ready( selector );
-               }
-
-               if ( selector.selector !== undefined ) {
-                       this.selector = selector.selector;
-                       this.context = selector.context;
-               }
-
-               return jQuery.makeArray( selector, this );
-       },
-
-       // Start with an empty selector
-       selector: "",
-
-       // The default length of a jQuery object is 0
-       length: 0,
-
-       toArray: function() {
-               return core_slice.call( this );
-       },
-
-       // Get the Nth element in the matched element set OR
-       // Get the whole matched element set as a clean array
-       get: function( num ) {
-               return num == null ?
-
-                       // Return a 'clean' array
-                       this.toArray() :
-
-                       // Return just the object
-                       ( num < 0 ? this[ this.length + num ] : this[ num ] );
-       },
-
-       // Take an array of elements and push it onto the stack
-       // (returning the new matched element set)
-       pushStack: function( elems ) {
-
-               // Build a new jQuery matched element set
-               var ret = jQuery.merge( this.constructor(), elems );
-
-               // Add the old object onto the stack (as a reference)
-               ret.prevObject = this;
-               ret.context = this.context;
-
-               // Return the newly-formed element set
-               return ret;
-       },
-
-       // Execute a callback for every element in the matched set.
-       // (You can seed the arguments with an array of args, but this is
-       // only used internally.)
-       each: function( callback, args ) {
-               return jQuery.each( this, callback, args );
-       },
-
-       ready: function( fn ) {
-               // Add the callback
-               jQuery.ready.promise().done( fn );
-
-               return this;
-       },
-
-       slice: function() {
-               return this.pushStack( core_slice.apply( this, arguments ) );
-       },
-
-       first: function() {
-               return this.eq( 0 );
-       },
-
-       last: function() {
-               return this.eq( -1 );
-       },
-
-       eq: function( i ) {
-               var len = this.length,
-                       j = +i + ( i < 0 ? len : 0 );
-               return this.pushStack( j >= 0 && j < len ? [ this[j] ] : [] );
-       },
-
-       map: function( callback ) {
-               return this.pushStack( jQuery.map(this, function( elem, i ) {
-                       return callback.call( elem, i, elem );
-               }));
-       },
-
-       end: function() {
-               return this.prevObject || this.constructor(null);
-       },
-
-       // For internal use only.
-       // Behaves like an Array's method, not like a jQuery method.
-       push: core_push,
-       sort: [].sort,
-       splice: [].splice
-};
-
-// Give the init function the jQuery prototype for later instantiation
-jQuery.fn.init.prototype = jQuery.fn;
-
-jQuery.extend = jQuery.fn.extend = function() {
-       var src, copyIsArray, copy, name, options, clone,
-               target = arguments[0] || {},
-               i = 1,
-               length = arguments.length,
-               deep = false;
-
-       // Handle a deep copy situation
-       if ( typeof target === "boolean" ) {
-               deep = target;
-               target = arguments[1] || {};
-               // skip the boolean and the target
-               i = 2;
-       }
-
-       // Handle case when target is a string or something (possible in deep copy)
-       if ( typeof target !== "object" && !jQuery.isFunction(target) ) {
-               target = {};
-       }
-
-       // extend jQuery itself if only one argument is passed
-       if ( length === i ) {
-               target = this;
-               --i;
-       }
-
-       for ( ; i < length; i++ ) {
-               // Only deal with non-null/undefined values
-               if ( (options = arguments[ i ]) != null ) {
-                       // Extend the base object
-                       for ( name in options ) {
-                               src = target[ name ];
-                               copy = options[ name ];
-
-                               // Prevent never-ending loop
-                               if ( target === copy ) {
-                                       continue;
-                               }
-
-                               // Recurse if we're merging plain objects or arrays
-                               if ( deep && copy && ( jQuery.isPlainObject(copy) || (copyIsArray = jQuery.isArray(copy)) ) ) {
-                                       if ( copyIsArray ) {
-                                               copyIsArray = false;
-                                               clone = src && jQuery.isArray(src) ? src : [];
-
-                                       } else {
-                                               clone = src && jQuery.isPlainObject(src) ? src : {};
-                                       }
-
-                                       // Never move original objects, clone them
-                                       target[ name ] = jQuery.extend( deep, clone, copy );
-
-                               // Don't bring in undefined values
-                               } else if ( copy !== undefined ) {
-                                       target[ name ] = copy;
-                               }
-                       }
-               }
-       }
-
-       // Return the modified object
-       return target;
-};
-
-jQuery.extend({
-       // Unique for each copy of jQuery on the page
-       // Non-digits removed to match rinlinejQuery
-       expando: "jQuery" + ( core_version + Math.random() ).replace( /\D/g, "" ),
-
-       noConflict: function( deep ) {
-               if ( window.$ === jQuery ) {
-                       window.$ = _$;
-               }
-
-               if ( deep && window.jQuery === jQuery ) {
-                       window.jQuery = _jQuery;
-               }
-
-               return jQuery;
-       },
-
-       // Is the DOM ready to be used? Set to true once it occurs.
-       isReady: false,
-
-       // A counter to track how many items to wait for before
-       // the ready event fires. See #6781
-       readyWait: 1,
-
-       // Hold (or release) the ready event
-       holdReady: function( hold ) {
-               if ( hold ) {
-                       jQuery.readyWait++;
-               } else {
-                       jQuery.ready( true );
-               }
-       },
-
-       // Handle when the DOM is ready
-       ready: function( wait ) {
-
-               // Abort if there are pending holds or we're already ready
-               if ( wait === true ? --jQuery.readyWait : jQuery.isReady ) {
-                       return;
-               }
-
-               // Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443).
-               if ( !document.body ) {
-                       return setTimeout( jQuery.ready );
-               }
-
-               // Remember that the DOM is ready
-               jQuery.isReady = true;
-
-               // If a normal DOM Ready event fired, decrement, and wait if need be
-               if ( wait !== true && --jQuery.readyWait > 0 ) {
-                       return;
-               }
-
-               // If there are functions bound, to execute
-               readyList.resolveWith( document, [ jQuery ] );
-
-               // Trigger any bound ready events
-               if ( jQuery.fn.trigger ) {
-                       jQuery( document ).trigger("ready").off("ready");
-               }
-       },
-
-       // See test/unit/core.js for details concerning isFunction.
-       // Since version 1.3, DOM methods and functions like alert
-       // aren't supported. They return false on IE (#2968).
-       isFunction: function( obj ) {
-               return jQuery.type(obj) === "function";
-       },
-
-       isArray: Array.isArray || function( obj ) {
-               return jQuery.type(obj) === "array";
-       },
-
-       isWindow: function( obj ) {
-               /* jshint eqeqeq: false */
-               return obj != null && obj == obj.window;
-       },
-
-       isNumeric: function( obj ) {
-               return !isNaN( parseFloat(obj) ) && isFinite( obj );
-       },
-
-       type: function( obj ) {
-               if ( obj == null ) {
-                       return String( obj );
-               }
-               return typeof obj === "object" || typeof obj === "function" ?
-                       class2type[ core_toString.call(obj) ] || "object" :
-                       typeof obj;
-       },
-
-       isPlainObject: function( obj ) {
-               var key;
-
-               // Must be an Object.
-               // Because of IE, we also have to check the presence of the constructor property.
-               // Make sure that DOM nodes and window objects don't pass through, as well
-               if ( !obj || jQuery.type(obj) !== "object" || obj.nodeType || jQuery.isWindow( obj ) ) {
-                       return false;
-               }
-
-               try {
-                       // Not own constructor property must be Object
-                       if ( obj.constructor &&
-                               !core_hasOwn.call(obj, "constructor") &&
-                               !core_hasOwn.call(obj.constructor.prototype, "isPrototypeOf") ) {
-                               return false;
-                       }
-               } catch ( e ) {
-                       // IE8,9 Will throw exceptions on certain host objects #9897
-                       return false;
-               }
-
-               // Support: IE<9
-               // Handle iteration over inherited properties before own properties.
-               if ( jQuery.support.ownLast ) {
-                       for ( key in obj ) {
-                               return core_hasOwn.call( obj, key );
-                       }
-               }
-
-               // Own properties are enumerated firstly, so to speed up,
-               // if last one is own, then all properties are own.
-               for ( key in obj ) {}
-
-               return key === undefined || core_hasOwn.call( obj, key );
-       },
-
-       isEmptyObject: function( obj ) {
-               var name;
-               for ( name in obj ) {
-                       return false;
-               }
-               return true;
-       },
-
-       error: function( msg ) {
-               throw new Error( msg );
-       },
-
-       // data: string of html
-       // context (optional): If specified, the fragment will be created in this context, defaults to document
-       // keepScripts (optional): If true, will include scripts passed in the html string
-       parseHTML: function( data, context, keepScripts ) {
-               if ( !data || typeof data !== "string" ) {
-                       return null;
-               }
-               if ( typeof context === "boolean" ) {
-                       keepScripts = context;
-                       context = false;
-               }
-               context = context || document;
-
-               var parsed = rsingleTag.exec( data ),
-                       scripts = !keepScripts && [];
-
-               // Single tag
-               if ( parsed ) {
-                       return [ context.createElement( parsed[1] ) ];
-               }
-
-               parsed = jQuery.buildFragment( [ data ], context, scripts );
-               if ( scripts ) {
-                       jQuery( scripts ).remove();
-               }
-               return jQuery.merge( [], parsed.childNodes );
-       },
-
-       parseJSON: function( data ) {
-               // Attempt to parse using the native JSON parser first
-               if ( window.JSON && window.JSON.parse ) {
-                       return window.JSON.parse( data );
-               }
-
-               if ( data === null ) {
-                       return data;
-               }
-
-               if ( typeof data === "string" ) {
-
-                       // Make sure leading/trailing whitespace is removed (IE can't handle it)
-                       data = jQuery.trim( data );
-
-                       if ( data ) {
-                               // Make sure the incoming data is actual JSON
-                               // Logic borrowed from http://json.org/json2.js
-                               if ( rvalidchars.test( data.replace( rvalidescape, "@" )
-                                       .replace( rvalidtokens, "]" )
-                                       .replace( rvalidbraces, "")) ) {
-
-                                       return ( new Function( "return " + data ) )();
-                               }
-                       }
-               }
-
-               jQuery.error( "Invalid JSON: " + data );
-       },
-
-       // Cross-browser xml parsing
-       parseXML: function( data ) {
-               var xml, tmp;
-               if ( !data || typeof data !== "string" ) {
-                       return null;
-               }
-               try {
-                       if ( window.DOMParser ) { // Standard
-                               tmp = new DOMParser();
-                               xml = tmp.parseFromString( data , "text/xml" );
-                       } else { // IE
-                               xml = new ActiveXObject( "Microsoft.XMLDOM" );
-                               xml.async = "false";
-                               xml.loadXML( data );
-                       }
-               } catch( e ) {
-                       xml = undefined;
-               }
-               if ( !xml || !xml.documentElement || xml.getElementsByTagName( "parsererror" ).length ) {
-                       jQuery.error( "Invalid XML: " + data );
-               }
-               return xml;
-       },
-
-       noop: function() {},
-
-       // Evaluates a script in a global context
-       // Workarounds based on findings by Jim Driscoll
-       // http://weblogs.java.net/blog/driscoll/archive/2009/09/08/eval-javascript-global-context
-       globalEval: function( data ) {
-               if ( data && jQuery.trim( data ) ) {
-                       // We use execScript on Internet Explorer
-                       // We use an anonymous function so that context is window
-                       // rather than jQuery in Firefox
-                       ( window.execScript || function( data ) {
-                               window[ "eval" ].call( window, data );
-                       } )( data );
-               }
-       },
-
-       // Convert dashed to camelCase; used by the css and data modules
-       // Microsoft forgot to hump their vendor prefix (#9572)
-       camelCase: function( string ) {
-               return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase );
-       },
-
-       nodeName: function( elem, name ) {
-               return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();
-       },
-
-       // args is for internal usage only
-       each: function( obj, callback, args ) {
-               var value,
-                       i = 0,
-                       length = obj.length,
-                       isArray = isArraylike( obj );
-
-               if ( args ) {
-                       if ( isArray ) {
-                               for ( ; i < length; i++ ) {
-                                       value = callback.apply( obj[ i ], args );
-
-                                       if ( value === false ) {
-                                               break;
-                                       }
-                               }
-                       } else {
-                               for ( i in obj ) {
-                                       value = callback.apply( obj[ i ], args );
-
-                                       if ( value === false ) {
-                                               break;
-                                       }
-                               }
-                       }
-
-               // A special, fast, case for the most common use of each
-               } else {
-                       if ( isArray ) {
-                               for ( ; i < length; i++ ) {
-                                       value = callback.call( obj[ i ], i, obj[ i ] );
-
-                                       if ( value === false ) {
-                                               break;
-                                       }
-                               }
-                       } else {
-                               for ( i in obj ) {
-                                       value = callback.call( obj[ i ], i, obj[ i ] );
-
-                                       if ( value === false ) {
-                                               break;
-                                       }
-                               }
-                       }
-               }
-
-               return obj;
-       },
-
-       // Use native String.trim function wherever possible
-       trim: core_trim && !core_trim.call("\uFEFF\xA0") ?
-               function( text ) {
-                       return text == null ?
-                               "" :
-                               core_trim.call( text );
-               } :
-
-               // Otherwise use our own trimming functionality
-               function( text ) {
-                       return text == null ?
-                               "" :
-                               ( text + "" ).replace( rtrim, "" );
-               },
-
-       // results is for internal usage only
-       makeArray: function( arr, results ) {
-               var ret = results || [];
-
-               if ( arr != null ) {
-                       if ( isArraylike( Object(arr) ) ) {
-                               jQuery.merge( ret,
-                                       typeof arr === "string" ?
-                                       [ arr ] : arr
-                               );
-                       } else {
-                               core_push.call( ret, arr );
-                       }
-               }
-
-               return ret;
-       },
-
-       inArray: function( elem, arr, i ) {
-               var len;
-
-               if ( arr ) {
-                       if ( core_indexOf ) {
-                               return core_indexOf.call( arr, elem, i );
-                       }
-
-                       len = arr.length;
-                       i = i ? i < 0 ? Math.max( 0, len + i ) : i : 0;
-
-                       for ( ; i < len; i++ ) {
-                               // Skip accessing in sparse arrays
-                               if ( i in arr && arr[ i ] === elem ) {
-                                       return i;
-                               }
-                       }
-               }
-
-               return -1;
-       },
-
-       merge: function( first, second ) {
-               var l = second.length,
-                       i = first.length,
-                       j = 0;
-
-               if ( typeof l === "number" ) {
-                       for ( ; j < l; j++ ) {
-                               first[ i++ ] = second[ j ];
-                       }
-               } else {
-                       while ( second[j] !== undefined ) {
-                               first[ i++ ] = second[ j++ ];
-                       }
-               }
-
-               first.length = i;
-
-               return first;
-       },
-
-       grep: function( elems, callback, inv ) {
-               var retVal,
-                       ret = [],
-                       i = 0,
-                       length = elems.length;
-               inv = !!inv;
-
-               // Go through the array, only saving the items
-               // that pass the validator function
-               for ( ; i < length; i++ ) {
-                       retVal = !!callback( elems[ i ], i );
-                       if ( inv !== retVal ) {
-                               ret.push( elems[ i ] );
-                       }
-               }
-
-               return ret;
-       },
-
-       // arg is for internal usage only
-       map: function( elems, callback, arg ) {
-               var value,
-                       i = 0,
-                       length = elems.length,
-                       isArray = isArraylike( elems ),
-                       ret = [];
-
-               // Go through the array, translating each of the items to their
-               if ( isArray ) {
-                       for ( ; i < length; i++ ) {
-                               value = callback( elems[ i ], i, arg );
-
-                               if ( value != null ) {
-                                       ret[ ret.length ] = value;
-                               }
-                       }
-
-               // Go through every key on the object,
-               } else {
-                       for ( i in elems ) {
-                               value = callback( elems[ i ], i, arg );
-
-                               if ( value != null ) {
-                                       ret[ ret.length ] = value;
-                               }
-                       }
-               }
-
-               // Flatten any nested arrays
-               return core_concat.apply( [], ret );
-       },
-
-       // A global GUID counter for objects
-       guid: 1,
-
-       // Bind a function to a context, optionally partially applying any
-       // arguments.
-       proxy: function( fn, context ) {
-               var args, proxy, tmp;
-
-               if ( typeof context === "string" ) {
-                       tmp = fn[ context ];
-                       context = fn;
-                       fn = tmp;
-               }
-
-               // Quick check to determine if target is callable, in the spec
-               // this throws a TypeError, but we will just return undefined.
-               if ( !jQuery.isFunction( fn ) ) {
-                       return undefined;
-               }
-
-               // Simulated bind
-               args = core_slice.call( arguments, 2 );
-               proxy = function() {
-                       return fn.apply( context || this, args.concat( core_slice.call( arguments ) ) );
-               };
-
-               // Set the guid of unique handler to the same of original handler, so it can be removed
-               proxy.guid = fn.guid = fn.guid || jQuery.guid++;
-
-               return proxy;
-       },
-
-       // Multifunctional method to get and set values of a collection
-       // The value/s can optionally be executed if it's a function
-       access: function( elems, fn, key, value, chainable, emptyGet, raw ) {
-               var i = 0,
-                       length = elems.length,
-                       bulk = key == null;
-
-               // Sets many values
-               if ( jQuery.type( key ) === "object" ) {
-                       chainable = true;
-                       for ( i in key ) {
-                               jQuery.access( elems, fn, i, key[i], true, emptyGet, raw );
-                       }
-
-               // Sets one value
-               } else if ( value !== undefined ) {
-                       chainable = true;
-
-                       if ( !jQuery.isFunction( value ) ) {
-                               raw = true;
-                       }
-
-                       if ( bulk ) {
-                               // Bulk operations run against the entire set
-                               if ( raw ) {
-                                       fn.call( elems, value );
-                                       fn = null;
-
-                               // ...except when executing function values
-                               } else {
-                                       bulk = fn;
-                                       fn = function( elem, key, value ) {
-                                               return bulk.call( jQuery( elem ), value );
-                                       };
-                               }
-                       }
-
-                       if ( fn ) {
-                               for ( ; i < length; i++ ) {
-                                       fn( elems[i], key, raw ? value : value.call( elems[i], i, fn( elems[i], key ) ) );
-                               }
-                       }
-               }
-
-               return chainable ?
-                       elems :
-
-                       // Gets
-                       bulk ?
-                               fn.call( elems ) :
-                               length ? fn( elems[0], key ) : emptyGet;
-       },
-
-       now: function() {
-               return ( new Date() ).getTime();
-       },
-
-       // A method for quickly swapping in/out CSS properties to get correct calculations.
-       // Note: this method belongs to the css module but it's needed here for the support module.
-       // If support gets modularized, this method should be moved back to the css module.
-       swap: function( elem, options, callback, args ) {
-               var ret, name,
-                       old = {};
-
-               // Remember the old values, and insert the new ones
-               for ( name in options ) {
-                       old[ name ] = elem.style[ name ];
-                       elem.style[ name ] = options[ name ];
-               }
-
-               ret = callback.apply( elem, args || [] );
-
-               // Revert the old values
-               for ( name in options ) {
-                       elem.style[ name ] = old[ name ];
-               }
-
-               return ret;
-       }
-});
-
-jQuery.ready.promise = function( obj ) {
-       if ( !readyList ) {
-
-               readyList = jQuery.Deferred();
-
-               // Catch cases where $(document).ready() is called after the browser event has already occurred.
-               // we once tried to use readyState "interactive" here, but it caused issues like the one
-               // discovered by ChrisS here: http://bugs.jquery.com/ticket/12282#comment:15
-               if ( document.readyState === "complete" ) {
-                       // Handle it asynchronously to allow scripts the opportunity to delay ready
-                       setTimeout( jQuery.ready );
-
-               // Standards-based browsers support DOMContentLoaded
-               } else if ( document.addEventListener ) {
-                       // Use the handy event callback
-                       document.addEventListener( "DOMContentLoaded", completed, false );
-
-                       // A fallback to window.onload, that will always work
-                       window.addEventListener( "load", completed, false );
-
-               // If IE event model is used
-               } else {
-                       // Ensure firing before onload, maybe late but safe also for iframes
-                       document.attachEvent( "onreadystatechange", completed );
-
-                       // A fallback to window.onload, that will always work
-                       window.attachEvent( "onload", completed );
-
-                       // If IE and not a frame
-                       // continually check to see if the document is ready
-                       var top = false;
-
-                       try {
-                               top = window.frameElement == null && document.documentElement;
-                       } catch(e) {}
-
-                       if ( top && top.doScroll ) {
-                               (function doScrollCheck() {
-                                       if ( !jQuery.isReady ) {
-
-                                               try {
-                                                       // Use the trick by Diego Perini
-                                                       // http://javascript.nwbox.com/IEContentLoaded/
-                                                       top.doScroll("left");
-                                               } catch(e) {
-                                                       return setTimeout( doScrollCheck, 50 );
-                                               }
-
-                                               // detach all dom ready events
-                                               detach();
-
-                                               // and execute any waiting functions
-                                               jQuery.ready();
-                                       }
-                               })();
-                       }
-               }
-       }
-       return readyList.promise( obj );
-};
-
-// Populate the class2type map
-jQuery.each("Boolean Number String Function Array Date RegExp Object Error".split(" "), function(i, name) {
-       class2type[ "[object " + name + "]" ] = name.toLowerCase();
-});
-
-function isArraylike( obj ) {
-       var length = obj.length,
-               type = jQuery.type( obj );
-
-       if ( jQuery.isWindow( obj ) ) {
-               return false;
-       }
-
-       if ( obj.nodeType === 1 && length ) {
-               return true;
-       }
-
-       return type === "array" || type !== "function" &&
-               ( length === 0 ||
-               typeof length === "number" && length > 0 && ( length - 1 ) in obj );
-}
-
-// All jQuery objects should point back to these
-rootjQuery = jQuery(document);
-/*!
- * Sizzle CSS Selector Engine v1.10.2
- * http://sizzlejs.com/
- *
- * Copyright 2013 jQuery Foundation, Inc. and other contributors
- * Released under the MIT license
- * http://jquery.org/license
- *
- * Date: 2013-07-03
- */
-(function( window, undefined ) {
-
-var i,
-       support,
-       cachedruns,
-       Expr,
-       getText,
-       isXML,
-       compile,
-       outermostContext,
-       sortInput,
-
-       // Local document vars
-       setDocument,
-       document,
-       docElem,
-       documentIsHTML,
-       rbuggyQSA,
-       rbuggyMatches,
-       matches,
-       contains,
-
-       // Instance-specific data
-       expando = "sizzle" + -(new Date()),
-       preferredDoc = window.document,
-       dirruns = 0,
-       done = 0,
-       classCache = createCache(),
-       tokenCache = createCache(),
-       compilerCache = createCache(),
-       hasDuplicate = false,
-       sortOrder = function( a, b ) {
-               if ( a === b ) {
-                       hasDuplicate = true;
-                       return 0;
-               }
-               return 0;
-       },
-
-       // General-purpose constants
-       strundefined = typeof undefined,
-       MAX_NEGATIVE = 1 << 31,
-
-       // Instance methods
-       hasOwn = ({}).hasOwnProperty,
-       arr = [],
-       pop = arr.pop,
-       push_native = arr.push,
-       push = arr.push,
-       slice = arr.slice,
-       // Use a stripped-down indexOf if we can't use a native one
-       indexOf = arr.indexOf || function( elem ) {
-               var i = 0,
-                       len = this.length;
-               for ( ; i < len; i++ ) {
-                       if ( this[i] === elem ) {
-                               return i;
-                       }
-               }
-               return -1;
-       },
-
-       booleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",
-
-       // Regular expressions
-
-       // Whitespace characters http://www.w3.org/TR/css3-selectors/#whitespace
-       whitespace = "[\\x20\\t\\r\\n\\f]",
-       // http://www.w3.org/TR/css3-syntax/#characters
-       characterEncoding = "(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",
-
-       // Loosely modeled on CSS identifier characters
-       // An unquoted value should be a CSS identifier http://www.w3.org/TR/css3-selectors/#attribute-selectors
-       // Proper syntax: http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier
-       identifier = characterEncoding.replace( "w", "w#" ),
-
-       // Acceptable operators http://www.w3.org/TR/selectors/#attribute-selectors
-       attributes = "\\[" + whitespace + "*(" + characterEncoding + ")" + whitespace +
-               "*(?:([*^$|!~]?=)" + whitespace + "*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|(" + identifier + ")|)|)" + whitespace + "*\\]",
-
-       // Prefer arguments quoted,
-       //   then not containing pseudos/brackets,
-       //   then attribute selectors/non-parenthetical expressions,
-       //   then anything else
-       // These preferences are here to reduce the number of selectors
-       //   needing tokenize in the PSEUDO preFilter
-       pseudos = ":(" + characterEncoding + ")(?:\\(((['\"])((?:\\\\.|[^\\\\])*?)\\3|((?:\\\\.|[^\\\\()[\\]]|" + attributes.replace( 3, 8 ) + ")*)|.*)\\)|)",
-
-       // Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter
-       rtrim = new RegExp( "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$", "g" ),
-
-       rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ),
-       rcombinators = new RegExp( "^" + whitespace + "*([>+~]|" + whitespace + ")" + whitespace + "*" ),
-
-       rsibling = new RegExp( whitespace + "*[+~]" ),
-       rattributeQuotes = new RegExp( "=" + whitespace + "*([^\\]'\"]*)" + whitespace + "*\\]", "g" ),
-
-       rpseudo = new RegExp( pseudos ),
-       ridentifier = new RegExp( "^" + identifier + "$" ),
-
-       matchExpr = {
-               "ID": new RegExp( "^#(" + characterEncoding + ")" ),
-               "CLASS": new RegExp( "^\\.(" + characterEncoding + ")" ),
-               "TAG": new RegExp( "^(" + characterEncoding.replace( "w", "w*" ) + ")" ),
-               "ATTR": new RegExp( "^" + attributes ),
-               "PSEUDO": new RegExp( "^" + pseudos ),
-               "CHILD": new RegExp( "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + whitespace +
-                       "*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + whitespace +
-                       "*(\\d+)|))" + whitespace + "*\\)|)", "i" ),
-               "bool": new RegExp( "^(?:" + booleans + ")$", "i" ),
-               // For use in libraries implementing .is()
-               // We use this for POS matching in `select`
-               "needsContext": new RegExp( "^" + whitespace + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" +
-                       whitespace + "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i" )
-       },
-
-       rnative = /^[^{]+\{\s*\[native \w/,
-
-       // Easily-parseable/retrievable ID or TAG or CLASS selectors
-       rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,
-
-       rinputs = /^(?:input|select|textarea|button)$/i,
-       rheader = /^h\d$/i,
-
-       rescape = /'|\\/g,
-
-       // CSS escapes http://www.w3.org/TR/CSS21/syndata.html#escaped-characters
-       runescape = new RegExp( "\\\\([\\da-f]{1,6}" + whitespace + "?|(" + whitespace + ")|.)", "ig" ),
-       funescape = function( _, escaped, escapedWhitespace ) {
-               var high = "0x" + escaped - 0x10000;
-               // NaN means non-codepoint
-               // Support: Firefox
-               // Workaround erroneous numeric interpretation of +"0x"
-               return high !== high || escapedWhitespace ?
-                       escaped :
-                       // BMP codepoint
-                       high < 0 ?
-                               String.fromCharCode( high + 0x10000 ) :
-                               // Supplemental Plane codepoint (surrogate pair)
-                               String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );
-       };
-
-// Optimize for push.apply( _, NodeList )
-try {
-       push.apply(
-               (arr = slice.call( preferredDoc.childNodes )),
-               preferredDoc.childNodes
-       );
-       // Support: Android<4.0
-       // Detect silently failing push.apply
-       arr[ preferredDoc.childNodes.length ].nodeType;
-} catch ( e ) {
-       push = { apply: arr.length ?
-
-               // Leverage slice if possible
-               function( target, els ) {
-                       push_native.apply( target, slice.call(els) );
-               } :
-
-               // Support: IE<9
-               // Otherwise append directly
-               function( target, els ) {
-                       var j = target.length,
-                               i = 0;
-                       // Can't trust NodeList.length
-                       while ( (target[j++] = els[i++]) ) {}
-                       target.length = j - 1;
-               }
-       };
-}
-
-function Sizzle( selector, context, results, seed ) {
-       var match, elem, m, nodeType,
-               // QSA vars
-               i, groups, old, nid, newContext, newSelector;
-
-       if ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) {
-               setDocument( context );
-       }
-
-       context = context || document;
-       results = results || [];
-
-       if ( !selector || typeof selector !== "string" ) {
-               return results;
-       }
-
-       if ( (nodeType = context.nodeType) !== 1 && nodeType !== 9 ) {
-               return [];
-       }
-
-       if ( documentIsHTML && !seed ) {
-
-               // Shortcuts
-               if ( (match = rquickExpr.exec( selector )) ) {
-                       // Speed-up: Sizzle("#ID")
-                       if ( (m = match[1]) ) {
-                               if ( nodeType === 9 ) {
-                                       elem = context.getElementById( m );
-                                       // Check parentNode to catch when Blackberry 4.6 returns
-                                       // nodes that are no longer in the document #6963
-                                       if ( elem && elem.parentNode ) {
-                                               // Handle the case where IE, Opera, and Webkit return items
-                                               // by name instead of ID
-                                               if ( elem.id === m ) {
-                                                       results.push( elem );
-                                                       return results;
-                                               }
-                                       } else {
-                                               return results;
-                                       }
-                               } else {
-                                       // Context is not a document
-                                       if ( context.ownerDocument && (elem = context.ownerDocument.getElementById( m )) &&
-                                               contains( context, elem ) && elem.id === m ) {
-                                               results.push( elem );
-                                               return results;
-                                       }
-                               }
-
-                       // Speed-up: Sizzle("TAG")
-                       } else if ( match[2] ) {
-                               push.apply( results, context.getElementsByTagName( selector ) );
-                               return results;
-
-                       // Speed-up: Sizzle(".CLASS")
-                       } else if ( (m = match[3]) && support.getElementsByClassName && context.getElementsByClassName ) {
-                               push.apply( results, context.getElementsByClassName( m ) );
-                               return results;
-                       }
-               }
-
-               // QSA path
-               if ( support.qsa && (!rbuggyQSA || !rbuggyQSA.test( selector )) ) {
-                       nid = old = expando;
-                       newContext = context;
-                       newSelector = nodeType === 9 && selector;
-
-                       // qSA works strangely on Element-rooted queries
-                       // We can work around this by specifying an extra ID on the root
-                       // and working up from there (Thanks to Andrew Dupont for the technique)
-                       // IE 8 doesn't work on object elements
-                       if ( nodeType === 1 && context.nodeName.toLowerCase() !== "object" ) {
-                               groups = tokenize( selector );
-
-                               if ( (old = context.getAttribute("id")) ) {
-                                       nid = old.replace( rescape, "\\$&" );
-                               } else {
-                                       context.setAttribute( "id", nid );
-                               }
-                               nid = "[id='" + nid + "'] ";
-
-                               i = groups.length;
-                               while ( i-- ) {
-                                       groups[i] = nid + toSelector( groups[i] );
-                               }
-                               newContext = rsibling.test( selector ) && context.parentNode || context;
-                               newSelector = groups.join(",");
-                       }
-
-                       if ( newSelector ) {
-                               try {
-                                       push.apply( results,
-                                               newContext.querySelectorAll( newSelector )
-                                       );
-                                       return results;
-                               } catch(qsaError) {
-                               } finally {
-                                       if ( !old ) {
-                                               context.removeAttribute("id");
-                                       }
-                               }
-                       }
-               }
-       }
-
-       // All others
-       return select( selector.replace( rtrim, "$1" ), context, results, seed );
-}
-
-/**
- * Create key-value caches of limited size
- * @returns {Function(string, Object)} Returns the Object data after storing it on itself with
- *     property name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength)
- *     deleting the oldest entry
- */
-function createCache() {
-       var keys = [];
-
-       function cache( key, value ) {
-               // Use (key + " ") to avoid collision with native prototype properties (see Issue #157)
-               if ( keys.push( key += " " ) > Expr.cacheLength ) {
-                       // Only keep the most recent entries
-                       delete cache[ keys.shift() ];
-               }
-               return (cache[ key ] = value);
-       }
-       return cache;
-}
-
-/**
- * Mark a function for special use by Sizzle
- * @param {Function} fn The function to mark
- */
-function markFunction( fn ) {
-       fn[ expando ] = true;
-       return fn;
-}
-
-/**
- * Support testing using an element
- * @param {Function} fn Passed the created div and expects a boolean result
- */
-function assert( fn ) {
-       var div = document.createElement("div");
-
-       try {
-               return !!fn( div );
-       } catch (e) {
-               return false;
-       } finally {
-               // Remove from its parent by default
-               if ( div.parentNode ) {
-                       div.parentNode.removeChild( div );
-               }
-               // release memory in IE
-               div = null;
-       }
-}
-
-/**
- * Adds the same handler for all of the specified attrs
- * @param {String} attrs Pipe-separated list of attributes
- * @param {Function} handler The method that will be applied
- */
-function addHandle( attrs, handler ) {
-       var arr = attrs.split("|"),
-               i = attrs.length;
-
-       while ( i-- ) {
-               Expr.attrHandle[ arr[i] ] = handler;
-       }
-}
-
-/**
- * Checks document order of two siblings
- * @param {Element} a
- * @param {Element} b
- * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b
- */
-function siblingCheck( a, b ) {
-       var cur = b && a,
-               diff = cur && a.nodeType === 1 && b.nodeType === 1 &&
-                       ( ~b.sourceIndex || MAX_NEGATIVE ) -
-                       ( ~a.sourceIndex || MAX_NEGATIVE );
-
-       // Use IE sourceIndex if available on both nodes
-       if ( diff ) {
-               return diff;
-       }
-
-       // Check if b follows a
-       if ( cur ) {
-               while ( (cur = cur.nextSibling) ) {
-                       if ( cur === b ) {
-                               return -1;
-                       }
-               }
-       }
-
-       return a ? 1 : -1;
-}
-
-/**
- * Returns a function to use in pseudos for input types
- * @param {String} type
- */
-function createInputPseudo( type ) {
-       return function( elem ) {
-               var name = elem.nodeName.toLowerCase();
-               return name === "input" && elem.type === type;
-       };
-}
-
-/**
- * Returns a function to use in pseudos for buttons
- * @param {String} type
- */
-function createButtonPseudo( type ) {
-       return function( elem ) {
-               var name = elem.nodeName.toLowerCase();
-               return (name === "input" || name === "button") && elem.type === type;
-       };
-}
-
-/**
- * Returns a function to use in pseudos for positionals
- * @param {Function} fn
- */
-function createPositionalPseudo( fn ) {
-       return markFunction(function( argument ) {
-               argument = +argument;
-               return markFunction(function( seed, matches ) {
-                       var j,
-                               matchIndexes = fn( [], seed.length, argument ),
-                               i = matchIndexes.length;
-
-                       // Match elements found at the specified indexes
-                       while ( i-- ) {
-                               if ( seed[ (j = matchIndexes[i]) ] ) {
-                                       seed[j] = !(matches[j] = seed[j]);
-                               }
-                       }
-               });
-       });
-}
-
-/**
- * Detect xml
- * @param {Element|Object} elem An element or a document
- */
-isXML = Sizzle.isXML = function( elem ) {
-       // documentElement is verified for cases where it doesn't yet exist
-       // (such as loading iframes in IE - #4833)
-       var documentElement = elem && (elem.ownerDocument || elem).documentElement;
-       return documentElement ? documentElement.nodeName !== "HTML" : false;
-};
-
-// Expose support vars for convenience
-support = Sizzle.support = {};
-
-/**
- * Sets document-related variables once based on the current document
- * @param {Element|Object} [doc] An element or document object to use to set the document
- * @returns {Object} Returns the current document
- */
-setDocument = Sizzle.setDocument = function( node ) {
-       var doc = node ? node.ownerDocument || node : preferredDoc,
-               parent = doc.defaultView;
-
-       // If no document and documentElement is available, return
-       if ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) {
-               return document;
-       }
-
-       // Set our document
-       document = doc;
-       docElem = doc.documentElement;
-
-       // Support tests
-       documentIsHTML = !isXML( doc );
-
-       // Support: IE>8
-       // If iframe document is assigned to "document" variable and if iframe has been reloaded,
-       // IE will throw "permission denied" error when accessing "document" variable, see jQuery #13936
-       // IE6-8 do not support the defaultView property so parent will be undefined
-       if ( parent && parent.attachEvent && parent !== parent.top ) {
-               parent.attachEvent( "onbeforeunload", function() {
-                       setDocument();
-               });
-       }
-
-       /* Attributes
-       ---------------------------------------------------------------------- */
-
-       // Support: IE<8
-       // Verify that getAttribute really returns attributes and not properties (excepting IE8 booleans)
-       support.attributes = assert(function( div ) {
-               div.className = "i";
-               return !div.getAttribute("className");
-       });
-
-       /* getElement(s)By*
-       ---------------------------------------------------------------------- */
-
-       // Check if getElementsByTagName("*") returns only elements
-       support.getElementsByTagName = assert(function( div ) {
-               div.appendChild( doc.createComment("") );
-               return !div.getElementsByTagName("*").length;
-       });
-
-       // Check if getElementsByClassName can be trusted
-       support.getElementsByClassName = assert(function( div ) {
-               div.innerHTML = "<div class='a'></div><div class='a i'></div>";
-
-               // Support: Safari<4
-               // Catch class over-caching
-               div.firstChild.className = "i";
-               // Support: Opera<10
-               // Catch gEBCN failure to find non-leading classes
-               return div.getElementsByClassName("i").length === 2;
-       });
-
-       // Support: IE<10
-       // Check if getElementById returns elements by name
-       // The broken getElementById methods don't pick up programatically-set names,
-       // so use a roundabout getElementsByName test
-       support.getById = assert(function( div ) {
-               docElem.appendChild( div ).id = expando;
-               return !doc.getElementsByName || !doc.getElementsByName( expando ).length;
-       });
-
-       // ID find and filter
-       if ( support.getById ) {
-               Expr.find["ID"] = function( id, context ) {
-                       if ( typeof context.getElementById !== strundefined && documentIsHTML ) {
-                               var m = context.getElementById( id );
-                               // Check parentNode to catch when Blackberry 4.6 returns
-                               // nodes that are no longer in the document #6963
-                               return m && m.parentNode ? [m] : [];
-                       }
-               };
-               Expr.filter["ID"] = function( id ) {
-                       var attrId = id.replace( runescape, funescape );
-                       return function( elem ) {
-                               return elem.getAttribute("id") === attrId;
-                       };
-               };
-       } else {
-               // Support: IE6/7
-               // getElementById is not reliable as a find shortcut
-               delete Expr.find["ID"];
-
-               Expr.filter["ID"] =  function( id ) {
-                       var attrId = id.replace( runescape, funescape );
-                       return function( elem ) {
-                               var node = typeof elem.getAttributeNode !== strundefined && elem.getAttributeNode("id");
-                               return node && node.value === attrId;
-                       };
-               };
-       }
-
-       // Tag
-       Expr.find["TAG"] = support.getElementsByTagName ?
-               function( tag, context ) {
-                       if ( typeof context.getElementsByTagName !== strundefined ) {
-                               return context.getElementsByTagName( tag );
-                       }
-               } :
-               function( tag, context ) {
-                       var elem,
-                               tmp = [],
-                               i = 0,
-                               results = context.getElementsByTagName( tag );
-
-                       // Filter out possible comments
-                       if ( tag === "*" ) {
-                               while ( (elem = results[i++]) ) {
-                                       if ( elem.nodeType === 1 ) {
-                                               tmp.push( elem );
-                                       }
-                               }
-
-                               return tmp;
-                       }
-                       return results;
-               };
-
-       // Class
-       Expr.find["CLASS"] = support.getElementsByClassName && function( className, context ) {
-               if ( typeof context.getElementsByClassName !== strundefined && documentIsHTML ) {
-                       return context.getElementsByClassName( className );
-               }
-       };
-
-       /* QSA/matchesSelector
-       ---------------------------------------------------------------------- */
-
-       // QSA and matchesSelector support
-
-       // matchesSelector(:active) reports false when true (IE9/Opera 11.5)
-       rbuggyMatches = [];
-
-       // qSa(:focus) reports false when true (Chrome 21)
-       // We allow this because of a bug in IE8/9 that throws an error
-       // whenever `document.activeElement` is accessed on an iframe
-       // So, we allow :focus to pass through QSA all the time to avoid the IE error
-       // See http://bugs.jquery.com/ticket/13378
-       rbuggyQSA = [];
-
-       if ( (support.qsa = rnative.test( doc.querySelectorAll )) ) {
-               // Build QSA regex
-               // Regex strategy adopted from Diego Perini
-               assert(function( div ) {
-                       // Select is set to empty string on purpose
-                       // This is to test IE's treatment of not explicitly
-                       // setting a boolean content attribute,
-                       // since its presence should be enough
-                       // http://bugs.jquery.com/ticket/12359
-                       div.innerHTML = "<select><option selected=''></option></select>";
-
-                       // Support: IE8
-                       // Boolean attributes and "value" are not treated correctly
-                       if ( !div.querySelectorAll("[selected]").length ) {
-                               rbuggyQSA.push( "\\[" + whitespace + "*(?:value|" + booleans + ")" );
-                       }
-
-                       // Webkit/Opera - :checked should return selected option elements
-                       // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked
-                       // IE8 throws error here and will not see later tests
-                       if ( !div.querySelectorAll(":checked").length ) {
-                               rbuggyQSA.push(":checked");
-                       }
-               });
-
-               assert(function( div ) {
-
-                       // Support: Opera 10-12/IE8
-                       // ^= $= *= and empty values
-                       // Should not select anything
-                       // Support: Windows 8 Native Apps
-                       // The type attribute is restricted during .innerHTML assignment
-                       var input = doc.createElement("input");
-                       input.setAttribute( "type", "hidden" );
-                       div.appendChild( input ).setAttribute( "t", "" );
-
-                       if ( div.querySelectorAll("[t^='']").length ) {
-                               rbuggyQSA.push( "[*^$]=" + whitespace + "*(?:''|\"\")" );
-                       }
-
-                       // FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled)
-                       // IE8 throws error here and will not see later tests
-                       if ( !div.querySelectorAll(":enabled").length ) {
-                               rbuggyQSA.push( ":enabled", ":disabled" );
-                       }
-
-                       // Opera 10-11 does not throw on post-comma invalid pseudos
-                       div.querySelectorAll("*,:x");
-                       rbuggyQSA.push(",.*:");
-               });
-       }
-
-       if ( (support.matchesSelector = rnative.test( (matches = docElem.webkitMatchesSelector ||
-               docElem.mozMatchesSelector ||
-               docElem.oMatchesSelector ||
-               docElem.msMatchesSelector) )) ) {
-
-               assert(function( div ) {
-                       // Check to see if it's possible to do matchesSelector
-                       // on a disconnected node (IE 9)
-                       support.disconnectedMatch = matches.call( div, "div" );
-
-                       // This should fail with an exception
-                       // Gecko does not error, returns false instead
-                       matches.call( div, "[s!='']:x" );
-                       rbuggyMatches.push( "!=", pseudos );
-               });
-       }
-
-       rbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join("|") );
-       rbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join("|") );
-
-       /* Contains
-       ---------------------------------------------------------------------- */
-
-       // Element contains another
-       // Purposefully does not implement inclusive descendent
-       // As in, an element does not contain itself
-       contains = rnative.test( docElem.contains ) || docElem.compareDocumentPosition ?
-               function( a, b ) {
-                       var adown = a.nodeType === 9 ? a.documentElement : a,
-                               bup = b && b.parentNode;
-                       return a === bup || !!( bup && bup.nodeType === 1 && (
-                               adown.contains ?
-                                       adown.contains( bup ) :
-                                       a.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16
-                       ));
-               } :
-               function( a, b ) {
-                       if ( b ) {
-                               while ( (b = b.parentNode) ) {
-                                       if ( b === a ) {
-                                               return true;
-                                       }
-                               }
-                       }
-                       return false;
-               };
-
-       /* Sorting
-       ---------------------------------------------------------------------- */
-
-       // Document order sorting
-       sortOrder = docElem.compareDocumentPosition ?
-       function( a, b ) {
-
-               // Flag for duplicate removal
-               if ( a === b ) {
-                       hasDuplicate = true;
-                       return 0;
-               }
-
-               var compare = b.compareDocumentPosition && a.compareDocumentPosition && a.compareDocumentPosition( b );
-
-               if ( compare ) {
-                       // Disconnected nodes
-                       if ( compare & 1 ||
-                               (!support.sortDetached && b.compareDocumentPosition( a ) === compare) ) {
-
-                               // Choose the first element that is related to our preferred document
-                               if ( a === doc || contains(preferredDoc, a) ) {
-                                       return -1;
-                               }
-                               if ( b === doc || contains(preferredDoc, b) ) {
-                                       return 1;
-                               }
-
-                               // Maintain original order
-                               return sortInput ?
-                                       ( indexOf.call( sortInput, a ) - indexOf.call( sortInput, b ) ) :
-                                       0;
-                       }
-
-                       return compare & 4 ? -1 : 1;
-               }
-
-               // Not directly comparable, sort on existence of method
-               return a.compareDocumentPosition ? -1 : 1;
-       } :
-       function( a, b ) {
-               var cur,
-                       i = 0,
-                       aup = a.parentNode,
-                       bup = b.parentNode,
-                       ap = [ a ],
-                       bp = [ b ];
-
-               // Exit early if the nodes are identical
-               if ( a === b ) {
-                       hasDuplicate = true;
-                       return 0;
-
-               // Parentless nodes are either documents or disconnected
-               } else if ( !aup || !bup ) {
-                       return a === doc ? -1 :
-                               b === doc ? 1 :
-                               aup ? -1 :
-                               bup ? 1 :
-                               sortInput ?
-                               ( indexOf.call( sortInput, a ) - indexOf.call( sortInput, b ) ) :
-                               0;
-
-               // If the nodes are siblings, we can do a quick check
-               } else if ( aup === bup ) {
-                       return siblingCheck( a, b );
-               }
-
-               // Otherwise we need full lists of their ancestors for comparison
-               cur = a;
-               while ( (cur = cur.parentNode) ) {
-                       ap.unshift( cur );
-               }
-               cur = b;
-               while ( (cur = cur.parentNode) ) {
-                       bp.unshift( cur );
-               }
-
-               // Walk down the tree looking for a discrepancy
-               while ( ap[i] === bp[i] ) {
-                       i++;
-               }
-
-               return i ?
-                       // Do a sibling check if the nodes have a common ancestor
-                       siblingCheck( ap[i], bp[i] ) :
-
-                       // Otherwise nodes in our document sort first
-                       ap[i] === preferredDoc ? -1 :
-                       bp[i] === preferredDoc ? 1 :
-                       0;
-       };
-
-       return doc;
-};
-
-Sizzle.matches = function( expr, elements ) {
-       return Sizzle( expr, null, null, elements );
-};
-
-Sizzle.matchesSelector = function( elem, expr ) {
-       // Set document vars if needed
-       if ( ( elem.ownerDocument || elem ) !== document ) {
-               setDocument( elem );
-       }
-
-       // Make sure that attribute selectors are quoted
-       expr = expr.replace( rattributeQuotes, "='$1']" );
-
-       if ( support.matchesSelector && documentIsHTML &&
-               ( !rbuggyMatches || !rbuggyMatches.test( expr ) ) &&
-               ( !rbuggyQSA     || !rbuggyQSA.test( expr ) ) ) {
-
-               try {
-                       var ret = matches.call( elem, expr );
-
-                       // IE 9's matchesSelector returns false on disconnected nodes
-                       if ( ret || support.disconnectedMatch ||
-                                       // As well, disconnected nodes are said to be in a document
-                                       // fragment in IE 9
-                                       elem.document && elem.document.nodeType !== 11 ) {
-                               return ret;
-                       }
-               } catch(e) {}
-       }
-
-       return Sizzle( expr, document, null, [elem] ).length > 0;
-};
-
-Sizzle.contains = function( context, elem ) {
-       // Set document vars if needed
-       if ( ( context.ownerDocument || context ) !== document ) {
-               setDocument( context );
-       }
-       return contains( context, elem );
-};
-
-Sizzle.attr = function( elem, name ) {
-       // Set document vars if needed
-       if ( ( elem.ownerDocument || elem ) !== document ) {
-               setDocument( elem );
-       }
-
-       var fn = Expr.attrHandle[ name.toLowerCase() ],
-               // Don't get fooled by Object.prototype properties (jQuery #13807)
-               val = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ?
-                       fn( elem, name, !documentIsHTML ) :
-                       undefined;
-
-       return val === undefined ?
-               support.attributes || !documentIsHTML ?
-                       elem.getAttribute( name ) :
-                       (val = elem.getAttributeNode(name)) && val.specified ?
-                               val.value :
-                               null :
-               val;
-};
-
-Sizzle.error = function( msg ) {
-       throw new Error( "Syntax error, unrecognized expression: " + msg );
-};
-
-/**
- * Document sorting and removing duplicates
- * @param {ArrayLike} results
- */
-Sizzle.uniqueSort = function( results ) {
-       var elem,
-               duplicates = [],
-               j = 0,
-               i = 0;
-
-       // Unless we *know* we can detect duplicates, assume their presence
-       hasDuplicate = !support.detectDuplicates;
-       sortInput = !support.sortStable && results.slice( 0 );
-       results.sort( sortOrder );
-
-       if ( hasDuplicate ) {
-               while ( (elem = results[i++]) ) {
-                       if ( elem === results[ i ] ) {
-                               j = duplicates.push( i );
-                       }
-               }
-               while ( j-- ) {
-                       results.splice( duplicates[ j ], 1 );
-               }
-       }
-
-       return results;
-};
-
-/**
- * Utility function for retrieving the text value of an array of DOM nodes
- * @param {Array|Element} elem
- */
-getText = Sizzle.getText = function( elem ) {
-       var node,
-               ret = "",
-               i = 0,
-               nodeType = elem.nodeType;
-
-       if ( !nodeType ) {
-               // If no nodeType, this is expected to be an array
-               for ( ; (node = elem[i]); i++ ) {
-                       // Do not traverse comment nodes
-                       ret += getText( node );
-               }
-       } else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {
-               // Use textContent for elements
-               // innerText usage removed for consistency of new lines (see #11153)
-               if ( typeof elem.textContent === "string" ) {
-                       return elem.textContent;
-               } else {
-                       // Traverse its children
-                       for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {
-                               ret += getText( elem );
-                       }
-               }
-       } else if ( nodeType === 3 || nodeType === 4 ) {
-               return elem.nodeValue;
-       }
-       // Do not include comment or processing instruction nodes
-
-       return ret;
-};
-
-Expr = Sizzle.selectors = {
-
-       // Can be adjusted by the user
-       cacheLength: 50,
-
-       createPseudo: markFunction,
-
-       match: matchExpr,
-
-       attrHandle: {},
-
-       find: {},
-
-       relative: {
-               ">": { dir: "parentNode", first: true },
-               " ": { dir: "parentNode" },
-               "+": { dir: "previousSibling", first: true },
-               "~": { dir: "previousSibling" }
-       },
-
-       preFilter: {
-               "ATTR": function( match ) {
-                       match[1] = match[1].replace( runescape, funescape );
-
-                       // Move the given value to match[3] whether quoted or unquoted
-                       match[3] = ( match[4] || match[5] || "" ).replace( runescape, funescape );
-
-                       if ( match[2] === "~=" ) {
-                               match[3] = " " + match[3] + " ";
-                       }
-
-                       return match.slice( 0, 4 );
-               },
-
-               "CHILD": function( match ) {
-                       /* matches from matchExpr["CHILD"]
-                               1 type (only|nth|...)
-                               2 what (child|of-type)
-                               3 argument (even|odd|\d*|\d*n([+-]\d+)?|...)
-                               4 xn-component of xn+y argument ([+-]?\d*n|)
-                               5 sign of xn-component
-                               6 x of xn-component
-                               7 sign of y-component
-                               8 y of y-component
-                       */
-                       match[1] = match[1].toLowerCase();
-
-                       if ( match[1].slice( 0, 3 ) === "nth" ) {
-                               // nth-* requires argument
-                               if ( !match[3] ) {
-                                       Sizzle.error( match[0] );
-                               }
-
-                               // numeric x and y parameters for Expr.filter.CHILD
-                               // remember that false/true cast respectively to 0/1
-                               match[4] = +( match[4] ? match[5] + (match[6] || 1) : 2 * ( match[3] === "even" || match[3] === "odd" ) );
-                               match[5] = +( ( match[7] + match[8] ) || match[3] === "odd" );
-
-                       // other types prohibit arguments
-                       } else if ( match[3] ) {
-                               Sizzle.error( match[0] );
-                       }
-
-                       return match;
-               },
-
-               "PSEUDO": function( match ) {
-                       var excess,
-                               unquoted = !match[5] && match[2];
-
-                       if ( matchExpr["CHILD"].test( match[0] ) ) {
-                               return null;
-                       }
-
-                       // Accept quoted arguments as-is
-                       if ( match[3] && match[4] !== undefined ) {
-                               match[2] = match[4];
-
-                       // Strip excess characters from unquoted arguments
-                       } else if ( unquoted && rpseudo.test( unquoted ) &&
-                               // Get excess from tokenize (recursively)
-                               (excess = tokenize( unquoted, true )) &&
-                               // advance to the next closing parenthesis
-                               (excess = unquoted.indexOf( ")", unquoted.length - excess ) - unquoted.length) ) {
-
-                               // excess is a negative index
-                               match[0] = match[0].slice( 0, excess );
-                               match[2] = unquoted.slice( 0, excess );
-                       }
-
-                       // Return only captures needed by the pseudo filter method (type and argument)
-                       return match.slice( 0, 3 );
-               }
-       },
-
-       filter: {
-
-               "TAG": function( nodeNameSelector ) {
-                       var nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase();
-                       return nodeNameSelector === "*" ?
-                               function() { return true; } :
-                               function( elem ) {
-                                       return elem.nodeName && elem.nodeName.toLowerCase() === nodeName;
-                               };
-               },
-
-               "CLASS": function( className ) {
-                       var pattern = classCache[ className + " " ];
-
-                       return pattern ||
-                               (pattern = new RegExp( "(^|" + whitespace + ")" + className + "(" + whitespace + "|$)" )) &&
-                               classCache( className, function( elem ) {
-                                       return pattern.test( typeof elem.className === "string" && elem.className || typeof elem.getAttribute !== strundefined && elem.getAttribute("class") || "" );
-                               });
-               },
-
-               "ATTR": function( name, operator, check ) {
-                       return function( elem ) {
-                               var result = Sizzle.attr( elem, name );
-
-                               if ( result == null ) {
-                                       return operator === "!=";
-                               }
-                               if ( !operator ) {
-                                       return true;
-                               }
-
-                               result += "";
-
-                               return operator === "=" ? result === check :
-                                       operator === "!=" ? result !== check :
-                                       operator === "^=" ? check && result.indexOf( check ) === 0 :
-                                       operator === "*=" ? check && result.indexOf( check ) > -1 :
-                                       operator === "$=" ? check && result.slice( -check.length ) === check :
-                                       operator === "~=" ? ( " " + result + " " ).indexOf( check ) > -1 :
-                                       operator === "|=" ? result === check || result.slice( 0, check.length + 1 ) === check + "-" :
-                                       false;
-                       };
-               },
-
-               "CHILD": function( type, what, argument, first, last ) {
-                       var simple = type.slice( 0, 3 ) !== "nth",
-                               forward = type.slice( -4 ) !== "last",
-                               ofType = what === "of-type";
-
-                       return first === 1 && last === 0 ?
-
-                               // Shortcut for :nth-*(n)
-                               function( elem ) {
-                                       return !!elem.parentNode;
-                               } :
-
-                               function( elem, context, xml ) {
-                                       var cache, outerCache, node, diff, nodeIndex, start,
-                                               dir = simple !== forward ? "nextSibling" : "previousSibling",
-                                               parent = elem.parentNode,
-                                               name = ofType && elem.nodeName.toLowerCase(),
-                                               useCache = !xml && !ofType;
-
-                                       if ( parent ) {
-
-                                               // :(first|last|only)-(child|of-type)
-                                               if ( simple ) {
-                                                       while ( dir ) {
-                                                               node = elem;
-                                                               while ( (node = node[ dir ]) ) {
-                                                                       if ( ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1 ) {
-                                                                               return false;
-                                                                       }
-                                                               }
-                                                               // Reverse direction for :only-* (if we haven't yet done so)
-                                                               start = dir = type === "only" && !start && "nextSibling";
-                                                       }
-                                                       return true;
-                                               }
-
-                                               start = [ forward ? parent.firstChild : parent.lastChild ];
-
-                                               // non-xml :nth-child(...) stores cache data on `parent`
-                                               if ( forward && useCache ) {
-                                                       // Seek `elem` from a previously-cached index
-                                                       outerCache = parent[ expando ] || (parent[ expando ] = {});
-                                                       cache = outerCache[ type ] || [];
-                                                       nodeIndex = cache[0] === dirruns && cache[1];
-                                                       diff = cache[0] === dirruns && cache[2];
-                                                       node = nodeIndex && parent.childNodes[ nodeIndex ];
-
-                                                       while ( (node = ++nodeIndex && node && node[ dir ] ||
-
-                                                               // Fallback to seeking `elem` from the start
-                                                               (diff = nodeIndex = 0) || start.pop()) ) {
-
-                                                               // When found, cache indexes on `parent` and break
-                                                               if ( node.nodeType === 1 && ++diff && node === elem ) {
-                                                                       outerCache[ type ] = [ dirruns, nodeIndex, diff ];
-                                                                       break;
-                                                               }
-                                                       }
-
-                                               // Use previously-cached element index if available
-                                               } else if ( useCache && (cache = (elem[ expando ] || (elem[ expando ] = {}))[ type ]) && cache[0] === dirruns ) {
-                                                       diff = cache[1];
-
-                                               // xml :nth-child(...) or :nth-last-child(...) or :nth(-last)?-of-type(...)
-                                               } else {
-                                                       // Use the same loop as above to seek `elem` from the start
-                                                       while ( (node = ++nodeIndex && node && node[ dir ] ||
-                                                               (diff = nodeIndex = 0) || start.pop()) ) {
-
-                                                               if ( ( ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1 ) && ++diff ) {
-                                                                       // Cache the index of each encountered element
-                                                                       if ( useCache ) {
-                                                                               (node[ expando ] || (node[ expando ] = {}))[ type ] = [ dirruns, diff ];
-                                                                       }
-
-                                                                       if ( node === elem ) {
-                                                                               break;
-                                                                       }
-                                                               }
-                                                       }
-                                               }
-
-                                               // Incorporate the offset, then check against cycle size
-                                               diff -= last;
-                                               return diff === first || ( diff % first === 0 && diff / first >= 0 );
-                                       }
-                               };
-               },
-
-               "PSEUDO": function( pseudo, argument ) {
-                       // pseudo-class names are case-insensitive
-                       // http://www.w3.org/TR/selectors/#pseudo-classes
-                       // Prioritize by case sensitivity in case custom pseudos are added with uppercase letters
-                       // Remember that setFilters inherits from pseudos
-                       var args,
-                               fn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] ||
-                                       Sizzle.error( "unsupported pseudo: " + pseudo );
-
-                       // The user may use createPseudo to indicate that
-                       // arguments are needed to create the filter function
-                       // just as Sizzle does
-                       if ( fn[ expando ] ) {
-                               return fn( argument );
-                       }
-
-                       // But maintain support for old signatures
-                       if ( fn.length > 1 ) {
-                               args = [ pseudo, pseudo, "", argument ];
-                               return Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ?
-                                       markFunction(function( seed, matches ) {
-                                               var idx,
-                                                       matched = fn( seed, argument ),
-                                                       i = matched.length;
-                                               while ( i-- ) {
-                                                       idx = indexOf.call( seed, matched[i] );
-                                                       seed[ idx ] = !( matches[ idx ] = matched[i] );
-                                               }
-                                       }) :
-                                       function( elem ) {
-                                               return fn( elem, 0, args );
-                                       };
-                       }
-
-                       return fn;
-               }
-       },
-
-       pseudos: {
-               // Potentially complex pseudos
-               "not": markFunction(function( selector ) {
-                       // Trim the selector passed to compile
-                       // to avoid treating leading and trailing
-                       // spaces as combinators
-                       var input = [],
-                               results = [],
-                               matcher = compile( selector.replace( rtrim, "$1" ) );
-
-                       return matcher[ expando ] ?
-                               markFunction(function( seed, matches, context, xml ) {
-                                       var elem,
-                                               unmatched = matcher( seed, null, xml, [] ),
-                                               i = seed.length;
-
-                                       // Match elements unmatched by `matcher`
-                                       while ( i-- ) {
-                                               if ( (elem = unmatched[i]) ) {
-                                                       seed[i] = !(matches[i] = elem);
-                                               }
-                                       }
-                               }) :
-                               function( elem, context, xml ) {
-                                       input[0] = elem;
-                                       matcher( input, null, xml, results );
-                                       return !results.pop();
-                               };
-               }),
-
-               "has": markFunction(function( selector ) {
-                       return function( elem ) {
-                               return Sizzle( selector, elem ).length > 0;
-                       };
-               }),
-
-               "contains": markFunction(function( text ) {
-                       return function( elem ) {
-                               return ( elem.textContent || elem.innerText || getText( elem ) ).indexOf( text ) > -1;
-                       };
-               }),
-
-               // "Whether an element is represented by a :lang() selector
-               // is based solely on the element's language value
-               // being equal to the identifier C,
-               // or beginning with the identifier C immediately followed by "-".
-               // The matching of C against the element's language value is performed case-insensitively.
-               // The identifier C does not have to be a valid language name."
-               // http://www.w3.org/TR/selectors/#lang-pseudo
-               "lang": markFunction( function( lang ) {
-                       // lang value must be a valid identifier
-                       if ( !ridentifier.test(lang || "") ) {
-                               Sizzle.error( "unsupported lang: " + lang );
-                       }
-                       lang = lang.replace( runescape, funescape ).toLowerCase();
-                       return function( elem ) {
-                               var elemLang;
-                               do {
-                                       if ( (elemLang = documentIsHTML ?
-                                               elem.lang :
-                                               elem.getAttribute("xml:lang") || elem.getAttribute("lang")) ) {
-
-                                               elemLang = elemLang.toLowerCase();
-                                               return elemLang === lang || elemLang.indexOf( lang + "-" ) === 0;
-                                       }
-                               } while ( (elem = elem.parentNode) && elem.nodeType === 1 );
-                               return false;
-                       };
-               }),
-
-               // Miscellaneous
-               "target": function( elem ) {
-                       var hash = window.location && window.location.hash;
-                       return hash && hash.slice( 1 ) === elem.id;
-               },
-
-               "root": function( elem ) {
-                       return elem === docElem;
-               },
-
-               "focus": function( elem ) {
-                       return elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex);
-               },
-
-               // Boolean properties
-               "enabled": function( elem ) {
-                       return elem.disabled === false;
-               },
-
-               "disabled": function( elem ) {
-                       return elem.disabled === true;
-               },
-
-               "checked": function( elem ) {
-                       // In CSS3, :checked should return both checked and selected elements
-                       // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked
-                       var nodeName = elem.nodeName.toLowerCase();
-                       return (nodeName === "input" && !!elem.checked) || (nodeName === "option" && !!elem.selected);
-               },
-
-               "selected": function( elem ) {
-                       // Accessing this property makes selected-by-default
-                       // options in Safari work properly
-                       if ( elem.parentNode ) {
-                               elem.parentNode.selectedIndex;
-                       }
-
-                       return elem.selected === true;
-               },
-
-               // Contents
-               "empty": function( elem ) {
-                       // http://www.w3.org/TR/selectors/#empty-pseudo
-                       // :empty is only affected by element nodes and content nodes(including text(3), cdata(4)),
-                       //   not comment, processing instructions, or others
-                       // Thanks to Diego Perini for the nodeName shortcut
-                       //   Greater than "@" means alpha characters (specifically not starting with "#" or "?")
-                       for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {
-                               if ( elem.nodeName > "@" || elem.nodeType === 3 || elem.nodeType === 4 ) {
-                                       return false;
-                               }
-                       }
-                       return true;
-               },
-
-               "parent": function( elem ) {
-                       return !Expr.pseudos["empty"]( elem );
-               },
-
-               // Element/input types
-               "header": function( elem ) {
-                       return rheader.test( elem.nodeName );
-               },
-
-               "input": function( elem ) {
-                       return rinputs.test( elem.nodeName );
-               },
-
-               "button": function( elem ) {
-                       var name = elem.nodeName.toLowerCase();
-                       return name === "input" && elem.type === "button" || name === "button";
-               },
-
-               "text": function( elem ) {
-                       var attr;
-                       // IE6 and 7 will map elem.type to 'text' for new HTML5 types (search, etc)
-                       // use getAttribute instead to test this case
-                       return elem.nodeName.toLowerCase() === "input" &&
-                               elem.type === "text" &&
-                               ( (attr = elem.getAttribute("type")) == null || attr.toLowerCase() === elem.type );
-               },
-
-               // Position-in-collection
-               "first": createPositionalPseudo(function() {
-                       return [ 0 ];
-               }),
-
-               "last": createPositionalPseudo(function( matchIndexes, length ) {
-                       return [ length - 1 ];
-               }),
-
-               "eq": createPositionalPseudo(function( matchIndexes, length, argument ) {
-                       return [ argument < 0 ? argument + length : argument ];
-               }),
-
-               "even": createPositionalPseudo(function( matchIndexes, length ) {
-                       var i = 0;
-                       for ( ; i < length; i += 2 ) {
-                               matchIndexes.push( i );
-                       }
-                       return matchIndexes;
-               }),
-
-               "odd": createPositionalPseudo(function( matchIndexes, length ) {
-                       var i = 1;
-                       for ( ; i < length; i += 2 ) {
-                               matchIndexes.push( i );
-                       }
-                       return matchIndexes;
-               }),
-
-               "lt": createPositionalPseudo(function( matchIndexes, length, argument ) {
-                       var i = argument < 0 ? argument + length : argument;
-                       for ( ; --i >= 0; ) {
-                               matchIndexes.push( i );
-                       }
-                       return matchIndexes;
-               }),
-
-               "gt": createPositionalPseudo(function( matchIndexes, length, argument ) {
-                       var i = argument < 0 ? argument + length : argument;
-                       for ( ; ++i < length; ) {
-                               matchIndexes.push( i );
-                       }
-                       return matchIndexes;
-               })
-       }
-};
-
-Expr.pseudos["nth"] = Expr.pseudos["eq"];
-
-// Add button/input type pseudos
-for ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) {
-       Expr.pseudos[ i ] = createInputPseudo( i );
-}
-for ( i in { submit: true, reset: true } ) {
-       Expr.pseudos[ i ] = createButtonPseudo( i );
-}
-
-// Easy API for creating new setFilters
-function setFilters() {}
-setFilters.prototype = Expr.filters = Expr.pseudos;
-Expr.setFilters = new setFilters();
-
-function tokenize( selector, parseOnly ) {
-       var matched, match, tokens, type,
-               soFar, groups, preFilters,
-               cached = tokenCache[ selector + " " ];
-
-       if ( cached ) {
-               return parseOnly ? 0 : cached.slice( 0 );
-       }
-
-       soFar = selector;
-       groups = [];
-       preFilters = Expr.preFilter;
-
-       while ( soFar ) {
-
-               // Comma and first run
-               if ( !matched || (match = rcomma.exec( soFar )) ) {
-                       if ( match ) {
-                               // Don't consume trailing commas as valid
-                               soFar = soFar.slice( match[0].length ) || soFar;
-                       }
-                       groups.push( tokens = [] );
-               }
-
-               matched = false;
-
-               // Combinators
-               if ( (match = rcombinators.exec( soFar )) ) {
-                       matched = match.shift();
-                       tokens.push({
-                               value: matched,
-                               // Cast descendant combinators to space
-                               type: match[0].replace( rtrim, " " )
-                       });
-                       soFar = soFar.slice( matched.length );
-               }
-
-               // Filters
-               for ( type in Expr.filter ) {
-                       if ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] ||
-                               (match = preFilters[ type ]( match ))) ) {
-                               matched = match.shift();
-                               tokens.push({
-                                       value: matched,
-                                       type: type,
-                                       matches: match
-                               });
-                               soFar = soFar.slice( matched.length );
-                       }
-               }
-
-               if ( !matched ) {
-                       break;
-               }
-       }
-
-       // Return the length of the invalid excess
-       // if we're just parsing
-       // Otherwise, throw an error or return tokens
-       return parseOnly ?
-               soFar.length :
-               soFar ?
-                       Sizzle.error( selector ) :
-                       // Cache the tokens
-                       tokenCache( selector, groups ).slice( 0 );
-}
-
-function toSelector( tokens ) {
-       var i = 0,
-               len = tokens.length,
-               selector = "";
-       for ( ; i < len; i++ ) {
-               selector += tokens[i].value;
-       }
-       return selector;
-}
-
-function addCombinator( matcher, combinator, base ) {
-       var dir = combinator.dir,
-               checkNonElements = base && dir === "parentNode",
-               doneName = done++;
-
-       return combinator.first ?
-               // Check against closest ancestor/preceding element
-               function( elem, context, xml ) {
-                       while ( (elem = elem[ dir ]) ) {
-                               if ( elem.nodeType === 1 || checkNonElements ) {
-                                       return matcher( elem, context, xml );
-                               }
-                       }
-               } :
-
-               // Check against all ancestor/preceding elements
-               function( elem, context, xml ) {
-                       var data, cache, outerCache,
-                               dirkey = dirruns + " " + doneName;
-
-                       // We can't set arbitrary data on XML nodes, so they don't benefit from dir caching
-                       if ( xml ) {
-                               while ( (elem = elem[ dir ]) ) {
-                                       if ( elem.nodeType === 1 || checkNonElements ) {
-                                               if ( matcher( elem, context, xml ) ) {
-                                                       return true;
-                                               }
-                                       }
-                               }
-                       } else {
-                               while ( (elem = elem[ dir ]) ) {
-                                       if ( elem.nodeType === 1 || checkNonElements ) {
-                                               outerCache = elem[ expando ] || (elem[ expando ] = {});
-                                               if ( (cache = outerCache[ dir ]) && cache[0] === dirkey ) {
-                                                       if ( (data = cache[1]) === true || data === cachedruns ) {
-                                                               return data === true;
-                                                       }
-                                               } else {
-                                                       cache = outerCache[ dir ] = [ dirkey ];
-                                                       cache[1] = matcher( elem, context, xml ) || cachedruns;
-                                                       if ( cache[1] === true ) {
-                                                               return true;
-                                                       }
-                                               }
-                                       }
-                               }
-                       }
-               };
-}
-
-function elementMatcher( matchers ) {
-       return matchers.length > 1 ?
-               function( elem, context, xml ) {
-                       var i = matchers.length;
-                       while ( i-- ) {
-                               if ( !matchers[i]( elem, context, xml ) ) {
-                                       return false;
-                               }
-                       }
-                       return true;
-               } :
-               matchers[0];
-}
-
-function condense( unmatched, map, filter, context, xml ) {
-       var elem,
-               newUnmatched = [],
-               i = 0,
-               len = unmatched.length,
-               mapped = map != null;
-
-       for ( ; i < len; i++ ) {
-               if ( (elem = unmatched[i]) ) {
-                       if ( !filter || filter( elem, context, xml ) ) {
-                               newUnmatched.push( elem );
-                               if ( mapped ) {
-                                       map.push( i );
-                               }
-                       }
-               }
-       }
-
-       return newUnmatched;
-}
-
-function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) {
-       if ( postFilter && !postFilter[ expando ] ) {
-               postFilter = setMatcher( postFilter );
-       }
-       if ( postFinder && !postFinder[ expando ] ) {
-               postFinder = setMatcher( postFinder, postSelector );
-       }
-       return markFunction(function( seed, results, context, xml ) {
-               var temp, i, elem,
-                       preMap = [],
-                       postMap = [],
-                       preexisting = results.length,
-
-                       // Get initial elements from seed or context
-                       elems = seed || multipleContexts( selector || "*", context.nodeType ? [ context ] : context, [] ),
-
-                       // Prefilter to get matcher input, preserving a map for seed-results synchronization
-                       matcherIn = preFilter && ( seed || !selector ) ?
-                               condense( elems, preMap, preFilter, context, xml ) :
-                               elems,
-
-                       matcherOut = matcher ?
-                               // If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results,
-                               postFinder || ( seed ? preFilter : preexisting || postFilter ) ?
-
-                                       // ...intermediate processing is necessary
-                                       [] :
-
-                                       // ...otherwise use results directly
-                                       results :
-                               matcherIn;
-
-               // Find primary matches
-               if ( matcher ) {
-                       matcher( matcherIn, matcherOut, context, xml );
-               }
-
-               // Apply postFilter
-               if ( postFilter ) {
-                       temp = condense( matcherOut, postMap );
-                       postFilter( temp, [], context, xml );
-
-                       // Un-match failing elements by moving them back to matcherIn
-                       i = temp.length;
-                       while ( i-- ) {
-                               if ( (elem = temp[i]) ) {
-                                       matcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem);
-                               }
-                       }
-               }
-
-               if ( seed ) {
-                       if ( postFinder || preFilter ) {
-                               if ( postFinder ) {
-                                       // Get the final matcherOut by condensing this intermediate into postFinder contexts
-                                       temp = [];
-                                       i = matcherOut.length;
-                                       while ( i-- ) {
-                                               if ( (elem = matcherOut[i]) ) {
-                                                       // Restore matcherIn since elem is not yet a final match
-                                                       temp.push( (matcherIn[i] = elem) );
-                                               }
-                                       }
-                                       postFinder( null, (matcherOut = []), temp, xml );
-                               }
-
-                               // Move matched elements from seed to results to keep them synchronized
-                               i = matcherOut.length;
-                               while ( i-- ) {
-                                       if ( (elem = matcherOut[i]) &&
-                                               (temp = postFinder ? indexOf.call( seed, elem ) : preMap[i]) > -1 ) {
-
-                                               seed[temp] = !(results[temp] = elem);
-                                       }
-                               }
-                       }
-
-               // Add elements to results, through postFinder if defined
-               } else {
-                       matcherOut = condense(
-                               matcherOut === results ?
-                                       matcherOut.splice( preexisting, matcherOut.length ) :
-                                       matcherOut
-                       );
-                       if ( postFinder ) {
-                               postFinder( null, results, matcherOut, xml );
-                       } else {
-                               push.apply( results, matcherOut );
-                       }
-               }
-       });
-}
-
-function matcherFromTokens( tokens ) {
-       var checkContext, matcher, j,
-               len = tokens.length,
-               leadingRelative = Expr.relative[ tokens[0].type ],
-               implicitRelative = leadingRelative || Expr.relative[" "],
-               i = leadingRelative ? 1 : 0,
-
-               // The foundational matcher ensures that elements are reachable from top-level context(s)
-               matchContext = addCombinator( function( elem ) {
-                       return elem === checkContext;
-               }, implicitRelative, true ),
-               matchAnyContext = addCombinator( function( elem ) {
-                       return indexOf.call( checkContext, elem ) > -1;
-               }, implicitRelative, true ),
-               matchers = [ function( elem, context, xml ) {
-                       return ( !leadingRelative && ( xml || context !== outermostContext ) ) || (
-                               (checkContext = context).nodeType ?
-                                       matchContext( elem, context, xml ) :
-                                       matchAnyContext( elem, context, xml ) );
-               } ];
-
-       for ( ; i < len; i++ ) {
-               if ( (matcher = Expr.relative[ tokens[i].type ]) ) {
-                       matchers = [ addCombinator(elementMatcher( matchers ), matcher) ];
-               } else {
-                       matcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches );
-
-                       // Return special upon seeing a positional matcher
-                       if ( matcher[ expando ] ) {
-                               // Find the next relative operator (if any) for proper handling
-                               j = ++i;
-                               for ( ; j < len; j++ ) {
-                                       if ( Expr.relative[ tokens[j].type ] ) {
-                                               break;
-                                       }
-                               }
-                               return setMatcher(
-                                       i > 1 && elementMatcher( matchers ),
-                                       i > 1 && toSelector(
-                                               // If the preceding token was a descendant combinator, insert an implicit any-element `*`
-                                               tokens.slice( 0, i - 1 ).concat({ value: tokens[ i - 2 ].type === " " ? "*" : "" })
-                                       ).replace( rtrim, "$1" ),
-                                       matcher,
-                                       i < j && matcherFromTokens( tokens.slice( i, j ) ),
-                                       j < len && matcherFromTokens( (tokens = tokens.slice( j )) ),
-                                       j < len && toSelector( tokens )
-                               );
-                       }
-                       matchers.push( matcher );
-               }
-       }
-
-       return elementMatcher( matchers );
-}
-
-function matcherFromGroupMatchers( elementMatchers, setMatchers ) {
-       // A counter to specify which element is currently being matched
-       var matcherCachedRuns = 0,
-               bySet = setMatchers.length > 0,
-               byElement = elementMatchers.length > 0,
-               superMatcher = function( seed, context, xml, results, expandContext ) {
-                       var elem, j, matcher,
-                               setMatched = [],
-                               matchedCount = 0,
-                               i = "0",
-                               unmatched = seed && [],
-                               outermost = expandContext != null,
-                               contextBackup = outermostContext,
-                               // We must always have either seed elements or context
-                               elems = seed || byElement && Expr.find["TAG"]( "*", expandContext && context.parentNode || context ),
-                               // Use integer dirruns iff this is the outermost matcher
-                               dirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.random() || 0.1);
-
-                       if ( outermost ) {
-                               outermostContext = context !== document && context;
-                               cachedruns = matcherCachedRuns;
-                       }
-
-                       // Add elements passing elementMatchers directly to results
-                       // Keep `i` a string if there are no elements so `matchedCount` will be "00" below
-                       for ( ; (elem = elems[i]) != null; i++ ) {
-                               if ( byElement && elem ) {
-                                       j = 0;
-                                       while ( (matcher = elementMatchers[j++]) ) {
-                                               if ( matcher( elem, context, xml ) ) {
-                                                       results.push( elem );
-                                                       break;
-                                               }
-                                       }
-                                       if ( outermost ) {
-                                               dirruns = dirrunsUnique;
-                                               cachedruns = ++matcherCachedRuns;
-                                       }
-                               }
-
-                               // Track unmatched elements for set filters
-                               if ( bySet ) {
-                                       // They will have gone through all possible matchers
-                                       if ( (elem = !matcher && elem) ) {
-                                               matchedCount--;
-                                       }
-
-                                       // Lengthen the array for every element, matched or not
-                                       if ( seed ) {
-                                               unmatched.push( elem );
-                                       }
-                               }
-                       }
-
-                       // Apply set filters to unmatched elements
-                       matchedCount += i;
-                       if ( bySet && i !== matchedCount ) {
-                               j = 0;
-                               while ( (matcher = setMatchers[j++]) ) {
-                                       matcher( unmatched, setMatched, context, xml );
-                               }
-
-                               if ( seed ) {
-                                       // Reintegrate element matches to eliminate the need for sorting
-                                       if ( matchedCount > 0 ) {
-                                               while ( i-- ) {
-                                                       if ( !(unmatched[i] || setMatched[i]) ) {
-                                                               setMatched[i] = pop.call( results );
-                                                       }
-                                               }
-                                       }
-
-                                       // Discard index placeholder values to get only actual matches
-                                       setMatched = condense( setMatched );
-                               }
-
-                               // Add matches to results
-                               push.apply( results, setMatched );
-
-                               // Seedless set matches succeeding multiple successful matchers stipulate sorting
-                               if ( outermost && !seed && setMatched.length > 0 &&
-                                       ( matchedCount + setMatchers.length ) > 1 ) {
-
-                                       Sizzle.uniqueSort( results );
-                               }
-                       }
-
-                       // Override manipulation of globals by nested matchers
-                       if ( outermost ) {
-                               dirruns = dirrunsUnique;
-                               outermostContext = contextBackup;
-                       }
-
-                       return unmatched;
-               };
-
-       return bySet ?
-               markFunction( superMatcher ) :
-               superMatcher;
-}
-
-compile = Sizzle.compile = function( selector, group /* Internal Use Only */ ) {
-       var i,
-               setMatchers = [],
-               elementMatchers = [],
-               cached = compilerCache[ selector + " " ];
-
-       if ( !cached ) {
-               // Generate a function of recursive functions that can be used to check each element
-               if ( !group ) {
-                       group = tokenize( selector );
-               }
-               i = group.length;
-               while ( i-- ) {
-                       cached = matcherFromTokens( group[i] );
-                       if ( cached[ expando ] ) {
-                               setMatchers.push( cached );
-                       } else {
-                               elementMatchers.push( cached );
-                       }
-               }
-
-               // Cache the compiled function
-               cached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) );
-       }
-       return cached;
-};
-
-function multipleContexts( selector, contexts, results ) {
-       var i = 0,
-               len = contexts.length;
-       for ( ; i < len; i++ ) {
-               Sizzle( selector, contexts[i], results );
-       }
-       return results;
-}
-
-function select( selector, context, results, seed ) {
-       var i, tokens, token, type, find,
-               match = tokenize( selector );
-
-       if ( !seed ) {
-               // Try to minimize operations if there is only one group
-               if ( match.length === 1 ) {
-
-                       // Take a shortcut and set the context if the root selector is an ID
-                       tokens = match[0] = match[0].slice( 0 );
-                       if ( tokens.length > 2 && (token = tokens[0]).type === "ID" &&
-                                       support.getById && context.nodeType === 9 && documentIsHTML &&
-                                       Expr.relative[ tokens[1].type ] ) {
-
-                               context = ( Expr.find["ID"]( token.matches[0].replace(runescape, funescape), context ) || [] )[0];
-                               if ( !context ) {
-                                       return results;
-                               }
-                               selector = selector.slice( tokens.shift().value.length );
-                       }
-
-                       // Fetch a seed set for right-to-left matching
-                       i = matchExpr["needsContext"].test( selector ) ? 0 : tokens.length;
-                       while ( i-- ) {
-                               token = tokens[i];
-
-                               // Abort if we hit a combinator
-                               if ( Expr.relative[ (type = token.type) ] ) {
-                                       break;
-                               }
-                               if ( (find = Expr.find[ type ]) ) {
-                                       // Search, expanding context for leading sibling combinators
-                                       if ( (seed = find(
-                                               token.matches[0].replace( runescape, funescape ),
-                                               rsibling.test( tokens[0].type ) && context.parentNode || context
-                                       )) ) {
-
-                                               // If seed is empty or no tokens remain, we can return early
-                                               tokens.splice( i, 1 );
-                                               selector = seed.length && toSelector( tokens );
-                                               if ( !selector ) {
-                                                       push.apply( results, seed );
-                                                       return results;
-                                               }
-
-                                               break;
-                                       }
-                               }
-                       }
-               }
-       }
-
-       // Compile and execute a filtering function
-       // Provide `match` to avoid retokenization if we modified the selector above
-       compile( selector, match )(
-               seed,
-               context,
-               !documentIsHTML,
-               results,
-               rsibling.test( selector )
-       );
-       return results;
-}
-
-// One-time assignments
-
-// Sort stability
-support.sortStable = expando.split("").sort( sortOrder ).join("") === expando;
-
-// Support: Chrome<14
-// Always assume duplicates if they aren't passed to the comparison function
-support.detectDuplicates = hasDuplicate;
-
-// Initialize against the default document
-setDocument();
-
-// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27)
-// Detached nodes confoundingly follow *each other*
-support.sortDetached = assert(function( div1 ) {
-       // Should return 1, but returns 4 (following)
-       return div1.compareDocumentPosition( document.createElement("div") ) & 1;
-});
-
-// Support: IE<8
-// Prevent attribute/property "interpolation"
-// http://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx
-if ( !assert(function( div ) {
-       div.innerHTML = "<a href='#'></a>";
-       return div.firstChild.getAttribute("href") === "#" ;
-}) ) {
-       addHandle( "type|href|height|width", function( elem, name, isXML ) {
-               if ( !isXML ) {
-                       return elem.getAttribute( name, name.toLowerCase() === "type" ? 1 : 2 );
-               }
-       });
-}
-
-// Support: IE<9
-// Use defaultValue in place of getAttribute("value")
-if ( !support.attributes || !assert(function( div ) {
-       div.innerHTML = "<input/>";
-       div.firstChild.setAttribute( "value", "" );
-       return div.firstChild.getAttribute( "value" ) === "";
-}) ) {
-       addHandle( "value", function( elem, name, isXML ) {
-               if ( !isXML && elem.nodeName.toLowerCase() === "input" ) {
-                       return elem.defaultValue;
-               }
-       });
-}
-
-// Support: IE<9
-// Use getAttributeNode to fetch booleans when getAttribute lies
-if ( !assert(function( div ) {
-       return div.getAttribute("disabled") == null;
-}) ) {
-       addHandle( booleans, function( elem, name, isXML ) {
-               var val;
-               if ( !isXML ) {
-                       return (val = elem.getAttributeNode( name )) && val.specified ?
-                               val.value :
-                               elem[ name ] === true ? name.toLowerCase() : null;
-               }
-       });
-}
-
-jQuery.find = Sizzle;
-jQuery.expr = Sizzle.selectors;
-jQuery.expr[":"] = jQuery.expr.pseudos;
-jQuery.unique = Sizzle.uniqueSort;
-jQuery.text = Sizzle.getText;
-jQuery.isXMLDoc = Sizzle.isXML;
-jQuery.contains = Sizzle.contains;
-
-
-})( window );
-// String to Object options format cache
-var optionsCache = {};
-
-// Convert String-formatted options into Object-formatted ones and store in cache
-function createOptions( options ) {
-       var object = optionsCache[ options ] = {};
-       jQuery.each( options.match( core_rnotwhite ) || [], function( _, flag ) {
-               object[ flag ] = true;
-       });
-       return object;
-}
-
-/*
- * Create a callback list using the following parameters:
- *
- *     options: an optional list of space-separated options that will change how
- *                     the callback list behaves or a more traditional option object
- *
- * By default a callback list will act like an event callback list and can be
- * "fired" multiple times.
- *
- * Possible options:
- *
- *     once:                   will ensure the callback list can only be fired once (like a Deferred)
- *
- *     memory:                 will keep track of previous values and will call any callback added
- *                                     after the list has been fired right away with the latest "memorized"
- *                                     values (like a Deferred)
- *
- *     unique:                 will ensure a callback can only be added once (no duplicate in the list)
- *
- *     stopOnFalse:    interrupt callings when a callback returns false
- *
- */
-jQuery.Callbacks = function( options ) {
-
-       // Convert options from String-formatted to Object-formatted if needed
-       // (we check in cache first)
-       options = typeof options === "string" ?
-               ( optionsCache[ options ] || createOptions( options ) ) :
-               jQuery.extend( {}, options );
-
-       var // Flag to know if list is currently firing
-               firing,
-               // Last fire value (for non-forgettable lists)
-               memory,
-               // Flag to know if list was already fired
-               fired,
-               // End of the loop when firing
-               firingLength,
-               // Index of currently firing callback (modified by remove if needed)
-               firingIndex,
-               // First callback to fire (used internally by add and fireWith)
-               firingStart,
-               // Actual callback list
-               list = [],
-               // Stack of fire calls for repeatable lists
-               stack = !options.once && [],
-               // Fire callbacks
-               fire = function( data ) {
-                       memory = options.memory && data;
-                       fired = true;
-                       firingIndex = firingStart || 0;
-                       firingStart = 0;
-                       firingLength = list.length;
-                       firing = true;
-                       for ( ; list && firingIndex < firingLength; firingIndex++ ) {
-                               if ( list[ firingIndex ].apply( data[ 0 ], data[ 1 ] ) === false && options.stopOnFalse ) {
-                                       memory = false; // To prevent further calls using add
-                                       break;
-                               }
-                       }
-                       firing = false;
-                       if ( list ) {
-                               if ( stack ) {
-                                       if ( stack.length ) {
-                                               fire( stack.shift() );
-                                       }
-                               } else if ( memory ) {
-                                       list = [];
-                               } else {
-                                       self.disable();
-                               }
-                       }
-               },
-               // Actual Callbacks object
-               self = {
-                       // Add a callback or a collection of callbacks to the list
-                       add: function() {
-                               if ( list ) {
-                                       // First, we save the current length
-                                       var start = list.length;
-                                       (function add( args ) {
-                                               jQuery.each( args, function( _, arg ) {
-                                                       var type = jQuery.type( arg );
-                                                       if ( type === "function" ) {
-                                                               if ( !options.unique || !self.has( arg ) ) {
-                                                                       list.push( arg );
-                                                               }
-                                                       } else if ( arg && arg.length && type !== "string" ) {
-                                                               // Inspect recursively
-                                                               add( arg );
-                                                       }
-                                               });
-                                       })( arguments );
-                                       // Do we need to add the callbacks to the
-                                       // current firing batch?
-                                       if ( firing ) {
-                                               firingLength = list.length;
-                                       // With memory, if we're not firing then
-                                       // we should call right away
-                                       } else if ( memory ) {
-                                               firingStart = start;
-                                               fire( memory );
-                                       }
-                               }
-                               return this;
-                       },
-                       // Remove a callback from the list
-                       remove: function() {
-                               if ( list ) {
-                                       jQuery.each( arguments, function( _, arg ) {
-                                               var index;
-                                               while( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) {
-                                                       list.splice( index, 1 );
-                                                       // Handle firing indexes
-                                                       if ( firing ) {
-                                                               if ( index <= firingLength ) {
-                                                                       firingLength--;
-                                                               }
-                                                               if ( index <= firingIndex ) {
-                                                                       firingIndex--;
-                                                               }
-                                                       }
-                                               }
-                                       });
-                               }
-                               return this;
-                       },
-                       // Check if a given callback is in the list.
-                       // If no argument is given, return whether or not list has callbacks attached.
-                       has: function( fn ) {
-                               return fn ? jQuery.inArray( fn, list ) > -1 : !!( list && list.length );
-                       },
-                       // Remove all callbacks from the list
-                       empty: function() {
-                               list = [];
-                               firingLength = 0;
-                               return this;
-                       },
-                       // Have the list do nothing anymore
-                       disable: function() {
-                               list = stack = memory = undefined;
-                               return this;
-                       },
-                       // Is it disabled?
-                       disabled: function() {
-                               return !list;
-                       },
-                       // Lock the list in its current state
-                       lock: function() {
-                               stack = undefined;
-                               if ( !memory ) {
-                                       self.disable();
-                               }
-                               return this;
-                       },
-                       // Is it locked?
-                       locked: function() {
-                               return !stack;
-                       },
-                       // Call all callbacks with the given context and arguments
-                       fireWith: function( context, args ) {
-                               if ( list && ( !fired || stack ) ) {
-                                       args = args || [];
-                                       args = [ context, args.slice ? args.slice() : args ];
-                                       if ( firing ) {
-                                               stack.push( args );
-                                       } else {
-                                               fire( args );
-                                       }
-                               }
-                               return this;
-                       },
-                       // Call all the callbacks with the given arguments
-                       fire: function() {
-                               self.fireWith( this, arguments );
-                               return this;
-                       },
-                       // To know if the callbacks have already been called at least once
-                       fired: function() {
-                               return !!fired;
-                       }
-               };
-
-       return self;
-};
-jQuery.extend({
-
-       Deferred: function( func ) {
-               var tuples = [
-                               // action, add listener, listener list, final state
-                               [ "resolve", "done", jQuery.Callbacks("once memory"), "resolved" ],
-                               [ "reject", "fail", jQuery.Callbacks("once memory"), "rejected" ],
-                               [ "notify", "progress", jQuery.Callbacks("memory") ]
-                       ],
-                       state = "pending",
-                       promise = {
-                               state: function() {
-                                       return state;
-                               },
-                               always: function() {
-                                       deferred.done( arguments ).fail( arguments );
-                                       return this;
-                               },
-                               then: function( /* fnDone, fnFail, fnProgress */ ) {
-                                       var fns = arguments;
-                                       return jQuery.Deferred(function( newDefer ) {
-                                               jQuery.each( tuples, function( i, tuple ) {
-                                                       var action = tuple[ 0 ],
-                                                               fn = jQuery.isFunction( fns[ i ] ) && fns[ i ];
-                                                       // deferred[ done | fail | progress ] for forwarding actions to newDefer
-                                                       deferred[ tuple[1] ](function() {
-                                                               var returned = fn && fn.apply( this, arguments );
-                                                               if ( returned && jQuery.isFunction( returned.promise ) ) {
-                                                                       returned.promise()
-                                                                               .done( newDefer.resolve )
-                                                                               .fail( newDefer.reject )
-                                                                               .progress( newDefer.notify );
-                                                               } else {
-                                                                       newDefer[ action + "With" ]( this === promise ? newDefer.promise() : this, fn ? [ returned ] : arguments );
-                                                               }
-                                                       });
-                                               });
-                                               fns = null;
-                                       }).promise();
-                               },
-                               // Get a promise for this deferred
-                               // If obj is provided, the promise aspect is added to the object
-                               promise: function( obj ) {
-                                       return obj != null ? jQuery.extend( obj, promise ) : promise;
-                               }
-                       },
-                       deferred = {};
-
-               // Keep pipe for back-compat
-               promise.pipe = promise.then;
-
-               // Add list-specific methods
-               jQuery.each( tuples, function( i, tuple ) {
-                       var list = tuple[ 2 ],
-                               stateString = tuple[ 3 ];
-
-                       // promise[ done | fail | progress ] = list.add
-                       promise[ tuple[1] ] = list.add;
-
-                       // Handle state
-                       if ( stateString ) {
-                               list.add(function() {
-                                       // state = [ resolved | rejected ]
-                                       state = stateString;
-
-                               // [ reject_list | resolve_list ].disable; progress_list.lock
-                               }, tuples[ i ^ 1 ][ 2 ].disable, tuples[ 2 ][ 2 ].lock );
-                       }
-
-                       // deferred[ resolve | reject | notify ]
-                       deferred[ tuple[0] ] = function() {
-                               deferred[ tuple[0] + "With" ]( this === deferred ? promise : this, arguments );
-                               return this;
-                       };
-                       deferred[ tuple[0] + "With" ] = list.fireWith;
-               });
-
-               // Make the deferred a promise
-               promise.promise( deferred );
-
-               // Call given func if any
-               if ( func ) {
-                       func.call( deferred, deferred );
-               }
-
-               // All done!
-               return deferred;
-       },
-
-       // Deferred helper
-       when: function( subordinate /* , ..., subordinateN */ ) {
-               var i = 0,
-                       resolveValues = core_slice.call( arguments ),
-                       length = resolveValues.length,
-
-                       // the count of uncompleted subordinates
-                       remaining = length !== 1 || ( subordinate && jQuery.isFunction( subordinate.promise ) ) ? length : 0,
-
-                       // the master Deferred. If resolveValues consist of only a single Deferred, just use that.
-                       deferred = remaining === 1 ? subordinate : jQuery.Deferred(),
-
-                       // Update function for both resolve and progress values
-                       updateFunc = function( i, contexts, values ) {
-                               return function( value ) {
-                                       contexts[ i ] = this;
-                                       values[ i ] = arguments.length > 1 ? core_slice.call( arguments ) : value;
-                                       if( values === progressValues ) {
-                                               deferred.notifyWith( contexts, values );
-                                       } else if ( !( --remaining ) ) {
-                                               deferred.resolveWith( contexts, values );
-                                       }
-                               };
-                       },
-
-                       progressValues, progressContexts, resolveContexts;
-
-               // add listeners to Deferred subordinates; treat others as resolved
-               if ( length > 1 ) {
-                       progressValues = new Array( length );
-                       progressContexts = new Array( length );
-                       resolveContexts = new Array( length );
-                       for ( ; i < length; i++ ) {
-                               if ( resolveValues[ i ] && jQuery.isFunction( resolveValues[ i ].promise ) ) {
-                                       resolveValues[ i ].promise()
-                                               .done( updateFunc( i, resolveContexts, resolveValues ) )
-                                               .fail( deferred.reject )
-                                               .progress( updateFunc( i, progressContexts, progressValues ) );
-                               } else {
-                                       --remaining;
-                               }
-                       }
-               }
-
-               // if we're not waiting on anything, resolve the master
-               if ( !remaining ) {
-                       deferred.resolveWith( resolveContexts, resolveValues );
-               }
-
-               return deferred.promise();
-       }
-});
-jQuery.support = (function( support ) {
-
-       var all, a, input, select, fragment, opt, eventName, isSupported, i,
-               div = document.createElement("div");
-
-       // Setup
-       div.setAttribute( "className", "t" );
-       div.innerHTML = "  <link/><table></table><a href='/a'>a</a><input type='checkbox'/>";
-
-       // Finish early in limited (non-browser) environments
-       all = div.getElementsByTagName("*") || [];
-       a = div.getElementsByTagName("a")[ 0 ];
-       if ( !a || !a.style || !all.length ) {
-               return support;
-       }
-
-       // First batch of tests
-       select = document.createElement("select");
-       opt = select.appendChild( document.createElement("option") );
-       input = div.getElementsByTagName("input")[ 0 ];
-
-       a.style.cssText = "top:1px;float:left;opacity:.5";
-
-       // Test setAttribute on camelCase class. If it works, we need attrFixes when doing get/setAttribute (ie6/7)
-       support.getSetAttribute = div.className !== "t";
-
-       // IE strips leading whitespace when .innerHTML is used
-       support.leadingWhitespace = div.firstChild.nodeType === 3;
-
-       // Make sure that tbody elements aren't automatically inserted
-       // IE will insert them into empty tables
-       support.tbody = !div.getElementsByTagName("tbody").length;
-
-       // Make sure that link elements get serialized correctly by innerHTML
-       // This requires a wrapper element in IE
-       support.htmlSerialize = !!div.getElementsByTagName("link").length;
-
-       // Get the style information from getAttribute
-       // (IE uses .cssText instead)
-       support.style = /top/.test( a.getAttribute("style") );
-
-       // Make sure that URLs aren't manipulated
-       // (IE normalizes it by default)
-       support.hrefNormalized = a.getAttribute("href") === "/a";
-
-       // Make sure that element opacity exists
-       // (IE uses filter instead)
-       // Use a regex to work around a WebKit issue. See #5145
-       support.opacity = /^0.5/.test( a.style.opacity );
-
-       // Verify style float existence
-       // (IE uses styleFloat instead of cssFloat)
-       support.cssFloat = !!a.style.cssFloat;
-
-       // Check the default checkbox/radio value ("" on WebKit; "on" elsewhere)
-       support.checkOn = !!input.value;
-
-       // Make sure that a selected-by-default option has a working selected property.
-       // (WebKit defaults to false instead of true, IE too, if it's in an optgroup)
-       support.optSelected = opt.selected;
-
-       // Tests for enctype support on a form (#6743)
-       support.enctype = !!document.createElement("form").enctype;
-
-       // Makes sure cloning an html5 element does not cause problems
-       // Where outerHTML is undefined, this still works
-       support.html5Clone = document.createElement("nav").cloneNode( true ).outerHTML !== "<:nav></:nav>";
-
-       // Will be defined later
-       support.inlineBlockNeedsLayout = false;
-       support.shrinkWrapBlocks = false;
-       support.pixelPosition = false;
-       support.deleteExpando = true;
-       support.noCloneEvent = true;
-       support.reliableMarginRight = true;
-       support.boxSizingReliable = true;
-
-       // Make sure checked status is properly cloned
-       input.checked = true;
-       support.noCloneChecked = input.cloneNode( true ).checked;
-
-       // Make sure that the options inside disabled selects aren't marked as disabled
-       // (WebKit marks them as disabled)
-       select.disabled = true;
-       support.optDisabled = !opt.disabled;
-
-       // Support: IE<9
-       try {
-               delete div.test;
-       } catch( e ) {
-               support.deleteExpando = false;
-       }
-
-       // Check if we can trust getAttribute("value")
-       input = document.createElement("input");
-       input.setAttribute( "value", "" );
-       support.input = input.getAttribute( "value" ) === "";
-
-       // Check if an input maintains its value after becoming a radio
-       input.value = "t";
-       input.setAttribute( "type", "radio" );
-       support.radioValue = input.value === "t";
-
-       // #11217 - WebKit loses check when the name is after the checked attribute
-       input.setAttribute( "checked", "t" );
-       input.setAttribute( "name", "t" );
-
-       fragment = document.createDocumentFragment();
-       fragment.appendChild( input );
-
-       // Check if a disconnected checkbox will retain its checked
-       // value of true after appended to the DOM (IE6/7)
-       support.appendChecked = input.checked;
-
-       // WebKit doesn't clone checked state correctly in fragments
-       support.checkClone = fragment.cloneNode( true ).cloneNode( true ).lastChild.checked;
-
-       // Support: IE<9
-       // Opera does not clone events (and typeof div.attachEvent === undefined).
-       // IE9-10 clones events bound via attachEvent, but they don't trigger with .click()
-       if ( div.attachEvent ) {
-               div.attachEvent( "onclick", function() {
-                       support.noCloneEvent = false;
-               });
-
-               div.cloneNode( true ).click();
-       }
-
-       // Support: IE<9 (lack submit/change bubble), Firefox 17+ (lack focusin event)
-       // Beware of CSP restrictions (https://developer.mozilla.org/en/Security/CSP)
-       for ( i in { submit: true, change: true, focusin: true }) {
-               div.setAttribute( eventName = "on" + i, "t" );
-
-               support[ i + "Bubbles" ] = eventName in window || div.attributes[ eventName ].expando === false;
-       }
-
-       div.style.backgroundClip = "content-box";
-       div.cloneNode( true ).style.backgroundClip = "";
-       support.clearCloneStyle = div.style.backgroundClip === "content-box";
-
-       // Support: IE<9
-       // Iteration over object's inherited properties before its own.
-       for ( i in jQuery( support ) ) {
-               break;
-       }
-       support.ownLast = i !== "0";
-
-       // Run tests that need a body at doc ready
-       jQuery(function() {
-               var container, marginDiv, tds,
-                       divReset = "padding:0;margin:0;border:0;display:block;box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;",
-                       body = document.getElementsByTagName("body")[0];
-
-               if ( !body ) {
-                       // Return for frameset docs that don't have a body
-                       return;
-               }
-
-               container = document.createElement("div");
-               container.style.cssText = "border:0;width:0;height:0;position:absolute;top:0;left:-9999px;margin-top:1px";
-
-               body.appendChild( container ).appendChild( div );
-
-               // Support: IE8
-               // Check if table cells still have offsetWidth/Height when they are set
-               // to display:none and there are still other visible table cells in a
-               // table row; if so, offsetWidth/Height are not reliable for use when
-               // determining if an element has been hidden directly using
-               // display:none (it is still safe to use offsets if a parent element is
-               // hidden; don safety goggles and see bug #4512 for more information).
-               div.innerHTML = "<table><tr><td></td><td>t</td></tr></table>";
-               tds = div.getElementsByTagName("td");
-               tds[ 0 ].style.cssText = "padding:0;margin:0;border:0;display:none";
-               isSupported = ( tds[ 0 ].offsetHeight === 0 );
-
-               tds[ 0 ].style.display = "";
-               tds[ 1 ].style.display = "none";
-
-               // Support: IE8
-               // Check if empty table cells still have offsetWidth/Height
-               support.reliableHiddenOffsets = isSupported && ( tds[ 0 ].offsetHeight === 0 );
-
-               // Check box-sizing and margin behavior.
-               div.innerHTML = "";
-               div.style.cssText = "box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%;";
-
-               // Workaround failing boxSizing test due to offsetWidth returning wrong value
-               // with some non-1 values of body zoom, ticket #13543
-               jQuery.swap( body, body.style.zoom != null ? { zoom: 1 } : {}, function() {
-                       support.boxSizing = div.offsetWidth === 4;
-               });
-
-               // Use window.getComputedStyle because jsdom on node.js will break without it.
-               if ( window.getComputedStyle ) {
-                       support.pixelPosition = ( window.getComputedStyle( div, null ) || {} ).top !== "1%";
-                       support.boxSizingReliable = ( window.getComputedStyle( div, null ) || { width: "4px" } ).width === "4px";
-
-                       // Check if div with explicit width and no margin-right incorrectly
-                       // gets computed margin-right based on width of container. (#3333)
-                       // Fails in WebKit before Feb 2011 nightlies
-                       // WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right
-                       marginDiv = div.appendChild( document.createElement("div") );
-                       marginDiv.style.cssText = div.style.cssText = divReset;
-                       marginDiv.style.marginRight = marginDiv.style.width = "0";
-                       div.style.width = "1px";
-
-                       support.reliableMarginRight =
-                               !parseFloat( ( window.getComputedStyle( marginDiv, null ) || {} ).marginRight );
-               }
-
-               if ( typeof div.style.zoom !== core_strundefined ) {
-                       // Support: IE<8
-                       // Check if natively block-level elements act like inline-block
-                       // elements when setting their display to 'inline' and giving
-                       // them layout
-                       div.innerHTML = "";
-                       div.style.cssText = divReset + "width:1px;padding:1px;display:inline;zoom:1";
-                       support.inlineBlockNeedsLayout = ( div.offsetWidth === 3 );
-
-                       // Support: IE6
-                       // Check if elements with layout shrink-wrap their children
-                       div.style.display = "block";
-                       div.innerHTML = "<div></div>";
-                       div.firstChild.style.width = "5px";
-                       support.shrinkWrapBlocks = ( div.offsetWidth !== 3 );
-
-                       if ( support.inlineBlockNeedsLayout ) {
-                               // Prevent IE 6 from affecting layout for positioned elements #11048
-                               // Prevent IE from shrinking the body in IE 7 mode #12869
-                               // Support: IE<8
-                               body.style.zoom = 1;
-                       }
-               }
-
-               body.removeChild( container );
-
-               // Null elements to avoid leaks in IE
-               container = div = tds = marginDiv = null;
-       });
-
-       // Null elements to avoid leaks in IE
-       all = select = fragment = opt = a = input = null;
-
-       return support;
-})({});
-
-var rbrace = /(?:\{[\s\S]*\}|\[[\s\S]*\])$/,
-       rmultiDash = /([A-Z])/g;
-
-function internalData( elem, name, data, pvt /* Internal Use Only */ ){
-       if ( !jQuery.acceptData( elem ) ) {
-               return;
-       }
-
-       var ret, thisCache,
-               internalKey = jQuery.expando,
-
-               // We have to handle DOM nodes and JS objects differently because IE6-7
-               // can't GC object references properly across the DOM-JS boundary
-               isNode = elem.nodeType,
-
-               // Only DOM nodes need the global jQuery cache; JS object data is
-               // attached directly to the object so GC can occur automatically
-               cache = isNode ? jQuery.cache : elem,
-
-               // Only defining an ID for JS objects if its cache already exists allows
-               // the code to shortcut on the same path as a DOM node with no cache
-               id = isNode ? elem[ internalKey ] : elem[ internalKey ] && internalKey;
-
-       // Avoid doing any more work than we need to when trying to get data on an
-       // object that has no data at all
-       if ( (!id || !cache[id] || (!pvt && !cache[id].data)) && data === undefined && typeof name === "string" ) {
-               return;
-       }
-
-       if ( !id ) {
-               // Only DOM nodes need a new unique ID for each element since their data
-               // ends up in the global cache
-               if ( isNode ) {
-                       id = elem[ internalKey ] = core_deletedIds.pop() || jQuery.guid++;
-               } else {
-                       id = internalKey;
-               }
-       }
-
-       if ( !cache[ id ] ) {
-               // Avoid exposing jQuery metadata on plain JS objects when the object
-               // is serialized using JSON.stringify
-               cache[ id ] = isNode ? {} : { toJSON: jQuery.noop };
-       }
-
-       // An object can be passed to jQuery.data instead of a key/value pair; this gets
-       // shallow copied over onto the existing cache
-       if ( typeof name === "object" || typeof name === "function" ) {
-               if ( pvt ) {
-                       cache[ id ] = jQuery.extend( cache[ id ], name );
-               } else {
-                       cache[ id ].data = jQuery.extend( cache[ id ].data, name );
-               }
-       }
-
-       thisCache = cache[ id ];
-
-       // jQuery data() is stored in a separate object inside the object's internal data
-       // cache in order to avoid key collisions between internal data and user-defined
-       // data.
-       if ( !pvt ) {
-               if ( !thisCache.data ) {
-                       thisCache.data = {};
-               }
-
-               thisCache = thisCache.data;
-       }
-
-       if ( data !== undefined ) {
-               thisCache[ jQuery.camelCase( name ) ] = data;
-       }
-
-       // Check for both converted-to-camel and non-converted data property names
-       // If a data property was specified
-       if ( typeof name === "string" ) {
-
-               // First Try to find as-is property data
-               ret = thisCache[ name ];
-
-               // Test for null|undefined property data
-               if ( ret == null ) {
-
-                       // Try to find the camelCased property
-                       ret = thisCache[ jQuery.camelCase( name ) ];
-               }
-       } else {
-               ret = thisCache;
-       }
-
-       return ret;
-}
-
-function internalRemoveData( elem, name, pvt ) {
-       if ( !jQuery.acceptData( elem ) ) {
-               return;
-       }
-
-       var thisCache, i,
-               isNode = elem.nodeType,
-
-               // See jQuery.data for more information
-               cache = isNode ? jQuery.cache : elem,
-               id = isNode ? elem[ jQuery.expando ] : jQuery.expando;
-
-       // If there is already no cache entry for this object, there is no
-       // purpose in continuing
-       if ( !cache[ id ] ) {
-               return;
-       }
-
-       if ( name ) {
-
-               thisCache = pvt ? cache[ id ] : cache[ id ].data;
-
-               if ( thisCache ) {
-
-                       // Support array or space separated string names for data keys
-                       if ( !jQuery.isArray( name ) ) {
-
-                               // try the string as a key before any manipulation
-                               if ( name in thisCache ) {
-                                       name = [ name ];
-                               } else {
-
-                                       // split the camel cased version by spaces unless a key with the spaces exists
-                                       name = jQuery.camelCase( name );
-                                       if ( name in thisCache ) {
-                                               name = [ name ];
-                                       } else {
-                                               name = name.split(" ");
-                                       }
-                               }
-                       } else {
-                               // If "name" is an array of keys...
-                               // When data is initially created, via ("key", "val") signature,
-                               // keys will be converted to camelCase.
-                               // Since there is no way to tell _how_ a key was added, remove
-                               // both plain key and camelCase key. #12786
-                               // This will only penalize the array argument path.
-                               name = name.concat( jQuery.map( name, jQuery.camelCase ) );
-                       }
-
-                       i = name.length;
-                       while ( i-- ) {
-                               delete thisCache[ name[i] ];
-                       }
-
-                       // If there is no data left in the cache, we want to continue
-                       // and let the cache object itself get destroyed
-                       if ( pvt ? !isEmptyDataObject(thisCache) : !jQuery.isEmptyObject(thisCache) ) {
-                               return;
-                       }
-               }
-       }
-
-       // See jQuery.data for more information
-       if ( !pvt ) {
-               delete cache[ id ].data;
-
-               // Don't destroy the parent cache unless the internal data object
-               // had been the only thing left in it
-               if ( !isEmptyDataObject( cache[ id ] ) ) {
-                       return;
-               }
-       }
-
-       // Destroy the cache
-       if ( isNode ) {
-               jQuery.cleanData( [ elem ], true );
-
-       // Use delete when supported for expandos or `cache` is not a window per isWindow (#10080)
-       /* jshint eqeqeq: false */
-       } else if ( jQuery.support.deleteExpando || cache != cache.window ) {
-               /* jshint eqeqeq: true */
-               delete cache[ id ];
-
-       // When all else fails, null
-       } else {
-               cache[ id ] = null;
-       }
-}
-
-jQuery.extend({
-       cache: {},
-
-       // The following elements throw uncatchable exceptions if you
-       // attempt to add expando properties to them.
-       noData: {
-               "applet": true,
-               "embed": true,
-               // Ban all objects except for Flash (which handle expandos)
-               "object": "clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
-       },
-
-       hasData: function( elem ) {
-               elem = elem.nodeType ? jQuery.cache[ elem[jQuery.expando] ] : elem[ jQuery.expando ];
-               return !!elem && !isEmptyDataObject( elem );
-       },
-
-       data: function( elem, name, data ) {
-               return internalData( elem, name, data );
-       },
-
-       removeData: function( elem, name ) {
-               return internalRemoveData( elem, name );
-       },
-
-       // For internal use only.
-       _data: function( elem, name, data ) {
-               return internalData( elem, name, data, true );
-       },
-
-       _removeData: function( elem, name ) {
-               return internalRemoveData( elem, name, true );
-       },
-
-       // A method for determining if a DOM node can handle the data expando
-       acceptData: function( elem ) {
-               // Do not set data on non-element because it will not be cleared (#8335).
-               if ( elem.nodeType && elem.nodeType !== 1 && elem.nodeType !== 9 ) {
-                       return false;
-               }
-
-               var noData = elem.nodeName && jQuery.noData[ elem.nodeName.toLowerCase() ];
-
-               // nodes accept data unless otherwise specified; rejection can be conditional
-               return !noData || noData !== true && elem.getAttribute("classid") === noData;
-       }
-});
-
-jQuery.fn.extend({
-       data: function( key, value ) {
-               var attrs, name,
-                       data = null,
-                       i = 0,
-                       elem = this[0];
-
-               // Special expections of .data basically thwart jQuery.access,
-               // so implement the relevant behavior ourselves
-
-               // Gets all values
-               if ( key === undefined ) {
-                       if ( this.length ) {
-                               data = jQuery.data( elem );
-
-                               if ( elem.nodeType === 1 && !jQuery._data( elem, "parsedAttrs" ) ) {
-                                       attrs = elem.attributes;
-                                       for ( ; i < attrs.length; i++ ) {
-                                               name = attrs[i].name;
-
-                                               if ( name.indexOf("data-") === 0 ) {
-                                                       name = jQuery.camelCase( name.slice(5) );
-
-                                                       dataAttr( elem, name, data[ name ] );
-                                               }
-                                       }
-                                       jQuery._data( elem, "parsedAttrs", true );
-                               }
-                       }
-
-                       return data;
-               }
-
-               // Sets multiple values
-               if ( typeof key === "object" ) {
-                       return this.each(function() {
-                               jQuery.data( this, key );
-                       });
-               }
-
-               return arguments.length > 1 ?
-
-                       // Sets one value
-                       this.each(function() {
-                               jQuery.data( this, key, value );
-                       }) :
-
-                       // Gets one value
-                       // Try to fetch any internally stored data first
-                       elem ? dataAttr( elem, key, jQuery.data( elem, key ) ) : null;
-       },
-
-       removeData: function( key ) {
-               return this.each(function() {
-                       jQuery.removeData( this, key );
-               });
-       }
-});
-
-function dataAttr( elem, key, data ) {
-       // If nothing was found internally, try to fetch any
-       // data from the HTML5 data-* attribute
-       if ( data === undefined && elem.nodeType === 1 ) {
-
-               var name = "data-" + key.replace( rmultiDash, "-$1" ).toLowerCase();
-
-               data = elem.getAttribute( name );
-
-               if ( typeof data === "string" ) {
-                       try {
-                               data = data === "true" ? true :
-                                       data === "false" ? false :
-                                       data === "null" ? null :
-                                       // Only convert to a number if it doesn't change the string
-                                       +data + "" === data ? +data :
-                                       rbrace.test( data ) ? jQuery.parseJSON( data ) :
-                                               data;
-                       } catch( e ) {}
-
-                       // Make sure we set the data so it isn't changed later
-                       jQuery.data( elem, key, data );
-
-               } else {
-                       data = undefined;
-               }
-       }
-
-       return data;
-}
-
-// checks a cache object for emptiness
-function isEmptyDataObject( obj ) {
-       var name;
-       for ( name in obj ) {
-
-               // if the public data object is empty, the private is still empty
-               if ( name === "data" && jQuery.isEmptyObject( obj[name] ) ) {
-                       continue;
-               }
-               if ( name !== "toJSON" ) {
-                       return false;
-               }
-       }
-
-       return true;
-}
-jQuery.extend({
-       queue: function( elem, type, data ) {
-               var queue;
-
-               if ( elem ) {
-                       type = ( type || "fx" ) + "queue";
-                       queue = jQuery._data( elem, type );
-
-                       // Speed up dequeue by getting out quickly if this is just a lookup
-                       if ( data ) {
-                               if ( !queue || jQuery.isArray(data) ) {
-                                       queue = jQuery._data( elem, type, jQuery.makeArray(data) );
-                               } else {
-                                       queue.push( data );
-                               }
-                       }
-                       return queue || [];
-               }
-       },
-
-       dequeue: function( elem, type ) {
-               type = type || "fx";
-
-               var queue = jQuery.queue( elem, type ),
-                       startLength = queue.length,
-                       fn = queue.shift(),
-                       hooks = jQuery._queueHooks( elem, type ),
-                       next = function() {
-                               jQuery.dequeue( elem, type );
-                       };
-
-               // If the fx queue is dequeued, always remove the progress sentinel
-               if ( fn === "inprogress" ) {
-                       fn = queue.shift();
-                       startLength--;
-               }
-
-               if ( fn ) {
-
-                       // Add a progress sentinel to prevent the fx queue from being
-                       // automatically dequeued
-                       if ( type === "fx" ) {
-                               queue.unshift( "inprogress" );
-                       }
-
-                       // clear up the last queue stop function
-                       delete hooks.stop;
-                       fn.call( elem, next, hooks );
-               }
-
-               if ( !startLength && hooks ) {
-                       hooks.empty.fire();
-               }
-       },
-
-       // not intended for public consumption - generates a queueHooks object, or returns the current one
-       _queueHooks: function( elem, type ) {
-               var key = type + "queueHooks";
-               return jQuery._data( elem, key ) || jQuery._data( elem, key, {
-                       empty: jQuery.Callbacks("once memory").add(function() {
-                               jQuery._removeData( elem, type + "queue" );
-                               jQuery._removeData( elem, key );
-                       })
-               });
-       }
-});
-
-jQuery.fn.extend({
-       queue: function( type, data ) {
-               var setter = 2;
-
-               if ( typeof type !== "string" ) {
-                       data = type;
-                       type = "fx";
-                       setter--;
-               }
-
-               if ( arguments.length < setter ) {
-                       return jQuery.queue( this[0], type );
-               }
-
-               return data === undefined ?
-                       this :
-                       this.each(function() {
-                               var queue = jQuery.queue( this, type, data );
-
-                               // ensure a hooks for this queue
-                               jQuery._queueHooks( this, type );
-
-                               if ( type === "fx" && queue[0] !== "inprogress" ) {
-                                       jQuery.dequeue( this, type );
-                               }
-                       });
-       },
-       dequeue: function( type ) {
-               return this.each(function() {
-                       jQuery.dequeue( this, type );
-               });
-       },
-       // Based off of the plugin by Clint Helfers, with permission.
-       // http://blindsignals.com/index.php/2009/07/jquery-delay/
-       delay: function( time, type ) {
-               time = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time;
-               type = type || "fx";
-
-               return this.queue( type, function( next, hooks ) {
-                       var timeout = setTimeout( next, time );
-                       hooks.stop = function() {
-                               clearTimeout( timeout );
-                       };
-               });
-       },
-       clearQueue: function( type ) {
-               return this.queue( type || "fx", [] );
-       },
-       // Get a promise resolved when queues of a certain type
-       // are emptied (fx is the type by default)
-       promise: function( type, obj ) {
-               var tmp,
-                       count = 1,
-                       defer = jQuery.Deferred(),
-                       elements = this,
-                       i = this.length,
-                       resolve = function() {
-                               if ( !( --count ) ) {
-                                       defer.resolveWith( elements, [ elements ] );
-                               }
-                       };
-
-               if ( typeof type !== "string" ) {
-                       obj = type;
-                       type = undefined;
-               }
-               type = type || "fx";
-
-               while( i-- ) {
-                       tmp = jQuery._data( elements[ i ], type + "queueHooks" );
-                       if ( tmp && tmp.empty ) {
-                               count++;
-                               tmp.empty.add( resolve );
-                       }
-               }
-               resolve();
-               return defer.promise( obj );
-       }
-});
-var nodeHook, boolHook,
-       rclass = /[\t\r\n\f]/g,
-       rreturn = /\r/g,
-       rfocusable = /^(?:input|select|textarea|button|object)$/i,
-       rclickable = /^(?:a|area)$/i,
-       ruseDefault = /^(?:checked|selected)$/i,
-       getSetAttribute = jQuery.support.getSetAttribute,
-       getSetInput = jQuery.support.input;
-
-jQuery.fn.extend({
-       attr: function( name, value ) {
-               return jQuery.access( this, jQuery.attr, name, value, arguments.length > 1 );
-       },
-
-       removeAttr: function( name ) {
-               return this.each(function() {
-                       jQuery.removeAttr( this, name );
-               });
-       },
-
-       prop: function( name, value ) {
-               return jQuery.access( this, jQuery.prop, name, value, arguments.length > 1 );
-       },
-
-       removeProp: function( name ) {
-               name = jQuery.propFix[ name ] || name;
-               return this.each(function() {
-                       // try/catch handles cases where IE balks (such as removing a property on window)
-                       try {
-                               this[ name ] = undefined;
-                               delete this[ name ];
-                       } catch( e ) {}
-               });
-       },
-
-       addClass: function( value ) {
-               var classes, elem, cur, clazz, j,
-                       i = 0,
-                       len = this.length,
-                       proceed = typeof value === "string" && value;
-
-               if ( jQuery.isFunction( value ) ) {
-                       return this.each(function( j ) {
-                               jQuery( this ).addClass( value.call( this, j, this.className ) );
-                       });
-               }
-
-               if ( proceed ) {
-                       // The disjunction here is for better compressibility (see removeClass)
-                       classes = ( value || "" ).match( core_rnotwhite ) || [];
-
-                       for ( ; i < len; i++ ) {
-                               elem = this[ i ];
-                               cur = elem.nodeType === 1 && ( elem.className ?
-                                       ( " " + elem.className + " " ).replace( rclass, " " ) :
-                                       " "
-                               );
-
-                               if ( cur ) {
-                                       j = 0;
-                                       while ( (clazz = classes[j++]) ) {
-                                               if ( cur.indexOf( " " + clazz + " " ) < 0 ) {
-                                                       cur += clazz + " ";
-                                               }
-                                       }
-                                       elem.className = jQuery.trim( cur );
-
-                               }
-                       }
-               }
-
-               return this;
-       },
-
-       removeClass: function( value ) {
-               var classes, elem, cur, clazz, j,
-                       i = 0,
-                       len = this.length,
-                       proceed = arguments.length === 0 || typeof value === "string" && value;
-
-               if ( jQuery.isFunction( value ) ) {
-                       return this.each(function( j ) {
-                               jQuery( this ).removeClass( value.call( this, j, this.className ) );
-                       });
-               }
-               if ( proceed ) {
-                       classes = ( value || "" ).match( core_rnotwhite ) || [];
-
-                       for ( ; i < len; i++ ) {
-                               elem = this[ i ];
-                               // This expression is here for better compressibility (see addClass)
-                               cur = elem.nodeType === 1 && ( elem.className ?
-                                       ( " " + elem.className + " " ).replace( rclass, " " ) :
-                                       ""
-                               );
-
-                               if ( cur ) {
-                                       j = 0;
-                                       while ( (clazz = classes[j++]) ) {
-                                               // Remove *all* instances
-                                               while ( cur.indexOf( " " + clazz + " " ) >= 0 ) {
-                                                       cur = cur.replace( " " + clazz + " ", " " );
-                                               }
-                                       }
-                                       elem.className = value ? jQuery.trim( cur ) : "";
-                               }
-                       }
-               }
-
-               return this;
-       },
-
-       toggleClass: function( value, stateVal ) {
-               var type = typeof value;
-
-               if ( typeof stateVal === "boolean" && type === "string" ) {
-                       return stateVal ? this.addClass( value ) : this.removeClass( value );
-               }
-
-               if ( jQuery.isFunction( value ) ) {
-                       return this.each(function( i ) {
-                               jQuery( this ).toggleClass( value.call(this, i, this.className, stateVal), stateVal );
-                       });
-               }
-
-               return this.each(function() {
-                       if ( type === "string" ) {
-                               // toggle individual class names
-                               var className,
-                                       i = 0,
-                                       self = jQuery( this ),
-                                       classNames = value.match( core_rnotwhite ) || [];
-
-                               while ( (className = classNames[ i++ ]) ) {
-                                       // check each className given, space separated list
-                                       if ( self.hasClass( className ) ) {
-                                               self.removeClass( className );
-                                       } else {
-                                               self.addClass( className );
-                                       }
-                               }
-
-                       // Toggle whole class name
-                       } else if ( type === core_strundefined || type === "boolean" ) {
-                               if ( this.className ) {
-                                       // store className if set
-                                       jQuery._data( this, "__className__", this.className );
-                               }
-
-                               // If the element has a class name or if we're passed "false",
-                               // then remove the whole classname (if there was one, the above saved it).
-                               // Otherwise bring back whatever was previously saved (if anything),
-                               // falling back to the empty string if nothing was stored.
-                               this.className = this.className || value === false ? "" : jQuery._data( this, "__className__" ) || "";
-                       }
-               });
-       },
-
-       hasClass: function( selector ) {
-               var className = " " + selector + " ",
-                       i = 0,
-                       l = this.length;
-               for ( ; i < l; i++ ) {
-                       if ( this[i].nodeType === 1 && (" " + this[i].className + " ").replace(rclass, " ").indexOf( className ) >= 0 ) {
-                               return true;
-                       }
-               }
-
-               return false;
-       },
-
-       val: function( value ) {
-               var ret, hooks, isFunction,
-                       elem = this[0];
-
-               if ( !arguments.length ) {
-                       if ( elem ) {
-                               hooks = jQuery.valHooks[ elem.type ] || jQuery.valHooks[ elem.nodeName.toLowerCase() ];
-
-                               if ( hooks && "get" in hooks && (ret = hooks.get( elem, "value" )) !== undefined ) {
-                                       return ret;
-                               }
-
-                               ret = elem.value;
-
-                               return typeof ret === "string" ?
-                                       // handle most common string cases
-                                       ret.replace(rreturn, "") :
-                                       // handle cases where value is null/undef or number
-                                       ret == null ? "" : ret;
-                       }
-
-                       return;
-               }
-
-               isFunction = jQuery.isFunction( value );
-
-               return this.each(function( i ) {
-                       var val;
-
-                       if ( this.nodeType !== 1 ) {
-                               return;
-                       }
-
-                       if ( isFunction ) {
-                               val = value.call( this, i, jQuery( this ).val() );
-                       } else {
-                               val = value;
-                       }
-
-                       // Treat null/undefined as ""; convert numbers to string
-                       if ( val == null ) {
-                               val = "";
-                       } else if ( typeof val === "number" ) {
-                               val += "";
-                       } else if ( jQuery.isArray( val ) ) {
-                               val = jQuery.map(val, function ( value ) {
-                                       return value == null ? "" : value + "";
-                               });
-                       }
-
-                       hooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ];
-
-                       // If set returns undefined, fall back to normal setting
-                       if ( !hooks || !("set" in hooks) || hooks.set( this, val, "value" ) === undefined ) {
-                               this.value = val;
-                       }
-               });
-       }
-});
-
-jQuery.extend({
-       valHooks: {
-               option: {
-                       get: function( elem ) {
-                               // Use proper attribute retrieval(#6932, #12072)
-                               var val = jQuery.find.attr( elem, "value" );
-                               return val != null ?
-                                       val :
-                                       elem.text;
-                       }
-               },
-               select: {
-                       get: function( elem ) {
-                               var value, option,
-                                       options = elem.options,
-                                       index = elem.selectedIndex,
-                                       one = elem.type === "select-one" || index < 0,
-                                       values = one ? null : [],
-                                       max = one ? index + 1 : options.length,
-                                       i = index < 0 ?
-                                               max :
-                                               one ? index : 0;
-
-                               // Loop through all the selected options
-                               for ( ; i < max; i++ ) {
-                                       option = options[ i ];
-
-                                       // oldIE doesn't update selected after form reset (#2551)
-                                       if ( ( option.selected || i === index ) &&
-                                                       // Don't return options that are disabled or in a disabled optgroup
-                                                       ( jQuery.support.optDisabled ? !option.disabled : option.getAttribute("disabled") === null ) &&
-                                                       ( !option.parentNode.disabled || !jQuery.nodeName( option.parentNode, "optgroup" ) ) ) {
-
-                                               // Get the specific value for the option
-                                               value = jQuery( option ).val();
-
-                                               // We don't need an array for one selects
-                                               if ( one ) {
-                                                       return value;
-                                               }
-
-                                               // Multi-Selects return an array
-                                               values.push( value );
-                                       }
-                               }
-
-                               return values;
-                       },
-
-                       set: function( elem, value ) {
-                               var optionSet, option,
-                                       options = elem.options,
-                                       values = jQuery.makeArray( value ),
-                                       i = options.length;
-
-                               while ( i-- ) {
-                                       option = options[ i ];
-                                       if ( (option.selected = jQuery.inArray( jQuery(option).val(), values ) >= 0) ) {
-                                               optionSet = true;
-                                       }
-                               }
-
-                               // force browsers to behave consistently when non-matching value is set
-                               if ( !optionSet ) {
-                                       elem.selectedIndex = -1;
-                               }
-                               return values;
-                       }
-               }
-       },
-
-       attr: function( elem, name, value ) {
-               var hooks, ret,
-                       nType = elem.nodeType;
-
-               // don't get/set attributes on text, comment and attribute nodes
-               if ( !elem || nType === 3 || nType === 8 || nType === 2 ) {
-                       return;
-               }
-
-               // Fallback to prop when attributes are not supported
-               if ( typeof elem.getAttribute === core_strundefined ) {
-                       return jQuery.prop( elem, name, value );
-               }
-
-               // All attributes are lowercase
-               // Grab necessary hook if one is defined
-               if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {
-                       name = name.toLowerCase();
-                       hooks = jQuery.attrHooks[ name ] ||
-                               ( jQuery.expr.match.bool.test( name ) ? boolHook : nodeHook );
-               }
-
-               if ( value !== undefined ) {
-
-                       if ( value === null ) {
-                               jQuery.removeAttr( elem, name );
-
-                       } else if ( hooks && "set" in hooks && (ret = hooks.set( elem, value, name )) !== undefined ) {
-                               return ret;
-
-                       } else {
-                               elem.setAttribute( name, value + "" );
-                               return value;
-                       }
-
-               } else if ( hooks && "get" in hooks && (ret = hooks.get( elem, name )) !== null ) {
-                       return ret;
-
-               } else {
-                       ret = jQuery.find.attr( elem, name );
-
-                       // Non-existent attributes return null, we normalize to undefined
-                       return ret == null ?
-                               undefined :
-                               ret;
-               }
-       },
-
-       removeAttr: function( elem, value ) {
-               var name, propName,
-                       i = 0,
-                       attrNames = value && value.match( core_rnotwhite );
-
-               if ( attrNames && elem.nodeType === 1 ) {
-                       while ( (name = attrNames[i++]) ) {
-                               propName = jQuery.propFix[ name ] || name;
-
-                               // Boolean attributes get special treatment (#10870)
-                               if ( jQuery.expr.match.bool.test( name ) ) {
-                                       // Set corresponding property to false
-                                       if ( getSetInput && getSetAttribute || !ruseDefault.test( name ) ) {
-                                               elem[ propName ] = false;
-                                       // Support: IE<9
-                                       // Also clear defaultChecked/defaultSelected (if appropriate)
-                                       } else {
-                                               elem[ jQuery.camelCase( "default-" + name ) ] =
-                                                       elem[ propName ] = false;
-                                       }
-
-                               // See #9699 for explanation of this approach (setting first, then removal)
-                               } else {
-                                       jQuery.attr( elem, name, "" );
-                               }
-
-                               elem.removeAttribute( getSetAttribute ? name : propName );
-                       }
-               }
-       },
-
-       attrHooks: {
-               type: {
-                       set: function( elem, value ) {
-                               if ( !jQuery.support.radioValue && value === "radio" && jQuery.nodeName(elem, "input") ) {
-                                       // Setting the type on a radio button after the value resets the value in IE6-9
-                                       // Reset value to default in case type is set after value during creation
-                                       var val = elem.value;
-                                       elem.setAttribute( "type", value );
-                                       if ( val ) {
-                                               elem.value = val;
-                                       }
-                                       return value;
-                               }
-                       }
-               }
-       },
-
-       propFix: {
-               "for": "htmlFor",
-               "class": "className"
-       },
-
-       prop: function( elem, name, value ) {
-               var ret, hooks, notxml,
-                       nType = elem.nodeType;
-
-               // don't get/set properties on text, comment and attribute nodes
-               if ( !elem || nType === 3 || nType === 8 || nType === 2 ) {
-                       return;
-               }
-
-               notxml = nType !== 1 || !jQuery.isXMLDoc( elem );
-
-               if ( notxml ) {
-                       // Fix name and attach hooks
-                       name = jQuery.propFix[ name ] || name;
-                       hooks = jQuery.propHooks[ name ];
-               }
-
-               if ( value !== undefined ) {
-                       return hooks && "set" in hooks && (ret = hooks.set( elem, value, name )) !== undefined ?
-                               ret :
-                               ( elem[ name ] = value );
-
-               } else {
-                       return hooks && "get" in hooks && (ret = hooks.get( elem, name )) !== null ?
-                               ret :
-                               elem[ name ];
-               }
-       },
-
-       propHooks: {
-               tabIndex: {
-                       get: function( elem ) {
-                               // elem.tabIndex doesn't always return the correct value when it hasn't been explicitly set
-                               // http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/
-                               // Use proper attribute retrieval(#12072)
-                               var tabindex = jQuery.find.attr( elem, "tabindex" );
-
-                               return tabindex ?
-                                       parseInt( tabindex, 10 ) :
-                                       rfocusable.test( elem.nodeName ) || rclickable.test( elem.nodeName ) && elem.href ?
-                                               0 :
-                                               -1;
-                       }
-               }
-       }
-});
-
-// Hooks for boolean attributes
-boolHook = {
-       set: function( elem, value, name ) {
-               if ( value === false ) {
-                       // Remove boolean attributes when set to false
-                       jQuery.removeAttr( elem, name );
-               } else if ( getSetInput && getSetAttribute || !ruseDefault.test( name ) ) {
-                       // IE<8 needs the *property* name
-                       elem.setAttribute( !getSetAttribute && jQuery.propFix[ name ] || name, name );
-
-               // Use defaultChecked and defaultSelected for oldIE
-               } else {
-                       elem[ jQuery.camelCase( "default-" + name ) ] = elem[ name ] = true;
-               }
-
-               return name;
-       }
-};
-jQuery.each( jQuery.expr.match.bool.source.match( /\w+/g ), function( i, name ) {
-       var getter = jQuery.expr.attrHandle[ name ] || jQuery.find.attr;
-
-       jQuery.expr.attrHandle[ name ] = getSetInput && getSetAttribute || !ruseDefault.test( name ) ?
-               function( elem, name, isXML ) {
-                       var fn = jQuery.expr.attrHandle[ name ],
-                               ret = isXML ?
-                                       undefined :
-                                       /* jshint eqeqeq: false */
-                                       (jQuery.expr.attrHandle[ name ] = undefined) !=
-                                               getter( elem, name, isXML ) ?
-
-                                               name.toLowerCase() :
-                                               null;
-                       jQuery.expr.attrHandle[ name ] = fn;
-                       return ret;
-               } :
-               function( elem, name, isXML ) {
-                       return isXML ?
-                               undefined :
-                               elem[ jQuery.camelCase( "default-" + name ) ] ?
-                                       name.toLowerCase() :
-                                       null;
-               };
-});
-
-// fix oldIE attroperties
-if ( !getSetInput || !getSetAttribute ) {
-       jQuery.attrHooks.value = {
-               set: function( elem, value, name ) {
-                       if ( jQuery.nodeName( elem, "input" ) ) {
-                               // Does not return so that setAttribute is also used
-                               elem.defaultValue = value;
-                       } else {
-                               // Use nodeHook if defined (#1954); otherwise setAttribute is fine
-                               return nodeHook && nodeHook.set( elem, value, name );
-                       }
-               }
-       };
-}
-
-// IE6/7 do not support getting/setting some attributes with get/setAttribute
-if ( !getSetAttribute ) {
-
-       // Use this for any attribute in IE6/7
-       // This fixes almost every IE6/7 issue
-       nodeHook = {
-               set: function( elem, value, name ) {
-                       // Set the existing or create a new attribute node
-                       var ret = elem.getAttributeNode( name );
-                       if ( !ret ) {
-                               elem.setAttributeNode(
-                                       (ret = elem.ownerDocument.createAttribute( name ))
-                               );
-                       }
-
-                       ret.value = value += "";
-
-                       // Break association with cloned elements by also using setAttribute (#9646)
-                       return name === "value" || value === elem.getAttribute( name ) ?
-                               value :
-                               undefined;
-               }
-       };
-       jQuery.expr.attrHandle.id = jQuery.expr.attrHandle.name = jQuery.expr.attrHandle.coords =
-               // Some attributes are constructed with empty-string values when not defined
-               function( elem, name, isXML ) {
-                       var ret;
-                       return isXML ?
-                               undefined :
-                               (ret = elem.getAttributeNode( name )) && ret.value !== "" ?
-                                       ret.value :
-                                       null;
-               };
-       jQuery.valHooks.button = {
-               get: function( elem, name ) {
-                       var ret = elem.getAttributeNode( name );
-                       return ret && ret.specified ?
-                               ret.value :
-                               undefined;
-               },
-               set: nodeHook.set
-       };
-
-       // Set contenteditable to false on removals(#10429)
-       // Setting to empty string throws an error as an invalid value
-       jQuery.attrHooks.contenteditable = {
-               set: function( elem, value, name ) {
-                       nodeHook.set( elem, value === "" ? false : value, name );
-               }
-       };
-
-       // Set width and height to auto instead of 0 on empty string( Bug #8150 )
-       // This is for removals
-       jQuery.each([ "width", "height" ], function( i, name ) {
-               jQuery.attrHooks[ name ] = {
-                       set: function( elem, value ) {
-                               if ( value === "" ) {
-                                       elem.setAttribute( name, "auto" );
-                                       return value;
-                               }
-                       }
-               };
-       });
-}
-
-
-// Some attributes require a special call on IE
-// http://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx
-if ( !jQuery.support.hrefNormalized ) {
-       // href/src property should get the full normalized URL (#10299/#12915)
-       jQuery.each([ "href", "src" ], function( i, name ) {
-               jQuery.propHooks[ name ] = {
-                       get: function( elem ) {
-                               return elem.getAttribute( name, 4 );
-                       }
-               };
-       });
-}
-
-if ( !jQuery.support.style ) {
-       jQuery.attrHooks.style = {
-               get: function( elem ) {
-                       // Return undefined in the case of empty string
-                       // Note: IE uppercases css property names, but if we were to .toLowerCase()
-                       // .cssText, that would destroy case senstitivity in URL's, like in "background"
-                       return elem.style.cssText || undefined;
-               },
-               set: function( elem, value ) {
-                       return ( elem.style.cssText = value + "" );
-               }
-       };
-}
-
-// Safari mis-reports the default selected property of an option
-// Accessing the parent's selectedIndex property fixes it
-if ( !jQuery.support.optSelected ) {
-       jQuery.propHooks.selected = {
-               get: function( elem ) {
-                       var parent = elem.parentNode;
-
-                       if ( parent ) {
-                               parent.selectedIndex;
-
-                               // Make sure that it also works with optgroups, see #5701
-                               if ( parent.parentNode ) {
-                                       parent.parentNode.selectedIndex;
-                               }
-                       }
-                       return null;
-               }
-       };
-}
-
-jQuery.each([
-       "tabIndex",
-       "readOnly",
-       "maxLength",
-       "cellSpacing",
-       "cellPadding",
-       "rowSpan",
-       "colSpan",
-       "useMap",
-       "frameBorder",
-       "contentEditable"
-], function() {
-       jQuery.propFix[ this.toLowerCase() ] = this;
-});
-
-// IE6/7 call enctype encoding
-if ( !jQuery.support.enctype ) {
-       jQuery.propFix.enctype = "encoding";
-}
-
-// Radios and checkboxes getter/setter
-jQuery.each([ "radio", "checkbox" ], function() {
-       jQuery.valHooks[ this ] = {
-               set: function( elem, value ) {
-                       if ( jQuery.isArray( value ) ) {
-                               return ( elem.checked = jQuery.inArray( jQuery(elem).val(), value ) >= 0 );
-                       }
-               }
-       };
-       if ( !jQuery.support.checkOn ) {
-               jQuery.valHooks[ this ].get = function( elem ) {
-                       // Support: Webkit
-                       // "" is returned instead of "on" if a value isn't specified
-                       return elem.getAttribute("value") === null ? "on" : elem.value;
-               };
-       }
-});
-var rformElems = /^(?:input|select|textarea)$/i,
-       rkeyEvent = /^key/,
-       rmouseEvent = /^(?:mouse|contextmenu)|click/,
-       rfocusMorph = /^(?:focusinfocus|focusoutblur)$/,
-       rtypenamespace = /^([^.]*)(?:\.(.+)|)$/;
-
-function returnTrue() {
-       return true;
-}
-
-function returnFalse() {
-       return false;
-}
-
-function safeActiveElement() {
-       try {
-               return document.activeElement;
-       } catch ( err ) { }
-}
-
-/*
- * Helper functions for managing events -- not part of the public interface.
- * Props to Dean Edwards' addEvent library for many of the ideas.
- */
-jQuery.event = {
-
-       global: {},
-
-       add: function( elem, types, handler, data, selector ) {
-               var tmp, events, t, handleObjIn,
-                       special, eventHandle, handleObj,
-                       handlers, type, namespaces, origType,
-                       elemData = jQuery._data( elem );
-
-               // Don't attach events to noData or text/comment nodes (but allow plain objects)
-               if ( !elemData ) {
-                       return;
-               }
-
-               // Caller can pass in an object of custom data in lieu of the handler
-               if ( handler.handler ) {
-                       handleObjIn = handler;
-                       handler = handleObjIn.handler;
-                       selector = handleObjIn.selector;
-               }
-
-               // Make sure that the handler has a unique ID, used to find/remove it later
-               if ( !handler.guid ) {
-                       handler.guid = jQuery.guid++;
-               }
-
-               // Init the element's event structure and main handler, if this is the first
-               if ( !(events = elemData.events) ) {
-                       events = elemData.events = {};
-               }
-               if ( !(eventHandle = elemData.handle) ) {
-                       eventHandle = elemData.handle = function( e ) {
-                               // Discard the second event of a jQuery.event.trigger() and
-                               // when an event is called after a page has unloaded
-                               return typeof jQuery !== core_strundefined && (!e || jQuery.event.triggered !== e.type) ?
-                                       jQuery.event.dispatch.apply( eventHandle.elem, arguments ) :
-                                       undefined;
-                       };
-                       // Add elem as a property of the handle fn to prevent a memory leak with IE non-native events
-                       eventHandle.elem = elem;
-               }
-
-               // Handle multiple events separated by a space
-               types = ( types || "" ).match( core_rnotwhite ) || [""];
-               t = types.length;
-               while ( t-- ) {
-                       tmp = rtypenamespace.exec( types[t] ) || [];
-                       type = origType = tmp[1];
-                       namespaces = ( tmp[2] || "" ).split( "." ).sort();
-
-                       // There *must* be a type, no attaching namespace-only handlers
-                       if ( !type ) {
-                               continue;
-                       }
-
-                       // If event changes its type, use the special event handlers for the changed type
-                       special = jQuery.event.special[ type ] || {};
-
-                       // If selector defined, determine special event api type, otherwise given type
-                       type = ( selector ? special.delegateType : special.bindType ) || type;
-
-                       // Update special based on newly reset type
-                       special = jQuery.event.special[ type ] || {};
-
-                       // handleObj is passed to all event handlers
-                       handleObj = jQuery.extend({
-                               type: type,
-                               origType: origType,
-                               data: data,
-                               handler: handler,
-                               guid: handler.guid,
-                               selector: selector,
-                               needsContext: selector && jQuery.expr.match.needsContext.test( selector ),
-                               namespace: namespaces.join(".")
-                       }, handleObjIn );
-
-                       // Init the event handler queue if we're the first
-                       if ( !(handlers = events[ type ]) ) {
-                               handlers = events[ type ] = [];
-                               handlers.delegateCount = 0;
-
-                               // Only use addEventListener/attachEvent if the special events handler returns false
-                               if ( !special.setup || special.setup.call( elem, data, namespaces, eventHandle ) === false ) {
-                                       // Bind the global event handler to the element
-                                       if ( elem.addEventListener ) {
-                                               elem.addEventListener( type, eventHandle, false );
-
-                                       } else if ( elem.attachEvent ) {
-                                               elem.attachEvent( "on" + type, eventHandle );
-                                       }
-                               }
-                       }
-
-                       if ( special.add ) {
-                               special.add.call( elem, handleObj );
-
-                               if ( !handleObj.handler.guid ) {
-                                       handleObj.handler.guid = handler.guid;
-                               }
-                       }
-
-                       // Add to the element's handler list, delegates in front
-                       if ( selector ) {
-                               handlers.splice( handlers.delegateCount++, 0, handleObj );
-                       } else {
-                               handlers.push( handleObj );
-                       }
-
-                       // Keep track of which events have ever been used, for event optimization
-                       jQuery.event.global[ type ] = true;
-               }
-
-               // Nullify elem to prevent memory leaks in IE
-               elem = null;
-       },
-
-       // Detach an event or set of events from an element
-       remove: function( elem, types, handler, selector, mappedTypes ) {
-               var j, handleObj, tmp,
-                       origCount, t, events,
-                       special, handlers, type,
-                       namespaces, origType,
-                       elemData = jQuery.hasData( elem ) && jQuery._data( elem );
-
-               if ( !elemData || !(events = elemData.events) ) {
-                       return;
-               }
-
-               // Once for each type.namespace in types; type may be omitted
-               types = ( types || "" ).match( core_rnotwhite ) || [""];
-               t = types.length;
-               while ( t-- ) {
-                       tmp = rtypenamespace.exec( types[t] ) || [];
-                       type = origType = tmp[1];
-                       namespaces = ( tmp[2] || "" ).split( "." ).sort();
-
-                       // Unbind all events (on this namespace, if provided) for the element
-                       if ( !type ) {
-                               for ( type in events ) {
-                                       jQuery.event.remove( elem, type + types[ t ], handler, selector, true );
-                               }
-                               continue;
-                       }
-
-                       special = jQuery.event.special[ type ] || {};
-                       type = ( selector ? special.delegateType : special.bindType ) || type;
-                       handlers = events[ type ] || [];
-                       tmp = tmp[2] && new RegExp( "(^|\\.)" + namespaces.join("\\.(?:.*\\.|)") + "(\\.|$)" );
-
-                       // Remove matching events
-                       origCount = j = handlers.length;
-                       while ( j-- ) {
-                               handleObj = handlers[ j ];
-
-                               if ( ( mappedTypes || origType === handleObj.origType ) &&
-                                       ( !handler || handler.guid === handleObj.guid ) &&
-                                       ( !tmp || tmp.test( handleObj.namespace ) ) &&
-                                       ( !selector || selector === handleObj.selector || selector === "**" && handleObj.selector ) ) {
-                                       handlers.splice( j, 1 );
-
-                                       if ( handleObj.selector ) {
-                                               handlers.delegateCount--;
-                                       }
-                                       if ( special.remove ) {
-                                               special.remove.call( elem, handleObj );
-                                       }
-                               }
-                       }
-
-                       // Remove generic event handler if we removed something and no more handlers exist
-                       // (avoids potential for endless recursion during removal of special event handlers)
-                       if ( origCount && !handlers.length ) {
-                               if ( !special.teardown || special.teardown.call( elem, namespaces, elemData.handle ) === false ) {
-                                       jQuery.removeEvent( elem, type, elemData.handle );
-                               }
-
-                               delete events[ type ];
-                       }
-               }
-
-               // Remove the expando if it's no longer used
-               if ( jQuery.isEmptyObject( events ) ) {
-                       delete elemData.handle;
-
-                       // removeData also checks for emptiness and clears the expando if empty
-                       // so use it instead of delete
-                       jQuery._removeData( elem, "events" );
-               }
-       },
-
-       trigger: function( event, data, elem, onlyHandlers ) {
-               var handle, ontype, cur,
-                       bubbleType, special, tmp, i,
-                       eventPath = [ elem || document ],
-                       type = core_hasOwn.call( event, "type" ) ? event.type : event,
-                       namespaces = core_hasOwn.call( event, "namespace" ) ? event.namespace.split(".") : [];
-
-               cur = tmp = elem = elem || document;
-
-               // Don't do events on text and comment nodes
-               if ( elem.nodeType === 3 || elem.nodeType === 8 ) {
-                       return;
-               }
-
-               // focus/blur morphs to focusin/out; ensure we're not firing them right now
-               if ( rfocusMorph.test( type + jQuery.event.triggered ) ) {
-                       return;
-               }
-
-               if ( type.indexOf(".") >= 0 ) {
-                       // Namespaced trigger; create a regexp to match event type in handle()
-                       namespaces = type.split(".");
-                       type = namespaces.shift();
-                       namespaces.sort();
-               }
-               ontype = type.indexOf(":") < 0 && "on" + type;
-
-               // Caller can pass in a jQuery.Event object, Object, or just an event type string
-               event = event[ jQuery.expando ] ?
-                       event :
-                       new jQuery.Event( type, typeof event === "object" && event );
-
-               // Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true)
-               event.isTrigger = onlyHandlers ? 2 : 3;
-               event.namespace = namespaces.join(".");
-               event.namespace_re = event.namespace ?
-                       new RegExp( "(^|\\.)" + namespaces.join("\\.(?:.*\\.|)") + "(\\.|$)" ) :
-                       null;
-
-               // Clean up the event in case it is being reused
-               event.result = undefined;
-               if ( !event.target ) {
-                       event.target = elem;
-               }
-
-               // Clone any incoming data and prepend the event, creating the handler arg list
-               data = data == null ?
-                       [ event ] :
-                       jQuery.makeArray( data, [ event ] );
-
-               // Allow special events to draw outside the lines
-               special = jQuery.event.special[ type ] || {};
-               if ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) {
-                       return;
-               }
-
-               // Determine event propagation path in advance, per W3C events spec (#9951)
-               // Bubble up to document, then to window; watch for a global ownerDocument var (#9724)
-               if ( !onlyHandlers && !special.noBubble && !jQuery.isWindow( elem ) ) {
-
-                       bubbleType = special.delegateType || type;
-                       if ( !rfocusMorph.test( bubbleType + type ) ) {
-                               cur = cur.parentNode;
-                       }
-                       for ( ; cur; cur = cur.parentNode ) {
-                               eventPath.push( cur );
-                               tmp = cur;
-                       }
-
-                       // Only add window if we got to document (e.g., not plain obj or detached DOM)
-                       if ( tmp === (elem.ownerDocument || document) ) {
-                               eventPath.push( tmp.defaultView || tmp.parentWindow || window );
-                       }
-               }
-
-               // Fire handlers on the event path
-               i = 0;
-               while ( (cur = eventPath[i++]) && !event.isPropagationStopped() ) {
-
-                       event.type = i > 1 ?
-                               bubbleType :
-                               special.bindType || type;
-
-                       // jQuery handler
-                       handle = ( jQuery._data( cur, "events" ) || {} )[ event.type ] && jQuery._data( cur, "handle" );
-                       if ( handle ) {
-                               handle.apply( cur, data );
-                       }
-
-                       // Native handler
-                       handle = ontype && cur[ ontype ];
-                       if ( handle && jQuery.acceptData( cur ) && handle.apply && handle.apply( cur, data ) === false ) {
-                               event.preventDefault();
-                       }
-               }
-               event.type = type;
-
-               // If nobody prevented the default action, do it now
-               if ( !onlyHandlers && !event.isDefaultPrevented() ) {
-
-                       if ( (!special._default || special._default.apply( eventPath.pop(), data ) === false) &&
-                               jQuery.acceptData( elem ) ) {
-
-                               // Call a native DOM method on the target with the same name name as the event.
-                               // Can't use an .isFunction() check here because IE6/7 fails that test.
-                               // Don't do default actions on window, that's where global variables be (#6170)
-                               if ( ontype && elem[ type ] && !jQuery.isWindow( elem ) ) {
-
-                                       // Don't re-trigger an onFOO event when we call its FOO() method
-                                       tmp = elem[ ontype ];
-
-                                       if ( tmp ) {
-                                               elem[ ontype ] = null;
-                                       }
-
-                                       // Prevent re-triggering of the same event, since we already bubbled it above
-                                       jQuery.event.triggered = type;
-                                       try {
-                                               elem[ type ]();
-                                       } catch ( e ) {
-                                               // IE<9 dies on focus/blur to hidden element (#1486,#12518)
-                                               // only reproducible on winXP IE8 native, not IE9 in IE8 mode
-                                       }
-                                       jQuery.event.triggered = undefined;
-
-                                       if ( tmp ) {
-                                               elem[ ontype ] = tmp;
-                                       }
-                               }
-                       }
-               }
-
-               return event.result;
-       },
-
-       dispatch: function( event ) {
-
-               // Make a writable jQuery.Event from the native event object
-               event = jQuery.event.fix( event );
-
-               var i, ret, handleObj, matched, j,
-                       handlerQueue = [],
-                       args = core_slice.call( arguments ),
-                       handlers = ( jQuery._data( this, "events" ) || {} )[ event.type ] || [],
-                       special = jQuery.event.special[ event.type ] || {};
-
-               // Use the fix-ed jQuery.Event rather than the (read-only) native event
-               args[0] = event;
-               event.delegateTarget = this;
-
-               // Call the preDispatch hook for the mapped type, and let it bail if desired
-               if ( special.preDispatch && special.preDispatch.call( this, event ) === false ) {
-                       return;
-               }
-
-               // Determine handlers
-               handlerQueue = jQuery.event.handlers.call( this, event, handlers );
-
-               // Run delegates first; they may want to stop propagation beneath us
-               i = 0;
-               while ( (matched = handlerQueue[ i++ ]) && !event.isPropagationStopped() ) {
-                       event.currentTarget = matched.elem;
-
-                       j = 0;
-                       while ( (handleObj = matched.handlers[ j++ ]) && !event.isImmediatePropagationStopped() ) {
-
-                               // Triggered event must either 1) have no namespace, or
-                               // 2) have namespace(s) a subset or equal to those in the bound event (both can have no namespace).
-                               if ( !event.namespace_re || event.namespace_re.test( handleObj.namespace ) ) {
-
-                                       event.handleObj = handleObj;
-                                       event.data = handleObj.data;
-
-                                       ret = ( (jQuery.event.special[ handleObj.origType ] || {}).handle || handleObj.handler )
-                                                       .apply( matched.elem, args );
-
-                                       if ( ret !== undefined ) {
-                                               if ( (event.result = ret) === false ) {
-                                                       event.preventDefault();
-                                                       event.stopPropagation();
-                                               }
-                                       }
-                               }
-                       }
-               }
-
-               // Call the postDispatch hook for the mapped type
-               if ( special.postDispatch ) {
-                       special.postDispatch.call( this, event );
-               }
-
-               return event.result;
-       },
-
-       handlers: function( event, handlers ) {
-               var sel, handleObj, matches, i,
-                       handlerQueue = [],
-                       delegateCount = handlers.delegateCount,
-                       cur = event.target;
-
-               // Find delegate handlers
-               // Black-hole SVG <use> instance trees (#13180)
-               // Avoid non-left-click bubbling in Firefox (#3861)
-               if ( delegateCount && cur.nodeType && (!event.button || event.type !== "click") ) {
-
-                       /* jshint eqeqeq: false */
-                       for ( ; cur != this; cur = cur.parentNode || this ) {
-                               /* jshint eqeqeq: true */
-
-                               // Don't check non-elements (#13208)
-                               // Don't process clicks on disabled elements (#6911, #8165, #11382, #11764)
-                               if ( cur.nodeType === 1 && (cur.disabled !== true || event.type !== "click") ) {
-                                       matches = [];
-                                       for ( i = 0; i < delegateCount; i++ ) {
-                                               handleObj = handlers[ i ];
-
-                                               // Don't conflict with Object.prototype properties (#13203)
-                                               sel = handleObj.selector + " ";
-
-                                               if ( matches[ sel ] === undefined ) {
-                                                       matches[ sel ] = handleObj.needsContext ?
-                                                               jQuery( sel, this ).index( cur ) >= 0 :
-                                                               jQuery.find( sel, this, null, [ cur ] ).length;
-                                               }
-                                               if ( matches[ sel ] ) {
-                                                       matches.push( handleObj );
-                                               }
-                                       }
-                                       if ( matches.length ) {
-                                               handlerQueue.push({ elem: cur, handlers: matches });
-                                       }
-                               }
-                       }
-               }
-
-               // Add the remaining (directly-bound) handlers
-               if ( delegateCount < handlers.length ) {
-                       handlerQueue.push({ elem: this, handlers: handlers.slice( delegateCount ) });
-               }
-
-               return handlerQueue;
-       },
-
-       fix: function( event ) {
-               if ( event[ jQuery.expando ] ) {
-                       return event;
-               }
-
-               // Create a writable copy of the event object and normalize some properties
-               var i, prop, copy,
-                       type = event.type,
-                       originalEvent = event,
-                       fixHook = this.fixHooks[ type ];
-
-               if ( !fixHook ) {
-                       this.fixHooks[ type ] = fixHook =
-                               rmouseEvent.test( type ) ? this.mouseHooks :
-                               rkeyEvent.test( type ) ? this.keyHooks :
-                               {};
-               }
-               copy = fixHook.props ? this.props.concat( fixHook.props ) : this.props;
-
-               event = new jQuery.Event( originalEvent );
-
-               i = copy.length;
-               while ( i-- ) {
-                       prop = copy[ i ];
-                       event[ prop ] = originalEvent[ prop ];
-               }
-
-               // Support: IE<9
-               // Fix target property (#1925)
-               if ( !event.target ) {
-                       event.target = originalEvent.srcElement || document;
-               }
-
-               // Support: Chrome 23+, Safari?
-               // Target should not be a text node (#504, #13143)
-               if ( event.target.nodeType === 3 ) {
-                       event.target = event.target.parentNode;
-               }
-
-               // Support: IE<9
-               // For mouse/key events, metaKey==false if it's undefined (#3368, #11328)
-               event.metaKey = !!event.metaKey;
-
-               return fixHook.filter ? fixHook.filter( event, originalEvent ) : event;
-       },
-
-       // Includes some event props shared by KeyEvent and MouseEvent
-       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( event, original ) {
-
-                       // Add which for key events
-                       if ( event.which == null ) {
-                               event.which = original.charCode != null ? original.charCode : original.keyCode;
-                       }
-
-                       return event;
-               }
-       },
-
-       mouseHooks: {
-               props: "button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),
-               filter: function( event, original ) {
-                       var body, eventDoc, doc,
-                               button = original.button,
-                               fromElement = original.fromElement;
-
-                       // Calculate pageX/Y if missing and clientX/Y available
-                       if ( event.pageX == null && original.clientX != null ) {
-                               eventDoc = event.target.ownerDocument || document;
-                               doc = eventDoc.documentElement;
-                               body = eventDoc.body;
-
-                               event.pageX = original.clientX + ( doc && doc.scrollLeft || body && body.scrollLeft || 0 ) - ( doc && doc.clientLeft || body && body.clientLeft || 0 );
-                               event.pageY = original.clientY + ( doc && doc.scrollTop  || body && body.scrollTop  || 0 ) - ( doc && doc.clientTop  || body && body.clientTop  || 0 );
-                       }
-
-                       // Add relatedTarget, if necessary
-                       if ( !event.relatedTarget && fromElement ) {
-                               event.relatedTarget = fromElement === event.target ? original.toElement : fromElement;
-                       }
-
-                       // Add which for click: 1 === left; 2 === middle; 3 === right
-                       // Note: button is not normalized, so don't use it
-                       if ( !event.which && button !== undefined ) {
-                               event.which = ( button & 1 ? 1 : ( button & 2 ? 3 : ( button & 4 ? 2 : 0 ) ) );
-                       }
-
-                       return event;
-               }
-       },
-
-       special: {
-               load: {
-                       // Prevent triggered image.load events from bubbling to window.load
-                       noBubble: true
-               },
-               focus: {
-                       // Fire native event if possible so blur/focus sequence is correct
-                       trigger: function() {
-                               if ( this !== safeActiveElement() && this.focus ) {
-                                       try {
-                                               this.focus();
-                                               return false;
-                                       } catch ( e ) {
-                                               // Support: IE<9
-                                               // If we error on focus to hidden element (#1486, #12518),
-                                               // let .trigger() run the handlers
-                                       }
-                               }
-                       },
-                       delegateType: "focusin"
-               },
-               blur: {
-                       trigger: function() {
-                               if ( this === safeActiveElement() && this.blur ) {
-                                       this.blur();
-                                       return false;
-                               }
-                       },
-                       delegateType: "focusout"
-               },
-               click: {
-                       // For checkbox, fire native event so checked state will be right
-                       trigger: function() {
-                               if ( jQuery.nodeName( this, "input" ) && this.type === "checkbox" && this.click ) {
-                                       this.click();
-                                       return false;
-                               }
-                       },
-
-                       // For cross-browser consistency, don't fire native .click() on links
-                       _default: function( event ) {
-                               return jQuery.nodeName( event.target, "a" );
-                       }
-               },
-
-               beforeunload: {
-                       postDispatch: function( event ) {
-
-                               // Even when returnValue equals to undefined Firefox will still show alert
-                               if ( event.result !== undefined ) {
-                                       event.originalEvent.returnValue = event.result;
-                               }
-                       }
-               }
-       },
-
-       simulate: function( type, elem, event, bubble ) {
-               // Piggyback on a donor event to simulate a different one.
-               // Fake originalEvent to avoid donor's stopPropagation, but if the
-               // simulated event prevents default then we do the same on the donor.
-               var e = jQuery.extend(
-                       new jQuery.Event(),
-                       event,
-                       {
-                               type: type,
-                               isSimulated: true,
-                               originalEvent: {}
-                       }
-               );
-               if ( bubble ) {
-                       jQuery.event.trigger( e, null, elem );
-               } else {
-                       jQuery.event.dispatch.call( elem, e );
-               }
-               if ( e.isDefaultPrevented() ) {
-                       event.preventDefault();
-               }
-       }
-};
-
-jQuery.removeEvent = document.removeEventListener ?
-       function( elem, type, handle ) {
-               if ( elem.removeEventListener ) {
-                       elem.removeEventListener( type, handle, false );
-               }
-       } :
-       function( elem, type, handle ) {
-               var name = "on" + type;
-
-               if ( elem.detachEvent ) {
-
-                       // #8545, #7054, preventing memory leaks for custom events in IE6-8
-                       // detachEvent needed property on element, by name of that event, to properly expose it to GC
-                       if ( typeof elem[ name ] === core_strundefined ) {
-                               elem[ name ] = null;
-                       }
-
-                       elem.detachEvent( name, handle );
-               }
-       };
-
-jQuery.Event = function( src, props ) {
-       // Allow instantiation without the 'new' keyword
-       if ( !(this instanceof jQuery.Event) ) {
-               return new jQuery.Event( src, props );
-       }
-
-       // Event object
-       if ( src && src.type ) {
-               this.originalEvent = src;
-               this.type = src.type;
-
-               // Events bubbling up the document may have been marked as prevented
-               // by a handler lower down the tree; reflect the correct value.
-               this.isDefaultPrevented = ( src.defaultPrevented || src.returnValue === false ||
-                       src.getPreventDefault && src.getPreventDefault() ) ? returnTrue : returnFalse;
-
-       // Event type
-       } else {
-               this.type = src;
-       }
-
-       // Put explicitly provided properties onto the event object
-       if ( props ) {
-               jQuery.extend( this, props );
-       }
-
-       // Create a timestamp if incoming event doesn't have one
-       this.timeStamp = src && src.timeStamp || jQuery.now();
-
-       // Mark it as fixed
-       this[ jQuery.expando ] = true;
-};
-
-// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding
-// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html
-jQuery.Event.prototype = {
-       isDefaultPrevented: returnFalse,
-       isPropagationStopped: returnFalse,
-       isImmediatePropagationStopped: returnFalse,
-
-       preventDefault: function() {
-               var e = this.originalEvent;
-
-               this.isDefaultPrevented = returnTrue;
-               if ( !e ) {
-                       return;
-               }
-
-               // If preventDefault exists, run it on the original event
-               if ( e.preventDefault ) {
-                       e.preventDefault();
-
-               // Support: IE
-               // Otherwise set the returnValue property of the original event to false
-               } else {
-                       e.returnValue = false;
-               }
-       },
-       stopPropagation: function() {
-               var e = this.originalEvent;
-
-               this.isPropagationStopped = returnTrue;
-               if ( !e ) {
-                       return;
-               }
-               // If stopPropagation exists, run it on the original event
-               if ( e.stopPropagation ) {
-                       e.stopPropagation();
-               }
-
-               // Support: IE
-               // Set the cancelBubble property of the original event to true
-               e.cancelBubble = true;
-       },
-       stopImmediatePropagation: function() {
-               this.isImmediatePropagationStopped = returnTrue;
-               this.stopPropagation();
-       }
-};
-
-// Create mouseenter/leave events using mouseover/out and event-time checks
-jQuery.each({
-       mouseenter: "mouseover",
-       mouseleave: "mouseout"
-}, function( orig, fix ) {
-       jQuery.event.special[ orig ] = {
-               delegateType: fix,
-               bindType: fix,
-
-               handle: function( event ) {
-                       var ret,
-                               target = this,
-                               related = event.relatedTarget,
-                               handleObj = event.handleObj;
-
-                       // For mousenter/leave call the handler if related is outside the target.
-                       // NB: No relatedTarget if the mouse left/entered the browser window
-                       if ( !related || (related !== target && !jQuery.contains( target, related )) ) {
-                               event.type = handleObj.origType;
-                               ret = handleObj.handler.apply( this, arguments );
-                               event.type = fix;
-                       }
-                       return ret;
-               }
-       };
-});
-
-// IE submit delegation
-if ( !jQuery.support.submitBubbles ) {
-
-       jQuery.event.special.submit = {
-               setup: function() {
-                       // Only need this for delegated form submit events
-                       if ( jQuery.nodeName( this, "form" ) ) {
-                               return false;
-                       }
-
-                       // Lazy-add a submit handler when a descendant form may potentially be submitted
-                       jQuery.event.add( this, "click._submit keypress._submit", function( e ) {
-                               // Node name check avoids a VML-related crash in IE (#9807)
-                               var elem = e.target,
-                                       form = jQuery.nodeName( elem, "input" ) || jQuery.nodeName( elem, "button" ) ? elem.form : undefined;
-                               if ( form && !jQuery._data( form, "submitBubbles" ) ) {
-                                       jQuery.event.add( form, "submit._submit", function( event ) {
-                                               event._submit_bubble = true;
-                                       });
-                                       jQuery._data( form, "submitBubbles", true );
-                               }
-                       });
-                       // return undefined since we don't need an event listener
-               },
-
-               postDispatch: function( event ) {
-                       // If form was submitted by the user, bubble the event up the tree
-                       if ( event._submit_bubble ) {
-                               delete event._submit_bubble;
-                               if ( this.parentNode && !event.isTrigger ) {
-                                       jQuery.event.simulate( "submit", this.parentNode, event, true );
-                               }
-                       }
-               },
-
-               teardown: function() {
-                       // Only need this for delegated form submit events
-                       if ( jQuery.nodeName( this, "form" ) ) {
-                               return false;
-                       }
-
-                       // Remove delegated handlers; cleanData eventually reaps submit handlers attached above
-                       jQuery.event.remove( this, "._submit" );
-               }
-       };
-}
-
-// IE change delegation and checkbox/radio fix
-if ( !jQuery.support.changeBubbles ) {
-
-       jQuery.event.special.change = {
-
-               setup: function() {
-
-                       if ( rformElems.test( this.nodeName ) ) {
-                               // IE doesn't fire change on a check/radio until blur; trigger it on click
-                               // after a propertychange. Eat the blur-change in special.change.handle.
-                               // This still fires onchange a second time for check/radio after blur.
-                               if ( this.type === "checkbox" || this.type === "radio" ) {
-                                       jQuery.event.add( this, "propertychange._change", function( event ) {
-                                               if ( event.originalEvent.propertyName === "checked" ) {
-                                                       this._just_changed = true;
-                                               }
-                                       });
-                                       jQuery.event.add( this, "click._change", function( event ) {
-                                               if ( this._just_changed && !event.isTrigger ) {
-                                                       this._just_changed = false;
-                                               }
-                                               // Allow triggered, simulated change events (#11500)
-                                               jQuery.event.simulate( "change", this, event, true );
-                                       });
-                               }
-                               return false;
-                       }
-                       // Delegated event; lazy-add a change handler on descendant inputs
-                       jQuery.event.add( this, "beforeactivate._change", function( e ) {
-                               var elem = e.target;
-
-                               if ( rformElems.test( elem.nodeName ) && !jQuery._data( elem, "changeBubbles" ) ) {
-                                       jQuery.event.add( elem, "change._change", function( event ) {
-                                               if ( this.parentNode && !event.isSimulated && !event.isTrigger ) {
-                                                       jQuery.event.simulate( "change", this.parentNode, event, true );
-                                               }
-                                       });
-                                       jQuery._data( elem, "changeBubbles", true );
-                               }
-                       });
-               },
-
-               handle: function( event ) {
-                       var elem = event.target;
-
-                       // Swallow native change events from checkbox/radio, we already triggered them above
-                       if ( this !== elem || event.isSimulated || event.isTrigger || (elem.type !== "radio" && elem.type !== "checkbox") ) {
-                               return event.handleObj.handler.apply( this, arguments );
-                       }
-               },
-
-               teardown: function() {
-                       jQuery.event.remove( this, "._change" );
-
-                       return !rformElems.test( this.nodeName );
-               }
-       };
-}
-
-// Create "bubbling" focus and blur events
-if ( !jQuery.support.focusinBubbles ) {
-       jQuery.each({ focus: "focusin", blur: "focusout" }, function( orig, fix ) {
-
-               // Attach a single capturing handler while someone wants focusin/focusout
-               var attaches = 0,
-                       handler = function( event ) {
-                               jQuery.event.simulate( fix, event.target, jQuery.event.fix( event ), true );
-                       };
-
-               jQuery.event.special[ fix ] = {
-                       setup: function() {
-                               if ( attaches++ === 0 ) {
-                                       document.addEventListener( orig, handler, true );
-                               }
-                       },
-                       teardown: function() {
-                               if ( --attaches === 0 ) {
-                                       document.removeEventListener( orig, handler, true );
-                               }
-                       }
-               };
-       });
-}
-
-jQuery.fn.extend({
-
-       on: function( types, selector, data, fn, /*INTERNAL*/ one ) {
-               var type, origFn;
-
-               // Types can be a map of types/handlers
-               if ( typeof types === "object" ) {
-                       // ( types-Object, selector, data )
-                       if ( typeof selector !== "string" ) {
-                               // ( types-Object, data )
-                               data = data || selector;
-                               selector = undefined;
-                       }
-                       for ( type in types ) {
-                               this.on( type, selector, data, types[ type ], one );
-                       }
-                       return this;
-               }
-
-               if ( data == null && fn == null ) {
-                       // ( types, fn )
-                       fn = selector;
-                       data = selector = undefined;
-               } else if ( fn == null ) {
-                       if ( typeof selector === "string" ) {
-                               // ( types, selector, fn )
-                               fn = data;
-                               data = undefined;
-                       } else {
-                               // ( types, data, fn )
-                               fn = data;
-                               data = selector;
-                               selector = undefined;
-                       }
-               }
-               if ( fn === false ) {
-                       fn = returnFalse;
-               } else if ( !fn ) {
-                       return this;
-               }
-
-               if ( one === 1 ) {
-                       origFn = fn;
-                       fn = function( event ) {
-                               // Can use an empty set, since event contains the info
-                               jQuery().off( event );
-                               return origFn.apply( this, arguments );
-                       };
-                       // Use same guid so caller can remove using origFn
-                       fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );
-               }
-               return this.each( function() {
-                       jQuery.event.add( this, types, fn, data, selector );
-               });
-       },
-       one: function( types, selector, data, fn ) {
-               return this.on( types, selector, data, fn, 1 );
-       },
-       off: function( types, selector, fn ) {
-               var handleObj, type;
-               if ( types && types.preventDefault && types.handleObj ) {
-                       // ( event )  dispatched jQuery.Event
-                       handleObj = types.handleObj;
-                       jQuery( types.delegateTarget ).off(
-                               handleObj.namespace ? handleObj.origType + "." + handleObj.namespace : handleObj.origType,
-                               handleObj.selector,
-                               handleObj.handler
-                       );
-                       return this;
-               }
-               if ( typeof types === "object" ) {
-                       // ( types-object [, selector] )
-                       for ( type in types ) {
-                               this.off( type, selector, types[ type ] );
-                       }
-                       return this;
-               }
-               if ( selector === false || typeof selector === "function" ) {
-                       // ( types [, fn] )
-                       fn = selector;
-                       selector = undefined;
-               }
-               if ( fn === false ) {
-                       fn = returnFalse;
-               }
-               return this.each(function() {
-                       jQuery.event.remove( this, types, fn, selector );
-               });
-       },
-
-       trigger: function( type, data ) {
-               return this.each(function() {
-                       jQuery.event.trigger( type, data, this );
-               });
-       },
-       triggerHandler: function( type, data ) {
-               var elem = this[0];
-               if ( elem ) {
-                       return jQuery.event.trigger( type, data, elem, true );
-               }
-       }
-});
-var isSimple = /^.[^:#\[\.,]*$/,
-       rparentsprev = /^(?:parents|prev(?:Until|All))/,
-       rneedsContext = jQuery.expr.match.needsContext,
-       // methods guaranteed to produce a unique set when starting from a unique set
-       guaranteedUnique = {
-               children: true,
-               contents: true,
-               next: true,
-               prev: true
-       };
-
-jQuery.fn.extend({
-       find: function( selector ) {
-               var i,
-                       ret = [],
-                       self = this,
-                       len = self.length;
-
-               if ( typeof selector !== "string" ) {
-                       return this.pushStack( jQuery( selector ).filter(function() {
-                               for ( i = 0; i < len; i++ ) {
-                                       if ( jQuery.contains( self[ i ], this ) ) {
-                                               return true;
-                                       }
-                               }
-                       }) );
-               }
-
-               for ( i = 0; i < len; i++ ) {
-                       jQuery.find( selector, self[ i ], ret );
-               }
-
-               // Needed because $( selector, context ) becomes $( context ).find( selector )
-               ret = this.pushStack( len > 1 ? jQuery.unique( ret ) : ret );
-               ret.selector = this.selector ? this.selector + " " + selector : selector;
-               return ret;
-       },
-
-       has: function( target ) {
-               var i,
-                       targets = jQuery( target, this ),
-                       len = targets.length;
-
-               return this.filter(function() {
-                       for ( i = 0; i < len; i++ ) {
-                               if ( jQuery.contains( this, targets[i] ) ) {
-                                       return true;
-                               }
-                       }
-               });
-       },
-
-       not: function( selector ) {
-               return this.pushStack( winnow(this, selector || [], true) );
-       },
-
-       filter: function( selector ) {
-               return this.pushStack( winnow(this, selector || [], false) );
-       },
-
-       is: function( selector ) {
-               return !!winnow(
-                       this,
-
-                       // If this is a positional/relative selector, check membership in the returned set
-                       // so $("p:first").is("p:last") won't return true for a doc with two "p".
-                       typeof selector === "string" && rneedsContext.test( selector ) ?
-                               jQuery( selector ) :
-                               selector || [],
-                       false
-               ).length;
-       },
-
-       closest: function( selectors, context ) {
-               var cur,
-                       i = 0,
-                       l = this.length,
-                       ret = [],
-                       pos = rneedsContext.test( selectors ) || typeof selectors !== "string" ?
-                               jQuery( selectors, context || this.context ) :
-                               0;
-
-               for ( ; i < l; i++ ) {
-                       for ( cur = this[i]; cur && cur !== context; cur = cur.parentNode ) {
-                               // Always skip document fragments
-                               if ( cur.nodeType < 11 && (pos ?
-                                       pos.index(cur) > -1 :
-
-                                       // Don't pass non-elements to Sizzle
-                                       cur.nodeType === 1 &&
-                                               jQuery.find.matchesSelector(cur, selectors)) ) {
-
-                                       cur = ret.push( cur );
-                                       break;
-                               }
-                       }
-               }
-
-               return this.pushStack( ret.length > 1 ? jQuery.unique( ret ) : ret );
-       },
-
-       // Determine the position of an element within
-       // the matched set of elements
-       index: function( elem ) {
-
-               // No argument, return index in parent
-               if ( !elem ) {
-                       return ( this[0] && this[0].parentNode ) ? this.first().prevAll().length : -1;
-               }
-
-               // index in selector
-               if ( typeof elem === "string" ) {
-                       return jQuery.inArray( this[0], jQuery( elem ) );
-               }
-
-               // Locate the position of the desired element
-               return jQuery.inArray(
-                       // If it receives a jQuery object, the first element is used
-                       elem.jquery ? elem[0] : elem, this );
-       },
-
-       add: function( selector, context ) {
-               var set = typeof selector === "string" ?
-                               jQuery( selector, context ) :
-                               jQuery.makeArray( selector && selector.nodeType ? [ selector ] : selector ),
-                       all = jQuery.merge( this.get(), set );
-
-               return this.pushStack( jQuery.unique(all) );
-       },
-
-       addBack: function( selector ) {
-               return this.add( selector == null ?
-                       this.prevObject : this.prevObject.filter(selector)
-               );
-       }
-});
-
-function sibling( cur, dir ) {
-       do {
-               cur = cur[ dir ];
-       } while ( cur && cur.nodeType !== 1 );
-
-       return cur;
-}
-
-jQuery.each({
-       parent: function( elem ) {
-               var parent = elem.parentNode;
-               return parent && parent.nodeType !== 11 ? parent : null;
-       },
-       parents: function( elem ) {
-               return jQuery.dir( elem, "parentNode" );
-       },
-       parentsUntil: function( elem, i, until ) {
-               return jQuery.dir( elem, "parentNode", until );
-       },
-       next: function( elem ) {
-               return sibling( elem, "nextSibling" );
-       },
-       prev: function( elem ) {
-               return sibling( elem, "previousSibling" );
-       },
-       nextAll: function( elem ) {
-               return jQuery.dir( elem, "nextSibling" );
-       },
-       prevAll: function( elem ) {
-               return jQuery.dir( elem, "previousSibling" );
-       },
-       nextUntil: function( elem, i, until ) {
-               return jQuery.dir( elem, "nextSibling", until );
-       },
-       prevUntil: function( elem, i, until ) {
-               return jQuery.dir( elem, "previousSibling", until );
-       },
-       siblings: function( elem ) {
-               return jQuery.sibling( ( elem.parentNode || {} ).firstChild, elem );
-       },
-       children: function( elem ) {
-               return jQuery.sibling( elem.firstChild );
-       },
-       contents: function( elem ) {
-               return jQuery.nodeName( elem, "iframe" ) ?
-                       elem.contentDocument || elem.contentWindow.document :
-                       jQuery.merge( [], elem.childNodes );
-       }
-}, function( name, fn ) {
-       jQuery.fn[ name ] = function( until, selector ) {
-               var ret = jQuery.map( this, fn, until );
-
-               if ( name.slice( -5 ) !== "Until" ) {
-                       selector = until;
-               }
-
-               if ( selector && typeof selector === "string" ) {
-                       ret = jQuery.filter( selector, ret );
-               }
-
-               if ( this.length > 1 ) {
-                       // Remove duplicates
-                       if ( !guaranteedUnique[ name ] ) {
-                               ret = jQuery.unique( ret );
-                       }
-
-                       // Reverse order for parents* and prev-derivatives
-                       if ( rparentsprev.test( name ) ) {
-                               ret = ret.reverse();
-                       }
-               }
-
-               return this.pushStack( ret );
-       };
-});
-
-jQuery.extend({
-       filter: function( expr, elems, not ) {
-               var elem = elems[ 0 ];
-
-               if ( not ) {
-                       expr = ":not(" + expr + ")";
-               }
-
-               return elems.length === 1 && elem.nodeType === 1 ?
-                       jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [] :
-                       jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) {
-                               return elem.nodeType === 1;
-                       }));
-       },
-
-       dir: function( elem, dir, until ) {
-               var matched = [],
-                       cur = elem[ dir ];
-
-               while ( cur && cur.nodeType !== 9 && (until === undefined || cur.nodeType !== 1 || !jQuery( cur ).is( until )) ) {
-                       if ( cur.nodeType === 1 ) {
-                               matched.push( cur );
-                       }
-                       cur = cur[dir];
-               }
-               return matched;
-       },
-
-       sibling: function( n, elem ) {
-               var r = [];
-
-               for ( ; n; n = n.nextSibling ) {
-                       if ( n.nodeType === 1 && n !== elem ) {
-                               r.push( n );
-                       }
-               }
-
-               return r;
-       }
-});
-
-// Implement the identical functionality for filter and not
-function winnow( elements, qualifier, not ) {
-       if ( jQuery.isFunction( qualifier ) ) {
-               return jQuery.grep( elements, function( elem, i ) {
-                       /* jshint -W018 */
-                       return !!qualifier.call( elem, i, elem ) !== not;
-               });
-
-       }
-
-       if ( qualifier.nodeType ) {
-               return jQuery.grep( elements, function( elem ) {
-                       return ( elem === qualifier ) !== not;
-               });
-
-       }
-
-       if ( typeof qualifier === "string" ) {
-               if ( isSimple.test( qualifier ) ) {
-                       return jQuery.filter( qualifier, elements, not );
-               }
-
-               qualifier = jQuery.filter( qualifier, elements );
-       }
-
-       return jQuery.grep( elements, function( elem ) {
-               return ( jQuery.inArray( elem, qualifier ) >= 0 ) !== not;
-       });
-}
-function createSafeFragment( document ) {
-       var list = nodeNames.split( "|" ),
-               safeFrag = document.createDocumentFragment();
-
-       if ( safeFrag.createElement ) {
-               while ( list.length ) {
-                       safeFrag.createElement(
-                               list.pop()
-                       );
-               }
-       }
-       return safeFrag;
-}
-
-var nodeNames = "abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|" +
-               "header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",
-       rinlinejQuery = / jQuery\d+="(?:null|\d+)"/g,
-       rnoshimcache = new RegExp("<(?:" + nodeNames + ")[\\s/>]", "i"),
-       rleadingWhitespace = /^\s+/,
-       rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,
-       rtagName = /<([\w:]+)/,
-       rtbody = /<tbody/i,
-       rhtml = /<|&#?\w+;/,
-       rnoInnerhtml = /<(?:script|style|link)/i,
-       manipulation_rcheckableType = /^(?:checkbox|radio)$/i,
-       // checked="checked" or checked
-       rchecked = /checked\s*(?:[^=]|=\s*.checked.)/i,
-       rscriptType = /^$|\/(?:java|ecma)script/i,
-       rscriptTypeMasked = /^true\/(.*)/,
-       rcleanScript = /^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g,
-
-       // We have to close these tags to support XHTML (#13200)
-       wrapMap = {
-               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>" ],
-
-               // IE6-8 can't serialize link, script, style, or any html5 (NoScope) tags,
-               // unless wrapped in a div with non-breaking characters in front of it.
-               _default: jQuery.support.htmlSerialize ? [ 0, "", "" ] : [ 1, "X<div>", "</div>"  ]
-       },
-       safeFragment = createSafeFragment( document ),
-       fragmentDiv = safeFragment.appendChild( document.createElement("div") );
-
-wrapMap.optgroup = wrapMap.option;
-wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;
-wrapMap.th = wrapMap.td;
-
-jQuery.fn.extend({
-       text: function( value ) {
-               return jQuery.access( this, function( value ) {
-                       return value === undefined ?
-                               jQuery.text( this ) :
-                               this.empty().append( ( this[0] && this[0].ownerDocument || document ).createTextNode( value ) );
-               }, null, value, arguments.length );
-       },
-
-       append: function() {
-               return this.domManip( arguments, function( elem ) {
-                       if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {
-                               var target = manipulationTarget( this, elem );
-                               target.appendChild( elem );
-                       }
-               });
-       },
-
-       prepend: function() {
-               return this.domManip( arguments, function( elem ) {
-                       if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {
-                               var target = manipulationTarget( this, elem );
-                               target.insertBefore( elem, target.firstChild );
-                       }
-               });
-       },
-
-       before: function() {
-               return this.domManip( arguments, function( elem ) {
-                       if ( this.parentNode ) {
-                               this.parentNode.insertBefore( elem, this );
-                       }
-               });
-       },
-
-       after: function() {
-               return this.domManip( arguments, function( elem ) {
-                       if ( this.parentNode ) {
-                               this.parentNode.insertBefore( elem, this.nextSibling );
-                       }
-               });
-       },
-
-       // keepData is for internal use only--do not document
-       remove: function( selector, keepData ) {
-               var elem,
-                       elems = selector ? jQuery.filter( selector, this ) : this,
-                       i = 0;
-
-               for ( ; (elem = elems[i]) != null; i++ ) {
-
-                       if ( !keepData && elem.nodeType === 1 ) {
-                               jQuery.cleanData( getAll( elem ) );
-                       }
-
-                       if ( elem.parentNode ) {
-                               if ( keepData && jQuery.contains( elem.ownerDocument, elem ) ) {
-                                       setGlobalEval( getAll( elem, "script" ) );
-                               }
-                               elem.parentNode.removeChild( elem );
-                       }
-               }
-
-               return this;
-       },
-
-       empty: function() {
-               var elem,
-                       i = 0;
-
-               for ( ; (elem = this[i]) != null; i++ ) {
-                       // Remove element nodes and prevent memory leaks
-                       if ( elem.nodeType === 1 ) {
-                               jQuery.cleanData( getAll( elem, false ) );
-                       }
-
-                       // Remove any remaining nodes
-                       while ( elem.firstChild ) {
-                               elem.removeChild( elem.firstChild );
-                       }
-
-                       // If this is a select, ensure that it displays empty (#12336)
-                       // Support: IE<9
-                       if ( elem.options && jQuery.nodeName( elem, "select" ) ) {
-                               elem.options.length = 0;
-                       }
-               }
-
-               return this;
-       },
-
-       clone: function( dataAndEvents, deepDataAndEvents ) {
-               dataAndEvents = dataAndEvents == null ? false : dataAndEvents;
-               deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;
-
-               return this.map( function () {
-                       return jQuery.clone( this, dataAndEvents, deepDataAndEvents );
-               });
-       },
-
-       html: function( value ) {
-               return jQuery.access( this, function( value ) {
-                       var elem = this[0] || {},
-                               i = 0,
-                               l = this.length;
-
-                       if ( value === undefined ) {
-                               return elem.nodeType === 1 ?
-                                       elem.innerHTML.replace( rinlinejQuery, "" ) :
-                                       undefined;
-                       }
-
-                       // See if we can take a shortcut and just use innerHTML
-                       if ( typeof value === "string" && !rnoInnerhtml.test( value ) &&
-                               ( jQuery.support.htmlSerialize || !rnoshimcache.test( value )  ) &&
-                               ( jQuery.support.leadingWhitespace || !rleadingWhitespace.test( value ) ) &&
-                               !wrapMap[ ( rtagName.exec( value ) || ["", ""] )[1].toLowerCase() ] ) {
-
-                               value = value.replace( rxhtmlTag, "<$1></$2>" );
-
-                               try {
-                                       for (; i < l; i++ ) {
-                                               // Remove element nodes and prevent memory leaks
-                                               elem = this[i] || {};
-                                               if ( elem.nodeType === 1 ) {
-                                                       jQuery.cleanData( getAll( elem, false ) );
-                                                       elem.innerHTML = value;
-                                               }
-                                       }
-
-                                       elem = 0;
-
-                               // If using innerHTML throws an exception, use the fallback method
-                               } catch(e) {}
-                       }
-
-                       if ( elem ) {
-                               this.empty().append( value );
-                       }
-               }, null, value, arguments.length );
-       },
-
-       replaceWith: function() {
-               var
-                       // Snapshot the DOM in case .domManip sweeps something relevant into its fragment
-                       args = jQuery.map( this, function( elem ) {
-                               return [ elem.nextSibling, elem.parentNode ];
-                       }),
-                       i = 0;
-
-               // Make the changes, replacing each context element with the new content
-               this.domManip( arguments, function( elem ) {
-                       var next = args[ i++ ],
-                               parent = args[ i++ ];
-
-                       if ( parent ) {
-                               // Don't use the snapshot next if it has moved (#13810)
-                               if ( next && next.parentNode !== parent ) {
-                                       next = this.nextSibling;
-                               }
-                               jQuery( this ).remove();
-                               parent.insertBefore( elem, next );
-                       }
-               // Allow new content to include elements from the context set
-               }, true );
-
-               // Force removal if there was no new content (e.g., from empty arguments)
-               return i ? this : this.remove();
-       },
-
-       detach: function( selector ) {
-               return this.remove( selector, true );
-       },
-
-       domManip: function( args, callback, allowIntersection ) {
-
-               // Flatten any nested arrays
-               args = core_concat.apply( [], args );
-
-               var first, node, hasScripts,
-                       scripts, doc, fragment,
-                       i = 0,
-                       l = this.length,
-                       set = this,
-                       iNoClone = l - 1,
-                       value = args[0],
-                       isFunction = jQuery.isFunction( value );
-
-               // We can't cloneNode fragments that contain checked, in WebKit
-               if ( isFunction || !( l <= 1 || typeof value !== "string" || jQuery.support.checkClone || !rchecked.test( value ) ) ) {
-                       return this.each(function( index ) {
-                               var self = set.eq( index );
-                               if ( isFunction ) {
-                                       args[0] = value.call( this, index, self.html() );
-                               }
-                               self.domManip( args, callback, allowIntersection );
-                       });
-               }
-
-               if ( l ) {
-                       fragment = jQuery.buildFragment( args, this[ 0 ].ownerDocument, false, !allowIntersection && this );
-                       first = fragment.firstChild;
-
-                       if ( fragment.childNodes.length === 1 ) {
-                               fragment = first;
-                       }
-
-                       if ( first ) {
-                               scripts = jQuery.map( getAll( fragment, "script" ), disableScript );
-                               hasScripts = scripts.length;
-
-                               // Use the original fragment for the last item instead of the first because it can end up
-                               // being emptied incorrectly in certain situations (#8070).
-                               for ( ; i < l; i++ ) {
-                                       node = fragment;
-
-                                       if ( i !== iNoClone ) {
-                                               node = jQuery.clone( node, true, true );
-
-                                               // Keep references to cloned scripts for later restoration
-                                               if ( hasScripts ) {
-                                                       jQuery.merge( scripts, getAll( node, "script" ) );
-                                               }
-                                       }
-
-                                       callback.call( this[i], node, i );
-                               }
-
-                               if ( hasScripts ) {
-                                       doc = scripts[ scripts.length - 1 ].ownerDocument;
-
-                                       // Reenable scripts
-                                       jQuery.map( scripts, restoreScript );
-
-                                       // Evaluate executable scripts on first document insertion
-                                       for ( i = 0; i < hasScripts; i++ ) {
-                                               node = scripts[ i ];
-                                               if ( rscriptType.test( node.type || "" ) &&
-                                                       !jQuery._data( node, "globalEval" ) && jQuery.contains( doc, node ) ) {
-
-                                                       if ( node.src ) {
-                                                               // Hope ajax is available...
-                                                               jQuery._evalUrl( node.src );
-                                                       } else {
-                                                               jQuery.globalEval( ( node.text || node.textContent || node.innerHTML || "" ).replace( rcleanScript, "" ) );
-                                                       }
-                                               }
-                                       }
-                               }
-
-                               // Fix #11809: Avoid leaking memory
-                               fragment = first = null;
-                       }
-               }
-
-               return this;
-       }
-});
-
-// Support: IE<8
-// Manipulating tables requires a tbody
-function manipulationTarget( elem, content ) {
-       return jQuery.nodeName( elem, "table" ) &&
-               jQuery.nodeName( content.nodeType === 1 ? content : content.firstChild, "tr" ) ?
-
-               elem.getElementsByTagName("tbody")[0] ||
-                       elem.appendChild( elem.ownerDocument.createElement("tbody") ) :
-               elem;
-}
-
-// Replace/restore the type attribute of script elements for safe DOM manipulation
-function disableScript( elem ) {
-       elem.type = (jQuery.find.attr( elem, "type" ) !== null) + "/" + elem.type;
-       return elem;
-}
-function restoreScript( elem ) {
-       var match = rscriptTypeMasked.exec( elem.type );
-       if ( match ) {
-               elem.type = match[1];
-       } else {
-               elem.removeAttribute("type");
-       }
-       return elem;
-}
-
-// Mark scripts as having already been evaluated
-function setGlobalEval( elems, refElements ) {
-       var elem,
-               i = 0;
-       for ( ; (elem = elems[i]) != null; i++ ) {
-               jQuery._data( elem, "globalEval", !refElements || jQuery._data( refElements[i], "globalEval" ) );
-       }
-}
-
-function cloneCopyEvent( src, dest ) {
-
-       if ( dest.nodeType !== 1 || !jQuery.hasData( src ) ) {
-               return;
-       }
-
-       var type, i, l,
-               oldData = jQuery._data( src ),
-               curData = jQuery._data( dest, oldData ),
-               events = oldData.events;
-
-       if ( events ) {
-               delete curData.handle;
-               curData.events = {};
-
-               for ( type in events ) {
-                       for ( i = 0, l = events[ type ].length; i < l; i++ ) {
-                               jQuery.event.add( dest, type, events[ type ][ i ] );
-                       }
-               }
-       }
-
-       // make the cloned public data object a copy from the original
-       if ( curData.data ) {
-               curData.data = jQuery.extend( {}, curData.data );
-       }
-}
-
-function fixCloneNodeIssues( src, dest ) {
-       var nodeName, e, data;
-
-       // We do not need to do anything for non-Elements
-       if ( dest.nodeType !== 1 ) {
-               return;
-       }
-
-       nodeName = dest.nodeName.toLowerCase();
-
-       // IE6-8 copies events bound via attachEvent when using cloneNode.
-       if ( !jQuery.support.noCloneEvent && dest[ jQuery.expando ] ) {
-               data = jQuery._data( dest );
-
-               for ( e in data.events ) {
-                       jQuery.removeEvent( dest, e, data.handle );
-               }
-
-               // Event data gets referenced instead of copied if the expando gets copied too
-               dest.removeAttribute( jQuery.expando );
-       }
-
-       // IE blanks contents when cloning scripts, and tries to evaluate newly-set text
-       if ( nodeName === "script" && dest.text !== src.text ) {
-               disableScript( dest ).text = src.text;
-               restoreScript( dest );
-
-       // IE6-10 improperly clones children of object elements using classid.
-       // IE10 throws NoModificationAllowedError if parent is null, #12132.
-       } else if ( nodeName === "object" ) {
-               if ( dest.parentNode ) {
-                       dest.outerHTML = src.outerHTML;
-               }
-
-               // This path appears unavoidable for IE9. When cloning an object
-               // element in IE9, the outerHTML strategy above is not sufficient.
-               // If the src has innerHTML and the destination does not,
-               // copy the src.innerHTML into the dest.innerHTML. #10324
-               if ( jQuery.support.html5Clone && ( src.innerHTML && !jQuery.trim(dest.innerHTML) ) ) {
-                       dest.innerHTML = src.innerHTML;
-               }
-
-       } else if ( nodeName === "input" && manipulation_rcheckableType.test( src.type ) ) {
-               // IE6-8 fails to persist the checked state of a cloned checkbox
-               // or radio button. Worse, IE6-7 fail to give the cloned element
-               // a checked appearance if the defaultChecked value isn't also set
-
-               dest.defaultChecked = dest.checked = src.checked;
-
-               // IE6-7 get confused and end up setting the value of a cloned
-               // checkbox/radio button to an empty string instead of "on"
-               if ( dest.value !== src.value ) {
-                       dest.value = src.value;
-               }
-
-       // IE6-8 fails to return the selected option to the default selected
-       // state when cloning options
-       } else if ( nodeName === "option" ) {
-               dest.defaultSelected = dest.selected = src.defaultSelected;
-
-       // IE6-8 fails to set the defaultValue to the correct value when
-       // cloning other types of input fields
-       } else if ( nodeName === "input" || nodeName === "textarea" ) {
-               dest.defaultValue = src.defaultValue;
-       }
-}
-
-jQuery.each({
-       appendTo: "append",
-       prependTo: "prepend",
-       insertBefore: "before",
-       insertAfter: "after",
-       replaceAll: "replaceWith"
-}, function( name, original ) {
-       jQuery.fn[ name ] = function( selector ) {
-               var elems,
-                       i = 0,
-                       ret = [],
-                       insert = jQuery( selector ),
-                       last = insert.length - 1;
-
-               for ( ; i <= last; i++ ) {
-                       elems = i === last ? this : this.clone(true);
-                       jQuery( insert[i] )[ original ]( elems );
-
-                       // Modern browsers can apply jQuery collections as arrays, but oldIE needs a .get()
-                       core_push.apply( ret, elems.get() );
-               }
-
-               return this.pushStack( ret );
-       };
-});
-
-function getAll( context, tag ) {
-       var elems, elem,
-               i = 0,
-               found = typeof context.getElementsByTagName !== core_strundefined ? context.getElementsByTagName( tag || "*" ) :
-                       typeof context.querySelectorAll !== core_strundefined ? context.querySelectorAll( tag || "*" ) :
-                       undefined;
-
-       if ( !found ) {
-               for ( found = [], elems = context.childNodes || context; (elem = elems[i]) != null; i++ ) {
-                       if ( !tag || jQuery.nodeName( elem, tag ) ) {
-                               found.push( elem );
-                       } else {
-                               jQuery.merge( found, getAll( elem, tag ) );
-                       }
-               }
-       }
-
-       return tag === undefined || tag && jQuery.nodeName( context, tag ) ?
-               jQuery.merge( [ context ], found ) :
-               found;
-}
-
-// Used in buildFragment, fixes the defaultChecked property
-function fixDefaultChecked( elem ) {
-       if ( manipulation_rcheckableType.test( elem.type ) ) {
-               elem.defaultChecked = elem.checked;
-       }
-}
-
-jQuery.extend({
-       clone: function( elem, dataAndEvents, deepDataAndEvents ) {
-               var destElements, node, clone, i, srcElements,
-                       inPage = jQuery.contains( elem.ownerDocument, elem );
-
-               if ( jQuery.support.html5Clone || jQuery.isXMLDoc(elem) || !rnoshimcache.test( "<" + elem.nodeName + ">" ) ) {
-                       clone = elem.cloneNode( true );
-
-               // IE<=8 does not properly clone detached, unknown element nodes
-               } else {
-                       fragmentDiv.innerHTML = elem.outerHTML;
-                       fragmentDiv.removeChild( clone = fragmentDiv.firstChild );
-               }
-
-               if ( (!jQuery.support.noCloneEvent || !jQuery.support.noCloneChecked) &&
-                               (elem.nodeType === 1 || elem.nodeType === 11) && !jQuery.isXMLDoc(elem) ) {
-
-                       // We eschew Sizzle here for performance reasons: http://jsperf.com/getall-vs-sizzle/2
-                       destElements = getAll( clone );
-                       srcElements = getAll( elem );
-
-                       // Fix all IE cloning issues
-                       for ( i = 0; (node = srcElements[i]) != null; ++i ) {
-                               // Ensure that the destination node is not null; Fixes #9587
-                               if ( destElements[i] ) {
-                                       fixCloneNodeIssues( node, destElements[i] );
-                               }
-                       }
-               }
-
-               // Copy the events from the original to the clone
-               if ( dataAndEvents ) {
-                       if ( deepDataAndEvents ) {
-                               srcElements = srcElements || getAll( elem );
-                               destElements = destElements || getAll( clone );
-
-                               for ( i = 0; (node = srcElements[i]) != null; i++ ) {
-                                       cloneCopyEvent( node, destElements[i] );
-                               }
-                       } else {
-                               cloneCopyEvent( elem, clone );
-                       }
-               }
-
-               // Preserve script evaluation history
-               destElements = getAll( clone, "script" );
-               if ( destElements.length > 0 ) {
-                       setGlobalEval( destElements, !inPage && getAll( elem, "script" ) );
-               }
-
-               destElements = srcElements = node = null;
-
-               // Return the cloned set
-               return clone;
-       },
-
-       buildFragment: function( elems, context, scripts, selection ) {
-               var j, elem, contains,
-                       tmp, tag, tbody, wrap,
-                       l = elems.length,
-
-                       // Ensure a safe fragment
-                       safe = createSafeFragment( context ),
-
-                       nodes = [],
-                       i = 0;
-
-               for ( ; i < l; i++ ) {
-                       elem = elems[ i ];
-
-                       if ( elem || elem === 0 ) {
-
-                               // Add nodes directly
-                               if ( jQuery.type( elem ) === "object" ) {
-                                       jQuery.merge( nodes, elem.nodeType ? [ elem ] : elem );
-
-                               // Convert non-html into a text node
-                               } else if ( !rhtml.test( elem ) ) {
-                                       nodes.push( context.createTextNode( elem ) );
-
-                               // Convert html into DOM nodes
-                               } else {
-                                       tmp = tmp || safe.appendChild( context.createElement("div") );
-
-                                       // Deserialize a standard representation
-                                       tag = ( rtagName.exec( elem ) || ["", ""] )[1].toLowerCase();
-                                       wrap = wrapMap[ tag ] || wrapMap._default;
-
-                                       tmp.innerHTML = wrap[1] + elem.replace( rxhtmlTag, "<$1></$2>" ) + wrap[2];
-
-                                       // Descend through wrappers to the right content
-                                       j = wrap[0];
-                                       while ( j-- ) {
-                                               tmp = tmp.lastChild;
-                                       }
-
-                                       // Manually add leading whitespace removed by IE
-                                       if ( !jQuery.support.leadingWhitespace && rleadingWhitespace.test( elem ) ) {
-                                               nodes.push( context.createTextNode( rleadingWhitespace.exec( elem )[0] ) );
-                                       }
-
-                                       // Remove IE's autoinserted <tbody> from table fragments
-                                       if ( !jQuery.support.tbody ) {
-
-                                               // String was a <table>, *may* have spurious <tbody>
-                                               elem = tag === "table" && !rtbody.test( elem ) ?
-                                                       tmp.firstChild :
-
-                                                       // String was a bare <thead> or <tfoot>
-                                                       wrap[1] === "<table>" && !rtbody.test( elem ) ?
-                                                               tmp :
-                                                               0;
-
-                                               j = elem && elem.childNodes.length;
-                                               while ( j-- ) {
-                                                       if ( jQuery.nodeName( (tbody = elem.childNodes[j]), "tbody" ) && !tbody.childNodes.length ) {
-                                                               elem.removeChild( tbody );
-                                                       }
-                                               }
-                                       }
-
-                                       jQuery.merge( nodes, tmp.childNodes );
-
-                                       // Fix #12392 for WebKit and IE > 9
-                                       tmp.textContent = "";
-
-                                       // Fix #12392 for oldIE
-                                       while ( tmp.firstChild ) {
-                                               tmp.removeChild( tmp.firstChild );
-                                       }
-
-                                       // Remember the top-level container for proper cleanup
-                                       tmp = safe.lastChild;
-                               }
-                       }
-               }
-
-               // Fix #11356: Clear elements from fragment
-               if ( tmp ) {
-                       safe.removeChild( tmp );
-               }
-
-               // Reset defaultChecked for any radios and checkboxes
-               // about to be appended to the DOM in IE 6/7 (#8060)
-               if ( !jQuery.support.appendChecked ) {
-                       jQuery.grep( getAll( nodes, "input" ), fixDefaultChecked );
-               }
-
-               i = 0;
-               while ( (elem = nodes[ i++ ]) ) {
-
-                       // #4087 - If origin and destination elements are the same, and this is
-                       // that element, do not do anything
-                       if ( selection && jQuery.inArray( elem, selection ) !== -1 ) {
-                               continue;
-                       }
-
-                       contains = jQuery.contains( elem.ownerDocument, elem );
-
-                       // Append to fragment
-                       tmp = getAll( safe.appendChild( elem ), "script" );
-
-                       // Preserve script evaluation history
-                       if ( contains ) {
-                               setGlobalEval( tmp );
-                       }
-
-                       // Capture executables
-                       if ( scripts ) {
-                               j = 0;
-                               while ( (elem = tmp[ j++ ]) ) {
-                                       if ( rscriptType.test( elem.type || "" ) ) {
-                                               scripts.push( elem );
-                                       }
-                               }
-                       }
-               }
-
-               tmp = null;
-
-               return safe;
-       },
-
-       cleanData: function( elems, /* internal */ acceptData ) {
-               var elem, type, id, data,
-                       i = 0,
-                       internalKey = jQuery.expando,
-                       cache = jQuery.cache,
-                       deleteExpando = jQuery.support.deleteExpando,
-                       special = jQuery.event.special;
-
-               for ( ; (elem = elems[i]) != null; i++ ) {
-
-                       if ( acceptData || jQuery.acceptData( elem ) ) {
-
-                               id = elem[ internalKey ];
-                               data = id && cache[ id ];
-
-                               if ( data ) {
-                                       if ( data.events ) {
-                                               for ( type in data.events ) {
-                                                       if ( special[ type ] ) {
-                                                               jQuery.event.remove( elem, type );
-
-                                                       // This is a shortcut to avoid jQuery.event.remove's overhead
-                                                       } else {
-                                                               jQuery.removeEvent( elem, type, data.handle );
-                                                       }
-                                               }
-                                       }
-
-                                       // Remove cache only if it was not already removed by jQuery.event.remove
-                                       if ( cache[ id ] ) {
-
-                                               delete cache[ id ];
-
-                                               // IE does not allow us to delete expando properties from nodes,
-                                               // nor does it have a removeAttribute function on Document nodes;
-                                               // we must handle all of these cases
-                                               if ( deleteExpando ) {
-                                                       delete elem[ internalKey ];
-
-                                               } else if ( typeof elem.removeAttribute !== core_strundefined ) {
-                                                       elem.removeAttribute( internalKey );
-
-                                               } else {
-                                                       elem[ internalKey ] = null;
-                                               }
-
-                                               core_deletedIds.push( id );
-                                       }
-                               }
-                       }
-               }
-       },
-
-       _evalUrl: function( url ) {
-               return jQuery.ajax({
-                       url: url,
-                       type: "GET",
-                       dataType: "script",
-                       async: false,
-                       global: false,
-                       "throws": true
-               });
-       }
-});
-jQuery.fn.extend({
-       wrapAll: function( html ) {
-               if ( jQuery.isFunction( html ) ) {
-                       return this.each(function(i) {
-                               jQuery(this).wrapAll( html.call(this, i) );
-                       });
-               }
-
-               if ( this[0] ) {
-                       // The elements to wrap the target around
-                       var wrap = jQuery( html, this[0].ownerDocument ).eq(0).clone(true);
-
-                       if ( this[0].parentNode ) {
-                               wrap.insertBefore( this[0] );
-                       }
-
-                       wrap.map(function() {
-                               var elem = this;
-
-                               while ( elem.firstChild && elem.firstChild.nodeType === 1 ) {
-                                       elem = elem.firstChild;
-                               }
-
-                               return elem;
-                       }).append( this );
-               }
-
-               return this;
-       },
-
-       wrapInner: function( html ) {
-               if ( jQuery.isFunction( html ) ) {
-                       return this.each(function(i) {
-                               jQuery(this).wrapInner( html.call(this, i) );
-                       });
-               }
-
-               return this.each(function() {
-                       var self = jQuery( this ),
-                               contents = self.contents();
-
-                       if ( contents.length ) {
-                               contents.wrapAll( html );
-
-                       } else {
-                               self.append( html );
-                       }
-               });
-       },
-
-       wrap: function( html ) {
-               var isFunction = jQuery.isFunction( html );
-
-               return this.each(function(i) {
-                       jQuery( this ).wrapAll( isFunction ? html.call(this, i) : html );
-               });
-       },
-
-       unwrap: function() {
-               return this.parent().each(function() {
-                       if ( !jQuery.nodeName( this, "body" ) ) {
-                               jQuery( this ).replaceWith( this.childNodes );
-                       }
-               }).end();
-       }
-});
-var iframe, getStyles, curCSS,
-       ralpha = /alpha\([^)]*\)/i,
-       ropacity = /opacity\s*=\s*([^)]*)/,
-       rposition = /^(top|right|bottom|left)$/,
-       // swappable if display is none or starts with table except "table", "table-cell", or "table-caption"
-       // see here for display values: https://developer.mozilla.org/en-US/docs/CSS/display
-       rdisplayswap = /^(none|table(?!-c[ea]).+)/,
-       rmargin = /^margin/,
-       rnumsplit = new RegExp( "^(" + core_pnum + ")(.*)$", "i" ),
-       rnumnonpx = new RegExp( "^(" + core_pnum + ")(?!px)[a-z%]+$", "i" ),
-       rrelNum = new RegExp( "^([+-])=(" + core_pnum + ")", "i" ),
-       elemdisplay = { BODY: "block" },
-
-       cssShow = { position: "absolute", visibility: "hidden", display: "block" },
-       cssNormalTransform = {
-               letterSpacing: 0,
-               fontWeight: 400
-       },
-
-       cssExpand = [ "Top", "Right", "Bottom", "Left" ],
-       cssPrefixes = [ "Webkit", "O", "Moz", "ms" ];
-
-// return a css property mapped to a potentially vendor prefixed property
-function vendorPropName( style, name ) {
-
-       // shortcut for names that are not vendor prefixed
-       if ( name in style ) {
-               return name;
-       }
-
-       // check for vendor prefixed names
-       var capName = name.charAt(0).toUpperCase() + name.slice(1),
-               origName = name,
-               i = cssPrefixes.length;
-
-       while ( i-- ) {
-               name = cssPrefixes[ i ] + capName;
-               if ( name in style ) {
-                       return name;
-               }
-       }
-
-       return origName;
-}
-
-function isHidden( elem, el ) {
-       // isHidden might be called from jQuery#filter function;
-       // in that case, element will be second argument
-       elem = el || elem;
-       return jQuery.css( elem, "display" ) === "none" || !jQuery.contains( elem.ownerDocument, elem );
-}
-
-function showHide( elements, show ) {
-       var display, elem, hidden,
-               values = [],
-               index = 0,
-               length = elements.length;
-
-       for ( ; index < length; index++ ) {
-               elem = elements[ index ];
-               if ( !elem.style ) {
-                       continue;
-               }
-
-               values[ index ] = jQuery._data( elem, "olddisplay" );
-               display = elem.style.display;
-               if ( show ) {
-                       // Reset the inline display of this element to learn if it is
-                       // being hidden by cascaded rules or not
-                       if ( !values[ index ] && display === "none" ) {
-                               elem.style.display = "";
-                       }
-
-                       // Set elements which have been overridden with display: none
-                       // in a stylesheet to whatever the default browser style is
-                       // for such an element
-                       if ( elem.style.display === "" && isHidden( elem ) ) {
-                               values[ index ] = jQuery._data( elem, "olddisplay", css_defaultDisplay(elem.nodeName) );
-                       }
-               } else {
-
-                       if ( !values[ index ] ) {
-                               hidden = isHidden( elem );
-
-                               if ( display && display !== "none" || !hidden ) {
-                                       jQuery._data( elem, "olddisplay", hidden ? display : jQuery.css( elem, "display" ) );
-                               }
-                       }
-               }
-       }
-
-       // Set the display of most of the elements in a second loop
-       // to avoid the constant reflow
-       for ( index = 0; index < length; index++ ) {
-               elem = elements[ index ];
-               if ( !elem.style ) {
-                       continue;
-               }
-               if ( !show || elem.style.display === "none" || elem.style.display === "" ) {
-                       elem.style.display = show ? values[ index ] || "" : "none";
-               }
-       }
-
-       return elements;
-}
-
-jQuery.fn.extend({
-       css: function( name, value ) {
-               return jQuery.access( this, function( elem, name, value ) {
-                       var len, styles,
-                               map = {},
-                               i = 0;
-
-                       if ( jQuery.isArray( name ) ) {
-                               styles = getStyles( elem );
-                               len = name.length;
-
-                               for ( ; i < len; i++ ) {
-                                       map[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles );
-                               }
-
-                               return map;
-                       }
-
-                       return value !== undefined ?
-                               jQuery.style( elem, name, value ) :
-                               jQuery.css( elem, name );
-               }, name, value, arguments.length > 1 );
-       },
-       show: function() {
-               return showHide( this, true );
-       },
-       hide: function() {
-               return showHide( this );
-       },
-       toggle: function( state ) {
-               if ( typeof state === "boolean" ) {
-                       return state ? this.show() : this.hide();
-               }
-
-               return this.each(function() {
-                       if ( isHidden( this ) ) {
-                               jQuery( this ).show();
-                       } else {
-                               jQuery( this ).hide();
-                       }
-               });
-       }
-});
-
-jQuery.extend({
-       // Add in style property hooks for overriding the default
-       // behavior of getting and setting a style property
-       cssHooks: {
-               opacity: {
-                       get: function( elem, computed ) {
-                               if ( computed ) {
-                                       // We should always get a number back from opacity
-                                       var ret = curCSS( elem, "opacity" );
-                                       return ret === "" ? "1" : ret;
-                               }
-                       }
-               }
-       },
-
-       // Don't automatically add "px" to these possibly-unitless properties
-       cssNumber: {
-               "columnCount": true,
-               "fillOpacity": true,
-               "fontWeight": true,
-               "lineHeight": true,
-               "opacity": true,
-               "order": true,
-               "orphans": true,
-               "widows": true,
-               "zIndex": true,
-               "zoom": true
-       },
-
-       // Add in properties whose names you wish to fix before
-       // setting or getting the value
-       cssProps: {
-               // normalize float css property
-               "float": jQuery.support.cssFloat ? "cssFloat" : "styleFloat"
-       },
-
-       // Get and set the style property on a DOM Node
-       style: function( elem, name, value, extra ) {
-               // Don't set styles on text and comment nodes
-               if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {
-                       return;
-               }
-
-               // Make sure that we're working with the right name
-               var ret, type, hooks,
-                       origName = jQuery.camelCase( name ),
-                       style = elem.style;
-
-               name = jQuery.cssProps[ origName ] || ( jQuery.cssProps[ origName ] = vendorPropName( style, origName ) );
-
-               // gets hook for the prefixed version
-               // followed by the unprefixed version
-               hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];
-
-               // Check if we're setting a value
-               if ( value !== undefined ) {
-                       type = typeof value;
-
-                       // convert relative number strings (+= or -=) to relative numbers. #7345
-                       if ( type === "string" && (ret = rrelNum.exec( value )) ) {
-                               value = ( ret[1] + 1 ) * ret[2] + parseFloat( jQuery.css( elem, name ) );
-                               // Fixes bug #9237
-                               type = "number";
-                       }
-
-                       // Make sure that NaN and null values aren't set. See: #7116
-                       if ( value == null || type === "number" && isNaN( value ) ) {
-                               return;
-                       }
-
-                       // If a number was passed in, add 'px' to the (except for certain CSS properties)
-                       if ( type === "number" && !jQuery.cssNumber[ origName ] ) {
-                               value += "px";
-                       }
-
-                       // Fixes #8908, it can be done more correctly by specifing setters in cssHooks,
-                       // but it would mean to define eight (for every problematic property) identical functions
-                       if ( !jQuery.support.clearCloneStyle && value === "" && name.indexOf("background") === 0 ) {
-                               style[ name ] = "inherit";
-                       }
-
-                       // If a hook was provided, use that value, otherwise just set the specified value
-                       if ( !hooks || !("set" in hooks) || (value = hooks.set( elem, value, extra )) !== undefined ) {
-
-                               // Wrapped to prevent IE from throwing errors when 'invalid' values are provided
-                               // Fixes bug #5509
-                               try {
-                                       style[ name ] = value;
-                               } catch(e) {}
-                       }
-
-               } else {
-                       // If a hook was provided get the non-computed value from there
-                       if ( hooks && "get" in hooks && (ret = hooks.get( elem, false, extra )) !== undefined ) {
-                               return ret;
-                       }
-
-                       // Otherwise just get the value from the style object
-                       return style[ name ];
-               }
-       },
-
-       css: function( elem, name, extra, styles ) {
-               var num, val, hooks,
-                       origName = jQuery.camelCase( name );
-
-               // Make sure that we're working with the right name
-               name = jQuery.cssProps[ origName ] || ( jQuery.cssProps[ origName ] = vendorPropName( elem.style, origName ) );
-
-               // gets hook for the prefixed version
-               // followed by the unprefixed version
-               hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];
-
-               // If a hook was provided get the computed value from there
-               if ( hooks && "get" in hooks ) {
-                       val = hooks.get( elem, true, extra );
-               }
-
-               // Otherwise, if a way to get the computed value exists, use that
-               if ( val === undefined ) {
-                       val = curCSS( elem, name, styles );
-               }
-
-               //convert "normal" to computed value
-               if ( val === "normal" && name in cssNormalTransform ) {
-                       val = cssNormalTransform[ name ];
-               }
-
-               // Return, converting to number if forced or a qualifier was provided and val looks numeric
-               if ( extra === "" || extra ) {
-                       num = parseFloat( val );
-                       return extra === true || jQuery.isNumeric( num ) ? num || 0 : val;
-               }
-               return val;
-       }
-});
-
-// NOTE: we've included the "window" in window.getComputedStyle
-// because jsdom on node.js will break without it.
-if ( window.getComputedStyle ) {
-       getStyles = function( elem ) {
-               return window.getComputedStyle( elem, null );
-       };
-
-       curCSS = function( elem, name, _computed ) {
-               var width, minWidth, maxWidth,
-                       computed = _computed || getStyles( elem ),
-
-                       // getPropertyValue is only needed for .css('filter') in IE9, see #12537
-                       ret = computed ? computed.getPropertyValue( name ) || computed[ name ] : undefined,
-                       style = elem.style;
-
-               if ( computed ) {
-
-                       if ( ret === "" && !jQuery.contains( elem.ownerDocument, elem ) ) {
-                               ret = jQuery.style( elem, name );
-                       }
-
-                       // A tribute to the "awesome hack by Dean Edwards"
-                       // Chrome < 17 and Safari 5.0 uses "computed value" instead of "used value" for margin-right
-                       // Safari 5.1.7 (at least) returns percentage for a larger set of values, but width seems to be reliably pixels
-                       // this is against the CSSOM draft spec: http://dev.w3.org/csswg/cssom/#resolved-values
-                       if ( rnumnonpx.test( ret ) && rmargin.test( name ) ) {
-
-                               // Remember the original values
-                               width = style.width;
-                               minWidth = style.minWidth;
-                               maxWidth = style.maxWidth;
-
-                               // Put in the new values to get a computed value out
-                               style.minWidth = style.maxWidth = style.width = ret;
-                               ret = computed.width;
-
-                               // Revert the changed values
-                               style.width = width;
-                               style.minWidth = minWidth;
-                               style.maxWidth = maxWidth;
-                       }
-               }
-
-               return ret;
-       };
-} else if ( document.documentElement.currentStyle ) {
-       getStyles = function( elem ) {
-               return elem.currentStyle;
-       };
-
-       curCSS = function( elem, name, _computed ) {
-               var left, rs, rsLeft,
-                       computed = _computed || getStyles( elem ),
-                       ret = computed ? computed[ name ] : undefined,
-                       style = elem.style;
-
-               // Avoid setting ret to empty string here
-               // so we don't default to auto
-               if ( ret == null && style && style[ name ] ) {
-                       ret = style[ name ];
-               }
-
-               // From the awesome hack by Dean Edwards
-               // http://erik.eae.net/archives/2007/07/27/18.54.15/#comment-102291
-
-               // If we're not dealing with a regular pixel number
-               // but a number that has a weird ending, we need to convert it to pixels
-               // but not position css attributes, as those are proportional to the parent element instead
-               // and we can't measure the parent instead because it might trigger a "stacking dolls" problem
-               if ( rnumnonpx.test( ret ) && !rposition.test( name ) ) {
-
-                       // Remember the original values
-                       left = style.left;
-                       rs = elem.runtimeStyle;
-                       rsLeft = rs && rs.left;
-
-                       // Put in the new values to get a computed value out
-                       if ( rsLeft ) {
-                               rs.left = elem.currentStyle.left;
-                       }
-                       style.left = name === "fontSize" ? "1em" : ret;
-                       ret = style.pixelLeft + "px";
-
-                       // Revert the changed values
-                       style.left = left;
-                       if ( rsLeft ) {
-                               rs.left = rsLeft;
-                       }
-               }
-
-               return ret === "" ? "auto" : ret;
-       };
-}
-
-function setPositiveNumber( elem, value, subtract ) {
-       var matches = rnumsplit.exec( value );
-       return matches ?
-               // Guard against undefined "subtract", e.g., when used as in cssHooks
-               Math.max( 0, matches[ 1 ] - ( subtract || 0 ) ) + ( matches[ 2 ] || "px" ) :
-               value;
-}
-
-function augmentWidthOrHeight( elem, name, extra, isBorderBox, styles ) {
-       var i = extra === ( isBorderBox ? "border" : "content" ) ?
-               // If we already have the right measurement, avoid augmentation
-               4 :
-               // Otherwise initialize for horizontal or vertical properties
-               name === "width" ? 1 : 0,
-
-               val = 0;
-
-       for ( ; i < 4; i += 2 ) {
-               // both box models exclude margin, so add it if we want it
-               if ( extra === "margin" ) {
-                       val += jQuery.css( elem, extra + cssExpand[ i ], true, styles );
-               }
-
-               if ( isBorderBox ) {
-                       // border-box includes padding, so remove it if we want content
-                       if ( extra === "content" ) {
-                               val -= jQuery.css( elem, "padding" + cssExpand[ i ], true, styles );
-                       }
-
-                       // at this point, extra isn't border nor margin, so remove border
-                       if ( extra !== "margin" ) {
-                               val -= jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles );
-                       }
-               } else {
-                       // at this point, extra isn't content, so add padding
-                       val += jQuery.css( elem, "padding" + cssExpand[ i ], true, styles );
-
-                       // at this point, extra isn't content nor padding, so add border
-                       if ( extra !== "padding" ) {
-                               val += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles );
-                       }
-               }
-       }
-
-       return val;
-}
-
-function getWidthOrHeight( elem, name, extra ) {
-
-       // Start with offset property, which is equivalent to the border-box value
-       var valueIsBorderBox = true,
-               val = name === "width" ? elem.offsetWidth : elem.offsetHeight,
-               styles = getStyles( elem ),
-               isBorderBox = jQuery.support.boxSizing && jQuery.css( elem, "boxSizing", false, styles ) === "border-box";
-
-       // some non-html elements return undefined for offsetWidth, so check for null/undefined
-       // svg - https://bugzilla.mozilla.org/show_bug.cgi?id=649285
-       // MathML - https://bugzilla.mozilla.org/show_bug.cgi?id=491668
-       if ( val <= 0 || val == null ) {
-               // Fall back to computed then uncomputed css if necessary
-               val = curCSS( elem, name, styles );
-               if ( val < 0 || val == null ) {
-                       val = elem.style[ name ];
-               }
-
-               // Computed unit is not pixels. Stop here and return.
-               if ( rnumnonpx.test(val) ) {
-                       return val;
-               }
-
-               // we need the check for style in case a browser which returns unreliable values
-               // for getComputedStyle silently falls back to the reliable elem.style
-               valueIsBorderBox = isBorderBox && ( jQuery.support.boxSizingReliable || val === elem.style[ name ] );
-
-               // Normalize "", auto, and prepare for extra
-               val = parseFloat( val ) || 0;
-       }
-
-       // use the active box-sizing model to add/subtract irrelevant styles
-       return ( val +
-               augmentWidthOrHeight(
-                       elem,
-                       name,
-                       extra || ( isBorderBox ? "border" : "content" ),
-                       valueIsBorderBox,
-                       styles
-               )
-       ) + "px";
-}
-
-// Try to determine the default display value of an element
-function css_defaultDisplay( nodeName ) {
-       var doc = document,
-               display = elemdisplay[ nodeName ];
-
-       if ( !display ) {
-               display = actualDisplay( nodeName, doc );
-
-               // If the simple way fails, read from inside an iframe
-               if ( display === "none" || !display ) {
-                       // Use the already-created iframe if possible
-                       iframe = ( iframe ||
-                               jQuery("<iframe frameborder='0' width='0' height='0'/>")
-                               .css( "cssText", "display:block !important" )
-                       ).appendTo( doc.documentElement );
-
-                       // Always write a new HTML skeleton so Webkit and Firefox don't choke on reuse
-                       doc = ( iframe[0].contentWindow || iframe[0].contentDocument ).document;
-                       doc.write("<!doctype html><html><body>");
-                       doc.close();
-
-                       display = actualDisplay( nodeName, doc );
-                       iframe.detach();
-               }
-
-               // Store the correct default display
-               elemdisplay[ nodeName ] = display;
-       }
-
-       return display;
-}
-
-// Called ONLY from within css_defaultDisplay
-function actualDisplay( name, doc ) {
-       var elem = jQuery( doc.createElement( name ) ).appendTo( doc.body ),
-               display = jQuery.css( elem[0], "display" );
-       elem.remove();
-       return display;
-}
-
-jQuery.each([ "height", "width" ], function( i, name ) {
-       jQuery.cssHooks[ name ] = {
-               get: function( elem, computed, extra ) {
-                       if ( computed ) {
-                               // certain elements can have dimension info if we invisibly show them
-                               // however, it must have a current display style that would benefit from this
-                               return elem.offsetWidth === 0 && rdisplayswap.test( jQuery.css( elem, "display" ) ) ?
-                                       jQuery.swap( elem, cssShow, function() {
-                                               return getWidthOrHeight( elem, name, extra );
-                                       }) :
-                                       getWidthOrHeight( elem, name, extra );
-                       }
-               },
-
-               set: function( elem, value, extra ) {
-                       var styles = extra && getStyles( elem );
-                       return setPositiveNumber( elem, value, extra ?
-                               augmentWidthOrHeight(
-                                       elem,
-                                       name,
-                                       extra,
-                                       jQuery.support.boxSizing && jQuery.css( elem, "boxSizing", false, styles ) === "border-box",
-                                       styles
-                               ) : 0
-                       );
-               }
-       };
-});
-
-if ( !jQuery.support.opacity ) {
-       jQuery.cssHooks.opacity = {
-               get: function( elem, computed ) {
-                       // IE uses filters for opacity
-                       return ropacity.test( (computed && elem.currentStyle ? elem.currentStyle.filter : elem.style.filter) || "" ) ?
-                               ( 0.01 * parseFloat( RegExp.$1 ) ) + "" :
-                               computed ? "1" : "";
-               },
-
-               set: function( elem, value ) {
-                       var style = elem.style,
-                               currentStyle = elem.currentStyle,
-                               opacity = jQuery.isNumeric( value ) ? "alpha(opacity=" + value * 100 + ")" : "",
-                               filter = currentStyle && currentStyle.filter || style.filter || "";
-
-                       // IE has trouble with opacity if it does not have layout
-                       // Force it by setting the zoom level
-                       style.zoom = 1;
-
-                       // if setting opacity to 1, and no other filters exist - attempt to remove filter attribute #6652
-                       // if value === "", then remove inline opacity #12685
-                       if ( ( value >= 1 || value === "" ) &&
-                                       jQuery.trim( filter.replace( ralpha, "" ) ) === "" &&
-                                       style.removeAttribute ) {
-
-                               // Setting style.filter to null, "" & " " still leave "filter:" in the cssText
-                               // if "filter:" is present at all, clearType is disabled, we want to avoid this
-                               // style.removeAttribute is IE Only, but so apparently is this code path...
-                               style.removeAttribute( "filter" );
-
-                               // if there is no filter style applied in a css rule or unset inline opacity, we are done
-                               if ( value === "" || currentStyle && !currentStyle.filter ) {
-                                       return;
-                               }
-                       }
-
-                       // otherwise, set new filter values
-                       style.filter = ralpha.test( filter ) ?
-                               filter.replace( ralpha, opacity ) :
-                               filter + " " + opacity;
-               }
-       };
-}
-
-// These hooks cannot be added until DOM ready because the support test
-// for it is not run until after DOM ready
-jQuery(function() {
-       if ( !jQuery.support.reliableMarginRight ) {
-               jQuery.cssHooks.marginRight = {
-                       get: function( elem, computed ) {
-                               if ( computed ) {
-                                       // WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right
-                                       // Work around by temporarily setting element display to inline-block
-                                       return jQuery.swap( elem, { "display": "inline-block" },
-                                               curCSS, [ elem, "marginRight" ] );
-                               }
-                       }
-               };
-       }
-
-       // Webkit bug: https://bugs.webkit.org/show_bug.cgi?id=29084
-       // getComputedStyle returns percent when specified for top/left/bottom/right
-       // rather than make the css module depend on the offset module, we just check for it here
-       if ( !jQuery.support.pixelPosition && jQuery.fn.position ) {
-               jQuery.each( [ "top", "left" ], function( i, prop ) {
-                       jQuery.cssHooks[ prop ] = {
-                               get: function( elem, computed ) {
-                                       if ( computed ) {
-                                               computed = curCSS( elem, prop );
-                                               // if curCSS returns percentage, fallback to offset
-                                               return rnumnonpx.test( computed ) ?
-                                                       jQuery( elem ).position()[ prop ] + "px" :
-                                                       computed;
-                                       }
-                               }
-                       };
-               });
-       }
-
-});
-
-if ( jQuery.expr && jQuery.expr.filters ) {
-       jQuery.expr.filters.hidden = function( elem ) {
-               // Support: Opera <= 12.12
-               // Opera reports offsetWidths and offsetHeights less than zero on some elements
-               return elem.offsetWidth <= 0 && elem.offsetHeight <= 0 ||
-                       (!jQuery.support.reliableHiddenOffsets && ((elem.style && elem.style.display) || jQuery.css( elem, "display" )) === "none");
-       };
-
-       jQuery.expr.filters.visible = function( elem ) {
-               return !jQuery.expr.filters.hidden( elem );
-       };
-}
-
-// These hooks are used by animate to expand properties
-jQuery.each({
-       margin: "",
-       padding: "",
-       border: "Width"
-}, function( prefix, suffix ) {
-       jQuery.cssHooks[ prefix + suffix ] = {
-               expand: function( value ) {
-                       var i = 0,
-                               expanded = {},
-
-                               // assumes a single number if not a string
-                               parts = typeof value === "string" ? value.split(" ") : [ value ];
-
-                       for ( ; i < 4; i++ ) {
-                               expanded[ prefix + cssExpand[ i ] + suffix ] =
-                                       parts[ i ] || parts[ i - 2 ] || parts[ 0 ];
-                       }
-
-                       return expanded;
-               }
-       };
-
-       if ( !rmargin.test( prefix ) ) {
-               jQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber;
-       }
-});
-var r20 = /%20/g,
-       rbracket = /\[\]$/,
-       rCRLF = /\r?\n/g,
-       rsubmitterTypes = /^(?:submit|button|image|reset|file)$/i,
-       rsubmittable = /^(?:input|select|textarea|keygen)/i;
-
-jQuery.fn.extend({
-       serialize: function() {
-               return jQuery.param( this.serializeArray() );
-       },
-       serializeArray: function() {
-               return this.map(function(){
-                       // Can add propHook for "elements" to filter or add form elements
-                       var elements = jQuery.prop( this, "elements" );
-                       return elements ? jQuery.makeArray( elements ) : this;
-               })
-               .filter(function(){
-                       var type = this.type;
-                       // Use .is(":disabled") so that fieldset[disabled] works
-                       return this.name && !jQuery( this ).is( ":disabled" ) &&
-                               rsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) &&
-                               ( this.checked || !manipulation_rcheckableType.test( type ) );
-               })
-               .map(function( i, elem ){
-                       var val = jQuery( this ).val();
-
-                       return val == null ?
-                               null :
-                               jQuery.isArray( val ) ?
-                                       jQuery.map( val, function( val ){
-                                               return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) };
-                                       }) :
-                                       { name: elem.name, value: val.replace( rCRLF, "\r\n" ) };
-               }).get();
-       }
-});
-
-//Serialize an array of form elements or a set of
-//key/values into a query string
-jQuery.param = function( a, traditional ) {
-       var prefix,
-               s = [],
-               add = function( key, value ) {
-                       // If value is a function, invoke it and return its value
-                       value = jQuery.isFunction( value ) ? value() : ( value == null ? "" : value );
-                       s[ s.length ] = encodeURIComponent( key ) + "=" + encodeURIComponent( value );
-               };
-
-       // Set traditional to true for jQuery <= 1.3.2 behavior.
-       if ( traditional === undefined ) {
-               traditional = jQuery.ajaxSettings && jQuery.ajaxSettings.traditional;
-       }
-
-       // If an array was passed in, assume that it is an array of form elements.
-       if ( jQuery.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {
-               // Serialize the form elements
-               jQuery.each( a, function() {
-                       add( this.name, this.value );
-               });
-
-       } else {
-               // If traditional, encode the "old" way (the way 1.3.2 or older
-               // did it), otherwise encode params recursively.
-               for ( prefix in a ) {
-                       buildParams( prefix, a[ prefix ], traditional, add );
-               }
-       }
-
-       // Return the resulting serialization
-       return s.join( "&" ).replace( r20, "+" );
-};
-
-function buildParams( prefix, obj, traditional, add ) {
-       var name;
-
-       if ( jQuery.isArray( obj ) ) {
-               // Serialize array item.
-               jQuery.each( obj, function( i, v ) {
-                       if ( traditional || rbracket.test( prefix ) ) {
-                               // Treat each array item as a scalar.
-                               add( prefix, v );
-
-                       } else {
-                               // Item is non-scalar (array or object), encode its numeric index.
-                               buildParams( prefix + "[" + ( typeof v === "object" ? i : "" ) + "]", v, traditional, add );
-                       }
-               });
-
-       } else if ( !traditional && jQuery.type( obj ) === "object" ) {
-               // Serialize object item.
-               for ( name in obj ) {
-                       buildParams( prefix + "[" + name + "]", obj[ name ], traditional, add );
-               }
-
-       } else {
-               // Serialize scalar item.
-               add( prefix, obj );
-       }
-}
-jQuery.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( i, name ) {
-
-       // Handle event binding
-       jQuery.fn[ name ] = function( data, fn ) {
-               return arguments.length > 0 ?
-                       this.on( name, null, data, fn ) :
-                       this.trigger( name );
-       };
-});
-
-jQuery.fn.extend({
-       hover: function( fnOver, fnOut ) {
-               return this.mouseenter( fnOver ).mouseleave( fnOut || fnOver );
-       },
-
-       bind: function( types, data, fn ) {
-               return this.on( types, null, data, fn );
-       },
-       unbind: function( types, fn ) {
-               return this.off( types, null, fn );
-       },
-
-       delegate: function( selector, types, data, fn ) {
-               return this.on( types, selector, data, fn );
-       },
-       undelegate: function( selector, types, fn ) {
-               // ( namespace ) or ( selector, types [, fn] )
-               return arguments.length === 1 ? this.off( selector, "**" ) : this.off( types, selector || "**", fn );
-       }
-});
-var
-       // Document location
-       ajaxLocParts,
-       ajaxLocation,
-       ajax_nonce = jQuery.now(),
-
-       ajax_rquery = /\?/,
-       rhash = /#.*$/,
-       rts = /([?&])_=[^&]*/,
-       rheaders = /^(.*?):[ \t]*([^\r\n]*)\r?$/mg, // IE leaves an \r character at EOL
-       // #7653, #8125, #8152: local protocol detection
-       rlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/,
-       rnoContent = /^(?:GET|HEAD)$/,
-       rprotocol = /^\/\//,
-       rurl = /^([\w.+-]+:)(?:\/\/([^\/?#:]*)(?::(\d+)|)|)/,
-
-       // Keep a copy of the old load method
-       _load = jQuery.fn.load,
-
-       /* Prefilters
-        * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)
-        * 2) These are called:
-        *    - BEFORE asking for a transport
-        *    - AFTER param serialization (s.data is a string if s.processData is true)
-        * 3) key is the dataType
-        * 4) the catchall symbol "*" can be used
-        * 5) execution will start with transport dataType and THEN continue down to "*" if needed
-        */
-       prefilters = {},
-
-       /* Transports bindings
-        * 1) key is the dataType
-        * 2) the catchall symbol "*" can be used
-        * 3) selection will start with transport dataType and THEN go to "*" if needed
-        */
-       transports = {},
-
-       // Avoid comment-prolog char sequence (#10098); must appease lint and evade compression
-       allTypes = "*/".concat("*");
-
-// #8138, IE may throw an exception when accessing
-// a field from window.location if document.domain has been set
-try {
-       ajaxLocation = location.href;
-} catch( e ) {
-       // Use the href attribute of an A element
-       // since IE will modify it given document.location
-       ajaxLocation = document.createElement( "a" );
-       ajaxLocation.href = "";
-       ajaxLocation = ajaxLocation.href;
-}
-
-// Segment location into parts
-ajaxLocParts = rurl.exec( ajaxLocation.toLowerCase() ) || [];
-
-// Base "constructor" for jQuery.ajaxPrefilter and jQuery.ajaxTransport
-function addToPrefiltersOrTransports( structure ) {
-
-       // dataTypeExpression is optional and defaults to "*"
-       return function( dataTypeExpression, func ) {
-
-               if ( typeof dataTypeExpression !== "string" ) {
-                       func = dataTypeExpression;
-                       dataTypeExpression = "*";
-               }
-
-               var dataType,
-                       i = 0,
-                       dataTypes = dataTypeExpression.toLowerCase().match( core_rnotwhite ) || [];
-
-               if ( jQuery.isFunction( func ) ) {
-                       // For each dataType in the dataTypeExpression
-                       while ( (dataType = dataTypes[i++]) ) {
-                               // Prepend if requested
-                               if ( dataType[0] === "+" ) {
-                                       dataType = dataType.slice( 1 ) || "*";
-                                       (structure[ dataType ] = structure[ dataType ] || []).unshift( func );
-
-                               // Otherwise append
-                               } else {
-                                       (structure[ dataType ] = structure[ dataType ] || []).push( func );
-                               }
-                       }
-               }
-       };
-}
-
-// Base inspection function for prefilters and transports
-function inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) {
-
-       var inspected = {},
-               seekingTransport = ( structure === transports );
-
-       function inspect( dataType ) {
-               var selected;
-               inspected[ dataType ] = true;
-               jQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) {
-                       var dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR );
-                       if( typeof dataTypeOrTransport === "string" && !seekingTransport && !inspected[ dataTypeOrTransport ] ) {
-                               options.dataTypes.unshift( dataTypeOrTransport );
-                               inspect( dataTypeOrTransport );
-                               return false;
-                       } else if ( seekingTransport ) {
-                               return !( selected = dataTypeOrTransport );
-                       }
-               });
-               return selected;
-       }
-
-       return inspect( options.dataTypes[ 0 ] ) || !inspected[ "*" ] && inspect( "*" );
-}
-
-// A special extend for ajax options
-// that takes "flat" options (not to be deep extended)
-// Fixes #9887
-function ajaxExtend( target, src ) {
-       var deep, key,
-               flatOptions = jQuery.ajaxSettings.flatOptions || {};
-
-       for ( key in src ) {
-               if ( src[ key ] !== undefined ) {
-                       ( flatOptions[ key ] ? target : ( deep || (deep = {}) ) )[ key ] = src[ key ];
-               }
-       }
-       if ( deep ) {
-               jQuery.extend( true, target, deep );
-       }
-
-       return target;
-}
-
-jQuery.fn.load = function( url, params, callback ) {
-       if ( typeof url !== "string" && _load ) {
-               return _load.apply( this, arguments );
-       }
-
-       var selector, response, type,
-               self = this,
-               off = url.indexOf(" ");
-
-       if ( off >= 0 ) {
-               selector = url.slice( off, url.length );
-               url = url.slice( 0, off );
-       }
-
-       // If it's a function
-       if ( jQuery.isFunction( params ) ) {
-
-               // We assume that it's the callback
-               callback = params;
-               params = undefined;
-
-       // Otherwise, build a param string
-       } else if ( params && typeof params === "object" ) {
-               type = "POST";
-       }
-
-       // If we have elements to modify, make the request
-       if ( self.length > 0 ) {
-               jQuery.ajax({
-                       url: url,
-
-                       // if "type" variable is undefined, then "GET" method will be used
-                       type: type,
-                       dataType: "html",
-                       data: params
-               }).done(function( responseText ) {
-
-                       // Save response for use in complete callback
-                       response = arguments;
-
-                       self.html( selector ?
-
-                               // If a selector was specified, locate the right elements in a dummy div
-                               // Exclude scripts to avoid IE 'Permission Denied' errors
-                               jQuery("<div>").append( jQuery.parseHTML( responseText ) ).find( selector ) :
-
-                               // Otherwise use the full result
-                               responseText );
-
-               }).complete( callback && function( jqXHR, status ) {
-                       self.each( callback, response || [ jqXHR.responseText, status, jqXHR ] );
-               });
-       }
-
-       return this;
-};
-
-// Attach a bunch of functions for handling common AJAX events
-jQuery.each( [ "ajaxStart", "ajaxStop", "ajaxComplete", "ajaxError", "ajaxSuccess", "ajaxSend" ], function( i, type ){
-       jQuery.fn[ type ] = function( fn ){
-               return this.on( type, fn );
-       };
-});
-
-jQuery.extend({
-
-       // Counter for holding the number of active queries
-       active: 0,
-
-       // Last-Modified header cache for next request
-       lastModified: {},
-       etag: {},
-
-       ajaxSettings: {
-               url: ajaxLocation,
-               type: "GET",
-               isLocal: rlocalProtocol.test( ajaxLocParts[ 1 ] ),
-               global: true,
-               processData: true,
-               async: true,
-               contentType: "application/x-www-form-urlencoded; charset=UTF-8",
-               /*
-               timeout: 0,
-               data: null,
-               dataType: null,
-               username: null,
-               password: null,
-               cache: null,
-               throws: false,
-               traditional: false,
-               headers: {},
-               */
-
-               accepts: {
-                       "*": allTypes,
-                       text: "text/plain",
-                       html: "text/html",
-                       xml: "application/xml, text/xml",
-                       json: "application/json, text/javascript"
-               },
-
-               contents: {
-                       xml: /xml/,
-                       html: /html/,
-                       json: /json/
-               },
-
-               responseFields: {
-                       xml: "responseXML",
-                       text: "responseText",
-                       json: "responseJSON"
-               },
-
-               // Data converters
-               // Keys separate source (or catchall "*") and destination types with a single space
-               converters: {
-
-                       // Convert anything to text
-                       "* text": String,
-
-                       // Text to html (true = no transformation)
-                       "text html": true,
-
-                       // Evaluate text as a json expression
-                       "text json": jQuery.parseJSON,
-
-                       // Parse text as xml
-                       "text xml": jQuery.parseXML
-               },
-
-               // For options that shouldn't be deep extended:
-               // you can add your own custom options here if
-               // and when you create one that shouldn't be
-               // deep extended (see ajaxExtend)
-               flatOptions: {
-                       url: true,
-                       context: true
-               }
-       },
-
-       // Creates a full fledged settings object into target
-       // with both ajaxSettings and settings fields.
-       // If target is omitted, writes into ajaxSettings.
-       ajaxSetup: function( target, settings ) {
-               return settings ?
-
-                       // Building a settings object
-                       ajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) :
-
-                       // Extending ajaxSettings
-                       ajaxExtend( jQuery.ajaxSettings, target );
-       },
-
-       ajaxPrefilter: addToPrefiltersOrTransports( prefilters ),
-       ajaxTransport: addToPrefiltersOrTransports( transports ),
-
-       // Main method
-       ajax: function( url, options ) {
-
-               // If url is an object, simulate pre-1.5 signature
-               if ( typeof url === "object" ) {
-                       options = url;
-                       url = undefined;
-               }
-
-               // Force options to be an object
-               options = options || {};
-
-               var // Cross-domain detection vars
-                       parts,
-                       // Loop variable
-                       i,
-                       // URL without anti-cache param
-                       cacheURL,
-                       // Response headers as string
-                       responseHeadersString,
-                       // timeout handle
-                       timeoutTimer,
-
-                       // To know if global events are to be dispatched
-                       fireGlobals,
-
-                       transport,
-                       // Response headers
-                       responseHeaders,
-                       // Create the final options object
-                       s = jQuery.ajaxSetup( {}, options ),
-                       // Callbacks context
-                       callbackContext = s.context || s,
-                       // Context for global events is callbackContext if it is a DOM node or jQuery collection
-                       globalEventContext = s.context && ( callbackContext.nodeType || callbackContext.jquery ) ?
-                               jQuery( callbackContext ) :
-                               jQuery.event,
-                       // Deferreds
-                       deferred = jQuery.Deferred(),
-                       completeDeferred = jQuery.Callbacks("once memory"),
-                       // Status-dependent callbacks
-                       statusCode = s.statusCode || {},
-                       // Headers (they are sent all at once)
-                       requestHeaders = {},
-                       requestHeadersNames = {},
-                       // The jqXHR state
-                       state = 0,
-                       // Default abort message
-                       strAbort = "canceled",
-                       // Fake xhr
-                       jqXHR = {
-                               readyState: 0,
-
-                               // Builds headers hashtable if needed
-                               getResponseHeader: function( key ) {
-                                       var match;
-                                       if ( state === 2 ) {
-                                               if ( !responseHeaders ) {
-                                                       responseHeaders = {};
-                                                       while ( (match = rheaders.exec( responseHeadersString )) ) {
-                                                               responseHeaders[ match[1].toLowerCase() ] = match[ 2 ];
-                                                       }
-                                               }
-                                               match = responseHeaders[ key.toLowerCase() ];
-                                       }
-                                       return match == null ? null : match;
-                               },
-
-                               // Raw string
-                               getAllResponseHeaders: function() {
-                                       return state === 2 ? responseHeadersString : null;
-                               },
-
-                               // Caches the header
-                               setRequestHeader: function( name, value ) {
-                                       var lname = name.toLowerCase();
-                                       if ( !state ) {
-                                               name = requestHeadersNames[ lname ] = requestHeadersNames[ lname ] || name;
-                                               requestHeaders[ name ] = value;
-                                       }
-                                       return this;
-                               },
-
-                               // Overrides response content-type header
-                               overrideMimeType: function( type ) {
-                                       if ( !state ) {
-                                               s.mimeType = type;
-                                       }
-                                       return this;
-                               },
-
-                               // Status-dependent callbacks
-                               statusCode: function( map ) {
-                                       var code;
-                                       if ( map ) {
-                                               if ( state < 2 ) {
-                                                       for ( code in map ) {
-                                                               // Lazy-add the new callback in a way that preserves old ones
-                                                               statusCode[ code ] = [ statusCode[ code ], map[ code ] ];
-                                                       }
-                                               } else {
-                                                       // Execute the appropriate callbacks
-                                                       jqXHR.always( map[ jqXHR.status ] );
-                                               }
-                                       }
-                                       return this;
-                               },
-
-                               // Cancel the request
-                               abort: function( statusText ) {
-                                       var finalText = statusText || strAbort;
-                                       if ( transport ) {
-                                               transport.abort( finalText );
-                                       }
-                                       done( 0, finalText );
-                                       return this;
-                               }
-                       };
-
-               // Attach deferreds
-               deferred.promise( jqXHR ).complete = completeDeferred.add;
-               jqXHR.success = jqXHR.done;
-               jqXHR.error = jqXHR.fail;
-
-               // Remove hash character (#7531: and string promotion)
-               // Add protocol if not provided (#5866: IE7 issue with protocol-less urls)
-               // Handle falsy url in the settings object (#10093: consistency with old signature)
-               // We also use the url parameter if available
-               s.url = ( ( url || s.url || ajaxLocation ) + "" ).replace( rhash, "" ).replace( rprotocol, ajaxLocParts[ 1 ] + "//" );
-
-               // Alias method option to type as per ticket #12004
-               s.type = options.method || options.type || s.method || s.type;
-
-               // Extract dataTypes list
-               s.dataTypes = jQuery.trim( s.dataType || "*" ).toLowerCase().match( core_rnotwhite ) || [""];
-
-               // A cross-domain request is in order when we have a protocol:host:port mismatch
-               if ( s.crossDomain == null ) {
-                       parts = rurl.exec( s.url.toLowerCase() );
-                       s.crossDomain = !!( parts &&
-                               ( parts[ 1 ] !== ajaxLocParts[ 1 ] || parts[ 2 ] !== ajaxLocParts[ 2 ] ||
-                                       ( parts[ 3 ] || ( parts[ 1 ] === "http:" ? "80" : "443" ) ) !==
-                                               ( ajaxLocParts[ 3 ] || ( ajaxLocParts[ 1 ] === "http:" ? "80" : "443" ) ) )
-                       );
-               }
-
-               // Convert data if not already a string
-               if ( s.data && s.processData && typeof s.data !== "string" ) {
-                       s.data = jQuery.param( s.data, s.traditional );
-               }
-
-               // Apply prefilters
-               inspectPrefiltersOrTransports( prefilters, s, options, jqXHR );
-
-               // If request was aborted inside a prefilter, stop there
-               if ( state === 2 ) {
-                       return jqXHR;
-               }
-
-               // We can fire global events as of now if asked to
-               fireGlobals = s.global;
-
-               // Watch for a new set of requests
-               if ( fireGlobals && jQuery.active++ === 0 ) {
-                       jQuery.event.trigger("ajaxStart");
-               }
-
-               // Uppercase the type
-               s.type = s.type.toUpperCase();
-
-               // Determine if request has content
-               s.hasContent = !rnoContent.test( s.type );
-
-               // Save the URL in case we're toying with the If-Modified-Since
-               // and/or If-None-Match header later on
-               cacheURL = s.url;
-
-               // More options handling for requests with no content
-               if ( !s.hasContent ) {
-
-                       // If data is available, append data to url
-                       if ( s.data ) {
-                               cacheURL = ( s.url += ( ajax_rquery.test( cacheURL ) ? "&" : "?" ) + s.data );
-                               // #9682: remove data so that it's not used in an eventual retry
-                               delete s.data;
-                       }
-
-                       // Add anti-cache in url if needed
-                       if ( s.cache === false ) {
-                               s.url = rts.test( cacheURL ) ?
-
-                                       // If there is already a '_' parameter, set its value
-                                       cacheURL.replace( rts, "$1_=" + ajax_nonce++ ) :
-
-                                       // Otherwise add one to the end
-                                       cacheURL + ( ajax_rquery.test( cacheURL ) ? "&" : "?" ) + "_=" + ajax_nonce++;
-                       }
-               }
-
-               // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.
-               if ( s.ifModified ) {
-                       if ( jQuery.lastModified[ cacheURL ] ) {
-                               jqXHR.setRequestHeader( "If-Modified-Since", jQuery.lastModified[ cacheURL ] );
-                       }
-                       if ( jQuery.etag[ cacheURL ] ) {
-                               jqXHR.setRequestHeader( "If-None-Match", jQuery.etag[ cacheURL ] );
-                       }
-               }
-
-               // Set the correct header, if data is being sent
-               if ( s.data && s.hasContent && s.contentType !== false || options.contentType ) {
-                       jqXHR.setRequestHeader( "Content-Type", s.contentType );
-               }
-
-               // Set the Accepts header for the server, depending on the dataType
-               jqXHR.setRequestHeader(
-                       "Accept",
-                       s.dataTypes[ 0 ] && s.accepts[ s.dataTypes[0] ] ?
-                               s.accepts[ s.dataTypes[0] ] + ( s.dataTypes[ 0 ] !== "*" ? ", " + allTypes + "; q=0.01" : "" ) :
-                               s.accepts[ "*" ]
-               );
-
-               // Check for headers option
-               for ( i in s.headers ) {
-                       jqXHR.setRequestHeader( i, s.headers[ i ] );
-               }
-
-               // Allow custom headers/mimetypes and early abort
-               if ( s.beforeSend && ( s.beforeSend.call( callbackContext, jqXHR, s ) === false || state === 2 ) ) {
-                       // Abort if not done already and return
-                       return jqXHR.abort();
-               }
-
-               // aborting is no longer a cancellation
-               strAbort = "abort";
-
-               // Install callbacks on deferreds
-               for ( i in { success: 1, error: 1, complete: 1 } ) {
-                       jqXHR[ i ]( s[ i ] );
-               }
-
-               // Get transport
-               transport = inspectPrefiltersOrTransports( transports, s, options, jqXHR );
-
-               // If no transport, we auto-abort
-               if ( !transport ) {
-                       done( -1, "No Transport" );
-               } else {
-                       jqXHR.readyState = 1;
-
-                       // Send global event
-                       if ( fireGlobals ) {
-                               globalEventContext.trigger( "ajaxSend", [ jqXHR, s ] );
-                       }
-                       // Timeout
-                       if ( s.async && s.timeout > 0 ) {
-                               timeoutTimer = setTimeout(function() {
-                                       jqXHR.abort("timeout");
-                               }, s.timeout );
-                       }
-
-                       try {
-                               state = 1;
-                               transport.send( requestHeaders, done );
-                       } catch ( e ) {
-                               // Propagate exception as error if not done
-                               if ( state < 2 ) {
-                                       done( -1, e );
-                               // Simply rethrow otherwise
-                               } else {
-                                       throw e;
-                               }
-                       }
-               }
-
-               // Callback for when everything is done
-               function done( status, nativeStatusText, responses, headers ) {
-                       var isSuccess, success, error, response, modified,
-                               statusText = nativeStatusText;
-
-                       // Called once
-                       if ( state === 2 ) {
-                               return;
-                       }
-
-                       // State is "done" now
-                       state = 2;
-
-                       // Clear timeout if it exists
-                       if ( timeoutTimer ) {
-                               clearTimeout( timeoutTimer );
-                       }
-
-                       // Dereference transport for early garbage collection
-                       // (no matter how long the jqXHR object will be used)
-                       transport = undefined;
-
-                       // Cache response headers
-                       responseHeadersString = headers || "";
-
-                       // Set readyState
-                       jqXHR.readyState = status > 0 ? 4 : 0;
-
-                       // Determine if successful
-                       isSuccess = status >= 200 && status < 300 || status === 304;
-
-                       // Get response data
-                       if ( responses ) {
-                               response = ajaxHandleResponses( s, jqXHR, responses );
-                       }
-
-                       // Convert no matter what (that way responseXXX fields are always set)
-                       response = ajaxConvert( s, response, jqXHR, isSuccess );
-
-                       // If successful, handle type chaining
-                       if ( isSuccess ) {
-
-                               // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.
-                               if ( s.ifModified ) {
-                                       modified = jqXHR.getResponseHeader("Last-Modified");
-                                       if ( modified ) {
-                                               jQuery.lastModified[ cacheURL ] = modified;
-                                       }
-                                       modified = jqXHR.getResponseHeader("etag");
-                                       if ( modified ) {
-                                               jQuery.etag[ cacheURL ] = modified;
-                                       }
-                               }
-
-                               // if no content
-                               if ( status === 204 || s.type === "HEAD" ) {
-                                       statusText = "nocontent";
-
-                               // if not modified
-                               } else if ( status === 304 ) {
-                                       statusText = "notmodified";
-
-                               // If we have data, let's convert it
-                               } else {
-                                       statusText = response.state;
-                                       success = response.data;
-                                       error = response.error;
-                                       isSuccess = !error;
-                               }
-                       } else {
-                               // We extract error from statusText
-                               // then normalize statusText and status for non-aborts
-                               error = statusText;
-                               if ( status || !statusText ) {
-                                       statusText = "error";
-                                       if ( status < 0 ) {
-                                               status = 0;
-                                       }
-                               }
-                       }
-
-                       // Set data for the fake xhr object
-                       jqXHR.status = status;
-                       jqXHR.statusText = ( nativeStatusText || statusText ) + "";
-
-                       // Success/Error
-                       if ( isSuccess ) {
-                               deferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] );
-                       } else {
-                               deferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] );
-                       }
-
-                       // Status-dependent callbacks
-                       jqXHR.statusCode( statusCode );
-                       statusCode = undefined;
-
-                       if ( fireGlobals ) {
-                               globalEventContext.trigger( isSuccess ? "ajaxSuccess" : "ajaxError",
-                                       [ jqXHR, s, isSuccess ? success : error ] );
-                       }
-
-                       // Complete
-                       completeDeferred.fireWith( callbackContext, [ jqXHR, statusText ] );
-
-                       if ( fireGlobals ) {
-                               globalEventContext.trigger( "ajaxComplete", [ jqXHR, s ] );
-                               // Handle the global AJAX counter
-                               if ( !( --jQuery.active ) ) {
-                                       jQuery.event.trigger("ajaxStop");
-                               }
-                       }
-               }
-
-               return jqXHR;
-       },
-
-       getJSON: function( url, data, callback ) {
-               return jQuery.get( url, data, callback, "json" );
-       },
-
-       getScript: function( url, callback ) {
-               return jQuery.get( url, undefined, callback, "script" );
-       }
-});
-
-jQuery.each( [ "get", "post" ], function( i, method ) {
-       jQuery[ method ] = function( url, data, callback, type ) {
-               // shift arguments if data argument was omitted
-               if ( jQuery.isFunction( data ) ) {
-                       type = type || callback;
-                       callback = data;
-                       data = undefined;
-               }
-
-               return jQuery.ajax({
-                       url: url,
-                       type: method,
-                       dataType: type,
-                       data: data,
-                       success: callback
-               });
-       };
-});
-
-/* Handles responses to an ajax request:
- * - finds the right dataType (mediates between content-type and expected dataType)
- * - returns the corresponding response
- */
-function ajaxHandleResponses( s, jqXHR, responses ) {
-       var firstDataType, ct, finalDataType, type,
-               contents = s.contents,
-               dataTypes = s.dataTypes;
-
-       // Remove auto dataType and get content-type in the process
-       while( dataTypes[ 0 ] === "*" ) {
-               dataTypes.shift();
-               if ( ct === undefined ) {
-                       ct = s.mimeType || jqXHR.getResponseHeader("Content-Type");
-               }
-       }
-
-       // Check if we're dealing with a known content-type
-       if ( ct ) {
-               for ( type in contents ) {
-                       if ( contents[ type ] && contents[ type ].test( ct ) ) {
-                               dataTypes.unshift( type );
-                               break;
-                       }
-               }
-       }
-
-       // Check to see if we have a response for the expected dataType
-       if ( dataTypes[ 0 ] in responses ) {
-               finalDataType = dataTypes[ 0 ];
-       } else {
-               // Try convertible dataTypes
-               for ( type in responses ) {
-                       if ( !dataTypes[ 0 ] || s.converters[ type + " " + dataTypes[0] ] ) {
-                               finalDataType = type;
-                               break;
-                       }
-                       if ( !firstDataType ) {
-                               firstDataType = type;
-                       }
-               }
-               // Or just use first one
-               finalDataType = finalDataType || firstDataType;
-       }
-
-       // If we found a dataType
-       // We add the dataType to the list if needed
-       // and return the corresponding response
-       if ( finalDataType ) {
-               if ( finalDataType !== dataTypes[ 0 ] ) {
-                       dataTypes.unshift( finalDataType );
-               }
-               return responses[ finalDataType ];
-       }
-}
-
-/* Chain conversions given the request and the original response
- * Also sets the responseXXX fields on the jqXHR instance
- */
-function ajaxConvert( s, response, jqXHR, isSuccess ) {
-       var conv2, current, conv, tmp, prev,
-               converters = {},
-               // Work with a copy of dataTypes in case we need to modify it for conversion
-               dataTypes = s.dataTypes.slice();
-
-       // Create converters map with lowercased keys
-       if ( dataTypes[ 1 ] ) {
-               for ( conv in s.converters ) {
-                       converters[ conv.toLowerCase() ] = s.converters[ conv ];
-               }
-       }
-
-       current = dataTypes.shift();
-
-       // Convert to each sequential dataType
-       while ( current ) {
-
-               if ( s.responseFields[ current ] ) {
-                       jqXHR[ s.responseFields[ current ] ] = response;
-               }
-
-               // Apply the dataFilter if provided
-               if ( !prev && isSuccess && s.dataFilter ) {
-                       response = s.dataFilter( response, s.dataType );
-               }
-
-               prev = current;
-               current = dataTypes.shift();
-
-               if ( current ) {
-
-                       // There's only work to do if current dataType is non-auto
-                       if ( current === "*" ) {
-
-                               current = prev;
-
-                       // Convert response if prev dataType is non-auto and differs from current
-                       } else if ( prev !== "*" && prev !== current ) {
-
-                               // Seek a direct converter
-                               conv = converters[ prev + " " + current ] || converters[ "* " + current ];
-
-                               // If none found, seek a pair
-                               if ( !conv ) {
-                                       for ( conv2 in converters ) {
-
-                                               // If conv2 outputs current
-                                               tmp = conv2.split( " " );
-                                               if ( tmp[ 1 ] === current ) {
-
-                                                       // If prev can be converted to accepted input
-                                                       conv = converters[ prev + " " + tmp[ 0 ] ] ||
-                                                               converters[ "* " + tmp[ 0 ] ];
-                                                       if ( conv ) {
-                                                               // Condense equivalence converters
-                                                               if ( conv === true ) {
-                                                                       conv = converters[ conv2 ];
-
-                                                               // Otherwise, insert the intermediate dataType
-                                                               } else if ( converters[ conv2 ] !== true ) {
-                                                                       current = tmp[ 0 ];
-                                                                       dataTypes.unshift( tmp[ 1 ] );
-                                                               }
-                                                               break;
-                                                       }
-                                               }
-                                       }
-                               }
-
-                               // Apply converter (if not an equivalence)
-                               if ( conv !== true ) {
-
-                                       // Unless errors are allowed to bubble, catch and return them
-                                       if ( conv && s[ "throws" ] ) {
-                                               response = conv( response );
-                                       } else {
-                                               try {
-                                                       response = conv( response );
-                                               } catch ( e ) {
-                                                       return { state: "parsererror", error: conv ? e : "No conversion from " + prev + " to " + current };
-                                               }
-                                       }
-                               }
-                       }
-               }
-       }
-
-       return { state: "success", data: response };
-}
-// Install script dataType
-jQuery.ajaxSetup({
-       accepts: {
-               script: "text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"
-       },
-       contents: {
-               script: /(?:java|ecma)script/
-       },
-       converters: {
-               "text script": function( text ) {
-                       jQuery.globalEval( text );
-                       return text;
-               }
-       }
-});
-
-// Handle cache's special case and global
-jQuery.ajaxPrefilter( "script", function( s ) {
-       if ( s.cache === undefined ) {
-               s.cache = false;
-       }
-       if ( s.crossDomain ) {
-               s.type = "GET";
-               s.global = false;
-       }
-});
-
-// Bind script tag hack transport
-jQuery.ajaxTransport( "script", function(s) {
-
-       // This transport only deals with cross domain requests
-       if ( s.crossDomain ) {
-
-               var script,
-                       head = document.head || jQuery("head")[0] || document.documentElement;
-
-               return {
-
-                       send: function( _, callback ) {
-
-                               script = document.createElement("script");
-
-                               script.async = true;
-
-                               if ( s.scriptCharset ) {
-                                       script.charset = s.scriptCharset;
-                               }
-
-                               script.src = s.url;
-
-                               // Attach handlers for all browsers
-                               script.onload = script.onreadystatechange = function( _, isAbort ) {
-
-                                       if ( isAbort || !script.readyState || /loaded|complete/.test( script.readyState ) ) {
-
-                                               // Handle memory leak in IE
-                                               script.onload = script.onreadystatechange = null;
-
-                                               // Remove the script
-                                               if ( script.parentNode ) {
-                                                       script.parentNode.removeChild( script );
-                                               }
-
-                                               // Dereference the script
-                                               script = null;
-
-                                               // Callback if not abort
-                                               if ( !isAbort ) {
-                                                       callback( 200, "success" );
-                                               }
-                                       }
-                               };
-
-                               // Circumvent IE6 bugs with base elements (#2709 and #4378) by prepending
-                               // Use native DOM manipulation to avoid our domManip AJAX trickery
-                               head.insertBefore( script, head.firstChild );
-                       },
-
-                       abort: function() {
-                               if ( script ) {
-                                       script.onload( undefined, true );
-                               }
-                       }
-               };
-       }
-});
-var oldCallbacks = [],
-       rjsonp = /(=)\?(?=&|$)|\?\?/;
-
-// Default jsonp settings
-jQuery.ajaxSetup({
-       jsonp: "callback",
-       jsonpCallback: function() {
-               var callback = oldCallbacks.pop() || ( jQuery.expando + "_" + ( ajax_nonce++ ) );
-               this[ callback ] = true;
-               return callback;
-       }
-});
-
-// Detect, normalize options and install callbacks for jsonp requests
-jQuery.ajaxPrefilter( "json jsonp", function( s, originalSettings, jqXHR ) {
-
-       var callbackName, overwritten, responseContainer,
-               jsonProp = s.jsonp !== false && ( rjsonp.test( s.url ) ?
-                       "url" :
-                       typeof s.data === "string" && !( s.contentType || "" ).indexOf("application/x-www-form-urlencoded") && rjsonp.test( s.data ) && "data"
-               );
-
-       // Handle iff the expected data type is "jsonp" or we have a parameter to set
-       if ( jsonProp || s.dataTypes[ 0 ] === "jsonp" ) {
-
-               // Get callback name, remembering preexisting value associated with it
-               callbackName = s.jsonpCallback = jQuery.isFunction( s.jsonpCallback ) ?
-                       s.jsonpCallback() :
-                       s.jsonpCallback;
-
-               // Insert callback into url or form data
-               if ( jsonProp ) {
-                       s[ jsonProp ] = s[ jsonProp ].replace( rjsonp, "$1" + callbackName );
-               } else if ( s.jsonp !== false ) {
-                       s.url += ( ajax_rquery.test( s.url ) ? "&" : "?" ) + s.jsonp + "=" + callbackName;
-               }
-
-               // Use data converter to retrieve json after script execution
-               s.converters["script json"] = function() {
-                       if ( !responseContainer ) {
-                               jQuery.error( callbackName + " was not called" );
-                       }
-                       return responseContainer[ 0 ];
-               };
-
-               // force json dataType
-               s.dataTypes[ 0 ] = "json";
-
-               // Install callback
-               overwritten = window[ callbackName ];
-               window[ callbackName ] = function() {
-                       responseContainer = arguments;
-               };
-
-               // Clean-up function (fires after converters)
-               jqXHR.always(function() {
-                       // Restore preexisting value
-                       window[ callbackName ] = overwritten;
-
-                       // Save back as free
-                       if ( s[ callbackName ] ) {
-                               // make sure that re-using the options doesn't screw things around
-                               s.jsonpCallback = originalSettings.jsonpCallback;
-
-                               // save the callback name for future use
-                               oldCallbacks.push( callbackName );
-                       }
-
-                       // Call if it was a function and we have a response
-                       if ( responseContainer && jQuery.isFunction( overwritten ) ) {
-                               overwritten( responseContainer[ 0 ] );
-                       }
-
-                       responseContainer = overwritten = undefined;
-               });
-
-               // Delegate to script
-               return "script";
-       }
-});
-var xhrCallbacks, xhrSupported,
-       xhrId = 0,
-       // #5280: Internet Explorer will keep connections alive if we don't abort on unload
-       xhrOnUnloadAbort = window.ActiveXObject && function() {
-               // Abort all pending requests
-               var key;
-               for ( key in xhrCallbacks ) {
-                       xhrCallbacks[ key ]( undefined, true );
-               }
-       };
-
-// Functions to create xhrs
-function createStandardXHR() {
-       try {
-               return new window.XMLHttpRequest();
-       } catch( e ) {}
-}
-
-function createActiveXHR() {
-       try {
-               return new window.ActiveXObject("Microsoft.XMLHTTP");
-       } catch( e ) {}
-}
-
-// Create the request object
-// (This is still attached to ajaxSettings for backward compatibility)
-jQuery.ajaxSettings.xhr = window.ActiveXObject ?
-       /* Microsoft failed to properly
-        * implement the XMLHttpRequest in IE7 (can't request local files),
-        * so we use the ActiveXObject when it is available
-        * Additionally XMLHttpRequest can be disabled in IE7/IE8 so
-        * we need a fallback.
-        */
-       function() {
-               return !this.isLocal && createStandardXHR() || createActiveXHR();
-       } :
-       // For all other browsers, use the standard XMLHttpRequest object
-       createStandardXHR;
-
-// Determine support properties
-xhrSupported = jQuery.ajaxSettings.xhr();
-jQuery.support.cors = !!xhrSupported && ( "withCredentials" in xhrSupported );
-xhrSupported = jQuery.support.ajax = !!xhrSupported;
-
-// Create transport if the browser can provide an xhr
-if ( xhrSupported ) {
-
-       jQuery.ajaxTransport(function( s ) {
-               // Cross domain only allowed if supported through XMLHttpRequest
-               if ( !s.crossDomain || jQuery.support.cors ) {
-
-                       var callback;
-
-                       return {
-                               send: function( headers, complete ) {
-
-                                       // Get a new xhr
-                                       var handle, i,
-                                               xhr = s.xhr();
-
-                                       // Open the socket
-                                       // Passing null username, generates a login popup on Opera (#2865)
-                                       if ( s.username ) {
-                                               xhr.open( s.type, s.url, s.async, s.username, s.password );
-                                       } else {
-                                               xhr.open( s.type, s.url, s.async );
-                                       }
-
-                                       // Apply custom fields if provided
-                                       if ( s.xhrFields ) {
-                                               for ( i in s.xhrFields ) {
-                                                       xhr[ i ] = s.xhrFields[ i ];
-                                               }
-                                       }
-
-                                       // Override mime type if needed
-                                       if ( s.mimeType && xhr.overrideMimeType ) {
-                                               xhr.overrideMimeType( s.mimeType );
-                                       }
-
-                                       // X-Requested-With header
-                                       // For cross-domain requests, seeing as conditions for a preflight are
-                                       // akin to a jigsaw puzzle, we simply never set it to be sure.
-                                       // (it can always be set on a per-request basis or even using ajaxSetup)
-                                       // For same-domain requests, won't change header if already provided.
-                                       if ( !s.crossDomain && !headers["X-Requested-With"] ) {
-                                               headers["X-Requested-With"] = "XMLHttpRequest";
-                                       }
-
-                                       // Need an extra try/catch for cross domain requests in Firefox 3
-                                       try {
-                                               for ( i in headers ) {
-                                                       xhr.setRequestHeader( i, headers[ i ] );
-                                               }
-                                       } catch( err ) {}
-
-                                       // Do send the request
-                                       // This may raise an exception which is actually
-                                       // handled in jQuery.ajax (so no try/catch here)
-                                       xhr.send( ( s.hasContent && s.data ) || null );
-
-                                       // Listener
-                                       callback = function( _, isAbort ) {
-                                               var status, responseHeaders, statusText, responses;
-
-                                               // Firefox throws exceptions when accessing properties
-                                               // of an xhr when a network error occurred
-                                               // http://helpful.knobs-dials.com/index.php/Component_returned_failure_code:_0x80040111_(NS_ERROR_NOT_AVAILABLE)
-                                               try {
-
-                                                       // Was never called and is aborted or complete
-                                                       if ( callback && ( isAbort || xhr.readyState === 4 ) ) {
-
-                                                               // Only called once
-                                                               callback = undefined;
-
-                                                               // Do not keep as active anymore
-                                                               if ( handle ) {
-                                                                       xhr.onreadystatechange = jQuery.noop;
-                                                                       if ( xhrOnUnloadAbort ) {
-                                                                               delete xhrCallbacks[ handle ];
-                                                                       }
-                                                               }
-
-                                                               // If it's an abort
-                                                               if ( isAbort ) {
-                                                                       // Abort it manually if needed
-                                                                       if ( xhr.readyState !== 4 ) {
-                                                                               xhr.abort();
-                                                                       }
-                                                               } else {
-                                                                       responses = {};
-                                                                       status = xhr.status;
-                                                                       responseHeaders = xhr.getAllResponseHeaders();
-
-                                                                       // When requesting binary data, IE6-9 will throw an exception
-                                                                       // on any attempt to access responseText (#11426)
-                                                                       if ( typeof xhr.responseText === "string" ) {
-                                                                               responses.text = xhr.responseText;
-                                                                       }
-
-                                                                       // Firefox throws an exception when accessing
-                                                                       // statusText for faulty cross-domain requests
-                                                                       try {
-                                                                               statusText = xhr.statusText;
-                                                                       } catch( e ) {
-                                                                               // We normalize with Webkit giving an empty statusText
-                                                                               statusText = "";
-                                                                       }
-
-                                                                       // Filter status for non standard behaviors
-
-                                                                       // If the request is local and we have data: assume a success
-                                                                       // (success with no data won't get notified, that's the best we
-                                                                       // can do given current implementations)
-                                                                       if ( !status && s.isLocal && !s.crossDomain ) {
-                                                                               status = responses.text ? 200 : 404;
-                                                                       // IE - #1450: sometimes returns 1223 when it should be 204
-                                                                       } else if ( status === 1223 ) {
-                                                                               status = 204;
-                                                                       }
-                                                               }
-                                                       }
-                                               } catch( firefoxAccessException ) {
-                                                       if ( !isAbort ) {
-                                                               complete( -1, firefoxAccessException );
-                                                       }
-                                               }
-
-                                               // Call complete if needed
-                                               if ( responses ) {
-                                                       complete( status, statusText, responses, responseHeaders );
-                                               }
-                                       };
-
-                                       if ( !s.async ) {
-                                               // if we're in sync mode we fire the callback
-                                               callback();
-                                       } else if ( xhr.readyState === 4 ) {
-                                               // (IE6 & IE7) if it's in cache and has been
-                                               // retrieved directly we need to fire the callback
-                                               setTimeout( callback );
-                                       } else {
-                                               handle = ++xhrId;
-                                               if ( xhrOnUnloadAbort ) {
-                                                       // Create the active xhrs callbacks list if needed
-                                                       // and attach the unload handler
-                                                       if ( !xhrCallbacks ) {
-                                                               xhrCallbacks = {};
-                                                               jQuery( window ).unload( xhrOnUnloadAbort );
-                                                       }
-                                                       // Add to list of active xhrs callbacks
-                                                       xhrCallbacks[ handle ] = callback;
-                                               }
-                                               xhr.onreadystatechange = callback;
-                                       }
-                               },
-
-                               abort: function() {
-                                       if ( callback ) {
-                                               callback( undefined, true );
-                                       }
-                               }
-                       };
-               }
-       });
-}
-var fxNow, timerId,
-       rfxtypes = /^(?:toggle|show|hide)$/,
-       rfxnum = new RegExp( "^(?:([+-])=|)(" + core_pnum + ")([a-z%]*)$", "i" ),
-       rrun = /queueHooks$/,
-       animationPrefilters = [ defaultPrefilter ],
-       tweeners = {
-               "*": [function( prop, value ) {
-                       var tween = this.createTween( prop, value ),
-                               target = tween.cur(),
-                               parts = rfxnum.exec( value ),
-                               unit = parts && parts[ 3 ] || ( jQuery.cssNumber[ prop ] ? "" : "px" ),
-
-                               // Starting value computation is required for potential unit mismatches
-                               start = ( jQuery.cssNumber[ prop ] || unit !== "px" && +target ) &&
-                                       rfxnum.exec( jQuery.css( tween.elem, prop ) ),
-                               scale = 1,
-                               maxIterations = 20;
-
-                       if ( start && start[ 3 ] !== unit ) {
-                               // Trust units reported by jQuery.css
-                               unit = unit || start[ 3 ];
-
-                               // Make sure we update the tween properties later on
-                               parts = parts || [];
-
-                               // Iteratively approximate from a nonzero starting point
-                               start = +target || 1;
-
-                               do {
-                                       // If previous iteration zeroed out, double until we get *something*
-                                       // Use a string for doubling factor so we don't accidentally see scale as unchanged below
-                                       scale = scale || ".5";
-
-                                       // Adjust and apply
-                                       start = start / scale;
-                                       jQuery.style( tween.elem, prop, start + unit );
-
-                               // Update scale, tolerating zero or NaN from tween.cur()
-                               // And breaking the loop if scale is unchanged or perfect, or if we've just had enough
-                               } while ( scale !== (scale = tween.cur() / target) && scale !== 1 && --maxIterations );
-                       }
-
-                       // Update tween properties
-                       if ( parts ) {
-                               start = tween.start = +start || +target || 0;
-                               tween.unit = unit;
-                               // If a +=/-= token was provided, we're doing a relative animation
-                               tween.end = parts[ 1 ] ?
-                                       start + ( parts[ 1 ] + 1 ) * parts[ 2 ] :
-                                       +parts[ 2 ];
-                       }
-
-                       return tween;
-               }]
-       };
-
-// Animations created synchronously will run synchronously
-function createFxNow() {
-       setTimeout(function() {
-               fxNow = undefined;
-       });
-       return ( fxNow = jQuery.now() );
-}
-
-function createTween( value, prop, animation ) {
-       var tween,
-               collection = ( tweeners[ prop ] || [] ).concat( tweeners[ "*" ] ),
-               index = 0,
-               length = collection.length;
-       for ( ; index < length; index++ ) {
-               if ( (tween = collection[ index ].call( animation, prop, value )) ) {
-
-                       // we're done with this property
-                       return tween;
-               }
-       }
-}
-
-function Animation( elem, properties, options ) {
-       var result,
-               stopped,
-               index = 0,
-               length = animationPrefilters.length,
-               deferred = jQuery.Deferred().always( function() {
-                       // don't match elem in the :animated selector
-                       delete tick.elem;
-               }),
-               tick = function() {
-                       if ( stopped ) {
-                               return false;
-                       }
-                       var currentTime = fxNow || createFxNow(),
-                               remaining = Math.max( 0, animation.startTime + animation.duration - currentTime ),
-                               // archaic crash bug won't allow us to use 1 - ( 0.5 || 0 ) (#12497)
-                               temp = remaining / animation.duration || 0,
-                               percent = 1 - temp,
-                               index = 0,
-                               length = animation.tweens.length;
-
-                       for ( ; index < length ; index++ ) {
-                               animation.tweens[ index ].run( percent );
-                       }
-
-                       deferred.notifyWith( elem, [ animation, percent, remaining ]);
-
-                       if ( percent < 1 && length ) {
-                               return remaining;
-                       } else {
-                               deferred.resolveWith( elem, [ animation ] );
-                               return false;
-                       }
-               },
-               animation = deferred.promise({
-                       elem: elem,
-                       props: jQuery.extend( {}, properties ),
-                       opts: jQuery.extend( true, { specialEasing: {} }, options ),
-                       originalProperties: properties,
-                       originalOptions: options,
-                       startTime: fxNow || createFxNow(),
-                       duration: options.duration,
-                       tweens: [],
-                       createTween: function( prop, end ) {
-                               var tween = jQuery.Tween( elem, animation.opts, prop, end,
-                                               animation.opts.specialEasing[ prop ] || animation.opts.easing );
-                               animation.tweens.push( tween );
-                               return tween;
-                       },
-                       stop: function( gotoEnd ) {
-                               var index = 0,
-                                       // if we are going to the end, we want to run all the tweens
-                                       // otherwise we skip this part
-                                       length = gotoEnd ? animation.tweens.length : 0;
-                               if ( stopped ) {
-                                       return this;
-                               }
-                               stopped = true;
-                               for ( ; index < length ; index++ ) {
-                                       animation.tweens[ index ].run( 1 );
-                               }
-
-                               // resolve when we played the last frame
-                               // otherwise, reject
-                               if ( gotoEnd ) {
-                                       deferred.resolveWith( elem, [ animation, gotoEnd ] );
-                               } else {
-                                       deferred.rejectWith( elem, [ animation, gotoEnd ] );
-                               }
-                               return this;
-                       }
-               }),
-               props = animation.props;
-
-       propFilter( props, animation.opts.specialEasing );
-
-       for ( ; index < length ; index++ ) {
-               result = animationPrefilters[ index ].call( animation, elem, props, animation.opts );
-               if ( result ) {
-                       return result;
-               }
-       }
-
-       jQuery.map( props, createTween, animation );
-
-       if ( jQuery.isFunction( animation.opts.start ) ) {
-               animation.opts.start.call( elem, animation );
-       }
-
-       jQuery.fx.timer(
-               jQuery.extend( tick, {
-                       elem: elem,
-                       anim: animation,
-                       queue: animation.opts.queue
-               })
-       );
-
-       // attach callbacks from options
-       return animation.progress( animation.opts.progress )
-               .done( animation.opts.done, animation.opts.complete )
-               .fail( animation.opts.fail )
-               .always( animation.opts.always );
-}
-
-function propFilter( props, specialEasing ) {
-       var index, name, easing, value, hooks;
-
-       // camelCase, specialEasing and expand cssHook pass
-       for ( index in props ) {
-               name = jQuery.camelCase( index );
-               easing = specialEasing[ name ];
-               value = props[ index ];
-               if ( jQuery.isArray( value ) ) {
-                       easing = value[ 1 ];
-                       value = props[ index ] = value[ 0 ];
-               }
-
-               if ( index !== name ) {
-                       props[ name ] = value;
-                       delete props[ index ];
-               }
-
-               hooks = jQuery.cssHooks[ name ];
-               if ( hooks && "expand" in hooks ) {
-                       value = hooks.expand( value );
-                       delete props[ name ];
-
-                       // not quite $.extend, this wont overwrite keys already present.
-                       // also - reusing 'index' from above because we have the correct "name"
-                       for ( index in value ) {
-                               if ( !( index in props ) ) {
-                                       props[ index ] = value[ index ];
-                                       specialEasing[ index ] = easing;
-                               }
-                       }
-               } else {
-                       specialEasing[ name ] = easing;
-               }
-       }
-}
-
-jQuery.Animation = jQuery.extend( Animation, {
-
-       tweener: function( props, callback ) {
-               if ( jQuery.isFunction( props ) ) {
-                       callback = props;
-                       props = [ "*" ];
-               } else {
-                       props = props.split(" ");
-               }
-
-               var prop,
-                       index = 0,
-                       length = props.length;
-
-               for ( ; index < length ; index++ ) {
-                       prop = props[ index ];
-                       tweeners[ prop ] = tweeners[ prop ] || [];
-                       tweeners[ prop ].unshift( callback );
-               }
-       },
-
-       prefilter: function( callback, prepend ) {
-               if ( prepend ) {
-                       animationPrefilters.unshift( callback );
-               } else {
-                       animationPrefilters.push( callback );
-               }
-       }
-});
-
-function defaultPrefilter( elem, props, opts ) {
-       /* jshint validthis: true */
-       var prop, value, toggle, tween, hooks, oldfire,
-               anim = this,
-               orig = {},
-               style = elem.style,
-               hidden = elem.nodeType && isHidden( elem ),
-               dataShow = jQuery._data( elem, "fxshow" );
-
-       // handle queue: false promises
-       if ( !opts.queue ) {
-               hooks = jQuery._queueHooks( elem, "fx" );
-               if ( hooks.unqueued == null ) {
-                       hooks.unqueued = 0;
-                       oldfire = hooks.empty.fire;
-                       hooks.empty.fire = function() {
-                               if ( !hooks.unqueued ) {
-                                       oldfire();
-                               }
-                       };
-               }
-               hooks.unqueued++;
-
-               anim.always(function() {
-                       // doing this makes sure that the complete handler will be called
-                       // before this completes
-                       anim.always(function() {
-                               hooks.unqueued--;
-                               if ( !jQuery.queue( elem, "fx" ).length ) {
-                                       hooks.empty.fire();
-                               }
-                       });
-               });
-       }
-
-       // height/width overflow pass
-       if ( elem.nodeType === 1 && ( "height" in props || "width" in props ) ) {
-               // Make sure that nothing sneaks out
-               // Record all 3 overflow attributes because IE does not
-               // change the overflow attribute when overflowX and
-               // overflowY are set to the same value
-               opts.overflow = [ style.overflow, style.overflowX, style.overflowY ];
-
-               // Set display property to inline-block for height/width
-               // animations on inline elements that are having width/height animated
-               if ( jQuery.css( elem, "display" ) === "inline" &&
-                               jQuery.css( elem, "float" ) === "none" ) {
-
-                       // inline-level elements accept inline-block;
-                       // block-level elements need to be inline with layout
-                       if ( !jQuery.support.inlineBlockNeedsLayout || css_defaultDisplay( elem.nodeName ) === "inline" ) {
-                               style.display = "inline-block";
-
-                       } else {
-                               style.zoom = 1;
-                       }
-               }
-       }
-
-       if ( opts.overflow ) {
-               style.overflow = "hidden";
-               if ( !jQuery.support.shrinkWrapBlocks ) {
-                       anim.always(function() {
-                               style.overflow = opts.overflow[ 0 ];
-                               style.overflowX = opts.overflow[ 1 ];
-                               style.overflowY = opts.overflow[ 2 ];
-                       });
-               }
-       }
-
-
-       // show/hide pass
-       for ( prop in props ) {
-               value = props[ prop ];
-               if ( rfxtypes.exec( value ) ) {
-                       delete props[ prop ];
-                       toggle = toggle || value === "toggle";
-                       if ( value === ( hidden ? "hide" : "show" ) ) {
-                               continue;
-                       }
-                       orig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop );
-               }
-       }
-
-       if ( !jQuery.isEmptyObject( orig ) ) {
-               if ( dataShow ) {
-                       if ( "hidden" in dataShow ) {
-                               hidden = dataShow.hidden;
-                       }
-               } else {
-                       dataShow = jQuery._data( elem, "fxshow", {} );
-               }
-
-               // store state if its toggle - enables .stop().toggle() to "reverse"
-               if ( toggle ) {
-                       dataShow.hidden = !hidden;
-               }
-               if ( hidden ) {
-                       jQuery( elem ).show();
-               } else {
-                       anim.done(function() {
-                               jQuery( elem ).hide();
-                       });
-               }
-               anim.done(function() {
-                       var prop;
-                       jQuery._removeData( elem, "fxshow" );
-                       for ( prop in orig ) {
-                               jQuery.style( elem, prop, orig[ prop ] );
-                       }
-               });
-               for ( prop in orig ) {
-                       tween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim );
-
-                       if ( !( prop in dataShow ) ) {
-                               dataShow[ prop ] = tween.start;
-                               if ( hidden ) {
-                                       tween.end = tween.start;
-                                       tween.start = prop === "width" || prop === "height" ? 1 : 0;
-                               }
-                       }
-               }
-       }
-}
-
-function Tween( elem, options, prop, end, easing ) {
-       return new Tween.prototype.init( elem, options, prop, end, easing );
-}
-jQuery.Tween = Tween;
-
-Tween.prototype = {
-       constructor: Tween,
-       init: function( elem, options, prop, end, easing, unit ) {
-               this.elem = elem;
-               this.prop = prop;
-               this.easing = easing || "swing";
-               this.options = options;
-               this.start = this.now = this.cur();
-               this.end = end;
-               this.unit = unit || ( jQuery.cssNumber[ prop ] ? "" : "px" );
-       },
-       cur: function() {
-               var hooks = Tween.propHooks[ this.prop ];
-
-               return hooks && hooks.get ?
-                       hooks.get( this ) :
-                       Tween.propHooks._default.get( this );
-       },
-       run: function( percent ) {
-               var eased,
-                       hooks = Tween.propHooks[ this.prop ];
-
-               if ( this.options.duration ) {
-                       this.pos = eased = jQuery.easing[ this.easing ](
-                               percent, this.options.duration * percent, 0, 1, this.options.duration
-                       );
-               } else {
-                       this.pos = eased = percent;
-               }
-               this.now = ( this.end - this.start ) * eased + this.start;
-
-               if ( this.options.step ) {
-                       this.options.step.call( this.elem, this.now, this );
-               }
-
-               if ( hooks && hooks.set ) {
-                       hooks.set( this );
-               } else {
-                       Tween.propHooks._default.set( this );
-               }
-               return this;
-       }
-};
-
-Tween.prototype.init.prototype = Tween.prototype;
-
-Tween.propHooks = {
-       _default: {
-               get: function( tween ) {
-                       var result;
-
-                       if ( tween.elem[ tween.prop ] != null &&
-                               (!tween.elem.style || tween.elem.style[ tween.prop ] == null) ) {
-                               return tween.elem[ tween.prop ];
-                       }
-
-                       // passing an empty string as a 3rd parameter to .css will automatically
-                       // attempt a parseFloat and fallback to a string if the parse fails
-                       // so, simple values such as "10px" are parsed to Float.
-                       // complex values such as "rotate(1rad)" are returned as is.
-                       result = jQuery.css( tween.elem, tween.prop, "" );
-                       // Empty strings, null, undefined and "auto" are converted to 0.
-                       return !result || result === "auto" ? 0 : result;
-               },
-               set: function( tween ) {
-                       // use step hook for back compat - use cssHook if its there - use .style if its
-                       // available and use plain properties where available
-                       if ( jQuery.fx.step[ tween.prop ] ) {
-                               jQuery.fx.step[ tween.prop ]( tween );
-                       } else if ( tween.elem.style && ( tween.elem.style[ jQuery.cssProps[ tween.prop ] ] != null || jQuery.cssHooks[ tween.prop ] ) ) {
-                               jQuery.style( tween.elem, tween.prop, tween.now + tween.unit );
-                       } else {
-                               tween.elem[ tween.prop ] = tween.now;
-                       }
-               }
-       }
-};
-
-// Support: IE <=9
-// Panic based approach to setting things on disconnected nodes
-
-Tween.propHooks.scrollTop = Tween.propHooks.scrollLeft = {
-       set: function( tween ) {
-               if ( tween.elem.nodeType && tween.elem.parentNode ) {
-                       tween.elem[ tween.prop ] = tween.now;
-               }
-       }
-};
-
-jQuery.each([ "toggle", "show", "hide" ], function( i, name ) {
-       var cssFn = jQuery.fn[ name ];
-       jQuery.fn[ name ] = function( speed, easing, callback ) {
-               return speed == null || typeof speed === "boolean" ?
-                       cssFn.apply( this, arguments ) :
-                       this.animate( genFx( name, true ), speed, easing, callback );
-       };
-});
-
-jQuery.fn.extend({
-       fadeTo: function( speed, to, easing, callback ) {
-
-               // show any hidden elements after setting opacity to 0
-               return this.filter( isHidden ).css( "opacity", 0 ).show()
-
-                       // animate to the value specified
-                       .end().animate({ opacity: to }, speed, easing, callback );
-       },
-       animate: function( prop, speed, easing, callback ) {
-               var empty = jQuery.isEmptyObject( prop ),
-                       optall = jQuery.speed( speed, easing, callback ),
-                       doAnimation = function() {
-                               // Operate on a copy of prop so per-property easing won't be lost
-                               var anim = Animation( this, jQuery.extend( {}, prop ), optall );
-
-                               // Empty animations, or finishing resolves immediately
-                               if ( empty || jQuery._data( this, "finish" ) ) {
-                                       anim.stop( true );
-                               }
-                       };
-                       doAnimation.finish = doAnimation;
-
-               return empty || optall.queue === false ?
-                       this.each( doAnimation ) :
-                       this.queue( optall.queue, doAnimation );
-       },
-       stop: function( type, clearQueue, gotoEnd ) {
-               var stopQueue = function( hooks ) {
-                       var stop = hooks.stop;
-                       delete hooks.stop;
-                       stop( gotoEnd );
-               };
-
-               if ( typeof type !== "string" ) {
-                       gotoEnd = clearQueue;
-                       clearQueue = type;
-                       type = undefined;
-               }
-               if ( clearQueue && type !== false ) {
-                       this.queue( type || "fx", [] );
-               }
-
-               return this.each(function() {
-                       var dequeue = true,
-                               index = type != null && type + "queueHooks",
-                               timers = jQuery.timers,
-                               data = jQuery._data( this );
-
-                       if ( index ) {
-                               if ( data[ index ] && data[ index ].stop ) {
-                                       stopQueue( data[ index ] );
-                               }
-                       } else {
-                               for ( index in data ) {
-                                       if ( data[ index ] && data[ index ].stop && rrun.test( index ) ) {
-                                               stopQueue( data[ index ] );
-                                       }
-                               }
-                       }
-
-                       for ( index = timers.length; index--; ) {
-                               if ( timers[ index ].elem === this && (type == null || timers[ index ].queue === type) ) {
-                                       timers[ index ].anim.stop( gotoEnd );
-                                       dequeue = false;
-                                       timers.splice( index, 1 );
-                               }
-                       }
-
-                       // start the next in the queue if the last step wasn't forced
-                       // timers currently will call their complete callbacks, which will dequeue
-                       // but only if they were gotoEnd
-                       if ( dequeue || !gotoEnd ) {
-                               jQuery.dequeue( this, type );
-                       }
-               });
-       },
-       finish: function( type ) {
-               if ( type !== false ) {
-                       type = type || "fx";
-               }
-               return this.each(function() {
-                       var index,
-                               data = jQuery._data( this ),
-                               queue = data[ type + "queue" ],
-                               hooks = data[ type + "queueHooks" ],
-                               timers = jQuery.timers,
-                               length = queue ? queue.length : 0;
-
-                       // enable finishing flag on private data
-                       data.finish = true;
-
-                       // empty the queue first
-                       jQuery.queue( this, type, [] );
-
-                       if ( hooks && hooks.stop ) {
-                               hooks.stop.call( this, true );
-                       }
-
-                       // look for any active animations, and finish them
-                       for ( index = timers.length; index--; ) {
-                               if ( timers[ index ].elem === this && timers[ index ].queue === type ) {
-                                       timers[ index ].anim.stop( true );
-                                       timers.splice( index, 1 );
-                               }
-                       }
-
-                       // look for any animations in the old queue and finish them
-                       for ( index = 0; index < length; index++ ) {
-                               if ( queue[ index ] && queue[ index ].finish ) {
-                                       queue[ index ].finish.call( this );
-                               }
-                       }
-
-                       // turn off finishing flag
-                       delete data.finish;
-               });
-       }
-});
-
-// Generate parameters to create a standard animation
-function genFx( type, includeWidth ) {
-       var which,
-               attrs = { height: type },
-               i = 0;
-
-       // if we include width, step value is 1 to do all cssExpand values,
-       // if we don't include width, step value is 2 to skip over Left and Right
-       includeWidth = includeWidth? 1 : 0;
-       for( ; i < 4 ; i += 2 - includeWidth ) {
-               which = cssExpand[ i ];
-               attrs[ "margin" + which ] = attrs[ "padding" + which ] = type;
-       }
-
-       if ( includeWidth ) {
-               attrs.opacity = attrs.width = type;
-       }
-
-       return attrs;
-}
-
-// Generate shortcuts for custom animations
-jQuery.each({
-       slideDown: genFx("show"),
-       slideUp: genFx("hide"),
-       slideToggle: genFx("toggle"),
-       fadeIn: { opacity: "show" },
-       fadeOut: { opacity: "hide" },
-       fadeToggle: { opacity: "toggle" }
-}, function( name, props ) {
-       jQuery.fn[ name ] = function( speed, easing, callback ) {
-               return this.animate( props, speed, easing, callback );
-       };
-});
-
-jQuery.speed = function( speed, easing, fn ) {
-       var opt = speed && typeof speed === "object" ? jQuery.extend( {}, speed ) : {
-               complete: fn || !fn && easing ||
-                       jQuery.isFunction( speed ) && speed,
-               duration: speed,
-               easing: fn && easing || easing && !jQuery.isFunction( easing ) && easing
-       };
-
-       opt.duration = jQuery.fx.off ? 0 : typeof opt.duration === "number" ? opt.duration :
-               opt.duration in jQuery.fx.speeds ? jQuery.fx.speeds[ opt.duration ] : jQuery.fx.speeds._default;
-
-       // normalize opt.queue - true/undefined/null -> "fx"
-       if ( opt.queue == null || opt.queue === true ) {
-               opt.queue = "fx";
-       }
-
-       // Queueing
-       opt.old = opt.complete;
-
-       opt.complete = function() {
-               if ( jQuery.isFunction( opt.old ) ) {
-                       opt.old.call( this );
-               }
-
-               if ( opt.queue ) {
-                       jQuery.dequeue( this, opt.queue );
-               }
-       };
-
-       return opt;
-};
-
-jQuery.easing = {
-       linear: function( p ) {
-               return p;
-       },
-       swing: function( p ) {
-               return 0.5 - Math.cos( p*Math.PI ) / 2;
-       }
-};
-
-jQuery.timers = [];
-jQuery.fx = Tween.prototype.init;
-jQuery.fx.tick = function() {
-       var timer,
-               timers = jQuery.timers,
-               i = 0;
-
-       fxNow = jQuery.now();
-
-       for ( ; i < timers.length; i++ ) {
-               timer = timers[ i ];
-               // Checks the timer has not already been removed
-               if ( !timer() && timers[ i ] === timer ) {
-                       timers.splice( i--, 1 );
-               }
-       }
-
-       if ( !timers.length ) {
-               jQuery.fx.stop();
-       }
-       fxNow = undefined;
-};
-
-jQuery.fx.timer = function( timer ) {
-       if ( timer() && jQuery.timers.push( timer ) ) {
-               jQuery.fx.start();
-       }
-};
-
-jQuery.fx.interval = 13;
-
-jQuery.fx.start = function() {
-       if ( !timerId ) {
-               timerId = setInterval( jQuery.fx.tick, jQuery.fx.interval );
-       }
-};
-
-jQuery.fx.stop = function() {
-       clearInterval( timerId );
-       timerId = null;
-};
-
-jQuery.fx.speeds = {
-       slow: 600,
-       fast: 200,
-       // Default speed
-       _default: 400
-};
-
-// Back Compat <1.8 extension point
-jQuery.fx.step = {};
-
-if ( jQuery.expr && jQuery.expr.filters ) {
-       jQuery.expr.filters.animated = function( elem ) {
-               return jQuery.grep(jQuery.timers, function( fn ) {
-                       return elem === fn.elem;
-               }).length;
-       };
-}
-jQuery.fn.offset = function( options ) {
-       if ( arguments.length ) {
-               return options === undefined ?
-                       this :
-                       this.each(function( i ) {
-                               jQuery.offset.setOffset( this, options, i );
-                       });
-       }
-
-       var docElem, win,
-               box = { top: 0, left: 0 },
-               elem = this[ 0 ],
-               doc = elem && elem.ownerDocument;
-
-       if ( !doc ) {
-               return;
-       }
-
-       docElem = doc.documentElement;
-
-       // Make sure it's not a disconnected DOM node
-       if ( !jQuery.contains( docElem, elem ) ) {
-               return box;
-       }
-
-       // If we don't have gBCR, just use 0,0 rather than error
-       // BlackBerry 5, iOS 3 (original iPhone)
-       if ( typeof elem.getBoundingClientRect !== core_strundefined ) {
-               box = elem.getBoundingClientRect();
-       }
-       win = getWindow( doc );
-       return {
-               top: box.top  + ( win.pageYOffset || docElem.scrollTop )  - ( docElem.clientTop  || 0 ),
-               left: box.left + ( win.pageXOffset || docElem.scrollLeft ) - ( docElem.clientLeft || 0 )
-       };
-};
-
-jQuery.offset = {
-
-       setOffset: function( elem, options, i ) {
-               var position = jQuery.css( elem, "position" );
-
-               // set position first, in-case top/left are set even on static elem
-               if ( position === "static" ) {
-                       elem.style.position = "relative";
-               }
-
-               var curElem = jQuery( elem ),
-                       curOffset = curElem.offset(),
-                       curCSSTop = jQuery.css( elem, "top" ),
-                       curCSSLeft = jQuery.css( elem, "left" ),
-                       calculatePosition = ( position === "absolute" || position === "fixed" ) && jQuery.inArray("auto", [curCSSTop, curCSSLeft]) > -1,
-                       props = {}, curPosition = {}, curTop, curLeft;
-
-               // need to be able to calculate position if either top or left is auto and position is either absolute or fixed
-               if ( calculatePosition ) {
-                       curPosition = curElem.position();
-                       curTop = curPosition.top;
-                       curLeft = curPosition.left;
-               } else {
-                       curTop = parseFloat( curCSSTop ) || 0;
-                       curLeft = parseFloat( curCSSLeft ) || 0;
-               }
-
-               if ( jQuery.isFunction( options ) ) {
-                       options = options.call( elem, i, curOffset );
-               }
-
-               if ( options.top != null ) {
-                       props.top = ( options.top - curOffset.top ) + curTop;
-               }
-               if ( options.left != null ) {
-                       props.left = ( options.left - curOffset.left ) + curLeft;
-               }
-
-               if ( "using" in options ) {
-                       options.using.call( elem, props );
-               } else {
-                       curElem.css( props );
-               }
-       }
-};
-
-
-jQuery.fn.extend({
-
-       position: function() {
-               if ( !this[ 0 ] ) {
-                       return;
-               }
-
-               var offsetParent, offset,
-                       parentOffset = { top: 0, left: 0 },
-                       elem = this[ 0 ];
-
-               // fixed elements are offset from window (parentOffset = {top:0, left: 0}, because it is it's only offset parent
-               if ( jQuery.css( elem, "position" ) === "fixed" ) {
-                       // we assume that getBoundingClientRect is available when computed position is fixed
-                       offset = elem.getBoundingClientRect();
-               } else {
-                       // Get *real* offsetParent
-                       offsetParent = this.offsetParent();
-
-                       // Get correct offsets
-                       offset = this.offset();
-                       if ( !jQuery.nodeName( offsetParent[ 0 ], "html" ) ) {
-                               parentOffset = offsetParent.offset();
-                       }
-
-                       // Add offsetParent borders
-                       parentOffset.top  += jQuery.css( offsetParent[ 0 ], "borderTopWidth", true );
-                       parentOffset.left += jQuery.css( offsetParent[ 0 ], "borderLeftWidth", true );
-               }
-
-               // Subtract parent offsets and element margins
-               // note: when an element has margin: auto the offsetLeft and marginLeft
-               // are the same in Safari causing offset.left to incorrectly be 0
-               return {
-                       top:  offset.top  - parentOffset.top - jQuery.css( elem, "marginTop", true ),
-                       left: offset.left - parentOffset.left - jQuery.css( elem, "marginLeft", true)
-               };
-       },
-
-       offsetParent: function() {
-               return this.map(function() {
-                       var offsetParent = this.offsetParent || docElem;
-                       while ( offsetParent && ( !jQuery.nodeName( offsetParent, "html" ) && jQuery.css( offsetParent, "position") === "static" ) ) {
-                               offsetParent = offsetParent.offsetParent;
-                       }
-                       return offsetParent || docElem;
-               });
-       }
-});
-
-
-// Create scrollLeft and scrollTop methods
-jQuery.each( {scrollLeft: "pageXOffset", scrollTop: "pageYOffset"}, function( method, prop ) {
-       var top = /Y/.test( prop );
-
-       jQuery.fn[ method ] = function( val ) {
-               return jQuery.access( this, function( elem, method, val ) {
-                       var win = getWindow( elem );
-
-                       if ( val === undefined ) {
-                               return win ? (prop in win) ? win[ prop ] :
-                                       win.document.documentElement[ method ] :
-                                       elem[ method ];
-                       }
-
-                       if ( win ) {
-                               win.scrollTo(
-                                       !top ? val : jQuery( win ).scrollLeft(),
-                                       top ? val : jQuery( win ).scrollTop()
-                               );
-
-                       } else {
-                               elem[ method ] = val;
-                       }
-               }, method, val, arguments.length, null );
-       };
-});
-
-function getWindow( elem ) {
-       return jQuery.isWindow( elem ) ?
-               elem :
-               elem.nodeType === 9 ?
-                       elem.defaultView || elem.parentWindow :
-                       false;
-}
-// Create innerHeight, innerWidth, height, width, outerHeight and outerWidth methods
-jQuery.each( { Height: "height", Width: "width" }, function( name, type ) {
-       jQuery.each( { padding: "inner" + name, content: type, "": "outer" + name }, function( defaultExtra, funcName ) {
-               // margin is only for outerHeight, outerWidth
-               jQuery.fn[ funcName ] = function( margin, value ) {
-                       var chainable = arguments.length && ( defaultExtra || typeof margin !== "boolean" ),
-                               extra = defaultExtra || ( margin === true || value === true ? "margin" : "border" );
-
-                       return jQuery.access( this, function( elem, type, value ) {
-                               var doc;
-
-                               if ( jQuery.isWindow( elem ) ) {
-                                       // As of 5/8/2012 this will yield incorrect results for Mobile Safari, but there
-                                       // isn't a whole lot we can do. See pull request at this URL for discussion:
-                                       // https://github.com/jquery/jquery/pull/764
-                                       return elem.document.documentElement[ "client" + name ];
-                               }
-
-                               // Get document width or height
-                               if ( elem.nodeType === 9 ) {
-                                       doc = elem.documentElement;
-
-                                       // Either scroll[Width/Height] or offset[Width/Height] or client[Width/Height], whichever is greatest
-                                       // unfortunately, this causes bug #3838 in IE6/8 only, but there is currently no good, small way to fix it.
-                                       return Math.max(
-                                               elem.body[ "scroll" + name ], doc[ "scroll" + name ],
-                                               elem.body[ "offset" + name ], doc[ "offset" + name ],
-                                               doc[ "client" + name ]
-                                       );
-                               }
-
-                               return value === undefined ?
-                                       // Get width or height on the element, requesting but not forcing parseFloat
-                                       jQuery.css( elem, type, extra ) :
-
-                                       // Set width or height on the element
-                                       jQuery.style( elem, type, value, extra );
-                       }, type, chainable ? margin : undefined, chainable, null );
-               };
-       });
-});
-// Limit scope pollution from any deprecated API
-// (function() {
-
-// The number of elements contained in the matched element set
-jQuery.fn.size = function() {
-       return this.length;
-};
-
-jQuery.fn.andSelf = jQuery.fn.addBack;
-
-// })();
-if ( typeof module === "object" && module && typeof module.exports === "object" ) {
-       // Expose jQuery as module.exports in loaders that implement the Node
-       // module pattern (including browserify). Do not create the global, since
-       // the user will be storing it themselves locally, and globals are frowned
-       // upon in the Node module world.
-       module.exports = jQuery;
-} else {
-       // Otherwise expose jQuery to the global object as usual
-       window.jQuery = window.$ = jQuery;
-
-       // Register as a named AMD module, since jQuery can be concatenated with other
-       // files that may use define, but not via a proper concatenation script that
-       // understands anonymous AMD modules. A named AMD is safest and most robust
-       // way to register. Lowercase jquery is used because AMD module names are
-       // derived from file names, and jQuery is normally delivered in a lowercase
-       // file name. Do this after creating the global so that if an AMD module wants
-       // to call noConflict to hide this version of jQuery, it will work.
-       if ( typeof define === "function" && define.amd ) {
-               define( "jquery", [], function () { return jQuery; } );
-       }
-}
-
-})( window );
diff --git a/src/main/resources/META-INF/resources/designer/lib/jquery-ui-1.11.3.custom/images/ui-bg_flat_0_aaaaaa_40x100.png b/src/main/resources/META-INF/resources/designer/lib/jquery-ui-1.11.3.custom/images/ui-bg_flat_0_aaaaaa_40x100.png
deleted file mode 100644 (file)
index b527b5a..0000000
Binary files a/src/main/resources/META-INF/resources/designer/lib/jquery-ui-1.11.3.custom/images/ui-bg_flat_0_aaaaaa_40x100.png and /dev/null differ
diff --git a/src/main/resources/META-INF/resources/designer/lib/jquery-ui-1.11.3.custom/images/ui-bg_flat_75_ffffff_40x100.png b/src/main/resources/META-INF/resources/designer/lib/jquery-ui-1.11.3.custom/images/ui-bg_flat_75_ffffff_40x100.png
deleted file mode 100644 (file)
index 1b7f2e4..0000000
Binary files a/src/main/resources/META-INF/resources/designer/lib/jquery-ui-1.11.3.custom/images/ui-bg_flat_75_ffffff_40x100.png and /dev/null differ
diff --git a/src/main/resources/META-INF/resources/designer/lib/jquery-ui-1.11.3.custom/images/ui-bg_glass_55_fbf9ee_1x400.png b/src/main/resources/META-INF/resources/designer/lib/jquery-ui-1.11.3.custom/images/ui-bg_glass_55_fbf9ee_1x400.png
deleted file mode 100644 (file)
index 55faf25..0000000
Binary files a/src/main/resources/META-INF/resources/designer/lib/jquery-ui-1.11.3.custom/images/ui-bg_glass_55_fbf9ee_1x400.png and /dev/null differ
diff --git a/src/main/resources/META-INF/resources/designer/lib/jquery-ui-1.11.3.custom/images/ui-bg_glass_65_ffffff_1x400.png b/src/main/resources/META-INF/resources/designer/lib/jquery-ui-1.11.3.custom/images/ui-bg_glass_65_ffffff_1x400.png
deleted file mode 100644 (file)
index a97b928..0000000
Binary files a/src/main/resources/META-INF/resources/designer/lib/jquery-ui-1.11.3.custom/images/ui-bg_glass_65_ffffff_1x400.png and /dev/null differ
diff --git a/src/main/resources/META-INF/resources/designer/lib/jquery-ui-1.11.3.custom/images/ui-bg_glass_75_dadada_1x400.png b/src/main/resources/META-INF/resources/designer/lib/jquery-ui-1.11.3.custom/images/ui-bg_glass_75_dadada_1x400.png
deleted file mode 100644 (file)
index 7ef631c..0000000
Binary files a/src/main/resources/META-INF/resources/designer/lib/jquery-ui-1.11.3.custom/images/ui-bg_glass_75_dadada_1x400.png and /dev/null differ
diff --git a/src/main/resources/META-INF/resources/designer/lib/jquery-ui-1.11.3.custom/images/ui-bg_glass_75_e6e6e6_1x400.png b/src/main/resources/META-INF/resources/designer/lib/jquery-ui-1.11.3.custom/images/ui-bg_glass_75_e6e6e6_1x400.png
deleted file mode 100644 (file)
index 5aa4a22..0000000
Binary files a/src/main/resources/META-INF/resources/designer/lib/jquery-ui-1.11.3.custom/images/ui-bg_glass_75_e6e6e6_1x400.png and /dev/null differ
diff --git a/src/main/resources/META-INF/resources/designer/lib/jquery-ui-1.11.3.custom/images/ui-bg_glass_95_fef1ec_1x400.png b/src/main/resources/META-INF/resources/designer/lib/jquery-ui-1.11.3.custom/images/ui-bg_glass_95_fef1ec_1x400.png
deleted file mode 100644 (file)
index 920e13b..0000000
Binary files a/src/main/resources/META-INF/resources/designer/lib/jquery-ui-1.11.3.custom/images/ui-bg_glass_95_fef1ec_1x400.png and /dev/null differ
diff --git a/src/main/resources/META-INF/resources/designer/lib/jquery-ui-1.11.3.custom/images/ui-bg_highlight-soft_75_cccccc_1x100.png b/src/main/resources/META-INF/resources/designer/lib/jquery-ui-1.11.3.custom/images/ui-bg_highlight-soft_75_cccccc_1x100.png
deleted file mode 100644 (file)
index 4496537..0000000
Binary files a/src/main/resources/META-INF/resources/designer/lib/jquery-ui-1.11.3.custom/images/ui-bg_highlight-soft_75_cccccc_1x100.png and /dev/null differ
diff --git a/src/main/resources/META-INF/resources/designer/lib/jquery-ui-1.11.3.custom/images/ui-icons_222222_256x240.png b/src/main/resources/META-INF/resources/designer/lib/jquery-ui-1.11.3.custom/images/ui-icons_222222_256x240.png
deleted file mode 100644 (file)
index 24de795..0000000
Binary files a/src/main/resources/META-INF/resources/designer/lib/jquery-ui-1.11.3.custom/images/ui-icons_222222_256x240.png and /dev/null differ
diff --git a/src/main/resources/META-INF/resources/designer/lib/jquery-ui-1.11.3.custom/images/ui-icons_2e83ff_256x240.png b/src/main/resources/META-INF/resources/designer/lib/jquery-ui-1.11.3.custom/images/ui-icons_2e83ff_256x240.png
deleted file mode 100644 (file)
index a2980c8..0000000
Binary files a/src/main/resources/META-INF/resources/designer/lib/jquery-ui-1.11.3.custom/images/ui-icons_2e83ff_256x240.png and /dev/null differ
diff --git a/src/main/resources/META-INF/resources/designer/lib/jquery-ui-1.11.3.custom/images/ui-icons_454545_256x240.png b/src/main/resources/META-INF/resources/designer/lib/jquery-ui-1.11.3.custom/images/ui-icons_454545_256x240.png
deleted file mode 100644 (file)
index e7687a3..0000000
Binary files a/src/main/resources/META-INF/resources/designer/lib/jquery-ui-1.11.3.custom/images/ui-icons_454545_256x240.png and /dev/null differ
diff --git a/src/main/resources/META-INF/resources/designer/lib/jquery-ui-1.11.3.custom/images/ui-icons_888888_256x240.png b/src/main/resources/META-INF/resources/designer/lib/jquery-ui-1.11.3.custom/images/ui-icons_888888_256x240.png
deleted file mode 100644 (file)
index a85f2c4..0000000
Binary files a/src/main/resources/META-INF/resources/designer/lib/jquery-ui-1.11.3.custom/images/ui-icons_888888_256x240.png and /dev/null differ
diff --git a/src/main/resources/META-INF/resources/designer/lib/jquery-ui-1.11.3.custom/images/ui-icons_cd0a0a_256x240.png b/src/main/resources/META-INF/resources/designer/lib/jquery-ui-1.11.3.custom/images/ui-icons_cd0a0a_256x240.png
deleted file mode 100644 (file)
index 7af13a6..0000000
Binary files a/src/main/resources/META-INF/resources/designer/lib/jquery-ui-1.11.3.custom/images/ui-icons_cd0a0a_256x240.png and /dev/null differ
diff --git a/src/main/resources/META-INF/resources/designer/lib/jquery-ui-1.11.3.custom/index.html b/src/main/resources/META-INF/resources/designer/lib/jquery-ui-1.11.3.custom/index.html
deleted file mode 100644 (file)
index b878272..0000000
+++ /dev/null
@@ -1,513 +0,0 @@
-<!doctype html>
-<html lang="us">
-<head>
-       <meta charset="utf-8">
-       <title>jQuery UI Example Page</title>
-       <link href="jquery-ui.css" rel="stylesheet">
-       <style>
-       body{
-               font: 62.5% "Trebuchet MS", sans-serif;
-               margin: 50px;
-       }
-       .demoHeaders {
-               margin-top: 2em;
-       }
-       #dialog-link {
-               padding: .4em 1em .4em 20px;
-               text-decoration: none;
-               position: relative;
-       }
-       #dialog-link span.ui-icon {
-               margin: 0 5px 0 0;
-               position: absolute;
-               left: .2em;
-               top: 50%;
-               margin-top: -8px;
-       }
-       #icons {
-               margin: 0;
-               padding: 0;
-       }
-       #icons li {
-               margin: 2px;
-               position: relative;
-               padding: 4px 0;
-               cursor: pointer;
-               float: left;
-               list-style: none;
-       }
-       #icons span.ui-icon {
-               float: left;
-               margin: 0 4px;
-       }
-       .fakewindowcontain .ui-widget-overlay {
-               position: absolute;
-       }
-       select {
-               width: 200px;
-       }
-       </style>
-</head>
-<body>
-
-<h1>Welcome to jQuery UI!</h1>
-
-<div class="ui-widget">
-       <p>This page demonstrates the widgets and theme you selected in Download Builder. Please make sure you are using them with a compatible jQuery version.</p>
-</div>
-
-<h1>YOUR COMPONENTS:</h1>
-
-
-<!-- Accordion -->
-<h2 class="demoHeaders">Accordion</h2>
-<div id="accordion">
-       <h3>First</h3>
-       <div>Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet.</div>
-       <h3>Second</h3>
-       <div>Phasellus mattis tincidunt nibh.</div>
-       <h3>Third</h3>
-       <div>Nam dui erat, auctor a, dignissim quis.</div>
-</div>
-
-
-
-<!-- Autocomplete -->
-<h2 class="demoHeaders">Autocomplete</h2>
-<div>
-       <input id="autocomplete" title="type &quot;a&quot;">
-</div>
-
-
-
-<!-- Button -->
-<h2 class="demoHeaders">Button</h2>
-<button id="button">A button element</button>
-<form style="margin-top: 1em;">
-       <div id="radioset">
-               <input type="radio" id="radio1" name="radio"><label for="radio1">Choice 1</label>
-               <input type="radio" id="radio2" name="radio" checked="checked"><label for="radio2">Choice 2</label>
-               <input type="radio" id="radio3" name="radio"><label for="radio3">Choice 3</label>
-       </div>
-</form>
-
-
-
-<!-- Tabs -->
-<h2 class="demoHeaders">Tabs</h2>
-<div id="tabs">
-       <ul>
-               <li><a href="#tabs-1">First</a></li>
-               <li><a href="#tabs-2">Second</a></li>
-               <li><a href="#tabs-3">Third</a></li>
-       </ul>
-       <div id="tabs-1">Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.</div>
-       <div id="tabs-2">Phasellus mattis tincidunt nibh. Cras orci urna, blandit id, pretium vel, aliquet ornare, felis. Maecenas scelerisque sem non nisl. Fusce sed lorem in enim dictum bibendum.</div>
-       <div id="tabs-3">Nam dui erat, auctor a, dignissim quis, sollicitudin eu, felis. Pellentesque nisi urna, interdum eget, sagittis et, consequat vestibulum, lacus. Mauris porttitor ullamcorper augue.</div>
-</div>
-
-
-
-<!-- Dialog NOTE: Dialog is not generated by UI in this demo so it can be visually styled in themeroller-->
-<h2 class="demoHeaders">Dialog</h2>
-<p><a href="#" id="dialog-link" class="ui-state-default ui-corner-all"><span class="ui-icon ui-icon-newwin"></span>Open Dialog</a></p>
-
-<h2 class="demoHeaders">Overlay and Shadow Classes <em>(not currently used in UI widgets)</em></h2>
-<div style="position: relative; width: 96%; height: 200px; padding:1% 2%; overflow:hidden;" class="fakewindowcontain">
-       <p>Lorem ipsum dolor sit amet,  Nulla nec tortor. Donec id elit quis purus consectetur consequat. </p><p>Nam congue semper tellus. Sed erat dolor, dapibus sit amet, venenatis ornare, ultrices ut, nisi. Aliquam ante. Suspendisse scelerisque dui nec velit. Duis augue augue, gravida euismod, vulputate ac, facilisis id, sem. Morbi in orci. </p><p>Nulla purus lacus, pulvinar vel, malesuada ac, mattis nec, quam. Nam molestie scelerisque quam. Nullam feugiat cursus lacus.orem ipsum dolor sit amet, consectetur adipiscing elit. Donec libero risus, commodo vitae, pharetra mollis, posuere eu, pede. Nulla nec tortor. Donec id elit quis purus consectetur consequat. </p><p>Nam congue semper tellus. Sed erat dolor, dapibus sit amet, venenatis ornare, ultrices ut, nisi. Aliquam ante. Suspendisse scelerisque dui nec velit. Duis augue augue, gravida euismod, vulputate ac, facilisis id, sem. Morbi in orci. Nulla purus lacus, pulvinar vel, malesuada ac, mattis nec, quam. Nam molestie scelerisque quam. </p><p>Nullam feugiat cursus lacus.orem ipsum dolor sit amet, consectetur adipiscing elit. Donec libero risus, commodo vitae, pharetra mollis, posuere eu, pede. Nulla nec tortor. Donec id elit quis purus consectetur consequat. Nam congue semper tellus. Sed erat dolor, dapibus sit amet, venenatis ornare, ultrices ut, nisi. Aliquam ante. </p><p>Suspendisse scelerisque dui nec velit. Duis augue augue, gravida euismod, vulputate ac, facilisis id, sem. Morbi in orci. Nulla purus lacus, pulvinar vel, malesuada ac, mattis nec, quam. Nam molestie scelerisque quam. Nullam feugiat cursus lacus.orem ipsum dolor sit amet, consectetur adipiscing elit. Donec libero risus, commodo vitae, pharetra mollis, posuere eu, pede. Nulla nec tortor. Donec id elit quis purus consectetur consequat. Nam congue semper tellus. Sed erat dolor, dapibus sit amet, venenatis ornare, ultrices ut, nisi. </p>
-
-       <!-- ui-dialog -->
-       <div class="ui-overlay"><div class="ui-widget-overlay"></div><div class="ui-widget-shadow ui-corner-all" style="width: 302px; height: 152px; position: absolute; left: 50px; top: 30px;"></div></div>
-       <div style="position: absolute; width: 280px; height: 130px;left: 50px; top: 30px; padding: 10px;" class="ui-widget ui-widget-content ui-corner-all">
-               <div class="ui-dialog-content ui-widget-content" style="background: none; border: 0;">
-                       <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.</p>
-               </div>
-       </div>
-
-</div>
-
-<!-- ui-dialog -->
-<div id="dialog" title="Dialog Title">
-       <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.</p>
-</div>
-
-
-
-<h2 class="demoHeaders">Framework Icons (content color preview)</h2>
-<ul id="icons" class="ui-widget ui-helper-clearfix">
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-carat-1-n"><span class="ui-icon ui-icon-carat-1-n"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-carat-1-ne"><span class="ui-icon ui-icon-carat-1-ne"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-carat-1-e"><span class="ui-icon ui-icon-carat-1-e"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-carat-1-se"><span class="ui-icon ui-icon-carat-1-se"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-carat-1-s"><span class="ui-icon ui-icon-carat-1-s"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-carat-1-sw"><span class="ui-icon ui-icon-carat-1-sw"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-carat-1-w"><span class="ui-icon ui-icon-carat-1-w"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-carat-1-nw"><span class="ui-icon ui-icon-carat-1-nw"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-carat-2-n-s"><span class="ui-icon ui-icon-carat-2-n-s"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-carat-2-e-w"><span class="ui-icon ui-icon-carat-2-e-w"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-triangle-1-n"><span class="ui-icon ui-icon-triangle-1-n"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-triangle-1-ne"><span class="ui-icon ui-icon-triangle-1-ne"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-triangle-1-e"><span class="ui-icon ui-icon-triangle-1-e"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-triangle-1-se"><span class="ui-icon ui-icon-triangle-1-se"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-triangle-1-s"><span class="ui-icon ui-icon-triangle-1-s"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-triangle-1-sw"><span class="ui-icon ui-icon-triangle-1-sw"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-triangle-1-w"><span class="ui-icon ui-icon-triangle-1-w"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-triangle-1-nw"><span class="ui-icon ui-icon-triangle-1-nw"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-triangle-2-n-s"><span class="ui-icon ui-icon-triangle-2-n-s"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-triangle-2-e-w"><span class="ui-icon ui-icon-triangle-2-e-w"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-arrow-1-n"><span class="ui-icon ui-icon-arrow-1-n"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-arrow-1-ne"><span class="ui-icon ui-icon-arrow-1-ne"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-arrow-1-e"><span class="ui-icon ui-icon-arrow-1-e"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-arrow-1-se"><span class="ui-icon ui-icon-arrow-1-se"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-arrow-1-s"><span class="ui-icon ui-icon-arrow-1-s"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-arrow-1-sw"><span class="ui-icon ui-icon-arrow-1-sw"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-arrow-1-w"><span class="ui-icon ui-icon-arrow-1-w"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-arrow-1-nw"><span class="ui-icon ui-icon-arrow-1-nw"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-arrow-2-n-s"><span class="ui-icon ui-icon-arrow-2-n-s"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-arrow-2-ne-sw"><span class="ui-icon ui-icon-arrow-2-ne-sw"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-arrow-2-e-w"><span class="ui-icon ui-icon-arrow-2-e-w"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-arrow-2-se-nw"><span class="ui-icon ui-icon-arrow-2-se-nw"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-arrowstop-1-n"><span class="ui-icon ui-icon-arrowstop-1-n"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-arrowstop-1-e"><span class="ui-icon ui-icon-arrowstop-1-e"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-arrowstop-1-s"><span class="ui-icon ui-icon-arrowstop-1-s"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-arrowstop-1-w"><span class="ui-icon ui-icon-arrowstop-1-w"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-arrowthick-1-n"><span class="ui-icon ui-icon-arrowthick-1-n"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-arrowthick-1-ne"><span class="ui-icon ui-icon-arrowthick-1-ne"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-arrowthick-1-e"><span class="ui-icon ui-icon-arrowthick-1-e"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-arrowthick-1-se"><span class="ui-icon ui-icon-arrowthick-1-se"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-arrowthick-1-s"><span class="ui-icon ui-icon-arrowthick-1-s"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-arrowthick-1-sw"><span class="ui-icon ui-icon-arrowthick-1-sw"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-arrowthick-1-w"><span class="ui-icon ui-icon-arrowthick-1-w"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-arrowthick-1-nw"><span class="ui-icon ui-icon-arrowthick-1-nw"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-arrowthick-2-n-s"><span class="ui-icon ui-icon-arrowthick-2-n-s"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-arrowthick-2-ne-sw"><span class="ui-icon ui-icon-arrowthick-2-ne-sw"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-arrowthick-2-e-w"><span class="ui-icon ui-icon-arrowthick-2-e-w"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-arrowthick-2-se-nw"><span class="ui-icon ui-icon-arrowthick-2-se-nw"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-arrowthickstop-1-n"><span class="ui-icon ui-icon-arrowthickstop-1-n"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-arrowthickstop-1-e"><span class="ui-icon ui-icon-arrowthickstop-1-e"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-arrowthickstop-1-s"><span class="ui-icon ui-icon-arrowthickstop-1-s"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-arrowthickstop-1-w"><span class="ui-icon ui-icon-arrowthickstop-1-w"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-arrowreturnthick-1-w"><span class="ui-icon ui-icon-arrowreturnthick-1-w"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-arrowreturnthick-1-n"><span class="ui-icon ui-icon-arrowreturnthick-1-n"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-arrowreturnthick-1-e"><span class="ui-icon ui-icon-arrowreturnthick-1-e"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-arrowreturnthick-1-s"><span class="ui-icon ui-icon-arrowreturnthick-1-s"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-arrowreturn-1-w"><span class="ui-icon ui-icon-arrowreturn-1-w"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-arrowreturn-1-n"><span class="ui-icon ui-icon-arrowreturn-1-n"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-arrowreturn-1-e"><span class="ui-icon ui-icon-arrowreturn-1-e"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-arrowreturn-1-s"><span class="ui-icon ui-icon-arrowreturn-1-s"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-arrowrefresh-1-w"><span class="ui-icon ui-icon-arrowrefresh-1-w"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-arrowrefresh-1-n"><span class="ui-icon ui-icon-arrowrefresh-1-n"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-arrowrefresh-1-e"><span class="ui-icon ui-icon-arrowrefresh-1-e"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-arrowrefresh-1-s"><span class="ui-icon ui-icon-arrowrefresh-1-s"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-arrow-4"><span class="ui-icon ui-icon-arrow-4"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-arrow-4-diag"><span class="ui-icon ui-icon-arrow-4-diag"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-extlink"><span class="ui-icon ui-icon-extlink"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-newwin"><span class="ui-icon ui-icon-newwin"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-refresh"><span class="ui-icon ui-icon-refresh"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-shuffle"><span class="ui-icon ui-icon-shuffle"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-transfer-e-w"><span class="ui-icon ui-icon-transfer-e-w"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-transferthick-e-w"><span class="ui-icon ui-icon-transferthick-e-w"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-folder-collapsed"><span class="ui-icon ui-icon-folder-collapsed"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-folder-open"><span class="ui-icon ui-icon-folder-open"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-document"><span class="ui-icon ui-icon-document"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-document-b"><span class="ui-icon ui-icon-document-b"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-note"><span class="ui-icon ui-icon-note"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-mail-closed"><span class="ui-icon ui-icon-mail-closed"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-mail-open"><span class="ui-icon ui-icon-mail-open"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-suitcase"><span class="ui-icon ui-icon-suitcase"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-comment"><span class="ui-icon ui-icon-comment"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-person"><span class="ui-icon ui-icon-person"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-print"><span class="ui-icon ui-icon-print"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-trash"><span class="ui-icon ui-icon-trash"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-locked"><span class="ui-icon ui-icon-locked"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-unlocked"><span class="ui-icon ui-icon-unlocked"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-bookmark"><span class="ui-icon ui-icon-bookmark"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-tag"><span class="ui-icon ui-icon-tag"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-home"><span class="ui-icon ui-icon-home"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-flag"><span class="ui-icon ui-icon-flag"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-calculator"><span class="ui-icon ui-icon-calculator"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-cart"><span class="ui-icon ui-icon-cart"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-pencil"><span class="ui-icon ui-icon-pencil"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-clock"><span class="ui-icon ui-icon-clock"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-disk"><span class="ui-icon ui-icon-disk"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-calendar"><span class="ui-icon ui-icon-calendar"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-zoomin"><span class="ui-icon ui-icon-zoomin"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-zoomout"><span class="ui-icon ui-icon-zoomout"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-search"><span class="ui-icon ui-icon-search"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-wrench"><span class="ui-icon ui-icon-wrench"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-gear"><span class="ui-icon ui-icon-gear"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-heart"><span class="ui-icon ui-icon-heart"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-star"><span class="ui-icon ui-icon-star"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-link"><span class="ui-icon ui-icon-link"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-cancel"><span class="ui-icon ui-icon-cancel"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-plus"><span class="ui-icon ui-icon-plus"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-plusthick"><span class="ui-icon ui-icon-plusthick"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-minus"><span class="ui-icon ui-icon-minus"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-minusthick"><span class="ui-icon ui-icon-minusthick"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-close"><span class="ui-icon ui-icon-close"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-closethick"><span class="ui-icon ui-icon-closethick"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-key"><span class="ui-icon ui-icon-key"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-lightbulb"><span class="ui-icon ui-icon-lightbulb"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-scissors"><span class="ui-icon ui-icon-scissors"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-clipboard"><span class="ui-icon ui-icon-clipboard"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-copy"><span class="ui-icon ui-icon-copy"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-contact"><span class="ui-icon ui-icon-contact"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-image"><span class="ui-icon ui-icon-image"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-video"><span class="ui-icon ui-icon-video"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-script"><span class="ui-icon ui-icon-script"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-alert"><span class="ui-icon ui-icon-alert"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-info"><span class="ui-icon ui-icon-info"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-notice"><span class="ui-icon ui-icon-notice"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-help"><span class="ui-icon ui-icon-help"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-check"><span class="ui-icon ui-icon-check"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-bullet"><span class="ui-icon ui-icon-bullet"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-radio-off"><span class="ui-icon ui-icon-radio-off"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-radio-on"><span class="ui-icon ui-icon-radio-on"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-pin-w"><span class="ui-icon ui-icon-pin-w"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-pin-s"><span class="ui-icon ui-icon-pin-s"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-play"><span class="ui-icon ui-icon-play"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-pause"><span class="ui-icon ui-icon-pause"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-seek-next"><span class="ui-icon ui-icon-seek-next"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-seek-prev"><span class="ui-icon ui-icon-seek-prev"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-seek-end"><span class="ui-icon ui-icon-seek-end"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-seek-first"><span class="ui-icon ui-icon-seek-first"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-stop"><span class="ui-icon ui-icon-stop"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-eject"><span class="ui-icon ui-icon-eject"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-volume-off"><span class="ui-icon ui-icon-volume-off"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-volume-on"><span class="ui-icon ui-icon-volume-on"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-power"><span class="ui-icon ui-icon-power"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-signal-diag"><span class="ui-icon ui-icon-signal-diag"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-signal"><span class="ui-icon ui-icon-signal"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-battery-0"><span class="ui-icon ui-icon-battery-0"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-battery-1"><span class="ui-icon ui-icon-battery-1"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-battery-2"><span class="ui-icon ui-icon-battery-2"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-battery-3"><span class="ui-icon ui-icon-battery-3"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-circle-plus"><span class="ui-icon ui-icon-circle-plus"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-circle-minus"><span class="ui-icon ui-icon-circle-minus"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-circle-close"><span class="ui-icon ui-icon-circle-close"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-circle-triangle-e"><span class="ui-icon ui-icon-circle-triangle-e"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-circle-triangle-s"><span class="ui-icon ui-icon-circle-triangle-s"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-circle-triangle-w"><span class="ui-icon ui-icon-circle-triangle-w"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-circle-triangle-n"><span class="ui-icon ui-icon-circle-triangle-n"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-circle-arrow-e"><span class="ui-icon ui-icon-circle-arrow-e"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-circle-arrow-s"><span class="ui-icon ui-icon-circle-arrow-s"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-circle-arrow-w"><span class="ui-icon ui-icon-circle-arrow-w"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-circle-arrow-n"><span class="ui-icon ui-icon-circle-arrow-n"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-circle-zoomin"><span class="ui-icon ui-icon-circle-zoomin"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-circle-zoomout"><span class="ui-icon ui-icon-circle-zoomout"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-circle-check"><span class="ui-icon ui-icon-circle-check"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-circlesmall-plus"><span class="ui-icon ui-icon-circlesmall-plus"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-circlesmall-minus"><span class="ui-icon ui-icon-circlesmall-minus"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-circlesmall-close"><span class="ui-icon ui-icon-circlesmall-close"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-squaresmall-plus"><span class="ui-icon ui-icon-squaresmall-plus"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-squaresmall-minus"><span class="ui-icon ui-icon-squaresmall-minus"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-squaresmall-close"><span class="ui-icon ui-icon-squaresmall-close"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-grip-dotted-vertical"><span class="ui-icon ui-icon-grip-dotted-vertical"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-grip-dotted-horizontal"><span class="ui-icon ui-icon-grip-dotted-horizontal"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-grip-solid-vertical"><span class="ui-icon ui-icon-grip-solid-vertical"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-grip-solid-horizontal"><span class="ui-icon ui-icon-grip-solid-horizontal"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-gripsmall-diagonal-se"><span class="ui-icon ui-icon-gripsmall-diagonal-se"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-grip-diagonal-se"><span class="ui-icon ui-icon-grip-diagonal-se"></span></li>
-</ul>
-
-
-<!-- Slider -->
-<h2 class="demoHeaders">Slider</h2>
-<div id="slider"></div>
-
-
-
-<!-- Datepicker -->
-<h2 class="demoHeaders">Datepicker</h2>
-<div id="datepicker"></div>
-
-
-
-<!-- Progressbar -->
-<h2 class="demoHeaders">Progressbar</h2>
-<div id="progressbar"></div>
-
-
-
-<!-- Progressbar -->
-<h2 class="demoHeaders">Selectmenu</h2>
-<select id="selectmenu">
-       <option>Slower</option>
-       <option>Slow</option>
-       <option selected="selected">Medium</option>
-       <option>Fast</option>
-       <option>Faster</option>
-</select>
-
-
-
-<!-- Spinner -->
-<h2 class="demoHeaders">Spinner</h2>
-<input id="spinner">
-
-
-
-<!-- Menu -->
-<h2 class="demoHeaders">Menu</h2>
-<ul style="width:100px;" id="menu">
-       <li>Item 1</li>
-       <li>Item 2</li>
-       <li>Item 3
-               <ul>
-                       <li>Item 3-1</li>
-                       <li>Item 3-2</li>
-                       <li>Item 3-3</li>
-                       <li>Item 3-4</li>
-                       <li>Item 3-5</li>
-               </ul>
-       </li>
-       <li>Item 4</li>
-       <li>Item 5</li>
-</ul>
-
-
-
-<!-- Tooltip -->
-<h2 class="demoHeaders">Tooltip</h2>
-<p id="tooltip">
-       <a href="#" title="That&apos;s what this widget is">Tooltips</a> can be attached to any element. When you hover
-the element with your mouse, the title attribute is displayed in a little box next to the element, just like a native tooltip.
-</p>
-
-
-<!-- Highlight / Error -->
-<h2 class="demoHeaders">Highlight / Error</h2>
-<div class="ui-widget">
-       <div class="ui-state-highlight ui-corner-all" style="margin-top: 20px; padding: 0 .7em;">
-               <p><span class="ui-icon ui-icon-info" style="float: left; margin-right: .3em;"></span>
-               <strong>Hey!</strong> Sample ui-state-highlight style.</p>
-       </div>
-</div>
-<br>
-<div class="ui-widget">
-       <div class="ui-state-error ui-corner-all" style="padding: 0 .7em;">
-               <p><span class="ui-icon ui-icon-alert" style="float: left; margin-right: .3em;"></span>
-               <strong>Alert:</strong> Sample ui-state-error style.</p>
-       </div>
-</div>
-
-<script src="external/jquery/jquery.js"></script>
-<script src="jquery-ui.js"></script>
-<script>
-
-$( "#accordion" ).accordion();
-
-
-
-var availableTags = [
-       "ActionScript",
-       "AppleScript",
-       "Asp",
-       "BASIC",
-       "C",
-       "C++",
-       "Clojure",
-       "COBOL",
-       "ColdFusion",
-       "Erlang",
-       "Fortran",
-       "Groovy",
-       "Haskell",
-       "Java",
-       "JavaScript",
-       "Lisp",
-       "Perl",
-       "PHP",
-       "Python",
-       "Ruby",
-       "Scala",
-       "Scheme"
-];
-$( "#autocomplete" ).autocomplete({
-       source: availableTags
-});
-
-
-
-$( "#button" ).button();
-$( "#radioset" ).buttonset();
-
-
-
-$( "#tabs" ).tabs();
-
-
-
-$( "#dialog" ).dialog({
-       autoOpen: false,
-       width: 400,
-       buttons: [
-               {
-                       text: "Ok",
-                       click: function() {
-                               $( this ).dialog( "close" );
-                       }
-               },
-               {
-                       text: "Cancel",
-                       click: function() {
-                               $( this ).dialog( "close" );
-                       }
-               }
-       ]
-});
-
-// Link to open the dialog
-$( "#dialog-link" ).click(function( event ) {
-       $( "#dialog" ).dialog( "open" );
-       event.preventDefault();
-});
-
-
-
-$( "#datepicker" ).datepicker({
-       inline: true
-});
-
-
-
-$( "#slider" ).slider({
-       range: true,
-       values: [ 17, 67 ]
-});
-
-
-
-$( "#progressbar" ).progressbar({
-       value: 20
-});
-
-
-
-$( "#spinner" ).spinner();
-
-
-
-$( "#menu" ).menu();
-
-
-
-$( "#tooltip" ).tooltip();
-
-
-
-$( "#selectmenu" ).selectmenu();
-
-
-// Hover states on the static widgets
-$( "#dialog-link, #icons li" ).hover(
-       function() {
-               $( this ).addClass( "ui-state-hover" );
-       },
-       function() {
-               $( this ).removeClass( "ui-state-hover" );
-       }
-);
-</script>
-</body>
-</html>
diff --git a/src/main/resources/META-INF/resources/designer/lib/jquery-ui-1.11.3.custom/jquery-ui.css b/src/main/resources/META-INF/resources/designer/lib/jquery-ui-1.11.3.custom/jquery-ui.css
deleted file mode 100644 (file)
index f1d4964..0000000
+++ /dev/null
@@ -1,1225 +0,0 @@
-/*! jQuery UI - v1.11.3 - 2015-03-03
-* http://jqueryui.com
-* Includes: core.css, draggable.css, resizable.css, selectable.css, sortable.css, accordion.css, autocomplete.css, button.css, datepicker.css, dialog.css, menu.css, progressbar.css, selectmenu.css, slider.css, spinner.css, tabs.css, tooltip.css, theme.css
-* To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Verdana%2CArial%2Csans-serif&fwDefault=normal&fsDefault=1.1em&cornerRadius=4px&bgColorHeader=cccccc&bgTextureHeader=highlight_soft&bgImgOpacityHeader=75&borderColorHeader=aaaaaa&fcHeader=222222&iconColorHeader=222222&bgColorContent=ffffff&bgTextureContent=flat&bgImgOpacityContent=75&borderColorContent=aaaaaa&fcContent=222222&iconColorContent=222222&bgColorDefault=e6e6e6&bgTextureDefault=glass&bgImgOpacityDefault=75&borderColorDefault=d3d3d3&fcDefault=555555&iconColorDefault=888888&bgColorHover=dadada&bgTextureHover=glass&bgImgOpacityHover=75&borderColorHover=999999&fcHover=212121&iconColorHover=454545&bgColorActive=ffffff&bgTextureActive=glass&bgImgOpacityActive=65&borderColorActive=aaaaaa&fcActive=212121&iconColorActive=454545&bgColorHighlight=fbf9ee&bgTextureHighlight=glass&bgImgOpacityHighlight=55&borderColorHighlight=fcefa1&fcHighlight=363636&iconColorHighlight=2e83ff&bgColorError=fef1ec&bgTextureError=glass&bgImgOpacityError=95&borderColorError=cd0a0a&fcError=cd0a0a&iconColorError=cd0a0a&bgColorOverlay=aaaaaa&bgTextureOverlay=flat&bgImgOpacityOverlay=0&opacityOverlay=30&bgColorShadow=aaaaaa&bgTextureShadow=flat&bgImgOpacityShadow=0&opacityShadow=30&thicknessShadow=8px&offsetTopShadow=-8px&offsetLeftShadow=-8px&cornerRadiusShadow=8px
-* Copyright 2015 jQuery Foundation and other contributors; Licensed MIT */
-
-/* Layout helpers
-----------------------------------*/
-.ui-helper-hidden {
-       display: none;
-}
-.ui-helper-hidden-accessible {
-       border: 0;
-       clip: rect(0 0 0 0);
-       height: 1px;
-       margin: -1px;
-       overflow: hidden;
-       padding: 0;
-       position: absolute;
-       width: 1px;
-}
-.ui-helper-reset {
-       margin: 0;
-       padding: 0;
-       border: 0;
-       outline: 0;
-       line-height: 1.3;
-       text-decoration: none;
-       font-size: 100%;
-       list-style: none;
-}
-.ui-helper-clearfix:before,
-.ui-helper-clearfix:after {
-       content: "";
-       display: table;
-       border-collapse: collapse;
-}
-.ui-helper-clearfix:after {
-       clear: both;
-}
-.ui-helper-clearfix {
-       min-height: 0; /* support: IE7 */
-}
-.ui-helper-zfix {
-       width: 100%;
-       height: 100%;
-       top: 0;
-       left: 0;
-       position: absolute;
-       opacity: 0;
-       filter:Alpha(Opacity=0); /* support: IE8 */
-}
-
-.ui-front {
-       z-index: 100;
-}
-
-
-/* Interaction Cues
-----------------------------------*/
-.ui-state-disabled {
-       cursor: default !important;
-}
-
-
-/* Icons
-----------------------------------*/
-
-/* states and images */
-.ui-icon {
-       display: block;
-       text-indent: -99999px;
-       overflow: hidden;
-       background-repeat: no-repeat;
-}
-
-
-/* Misc visuals
-----------------------------------*/
-
-/* Overlays */
-.ui-widget-overlay {
-       position: fixed;
-       top: 0;
-       left: 0;
-       width: 100%;
-       height: 100%;
-}
-.ui-draggable-handle {
-       -ms-touch-action: none;
-       touch-action: none;
-}
-.ui-resizable {
-       position: relative;
-}
-.ui-resizable-handle {
-       position: absolute;
-       font-size: 0.1px;
-       display: block;
-       -ms-touch-action: none;
-       touch-action: none;
-}
-.ui-resizable-disabled .ui-resizable-handle,
-.ui-resizable-autohide .ui-resizable-handle {
-       display: none;
-}
-.ui-resizable-n {
-       cursor: n-resize;
-       height: 7px;
-       width: 100%;
-       top: -5px;
-       left: 0;
-}
-.ui-resizable-s {
-       cursor: s-resize;
-       height: 7px;
-       width: 100%;
-       bottom: -5px;
-       left: 0;
-}
-.ui-resizable-e {
-       cursor: e-resize;
-       width: 7px;
-       right: -5px;
-       top: 0;
-       height: 100%;
-}
-.ui-resizable-w {
-       cursor: w-resize;
-       width: 7px;
-       left: -5px;
-       top: 0;
-       height: 100%;
-}
-.ui-resizable-se {
-       cursor: se-resize;
-       width: 12px;
-       height: 12px;
-       right: 1px;
-       bottom: 1px;
-}
-.ui-resizable-sw {
-       cursor: sw-resize;
-       width: 9px;
-       height: 9px;
-       left: -5px;
-       bottom: -5px;
-}
-.ui-resizable-nw {
-       cursor: nw-resize;
-       width: 9px;
-       height: 9px;
-       left: -5px;
-       top: -5px;
-}
-.ui-resizable-ne {
-       cursor: ne-resize;
-       width: 9px;
-       height: 9px;
-       right: -5px;
-       top: -5px;
-}
-.ui-selectable {
-       -ms-touch-action: none;
-       touch-action: none;
-}
-.ui-selectable-helper {
-       position: absolute;
-       z-index: 100;
-       border: 1px dotted black;
-}
-.ui-sortable-handle {
-       -ms-touch-action: none;
-       touch-action: none;
-}
-.ui-accordion .ui-accordion-header {
-       display: block;
-       cursor: pointer;
-       position: relative;
-       margin: 2px 0 0 0;
-       padding: .5em .5em .5em .7em;
-       min-height: 0; /* support: IE7 */
-       font-size: 100%;
-}
-.ui-accordion .ui-accordion-icons {
-       padding-left: 2.2em;
-}
-.ui-accordion .ui-accordion-icons .ui-accordion-icons {
-       padding-left: 2.2em;
-}
-.ui-accordion .ui-accordion-header .ui-accordion-header-icon {
-       position: absolute;
-       left: .5em;
-       top: 50%;
-       margin-top: -8px;
-}
-.ui-accordion .ui-accordion-content {
-       padding: 1em 2.2em;
-       border-top: 0;
-       overflow: auto;
-}
-.ui-autocomplete {
-       position: absolute;
-       top: 0;
-       left: 0;
-       cursor: default;
-}
-.ui-button {
-       display: inline-block;
-       position: relative;
-       padding: 0;
-       line-height: normal;
-       margin-right: .1em;
-       cursor: pointer;
-       vertical-align: middle;
-       text-align: center;
-       overflow: visible; /* removes extra width in IE */
-}
-.ui-button,
-.ui-button:link,
-.ui-button:visited,
-.ui-button:hover,
-.ui-button:active {
-       text-decoration: none;
-}
-/* to make room for the icon, a width needs to be set here */
-.ui-button-icon-only {
-       width: 2.2em;
-}
-/* button elements seem to need a little more width */
-button.ui-button-icon-only {
-       width: 2.4em;
-}
-.ui-button-icons-only {
-       width: 3.4em;
-}
-button.ui-button-icons-only {
-       width: 3.7em;
-}
-
-/* button text element */
-.ui-button .ui-button-text {
-       display: block;
-       line-height: normal;
-}
-.ui-button-text-only .ui-button-text {
-       padding: .4em 1em;
-}
-.ui-button-icon-only .ui-button-text,
-.ui-button-icons-only .ui-button-text {
-       padding: .4em;
-       text-indent: -9999999px;
-}
-.ui-button-text-icon-primary .ui-button-text,
-.ui-button-text-icons .ui-button-text {
-       padding: .4em 1em .4em 2.1em;
-}
-.ui-button-text-icon-secondary .ui-button-text,
-.ui-button-text-icons .ui-button-text {
-       padding: .4em 2.1em .4em 1em;
-}
-.ui-button-text-icons .ui-button-text {
-       padding-left: 2.1em;
-       padding-right: 2.1em;
-}
-/* no icon support for input elements, provide padding by default */
-input.ui-button {
-       padding: .4em 1em;
-}
-
-/* button icon element(s) */
-.ui-button-icon-only .ui-icon,
-.ui-button-text-icon-primary .ui-icon,
-.ui-button-text-icon-secondary .ui-icon,
-.ui-button-text-icons .ui-icon,
-.ui-button-icons-only .ui-icon {
-       position: absolute;
-       top: 50%;
-       margin-top: -8px;
-}
-.ui-button-icon-only .ui-icon {
-       left: 50%;
-       margin-left: -8px;
-}
-.ui-button-text-icon-primary .ui-button-icon-primary,
-.ui-button-text-icons .ui-button-icon-primary,
-.ui-button-icons-only .ui-button-icon-primary {
-       left: .5em;
-}
-.ui-button-text-icon-secondary .ui-button-icon-secondary,
-.ui-button-text-icons .ui-button-icon-secondary,
-.ui-button-icons-only .ui-button-icon-secondary {
-       right: .5em;
-}
-
-/* button sets */
-.ui-buttonset {
-       margin-right: 7px;
-}
-.ui-buttonset .ui-button {
-       margin-left: 0;
-       margin-right: -.3em;
-}
-
-/* workarounds */
-/* reset extra padding in Firefox, see h5bp.com/l */
-input.ui-button::-moz-focus-inner,
-button.ui-button::-moz-focus-inner {
-       border: 0;
-       padding: 0;
-}
-.ui-datepicker {
-       width: 17em;
-       padding: .2em .2em 0;
-       display: none;
-}
-.ui-datepicker .ui-datepicker-header {
-       position: relative;
-       padding: .2em 0;
-}
-.ui-datepicker .ui-datepicker-prev,
-.ui-datepicker .ui-datepicker-next {
-       position: absolute;
-       top: 2px;
-       width: 1.8em;
-       height: 1.8em;
-}
-.ui-datepicker .ui-datepicker-prev-hover,
-.ui-datepicker .ui-datepicker-next-hover {
-       top: 1px;
-}
-.ui-datepicker .ui-datepicker-prev {
-       left: 2px;
-}
-.ui-datepicker .ui-datepicker-next {
-       right: 2px;
-}
-.ui-datepicker .ui-datepicker-prev-hover {
-       left: 1px;
-}
-.ui-datepicker .ui-datepicker-next-hover {
-       right: 1px;
-}
-.ui-datepicker .ui-datepicker-prev span,
-.ui-datepicker .ui-datepicker-next span {
-       display: block;
-       position: absolute;
-       left: 50%;
-       margin-left: -8px;
-       top: 50%;
-       margin-top: -8px;
-}
-.ui-datepicker .ui-datepicker-title {
-       margin: 0 2.3em;
-       line-height: 1.8em;
-       text-align: center;
-}
-.ui-datepicker .ui-datepicker-title select {
-       font-size: 1em;
-       margin: 1px 0;
-}
-.ui-datepicker select.ui-datepicker-month,
-.ui-datepicker select.ui-datepicker-year {
-       width: 45%;
-}
-.ui-datepicker table {
-       width: 100%;
-       font-size: .9em;
-       border-collapse: collapse;
-       margin: 0 0 .4em;
-}
-.ui-datepicker th {
-       padding: .7em .3em;
-       text-align: center;
-       font-weight: bold;
-       border: 0;
-}
-.ui-datepicker td {
-       border: 0;
-       padding: 1px;
-}
-.ui-datepicker td span,
-.ui-datepicker td a {
-       display: block;
-       padding: .2em;
-       text-align: right;
-       text-decoration: none;
-}
-.ui-datepicker .ui-datepicker-buttonpane {
-       background-image: none;
-       margin: .7em 0 0 0;
-       padding: 0 .2em;
-       border-left: 0;
-       border-right: 0;
-       border-bottom: 0;
-}
-.ui-datepicker .ui-datepicker-buttonpane button {
-       float: right;
-       margin: .5em .2em .4em;
-       cursor: pointer;
-       padding: .2em .6em .3em .6em;
-       width: auto;
-       overflow: visible;
-}
-.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current {
-       float: left;
-}
-
-/* with multiple calendars */
-.ui-datepicker.ui-datepicker-multi {
-       width: auto;
-}
-.ui-datepicker-multi .ui-datepicker-group {
-       float: left;
-}
-.ui-datepicker-multi .ui-datepicker-group table {
-       width: 95%;
-       margin: 0 auto .4em;
-}
-.ui-datepicker-multi-2 .ui-datepicker-group {
-       width: 50%;
-}
-.ui-datepicker-multi-3 .ui-datepicker-group {
-       width: 33.3%;
-}
-.ui-datepicker-multi-4 .ui-datepicker-group {
-       width: 25%;
-}
-.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header,
-.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header {
-       border-left-width: 0;
-}
-.ui-datepicker-multi .ui-datepicker-buttonpane {
-       clear: left;
-}
-.ui-datepicker-row-break {
-       clear: both;
-       width: 100%;
-       font-size: 0;
-}
-
-/* RTL support */
-.ui-datepicker-rtl {
-       direction: rtl;
-}
-.ui-datepicker-rtl .ui-datepicker-prev {
-       right: 2px;
-       left: auto;
-}
-.ui-datepicker-rtl .ui-datepicker-next {
-       left: 2px;
-       right: auto;
-}
-.ui-datepicker-rtl .ui-datepicker-prev:hover {
-       right: 1px;
-       left: auto;
-}
-.ui-datepicker-rtl .ui-datepicker-next:hover {
-       left: 1px;
-       right: auto;
-}
-.ui-datepicker-rtl .ui-datepicker-buttonpane {
-       clear: right;
-}
-.ui-datepicker-rtl .ui-datepicker-buttonpane button {
-       float: left;
-}
-.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current,
-.ui-datepicker-rtl .ui-datepicker-group {
-       float: right;
-}
-.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header,
-.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header {
-       border-right-width: 0;
-       border-left-width: 1px;
-}
-.ui-dialog {
-       overflow: hidden;
-       position: absolute;
-       top: 0;
-       left: 0;
-       padding: .2em;
-       outline: 0;
-}
-.ui-dialog .ui-dialog-titlebar {
-       padding: .4em 1em;
-       position: relative;
-}
-.ui-dialog .ui-dialog-title {
-       float: left;
-       margin: .1em 0;
-       white-space: nowrap;
-       width: 90%;
-       overflow: hidden;
-       text-overflow: ellipsis;
-}
-.ui-dialog .ui-dialog-titlebar-close {
-       position: absolute;
-       right: .3em;
-       top: 50%;
-       width: 20px;
-       margin: -10px 0 0 0;
-       padding: 1px;
-       height: 20px;
-}
-.ui-dialog .ui-dialog-content {
-       position: relative;
-       border: 0;
-       padding: .5em 1em;
-       background: none;
-       overflow: auto;
-}
-.ui-dialog .ui-dialog-buttonpane {
-       text-align: left;
-       border-width: 1px 0 0 0;
-       background-image: none;
-       margin-top: .5em;
-       padding: .3em 1em .5em .4em;
-}
-.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset {
-       float: right;
-}
-.ui-dialog .ui-dialog-buttonpane button {
-       margin: .5em .4em .5em 0;
-       cursor: pointer;
-}
-.ui-dialog .ui-resizable-se {
-       width: 12px;
-       height: 12px;
-       right: -5px;
-       bottom: -5px;
-       background-position: 16px 16px;
-}
-.ui-draggable .ui-dialog-titlebar {
-       cursor: move;
-}
-.ui-menu {
-       list-style: none;
-       padding: 0;
-       margin: 0;
-       display: block;
-       outline: none;
-}
-.ui-menu .ui-menu {
-       position: absolute;
-}
-.ui-menu .ui-menu-item {
-       position: relative;
-       margin: 0;
-       padding: 3px 1em 3px .4em;
-       cursor: pointer;
-       min-height: 0; /* support: IE7 */
-       /* support: IE10, see #8844 */
-       list-style-image: url("data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7");
-}
-.ui-menu .ui-menu-divider {
-       margin: 5px 0;
-       height: 0;
-       font-size: 0;
-       line-height: 0;
-       border-width: 1px 0 0 0;
-}
-.ui-menu .ui-state-focus,
-.ui-menu .ui-state-active {
-       margin: -1px;
-}
-
-/* icon support */
-.ui-menu-icons {
-       position: relative;
-}
-.ui-menu-icons .ui-menu-item {
-       padding-left: 2em;
-}
-
-/* left-aligned */
-.ui-menu .ui-icon {
-       position: absolute;
-       top: 0;
-       bottom: 0;
-       left: .2em;
-       margin: auto 0;
-}
-
-/* right-aligned */
-.ui-menu .ui-menu-icon {
-       left: auto;
-       right: 0;
-}
-.ui-progressbar {
-       height: 2em;
-       text-align: left;
-       overflow: hidden;
-}
-.ui-progressbar .ui-progressbar-value {
-       margin: -1px;
-       height: 100%;
-}
-.ui-progressbar .ui-progressbar-overlay {
-       background: url("data:image/gif;base64,R0lGODlhKAAoAIABAAAAAP///yH/C05FVFNDQVBFMi4wAwEAAAAh+QQJAQABACwAAAAAKAAoAAACkYwNqXrdC52DS06a7MFZI+4FHBCKoDeWKXqymPqGqxvJrXZbMx7Ttc+w9XgU2FB3lOyQRWET2IFGiU9m1frDVpxZZc6bfHwv4c1YXP6k1Vdy292Fb6UkuvFtXpvWSzA+HycXJHUXiGYIiMg2R6W459gnWGfHNdjIqDWVqemH2ekpObkpOlppWUqZiqr6edqqWQAAIfkECQEAAQAsAAAAACgAKAAAApSMgZnGfaqcg1E2uuzDmmHUBR8Qil95hiPKqWn3aqtLsS18y7G1SzNeowWBENtQd+T1JktP05nzPTdJZlR6vUxNWWjV+vUWhWNkWFwxl9VpZRedYcflIOLafaa28XdsH/ynlcc1uPVDZxQIR0K25+cICCmoqCe5mGhZOfeYSUh5yJcJyrkZWWpaR8doJ2o4NYq62lAAACH5BAkBAAEALAAAAAAoACgAAAKVDI4Yy22ZnINRNqosw0Bv7i1gyHUkFj7oSaWlu3ovC8GxNso5fluz3qLVhBVeT/Lz7ZTHyxL5dDalQWPVOsQWtRnuwXaFTj9jVVh8pma9JjZ4zYSj5ZOyma7uuolffh+IR5aW97cHuBUXKGKXlKjn+DiHWMcYJah4N0lYCMlJOXipGRr5qdgoSTrqWSq6WFl2ypoaUAAAIfkECQEAAQAsAAAAACgAKAAAApaEb6HLgd/iO7FNWtcFWe+ufODGjRfoiJ2akShbueb0wtI50zm02pbvwfWEMWBQ1zKGlLIhskiEPm9R6vRXxV4ZzWT2yHOGpWMyorblKlNp8HmHEb/lCXjcW7bmtXP8Xt229OVWR1fod2eWqNfHuMjXCPkIGNileOiImVmCOEmoSfn3yXlJWmoHGhqp6ilYuWYpmTqKUgAAIfkECQEAAQAsAAAAACgAKAAAApiEH6kb58biQ3FNWtMFWW3eNVcojuFGfqnZqSebuS06w5V80/X02pKe8zFwP6EFWOT1lDFk8rGERh1TTNOocQ61Hm4Xm2VexUHpzjymViHrFbiELsefVrn6XKfnt2Q9G/+Xdie499XHd2g4h7ioOGhXGJboGAnXSBnoBwKYyfioubZJ2Hn0RuRZaflZOil56Zp6iioKSXpUAAAh+QQJAQABACwAAAAAKAAoAAACkoQRqRvnxuI7kU1a1UU5bd5tnSeOZXhmn5lWK3qNTWvRdQxP8qvaC+/yaYQzXO7BMvaUEmJRd3TsiMAgswmNYrSgZdYrTX6tSHGZO73ezuAw2uxuQ+BbeZfMxsexY35+/Qe4J1inV0g4x3WHuMhIl2jXOKT2Q+VU5fgoSUI52VfZyfkJGkha6jmY+aaYdirq+lQAACH5BAkBAAEALAAAAAAoACgAAAKWBIKpYe0L3YNKToqswUlvznigd4wiR4KhZrKt9Upqip61i9E3vMvxRdHlbEFiEXfk9YARYxOZZD6VQ2pUunBmtRXo1Lf8hMVVcNl8JafV38aM2/Fu5V16Bn63r6xt97j09+MXSFi4BniGFae3hzbH9+hYBzkpuUh5aZmHuanZOZgIuvbGiNeomCnaxxap2upaCZsq+1kAACH5BAkBAAEALAAAAAAoACgAAAKXjI8By5zf4kOxTVrXNVlv1X0d8IGZGKLnNpYtm8Lr9cqVeuOSvfOW79D9aDHizNhDJidFZhNydEahOaDH6nomtJjp1tutKoNWkvA6JqfRVLHU/QUfau9l2x7G54d1fl995xcIGAdXqMfBNadoYrhH+Mg2KBlpVpbluCiXmMnZ2Sh4GBqJ+ckIOqqJ6LmKSllZmsoq6wpQAAAh+QQJAQABACwAAAAAKAAoAAAClYx/oLvoxuJDkU1a1YUZbJ59nSd2ZXhWqbRa2/gF8Gu2DY3iqs7yrq+xBYEkYvFSM8aSSObE+ZgRl1BHFZNr7pRCavZ5BW2142hY3AN/zWtsmf12p9XxxFl2lpLn1rseztfXZjdIWIf2s5dItwjYKBgo9yg5pHgzJXTEeGlZuenpyPmpGQoKOWkYmSpaSnqKileI2FAAACH5BAkBAAEALAAAAAAoACgAAAKVjB+gu+jG4kORTVrVhRlsnn2dJ3ZleFaptFrb+CXmO9OozeL5VfP99HvAWhpiUdcwkpBH3825AwYdU8xTqlLGhtCosArKMpvfa1mMRae9VvWZfeB2XfPkeLmm18lUcBj+p5dnN8jXZ3YIGEhYuOUn45aoCDkp16hl5IjYJvjWKcnoGQpqyPlpOhr3aElaqrq56Bq7VAAAOw==");
-       height: 100%;
-       filter: alpha(opacity=25); /* support: IE8 */
-       opacity: 0.25;
-}
-.ui-progressbar-indeterminate .ui-progressbar-value {
-       background-image: none;
-}
-.ui-selectmenu-menu {
-       padding: 0;
-       margin: 0;
-       position: absolute;
-       top: 0;
-       left: 0;
-       display: none;
-}
-.ui-selectmenu-menu .ui-menu {
-       overflow: auto;
-       /* Support: IE7 */
-       overflow-x: hidden;
-       padding-bottom: 1px;
-}
-.ui-selectmenu-menu .ui-menu .ui-selectmenu-optgroup {
-       font-size: 1em;
-       font-weight: bold;
-       line-height: 1.5;
-       padding: 2px 0.4em;
-       margin: 0.5em 0 0 0;
-       height: auto;
-       border: 0;
-}
-.ui-selectmenu-open {
-       display: block;
-}
-.ui-selectmenu-button {
-       display: inline-block;
-       overflow: hidden;
-       position: relative;
-       text-decoration: none;
-       cursor: pointer;
-}
-.ui-selectmenu-button span.ui-icon {
-       right: 0.5em;
-       left: auto;
-       margin-top: -8px;
-       position: absolute;
-       top: 50%;
-}
-.ui-selectmenu-button span.ui-selectmenu-text {
-       text-align: left;
-       padding: 0.4em 2.1em 0.4em 1em;
-       display: block;
-       line-height: 1.4;
-       overflow: hidden;
-       text-overflow: ellipsis;
-       white-space: nowrap;
-}
-.ui-slider {
-       position: relative;
-       text-align: left;
-}
-.ui-slider .ui-slider-handle {
-       position: absolute;
-       z-index: 2;
-       width: 1.2em;
-       height: 1.2em;
-       cursor: default;
-       -ms-touch-action: none;
-       touch-action: none;
-}
-.ui-slider .ui-slider-range {
-       position: absolute;
-       z-index: 1;
-       font-size: .7em;
-       display: block;
-       border: 0;
-       background-position: 0 0;
-}
-
-/* support: IE8 - See #6727 */
-.ui-slider.ui-state-disabled .ui-slider-handle,
-.ui-slider.ui-state-disabled .ui-slider-range {
-       filter: inherit;
-}
-
-.ui-slider-horizontal {
-       height: .8em;
-}
-.ui-slider-horizontal .ui-slider-handle {
-       top: -.3em;
-       margin-left: -.6em;
-}
-.ui-slider-horizontal .ui-slider-range {
-       top: 0;
-       height: 100%;
-}
-.ui-slider-horizontal .ui-slider-range-min {
-       left: 0;
-}
-.ui-slider-horizontal .ui-slider-range-max {
-       right: 0;
-}
-
-.ui-slider-vertical {
-       width: .8em;
-       height: 100px;
-}
-.ui-slider-vertical .ui-slider-handle {
-       left: -.3em;
-       margin-left: 0;
-       margin-bottom: -.6em;
-}
-.ui-slider-vertical .ui-slider-range {
-       left: 0;
-       width: 100%;
-}
-.ui-slider-vertical .ui-slider-range-min {
-       bottom: 0;
-}
-.ui-slider-vertical .ui-slider-range-max {
-       top: 0;
-}
-.ui-spinner {
-       position: relative;
-       display: inline-block;
-       overflow: hidden;
-       padding: 0;
-       vertical-align: middle;
-}
-.ui-spinner-input {
-       border: none;
-       background: none;
-       color: inherit;
-       padding: 0;
-       margin: .2em 0;
-       vertical-align: middle;
-       margin-left: .4em;
-       margin-right: 22px;
-}
-.ui-spinner-button {
-       width: 16px;
-       height: 50%;
-       font-size: .5em;
-       padding: 0;
-       margin: 0;
-       text-align: center;
-       position: absolute;
-       cursor: default;
-       display: block;
-       overflow: hidden;
-       right: 0;
-}
-/* more specificity required here to override default borders */
-.ui-spinner a.ui-spinner-button {
-       border-top: none;
-       border-bottom: none;
-       border-right: none;
-}
-/* vertically center icon */
-.ui-spinner .ui-icon {
-       position: absolute;
-       margin-top: -8px;
-       top: 50%;
-       left: 0;
-}
-.ui-spinner-up {
-       top: 0;
-}
-.ui-spinner-down {
-       bottom: 0;
-}
-
-/* TR overrides */
-.ui-spinner .ui-icon-triangle-1-s {
-       /* need to fix icons sprite */
-       background-position: -65px -16px;
-}
-.ui-tabs {
-       position: relative;/* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as "fixed") */
-       padding: .2em;
-}
-.ui-tabs .ui-tabs-nav {
-       margin: 0;
-       padding: .2em .2em 0;
-}
-.ui-tabs .ui-tabs-nav li {
-       list-style: none;
-       float: left;
-       position: relative;
-       top: 0;
-       margin: 1px .2em 0 0;
-       border-bottom-width: 0;
-       padding: 0;
-       white-space: nowrap;
-}
-.ui-tabs .ui-tabs-nav .ui-tabs-anchor {
-       float: left;
-       padding: .5em 1em;
-       text-decoration: none;
-}
-.ui-tabs .ui-tabs-nav li.ui-tabs-active {
-       margin-bottom: -1px;
-       padding-bottom: 1px;
-}
-.ui-tabs .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor,
-.ui-tabs .ui-tabs-nav li.ui-state-disabled .ui-tabs-anchor,
-.ui-tabs .ui-tabs-nav li.ui-tabs-loading .ui-tabs-anchor {
-       cursor: text;
-}
-.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor {
-       cursor: pointer;
-}
-.ui-tabs .ui-tabs-panel {
-       display: block;
-       border-width: 0;
-       padding: 1em 1.4em;
-       background: none;
-}
-.ui-tooltip {
-       padding: 8px;
-       position: absolute;
-       z-index: 9999;
-       max-width: 300px;
-       -webkit-box-shadow: 0 0 5px #aaa;
-       box-shadow: 0 0 5px #aaa;
-}
-body .ui-tooltip {
-       border-width: 2px;
-}
-
-/* Component containers
-----------------------------------*/
-.ui-widget {
-       font-family: Verdana,Arial,sans-serif;
-       font-size: 1.1em;
-}
-.ui-widget .ui-widget {
-       font-size: 1em;
-}
-.ui-widget input,
-.ui-widget select,
-.ui-widget textarea,
-.ui-widget button {
-       font-family: Verdana,Arial,sans-serif;
-       font-size: 1em;
-}
-.ui-widget-content {
-       border: 1px solid #aaaaaa;
-       background: #ffffff url("images/ui-bg_flat_75_ffffff_40x100.png") 50% 50% repeat-x;
-       color: #222222;
-}
-.ui-widget-content a {
-       color: #222222;
-}
-.ui-widget-header {
-       border: 1px solid #aaaaaa;
-       background: #cccccc url("images/ui-bg_highlight-soft_75_cccccc_1x100.png") 50% 50% repeat-x;
-       color: #222222;
-       font-weight: bold;
-}
-.ui-widget-header a {
-       color: #222222;
-}
-
-/* Interaction states
-----------------------------------*/
-.ui-state-default,
-.ui-widget-content .ui-state-default,
-.ui-widget-header .ui-state-default {
-       border: 1px solid #d3d3d3;
-       background: #e6e6e6 url("images/ui-bg_glass_75_e6e6e6_1x400.png") 50% 50% repeat-x;
-       font-weight: normal;
-       color: #555555;
-}
-.ui-state-default a,
-.ui-state-default a:link,
-.ui-state-default a:visited {
-       color: #555555;
-       text-decoration: none;
-}
-.ui-state-hover,
-.ui-widget-content .ui-state-hover,
-.ui-widget-header .ui-state-hover,
-.ui-state-focus,
-.ui-widget-content .ui-state-focus,
-.ui-widget-header .ui-state-focus {
-       border: 1px solid #999999;
-       background: #dadada url("images/ui-bg_glass_75_dadada_1x400.png") 50% 50% repeat-x;
-       font-weight: normal;
-       color: #212121;
-}
-.ui-state-hover a,
-.ui-state-hover a:hover,
-.ui-state-hover a:link,
-.ui-state-hover a:visited,
-.ui-state-focus a,
-.ui-state-focus a:hover,
-.ui-state-focus a:link,
-.ui-state-focus a:visited {
-       color: #212121;
-       text-decoration: none;
-}
-.ui-state-active,
-.ui-widget-content .ui-state-active,
-.ui-widget-header .ui-state-active {
-       border: 1px solid #aaaaaa;
-       background: #ffffff url("images/ui-bg_glass_65_ffffff_1x400.png") 50% 50% repeat-x;
-       font-weight: normal;
-       color: #212121;
-}
-.ui-state-active a,
-.ui-state-active a:link,
-.ui-state-active a:visited {
-       color: #212121;
-       text-decoration: none;
-}
-
-/* Interaction Cues
-----------------------------------*/
-.ui-state-highlight,
-.ui-widget-content .ui-state-highlight,
-.ui-widget-header .ui-state-highlight {
-       border: 1px solid #fcefa1;
-       background: #fbf9ee url("images/ui-bg_glass_55_fbf9ee_1x400.png") 50% 50% repeat-x;
-       color: #363636;
-}
-.ui-state-highlight a,
-.ui-widget-content .ui-state-highlight a,
-.ui-widget-header .ui-state-highlight a {
-       color: #363636;
-}
-.ui-state-error,
-.ui-widget-content .ui-state-error,
-.ui-widget-header .ui-state-error {
-       border: 1px solid #cd0a0a;
-       background: #fef1ec url("images/ui-bg_glass_95_fef1ec_1x400.png") 50% 50% repeat-x;
-       color: #cd0a0a;
-}
-.ui-state-error a,
-.ui-widget-content .ui-state-error a,
-.ui-widget-header .ui-state-error a {
-       color: #cd0a0a;
-}
-.ui-state-error-text,
-.ui-widget-content .ui-state-error-text,
-.ui-widget-header .ui-state-error-text {
-       color: #cd0a0a;
-}
-.ui-priority-primary,
-.ui-widget-content .ui-priority-primary,
-.ui-widget-header .ui-priority-primary {
-       font-weight: bold;
-}
-.ui-priority-secondary,
-.ui-widget-content .ui-priority-secondary,
-.ui-widget-header .ui-priority-secondary {
-       opacity: .7;
-       filter:Alpha(Opacity=70); /* support: IE8 */
-       font-weight: normal;
-}
-.ui-state-disabled,
-.ui-widget-content .ui-state-disabled,
-.ui-widget-header .ui-state-disabled {
-       opacity: .35;
-       filter:Alpha(Opacity=35); /* support: IE8 */
-       background-image: none;
-}
-.ui-state-disabled .ui-icon {
-       filter:Alpha(Opacity=35); /* support: IE8 - See #6059 */
-}
-
-/* Icons
-----------------------------------*/
-
-/* states and images */
-.ui-icon {
-       width: 16px;
-       height: 16px;
-}
-.ui-icon,
-.ui-widget-content .ui-icon {
-       background-image: url("images/ui-icons_222222_256x240.png");
-}
-.ui-widget-header .ui-icon {
-       background-image: url("images/ui-icons_222222_256x240.png");
-}
-.ui-state-default .ui-icon {
-       background-image: url("images/ui-icons_888888_256x240.png");
-}
-.ui-state-hover .ui-icon,
-.ui-state-focus .ui-icon {
-       background-image: url("images/ui-icons_454545_256x240.png");
-}
-.ui-state-active .ui-icon {
-       background-image: url("images/ui-icons_454545_256x240.png");
-}
-.ui-state-highlight .ui-icon {
-       background-image: url("images/ui-icons_2e83ff_256x240.png");
-}
-.ui-state-error .ui-icon,
-.ui-state-error-text .ui-icon {
-       background-image: url("images/ui-icons_cd0a0a_256x240.png");
-}
-
-/* positioning */
-.ui-icon-blank { background-position: 16px 16px; }
-.ui-icon-carat-1-n { background-position: 0 0; }
-.ui-icon-carat-1-ne { background-position: -16px 0; }
-.ui-icon-carat-1-e { background-position: -32px 0; }
-.ui-icon-carat-1-se { background-position: -48px 0; }
-.ui-icon-carat-1-s { background-position: -64px 0; }
-.ui-icon-carat-1-sw { background-position: -80px 0; }
-.ui-icon-carat-1-w { background-position: -96px 0; }
-.ui-icon-carat-1-nw { background-position: -112px 0; }
-.ui-icon-carat-2-n-s { background-position: -128px 0; }
-.ui-icon-carat-2-e-w { background-position: -144px 0; }
-.ui-icon-triangle-1-n { background-position: 0 -16px; }
-.ui-icon-triangle-1-ne { background-position: -16px -16px; }
-.ui-icon-triangle-1-e { background-position: -32px -16px; }
-.ui-icon-triangle-1-se { background-position: -48px -16px; }
-.ui-icon-triangle-1-s { background-position: -64px -16px; }
-.ui-icon-triangle-1-sw { background-position: -80px -16px; }
-.ui-icon-triangle-1-w { background-position: -96px -16px; }
-.ui-icon-triangle-1-nw { background-position: -112px -16px; }
-.ui-icon-triangle-2-n-s { background-position: -128px -16px; }
-.ui-icon-triangle-2-e-w { background-position: -144px -16px; }
-.ui-icon-arrow-1-n { background-position: 0 -32px; }
-.ui-icon-arrow-1-ne { background-position: -16px -32px; }
-.ui-icon-arrow-1-e { background-position: -32px -32px; }
-.ui-icon-arrow-1-se { background-position: -48px -32px; }
-.ui-icon-arrow-1-s { background-position: -64px -32px; }
-.ui-icon-arrow-1-sw { background-position: -80px -32px; }
-.ui-icon-arrow-1-w { background-position: -96px -32px; }
-.ui-icon-arrow-1-nw { background-position: -112px -32px; }
-.ui-icon-arrow-2-n-s { background-position: -128px -32px; }
-.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }
-.ui-icon-arrow-2-e-w { background-position: -160px -32px; }
-.ui-icon-arrow-2-se-nw { background-position: -176px -32px; }
-.ui-icon-arrowstop-1-n { background-position: -192px -32px; }
-.ui-icon-arrowstop-1-e { background-position: -208px -32px; }
-.ui-icon-arrowstop-1-s { background-position: -224px -32px; }
-.ui-icon-arrowstop-1-w { background-position: -240px -32px; }
-.ui-icon-arrowthick-1-n { background-position: 0 -48px; }
-.ui-icon-arrowthick-1-ne { background-position: -16px -48px; }
-.ui-icon-arrowthick-1-e { background-position: -32px -48px; }
-.ui-icon-arrowthick-1-se { background-position: -48px -48px; }
-.ui-icon-arrowthick-1-s { background-position: -64px -48px; }
-.ui-icon-arrowthick-1-sw { background-position: -80px -48px; }
-.ui-icon-arrowthick-1-w { background-position: -96px -48px; }
-.ui-icon-arrowthick-1-nw { background-position: -112px -48px; }
-.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }
-.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }
-.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }
-.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }
-.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }
-.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }
-.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }
-.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }
-.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }
-.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }
-.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }
-.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }
-.ui-icon-arrowreturn-1-w { background-position: -64px -64px; }
-.ui-icon-arrowreturn-1-n { background-position: -80px -64px; }
-.ui-icon-arrowreturn-1-e { background-position: -96px -64px; }
-.ui-icon-arrowreturn-1-s { background-position: -112px -64px; }
-.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }
-.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }
-.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }
-.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }
-.ui-icon-arrow-4 { background-position: 0 -80px; }
-.ui-icon-arrow-4-diag { background-position: -16px -80px; }
-.ui-icon-extlink { background-position: -32px -80px; }
-.ui-icon-newwin { background-position: -48px -80px; }
-.ui-icon-refresh { background-position: -64px -80px; }
-.ui-icon-shuffle { background-position: -80px -80px; }
-.ui-icon-transfer-e-w { background-position: -96px -80px; }
-.ui-icon-transferthick-e-w { background-position: -112px -80px; }
-.ui-icon-folder-collapsed { background-position: 0 -96px; }
-.ui-icon-folder-open { background-position: -16px -96px; }
-.ui-icon-document { background-position: -32px -96px; }
-.ui-icon-document-b { background-position: -48px -96px; }
-.ui-icon-note { background-position: -64px -96px; }
-.ui-icon-mail-closed { background-position: -80px -96px; }
-.ui-icon-mail-open { background-position: -96px -96px; }
-.ui-icon-suitcase { background-position: -112px -96px; }
-.ui-icon-comment { background-position: -128px -96px; }
-.ui-icon-person { background-position: -144px -96px; }
-.ui-icon-print { background-position: -160px -96px; }
-.ui-icon-trash { background-position: -176px -96px; }
-.ui-icon-locked { background-position: -192px -96px; }
-.ui-icon-unlocked { background-position: -208px -96px; }
-.ui-icon-bookmark { background-position: -224px -96px; }
-.ui-icon-tag { background-position: -240px -96px; }
-.ui-icon-home { background-position: 0 -112px; }
-.ui-icon-flag { background-position: -16px -112px; }
-.ui-icon-calendar { background-position: -32px -112px; }
-.ui-icon-cart { background-position: -48px -112px; }
-.ui-icon-pencil { background-position: -64px -112px; }
-.ui-icon-clock { background-position: -80px -112px; }
-.ui-icon-disk { background-position: -96px -112px; }
-.ui-icon-calculator { background-position: -112px -112px; }
-.ui-icon-zoomin { background-position: -128px -112px; }
-.ui-icon-zoomout { background-position: -144px -112px; }
-.ui-icon-search { background-position: -160px -112px; }
-.ui-icon-wrench { background-position: -176px -112px; }
-.ui-icon-gear { background-position: -192px -112px; }
-.ui-icon-heart { background-position: -208px -112px; }
-.ui-icon-star { background-position: -224px -112px; }
-.ui-icon-link { background-position: -240px -112px; }
-.ui-icon-cancel { background-position: 0 -128px; }
-.ui-icon-plus { background-position: -16px -128px; }
-.ui-icon-plusthick { background-position: -32px -128px; }
-.ui-icon-minus { background-position: -48px -128px; }
-.ui-icon-minusthick { background-position: -64px -128px; }
-.ui-icon-close { background-position: -80px -128px; }
-.ui-icon-closethick { background-position: -96px -128px; }
-.ui-icon-key { background-position: -112px -128px; }
-.ui-icon-lightbulb { background-position: -128px -128px; }
-.ui-icon-scissors { background-position: -144px -128px; }
-.ui-icon-clipboard { background-position: -160px -128px; }
-.ui-icon-copy { background-position: -176px -128px; }
-.ui-icon-contact { background-position: -192px -128px; }
-.ui-icon-image { background-position: -208px -128px; }
-.ui-icon-video { background-position: -224px -128px; }
-.ui-icon-script { background-position: -240px -128px; }
-.ui-icon-alert { background-position: 0 -144px; }
-.ui-icon-info { background-position: -16px -144px; }
-.ui-icon-notice { background-position: -32px -144px; }
-.ui-icon-help { background-position: -48px -144px; }
-.ui-icon-check { background-position: -64px -144px; }
-.ui-icon-bullet { background-position: -80px -144px; }
-.ui-icon-radio-on { background-position: -96px -144px; }
-.ui-icon-radio-off { background-position: -112px -144px; }
-.ui-icon-pin-w { background-position: -128px -144px; }
-.ui-icon-pin-s { background-position: -144px -144px; }
-.ui-icon-play { background-position: 0 -160px; }
-.ui-icon-pause { background-position: -16px -160px; }
-.ui-icon-seek-next { background-position: -32px -160px; }
-.ui-icon-seek-prev { background-position: -48px -160px; }
-.ui-icon-seek-end { background-position: -64px -160px; }
-.ui-icon-seek-start { background-position: -80px -160px; }
-/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */
-.ui-icon-seek-first { background-position: -80px -160px; }
-.ui-icon-stop { background-position: -96px -160px; }
-.ui-icon-eject { background-position: -112px -160px; }
-.ui-icon-volume-off { background-position: -128px -160px; }
-.ui-icon-volume-on { background-position: -144px -160px; }
-.ui-icon-power { background-position: 0 -176px; }
-.ui-icon-signal-diag { background-position: -16px -176px; }
-.ui-icon-signal { background-position: -32px -176px; }
-.ui-icon-battery-0 { background-position: -48px -176px; }
-.ui-icon-battery-1 { background-position: -64px -176px; }
-.ui-icon-battery-2 { background-position: -80px -176px; }
-.ui-icon-battery-3 { background-position: -96px -176px; }
-.ui-icon-circle-plus { background-position: 0 -192px; }
-.ui-icon-circle-minus { background-position: -16px -192px; }
-.ui-icon-circle-close { background-position: -32px -192px; }
-.ui-icon-circle-triangle-e { background-position: -48px -192px; }
-.ui-icon-circle-triangle-s { background-position: -64px -192px; }
-.ui-icon-circle-triangle-w { background-position: -80px -192px; }
-.ui-icon-circle-triangle-n { background-position: -96px -192px; }
-.ui-icon-circle-arrow-e { background-position: -112px -192px; }
-.ui-icon-circle-arrow-s { background-position: -128px -192px; }
-.ui-icon-circle-arrow-w { background-position: -144px -192px; }
-.ui-icon-circle-arrow-n { background-position: -160px -192px; }
-.ui-icon-circle-zoomin { background-position: -176px -192px; }
-.ui-icon-circle-zoomout { background-position: -192px -192px; }
-.ui-icon-circle-check { background-position: -208px -192px; }
-.ui-icon-circlesmall-plus { background-position: 0 -208px; }
-.ui-icon-circlesmall-minus { background-position: -16px -208px; }
-.ui-icon-circlesmall-close { background-position: -32px -208px; }
-.ui-icon-squaresmall-plus { background-position: -48px -208px; }
-.ui-icon-squaresmall-minus { background-position: -64px -208px; }
-.ui-icon-squaresmall-close { background-position: -80px -208px; }
-.ui-icon-grip-dotted-vertical { background-position: 0 -224px; }
-.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }
-.ui-icon-grip-solid-vertical { background-position: -32px -224px; }
-.ui-icon-grip-solid-horizontal { background-position: -48px -224px; }
-.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }
-.ui-icon-grip-diagonal-se { background-position: -80px -224px; }
-
-
-/* Misc visuals
-----------------------------------*/
-
-/* Corner radius */
-.ui-corner-all,
-.ui-corner-top,
-.ui-corner-left,
-.ui-corner-tl {
-       border-top-left-radius: 4px;
-}
-.ui-corner-all,
-.ui-corner-top,
-.ui-corner-right,
-.ui-corner-tr {
-       border-top-right-radius: 4px;
-}
-.ui-corner-all,
-.ui-corner-bottom,
-.ui-corner-left,
-.ui-corner-bl {
-       border-bottom-left-radius: 4px;
-}
-.ui-corner-all,
-.ui-corner-bottom,
-.ui-corner-right,
-.ui-corner-br {
-       border-bottom-right-radius: 4px;
-}
-
-/* Overlays */
-.ui-widget-overlay {
-       background: #aaaaaa url("images/ui-bg_flat_0_aaaaaa_40x100.png") 50% 50% repeat-x;
-       opacity: .3;
-       filter: Alpha(Opacity=30); /* support: IE8 */
-}
-.ui-widget-shadow {
-       margin: -8px 0 0 -8px;
-       padding: 8px;
-       background: #aaaaaa url("images/ui-bg_flat_0_aaaaaa_40x100.png") 50% 50% repeat-x;
-       opacity: .3;
-       filter: Alpha(Opacity=30); /* support: IE8 */
-       border-radius: 8px;
-}
diff --git a/src/main/resources/META-INF/resources/designer/lib/jquery-ui-1.11.3.custom/jquery-ui.js b/src/main/resources/META-INF/resources/designer/lib/jquery-ui-1.11.3.custom/jquery-ui.js
deleted file mode 100644 (file)
index 583a1b2..0000000
+++ /dev/null
@@ -1,16608 +0,0 @@
-/*! jQuery UI - v1.11.3 - 2015-03-01
-* http://jqueryui.com
-* 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, effect.js, effect-blind.js, effect-bounce.js, effect-clip.js, effect-drop.js, effect-explode.js, effect-fade.js, effect-fold.js, effect-highlight.js, effect-puff.js, effect-pulsate.js, effect-scale.js, effect-shake.js, effect-size.js, effect-slide.js, effect-transfer.js
-* Copyright 2015 jQuery Foundation and other contributors; Licensed MIT */
-
-(function( factory ) {
-       if ( typeof define === "function" && define.amd ) {
-
-               // AMD. Register as an anonymous module.
-               define([ "jquery" ], factory );
-       } else {
-
-               // Browser globals
-               factory( jQuery );
-       }
-}(function( $ ) {
-/*!
- * jQuery UI Core 1.11.3
- * http://jqueryui.com
- *
- * Copyright jQuery Foundation and other contributors
- * Released under the MIT license.
- * http://jquery.org/license
- *
- * http://api.jqueryui.com/category/ui-core/
- */
-
-
-// $.ui might exist from components with no dependencies, e.g., $.ui.position
-$.ui = $.ui || {};
-
-$.extend( $.ui, {
-       version: "1.11.3",
-
-       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
-       }
-});
-
-// plugins
-$.fn.extend({
-       scrollParent: function( includeHidden ) {
-               var position = this.css( "position" ),
-                       excludeStaticParent = position === "absolute",
-                       overflowRegex = includeHidden ? /(auto|scroll|hidden)/ : /(auto|scroll)/,
-                       scrollParent = this.parents().filter( function() {
-                               var parent = $( this );
-                               if ( excludeStaticParent && parent.css( "position" ) === "static" ) {
-                                       return false;
-                               }
-                               return overflowRegex.test( parent.css( "overflow" ) + parent.css( "overflow-y" ) + parent.css( "overflow-x" ) );
-                       }).eq( 0 );
-
-               return position === "fixed" || !scrollParent.length ? $( this[ 0 ].ownerDocument || document ) : scrollParent;
-       },
-
-       uniqueId: (function() {
-               var uuid = 0;
-
-               return function() {
-                       return this.each(function() {
-                               if ( !this.id ) {
-                                       this.id = "ui-id-" + ( ++uuid );
-                               }
-                       });
-               };
-       })(),
-
-       removeUniqueId: function() {
-               return this.each(function() {
-                       if ( /^ui-id-\d+$/.test( this.id ) ) {
-                               $( this ).removeAttr( "id" );
-                       }
-               });
-       }
-});
-
-// selectors
-function focusable( element, isTabIndexNotNaN ) {
-       var map, mapName, img,
-               nodeName = element.nodeName.toLowerCase();
-       if ( "area" === nodeName ) {
-               map = element.parentNode;
-               mapName = map.name;
-               if ( !element.href || !mapName || map.nodeName.toLowerCase() !== "map" ) {
-                       return false;
-               }
-               img = $( "img[usemap='#" + mapName + "']" )[ 0 ];
-               return !!img && visible( img );
-       }
-       return ( /^(input|select|textarea|button|object)$/.test( nodeName ) ?
-               !element.disabled :
-               "a" === nodeName ?
-                       element.href || isTabIndexNotNaN :
-                       isTabIndexNotNaN) &&
-               // the element and all of its ancestors must be visible
-               visible( element );
-}
-
-function visible( element ) {
-       return $.expr.filters.visible( element ) &&
-               !$( element ).parents().addBack().filter(function() {
-                       return $.css( this, "visibility" ) === "hidden";
-               }).length;
-}
-
-$.extend( $.expr[ ":" ], {
-       data: $.expr.createPseudo ?
-               $.expr.createPseudo(function( dataName ) {
-                       return function( elem ) {
-                               return !!$.data( elem, dataName );
-                       };
-               }) :
-               // support: jQuery <1.8
-               function( elem, i, match ) {
-                       return !!$.data( elem, match[ 3 ] );
-               },
-
-       focusable: function( element ) {
-               return focusable( element, !isNaN( $.attr( element, "tabindex" ) ) );
-       },
-
-       tabbable: function( element ) {
-               var tabIndex = $.attr( element, "tabindex" ),
-                       isTabIndexNaN = isNaN( tabIndex );
-               return ( isTabIndexNaN || tabIndex >= 0 ) && focusable( element, !isTabIndexNaN );
-       }
-});
-
-// support: jQuery <1.8
-if ( !$( "<a>" ).outerWidth( 1 ).jquery ) {
-       $.each( [ "Width", "Height" ], function( i, name ) {
-               var side = name === "Width" ? [ "Left", "Right" ] : [ "Top", "Bottom" ],
-                       type = name.toLowerCase(),
-                       orig = {
-                               innerWidth: $.fn.innerWidth,
-                               innerHeight: $.fn.innerHeight,
-                               outerWidth: $.fn.outerWidth,
-                               outerHeight: $.fn.outerHeight
-                       };
-
-               function reduce( elem, size, border, margin ) {
-                       $.each( side, function() {
-                               size -= parseFloat( $.css( elem, "padding" + this ) ) || 0;
-                               if ( border ) {
-                                       size -= parseFloat( $.css( elem, "border" + this + "Width" ) ) || 0;
-                               }
-                               if ( margin ) {
-                                       size -= parseFloat( $.css( elem, "margin" + this ) ) || 0;
-                               }
-                       });
-                       return size;
-               }
-
-               $.fn[ "inner" + name ] = function( size ) {
-                       if ( size === undefined ) {
-                               return orig[ "inner" + name ].call( this );
-                       }
-
-                       return this.each(function() {
-                               $( this ).css( type, reduce( this, size ) + "px" );
-                       });
-               };
-
-               $.fn[ "outer" + name] = function( size, margin ) {
-                       if ( typeof size !== "number" ) {
-                               return orig[ "outer" + name ].call( this, size );
-                       }
-
-                       return this.each(function() {
-                               $( this).css( type, reduce( this, size, true, margin ) + "px" );
-                       });
-               };
-       });
-}
-
-// support: jQuery <1.8
-if ( !$.fn.addBack ) {
-       $.fn.addBack = function( selector ) {
-               return this.add( selector == null ?
-                       this.prevObject : this.prevObject.filter( selector )
-               );
-       };
-}
-
-// support: jQuery 1.6.1, 1.6.2 (http://bugs.jquery.com/ticket/9413)
-if ( $( "<a>" ).data( "a-b", "a" ).removeData( "a-b" ).data( "a-b" ) ) {
-       $.fn.removeData = (function( removeData ) {
-               return function( key ) {
-                       if ( arguments.length ) {
-                               return removeData.call( this, $.camelCase( key ) );
-                       } else {
-                               return removeData.call( this );
-                       }
-               };
-       })( $.fn.removeData );
-}
-
-// deprecated
-$.ui.ie = !!/msie [\w.]+/.exec( navigator.userAgent.toLowerCase() );
-
-$.fn.extend({
-       focus: (function( orig ) {
-               return function( delay, fn ) {
-                       return typeof delay === "number" ?
-                               this.each(function() {
-                                       var elem = this;
-                                       setTimeout(function() {
-                                               $( elem ).focus();
-                                               if ( fn ) {
-                                                       fn.call( elem );
-                                               }
-                                       }, delay );
-                               }) :
-                               orig.apply( this, arguments );
-               };
-       })( $.fn.focus ),
-
-       disableSelection: (function() {
-               var eventType = "onselectstart" in document.createElement( "div" ) ?
-                       "selectstart" :
-                       "mousedown";
-
-               return function() {
-                       return this.bind( eventType + ".ui-disableSelection", function( event ) {
-                               event.preventDefault();
-                       });
-               };
-       })(),
-
-       enableSelection: function() {
-               return this.unbind( ".ui-disableSelection" );
-       },
-
-       zIndex: function( zIndex ) {
-               if ( zIndex !== undefined ) {
-                       return this.css( "zIndex", zIndex );
-               }
-
-               if ( this.length ) {
-                       var elem = $( this[ 0 ] ), position, value;
-                       while ( elem.length && elem[ 0 ] !== document ) {
-                               // Ignore z-index if position is set to a value where z-index is ignored by the browser
-                               // This makes behavior of this function consistent across browsers
-                               // WebKit always returns auto if the element is positioned
-                               position = elem.css( "position" );
-                               if ( position === "absolute" || position === "relative" || position === "fixed" ) {
-                                       // IE returns 0 when zIndex is not specified
-                                       // other browsers return a string
-                                       // we ignore the case of nested elements with an explicit value of 0
-                                       // <div style="z-index: -10;"><div style="z-index: 0;"></div></div>
-                                       value = parseInt( elem.css( "zIndex" ), 10 );
-                                       if ( !isNaN( value ) && value !== 0 ) {
-                                               return value;
-                                       }
-                               }
-                               elem = elem.parent();
-                       }
-               }
-
-               return 0;
-       }
-});
-
-// $.ui.plugin is deprecated. Use $.widget() extensions instead.
-$.ui.plugin = {
-       add: function( module, option, set ) {
-               var i,
-                       proto = $.ui[ module ].prototype;
-               for ( i in set ) {
-                       proto.plugins[ i ] = proto.plugins[ i ] || [];
-                       proto.plugins[ i ].push( [ option, set[ i ] ] );
-               }
-       },
-       call: function( instance, name, args, allowDisconnected ) {
-               var i,
-                       set = instance.plugins[ name ];
-
-               if ( !set ) {
-                       return;
-               }
-
-               if ( !allowDisconnected && ( !instance.element[ 0 ].parentNode || instance.element[ 0 ].parentNode.nodeType === 11 ) ) {
-                       return;
-               }
-
-               for ( i = 0; i < set.length; i++ ) {
-                       if ( instance.options[ set[ i ][ 0 ] ] ) {
-                               set[ i ][ 1 ].apply( instance.element, args );
-                       }
-               }
-       }
-};
-
-
-/*!
- * jQuery UI Widget 1.11.3
- * http://jqueryui.com
- *
- * Copyright jQuery Foundation and other contributors
- * Released under the MIT license.
- * http://jquery.org/license
- *
- * http://api.jqueryui.com/jQuery.widget/
- */
-
-
-var widget_uuid = 0,
-       widget_slice = Array.prototype.slice;
-
-$.cleanData = (function( orig ) {
-       return function( elems ) {
-               var events, elem, i;
-               for ( i = 0; (elem = elems[i]) != null; i++ ) {
-                       try {
-
-                               // Only trigger remove when necessary to save time
-                               events = $._data( elem, "events" );
-                               if ( events && events.remove ) {
-                                       $( elem ).triggerHandler( "remove" );
-                               }
-
-                       // http://bugs.jquery.com/ticket/8235
-                       } catch ( e ) {}
-               }
-               orig( elems );
-       };
-})( $.cleanData );
-
-$.widget = function( name, base, prototype ) {
-       var fullName, existingConstructor, constructor, basePrototype,
-               // proxiedPrototype allows the provided prototype to remain unmodified
-               // so that it can be used as a mixin for multiple widgets (#8876)
-               proxiedPrototype = {},
-               namespace = name.split( "." )[ 0 ];
-
-       name = name.split( "." )[ 1 ];
-       fullName = namespace + "-" + name;
-
-       if ( !prototype ) {
-               prototype = base;
-               base = $.Widget;
-       }
-
-       // create selector for plugin
-       $.expr[ ":" ][ fullName.toLowerCase() ] = function( elem ) {
-               return !!$.data( elem, fullName );
-       };
-
-       $[ namespace ] = $[ namespace ] || {};
-       existingConstructor = $[ namespace ][ name ];
-       constructor = $[ namespace ][ name ] = function( options, element ) {
-               // allow instantiation without "new" keyword
-               if ( !this._createWidget ) {
-                       return new constructor( options, element );
-               }
-
-               // allow instantiation without initializing for simple inheritance
-               // must use "new" keyword (the code above always passes args)
-               if ( arguments.length ) {
-                       this._createWidget( options, element );
-               }
-       };
-       // extend with the existing constructor to carry over any static properties
-       $.extend( constructor, existingConstructor, {
-               version: prototype.version,
-               // copy the object used to create the prototype in case we need to
-               // redefine the widget later
-               _proto: $.extend( {}, prototype ),
-               // track widgets that inherit from this widget in case this widget is
-               // redefined after a widget inherits from it
-               _childConstructors: []
-       });
-
-       basePrototype = new base();
-       // we need to make the options hash a property directly on the new instance
-       // otherwise we'll modify the options hash on the prototype that we're
-       // inheriting from
-       basePrototype.options = $.widget.extend( {}, basePrototype.options );
-       $.each( prototype, function( prop, value ) {
-               if ( !$.isFunction( value ) ) {
-                       proxiedPrototype[ prop ] = value;
-                       return;
-               }
-               proxiedPrototype[ prop ] = (function() {
-                       var _super = function() {
-                                       return base.prototype[ prop ].apply( this, arguments );
-                               },
-                               _superApply = function( args ) {
-                                       return base.prototype[ prop ].apply( this, args );
-                               };
-                       return function() {
-                               var __super = this._super,
-                                       __superApply = this._superApply,
-                                       returnValue;
-
-                               this._super = _super;
-                               this._superApply = _superApply;
-
-                               returnValue = value.apply( this, arguments );
-
-                               this._super = __super;
-                               this._superApply = __superApply;
-
-                               return returnValue;
-                       };
-               })();
-       });
-       constructor.prototype = $.widget.extend( basePrototype, {
-               // TODO: remove support for widgetEventPrefix
-               // always use the name + a colon as the prefix, e.g., draggable:start
-               // don't prefix for widgets that aren't DOM-based
-               widgetEventPrefix: existingConstructor ? (basePrototype.widgetEventPrefix || name) : name
-       }, proxiedPrototype, {
-               constructor: constructor,
-               namespace: namespace,
-               widgetName: name,
-               widgetFullName: fullName
-       });
-
-       // If this widget is being redefined then we need to find all widgets that
-       // are inheriting from it and redefine all of them so that they inherit from
-       // the new version of this widget. We're essentially trying to replace one
-       // level in the prototype chain.
-       if ( existingConstructor ) {
-               $.each( existingConstructor._childConstructors, function( i, child ) {
-                       var childPrototype = child.prototype;
-
-                       // redefine the child widget using the same prototype that was
-                       // originally used, but inherit from the new version of the base
-                       $.widget( childPrototype.namespace + "." + childPrototype.widgetName, constructor, child._proto );
-               });
-               // remove the list of existing child constructors from the old constructor
-               // so the old child constructors can be garbage collected
-               delete existingConstructor._childConstructors;
-       } else {
-               base._childConstructors.push( constructor );
-       }
-
-       $.widget.bridge( name, constructor );
-
-       return constructor;
-};
-
-$.widget.extend = function( target ) {
-       var input = widget_slice.call( arguments, 1 ),
-               inputIndex = 0,
-               inputLength = input.length,
-               key,
-               value;
-       for ( ; inputIndex < inputLength; inputIndex++ ) {
-               for ( key in input[ inputIndex ] ) {
-                       value = input[ inputIndex ][ key ];
-                       if ( input[ inputIndex ].hasOwnProperty( key ) && value !== undefined ) {
-                               // Clone objects
-                               if ( $.isPlainObject( value ) ) {
-                                       target[ key ] = $.isPlainObject( target[ key ] ) ?
-                                               $.widget.extend( {}, target[ key ], value ) :
-                                               // Don't extend strings, arrays, etc. with objects
-                                               $.widget.extend( {}, value );
-                               // Copy everything else by reference
-                               } else {
-                                       target[ key ] = value;
-                               }
-                       }
-               }
-       }
-       return target;
-};
-
-$.widget.bridge = function( name, object ) {
-       var fullName = object.prototype.widgetFullName || name;
-       $.fn[ name ] = function( options ) {
-               var isMethodCall = typeof options === "string",
-                       args = widget_slice.call( arguments, 1 ),
-                       returnValue = this;
-
-               if ( isMethodCall ) {
-                       this.each(function() {
-                               var methodValue,
-                                       instance = $.data( this, fullName );
-                               if ( options === "instance" ) {
-                                       returnValue = instance;
-                                       return false;
-                               }
-                               if ( !instance ) {
-                                       return $.error( "cannot call methods on " + name + " prior to initialization; " +
-                                               "attempted to call method '" + options + "'" );
-                               }
-                               if ( !$.isFunction( instance[options] ) || options.charAt( 0 ) === "_" ) {
-                                       return $.error( "no such method '" + options + "' for " + name + " widget instance" );
-                               }
-                               methodValue = instance[ options ].apply( instance, args );
-                               if ( methodValue !== instance && methodValue !== undefined ) {
-                                       returnValue = methodValue && methodValue.jquery ?
-                                               returnValue.pushStack( methodValue.get() ) :
-                                               methodValue;
-                                       return false;
-                               }
-                       });
-               } else {
-
-                       // Allow multiple hashes to be passed on init
-                       if ( args.length ) {
-                               options = $.widget.extend.apply( null, [ options ].concat(args) );
-                       }
-
-                       this.each(function() {
-                               var instance = $.data( this, fullName );
-                               if ( instance ) {
-                                       instance.option( options || {} );
-                                       if ( instance._init ) {
-                                               instance._init();
-                                       }
-                               } else {
-                                       $.data( this, fullName, new object( options, this ) );
-                               }
-                       });
-               }
-
-               return returnValue;
-       };
-};
-
-$.Widget = function( /* options, element */ ) {};
-$.Widget._childConstructors = [];
-
-$.Widget.prototype = {
-       widgetName: "widget",
-       widgetEventPrefix: "",
-       defaultElement: "<div>",
-       options: {
-               disabled: false,
-
-               // callbacks
-               create: null
-       },
-       _createWidget: function( options, element ) {
-               element = $( element || this.defaultElement || this )[ 0 ];
-               this.element = $( element );
-               this.uuid = widget_uuid++;
-               this.eventNamespace = "." + this.widgetName + this.uuid;
-
-               this.bindings = $();
-               this.hoverable = $();
-               this.focusable = $();
-
-               if ( element !== this ) {
-                       $.data( element, this.widgetFullName, this );
-                       this._on( true, this.element, {
-                               remove: function( event ) {
-                                       if ( event.target === element ) {
-                                               this.destroy();
-                                       }
-                               }
-                       });
-                       this.document = $( element.style ?
-                               // element within the document
-                               element.ownerDocument :
-                               // element is window or document
-                               element.document || element );
-                       this.window = $( this.document[0].defaultView || this.document[0].parentWindow );
-               }
-
-               this.options = $.widget.extend( {},
-                       this.options,
-                       this._getCreateOptions(),
-                       options );
-
-               this._create();
-               this._trigger( "create", null, this._getCreateEventData() );
-               this._init();
-       },
-       _getCreateOptions: $.noop,
-       _getCreateEventData: $.noop,
-       _create: $.noop,
-       _init: $.noop,
-
-       destroy: function() {
-               this._destroy();
-               // we can probably remove the unbind calls in 2.0
-               // all event bindings should go through this._on()
-               this.element
-                       .unbind( this.eventNamespace )
-                       .removeData( this.widgetFullName )
-                       // support: jquery <1.6.3
-                       // http://bugs.jquery.com/ticket/9413
-                       .removeData( $.camelCase( this.widgetFullName ) );
-               this.widget()
-                       .unbind( this.eventNamespace )
-                       .removeAttr( "aria-disabled" )
-                       .removeClass(
-                               this.widgetFullName + "-disabled " +
-                               "ui-state-disabled" );
-
-               // clean up events and states
-               this.bindings.unbind( this.eventNamespace );
-               this.hoverable.removeClass( "ui-state-hover" );
-               this.focusable.removeClass( "ui-state-focus" );
-       },
-       _destroy: $.noop,
-
-       widget: function() {
-               return this.element;
-       },
-
-       option: function( key, value ) {
-               var options = key,
-                       parts,
-                       curOption,
-                       i;
-
-               if ( arguments.length === 0 ) {
-                       // don't return a reference to the internal hash
-                       return $.widget.extend( {}, this.options );
-               }
-
-               if ( typeof key === "string" ) {
-                       // handle nested keys, e.g., "foo.bar" => { foo: { bar: ___ } }
-                       options = {};
-                       parts = key.split( "." );
-                       key = parts.shift();
-                       if ( parts.length ) {
-                               curOption = options[ key ] = $.widget.extend( {}, this.options[ key ] );
-                               for ( i = 0; i < parts.length - 1; i++ ) {
-                                       curOption[ parts[ i ] ] = curOption[ parts[ i ] ] || {};
-                                       curOption = curOption[ parts[ i ] ];
-                               }
-                               key = parts.pop();
-                               if ( arguments.length === 1 ) {
-                                       return curOption[ key ] === undefined ? null : curOption[ key ];
-                               }
-                               curOption[ key ] = value;
-                       } else {
-                               if ( arguments.length === 1 ) {
-                                       return this.options[ key ] === undefined ? null : this.options[ key ];
-                               }
-                               options[ key ] = value;
-                       }
-               }
-
-               this._setOptions( options );
-
-               return this;
-       },
-       _setOptions: function( options ) {
-               var key;
-
-               for ( key in options ) {
-                       this._setOption( key, options[ key ] );
-               }
-
-               return this;
-       },
-       _setOption: function( key, value ) {
-               this.options[ key ] = value;
-
-               if ( key === "disabled" ) {
-                       this.widget()
-                               .toggleClass( this.widgetFullName + "-disabled", !!value );
-
-                       // If the widget is becoming disabled, then nothing is interactive
-                       if ( value ) {
-                               this.hoverable.removeClass( "ui-state-hover" );
-                               this.focusable.removeClass( "ui-state-focus" );
-                       }
-               }
-
-               return this;
-       },
-
-       enable: function() {
-               return this._setOptions({ disabled: false });
-       },
-       disable: function() {
-               return this._setOptions({ disabled: true });
-       },
-
-       _on: function( suppressDisabledCheck, element, handlers ) {
-               var delegateElement,
-                       instance = this;
-
-               // no suppressDisabledCheck flag, shuffle arguments
-               if ( typeof suppressDisabledCheck !== "boolean" ) {
-                       handlers = element;
-                       element = suppressDisabledCheck;
-                       suppressDisabledCheck = false;
-               }
-
-               // no element argument, shuffle and use this.element
-               if ( !handlers ) {
-                       handlers = element;
-                       element = this.element;
-                       delegateElement = this.widget();
-               } else {
-                       element = delegateElement = $( element );
-                       this.bindings = this.bindings.add( element );
-               }
-
-               $.each( handlers, function( event, handler ) {
-                       function handlerProxy() {
-                               // allow widgets to customize the disabled handling
-                               // - disabled as an array instead of boolean
-                               // - disabled class as method for disabling individual parts
-                               if ( !suppressDisabledCheck &&
-                                               ( instance.options.disabled === true ||
-                                                       $( this ).hasClass( "ui-state-disabled" ) ) ) {
-                                       return;
-                               }
-                               return ( typeof handler === "string" ? instance[ handler ] : handler )
-                                       .apply( instance, arguments );
-                       }
-
-                       // copy the guid so direct unbinding works
-                       if ( typeof handler !== "string" ) {
-                               handlerProxy.guid = handler.guid =
-                                       handler.guid || handlerProxy.guid || $.guid++;
-                       }
-
-                       var match = event.match( /^([\w:-]*)\s*(.*)$/ ),
-                               eventName = match[1] + instance.eventNamespace,
-                               selector = match[2];
-                       if ( selector ) {
-                               delegateElement.delegate( selector, eventName, handlerProxy );
-                       } else {
-                               element.bind( eventName, handlerProxy );
-                       }
-               });
-       },
-
-       _off: function( element, eventName ) {
-               eventName = (eventName || "").split( " " ).join( this.eventNamespace + " " ) +
-                       this.eventNamespace;
-               element.unbind( eventName ).undelegate( eventName );
-
-               // Clear the stack to avoid memory leaks (#10056)
-               this.bindings = $( this.bindings.not( element ).get() );
-               this.focusable = $( this.focusable.not( element ).get() );
-               this.hoverable = $( this.hoverable.not( element ).get() );
-       },
-
-       _delay: function( handler, delay ) {
-               function handlerProxy() {
-                       return ( typeof handler === "string" ? instance[ handler ] : handler )
-                               .apply( instance, arguments );
-               }
-               var instance = this;
-               return setTimeout( handlerProxy, delay || 0 );
-       },
-
-       _hoverable: function( element ) {
-               this.hoverable = this.hoverable.add( element );
-               this._on( element, {
-                       mouseenter: function( event ) {
-                               $( event.currentTarget ).addClass( "ui-state-hover" );
-                       },
-                       mouseleave: function( event ) {
-                               $( event.currentTarget ).removeClass( "ui-state-hover" );
-                       }
-               });
-       },
-
-       _focusable: function( element ) {
-               this.focusable = this.focusable.add( element );
-               this._on( element, {
-                       focusin: function( event ) {
-                               $( event.currentTarget ).addClass( "ui-state-focus" );
-                       },
-                       focusout: function( event ) {
-                               $( event.currentTarget ).removeClass( "ui-state-focus" );
-                       }
-               });
-       },
-
-       _trigger: function( type, event, data ) {
-               var prop, orig,
-                       callback = this.options[ type ];
-
-               data = data || {};
-               event = $.Event( event );
-               event.type = ( type === this.widgetEventPrefix ?
-                       type :
-                       this.widgetEventPrefix + type ).toLowerCase();
-               // the original event may come from any element
-               // so we need to reset the target on the new event
-               event.target = this.element[ 0 ];
-
-               // copy original event properties over to the new event
-               orig = event.originalEvent;
-               if ( orig ) {
-                       for ( prop in orig ) {
-                               if ( !( prop in event ) ) {
-                                       event[ prop ] = orig[ prop ];
-                               }
-                       }
-               }
-
-               this.element.trigger( event, data );
-               return !( $.isFunction( callback ) &&
-                       callback.apply( this.element[0], [ event ].concat( data ) ) === false ||
-                       event.isDefaultPrevented() );
-       }
-};
-
-$.each( { show: "fadeIn", hide: "fadeOut" }, function( method, defaultEffect ) {
-       $.Widget.prototype[ "_" + method ] = function( element, options, callback ) {
-               if ( typeof options === "string" ) {
-                       options = { effect: options };
-               }
-               var hasOptions,
-                       effectName = !options ?
-                               method :
-                               options === true || typeof options === "number" ?
-                                       defaultEffect :
-                                       options.effect || defaultEffect;
-               options = options || {};
-               if ( typeof options === "number" ) {
-                       options = { duration: options };
-               }
-               hasOptions = !$.isEmptyObject( options );
-               options.complete = callback;
-               if ( options.delay ) {
-                       element.delay( options.delay );
-               }
-               if ( hasOptions && $.effects && $.effects.effect[ effectName ] ) {
-                       element[ method ]( options );
-               } else if ( effectName !== method && element[ effectName ] ) {
-                       element[ effectName ]( options.duration, options.easing, callback );
-               } else {
-                       element.queue(function( next ) {
-                               $( this )[ method ]();
-                               if ( callback ) {
-                                       callback.call( element[ 0 ] );
-                               }
-                               next();
-                       });
-               }
-       };
-});
-
-var widget = $.widget;
-
-
-/*!
- * jQuery UI Mouse 1.11.3
- * http://jqueryui.com
- *
- * Copyright jQuery Foundation and other contributors
- * Released under the MIT license.
- * http://jquery.org/license
- *
- * http://api.jqueryui.com/mouse/
- */
-
-
-var mouseHandled = false;
-$( document ).mouseup( function() {
-       mouseHandled = false;
-});
-
-var mouse = $.widget("ui.mouse", {
-       version: "1.11.3",
-       options: {
-               cancel: "input,textarea,button,select,option",
-               distance: 1,
-               delay: 0
-       },
-       _mouseInit: function() {
-               var that = this;
-
-               this.element
-                       .bind("mousedown." + this.widgetName, function(event) {
-                               return that._mouseDown(event);
-                       })
-                       .bind("click." + this.widgetName, function(event) {
-                               if (true === $.data(event.target, that.widgetName + ".preventClickEvent")) {
-                                       $.removeData(event.target, that.widgetName + ".preventClickEvent");
-                                       event.stopImmediatePropagation();
-                                       return false;
-                               }
-                       });
-
-               this.started = false;
-       },
-
-       // TODO: make sure destroying one instance of mouse doesn't mess with
-       // other instances of mouse
-       _mouseDestroy: function() {
-               this.element.unbind("." + this.widgetName);
-               if ( this._mouseMoveDelegate ) {
-                       this.document
-                               .unbind("mousemove." + this.widgetName, this._mouseMoveDelegate)
-                               .unbind("mouseup." + this.widgetName, this._mouseUpDelegate);
-               }
-       },
-
-       _mouseDown: function(event) {
-               // don't let more than one widget handle mouseStart
-               if ( mouseHandled ) {
-                       return;
-               }
-
-               this._mouseMoved = false;
-
-               // we may have missed mouseup (out of window)
-               (this._mouseStarted && this._mouseUp(event));
-
-               this._mouseDownEvent = event;
-
-               var that = this,
-                       btnIsLeft = (event.which === 1),
-                       // event.target.nodeName works around a bug in IE 8 with
-                       // disabled inputs (#7620)
-                       elIsCancel = (typeof this.options.cancel === "string" && event.target.nodeName ? $(event.target).closest(this.options.cancel).length : false);
-               if (!btnIsLeft || elIsCancel || !this._mouseCapture(event)) {
-                       return true;
-               }
-
-               this.mouseDelayMet = !this.options.delay;
-               if (!this.mouseDelayMet) {
-                       this._mouseDelayTimer = setTimeout(function() {
-                               that.mouseDelayMet = true;
-                       }, this.options.delay);
-               }
-
-               if (this._mouseDistanceMet(event) && this._mouseDelayMet(event)) {
-                       this._mouseStarted = (this._mouseStart(event) !== false);
-                       if (!this._mouseStarted) {
-                               event.preventDefault();
-                               return true;
-                       }
-               }
-
-               // Click event may never have fired (Gecko & Opera)
-               if (true === $.data(event.target, this.widgetName + ".preventClickEvent")) {
-                       $.removeData(event.target, this.widgetName + ".preventClickEvent");
-               }
-
-               // these delegates are required to keep context
-               this._mouseMoveDelegate = function(event) {
-                       return that._mouseMove(event);
-               };
-               this._mouseUpDelegate = function(event) {
-                       return that._mouseUp(event);
-               };
-
-               this.document
-                       .bind( "mousemove." + this.widgetName, this._mouseMoveDelegate )
-                       .bind( "mouseup." + this.widgetName, this._mouseUpDelegate );
-
-               event.preventDefault();
-
-               mouseHandled = true;
-               return true;
-       },
-
-       _mouseMove: function(event) {
-               // Only check for mouseups outside the document if you've moved inside the document
-               // at least once. This prevents the firing of mouseup in the case of IE<9, which will
-               // fire a mousemove event if content is placed under the cursor. See #7778
-               // Support: IE <9
-               if ( this._mouseMoved ) {
-                       // IE mouseup check - mouseup happened when mouse was out of window
-                       if ($.ui.ie && ( !document.documentMode || document.documentMode < 9 ) && !event.button) {
-                               return this._mouseUp(event);
-
-                       // Iframe mouseup check - mouseup occurred in another document
-                       } else if ( !event.which ) {
-                               return this._mouseUp( event );
-                       }
-               }
-
-               if ( event.which || event.button ) {
-                       this._mouseMoved = true;
-               }
-
-               if (this._mouseStarted) {
-                       this._mouseDrag(event);
-                       return event.preventDefault();
-               }
-
-               if (this._mouseDistanceMet(event) && this._mouseDelayMet(event)) {
-                       this._mouseStarted =
-                               (this._mouseStart(this._mouseDownEvent, event) !== false);
-                       (this._mouseStarted ? this._mouseDrag(event) : this._mouseUp(event));
-               }
-
-               return !this._mouseStarted;
-       },
-
-       _mouseUp: function(event) {
-               this.document
-                       .unbind( "mousemove." + this.widgetName, this._mouseMoveDelegate )
-                       .unbind( "mouseup." + this.widgetName, this._mouseUpDelegate );
-
-               if (this._mouseStarted) {
-                       this._mouseStarted = false;
-
-                       if (event.target === this._mouseDownEvent.target) {
-                               $.data(event.target, this.widgetName + ".preventClickEvent", true);
-                       }
-
-                       this._mouseStop(event);
-               }
-
-               mouseHandled = false;
-               return false;
-       },
-
-       _mouseDistanceMet: function(event) {
-               return (Math.max(
-                               Math.abs(this._mouseDownEvent.pageX - event.pageX),
-                               Math.abs(this._mouseDownEvent.pageY - event.pageY)
-                       ) >= this.options.distance
-               );
-       },
-
-       _mouseDelayMet: function(/* event */) {
-               return this.mouseDelayMet;
-       },
-
-       // These are placeholder methods, to be overriden by extending plugin
-       _mouseStart: function(/* event */) {},
-       _mouseDrag: function(/* event */) {},
-       _mouseStop: function(/* event */) {},
-       _mouseCapture: function(/* event */) { return true; }
-});
-
-
-/*!
- * jQuery UI Position 1.11.3
- * http://jqueryui.com
- *
- * Copyright jQuery Foundation and other contributors
- * Released under the MIT license.
- * http://jquery.org/license
- *
- * http://api.jqueryui.com/position/
- */
-
-(function() {
-
-$.ui = $.ui || {};
-
-var cachedScrollbarWidth, supportsOffsetFractions,
-       max = Math.max,
-       abs = Math.abs,
-       round = Math.round,
-       rhorizontal = /left|center|right/,
-       rvertical = /top|center|bottom/,
-       roffset = /[\+\-]\d+(\.[\d]+)?%?/,
-       rposition = /^\w+/,
-       rpercent = /%$/,
-       _position = $.fn.position;
-
-function getOffsets( offsets, width, height ) {
-       return [
-               parseFloat( offsets[ 0 ] ) * ( rpercent.test( offsets[ 0 ] ) ? width / 100 : 1 ),
-               parseFloat( offsets[ 1 ] ) * ( rpercent.test( offsets[ 1 ] ) ? height / 100 : 1 )
-       ];
-}
-
-function parseCss( element, property ) {
-       return parseInt( $.css( element, property ), 10 ) || 0;
-}
-
-function getDimensions( elem ) {
-       var raw = elem[0];
-       if ( raw.nodeType === 9 ) {
-               return {
-                       width: elem.width(),
-                       height: elem.height(),
-                       offset: { top: 0, left: 0 }
-               };
-       }
-       if ( $.isWindow( raw ) ) {
-               return {
-                       width: elem.width(),
-                       height: elem.height(),
-                       offset: { top: elem.scrollTop(), left: elem.scrollLeft() }
-               };
-       }
-       if ( raw.preventDefault ) {
-               return {
-                       width: 0,
-                       height: 0,
-                       offset: { top: raw.pageY, left: raw.pageX }
-               };
-       }
-       return {
-               width: elem.outerWidth(),
-               height: elem.outerHeight(),
-               offset: elem.offset()
-       };
-}
-
-$.position = {
-       scrollbarWidth: function() {
-               if ( cachedScrollbarWidth !== undefined ) {
-                       return cachedScrollbarWidth;
-               }
-               var w1, w2,
-                       div = $( "<div style='display:block;position:absolute;width:50px;height:50px;overflow:hidden;'><div style='height:100px;width:auto;'></div></div>" ),
-                       innerDiv = div.children()[0];
-
-               $( "body" ).append( div );
-               w1 = innerDiv.offsetWidth;
-               div.css( "overflow", "scroll" );
-
-               w2 = innerDiv.offsetWidth;
-
-               if ( w1 === w2 ) {
-                       w2 = div[0].clientWidth;
-               }
-
-               div.remove();
-
-               return (cachedScrollbarWidth = w1 - w2);
-       },
-       getScrollInfo: function( within ) {
-               var overflowX = within.isWindow || within.isDocument ? "" :
-                               within.element.css( "overflow-x" ),
-                       overflowY = within.isWindow || within.isDocument ? "" :
-                               within.element.css( "overflow-y" ),
-                       hasOverflowX = overflowX === "scroll" ||
-                               ( overflowX === "auto" && within.width < within.element[0].scrollWidth ),
-                       hasOverflowY = overflowY === "scroll" ||
-                               ( overflowY === "auto" && within.height < within.element[0].scrollHeight );
-               return {
-                       width: hasOverflowY ? $.position.scrollbarWidth() : 0,
-                       height: hasOverflowX ? $.position.scrollbarWidth() : 0
-               };
-       },
-       getWithinInfo: function( element ) {
-               var withinElement = $( element || window ),
-                       isWindow = $.isWindow( withinElement[0] ),
-                       isDocument = !!withinElement[ 0 ] && withinElement[ 0 ].nodeType === 9;
-               return {
-                       element: withinElement,
-                       isWindow: isWindow,
-                       isDocument: isDocument,
-                       offset: withinElement.offset() || { left: 0, top: 0 },
-                       scrollLeft: withinElement.scrollLeft(),
-                       scrollTop: withinElement.scrollTop(),
-
-                       // support: jQuery 1.6.x
-                       // jQuery 1.6 doesn't support .outerWidth/Height() on documents or windows
-                       width: isWindow || isDocument ? withinElement.width() : withinElement.outerWidth(),
-                       height: isWindow || isDocument ? withinElement.height() : withinElement.outerHeight()
-               };
-       }
-};
-
-$.fn.position = function( options ) {
-       if ( !options || !options.of ) {
-               return _position.apply( this, arguments );
-       }
-
-       // make a copy, we don't want to modify arguments
-       options = $.extend( {}, options );
-
-       var atOffset, targetWidth, targetHeight, targetOffset, basePosition, dimensions,
-               target = $( options.of ),
-               within = $.position.getWithinInfo( options.within ),
-               scrollInfo = $.position.getScrollInfo( within ),
-               collision = ( options.collision || "flip" ).split( " " ),
-               offsets = {};
-
-       dimensions = getDimensions( target );
-       if ( target[0].preventDefault ) {
-               // force left top to allow flipping
-               options.at = "left top";
-       }
-       targetWidth = dimensions.width;
-       targetHeight = dimensions.height;
-       targetOffset = dimensions.offset;
-       // clone to reuse original targetOffset later
-       basePosition = $.extend( {}, targetOffset );
-
-       // force my and at to have valid horizontal and vertical positions
-       // if a value is missing or invalid, it will be converted to center
-       $.each( [ "my", "at" ], function() {
-               var pos = ( options[ this ] || "" ).split( " " ),
-                       horizontalOffset,
-                       verticalOffset;
-
-               if ( pos.length === 1) {
-                       pos = rhorizontal.test( pos[ 0 ] ) ?
-                               pos.concat( [ "center" ] ) :
-                               rvertical.test( pos[ 0 ] ) ?
-                                       [ "center" ].concat( pos ) :
-                                       [ "center", "center" ];
-               }
-               pos[ 0 ] = rhorizontal.test( pos[ 0 ] ) ? pos[ 0 ] : "center";
-               pos[ 1 ] = rvertical.test( pos[ 1 ] ) ? pos[ 1 ] : "center";
-
-               // calculate offsets
-               horizontalOffset = roffset.exec( pos[ 0 ] );
-               verticalOffset = roffset.exec( pos[ 1 ] );
-               offsets[ this ] = [
-                       horizontalOffset ? horizontalOffset[ 0 ] : 0,
-                       verticalOffset ? verticalOffset[ 0 ] : 0
-               ];
-
-               // reduce to just the positions without the offsets
-               options[ this ] = [
-                       rposition.exec( pos[ 0 ] )[ 0 ],
-                       rposition.exec( pos[ 1 ] )[ 0 ]
-               ];
-       });
-
-       // normalize collision option
-       if ( collision.length === 1 ) {
-               collision[ 1 ] = collision[ 0 ];
-       }
-
-       if ( options.at[ 0 ] === "right" ) {
-               basePosition.left += targetWidth;
-       } else if ( options.at[ 0 ] === "center" ) {
-               basePosition.left += targetWidth / 2;
-       }
-
-       if ( options.at[ 1 ] === "bottom" ) {
-               basePosition.top += targetHeight;
-       } else if ( options.at[ 1 ] === "center" ) {
-               basePosition.top += targetHeight / 2;
-       }
-
-       atOffset = getOffsets( offsets.at, targetWidth, targetHeight );
-       basePosition.left += atOffset[ 0 ];
-       basePosition.top += atOffset[ 1 ];
-
-       return this.each(function() {
-               var collisionPosition, using,
-                       elem = $( this ),
-                       elemWidth = elem.outerWidth(),
-                       elemHeight = elem.outerHeight(),
-                       marginLeft = parseCss( this, "marginLeft" ),
-                       marginTop = parseCss( this, "marginTop" ),
-                       collisionWidth = elemWidth + marginLeft + parseCss( this, "marginRight" ) + scrollInfo.width,
-                       collisionHeight = elemHeight + marginTop + parseCss( this, "marginBottom" ) + scrollInfo.height,
-                       position = $.extend( {}, basePosition ),
-                       myOffset = getOffsets( offsets.my, elem.outerWidth(), elem.outerHeight() );
-
-               if ( options.my[ 0 ] === "right" ) {
-                       position.left -= elemWidth;
-               } else if ( options.my[ 0 ] === "center" ) {
-                       position.left -= elemWidth / 2;
-               }
-
-               if ( options.my[ 1 ] === "bottom" ) {
-                       position.top -= elemHeight;
-               } else if ( options.my[ 1 ] === "center" ) {
-                       position.top -= elemHeight / 2;
-               }
-
-               position.left += myOffset[ 0 ];
-               position.top += myOffset[ 1 ];
-
-               // if the browser doesn't support fractions, then round for consistent results
-               if ( !supportsOffsetFractions ) {
-                       position.left = round( position.left );
-                       position.top = round( position.top );
-               }
-
-               collisionPosition = {
-                       marginLeft: marginLeft,
-                       marginTop: marginTop
-               };
-
-               $.each( [ "left", "top" ], function( i, dir ) {
-                       if ( $.ui.position[ collision[ i ] ] ) {
-                               $.ui.position[ collision[ i ] ][ dir ]( position, {
-                                       targetWidth: targetWidth,
-                                       targetHeight: targetHeight,
-                                       elemWidth: elemWidth,
-                                       elemHeight: elemHeight,
-                                       collisionPosition: collisionPosition,
-                                       collisionWidth: collisionWidth,
-                                       collisionHeight: collisionHeight,
-                                       offset: [ atOffset[ 0 ] + myOffset[ 0 ], atOffset [ 1 ] + myOffset[ 1 ] ],
-                                       my: options.my,
-                                       at: options.at,
-                                       within: within,
-                                       elem: elem
-                               });
-                       }
-               });
-
-               if ( options.using ) {
-                       // adds feedback as second argument to using callback, if present
-                       using = function( props ) {
-                               var left = targetOffset.left - position.left,
-                                       right = left + targetWidth - elemWidth,
-                                       top = targetOffset.top - position.top,
-                                       bottom = top + targetHeight - elemHeight,
-                                       feedback = {
-                                               target: {
-                                                       element: target,
-                                                       left: targetOffset.left,
-                                                       top: targetOffset.top,
-                                                       width: targetWidth,
-                                                       height: targetHeight
-                                               },
-                                               element: {
-                                                       element: elem,
-                                                       left: position.left,
-                                                       top: position.top,
-                                                       width: elemWidth,
-                                                       height: elemHeight
-                                               },
-                                               horizontal: right < 0 ? "left" : left > 0 ? "right" : "center",
-                                               vertical: bottom < 0 ? "top" : top > 0 ? "bottom" : "middle"
-                                       };
-                               if ( targetWidth < elemWidth && abs( left + right ) < targetWidth ) {
-                                       feedback.horizontal = "center";
-                               }
-                               if ( targetHeight < elemHeight && abs( top + bottom ) < targetHeight ) {
-                                       feedback.vertical = "middle";
-                               }
-                               if ( max( abs( left ), abs( right ) ) > max( abs( top ), abs( bottom ) ) ) {
-                                       feedback.important = "horizontal";
-                               } else {
-                                       feedback.important = "vertical";
-                               }
-                               options.using.call( this, props, feedback );
-                       };
-               }
-
-               elem.offset( $.extend( position, { using: using } ) );
-       });
-};
-
-$.ui.position = {
-       fit: {
-               left: function( position, data ) {
-                       var within = data.within,
-                               withinOffset = within.isWindow ? within.scrollLeft : within.offset.left,
-                               outerWidth = within.width,
-                               collisionPosLeft = position.left - data.collisionPosition.marginLeft,
-                               overLeft = withinOffset - collisionPosLeft,
-                               overRight = collisionPosLeft + data.collisionWidth - outerWidth - withinOffset,
-                               newOverRight;
-
-                       // element is wider than within
-                       if ( data.collisionWidth > outerWidth ) {
-                               // element is initially over the left side of within
-                               if ( overLeft > 0 && overRight <= 0 ) {
-                                       newOverRight = position.left + overLeft + data.collisionWidth - outerWidth - withinOffset;
-                                       position.left += overLeft - newOverRight;
-                               // element is initially over right side of within
-                               } else if ( overRight > 0 && overLeft <= 0 ) {
-                                       position.left = withinOffset;
-                               // element is initially over both left and right sides of within
-                               } else {
-                                       if ( overLeft > overRight ) {
-                                               position.left = withinOffset + outerWidth - data.collisionWidth;
-                                       } else {
-                                               position.left = withinOffset;
-                                       }
-                               }
-                       // too far left -> align with left edge
-                       } else if ( overLeft > 0 ) {
-                               position.left += overLeft;
-                       // too far right -> align with right edge
-                       } else if ( overRight > 0 ) {
-                               position.left -= overRight;
-                       // adjust based on position and margin
-                       } else {
-                               position.left = max( position.left - collisionPosLeft, position.left );
-                       }
-               },
-               top: function( position, data ) {
-                       var within = data.within,
-                               withinOffset = within.isWindow ? within.scrollTop : within.offset.top,
-                               outerHeight = data.within.height,
-                               collisionPosTop = position.top - data.collisionPosition.marginTop,
-                               overTop = withinOffset - collisionPosTop,
-                               overBottom = collisionPosTop + data.collisionHeight - outerHeight - withinOffset,
-                               newOverBottom;
-
-                       // element is taller than within
-                       if ( data.collisionHeight > outerHeight ) {
-                               // element is initially over the top of within
-                               if ( overTop > 0 && overBottom <= 0 ) {
-                                       newOverBottom = position.top + overTop + data.collisionHeight - outerHeight - withinOffset;
-                                       position.top += overTop - newOverBottom;
-                               // element is initially over bottom of within
-                               } else if ( overBottom > 0 && overTop <= 0 ) {
-                                       position.top = withinOffset;
-                               // element is initially over both top and bottom of within
-                               } else {
-                                       if ( overTop > overBottom ) {
-                                               position.top = withinOffset + outerHeight - data.collisionHeight;
-                                       } else {
-                                               position.top = withinOffset;
-                                       }
-                               }
-                       // too far up -> align with top
-                       } else if ( overTop > 0 ) {
-                               position.top += overTop;
-                       // too far down -> align with bottom edge
-                       } else if ( overBottom > 0 ) {
-                               position.top -= overBottom;
-                       // adjust based on position and margin
-                       } else {
-                               position.top = max( position.top - collisionPosTop, position.top );
-                       }
-               }
-       },
-       flip: {
-               left: function( position, data ) {
-                       var within = data.within,
-                               withinOffset = within.offset.left + within.scrollLeft,
-                               outerWidth = within.width,
-                               offsetLeft = within.isWindow ? within.scrollLeft : within.offset.left,
-                               collisionPosLeft = position.left - data.collisionPosition.marginLeft,
-                               overLeft = collisionPosLeft - offsetLeft,
-                               overRight = collisionPosLeft + data.collisionWidth - outerWidth - offsetLeft,
-                               myOffset = data.my[ 0 ] === "left" ?
-                                       -data.elemWidth :
-                                       data.my[ 0 ] === "right" ?
-                                               data.elemWidth :
-                                               0,
-                               atOffset = data.at[ 0 ] === "left" ?
-                                       data.targetWidth :
-                                       data.at[ 0 ] === "right" ?
-                                               -data.targetWidth :
-                                               0,
-                               offset = -2 * data.offset[ 0 ],
-                               newOverRight,
-                               newOverLeft;
-
-                       if ( overLeft < 0 ) {
-                               newOverRight = position.left + myOffset + atOffset + offset + data.collisionWidth - outerWidth - withinOffset;
-                               if ( newOverRight < 0 || newOverRight < abs( overLeft ) ) {
-                                       position.left += myOffset + atOffset + offset;
-                               }
-                       } else if ( overRight > 0 ) {
-                               newOverLeft = position.left - data.collisionPosition.marginLeft + myOffset + atOffset + offset - offsetLeft;
-                               if ( newOverLeft > 0 || abs( newOverLeft ) < overRight ) {
-                                       position.left += myOffset + atOffset + offset;
-                               }
-                       }
-               },
-               top: function( position, data ) {
-                       var within = data.within,
-                               withinOffset = within.offset.top + within.scrollTop,
-                               outerHeight = within.height,
-                               offsetTop = within.isWindow ? within.scrollTop : within.offset.top,
-                               collisionPosTop = position.top - data.collisionPosition.marginTop,
-                               overTop = collisionPosTop - offsetTop,
-                               overBottom = collisionPosTop + data.collisionHeight - outerHeight - offsetTop,
-                               top = data.my[ 1 ] === "top",
-                               myOffset = top ?
-                                       -data.elemHeight :
-                                       data.my[ 1 ] === "bottom" ?
-                                               data.elemHeight :
-                                               0,
-                               atOffset = data.at[ 1 ] === "top" ?
-                                       data.targetHeight :
-                                       data.at[ 1 ] === "bottom" ?
-                                               -data.targetHeight :
-                                               0,
-                               offset = -2 * data.offset[ 1 ],
-                               newOverTop,
-                               newOverBottom;
-                       if ( overTop < 0 ) {
-                               newOverBottom = position.top + myOffset + atOffset + offset + data.collisionHeight - outerHeight - withinOffset;
-                               if ( newOverBottom < 0 || newOverBottom < abs( overTop ) ) {
-                                       position.top += myOffset + atOffset + offset;
-                               }
-                       } else if ( overBottom > 0 ) {
-                               newOverTop = position.top - data.collisionPosition.marginTop + myOffset + atOffset + offset - offsetTop;
-                               if ( newOverTop > 0 || abs( newOverTop ) < overBottom ) {
-                                       position.top += myOffset + atOffset + offset;
-                               }
-                       }
-               }
-       },
-       flipfit: {
-               left: function() {
-                       $.ui.position.flip.left.apply( this, arguments );
-                       $.ui.position.fit.left.apply( this, arguments );
-               },
-               top: function() {
-                       $.ui.position.flip.top.apply( this, arguments );
-                       $.ui.position.fit.top.apply( this, arguments );
-               }
-       }
-};
-
-// fraction support test
-(function() {
-       var testElement, testElementParent, testElementStyle, offsetLeft, i,
-               body = document.getElementsByTagName( "body" )[ 0 ],
-               div = document.createElement( "div" );
-
-       //Create a "fake body" for testing based on method used in jQuery.support
-       testElement = document.createElement( body ? "div" : "body" );
-       testElementStyle = {
-               visibility: "hidden",
-               width: 0,
-               height: 0,
-               border: 0,
-               margin: 0,
-               background: "none"
-       };
-       if ( body ) {
-               $.extend( testElementStyle, {
-                       position: "absolute",
-                       left: "-1000px",
-                       top: "-1000px"
-               });
-       }
-       for ( i in testElementStyle ) {
-               testElement.style[ i ] = testElementStyle[ i ];
-       }
-       testElement.appendChild( div );
-       testElementParent = body || document.documentElement;
-       testElementParent.insertBefore( testElement, testElementParent.firstChild );
-
-       div.style.cssText = "position: absolute; left: 10.7432222px;";
-
-       offsetLeft = $( div ).offset().left;
-       supportsOffsetFractions = offsetLeft > 10 && offsetLeft < 11;
-
-       testElement.innerHTML = "";
-       testElementParent.removeChild( testElement );
-})();
-
-})();
-
-var position = $.ui.position;
-
-
-/*!
- * jQuery UI Draggable 1.11.3
- * http://jqueryui.com
- *
- * Copyright jQuery Foundation and other contributors
- * Released under the MIT license.
- * http://jquery.org/license
- *
- * http://api.jqueryui.com/draggable/
- */
-
-
-$.widget("ui.draggable", $.ui.mouse, {
-       version: "1.11.3",
-       widgetEventPrefix: "drag",
-       options: {
-               addClasses: true,
-               appendTo: "parent",
-               axis: false,
-               connectToSortable: false,
-               containment: false,
-               cursor: "auto",
-               cursorAt: false,
-               grid: false,
-               handle: false,
-               helper: "original",
-               iframeFix: false,
-               opacity: false,
-               refreshPositions: false,
-               revert: false,
-               revertDuration: 500,
-               scope: "default",
-               scroll: true,
-               scrollSensitivity: 20,
-               scrollSpeed: 20,
-               snap: false,
-               snapMode: "both",
-               snapTolerance: 20,
-               stack: false,
-               zIndex: false,
-
-               // callbacks
-               drag: null,
-               start: null,
-               stop: null
-       },
-       _create: function() {
-
-               if ( this.options.helper === "original" ) {
-                       this._setPositionRelative();
-               }
-               if (this.options.addClasses){
-                       this.element.addClass("ui-draggable");
-               }
-               if (this.options.disabled){
-                       this.element.addClass("ui-draggable-disabled");
-               }
-               this._setHandleClassName();
-
-               this._mouseInit();
-       },
-
-       _setOption: function( key, value ) {
-               this._super( key, value );
-               if ( key === "handle" ) {
-                       this._removeHandleClassName();
-                       this._setHandleClassName();
-               }
-       },
-
-       _destroy: function() {
-               if ( ( this.helper || this.element ).is( ".ui-draggable-dragging" ) ) {
-                       this.destroyOnClear = true;
-                       return;
-               }
-               this.element.removeClass( "ui-draggable ui-draggable-dragging ui-draggable-disabled" );
-               this._removeHandleClassName();
-               this._mouseDestroy();
-       },
-
-       _mouseCapture: function(event) {
-               var o = this.options;
-
-               this._blurActiveElement( event );
-
-               // among others, prevent a drag on a resizable-handle
-               if (this.helper || o.disabled || $(event.target).closest(".ui-resizable-handle").length > 0) {
-                       return false;
-               }
-
-               //Quit if we're not on a valid handle
-               this.handle = this._getHandle(event);
-               if (!this.handle) {
-                       return false;
-               }
-
-               this._blockFrames( o.iframeFix === true ? "iframe" : o.iframeFix );
-
-               return true;
-
-       },
-
-       _blockFrames: function( selector ) {
-               this.iframeBlocks = this.document.find( selector ).map(function() {
-                       var iframe = $( this );
-
-                       return $( "<div>" )
-                               .css( "position", "absolute" )
-                               .appendTo( iframe.parent() )
-                               .outerWidth( iframe.outerWidth() )
-                               .outerHeight( iframe.outerHeight() )
-                               .offset( iframe.offset() )[ 0 ];
-               });
-       },
-
-       _unblockFrames: function() {
-               if ( this.iframeBlocks ) {
-                       this.iframeBlocks.remove();
-                       delete this.iframeBlocks;
-               }
-       },
-
-       _blurActiveElement: function( event ) {
-               var document = this.document[ 0 ];
-
-               // Only need to blur if the event occurred on the draggable itself, see #10527
-               if ( !this.handleElement.is( event.target ) ) {
-                       return;
-               }
-
-               // support: IE9
-               // IE9 throws an "Unspecified error" accessing document.activeElement from an <iframe>
-               try {
-
-                       // Support: IE9, IE10
-                       // If the <body> is blurred, IE will switch windows, see #9520
-                       if ( document.activeElement && document.activeElement.nodeName.toLowerCase() !== "body" ) {
-
-                               // Blur any element that currently has focus, see #4261
-                               $( document.activeElement ).blur();
-                       }
-               } catch ( error ) {}
-       },
-
-       _mouseStart: function(event) {
-
-               var o = this.options;
-
-               //Create and append the visible helper
-               this.helper = this._createHelper(event);
-
-               this.helper.addClass("ui-draggable-dragging");
-
-               //Cache the helper size
-               this._cacheHelperProportions();
-
-               //If ddmanager is used for droppables, set the global draggable
-               if ($.ui.ddmanager) {
-                       $.ui.ddmanager.current = this;
-               }
-
-               /*
-                * - Position generation -
-                * This block generates everything position related - it's the core of draggables.
-                */
-
-               //Cache the margins of the original element
-               this._cacheMargins();
-
-               //Store the helper's css position
-               this.cssPosition = this.helper.css( "position" );
-               this.scrollParent = this.helper.scrollParent( true );
-               this.offsetParent = this.helper.offsetParent();
-               this.hasFixedAncestor = this.helper.parents().filter(function() {
-                               return $( this ).css( "position" ) === "fixed";
-                       }).length > 0;
-
-               //The element's absolute position on the page minus margins
-               this.positionAbs = this.element.offset();
-               this._refreshOffsets( event );
-
-               //Generate the original position
-               this.originalPosition = this.position = this._generatePosition( event, false );
-               this.originalPageX = event.pageX;
-               this.originalPageY = event.pageY;
-
-               //Adjust the mouse offset relative to the helper if "cursorAt" is supplied
-               (o.cursorAt && this._adjustOffsetFromHelper(o.cursorAt));
-
-               //Set a containment if given in the options
-               this._setContainment();
-
-               //Trigger event + callbacks
-               if (this._trigger("start", event) === false) {
-                       this._clear();
-                       return false;
-               }
-
-               //Recache the helper size
-               this._cacheHelperProportions();
-
-               //Prepare the droppable offsets
-               if ($.ui.ddmanager && !o.dropBehaviour) {
-                       $.ui.ddmanager.prepareOffsets(this, event);
-               }
-
-               // Reset helper's right/bottom css if they're set and set explicit width/height instead
-               // as this prevents resizing of elements with right/bottom set (see #7772)
-               this._normalizeRightBottom();
-
-               this._mouseDrag(event, true); //Execute the drag once - this causes the helper not to be visible before getting its correct position
-
-               //If the ddmanager is used for droppables, inform the manager that dragging has started (see #5003)
-               if ( $.ui.ddmanager ) {
-                       $.ui.ddmanager.dragStart(this, event);
-               }
-
-               return true;
-       },
-
-       _refreshOffsets: function( event ) {
-               this.offset = {
-                       top: this.positionAbs.top - this.margins.top,
-                       left: this.positionAbs.left - this.margins.left,
-                       scroll: false,
-                       parent: this._getParentOffset(),
-                       relative: this._getRelativeOffset()
-               };
-
-               this.offset.click = {
-                       left: event.pageX - this.offset.left,
-                       top: event.pageY - this.offset.top
-               };
-       },
-
-       _mouseDrag: function(event, noPropagation) {
-               // reset any necessary cached properties (see #5009)
-               if ( this.hasFixedAncestor ) {
-                       this.offset.parent = this._getParentOffset();
-               }
-
-               //Compute the helpers position
-               this.position = this._generatePosition( event, true );
-               this.positionAbs = this._convertPositionTo("absolute");
-
-               //Call plugins and callbacks and use the resulting position if something is returned
-               if (!noPropagation) {
-                       var ui = this._uiHash();
-                       if (this._trigger("drag", event, ui) === false) {
-                               this._mouseUp({});
-                               return false;
-                       }
-                       this.position = ui.position;
-               }
-
-               this.helper[ 0 ].style.left = this.position.left + "px";
-               this.helper[ 0 ].style.top = this.position.top + "px";
-
-               if ($.ui.ddmanager) {
-                       $.ui.ddmanager.drag(this, event);
-               }
-
-               return false;
-       },
-
-       _mouseStop: function(event) {
-
-               //If we are using droppables, inform the manager about the drop
-               var that = this,
-                       dropped = false;
-               if ($.ui.ddmanager && !this.options.dropBehaviour) {
-                       dropped = $.ui.ddmanager.drop(this, event);
-               }
-
-               //if a drop comes from outside (a sortable)
-               if (this.dropped) {
-                       dropped = this.dropped;
-                       this.dropped = false;
-               }
-
-               if ((this.options.revert === "invalid" && !dropped) || (this.options.revert === "valid" && dropped) || this.options.revert === true || ($.isFunction(this.options.revert) && this.options.revert.call(this.element, dropped))) {
-                       $(this.helper).animate(this.originalPosition, parseInt(this.options.revertDuration, 10), function() {
-                               if (that._trigger("stop", event) !== false) {
-                                       that._clear();
-                               }
-                       });
-               } else {
-                       if (this._trigger("stop", event) !== false) {
-                               this._clear();
-                       }
-               }
-
-               return false;
-       },
-
-       _mouseUp: function( event ) {
-               this._unblockFrames();
-
-               //If the ddmanager is used for droppables, inform the manager that dragging has stopped (see #5003)
-               if ( $.ui.ddmanager ) {
-                       $.ui.ddmanager.dragStop(this, event);
-               }
-
-               // Only need to focus if the event occurred on the draggable itself, see #10527
-               if ( this.handleElement.is( event.target ) ) {
-                       // The interaction is over; whether or not the click resulted in a drag, focus the element
-                       this.element.focus();
-               }
-
-               return $.ui.mouse.prototype._mouseUp.call(this, event);
-       },
-
-       cancel: function() {
-
-               if (this.helper.is(".ui-draggable-dragging")) {
-                       this._mouseUp({});
-               } else {
-                       this._clear();
-               }
-
-               return this;
-
-       },
-
-       _getHandle: function(event) {
-               return this.options.handle ?
-                       !!$( event.target ).closest( this.element.find( this.options.handle ) ).length :
-                       true;
-       },
-
-       _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(event) {
-
-               var o = this.options,
-                       helperIsFunction = $.isFunction( o.helper ),
-                       helper = helperIsFunction ?
-                               $( o.helper.apply( this.element[ 0 ], [ event ] ) ) :
-                               ( o.helper === "clone" ?
-                                       this.element.clone().removeAttr( "id" ) :
-                                       this.element );
-
-               if (!helper.parents("body").length) {
-                       helper.appendTo((o.appendTo === "parent" ? this.element[0].parentNode : o.appendTo));
-               }
-
-               // http://bugs.jqueryui.com/ticket/9446
-               // a helper function can return the original element
-               // which wouldn't have been set to relative in _create
-               if ( helperIsFunction && helper[ 0 ] === this.element[ 0 ] ) {
-                       this._setPositionRelative();
-               }
-
-               if (helper[0] !== this.element[0] && !(/(fixed|absolute)/).test(helper.css("position"))) {
-                       helper.css("position", "absolute");
-               }
-
-               return helper;
-
-       },
-
-       _setPositionRelative: function() {
-               if ( !( /^(?:r|a|f)/ ).test( this.element.css( "position" ) ) ) {
-                       this.element[ 0 ].style.position = "relative";
-               }
-       },
-
-       _adjustOffsetFromHelper: function(obj) {
-               if (typeof obj === "string") {
-                       obj = obj.split(" ");
-               }
-               if ($.isArray(obj)) {
-                       obj = { left: +obj[0], top: +obj[1] || 0 };
-               }
-               if ("left" in obj) {
-                       this.offset.click.left = obj.left + this.margins.left;
-               }
-               if ("right" in obj) {
-                       this.offset.click.left = this.helperProportions.width - obj.right + this.margins.left;
-               }
-               if ("top" in obj) {
-                       this.offset.click.top = obj.top + this.margins.top;
-               }
-               if ("bottom" in obj) {
-                       this.offset.click.top = this.helperProportions.height - obj.bottom + this.margins.top;
-               }
-       },
-
-       _isRootNode: function( element ) {
-               return ( /(html|body)/i ).test( element.tagName ) || element === this.document[ 0 ];
-       },
-
-       _getParentOffset: function() {
-
-               //Get the offsetParent and cache its position
-               var po = this.offsetParent.offset(),
-                       document = this.document[ 0 ];
-
-               // This is a special case where we need to modify a offset calculated on start, since the following happened:
-               // 1. The position of the helper is absolute, so it's position is calculated based on the next positioned parent
-               // 2. The actual offset parent is a child of the scroll parent, and the scroll parent isn't the document, which means that
-               //    the scroll is included in the initial calculation of the offset of the parent, and never recalculated upon drag
-               if (this.cssPosition === "absolute" && this.scrollParent[0] !== document && $.contains(this.scrollParent[0], this.offsetParent[0])) {
-                       po.left += this.scrollParent.scrollLeft();
-                       po.top += this.scrollParent.scrollTop();
-               }
-
-               if ( this._isRootNode( this.offsetParent[ 0 ] ) ) {
-                       po = { top: 0, left: 0 };
-               }
-
-               return {
-                       top: po.top + (parseInt(this.offsetParent.css("borderTopWidth"), 10) || 0),
-                       left: po.left + (parseInt(this.offsetParent.css("borderLeftWidth"), 10) || 0)
-               };
-
-       },
-
-       _getRelativeOffset: function() {
-               if ( this.cssPosition !== "relative" ) {
-                       return { top: 0, left: 0 };
-               }
-
-               var p = this.element.position(),
-                       scrollIsRootNode = this._isRootNode( this.scrollParent[ 0 ] );
-
-               return {
-                       top: p.top - ( parseInt(this.helper.css( "top" ), 10) || 0 ) + ( !scrollIsRootNode ? this.scrollParent.scrollTop() : 0 ),
-                       left: p.left - ( parseInt(this.helper.css( "left" ), 10) || 0 ) + ( !scrollIsRootNode ? this.scrollParent.scrollLeft() : 0 )
-               };
-
-       },
-
-       _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 isUserScrollable, c, ce,
-                       o = this.options,
-                       document = this.document[ 0 ];
-
-               this.relativeContainer = null;
-
-               if ( !o.containment ) {
-                       this.containment = null;
-                       return;
-               }
-
-               if ( o.containment === "window" ) {
-                       this.containment = [
-                               $( window ).scrollLeft() - this.offset.relative.left - this.offset.parent.left,
-                               $( window ).scrollTop() - this.offset.relative.top - this.offset.parent.top,
-                               $( window ).scrollLeft() + $( window ).width() - this.helperProportions.width - this.margins.left,
-                               $( window ).scrollTop() + ( $( window ).height() || document.body.parentNode.scrollHeight ) - this.helperProportions.height - this.margins.top
-                       ];
-                       return;
-               }
-
-               if ( o.containment === "document") {
-                       this.containment = [
-                               0,
-                               0,
-                               $( document ).width() - this.helperProportions.width - this.margins.left,
-                               ( $( document ).height() || document.body.parentNode.scrollHeight ) - this.helperProportions.height - this.margins.top
-                       ];
-                       return;
-               }
-
-               if ( o.containment.constructor === Array ) {
-                       this.containment = o.containment;
-                       return;
-               }
-
-               if ( o.containment === "parent" ) {
-                       o.containment = this.helper[ 0 ].parentNode;
-               }
-
-               c = $( o.containment );
-               ce = c[ 0 ];
-
-               if ( !ce ) {
-                       return;
-               }
-
-               isUserScrollable = /(scroll|auto)/.test( c.css( "overflow" ) );
-
-               this.containment = [
-                       ( parseInt( c.css( "borderLeftWidth" ), 10 ) || 0 ) + ( parseInt( c.css( "paddingLeft" ), 10 ) || 0 ),
-                       ( parseInt( c.css( "borderTopWidth" ), 10 ) || 0 ) + ( parseInt( c.css( "paddingTop" ), 10 ) || 0 ),
-                       ( isUserScrollable ? Math.max( ce.scrollWidth, ce.offsetWidth ) : ce.offsetWidth ) -
-                               ( parseInt( c.css( "borderRightWidth" ), 10 ) || 0 ) -
-                               ( parseInt( c.css( "paddingRight" ), 10 ) || 0 ) -
-                               this.helperProportions.width -
-                               this.margins.left -
-                               this.margins.right,
-                       ( isUserScrollable ? Math.max( ce.scrollHeight, ce.offsetHeight ) : ce.offsetHeight ) -
-                               ( parseInt( c.css( "borderBottomWidth" ), 10 ) || 0 ) -
-                               ( parseInt( c.css( "paddingBottom" ), 10 ) || 0 ) -
-                               this.helperProportions.height -
-                               this.margins.top -
-                               this.margins.bottom
-               ];
-               this.relativeContainer = c;
-       },
-
-       _convertPositionTo: function(d, pos) {
-
-               if (!pos) {
-                       pos = this.position;
-               }
-
-               var mod = d === "absolute" ? 1 : -1,
-                       scrollIsRootNode = this._isRootNode( this.scrollParent[ 0 ] );
-
-               return {
-                       top: (
-                               pos.top +                                                                                                                               // The absolute mouse position
-                               this.offset.relative.top * mod +                                                                                // Only for relative positioned nodes: Relative offset from element to offset parent
-                               this.offset.parent.top * mod -                                                                          // The offsetParent's offset without borders (offset + border)
-                               ( ( this.cssPosition === "fixed" ? -this.offset.scroll.top : ( scrollIsRootNode ? 0 : this.offset.scroll.top ) ) * mod)
-                       ),
-                       left: (
-                               pos.left +                                                                                                                              // The absolute mouse position
-                               this.offset.relative.left * mod +                                                                               // Only for relative positioned nodes: Relative offset from element to offset parent
-                               this.offset.parent.left * mod   -                                                                               // The offsetParent's offset without borders (offset + border)
-                               ( ( this.cssPosition === "fixed" ? -this.offset.scroll.left : ( scrollIsRootNode ? 0 : this.offset.scroll.left ) ) * mod)
-                       )
-               };
-
-       },
-
-       _generatePosition: function( event, constrainPosition ) {
-
-               var containment, co, top, left,
-                       o = this.options,
-                       scrollIsRootNode = this._isRootNode( this.scrollParent[ 0 ] ),
-                       pageX = event.pageX,
-                       pageY = event.pageY;
-
-               // Cache the scroll
-               if ( !scrollIsRootNode || !this.offset.scroll ) {
-                       this.offset.scroll = {
-                               top: this.scrollParent.scrollTop(),
-                               left: this.scrollParent.scrollLeft()
-                       };
-               }
-
-               /*
-                * - Position constraining -
-                * Constrain the position to a mix of grid, containment.
-                */
-
-               // If we are not dragging yet, we won't check for options
-               if ( constrainPosition ) {
-                       if ( this.containment ) {
-                               if ( this.relativeContainer ){
-                                       co = this.relativeContainer.offset();
-                                       containment = [
-                                               this.containment[ 0 ] + co.left,
-                                               this.containment[ 1 ] + co.top,
-                                               this.containment[ 2 ] + co.left,
-                                               this.containment[ 3 ] + co.top
-                                       ];
-                               } else {
-                                       containment = this.containment;
-                               }
-
-                               if (event.pageX - this.offset.click.left < containment[0]) {
-                                       pageX = containment[0] + this.offset.click.left;
-                               }
-                               if (event.pageY - this.offset.click.top < containment[1]) {
-                                       pageY = containment[1] + this.offset.click.top;
-                               }
-                               if (event.pageX - this.offset.click.left > containment[2]) {
-                                       pageX = containment[2] + this.offset.click.left;
-                               }
-                               if (event.pageY - this.offset.click.top > containment[3]) {
-                                       pageY = containment[3] + this.offset.click.top;
-                               }
-                       }
-
-                       if (o.grid) {
-                               //Check for grid elements set to 0 to prevent divide by 0 error causing invalid argument errors in IE (see ticket #6950)
-                               top = o.grid[1] ? this.originalPageY + Math.round((pageY - this.originalPageY) / o.grid[1]) * o.grid[1] : this.originalPageY;
-                               pageY = containment ? ((top - this.offset.click.top >= containment[1] || top - this.offset.click.top > containment[3]) ? top : ((top - this.offset.click.top >= containment[1]) ? top - o.grid[1] : top + o.grid[1])) : top;
-
-                               left = o.grid[0] ? this.originalPageX + Math.round((pageX - this.originalPageX) / o.grid[0]) * o.grid[0] : this.originalPageX;
-                               pageX = containment ? ((left - this.offset.click.left >= containment[0] || left - this.offset.click.left > containment[2]) ? left : ((left - this.offset.click.left >= containment[0]) ? left - o.grid[0] : left + o.grid[0])) : left;
-                       }
-
-                       if ( o.axis === "y" ) {
-                               pageX = this.originalPageX;
-                       }
-
-                       if ( o.axis === "x" ) {
-                               pageY = this.originalPageY;
-                       }
-               }
-
-               return {
-                       top: (
-                               pageY -                                                                                                                                 // The absolute mouse position
-                               this.offset.click.top   -                                                                                               // Click offset (relative to the element)
-                               this.offset.relative.top -                                                                                              // Only for relative positioned nodes: Relative offset from element to offset parent
-                               this.offset.parent.top +                                                                                                // The offsetParent's offset without borders (offset + border)
-                               ( this.cssPosition === "fixed" ? -this.offset.scroll.top : ( scrollIsRootNode ? 0 : this.offset.scroll.top ) )
-                       ),
-                       left: (
-                               pageX -                                                                                                                                 // The absolute mouse position
-                               this.offset.click.left -                                                                                                // Click offset (relative to the element)
-                               this.offset.relative.left -                                                                                             // Only for relative positioned nodes: Relative offset from element to offset parent
-                               this.offset.parent.left +                                                                                               // The offsetParent's offset without borders (offset + border)
-                               ( this.cssPosition === "fixed" ? -this.offset.scroll.left : ( scrollIsRootNode ? 0 : this.offset.scroll.left ) )
-                       )
-               };
-
-       },
-
-       _clear: function() {
-               this.helper.removeClass("ui-draggable-dragging");
-               if (this.helper[0] !== this.element[0] && !this.cancelHelperRemoval) {
-                       this.helper.remove();
-               }
-               this.helper = null;
-               this.cancelHelperRemoval = false;
-               if ( this.destroyOnClear ) {
-                       this.destroy();
-               }
-       },
-
-       _normalizeRightBottom: function() {
-               if ( this.options.axis !== "y" && this.helper.css( "right" ) !== "auto" ) {
-                       this.helper.width( this.helper.width() );
-                       this.helper.css( "right", "auto" );
-               }
-               if ( this.options.axis !== "x" && this.helper.css( "bottom" ) !== "auto" ) {
-                       this.helper.height( this.helper.height() );
-                       this.helper.css( "bottom", "auto" );
-               }
-       },
-
-       // From now on bulk stuff - mainly helpers
-
-       _trigger: function( type, event, ui ) {
-               ui = ui || this._uiHash();
-               $.ui.plugin.call( this, type, [ event, ui, this ], true );
-
-               // Absolute position and offset (see #6884 ) have to be recalculated after plugins
-               if ( /^(drag|start|stop)/.test( type ) ) {
-                       this.positionAbs = this._convertPositionTo( "absolute" );
-                       ui.offset = this.positionAbs;
-               }
-               return $.Widget.prototype._trigger.call( this, type, event, ui );
-       },
-
-       plugins: {},
-
-       _uiHash: function() {
-               return {
-                       helper: this.helper,
-                       position: this.position,
-                       originalPosition: this.originalPosition,
-                       offset: this.positionAbs
-               };
-       }
-
-});
-
-$.ui.plugin.add( "draggable", "connectToSortable", {
-       start: function( event, ui, draggable ) {
-               var uiSortable = $.extend( {}, ui, {
-                       item: draggable.element
-               });
-
-               draggable.sortables = [];
-               $( draggable.options.connectToSortable ).each(function() {
-                       var sortable = $( this ).sortable( "instance" );
-
-                       if ( sortable && !sortable.options.disabled ) {
-                               draggable.sortables.push( sortable );
-
-                               // refreshPositions is called at drag start to refresh the containerCache
-                               // which is used in drag. This ensures it's initialized and synchronized
-                               // with any changes that might have happened on the page since initialization.
-                               sortable.refreshPositions();
-                               sortable._trigger("activate", event, uiSortable);
-                       }
-               });
-       },
-       stop: function( event, ui, draggable ) {
-               var uiSortable = $.extend( {}, ui, {
-                       item: draggable.element
-               });
-
-               draggable.cancelHelperRemoval = false;
-
-               $.each( draggable.sortables, function() {
-                       var sortable = this;
-
-                       if ( sortable.isOver ) {
-                               sortable.isOver = 0;
-
-                               // Allow this sortable to handle removing the helper
-                               draggable.cancelHelperRemoval = true;
-                               sortable.cancelHelperRemoval = false;
-
-                               // Use _storedCSS To restore properties in the sortable,
-                               // as this also handles revert (#9675) since the draggable
-                               // may have modified them in unexpected ways (#8809)
-                               sortable._storedCSS = {
-                                       position: sortable.placeholder.css( "position" ),
-                                       top: sortable.placeholder.css( "top" ),
-                                       left: sortable.placeholder.css( "left" )
-                               };
-
-                               sortable._mouseStop(event);
-
-                               // Once drag has ended, the sortable should return to using
-                               // its original helper, not the shared helper from draggable
-                               sortable.options.helper = sortable.options._helper;
-                       } else {
-                               // Prevent this Sortable from removing the helper.
-                               // However, don't set the draggable to remove the helper
-                               // either as another connected Sortable may yet handle the removal.
-                               sortable.cancelHelperRemoval = true;
-
-                               sortable._trigger( "deactivate", event, uiSortable );
-                       }
-               });
-       },
-       drag: function( event, ui, draggable ) {
-               $.each( draggable.sortables, function() {
-                       var innermostIntersecting = false,
-                               sortable = this;
-
-                       // Copy over variables that sortable's _intersectsWith uses
-                       sortable.positionAbs = draggable.positionAbs;
-                       sortable.helperProportions = draggable.helperProportions;
-                       sortable.offset.click = draggable.offset.click;
-
-                       if ( sortable._intersectsWith( sortable.containerCache ) ) {
-                               innermostIntersecting = true;
-
-                               $.each( draggable.sortables, function() {
-                                       // Copy over variables that sortable's _intersectsWith uses
-                                       this.positionAbs = draggable.positionAbs;
-                                       this.helperProportions = draggable.helperProportions;
-                                       this.offset.click = draggable.offset.click;
-
-                                       if ( this !== sortable &&
-                                                       this._intersectsWith( this.containerCache ) &&
-                                                       $.contains( sortable.element[ 0 ], this.element[ 0 ] ) ) {
-                                               innermostIntersecting = false;
-                                       }
-
-                                       return innermostIntersecting;
-                               });
-                       }
-
-                       if ( innermostIntersecting ) {
-                               // If it intersects, we use a little isOver variable and set it once,
-                               // so that the move-in stuff gets fired only once.
-                               if ( !sortable.isOver ) {
-                                       sortable.isOver = 1;
-
-                                       sortable.currentItem = ui.helper
-                                               .appendTo( sortable.element )
-                                               .data( "ui-sortable-item", true );
-
-                                       // Store helper option to later restore it
-                                       sortable.options._helper = sortable.options.helper;
-
-                                       sortable.options.helper = function() {
-                                               return ui.helper[ 0 ];
-                                       };
-
-                                       // Fire the start events of the sortable with our passed browser event,
-                                       // and our own helper (so it doesn't create a new one)
-                                       event.target = sortable.currentItem[ 0 ];
-                                       sortable._mouseCapture( event, true );
-                                       sortable._mouseStart( event, true, true );
-
-                                       // Because the browser event is way off the new appended portlet,
-                                       // modify necessary variables to reflect the changes
-                                       sortable.offset.click.top = draggable.offset.click.top;
-                                       sortable.offset.click.left = draggable.offset.click.left;
-                                       sortable.offset.parent.left -= draggable.offset.parent.left -
-                                               sortable.offset.parent.left;
-                                       sortable.offset.parent.top -= draggable.offset.parent.top -
-                                               sortable.offset.parent.top;
-
-                                       draggable._trigger( "toSortable", event );
-
-                                       // Inform draggable that the helper is in a valid drop zone,
-                                       // used solely in the revert option to handle "valid/invalid".
-                                       draggable.dropped = sortable.element;
-
-                                       // Need to refreshPositions of all sortables in the case that
-                                       // adding to one sortable changes the location of the other sortables (#9675)
-                                       $.each( draggable.sortables, function() {
-                                               this.refreshPositions();
-                                       });
-
-                                       // hack so receive/update callbacks work (mostly)
-                                       draggable.currentItem = draggable.element;
-                                       sortable.fromOutside = draggable;
-                               }
-
-                               if ( sortable.currentItem ) {
-                                       sortable._mouseDrag( event );
-                                       // Copy the sortable's position because the draggable's can potentially reflect
-                                       // a relative position, while sortable is always absolute, which the dragged
-                                       // element has now become. (#8809)
-                                       ui.position = sortable.position;
-                               }
-                       } else {
-                               // If it doesn't intersect with the sortable, and it intersected before,
-                               // we fake the drag stop of the sortable, but make sure it doesn't remove
-                               // the helper by using cancelHelperRemoval.
-                               if ( sortable.isOver ) {
-
-                                       sortable.isOver = 0;
-                                       sortable.cancelHelperRemoval = true;
-
-                                       // Calling sortable's mouseStop would trigger a revert,
-                                       // so revert must be temporarily false until after mouseStop is called.
-                                       sortable.options._revert = sortable.options.revert;
-                                       sortable.options.revert = false;
-
-                                       sortable._trigger( "out", event, sortable._uiHash( sortable ) );
-                                       sortable._mouseStop( event, true );
-
-                                       // restore sortable behaviors that were modfied
-                                       // when the draggable entered the sortable area (#9481)
-                                       sortable.options.revert = sortable.options._revert;
-                                       sortable.options.helper = sortable.options._helper;
-
-                                       if ( sortable.placeholder ) {
-                                               sortable.placeholder.remove();
-                                       }
-
-                                       // Recalculate the draggable's offset considering the sortable
-                                       // may have modified them in unexpected ways (#8809)
-                                       draggable._refreshOffsets( event );
-                                       ui.position = draggable._generatePosition( event, true );
-
-                                       draggable._trigger( "fromSortable", event );
-
-                                       // Inform draggable that the helper is no longer in a valid drop zone
-                                       draggable.dropped = false;
-
-                                       // Need to refreshPositions of all sortables just in case removing
-                                       // from one sortable changes the location of other sortables (#9675)
-                                       $.each( draggable.sortables, function() {
-                                               this.refreshPositions();
-                                       });
-                               }
-                       }
-               });
-       }
-});
-
-$.ui.plugin.add("draggable", "cursor", {
-       start: function( event, ui, instance ) {
-               var t = $( "body" ),
-                       o = instance.options;
-
-               if (t.css("cursor")) {
-                       o._cursor = t.css("cursor");
-               }
-               t.css("cursor", o.cursor);
-       },
-       stop: function( event, ui, instance ) {
-               var o = instance.options;
-               if (o._cursor) {
-                       $("body").css("cursor", o._cursor);
-               }
-       }
-});
-
-$.ui.plugin.add("draggable", "opacity", {
-       start: function( event, ui, instance ) {
-               var t = $( ui.helper ),
-                       o = instance.options;
-               if (t.css("opacity")) {
-                       o._opacity = t.css("opacity");
-               }
-               t.css("opacity", o.opacity);
-       },
-       stop: function( event, ui, instance ) {
-               var o = instance.options;
-               if (o._opacity) {
-                       $(ui.helper).css("opacity", o._opacity);
-               }
-       }
-});
-
-$.ui.plugin.add("draggable", "scroll", {
-       start: function( event, ui, i ) {
-               if ( !i.scrollParentNotHidden ) {
-                       i.scrollParentNotHidden = i.helper.scrollParent( false );
-               }
-
-               if ( i.scrollParentNotHidden[ 0 ] !== i.document[ 0 ] && i.scrollParentNotHidden[ 0 ].tagName !== "HTML" ) {
-                       i.overflowOffset = i.scrollParentNotHidden.offset();
-               }
-       },
-       drag: function( event, ui, i  ) {
-
-               var o = i.options,
-                       scrolled = false,
-                       scrollParent = i.scrollParentNotHidden[ 0 ],
-                       document = i.document[ 0 ];
-
-               if ( scrollParent !== document && scrollParent.tagName !== "HTML" ) {
-                       if ( !o.axis || o.axis !== "x" ) {
-                               if ( ( i.overflowOffset.top + scrollParent.offsetHeight ) - event.pageY < o.scrollSensitivity ) {
-                                       scrollParent.scrollTop = scrolled = scrollParent.scrollTop + o.scrollSpeed;
-                               } else if ( event.pageY - i.overflowOffset.top < o.scrollSensitivity ) {
-                                       scrollParent.scrollTop = scrolled = scrollParent.scrollTop - o.scrollSpeed;
-                               }
-                       }
-
-                       if ( !o.axis || o.axis !== "y" ) {
-                               if ( ( i.overflowOffset.left + scrollParent.offsetWidth ) - event.pageX < o.scrollSensitivity ) {
-                                       scrollParent.scrollLeft = scrolled = scrollParent.scrollLeft + o.scrollSpeed;
-                               } else if ( event.pageX - i.overflowOffset.left < o.scrollSensitivity ) {
-                                       scrollParent.scrollLeft = scrolled = scrollParent.scrollLeft - o.scrollSpeed;
-                               }
-                       }
-
-               } else {
-
-                       if (!o.axis || o.axis !== "x") {
-                               if (event.pageY - $(document).scrollTop() < o.scrollSensitivity) {
-                                       scrolled = $(document).scrollTop($(document).scrollTop() - o.scrollSpeed);
-                               } else if ($(window).height() - (event.pageY - $(document).scrollTop()) < o.scrollSensitivity) {
-                                       scrolled = $(document).scrollTop($(document).scrollTop() + o.scrollSpeed);
-                               }
-                       }
-
-                       if (!o.axis || o.axis !== "y") {
-                               if (event.pageX - $(document).scrollLeft() < o.scrollSensitivity) {
-                                       scrolled = $(document).scrollLeft($(document).scrollLeft() - o.scrollSpeed);
-                               } else if ($(window).width() - (event.pageX - $(document).scrollLeft()) < o.scrollSensitivity) {
-                                       scrolled = $(document).scrollLeft($(document).scrollLeft() + o.scrollSpeed);
-                               }
-                       }
-
-               }
-
-               if (scrolled !== false && $.ui.ddmanager && !o.dropBehaviour) {
-                       $.ui.ddmanager.prepareOffsets(i, event);
-               }
-
-       }
-});
-
-$.ui.plugin.add("draggable", "snap", {
-       start: function( event, ui, i ) {
-
-               var o = i.options;
-
-               i.snapElements = [];
-
-               $(o.snap.constructor !== String ? ( o.snap.items || ":data(ui-draggable)" ) : o.snap).each(function() {
-                       var $t = $(this),
-                               $o = $t.offset();
-                       if (this !== i.element[0]) {
-                               i.snapElements.push({
-                                       item: this,
-                                       width: $t.outerWidth(), height: $t.outerHeight(),
-                                       top: $o.top, left: $o.left
-                               });
-                       }
-               });
-
-       },
-       drag: function( event, ui, inst ) {
-
-               var ts, bs, ls, rs, l, r, t, b, i, first,
-                       o = inst.options,
-                       d = o.snapTolerance,
-                       x1 = ui.offset.left, x2 = x1 + inst.helperProportions.width,
-                       y1 = ui.offset.top, y2 = y1 + inst.helperProportions.height;
-
-               for (i = inst.snapElements.length - 1; i >= 0; i--){
-
-                       l = inst.snapElements[i].left - inst.margins.left;
-                       r = l + inst.snapElements[i].width;
-                       t = inst.snapElements[i].top - inst.margins.top;
-                       b = t + inst.snapElements[i].height;
-
-                       if ( x2 < l - d || x1 > r + d || y2 < t - d || y1 > b + d || !$.contains( inst.snapElements[ i ].item.ownerDocument, inst.snapElements[ i ].item ) ) {
-                               if (inst.snapElements[i].snapping) {
-                                       (inst.options.snap.release && inst.options.snap.release.call(inst.element, event, $.extend(inst._uiHash(), { snapItem: inst.snapElements[i].item })));
-                               }
-                               inst.snapElements[i].snapping = false;
-                               continue;
-                       }
-
-                       if (o.snapMode !== "inner") {
-                               ts = Math.abs(t - y2) <= d;
-                               bs = Math.abs(b - y1) <= d;
-                               ls = Math.abs(l - x2) <= d;
-                               rs = Math.abs(r - x1) <= d;
-                               if (ts) {
-                                       ui.position.top = inst._convertPositionTo("relative", { top: t - inst.helperProportions.height, left: 0 }).top;
-                               }
-                               if (bs) {
-                                       ui.position.top = inst._convertPositionTo("relative", { top: b, left: 0 }).top;
-                               }
-                               if (ls) {
-                                       ui.position.left = inst._convertPositionTo("relative", { top: 0, left: l - inst.helperProportions.width }).left;
-                               }
-                               if (rs) {
-                                       ui.position.left = inst._convertPositionTo("relative", { top: 0, left: r }).left;
-                               }
-                       }
-
-                       first = (ts || bs || ls || rs);
-
-                       if (o.snapMode !== "outer") {
-                               ts = Math.abs(t - y1) <= d;
-                               bs = Math.abs(b - y2) <= d;
-                               ls = Math.abs(l - x1) <= d;
-                               rs = Math.abs(r - x2) <= d;
-                               if (ts) {
-                                       ui.position.top = inst._convertPositionTo("relative", { top: t, left: 0 }).top;
-                               }
-                               if (bs) {
-                                       ui.position.top = inst._convertPositionTo("relative", { top: b - inst.helperProportions.height, left: 0 }).top;
-                               }
-                               if (ls) {
-                                       ui.position.left = inst._convertPositionTo("relative", { top: 0, left: l }).left;
-                               }
-                               if (rs) {
-                                       ui.position.left = inst._convertPositionTo("relative", { top: 0, left: r - inst.helperProportions.width }).left;
-                               }
-                       }
-
-                       if (!inst.snapElements[i].snapping && (ts || bs || ls || rs || first)) {
-                               (inst.options.snap.snap && inst.options.snap.snap.call(inst.element, event, $.extend(inst._uiHash(), { snapItem: inst.snapElements[i].item })));
-                       }
-                       inst.snapElements[i].snapping = (ts || bs || ls || rs || first);
-
-               }
-
-       }
-});
-
-$.ui.plugin.add("draggable", "stack", {
-       start: function( event, ui, instance ) {
-               var min,
-                       o = instance.options,
-                       group = $.makeArray($(o.stack)).sort(function(a, b) {
-                               return (parseInt($(a).css("zIndex"), 10) || 0) - (parseInt($(b).css("zIndex"), 10) || 0);
-                       });
-
-               if (!group.length) { return; }
-
-               min = parseInt($(group[0]).css("zIndex"), 10) || 0;
-               $(group).each(function(i) {
-                       $(this).css("zIndex", min + i);
-               });
-               this.css("zIndex", (min + group.length));
-       }
-});
-
-$.ui.plugin.add("draggable", "zIndex", {
-       start: function( event, ui, instance ) {
-               var t = $( ui.helper ),
-                       o = instance.options;
-
-               if (t.css("zIndex")) {
-                       o._zIndex = t.css("zIndex");
-               }
-               t.css("zIndex", o.zIndex);
-       },
-       stop: function( event, ui, instance ) {
-               var o = instance.options;
-
-               if (o._zIndex) {
-                       $(ui.helper).css("zIndex", o._zIndex);
-               }
-       }
-});
-
-var draggable = $.ui.draggable;
-
-
-/*!
- * jQuery UI Droppable 1.11.3
- * http://jqueryui.com
- *
- * Copyright jQuery Foundation and other contributors
- * Released under the MIT license.
- * http://jquery.org/license
- *
- * http://api.jqueryui.com/droppable/
- */
-
-
-$.widget( "ui.droppable", {
-       version: "1.11.3",
-       widgetEventPrefix: "drop",
-       options: {
-               accept: "*",
-               activeClass: false,
-               addClasses: true,
-               greedy: false,
-               hoverClass: false,
-               scope: "default",
-               tolerance: "intersect",
-
-               // callbacks
-               activate: null,
-               deactivate: null,
-               drop: null,
-               out: null,
-               over: null
-       },
-       _create: function() {
-
-               var proportions,
-                       o = this.options,
-                       accept = o.accept;
-
-               this.isover = false;
-               this.isout = true;
-
-               this.accept = $.isFunction( accept ) ? accept : function( d ) {
-                       return d.is( accept );
-               };
-
-               this.proportions = function( /* valueToWrite */ ) {
-                       if ( arguments.length ) {
-                               // Store the droppable's proportions
-                               proportions = arguments[ 0 ];
-                       } else {
-                               // Retrieve or derive the droppable's proportions
-                               return proportions ?
-                                       proportions :
-                                       proportions = {
-                                               width: this.element[ 0 ].offsetWidth,
-                                               height: this.element[ 0 ].offsetHeight
-                                       };
-                       }
-               };
-
-               this._addToManager( o.scope );
-
-               o.addClasses && this.element.addClass( "ui-droppable" );
-
-       },
-
-       _addToManager: function( scope ) {
-               // Add the reference and positions to the manager
-               $.ui.ddmanager.droppables[ scope ] = $.ui.ddmanager.droppables[ scope ] || [];
-               $.ui.ddmanager.droppables[ scope ].push( this );
-       },
-
-       _splice: function( drop ) {
-               var i = 0;
-               for ( ; i < drop.length; i++ ) {
-                       if ( drop[ i ] === this ) {
-                               drop.splice( i, 1 );
-                       }
-               }
-       },
-
-       _destroy: function() {
-               var drop = $.ui.ddmanager.droppables[ this.options.scope ];
-
-               this._splice( drop );
-
-               this.element.removeClass( "ui-droppable ui-droppable-disabled" );
-       },
-
-       _setOption: function( key, value ) {
-
-               if ( key === "accept" ) {
-                       this.accept = $.isFunction( value ) ? value : function( d ) {
-                               return d.is( value );
-                       };
-               } else if ( key === "scope" ) {
-                       var drop = $.ui.ddmanager.droppables[ this.options.scope ];
-
-                       this._splice( drop );
-                       this._addToManager( value );
-               }
-
-               this._super( key, value );
-       },
-
-       _activate: function( event ) {
-               var draggable = $.ui.ddmanager.current;
-               if ( this.options.activeClass ) {
-                       this.element.addClass( this.options.activeClass );
-               }
-               if ( draggable ){
-                       this._trigger( "activate", event, this.ui( draggable ) );
-               }
-       },
-
-       _deactivate: function( event ) {
-               var draggable = $.ui.ddmanager.current;
-               if ( this.options.activeClass ) {
-                       this.element.removeClass( this.options.activeClass );
-               }
-               if ( draggable ){
-                       this._trigger( "deactivate", event, this.ui( draggable ) );
-               }
-       },
-
-       _over: function( event ) {
-
-               var draggable = $.ui.ddmanager.current;
-
-               // Bail if draggable and droppable are same element
-               if ( !draggable || ( draggable.currentItem || draggable.element )[ 0 ] === this.element[ 0 ] ) {
-                       return;
-               }
-
-               if ( this.accept.call( this.element[ 0 ], ( draggable.currentItem || draggable.element ) ) ) {
-                       if ( this.options.hoverClass ) {
-                               this.element.addClass( this.options.hoverClass );
-                       }
-                       this._trigger( "over", event, this.ui( draggable ) );
-               }
-
-       },
-
-       _out: function( event ) {
-
-               var draggable = $.ui.ddmanager.current;
-
-               // Bail if draggable and droppable are same element
-               if ( !draggable || ( draggable.currentItem || draggable.element )[ 0 ] === this.element[ 0 ] ) {
-                       return;
-               }
-
-               if ( this.accept.call( this.element[ 0 ], ( draggable.currentItem || draggable.element ) ) ) {
-                       if ( this.options.hoverClass ) {
-                               this.element.removeClass( this.options.hoverClass );
-                       }
-                       this._trigger( "out", event, this.ui( draggable ) );
-               }
-
-       },
-
-       _drop: function( event, custom ) {
-
-               var draggable = custom || $.ui.ddmanager.current,
-                       childrenIntersection = false;
-
-               // Bail if draggable and droppable are same element
-               if ( !draggable || ( draggable.currentItem || draggable.element )[ 0 ] === this.element[ 0 ] ) {
-                       return false;
-               }
-
-               this.element.find( ":data(ui-droppable)" ).not( ".ui-draggable-dragging" ).each(function() {
-                       var inst = $( this ).droppable( "instance" );
-                       if (
-                               inst.options.greedy &&
-                               !inst.options.disabled &&
-                               inst.options.scope === draggable.options.scope &&
-                               inst.accept.call( inst.element[ 0 ], ( draggable.currentItem || draggable.element ) ) &&
-                               $.ui.intersect( draggable, $.extend( inst, { offset: inst.element.offset() } ), inst.options.tolerance, event )
-                       ) { childrenIntersection = true; return false; }
-               });
-               if ( childrenIntersection ) {
-                       return false;
-               }
-
-               if ( this.accept.call( this.element[ 0 ], ( draggable.currentItem || draggable.element ) ) ) {
-                       if ( this.options.activeClass ) {
-                               this.element.removeClass( this.options.activeClass );
-                       }
-                       if ( this.options.hoverClass ) {
-                               this.element.removeClass( this.options.hoverClass );
-                       }
-                       this._trigger( "drop", event, this.ui( draggable ) );
-                       return this.element;
-               }
-
-               return false;
-
-       },
-
-       ui: function( c ) {
-               return {
-                       draggable: ( c.currentItem || c.element ),
-                       helper: c.helper,
-                       position: c.position,
-                       offset: c.positionAbs
-               };
-       }
-
-});
-
-$.ui.intersect = (function() {
-       function isOverAxis( x, reference, size ) {
-               return ( x >= reference ) && ( x < ( reference + size ) );
-       }
-
-       return function( draggable, droppable, toleranceMode, event ) {
-
-               if ( !droppable.offset ) {
-                       return false;
-               }
-
-               var x1 = ( draggable.positionAbs || draggable.position.absolute ).left + draggable.margins.left,
-                       y1 = ( draggable.positionAbs || draggable.position.absolute ).top + draggable.margins.top,
-                       x2 = x1 + draggable.helperProportions.width,
-                       y2 = y1 + draggable.helperProportions.height,
-                       l = droppable.offset.left,
-                       t = droppable.offset.top,
-                       r = l + droppable.proportions().width,
-                       b = t + droppable.proportions().height;
-
-               switch ( toleranceMode ) {
-               case "fit":
-                       return ( l <= x1 && x2 <= r && t <= y1 && y2 <= b );
-               case "intersect":
-                       return ( l < x1 + ( draggable.helperProportions.width / 2 ) && // Right Half
-                               x2 - ( draggable.helperProportions.width / 2 ) < r && // Left Half
-                               t < y1 + ( draggable.helperProportions.height / 2 ) && // Bottom Half
-                               y2 - ( draggable.helperProportions.height / 2 ) < b ); // Top Half
-               case "pointer":
-                       return isOverAxis( event.pageY, t, droppable.proportions().height ) && isOverAxis( event.pageX, l, droppable.proportions().width );
-               case "touch":
-                       return (
-                               ( y1 >= t && y1 <= b ) || // Top edge touching
-                               ( y2 >= t && y2 <= b ) || // Bottom edge touching
-                               ( y1 < t && y2 > b ) // Surrounded vertically
-                       ) && (
-                               ( x1 >= l && x1 <= r ) || // Left edge touching
-                               ( x2 >= l && x2 <= r ) || // Right edge touching
-                               ( x1 < l && x2 > r ) // Surrounded horizontally
-                       );
-               default:
-                       return false;
-               }
-       };
-})();
-
-/*
-       This manager tracks offsets of draggables and droppables
-*/
-$.ui.ddmanager = {
-       current: null,
-       droppables: { "default": [] },
-       prepareOffsets: function( t, event ) {
-
-               var i, j,
-                       m = $.ui.ddmanager.droppables[ t.options.scope ] || [],
-                       type = event ? event.type : null, // workaround for #2317
-                       list = ( t.currentItem || t.element ).find( ":data(ui-droppable)" ).addBack();
-
-               droppablesLoop: for ( i = 0; i < m.length; i++ ) {
-
-                       // No disabled and non-accepted
-                       if ( m[ i ].options.disabled || ( t && !m[ i ].accept.call( m[ i ].element[ 0 ], ( t.currentItem || t.element ) ) ) ) {
-                               continue;
-                       }
-
-                       // Filter out elements in the current dragged item
-                       for ( j = 0; j < list.length; j++ ) {
-                               if ( list[ j ] === m[ i ].element[ 0 ] ) {
-                                       m[ i ].proportions().height = 0;
-                                       continue droppablesLoop;
-                               }
-                       }
-
-                       m[ i ].visible = m[ i ].element.css( "display" ) !== "none";
-                       if ( !m[ i ].visible ) {
-                               continue;
-                       }
-
-                       // Activate the droppable if used directly from draggables
-                       if ( type === "mousedown" ) {
-                               m[ i ]._activate.call( m[ i ], event );
-                       }
-
-                       m[ i ].offset = m[ i ].element.offset();
-                       m[ i ].proportions({ width: m[ i ].element[ 0 ].offsetWidth, height: m[ i ].element[ 0 ].offsetHeight });
-
-               }
-
-       },
-       drop: function( draggable, event ) {
-
-               var dropped = false;
-               // Create a copy of the droppables in case the list changes during the drop (#9116)
-               $.each( ( $.ui.ddmanager.droppables[ draggable.options.scope ] || [] ).slice(), function() {
-
-                       if ( !this.options ) {
-                               return;
-                       }
-                       if ( !this.options.disabled && this.visible && $.ui.intersect( draggable, this, this.options.tolerance, event ) ) {
-                               dropped = this._drop.call( this, event ) || dropped;
-                       }
-
-                       if ( !this.options.disabled && this.visible && this.accept.call( this.element[ 0 ], ( draggable.currentItem || draggable.element ) ) ) {
-                               this.isout = true;
-                               this.isover = false;
-                               this._deactivate.call( this, event );
-                       }
-
-               });
-               return dropped;
-
-       },
-       dragStart: function( draggable, event ) {
-               // Listen for scrolling so that if the dragging causes scrolling the position of the droppables can be recalculated (see #5003)
-               draggable.element.parentsUntil( "body" ).bind( "scroll.droppable", function() {
-                       if ( !draggable.options.refreshPositions ) {
-                               $.ui.ddmanager.prepareOffsets( draggable, event );
-                       }
-               });
-       },
-       drag: function( draggable, event ) {
-
-               // If you have a highly dynamic page, you might try this option. It renders positions every time you move the mouse.
-               if ( draggable.options.refreshPositions ) {
-                       $.ui.ddmanager.prepareOffsets( draggable, event );
-               }
-
-               // Run through all droppables and check their positions based on specific tolerance options
-               $.each( $.ui.ddmanager.droppables[ draggable.options.scope ] || [], function() {
-
-                       if ( this.options.disabled || this.greedyChild || !this.visible ) {
-                               return;
-                       }
-
-                       var parentInstance, scope, parent,
-                               intersects = $.ui.intersect( draggable, this, this.options.tolerance, event ),
-                               c = !intersects && this.isover ? "isout" : ( intersects && !this.isover ? "isover" : null );
-                       if ( !c ) {
-                               return;
-                       }
-
-                       if ( this.options.greedy ) {
-                               // find droppable parents with same scope
-                               scope = this.options.scope;
-                               parent = this.element.parents( ":data(ui-droppable)" ).filter(function() {
-                                       return $( this ).droppable( "instance" ).options.scope === scope;
-                               });
-
-                               if ( parent.length ) {
-                                       parentInstance = $( parent[ 0 ] ).droppable( "instance" );
-                                       parentInstance.greedyChild = ( c === "isover" );
-                               }
-                       }
-
-                       // we just moved into a greedy child
-                       if ( parentInstance && c === "isover" ) {
-                               parentInstance.isover = false;
-                               parentInstance.isout = true;
-                               parentInstance._out.call( parentInstance, event );
-                       }
-
-                       this[ c ] = true;
-                       this[c === "isout" ? "isover" : "isout"] = false;
-                       this[c === "isover" ? "_over" : "_out"].call( this, event );
-
-                       // we just moved out of a greedy child
-                       if ( parentInstance && c === "isout" ) {
-                               parentInstance.isout = false;
-                               parentInstance.isover = true;
-                               parentInstance._over.call( parentInstance, event );
-                       }
-               });
-
-       },
-       dragStop: function( draggable, event ) {
-               draggable.element.parentsUntil( "body" ).unbind( "scroll.droppable" );
-               // Call prepareOffsets one final time since IE does not fire return scroll events when overflow was caused by drag (see #5003)
-               if ( !draggable.options.refreshPositions ) {
-                       $.ui.ddmanager.prepareOffsets( draggable, event );
-               }
-       }
-};
-
-var droppable = $.ui.droppable;
-
-
-/*!
- * jQuery UI Resizable 1.11.3
- * http://jqueryui.com
- *
- * Copyright jQuery Foundation and other contributors
- * Released under the MIT license.
- * http://jquery.org/license
- *
- * http://api.jqueryui.com/resizable/
- */
-
-
-$.widget("ui.resizable", $.ui.mouse, {
-       version: "1.11.3",
-       widgetEventPrefix: "resize",
-       options: {
-               alsoResize: false,
-               animate: false,
-               animateDuration: "slow",
-               animateEasing: "swing",
-               aspectRatio: false,
-               autoHide: false,
-               containment: false,
-               ghost: false,
-               grid: false,
-               handles: "e,s,se",
-               helper: false,
-               maxHeight: null,
-               maxWidth: null,
-               minHeight: 10,
-               minWidth: 10,
-               // See #7960
-               zIndex: 90,
-
-               // callbacks
-               resize: null,
-               start: null,
-               stop: null
-       },
-
-       _num: function( value ) {
-               return parseInt( value, 10 ) || 0;
-       },
-
-       _isNumber: function( value ) {
-               return !isNaN( parseInt( value, 10 ) );
-       },
-
-       _hasScroll: function( el, a ) {
-
-               if ( $( el ).css( "overflow" ) === "hidden") {
-                       return false;
-               }
-
-               var scroll = ( a && a === "left" ) ? "scrollLeft" : "scrollTop",
-                       has = false;
-
-               if ( el[ scroll ] > 0 ) {
-                       return true;
-               }
-
-               // TODO: determine which cases actually cause this to happen
-               // if the element doesn't have the scroll set, see if it's possible to
-               // set the scroll
-               el[ scroll ] = 1;
-               has = ( el[ scroll ] > 0 );
-               el[ scroll ] = 0;
-               return has;
-       },
-
-       _create: function() {
-
-               var n, i, handle, axis, hname,
-                       that = this,
-                       o = this.options;
-               this.element.addClass("ui-resizable");
-
-               $.extend(this, {
-                       _aspectRatio: !!(o.aspectRatio),
-                       aspectRatio: o.aspectRatio,
-                       originalElement: this.element,
-                       _proportionallyResizeElements: [],
-                       _helper: o.helper || o.ghost || o.animate ? o.helper || "ui-resizable-helper" : null
-               });
-
-               // Wrap the element if it cannot hold child nodes
-               if (this.element[0].nodeName.match(/^(canvas|textarea|input|select|button|img)$/i)) {
-
-                       this.element.wrap(
-                               $("<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 = true;
-
-                       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
-                       });
-                       // support: Safari
-                       // Prevent Safari textarea resize
-                       this.originalResizeStyle = this.originalElement.css("resize");
-                       this.originalElement.css("resize", "none");
-
-                       this._proportionallyResizeElements.push( this.originalElement.css({
-                               position: "static",
-                               zoom: 1,
-                               display: "block"
-                       }) );
-
-                       // support: IE9
-                       // avoid IE jump (hard set the margin)
-                       this.originalElement.css({ margin: this.originalElement.css("margin") });
-
-                       this._proportionallyResize();
-               }
-
-               this.handles = o.handles ||
-                       ( !$(".ui-resizable-handle", this.element).length ?
-                               "e,s,se" : {
-                                       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"
-                               } );
-
-               if (this.handles.constructor === String) {
-
-                       if ( this.handles === "all") {
-                               this.handles = "n,e,s,w,se,sw,ne,nw";
-                       }
-
-                       n = this.handles.split(",");
-                       this.handles = {};
-
-                       for (i = 0; i < n.length; i++) {
-
-                               handle = $.trim(n[i]);
-                               hname = "ui-resizable-" + handle;
-                               axis = $("<div class='ui-resizable-handle " + hname + "'></div>");
-
-                               axis.css({ zIndex: o.zIndex });
-
-                               // TODO : What's going on here?
-                               if ("se" === handle) {
-                                       axis.addClass("ui-icon ui-icon-gripsmall-diagonal-se");
-                               }
-
-                               this.handles[handle] = ".ui-resizable-" + handle;
-                               this.element.append(axis);
-                       }
-
-               }
-
-               this._renderAxis = function(target) {
-
-                       var i, axis, padPos, padWrapper;
-
-                       target = target || this.element;
-
-                       for (i in this.handles) {
-
-                               if (this.handles[i].constructor === String) {
-                                       this.handles[i] = this.element.children( this.handles[ i ] ).first().show();
-                               }
-
-                               if (this.elementIsWrapper && this.originalElement[0].nodeName.match(/^(textarea|input|select|button)$/i)) {
-
-                                       axis = $(this.handles[i], this.element);
-
-                                       padWrapper = /sw|ne|nw|se|n|s/.test(i) ? axis.outerHeight() : axis.outerWidth();
-
-                                       padPos = [ "padding",
-                                               /ne|nw|n/.test(i) ? "Top" :
-                                               /se|sw|s/.test(i) ? "Bottom" :
-                                               /^e$/.test(i) ? "Right" : "Left" ].join("");
-
-                                       target.css(padPos, padWrapper);
-
-                                       this._proportionallyResize();
-
-                               }
-
-                               // TODO: What's that good for? There's not anything to be executed left
-                               if (!$(this.handles[i]).length) {
-                                       continue;
-                               }
-                       }
-               };
-
-               // TODO: make renderAxis a prototype function
-               this._renderAxis(this.element);
-
-               this._handles = $(".ui-resizable-handle", this.element)
-                       .disableSelection();
-
-               this._handles.mouseover(function() {
-                       if (!that.resizing) {
-                               if (this.className) {
-                                       axis = this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i);
-                               }
-                               that.axis = axis && axis[1] ? axis[1] : "se";
-                       }
-               });
-
-               if (o.autoHide) {
-                       this._handles.hide();
-                       $(this.element)
-                               .addClass("ui-resizable-autohide")
-                               .mouseenter(function() {
-                                       if (o.disabled) {
-                                               return;
-                                       }
-                                       $(this).removeClass("ui-resizable-autohide");
-                                       that._handles.show();
-                               })
-                               .mouseleave(function() {
-                                       if (o.disabled) {
-                                               return;
-                                       }
-                                       if (!that.resizing) {
-                                               $(this).addClass("ui-resizable-autohide");
-                                               that._handles.hide();
-                                       }
-                               });
-               }
-
-               this._mouseInit();
-
-       },
-
-       _destroy: function() {
-
-               this._mouseDestroy();
-
-               var wrapper,
-                       _destroy = function(exp) {
-                               $(exp)
-                                       .removeClass("ui-resizable ui-resizable-disabled ui-resizable-resizing")
-                                       .removeData("resizable")
-                                       .removeData("ui-resizable")
-                                       .unbind(".resizable")
-                                       .find(".ui-resizable-handle")
-                                               .remove();
-                       };
-
-               // TODO: Unwrap at same DOM position
-               if (this.elementIsWrapper) {
-                       _destroy(this.element);
-                       wrapper = this.element;
-                       this.originalElement.css({
-                               position: wrapper.css("position"),
-                               width: wrapper.outerWidth(),
-                               height: wrapper.outerHeight(),
-                               top: wrapper.css("top"),
-                               left: wrapper.css("left")
-                       }).insertAfter( wrapper );
-                       wrapper.remove();
-               }
-
-               this.originalElement.css("resize", this.originalResizeStyle);
-               _destroy(this.originalElement);
-
-               return this;
-       },
-
-       _mouseCapture: function(event) {
-               var i, handle,
-                       capture = false;
-
-               for (i in this.handles) {
-                       handle = $(this.handles[i])[0];
-                       if (handle === event.target || $.contains(handle, event.target)) {
-                               capture = true;
-                       }
-               }
-
-               return !this.options.disabled && capture;
-       },
-
-       _mouseStart: function(event) {
-
-               var curleft, curtop, cursor,
-                       o = this.options,
-                       el = this.element;
-
-               this.resizing = true;
-
-               this._renderProxy();
-
-               curleft = this._num(this.helper.css("left"));
-               curtop = this._num(this.helper.css("top"));
-
-               if (o.containment) {
-                       curleft += $(o.containment).scrollLeft() || 0;
-                       curtop += $(o.containment).scrollTop() || 0;
-               }
-
-               this.offset = this.helper.offset();
-               this.position = { left: curleft, top: curtop };
-
-               this.size = this._helper ? {
-                               width: this.helper.width(),
-                               height: this.helper.height()
-                       } : {
-                               width: el.width(),
-                               height: el.height()
-                       };
-
-               this.originalSize = this._helper ? {
-                               width: el.outerWidth(),
-                               height: el.outerHeight()
-                       } : {
-                               width: el.width(),
-                               height: el.height()
-                       };
-
-               this.sizeDiff = {
-                       width: el.outerWidth() - el.width(),
-                       height: el.outerHeight() - el.height()
-               };
-
-               this.originalPosition = { left: curleft, top: curtop };
-               this.originalMousePosition = { left: event.pageX, top: event.pageY };
-
-               this.aspectRatio = (typeof o.aspectRatio === "number") ?
-                       o.aspectRatio :
-                       ((this.originalSize.width / this.originalSize.height) || 1);
-
-               cursor = $(".ui-resizable-" + this.axis).css("cursor");
-               $("body").css("cursor", cursor === "auto" ? this.axis + "-resize" : cursor);
-
-               el.addClass("ui-resizable-resizing");
-               this._propagate("start", event);
-               return true;
-       },
-
-       _mouseDrag: function(event) {
-
-               var data, props,
-                       smp = this.originalMousePosition,
-                       a = this.axis,
-                       dx = (event.pageX - smp.left) || 0,
-                       dy = (event.pageY - smp.top) || 0,
-                       trigger = this._change[a];
-
-               this._updatePrevProperties();
-
-               if (!trigger) {
-                       return false;
-               }
-
-               data = trigger.apply(this, [ event, dx, dy ]);
-
-               this._updateVirtualBoundaries(event.shiftKey);
-               if (this._aspectRatio || event.shiftKey) {
-                       data = this._updateRatio(data, event);
-               }
-
-               data = this._respectSize(data, event);
-
-               this._updateCache(data);
-
-               this._propagate("resize", event);
-
-               props = this._applyChanges();
-
-               if ( !this._helper && this._proportionallyResizeElements.length ) {
-                       this._proportionallyResize();
-               }
-
-               if ( !$.isEmptyObject( props ) ) {
-                       this._updatePrevProperties();
-                       this._trigger( "resize", event, this.ui() );
-                       this._applyChanges();
-               }
-
-               return false;
-       },
-
-       _mouseStop: function(event) {
-
-               this.resizing = false;
-               var pr, ista, soffseth, soffsetw, s, left, top,
-                       o = this.options, that = this;
-
-               if (this._helper) {
-
-                       pr = this._proportionallyResizeElements;
-                       ista = pr.length && (/textarea/i).test(pr[0].nodeName);
-                       soffseth = ista && this._hasScroll(pr[0], "left") ? 0 : that.sizeDiff.height;
-                       soffsetw = ista ? 0 : that.sizeDiff.width;
-
-                       s = {
-                               width: (that.helper.width()  - soffsetw),
-                               height: (that.helper.height() - soffseth)
-                       };
-                       left = (parseInt(that.element.css("left"), 10) +
-                               (that.position.left - that.originalPosition.left)) || null;
-                       top = (parseInt(that.element.css("top"), 10) +
-                               (that.position.top - that.originalPosition.top)) || null;
-
-                       if (!o.animate) {
-                               this.element.css($.extend(s, { top: top, left: left }));
-                       }
-
-                       that.helper.height(that.size.height);
-                       that.helper.width(that.size.width);
-
-                       if (this._helper && !o.animate) {
-                               this._proportionallyResize();
-                       }
-               }
-
-               $("body").css("cursor", "auto");
-
-               this.element.removeClass("ui-resizable-resizing");
-
-               this._propagate("stop", event);
-
-               if (this._helper) {
-                       this.helper.remove();
-               }
-
-               return false;
-
-       },
-
-       _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 props = {};
-
-               if ( this.position.top !== this.prevPosition.top ) {
-                       props.top = this.position.top + "px";
-               }
-               if ( this.position.left !== this.prevPosition.left ) {
-                       props.left = this.position.left + "px";
-               }
-               if ( this.size.width !== this.prevSize.width ) {
-                       props.width = this.size.width + "px";
-               }
-               if ( this.size.height !== this.prevSize.height ) {
-                       props.height = this.size.height + "px";
-               }
-
-               this.helper.css( props );
-
-               return props;
-       },
-
-       _updateVirtualBoundaries: function(forceAspectRatio) {
-               var pMinWidth, pMaxWidth, pMinHeight, pMaxHeight, b,
-                       o = this.options;
-
-               b = {
-                       minWidth: this._isNumber(o.minWidth) ? o.minWidth : 0,
-                       maxWidth: this._isNumber(o.maxWidth) ? o.maxWidth : Infinity,
-                       minHeight: this._isNumber(o.minHeight) ? o.minHeight : 0,
-                       maxHeight: this._isNumber(o.maxHeight) ? o.maxHeight : Infinity
-               };
-
-               if (this._aspectRatio || forceAspectRatio) {
-                       pMinWidth = b.minHeight * this.aspectRatio;
-                       pMinHeight = b.minWidth / this.aspectRatio;
-                       pMaxWidth = b.maxHeight * this.aspectRatio;
-                       pMaxHeight = b.maxWidth / this.aspectRatio;
-
-                       if (pMinWidth > b.minWidth) {
-                               b.minWidth = pMinWidth;
-                       }
-                       if (pMinHeight > b.minHeight) {
-                               b.minHeight = pMinHeight;
-                       }
-                       if (pMaxWidth < b.maxWidth) {
-                               b.maxWidth = pMaxWidth;
-                       }
-                       if (pMaxHeight < b.maxHeight) {
-                               b.maxHeight = pMaxHeight;
-                       }
-               }
-               this._vBoundaries = b;
-       },
-
-       _updateCache: function(data) {
-               this.offset = this.helper.offset();
-               if (this._isNumber(data.left)) {
-                       this.position.left = data.left;
-               }
-               if (this._isNumber(data.top)) {
-                       this.position.top = data.top;
-               }
-               if (this._isNumber(data.height)) {
-                       this.size.height = data.height;
-               }
-               if (this._isNumber(data.width)) {
-                       this.size.width = data.width;
-               }
-       },
-
-       _updateRatio: function( data ) {
-
-               var cpos = this.position,
-                       csize = this.size,
-                       a = this.axis;
-
-               if (this._isNumber(data.height)) {
-                       data.width = (data.height * this.aspectRatio);
-               } else if (this._isNumber(data.width)) {
-                       data.height = (data.width / this.aspectRatio);
-               }
-
-               if (a === "sw") {
-                       data.left = cpos.left + (csize.width - data.width);
-                       data.top = null;
-               }
-               if (a === "nw") {
-                       data.top = cpos.top + (csize.height - data.height);
-                       data.left = cpos.left + (csize.width - data.width);
-               }
-
-               return data;
-       },
-
-       _respectSize: function( data ) {
-
-               var o = this._vBoundaries,
-                       a = this.axis,
-                       ismaxw = this._isNumber(data.width) && o.maxWidth && (o.maxWidth < data.width),
-                       ismaxh = this._isNumber(data.height) && o.maxHeight && (o.maxHeight < data.height),
-                       isminw = this._isNumber(data.width) && o.minWidth && (o.minWidth > data.width),
-                       isminh = this._isNumber(data.height) && o.minHeight && (o.minHeight > data.height),
-                       dw = this.originalPosition.left + this.originalSize.width,
-                       dh = this.position.top + this.size.height,
-                       cw = /sw|nw|w/.test(a), ch = /nw|ne|n/.test(a);
-               if (isminw) {
-                       data.width = o.minWidth;
-               }
-               if (isminh) {
-                       data.height = o.minHeight;
-               }
-               if (ismaxw) {
-                       data.width = o.maxWidth;
-               }
-               if (ismaxh) {
-                       data.height = o.maxHeight;
-               }
-
-               if (isminw && cw) {
-                       data.left = dw - o.minWidth;
-               }
-               if (ismaxw && cw) {
-                       data.left = dw - o.maxWidth;
-               }
-               if (isminh && ch) {
-                       data.top = dh - o.minHeight;
-               }
-               if (ismaxh && ch) {
-                       data.top = dh - o.maxHeight;
-               }
-
-               // Fixing jump error on top/left - bug #2330
-               if (!data.width && !data.height && !data.left && data.top) {
-                       data.top = null;
-               } else if (!data.width && !data.height && !data.top && data.left) {
-                       data.left = null;
-               }
-
-               return data;
-       },
-
-       _getPaddingPlusBorderDimensions: function( element ) {
-               var i = 0,
-                       widths = [],
-                       borders = [
-                               element.css( "borderTopWidth" ),
-                               element.css( "borderRightWidth" ),
-                               element.css( "borderBottomWidth" ),
-                               element.css( "borderLeftWidth" )
-                       ],
-                       paddings = [
-                               element.css( "paddingTop" ),
-                               element.css( "paddingRight" ),
-                               element.css( "paddingBottom" ),
-                               element.css( "paddingLeft" )
-                       ];
-
-               for ( ; i < 4; i++ ) {
-                       widths[ i ] = ( parseInt( borders[ i ], 10 ) || 0 );
-                       widths[ i ] += ( parseInt( paddings[ i ], 10 ) || 0 );
-               }
-
-               return {
-                       height: widths[ 0 ] + widths[ 2 ],
-                       width: widths[ 1 ] + widths[ 3 ]
-               };
-       },
-
-       _proportionallyResize: function() {
-
-               if (!this._proportionallyResizeElements.length) {
-                       return;
-               }
-
-               var prel,
-                       i = 0,
-                       element = this.helper || this.element;
-
-               for ( ; i < this._proportionallyResizeElements.length; i++) {
-
-                       prel = this._proportionallyResizeElements[i];
-
-                       // TODO: Seems like a bug to cache this.outerDimensions
-                       // considering that we are in a loop.
-                       if (!this.outerDimensions) {
-                               this.outerDimensions = this._getPaddingPlusBorderDimensions( prel );
-                       }
-
-                       prel.css({
-                               height: (element.height() - this.outerDimensions.height) || 0,
-                               width: (element.width() - this.outerDimensions.width) || 0
-                       });
-
-               }
-
-       },
-
-       _renderProxy: function() {
-
-               var el = this.element, o = this.options;
-               this.elementOffset = el.offset();
-
-               if (this._helper) {
-
-                       this.helper = this.helper || $("<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 //TODO: Don't modify option
-                       });
-
-                       this.helper
-                               .appendTo("body")
-                               .disableSelection();
-
-               } else {
-                       this.helper = this.element;
-               }
-
-       },
-
-       _change: {
-               e: function(event, dx) {
-                       return { width: this.originalSize.width + dx };
-               },
-               w: function(event, dx) {
-                       var cs = this.originalSize, sp = this.originalPosition;
-                       return { left: sp.left + dx, width: cs.width - dx };
-               },
-               n: function(event, dx, dy) {
-                       var cs = this.originalSize, sp = this.originalPosition;
-                       return { top: sp.top + dy, height: cs.height - dy };
-               },
-               s: function(event, dx, dy) {
-                       return { height: this.originalSize.height + dy };
-               },
-               se: function(event, dx, dy) {
-                       return $.extend(this._change.s.apply(this, arguments),
-                               this._change.e.apply(this, [ event, dx, dy ]));
-               },
-               sw: function(event, dx, dy) {
-                       return $.extend(this._change.s.apply(this, arguments),
-                               this._change.w.apply(this, [ event, dx, dy ]));
-               },
-               ne: function(event, dx, dy) {
-                       return $.extend(this._change.n.apply(this, arguments),
-                               this._change.e.apply(this, [ event, dx, dy ]));
-               },
-               nw: function(event, dx, dy) {
-                       return $.extend(this._change.n.apply(this, arguments),
-                               this._change.w.apply(this, [ event, dx, dy ]));
-               }
-       },
-
-       _propagate: function(n, event) {
-               $.ui.plugin.call(this, n, [ event, this.ui() ]);
-               (n !== "resize" && this._trigger(n, event, 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
-               };
-       }
-
-});
-
-/*
- * Resizable Extensions
- */
-
-$.ui.plugin.add("resizable", "animate", {
-
-       stop: function( event ) {
-               var that = $(this).resizable( "instance" ),
-                       o = that.options,
-                       pr = that._proportionallyResizeElements,
-                       ista = pr.length && (/textarea/i).test(pr[0].nodeName),
-                       soffseth = ista && that._hasScroll(pr[0], "left") ? 0 : that.sizeDiff.height,
-                       soffsetw = ista ? 0 : that.sizeDiff.width,
-                       style = { width: (that.size.width - soffsetw), height: (that.size.height - soffseth) },
-                       left = (parseInt(that.element.css("left"), 10) +
-                               (that.position.left - that.originalPosition.left)) || null,
-                       top = (parseInt(that.element.css("top"), 10) +
-                               (that.position.top - that.originalPosition.top)) || null;
-
-               that.element.animate(
-                       $.extend(style, top && left ? { top: top, left: left } : {}), {
-                               duration: o.animateDuration,
-                               easing: o.animateEasing,
-                               step: function() {
-
-                                       var data = {
-                                               width: parseInt(that.element.css("width"), 10),
-                                               height: parseInt(that.element.css("height"), 10),
-                                               top: parseInt(that.element.css("top"), 10),
-                                               left: parseInt(that.element.css("left"), 10)
-                                       };
-
-                                       if (pr && pr.length) {
-                                               $(pr[0]).css({ width: data.width, height: data.height });
-                                       }
-
-                                       // propagating resize, and updating values for each animation step
-                                       that._updateCache(data);
-                                       that._propagate("resize", event);
-
-                               }
-                       }
-               );
-       }
-
-});
-
-$.ui.plugin.add( "resizable", "containment", {
-
-       start: function() {
-               var element, p, co, ch, cw, width, height,
-                       that = $( this ).resizable( "instance" ),
-                       o = that.options,
-                       el = that.element,
-                       oc = o.containment,
-                       ce = ( oc instanceof $ ) ? oc.get( 0 ) : ( /parent/.test( oc ) ) ? el.parent().get( 0 ) : oc;
-
-               if ( !ce ) {
-                       return;
-               }
-
-               that.containerElement = $( ce );
-
-               if ( /document/.test( oc ) || oc === document ) {
-                       that.containerOffset = {
-                               left: 0,
-                               top: 0
-                       };
-                       that.containerPosition = {
-                               left: 0,
-                               top: 0
-                       };
-
-                       that.parentData = {
-                               element: $( document ),
-                               left: 0,
-                               top: 0,
-                               width: $( document ).width(),
-                               height: $( document ).height() || document.body.parentNode.scrollHeight
-                       };
-               } else {
-                       element = $( ce );
-                       p = [];
-                       $([ "Top", "Right", "Left", "Bottom" ]).each(function( i, name ) {
-                               p[ i ] = that._num( element.css( "padding" + name ) );
-                       });
-
-                       that.containerOffset = element.offset();
-                       that.containerPosition = element.position();
-                       that.containerSize = {
-                               height: ( element.innerHeight() - p[ 3 ] ),
-                               width: ( element.innerWidth() - p[ 1 ] )
-                       };
-
-                       co = that.containerOffset;
-                       ch = that.containerSize.height;
-                       cw = that.containerSize.width;
-                       width = ( that._hasScroll ( ce, "left" ) ? ce.scrollWidth : cw );
-                       height = ( that._hasScroll ( ce ) ? ce.scrollHeight : ch ) ;
-
-                       that.parentData = {
-                               element: ce,
-                               left: co.left,
-                               top: co.top,
-                               width: width,
-                               height: height
-                       };
-               }
-       },
-
-       resize: function( event ) {
-               var woset, hoset, isParent, isOffsetRelative,
-                       that = $( this ).resizable( "instance" ),
-                       o = that.options,
-                       co = that.containerOffset,
-                       cp = that.position,
-                       pRatio = that._aspectRatio || event.shiftKey,
-                       cop = {
-                               top: 0,
-                               left: 0
-                       },
-                       ce = that.containerElement,
-                       continueResize = true;
-
-               if ( ce[ 0 ] !== document && ( /static/ ).test( ce.css( "position" ) ) ) {
-                       cop = co;
-               }
-
-               if ( cp.left < ( that._helper ? co.left : 0 ) ) {
-                       that.size.width = that.size.width +
-                               ( that._helper ?
-                                       ( that.position.left - co.left ) :
-                                       ( that.position.left - cop.left ) );
-
-                       if ( pRatio ) {
-                               that.size.height = that.size.width / that.aspectRatio;
-                               continueResize = false;
-                       }
-                       that.position.left = o.helper ? co.left : 0;
-               }
-
-               if ( cp.top < ( that._helper ? co.top : 0 ) ) {
-                       that.size.height = that.size.height +
-                               ( that._helper ?
-                                       ( that.position.top - co.top ) :
-                                       that.position.top );
-
-                       if ( pRatio ) {
-                               that.size.width = that.size.height * that.aspectRatio;
-                               continueResize = false;
-                       }
-                       that.position.top = that._helper ? co.top : 0;
-               }
-
-               isParent = that.containerElement.get( 0 ) === that.element.parent().get( 0 );
-               isOffsetRelative = /relative|absolute/.test( that.containerElement.css( "position" ) );
-
-               if ( isParent && isOffsetRelative ) {
-                       that.offset.left = that.parentData.left + that.position.left;
-                       that.offset.top = that.parentData.top + that.position.top;
-               } else {
-                       that.offset.left = that.element.offset().left;
-                       that.offset.top = that.element.offset().top;
-               }
-
-               woset = Math.abs( that.sizeDiff.width +
-                       (that._helper ?
-                               that.offset.left - cop.left :
-                               (that.offset.left - co.left)) );
-
-               hoset = Math.abs( that.sizeDiff.height +
-                       (that._helper ?
-                               that.offset.top - cop.top :
-                               (that.offset.top - co.top)) );
-
-               if ( woset + that.size.width >= that.parentData.width ) {
-                       that.size.width = that.parentData.width - woset;
-                       if ( pRatio ) {
-                               that.size.height = that.size.width / that.aspectRatio;
-                               continueResize = false;
-                       }
-               }
-
-               if ( hoset + that.size.height >= that.parentData.height ) {
-                       that.size.height = that.parentData.height - hoset;
-                       if ( pRatio ) {
-                               that.size.width = that.size.height * that.aspectRatio;
-                               continueResize = false;
-                       }
-               }
-
-               if ( !continueResize ) {
-                       that.position.left = that.prevPosition.left;
-                       that.position.top = that.prevPosition.top;
-                       that.size.width = that.prevSize.width;
-                       that.size.height = that.prevSize.height;
-               }
-       },
-
-       stop: function() {
-               var that = $( this ).resizable( "instance" ),
-                       o = that.options,
-                       co = that.containerOffset,
-                       cop = that.containerPosition,
-                       ce = that.containerElement,
-                       helper = $( that.helper ),
-                       ho = helper.offset(),
-                       w = helper.outerWidth() - that.sizeDiff.width,
-                       h = helper.outerHeight() - that.sizeDiff.height;
-
-               if ( that._helper && !o.animate && ( /relative/ ).test( ce.css( "position" ) ) ) {
-                       $( this ).css({
-                               left: ho.left - cop.left - co.left,
-                               width: w,
-                               height: h
-                       });
-               }
-
-               if ( that._helper && !o.animate && ( /static/ ).test( ce.css( "position" ) ) ) {
-                       $( this ).css({
-                               left: ho.left - cop.left - co.left,
-                               width: w,
-                               height: h
-                       });
-               }
-       }
-});
-
-$.ui.plugin.add("resizable", "alsoResize", {
-
-       start: function() {
-               var that = $(this).resizable( "instance" ),
-                       o = that.options,
-                       _store = function(exp) {
-                               $(exp).each(function() {
-                                       var el = $(this);
-                                       el.data("ui-resizable-alsoresize", {
-                                               width: parseInt(el.width(), 10), height: parseInt(el.height(), 10),
-                                               left: parseInt(el.css("left"), 10), top: parseInt(el.css("top"), 10)
-                                       });
-                               });
-                       };
-
-               if (typeof(o.alsoResize) === "object" && !o.alsoResize.parentNode) {
-                       if (o.alsoResize.length) {
-                               o.alsoResize = o.alsoResize[0];
-                               _store(o.alsoResize);
-                       } else {
-                               $.each(o.alsoResize, function(exp) {
-                                       _store(exp);
-                               });
-                       }
-               } else {
-                       _store(o.alsoResize);
-               }
-       },
-
-       resize: function(event, ui) {
-               var that = $(this).resizable( "instance" ),
-                       o = that.options,
-                       os = that.originalSize,
-                       op = that.originalPosition,
-                       delta = {
-                               height: (that.size.height - os.height) || 0,
-                               width: (that.size.width - os.width) || 0,
-                               top: (that.position.top - op.top) || 0,
-                               left: (that.position.left - op.left) || 0
-                       },
-
-                       _alsoResize = function(exp, c) {
-                               $(exp).each(function() {
-                                       var el = $(this), start = $(this).data("ui-resizable-alsoresize"), style = {},
-                                               css = c && c.length ?
-                                                       c :
-                                                       el.parents(ui.originalElement[0]).length ?
-                                                               [ "width", "height" ] :
-                                                               [ "width", "height", "top", "left" ];
-
-                                       $.each(css, function(i, prop) {
-                                               var sum = (start[prop] || 0) + (delta[prop] || 0);
-                                               if (sum && sum >= 0) {
-                                                       style[prop] = sum || null;
-                                               }
-                                       });
-
-                                       el.css(style);
-                               });
-                       };
-
-               if (typeof(o.alsoResize) === "object" && !o.alsoResize.nodeType) {
-                       $.each(o.alsoResize, function(exp, c) {
-                               _alsoResize(exp, c);
-                       });
-               } else {
-                       _alsoResize(o.alsoResize);
-               }
-       },
-
-       stop: function() {
-               $(this).removeData("resizable-alsoresize");
-       }
-});
-
-$.ui.plugin.add("resizable", "ghost", {
-
-       start: function() {
-
-               var that = $(this).resizable( "instance" ), o = that.options, cs = that.size;
-
-               that.ghost = that.originalElement.clone();
-               that.ghost
-                       .css({
-                               opacity: 0.25,
-                               display: "block",
-                               position: "relative",
-                               height: cs.height,
-                               width: cs.width,
-                               margin: 0,
-                               left: 0,
-                               top: 0
-                       })
-                       .addClass("ui-resizable-ghost")
-                       .addClass(typeof o.ghost === "string" ? o.ghost : "");
-
-               that.ghost.appendTo(that.helper);
-
-       },
-
-       resize: function() {
-               var that = $(this).resizable( "instance" );
-               if (that.ghost) {
-                       that.ghost.css({
-                               position: "relative",
-                               height: that.size.height,
-                               width: that.size.width
-                       });
-               }
-       },
-
-       stop: function() {
-               var that = $(this).resizable( "instance" );
-               if (that.ghost && that.helper) {
-                       that.helper.get(0).removeChild(that.ghost.get(0));
-               }
-       }
-
-});
-
-$.ui.plugin.add("resizable", "grid", {
-
-       resize: function() {
-               var outerDimensions,
-                       that = $(this).resizable( "instance" ),
-                       o = that.options,
-                       cs = that.size,
-                       os = that.originalSize,
-                       op = that.originalPosition,
-                       a = that.axis,
-                       grid = typeof o.grid === "number" ? [ o.grid, o.grid ] : o.grid,
-                       gridX = (grid[0] || 1),
-                       gridY = (grid[1] || 1),
-                       ox = Math.round((cs.width - os.width) / gridX) * gridX,
-                       oy = Math.round((cs.height - os.height) / gridY) * gridY,
-                       newWidth = os.width + ox,
-                       newHeight = os.height + oy,
-                       isMaxWidth = o.maxWidth && (o.maxWidth < newWidth),
-                       isMaxHeight = o.maxHeight && (o.maxHeight < newHeight),
-                       isMinWidth = o.minWidth && (o.minWidth > newWidth),
-                       isMinHeight = o.minHeight && (o.minHeight > newHeight);
-
-               o.grid = grid;
-
-               if (isMinWidth) {
-                       newWidth += gridX;
-               }
-               if (isMinHeight) {
-                       newHeight += gridY;
-               }
-               if (isMaxWidth) {
-                       newWidth -= gridX;
-               }
-               if (isMaxHeight) {
-                       newHeight -= gridY;
-               }
-
-               if (/^(se|s|e)$/.test(a)) {
-                       that.size.width = newWidth;
-                       that.size.height = newHeight;
-               } else if (/^(ne)$/.test(a)) {
-                       that.size.width = newWidth;
-                       that.size.height = newHeight;
-                       that.position.top = op.top - oy;
-               } else if (/^(sw)$/.test(a)) {
-                       that.size.width = newWidth;
-                       that.size.height = newHeight;
-                       that.position.left = op.left - ox;
-               } else {
-                       if ( newHeight - gridY <= 0 || newWidth - gridX <= 0) {
-                               outerDimensions = that._getPaddingPlusBorderDimensions( this );
-                       }
-
-                       if ( newHeight - gridY > 0 ) {
-                               that.size.height = newHeight;
-                               that.position.top = op.top - oy;
-                       } else {
-                               newHeight = gridY - outerDimensions.height;
-                               that.size.height = newHeight;
-                               that.position.top = op.top + os.height - newHeight;
-                       }
-                       if ( newWidth - gridX > 0 ) {
-                               that.size.width = newWidth;
-                               that.position.left = op.left - ox;
-                       } else {
-                               newWidth = gridX - outerDimensions.width;
-                               that.size.width = newWidth;
-                               that.position.left = op.left + os.width - newWidth;
-                       }
-               }
-       }
-
-});
-
-var resizable = $.ui.resizable;
-
-
-/*!
- * jQuery UI Selectable 1.11.3
- * http://jqueryui.com
- *
- * Copyright jQuery Foundation and other contributors
- * Released under the MIT license.
- * http://jquery.org/license
- *
- * http://api.jqueryui.com/selectable/
- */
-
-
-var selectable = $.widget("ui.selectable", $.ui.mouse, {
-       version: "1.11.3",
-       options: {
-               appendTo: "body",
-               autoRefresh: true,
-               distance: 0,
-               filter: "*",
-               tolerance: "touch",
-
-               // callbacks
-               selected: null,
-               selecting: null,
-               start: null,
-               stop: null,
-               unselected: null,
-               unselecting: null
-       },
-       _create: function() {
-               var selectees,
-                       that = this;
-
-               this.element.addClass("ui-selectable");
-
-               this.dragged = false;
-
-               // cache selectee children based on filter
-               this.refresh = function() {
-                       selectees = $(that.options.filter, that.element[0]);
-                       selectees.addClass("ui-selectee");
-                       selectees.each(function() {
-                               var $this = $(this),
-                                       pos = $this.offset();
-                               $.data(this, "selectable-item", {
-                                       element: this,
-                                       $element: $this,
-                                       left: pos.left,
-                                       top: pos.top,
-                                       right: pos.left + $this.outerWidth(),
-                                       bottom: pos.top + $this.outerHeight(),
-                                       startselected: false,
-                                       selected: $this.hasClass("ui-selected"),
-                                       selecting: $this.hasClass("ui-selecting"),
-                                       unselecting: $this.hasClass("ui-unselecting")
-                               });
-                       });
-               };
-               this.refresh();
-
-               this.selectees = selectees.addClass("ui-selectee");
-
-               this._mouseInit();
-
-               this.helper = $("<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(event) {
-               var that = this,
-                       options = this.options;
-
-               this.opos = [ event.pageX, event.pageY ];
-
-               if (this.options.disabled) {
-                       return;
-               }
-
-               this.selectees = $(options.filter, this.element[0]);
-
-               this._trigger("start", event);
-
-               $(options.appendTo).append(this.helper);
-               // position helper (lasso)
-               this.helper.css({
-                       "left": event.pageX,
-                       "top": event.pageY,
-                       "width": 0,
-                       "height": 0
-               });
-
-               if (options.autoRefresh) {
-                       this.refresh();
-               }
-
-               this.selectees.filter(".ui-selected").each(function() {
-                       var selectee = $.data(this, "selectable-item");
-                       selectee.startselected = true;
-                       if (!event.metaKey && !event.ctrlKey) {
-                               selectee.$element.removeClass("ui-selected");
-                               selectee.selected = false;
-                               selectee.$element.addClass("ui-unselecting");
-                               selectee.unselecting = true;
-                               // selectable UNSELECTING callback
-                               that._trigger("unselecting", event, {
-                                       unselecting: selectee.element
-                               });
-                       }
-               });
-
-               $(event.target).parents().addBack().each(function() {
-                       var doSelect,
-                               selectee = $.data(this, "selectable-item");
-                       if (selectee) {
-                               doSelect = (!event.metaKey && !event.ctrlKey) || !selectee.$element.hasClass("ui-selected");
-                               selectee.$element
-                                       .removeClass(doSelect ? "ui-unselecting" : "ui-selected")
-                                       .addClass(doSelect ? "ui-selecting" : "ui-unselecting");
-                               selectee.unselecting = !doSelect;
-                               selectee.selecting = doSelect;
-                               selectee.selected = doSelect;
-                               // selectable (UN)SELECTING callback
-                               if (doSelect) {
-                                       that._trigger("selecting", event, {
-                                               selecting: selectee.element
-                                       });
-                               } else {
-                                       that._trigger("unselecting", event, {
-                                               unselecting: selectee.element
-                                       });
-                               }
-                               return false;
-                       }
-               });
-
-       },
-
-       _mouseDrag: function(event) {
-
-               this.dragged = true;
-
-               if (this.options.disabled) {
-                       return;
-               }
-
-               var tmp,
-                       that = this,
-                       options = this.options,
-                       x1 = this.opos[0],
-                       y1 = this.opos[1],
-                       x2 = event.pageX,
-                       y2 = event.pageY;
-
-               if (x1 > x2) { tmp = x2; x2 = x1; x1 = tmp; }
-               if (y1 > y2) { tmp = y2; y2 = y1; y1 = tmp; }
-               this.helper.css({ left: x1, top: y1, width: x2 - x1, height: y2 - y1 });
-
-               this.selectees.each(function() {
-                       var selectee = $.data(this, "selectable-item"),
-                               hit = false;
-
-                       //prevent helper from being selected if appendTo: selectable
-                       if (!selectee || selectee.element === that.element[0]) {
-                               return;
-                       }
-
-                       if (options.tolerance === "touch") {
-                               hit = ( !(selectee.left > x2 || selectee.right < x1 || selectee.top > y2 || selectee.bottom < y1) );
-                       } else if (options.tolerance === "fit") {
-                               hit = (selectee.left > x1 && selectee.right < x2 && selectee.top > y1 && selectee.bottom < y2);
-                       }
-
-                       if (hit) {
-                               // SELECT
-                               if (selectee.selected) {
-                                       selectee.$element.removeClass("ui-selected");
-                                       selectee.selected = false;
-                               }
-                               if (selectee.unselecting) {
-                                       selectee.$element.removeClass("ui-unselecting");
-                                       selectee.unselecting = false;
-                               }
-                               if (!selectee.selecting) {
-                                       selectee.$element.addClass("ui-selecting");
-                                       selectee.selecting = true;
-                                       // selectable SELECTING callback
-                                       that._trigger("selecting", event, {
-                                               selecting: selectee.element
-                                       });
-                               }
-                       } else {
-                               // UNSELECT
-                               if (selectee.selecting) {
-                                       if ((event.metaKey || event.ctrlKey) && selectee.startselected) {
-                                               selectee.$element.removeClass("ui-selecting");
-                                               selectee.selecting = false;
-                                               selectee.$element.addClass("ui-selected");
-                                               selectee.selected = true;
-                                       } else {
-                                               selectee.$element.removeClass("ui-selecting");
-                                               selectee.selecting = false;
-                                               if (selectee.startselected) {
-                                                       selectee.$element.addClass("ui-unselecting");
-                                                       selectee.unselecting = true;
-                                               }
-                                               // selectable UNSELECTING callback
-                                               that._trigger("unselecting", event, {
-                                                       unselecting: selectee.element
-                                               });
-                                       }
-                               }
-                               if (selectee.selected) {
-                                       if (!event.metaKey && !event.ctrlKey && !selectee.startselected) {
-                                               selectee.$element.removeClass("ui-selected");
-                                               selectee.selected = false;
-
-                                               selectee.$element.addClass("ui-unselecting");
-                                               selectee.unselecting = true;
-                                               // selectable UNSELECTING callback
-                                               that._trigger("unselecting", event, {
-                                                       unselecting: selectee.element
-                                               });
-                                       }
-                               }
-                       }
-               });
-
-               return false;
-       },
-
-       _mouseStop: function(event) {
-               var that = this;
-
-               this.dragged = false;
-
-               $(".ui-unselecting", this.element[0]).each(function() {
-                       var selectee = $.data(this, "selectable-item");
-                       selectee.$element.removeClass("ui-unselecting");
-                       selectee.unselecting = false;
-                       selectee.startselected = false;
-                       that._trigger("unselected", event, {
-                               unselected: selectee.element
-                       });
-               });
-               $(".ui-selecting", this.element[0]).each(function() {
-                       var selectee = $.data(this, "selectable-item");
-                       selectee.$element.removeClass("ui-selecting").addClass("ui-selected");
-                       selectee.selecting = false;
-                       selectee.selected = true;
-                       selectee.startselected = true;
-                       that._trigger("selected", event, {
-                               selected: selectee.element
-                       });
-               });
-               this._trigger("stop", event);
-
-               this.helper.remove();
-
-               return false;
-       }
-
-});
-
-
-/*!
- * jQuery UI Sortable 1.11.3
- * http://jqueryui.com
- *
- * Copyright jQuery Foundation and other contributors
- * Released under the MIT license.
- * http://jquery.org/license
- *
- * http://api.jqueryui.com/sortable/
- */
-
-
-var sortable = $.widget("ui.sortable", $.ui.mouse, {
-       version: "1.11.3",
-       widgetEventPrefix: "sort",
-       ready: false,
-       options: {
-               appendTo: "parent",
-               axis: false,
-               connectWith: false,
-               containment: false,
-               cursor: "auto",
-               cursorAt: false,
-               dropOnEmpty: true,
-               forcePlaceholderSize: false,
-               forceHelperSize: false,
-               grid: false,
-               handle: false,
-               helper: "original",
-               items: "> *",
-               opacity: false,
-               placeholder: false,
-               revert: false,
-               scroll: true,
-               scrollSensitivity: 20,
-               scrollSpeed: 20,
-               scope: "default",
-               tolerance: "intersect",
-               zIndex: 1000,
-
-               // callbacks
-               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( x, reference, size ) {
-               return ( x >= reference ) && ( x < ( reference + size ) );
-       },
-
-       _isFloating: function( item ) {
-               return (/left|right/).test(item.css("float")) || (/inline|table-cell/).test(item.css("display"));
-       },
-
-       _create: function() {
-
-               var o = this.options;
-               this.containerCache = {};
-               this.element.addClass("ui-sortable");
-
-               //Get the items
-               this.refresh();
-
-               //Let's determine if the items are being displayed horizontally
-               this.floating = this.items.length ? o.axis === "x" || this._isFloating(this.items[0].item) : false;
-
-               //Let's determine the parent's offset
-               this.offset = this.element.offset();
-
-               //Initialize mouse events for interaction
-               this._mouseInit();
-
-               this._setHandleClassName();
-
-               //We're ready to go
-               this.ready = true;
-
-       },
-
-       _setOption: function( key, value ) {
-               this._super( key, value );
-
-               if ( key === "handle" ) {
-                       this._setHandleClassName();
-               }
-       },
-
-       _setHandleClassName: function() {
-               this.element.find( ".ui-sortable-handle" ).removeClass( "ui-sortable-handle" );
-               $.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 i = this.items.length - 1; i >= 0; i-- ) {
-                       this.items[i].item.removeData(this.widgetName + "-item");
-               }
-
-               return this;
-       },
-
-       _mouseCapture: function(event, overrideHandle) {
-               var currentItem = null,
-                       validHandle = false,
-                       that = this;
-
-               if (this.reverting) {
-                       return false;
-               }
-
-               if(this.options.disabled || this.options.type === "static") {
-                       return false;
-               }
-
-               //We have to refresh the items data once first
-               this._refreshItems(event);
-
-               //Find out if the clicked node (or one of its parents) is a actual item in this.items
-               $(event.target).parents().each(function() {
-                       if($.data(this, that.widgetName + "-item") === that) {
-                               currentItem = $(this);
-                               return false;
-                       }
-               });
-               if($.data(event.target, that.widgetName + "-item") === that) {
-                       currentItem = $(event.target);
-               }
-
-               if(!currentItem) {
-                       return false;
-               }
-               if(this.options.handle && !overrideHandle) {
-                       $(this.options.handle, currentItem).find("*").addBack().each(function() {
-                               if(this === event.target) {
-                                       validHandle = true;
-                               }
-                       });
-                       if(!validHandle) {
-                               return false;
-                       }
-               }
-
-               this.currentItem = currentItem;
-               this._removeCurrentsFromItems();
-               return true;
-
-       },
-
-       _mouseStart: function(event, overrideHandle, noActivation) {
-
-               var i, body,
-                       o = this.options;
-
-               this.currentContainer = this;
-
-               //We only need to call refreshPositions, because the refreshItems call has been moved to mouseCapture
-               this.refreshPositions();
-
-               //Create and append the visible helper
-               this.helper = this._createHelper(event);
-
-               //Cache the helper size
-               this._cacheHelperProportions();
-
-               /*
-                * - Position generation -
-                * This block generates everything position related - it's the core of draggables.
-                */
-
-               //Cache the margins of the original element
-               this._cacheMargins();
-
-               //Get the next scrolling parent
-               this.scrollParent = this.helper.scrollParent();
-
-               //The element's absolute position on the page minus margins
-               this.offset = this.currentItem.offset();
-               this.offset = {
-                       top: this.offset.top - this.margins.top,
-                       left: this.offset.left - this.margins.left
-               };
-
-               $.extend(this.offset, {
-                       click: { //Where the click happened, relative to the element
-                               left: event.pageX - this.offset.left,
-                               top: event.pageY - this.offset.top
-                       },
-                       parent: this._getParentOffset(),
-                       relative: this._getRelativeOffset() //This is a relative to absolute position minus the actual position calculation - only used for relative positioned helper
-               });
-
-               // Only after we got the offset, we can change the helper's position to absolute
-               // TODO: Still need to figure out a way to make relative sorting possible
-               this.helper.css("position", "absolute");
-               this.cssPosition = this.helper.css("position");
-
-               //Generate the original position
-               this.originalPosition = this._generatePosition(event);
-               this.originalPageX = event.pageX;
-               this.originalPageY = event.pageY;
-
-               //Adjust the mouse offset relative to the helper if "cursorAt" is supplied
-               (o.cursorAt && this._adjustOffsetFromHelper(o.cursorAt));
-
-               //Cache the former DOM position
-               this.domPosition = { prev: this.currentItem.prev()[0], parent: this.currentItem.parent()[0] };
-
-               //If the helper is not the original, hide the original so it's not playing any role during the drag, won't cause anything bad this way
-               if(this.helper[0] !== this.currentItem[0]) {
-                       this.currentItem.hide();
-               }
-
-               //Create the placeholder
-               this._createPlaceholder();
-
-               //Set a containment if given in the options
-               if(o.containment) {
-                       this._setContainment();
-               }
-
-               if( o.cursor && o.cursor !== "auto" ) { // cursor option
-                       body = this.document.find( "body" );
-
-                       // support: IE
-                       this.storedCursor = body.css( "cursor" );
-                       body.css( "cursor", o.cursor );
-
-                       this.storedStylesheet = $( "<style>*{ cursor: "+o.cursor+" !important; }</style>" ).appendTo( body );
-               }
-
-               if(o.opacity) { // opacity option
-                       if (this.helper.css("opacity")) {
-                               this._storedOpacity = this.helper.css("opacity");
-                       }
-                       this.helper.css("opacity", o.opacity);
-               }
-
-               if(o.zIndex) { // zIndex option
-                       if (this.helper.css("zIndex")) {
-                               this._storedZIndex = this.helper.css("zIndex");
-                       }
-                       this.helper.css("zIndex", o.zIndex);
-               }
-
-               //Prepare scrolling
-               if(this.scrollParent[0] !== this.document[0] && this.scrollParent[0].tagName !== "HTML") {
-                       this.overflowOffset = this.scrollParent.offset();
-               }
-
-               //Call callbacks
-               this._trigger("start", event, this._uiHash());
-
-               //Recache the helper size
-               if(!this._preserveHelperProportions) {
-                       this._cacheHelperProportions();
-               }
-
-
-               //Post "activate" events to possible containers
-               if( !noActivation ) {
-                       for ( i = this.containers.length - 1; i >= 0; i-- ) {
-                               this.containers[ i ]._trigger( "activate", event, this._uiHash( this ) );
-                       }
-               }
-
-               //Prepare possible droppables
-               if($.ui.ddmanager) {
-                       $.ui.ddmanager.current = this;
-               }
-
-               if ($.ui.ddmanager && !o.dropBehaviour) {
-                       $.ui.ddmanager.prepareOffsets(this, event);
-               }
-
-               this.dragging = true;
-
-               this.helper.addClass("ui-sortable-helper");
-               this._mouseDrag(event); //Execute the drag once - this causes the helper not to be visible before getting its correct position
-               return true;
-
-       },
-
-       _mouseDrag: function(event) {
-               var i, item, itemElement, intersection,
-                       o = this.options,
-                       scrolled = false;
-
-               //Compute the helpers position
-               this.position = this._generatePosition(event);
-               this.positionAbs = this._convertPositionTo("absolute");
-
-               if (!this.lastPositionAbs) {
-                       this.lastPositionAbs = this.positionAbs;
-               }
-
-               //Do scrolling
-               if(this.options.scroll) {
-                       if(this.scrollParent[0] !== this.document[0] && this.scrollParent[0].tagName !== "HTML") {
-
-                               if((this.overflowOffset.top + this.scrollParent[0].offsetHeight) - event.pageY < o.scrollSensitivity) {
-                                       this.scrollParent[0].scrollTop = scrolled = this.scrollParent[0].scrollTop + o.scrollSpeed;
-                               } else if(event.pageY - this.overflowOffset.top < o.scrollSensitivity) {
-                                       this.scrollParent[0].scrollTop = scrolled = this.scrollParent[0].scrollTop - o.scrollSpeed;
-                               }
-
-                               if((this.overflowOffset.left + this.scrollParent[0].offsetWidth) - event.pageX < o.scrollSensitivity) {
-                                       this.scrollParent[0].scrollLeft = scrolled = this.scrollParent[0].scrollLeft + o.scrollSpeed;
-                               } else if(event.pageX - this.overflowOffset.left < o.scrollSensitivity) {
-                                       this.scrollParent[0].scrollLeft = scrolled = this.scrollParent[0].scrollLeft - o.scrollSpeed;
-                               }
-
-                       } else {
-
-                               if(event.pageY - this.document.scrollTop() < o.scrollSensitivity) {
-                                       scrolled = this.document.scrollTop(this.document.scrollTop() - o.scrollSpeed);
-                               } else if(this.window.height() - (event.pageY - this.document.scrollTop()) < o.scrollSensitivity) {
-                                       scrolled = this.document.scrollTop(this.document.scrollTop() + o.scrollSpeed);
-                               }
-
-                               if(event.pageX - this.document.scrollLeft() < o.scrollSensitivity) {
-                                       scrolled = this.document.scrollLeft(this.document.scrollLeft() - o.scrollSpeed);
-                               } else if(this.window.width() - (event.pageX - this.document.scrollLeft()) < o.scrollSensitivity) {
-                                       scrolled = this.document.scrollLeft(this.document.scrollLeft() + o.scrollSpeed);
-                               }
-
-                       }
-
-                       if(scrolled !== false && $.ui.ddmanager && !o.dropBehaviour) {
-                               $.ui.ddmanager.prepareOffsets(this, event);
-                       }
-               }
-
-               //Regenerate the absolute position used for position checks
-               this.positionAbs = this._convertPositionTo("absolute");
-
-               //Set the helper position
-               if(!this.options.axis || this.options.axis !== "y") {
-                       this.helper[0].style.left = this.position.left+"px";
-               }
-               if(!this.options.axis || this.options.axis !== "x") {
-                       this.helper[0].style.top = this.position.top+"px";
-               }
-
-               //Rearrange
-               for (i = this.items.length - 1; i >= 0; i--) {
-
-                       //Cache variables and intersection, continue if no intersection
-                       item = this.items[i];
-                       itemElement = item.item[0];
-                       intersection = this._intersectsWithPointer(item);
-                       if (!intersection) {
-                               continue;
-                       }
-
-                       // Only put the placeholder inside the current Container, skip all
-                       // items from other containers. This works because when moving
-                       // an item from one container to another the
-                       // currentContainer is switched before the placeholder is moved.
-                       //
-                       // Without this, moving items in "sub-sortables" can cause
-                       // the placeholder to jitter between the outer and inner container.
-                       if (item.instance !== this.currentContainer) {
-                               continue;
-                       }
-
-                       // cannot intersect with itself
-                       // no useless actions that have been done before
-                       // no action if the item moved is the parent of the item checked
-                       if (itemElement !== this.currentItem[0] &&
-                               this.placeholder[intersection === 1 ? "next" : "prev"]()[0] !== itemElement &&
-                               !$.contains(this.placeholder[0], itemElement) &&
-                               (this.options.type === "semi-dynamic" ? !$.contains(this.element[0], itemElement) : true)
-                       ) {
-
-                               this.direction = intersection === 1 ? "down" : "up";
-
-                               if (this.options.tolerance === "pointer" || this._intersectsWithSides(item)) {
-                                       this._rearrange(event, item);
-                               } else {
-                                       break;
-                               }
-
-                               this._trigger("change", event, this._uiHash());
-                               break;
-                       }
-               }
-
-               //Post events to containers
-               this._contactContainers(event);
-
-               //Interconnect with droppables
-               if($.ui.ddmanager) {
-                       $.ui.ddmanager.drag(this, event);
-               }
-
-               //Call callbacks
-               this._trigger("sort", event, this._uiHash());
-
-               this.lastPositionAbs = this.positionAbs;
-               return false;
-
-       },
-
-       _mouseStop: function(event, noPropagation) {
-
-               if(!event) {
-                       return;
-               }
-
-               //If we are using droppables, inform the manager about the drop
-               if ($.ui.ddmanager && !this.options.dropBehaviour) {
-                       $.ui.ddmanager.drop(this, event);
-               }
-
-               if(this.options.revert) {
-                       var that = this,
-                               cur = this.placeholder.offset(),
-                               axis = this.options.axis,
-                               animation = {};
-
-                       if ( !axis || axis === "x" ) {
-                               animation.left = cur.left - this.offset.parent.left - this.margins.left + (this.offsetParent[0] === this.document[0].body ? 0 : this.offsetParent[0].scrollLeft);
-                       }
-                       if ( !axis || axis === "y" ) {
-                               animation.top = cur.top - this.offset.parent.top - this.margins.top + (this.offsetParent[0] === this.document[0].body ? 0 : this.offsetParent[0].scrollTop);
-                       }
-                       this.reverting = true;
-                       $(this.helper).animate( animation, parseInt(this.options.revert, 10) || 500, function() {
-                               that._clear(event);
-                       });
-               } else {
-                       this._clear(event, noPropagation);
-               }
-
-               return false;
-
-       },
-
-       cancel: function() {
-
-               if(this.dragging) {
-
-                       this._mouseUp({ target: null });
-
-                       if(this.options.helper === "original") {
-                               this.currentItem.css(this._storedCSS).removeClass("ui-sortable-helper");
-                       } else {
-                               this.currentItem.show();
-                       }
-
-                       //Post deactivating events to containers
-                       for (var i = this.containers.length - 1; i >= 0; i--){
-                               this.containers[i]._trigger("deactivate", null, this._uiHash(this));
-                               if(this.containers[i].containerCache.over) {
-                                       this.containers[i]._trigger("out", null, this._uiHash(this));
-                                       this.containers[i].containerCache.over = 0;
-                               }
-                       }
-
-               }
-
-               if (this.placeholder) {
-                       //$(this.placeholder[0]).remove(); would have been the jQuery way - unfortunately, it unbinds ALL events from the original node!
-                       if(this.placeholder[0].parentNode) {
-                               this.placeholder[0].parentNode.removeChild(this.placeholder[0]);
-                       }
-                       if(this.options.helper !== "original" && this.helper && this.helper[0].parentNode) {
-                               this.helper.remove();
-                       }
-
-                       $.extend(this, {
-                               helper: null,
-                               dragging: false,
-                               reverting: false,
-                               _noFinalSort: null
-                       });
-
-                       if(this.domPosition.prev) {
-                               $(this.domPosition.prev).after(this.currentItem);
-                       } else {
-                               $(this.domPosition.parent).prepend(this.currentItem);
-                       }
-               }
-
-               return this;
-
-       },
-
-       serialize: function(o) {
-
-               var items = this._getItemsAsjQuery(o && o.connected),
-                       str = [];
-               o = o || {};
-
-               $(items).each(function() {
-                       var res = ($(o.item || this).attr(o.attribute || "id") || "").match(o.expression || (/(.+)[\-=_](.+)/));
-                       if (res) {
-                               str.push((o.key || res[1]+"[]")+"="+(o.key && o.expression ? res[1] : res[2]));
-                       }
-               });
-
-               if(!str.length && o.key) {
-                       str.push(o.key + "=");
-               }
-
-               return str.join("&");
-
-       },
-
-       toArray: function(o) {
-
-               var items = this._getItemsAsjQuery(o && o.connected),
-                       ret = [];
-
-               o = o || {};
-
-               items.each(function() { ret.push($(o.item || this).attr(o.attribute || "id") || ""); });
-               return ret;
-
-       },
-
-       /* Be careful with the following core functions */
-       _intersectsWith: function(item) {
-
-               var x1 = this.positionAbs.left,
-                       x2 = x1 + this.helperProportions.width,
-                       y1 = this.positionAbs.top,
-                       y2 = y1 + this.helperProportions.height,
-                       l = item.left,
-                       r = l + item.width,
-                       t = item.top,
-                       b = t + item.height,
-                       dyClick = this.offset.click.top,
-                       dxClick = this.offset.click.left,
-                       isOverElementHeight = ( this.options.axis === "x" ) || ( ( y1 + dyClick ) > t && ( y1 + dyClick ) < b ),
-                       isOverElementWidth = ( this.options.axis === "y" ) || ( ( x1 + dxClick ) > l && ( x1 + dxClick ) < r ),
-                       isOverElement = isOverElementHeight && isOverElementWidth;
-
-               if ( this.options.tolerance === "pointer" ||
-                       this.options.forcePointerForContainers ||
-                       (this.options.tolerance !== "pointer" && this.helperProportions[this.floating ? "width" : "height"] > item[this.floating ? "width" : "height"])
-               ) {
-                       return isOverElement;
-               } else {
-
-                       return (l < x1 + (this.helperProportions.width / 2) && // Right Half
-                               x2 - (this.helperProportions.width / 2) < r && // Left Half
-                               t < y1 + (this.helperProportions.height / 2) && // Bottom Half
-                               y2 - (this.helperProportions.height / 2) < b ); // Top Half
-
-               }
-       },
-
-       _intersectsWithPointer: function(item) {
-
-               var isOverElementHeight = (this.options.axis === "x") || this._isOverAxis(this.positionAbs.top + this.offset.click.top, item.top, item.height),
-                       isOverElementWidth = (this.options.axis === "y") || this._isOverAxis(this.positionAbs.left + this.offset.click.left, item.left, item.width),
-                       isOverElement = isOverElementHeight && isOverElementWidth,
-                       verticalDirection = this._getDragVerticalDirection(),
-                       horizontalDirection = this._getDragHorizontalDirection();
-
-               if (!isOverElement) {
-                       return false;
-               }
-
-               return this.floating ?
-                       ( ((horizontalDirection && horizontalDirection === "right") || verticalDirection === "down") ? 2 : 1 )
-                       : ( verticalDirection && (verticalDirection === "down" ? 2 : 1) );
-
-       },
-
-       _intersectsWithSides: function(item) {
-
-               var isOverBottomHalf = this._isOverAxis(this.positionAbs.top + this.offset.click.top, item.top + (item.height/2), item.height),
-                       isOverRightHalf = this._isOverAxis(this.positionAbs.left + this.offset.click.left, item.left + (item.width/2), item.width),
-                       verticalDirection = this._getDragVerticalDirection(),
-                       horizontalDirection = this._getDragHorizontalDirection();
-
-               if (this.floating && horizontalDirection) {
-                       return ((horizontalDirection === "right" && isOverRightHalf) || (horizontalDirection === "left" && !isOverRightHalf));
-               } else {
-                       return verticalDirection && ((verticalDirection === "down" && isOverBottomHalf) || (verticalDirection === "up" && !isOverBottomHalf));
-               }
-
-       },
-
-       _getDragVerticalDirection: function() {
-               var delta = this.positionAbs.top - this.lastPositionAbs.top;
-               return delta !== 0 && (delta > 0 ? "down" : "up");
-       },
-
-       _getDragHorizontalDirection: function() {
-               var delta = this.positionAbs.left - this.lastPositionAbs.left;
-               return delta !== 0 && (delta > 0 ? "right" : "left");
-       },
-
-       refresh: function(event) {
-               this._refreshItems(event);
-               this._setHandleClassName();
-               this.refreshPositions();
-               return this;
-       },
-
-       _connectWith: function() {
-               var options = this.options;
-               return options.connectWith.constructor === String ? [options.connectWith] : options.connectWith;
-       },
-
-       _getItemsAsjQuery: function(connected) {
-
-               var i, j, cur, inst,
-                       items = [],
-                       queries = [],
-                       connectWith = this._connectWith();
-
-               if(connectWith && connected) {
-                       for (i = connectWith.length - 1; i >= 0; i--){
-                               cur = $(connectWith[i], this.document[0]);
-                               for ( j = cur.length - 1; j >= 0; j--){
-                                       inst = $.data(cur[j], this.widgetFullName);
-                                       if(inst && inst !== this && !inst.options.disabled) {
-                                               queries.push([$.isFunction(inst.options.items) ? inst.options.items.call(inst.element) : $(inst.options.items, inst.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"), inst]);
-                                       }
-                               }
-                       }
-               }
-
-               queries.push([$.isFunction(this.options.items) ? this.options.items.call(this.element, null, { options: this.options, item: this.currentItem }) : $(this.options.items, this.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"), this]);
-
-               function addItems() {
-                       items.push( this );
-               }
-               for (i = queries.length - 1; i >= 0; i--){
-                       queries[i][0].each( addItems );
-               }
-
-               return $(items);
-
-       },
-
-       _removeCurrentsFromItems: function() {
-
-               var list = this.currentItem.find(":data(" + this.widgetName + "-item)");
-
-               this.items = $.grep(this.items, function (item) {
-                       for (var j=0; j < list.length; j++) {
-                               if(list[j] === item.item[0]) {
-                                       return false;
-                               }
-                       }
-                       return true;
-               });
-
-       },
-
-       _refreshItems: function(event) {
-
-               this.items = [];
-               this.containers = [this];
-
-               var i, j, cur, inst, targetData, _queries, item, queriesLength,
-                       items = this.items,
-                       queries = [[$.isFunction(this.options.items) ? this.options.items.call(this.element[0], event, { item: this.currentItem }) : $(this.options.items, this.element), this]],
-                       connectWith = this._connectWith();
-
-               if(connectWith && this.ready) { //Shouldn't be run the first time through due to massive slow-down
-                       for (i = connectWith.length - 1; i >= 0; i--){
-                               cur = $(connectWith[i], this.document[0]);
-                               for (j = cur.length - 1; j >= 0; j--){
-                                       inst = $.data(cur[j], this.widgetFullName);
-                                       if(inst && inst !== this && !inst.options.disabled) {
-                                               queries.push([$.isFunction(inst.options.items) ? inst.options.items.call(inst.element[0], event, { item: this.currentItem }) : $(inst.options.items, inst.element), inst]);
-                                               this.containers.push(inst);
-                                       }
-                               }
-                       }
-               }
-
-               for (i = queries.length - 1; i >= 0; i--) {
-                       targetData = queries[i][1];
-                       _queries = queries[i][0];
-
-                       for (j=0, queriesLength = _queries.length; j < queriesLength; j++) {
-                               item = $(_queries[j]);
-
-                               item.data(this.widgetName + "-item", targetData); // Data for target checking (mouse manager)
-
-                               items.push({
-                                       item: item,
-                                       instance: targetData,
-                                       width: 0, height: 0,
-                                       left: 0, top: 0
-                               });
-                       }
-               }
-
-       },
-
-       refreshPositions: function(fast) {
-
-               //This has to be redone because due to the item being moved out/into the offsetParent, the offsetParent's position will change
-               if(this.offsetParent && this.helper) {
-                       this.offset.parent = this._getParentOffset();
-               }
-
-               var i, item, t, p;
-
-               for (i = this.items.length - 1; i >= 0; i--){
-                       item = this.items[i];
-
-                       //We ignore calculating positions of all connected containers when we're not over them
-                       if(item.instance !== this.currentContainer && this.currentContainer && item.item[0] !== this.currentItem[0]) {
-                               continue;
-                       }
-
-                       t = this.options.toleranceElement ? $(this.options.toleranceElement, item.item) : item.item;
-
-                       if (!fast) {
-                               item.width = t.outerWidth();
-                               item.height = t.outerHeight();
-                       }
-
-                       p = t.offset();
-                       item.left = p.left;
-                       item.top = p.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--){
-                               p = this.containers[i].element.offset();
-                               this.containers[i].containerCache.left = p.left;
-                               this.containers[i].containerCache.top = p.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(that) {
-               that = that || this;
-               var className,
-                       o = that.options;
-
-               if(!o.placeholder || o.placeholder.constructor === String) {
-                       className = o.placeholder;
-                       o.placeholder = {
-                               element: function() {
-
-                                       var nodeName = that.currentItem[0].nodeName.toLowerCase(),
-                                               element = $( "<" + nodeName + ">", that.document[0] )
-                                                       .addClass(className || that.currentItem[0].className+" ui-sortable-placeholder")
-                                                       .removeClass("ui-sortable-helper");
-
-                                       if ( nodeName === "tr" ) {
-                                               that.currentItem.children().each(function() {
-                                                       $( "<td>&#160;</td>", that.document[0] )
-                                                               .attr( "colspan", $( this ).attr( "colspan" ) || 1 )
-                                                               .appendTo( element );
-                                               });
-                                       } else if ( nodeName === "img" ) {
-                                               element.attr( "src", that.currentItem.attr( "src" ) );
-                                       }
-
-                                       if ( !className ) {
-                                               element.css( "visibility", "hidden" );
-                                       }
-
-                                       return element;
-                               },
-                               update: function(container, p) {
-
-                                       // 1. If a className is set as 'placeholder option, we don't force sizes - the class is responsible for that
-                                       // 2. The option 'forcePlaceholderSize can be enabled to force it even if a class name is specified
-                                       if(className && !o.forcePlaceholderSize) {
-                                               return;
-                                       }
-
-                                       //If the element doesn't have a actual height by itself (without styles coming from a stylesheet), it receives the inline height from the dragged item
-                                       if(!p.height()) { p.height(that.currentItem.innerHeight() - parseInt(that.currentItem.css("paddingTop")||0, 10) - parseInt(that.currentItem.css("paddingBottom")||0, 10)); }
-                                       if(!p.width()) { p.width(that.currentItem.innerWidth() - parseInt(that.currentItem.css("paddingLeft")||0, 10) - parseInt(that.currentItem.css("paddingRight")||0, 10)); }
-                               }
-                       };
-               }
-
-               //Create the placeholder
-               that.placeholder = $(o.placeholder.element.call(that.element, that.currentItem));
-
-               //Append it after the actual current item
-               that.currentItem.after(that.placeholder);
-
-               //Update the size of the placeholder (TODO: Logic to fuzzy, see line 316/317)
-               o.placeholder.update(that, that.placeholder);
-
-       },
-
-       _contactContainers: function(event) {
-               var i, j, dist, itemWithLeastDistance, posProperty, sizeProperty, cur, nearBottom, floating, axis,
-                       innermostContainer = null,
-                       innermostIndex = null;
-
-               // get innermost container that intersects with item
-               for (i = this.containers.length - 1; i >= 0; i--) {
-
-                       // never consider a container that's located within the item itself
-                       if($.contains(this.currentItem[0], this.containers[i].element[0])) {
-                               continue;
-                       }
-
-                       if(this._intersectsWith(this.containers[i].containerCache)) {
-
-                               // if we've already found a container and it's more "inner" than this, then continue
-                               if(innermostContainer && $.contains(this.containers[i].element[0], innermostContainer.element[0])) {
-                                       continue;
-                               }
-
-                               innermostContainer = this.containers[i];
-                               innermostIndex = i;
-
-                       } else {
-                               // container doesn't intersect. trigger "out" event if necessary
-                               if(this.containers[i].containerCache.over) {
-                                       this.containers[i]._trigger("out", event, this._uiHash(this));
-                                       this.containers[i].containerCache.over = 0;
-                               }
-                       }
-
-               }
-
-               // if no intersecting containers found, return
-               if(!innermostContainer) {
-                       return;
-               }
-
-               // move the item into the container if it's not there already
-               if(this.containers.length === 1) {
-                       if (!this.containers[innermostIndex].containerCache.over) {
-                               this.containers[innermostIndex]._trigger("over", event, this._uiHash(this));
-                               this.containers[innermostIndex].containerCache.over = 1;
-                       }
-               } else {
-
-                       //When entering a new container, we will find the item with the least distance and append our item near it
-                       dist = 10000;
-                       itemWithLeastDistance = null;
-                       floating = innermostContainer.floating || this._isFloating(this.currentItem);
-                       posProperty = floating ? "left" : "top";
-                       sizeProperty = floating ? "width" : "height";
-                       axis = floating ? "clientX" : "clientY";
-
-                       for (j = this.items.length - 1; j >= 0; j--) {
-                               if(!$.contains(this.containers[innermostIndex].element[0], this.items[j].item[0])) {
-                                       continue;
-                               }
-                               if(this.items[j].item[0] === this.currentItem[0]) {
-                                       continue;
-                               }
-
-                               cur = this.items[j].item.offset()[posProperty];
-                               nearBottom = false;
-                               if ( event[ axis ] - cur > this.items[ j ][ sizeProperty ] / 2 ) {
-                                       nearBottom = true;
-                               }
-
-                               if ( Math.abs( event[ axis ] - cur ) < dist ) {
-                                       dist = Math.abs( event[ axis ] - cur );
-                                       itemWithLeastDistance = this.items[ j ];
-                                       this.direction = nearBottom ? "up": "down";
-                               }
-                       }
-
-                       //Check if dropOnEmpty is enabled
-                       if(!itemWithLeastDistance && !this.options.dropOnEmpty) {
-                               return;
-                       }
-
-                       if(this.currentContainer === this.containers[innermostIndex]) {
-                               if ( !this.currentContainer.containerCache.over ) {
-                                       this.containers[ innermostIndex ]._trigger( "over", event, this._uiHash() );
-                                       this.currentContainer.containerCache.over = 1;
-                               }
-                               return;
-                       }
-
-                       itemWithLeastDistance ? this._rearrange(event, itemWithLeastDistance, null, true) : this._rearrange(event, null, this.containers[innermostIndex].element, true);
-                       this._trigger("change", event, this._uiHash());
-                       this.containers[innermostIndex]._trigger("change", event, this._uiHash(this));
-                       this.currentContainer = this.containers[innermostIndex];
-
-                       //Update the placeholder
-                       this.options.placeholder.update(this.currentContainer, this.placeholder);
-
-                       this.containers[innermostIndex]._trigger("over", event, this._uiHash(this));
-                       this.containers[innermostIndex].containerCache.over = 1;
-               }
-
-
-       },
-
-       _createHelper: function(event) {
-
-               var o = this.options,
-                       helper = $.isFunction(o.helper) ? $(o.helper.apply(this.element[0], [event, this.currentItem])) : (o.helper === "clone" ? this.currentItem.clone() : this.currentItem);
-
-               //Add the helper to the DOM if that didn't happen already
-               if(!helper.parents("body").length) {
-                       $(o.appendTo !== "parent" ? o.appendTo : this.currentItem[0].parentNode)[0].appendChild(helper[0]);
-               }
-
-               if(helper[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") };
-               }
-
-               if(!helper[0].style.width || o.forceHelperSize) {
-                       helper.width(this.currentItem.width());
-               }
-               if(!helper[0].style.height || o.forceHelperSize) {
-                       helper.height(this.currentItem.height());
-               }
-
-               return helper;
-
-       },
-
-       _adjustOffsetFromHelper: function(obj) {
-               if (typeof obj === "string") {
-                       obj = obj.split(" ");
-               }
-               if ($.isArray(obj)) {
-                       obj = {left: +obj[0], top: +obj[1] || 0};
-               }
-               if ("left" in obj) {
-                       this.offset.click.left = obj.left + this.margins.left;
-               }
-               if ("right" in obj) {
-                       this.offset.click.left = this.helperProportions.width - obj.right + this.margins.left;
-               }
-               if ("top" in obj) {
-                       this.offset.click.top = obj.top + this.margins.top;
-               }
-               if ("bottom" in obj) {
-                       this.offset.click.top = this.helperProportions.height - obj.bottom + this.margins.top;
-               }
-       },
-
-       _getParentOffset: function() {
-
-
-               //Get the offsetParent and cache its position
-               this.offsetParent = this.helper.offsetParent();
-               var po = this.offsetParent.offset();
-
-               // This is a special case where we need to modify a offset calculated on start, since the following happened:
-               // 1. The position of the helper is absolute, so it's position is calculated based on the next positioned parent
-               // 2. The actual offset parent is a child of the scroll parent, and the scroll parent isn't the document, which means that
-               //    the scroll is included in the initial calculation of the offset of the parent, and never recalculated upon drag
-               if(this.cssPosition === "absolute" && this.scrollParent[0] !== this.document[0] && $.contains(this.scrollParent[0], this.offsetParent[0])) {
-                       po.left += this.scrollParent.scrollLeft();
-                       po.top += this.scrollParent.scrollTop();
-               }
-
-               // This needs to be actually done for all browsers, since pageX/pageY includes this information
-               // with an ugly IE fix
-               if( this.offsetParent[0] === this.document[0].body || (this.offsetParent[0].tagName && this.offsetParent[0].tagName.toLowerCase() === "html" && $.ui.ie)) {
-                       po = { top: 0, left: 0 };
-               }
-
-               return {
-                       top: po.top + (parseInt(this.offsetParent.css("borderTopWidth"),10) || 0),
-                       left: po.left + (parseInt(this.offsetParent.css("borderLeftWidth"),10) || 0)
-               };
-
-       },
-
-       _getRelativeOffset: function() {
-
-               if(this.cssPosition === "relative") {
-                       var p = this.currentItem.position();
-                       return {
-                               top: p.top - (parseInt(this.helper.css("top"),10) || 0) + this.scrollParent.scrollTop(),
-                               left: p.left - (parseInt(this.helper.css("left"),10) || 0) + this.scrollParent.scrollLeft()
-                       };
-               } else {
-                       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 ce, co, over,
-                       o = this.options;
-               if(o.containment === "parent") {
-                       o.containment = this.helper[0].parentNode;
-               }
-               if(o.containment === "document" || o.containment === "window") {
-                       this.containment = [
-                               0 - this.offset.relative.left - this.offset.parent.left,
-                               0 - this.offset.relative.top - this.offset.parent.top,
-                               o.containment === "document" ? this.document.width() : this.window.width() - this.helperProportions.width - this.margins.left,
-                               (o.containment === "document" ? this.document.width() : this.window.height() || this.document[0].body.parentNode.scrollHeight) - this.helperProportions.height - this.margins.top
-                       ];
-               }
-
-               if(!(/^(document|window|parent)$/).test(o.containment)) {
-                       ce = $(o.containment)[0];
-                       co = $(o.containment).offset();
-                       over = ($(ce).css("overflow") !== "hidden");
-
-                       this.containment = [
-                               co.left + (parseInt($(ce).css("borderLeftWidth"),10) || 0) + (parseInt($(ce).css("paddingLeft"),10) || 0) - this.margins.left,
-                               co.top + (parseInt($(ce).css("borderTopWidth"),10) || 0) + (parseInt($(ce).css("paddingTop"),10) || 0) - this.margins.top,
-                               co.left+(over ? Math.max(ce.scrollWidth,ce.offsetWidth) : ce.offsetWidth) - (parseInt($(ce).css("borderLeftWidth"),10) || 0) - (parseInt($(ce).css("paddingRight"),10) || 0) - this.helperProportions.width - this.margins.left,
-                               co.top+(over ? Math.max(ce.scrollHeight,ce.offsetHeight) : ce.offsetHeight) - (parseInt($(ce).css("borderTopWidth"),10) || 0) - (parseInt($(ce).css("paddingBottom"),10) || 0) - this.helperProportions.height - this.margins.top
-                       ];
-               }
-
-       },
-
-       _convertPositionTo: function(d, pos) {
-
-               if(!pos) {
-                       pos = this.position;
-               }
-               var mod = d === "absolute" ? 1 : -1,
-                       scroll = this.cssPosition === "absolute" && !(this.scrollParent[0] !== this.document[0] && $.contains(this.scrollParent[0], this.offsetParent[0])) ? this.offsetParent : this.scrollParent,
-                       scrollIsRootNode = (/(html|body)/i).test(scroll[0].tagName);
-
-               return {
-                       top: (
-                               pos.top +                                                                                                                               // The absolute mouse position
-                               this.offset.relative.top * mod +                                                                                // Only for relative positioned nodes: Relative offset from element to offset parent
-                               this.offset.parent.top * mod -                                                                                  // The offsetParent's offset without borders (offset + border)
-                               ( ( this.cssPosition === "fixed" ? -this.scrollParent.scrollTop() : ( scrollIsRootNode ? 0 : scroll.scrollTop() ) ) * mod)
-                       ),
-                       left: (
-                               pos.left +                                                                                                                              // The absolute mouse position
-                               this.offset.relative.left * mod +                                                                               // Only for relative positioned nodes: Relative offset from element to offset parent
-                               this.offset.parent.left * mod   -                                                                               // The offsetParent's offset without borders (offset + border)
-                               ( ( this.cssPosition === "fixed" ? -this.scrollParent.scrollLeft() : scrollIsRootNode ? 0 : scroll.scrollLeft() ) * mod)
-                       )
-               };
-
-       },
-
-       _generatePosition: function(event) {
-
-               var top, left,
-                       o = this.options,
-                       pageX = event.pageX,
-                       pageY = event.pageY,
-                       scroll = this.cssPosition === "absolute" && !(this.scrollParent[0] !== this.document[0] && $.contains(this.scrollParent[0], this.offsetParent[0])) ? this.offsetParent : this.scrollParent, scrollIsRootNode = (/(html|body)/i).test(scroll[0].tagName);
-
-               // This is another very weird special case that only happens for relative elements:
-               // 1. If the css position is relative
-               // 2. and the scroll parent is the document or similar to the offset parent
-               // we have to refresh the relative offset during the scroll so there are no jumps
-               if(this.cssPosition === "relative" && !(this.scrollParent[0] !== this.document[0] && this.scrollParent[0] !== this.offsetParent[0])) {
-                       this.offset.relative = this._getRelativeOffset();
-               }
-
-               /*
-                * - Position constraining -
-                * Constrain the position to a mix of grid, containment.
-                */
-
-               if(this.originalPosition) { //If we are not dragging yet, we won't check for options
-
-                       if(this.containment) {
-                               if(event.pageX - this.offset.click.left < this.containment[0]) {
-                                       pageX = this.containment[0] + this.offset.click.left;
-                               }
-                               if(event.pageY - this.offset.click.top < this.containment[1]) {
-                                       pageY = this.containment[1] + this.offset.click.top;
-                               }
-                               if(event.pageX - this.offset.click.left > this.containment[2]) {
-                                       pageX = this.containment[2] + this.offset.click.left;
-                               }
-                               if(event.pageY - this.offset.click.top > this.containment[3]) {
-                                       pageY = this.containment[3] + this.offset.click.top;
-                               }
-                       }
-
-                       if(o.grid) {
-                               top = this.originalPageY + Math.round((pageY - this.originalPageY) / o.grid[1]) * o.grid[1];
-                               pageY = this.containment ? ( (top - this.offset.click.top >= this.containment[1] && top - this.offset.click.top <= this.containment[3]) ? top : ((top - this.offset.click.top >= this.containment[1]) ? top - o.grid[1] : top + o.grid[1])) : top;
-
-                               left = this.originalPageX + Math.round((pageX - this.originalPageX) / o.grid[0]) * o.grid[0];
-                               pageX = this.containment ? ( (left - this.offset.click.left >= this.containment[0] && left - this.offset.click.left <= this.containment[2]) ? left : ((left - this.offset.click.left >= this.containment[0]) ? left - o.grid[0] : left + o.grid[0])) : left;
-                       }
-
-               }
-
-               return {
-                       top: (
-                               pageY -                                                                                                                         // The absolute mouse position
-                               this.offset.click.top -                                                                                                 // Click offset (relative to the element)
-                               this.offset.relative.top        -                                                                                       // Only for relative positioned nodes: Relative offset from element to offset parent
-                               this.offset.parent.top +                                                                                                // The offsetParent's offset without borders (offset + border)
-                               ( ( this.cssPosition === "fixed" ? -this.scrollParent.scrollTop() : ( scrollIsRootNode ? 0 : scroll.scrollTop() ) ))
-                       ),
-                       left: (
-                               pageX -                                                                                                                         // The absolute mouse position
-                               this.offset.click.left -                                                                                                // Click offset (relative to the element)
-                               this.offset.relative.left       -                                                                                       // Only for relative positioned nodes: Relative offset from element to offset parent
-                               this.offset.parent.left +                                                                                               // The offsetParent's offset without borders (offset + border)
-                               ( ( this.cssPosition === "fixed" ? -this.scrollParent.scrollLeft() : scrollIsRootNode ? 0 : scroll.scrollLeft() ))
-                       )
-               };
-
-       },
-
-       _rearrange: function(event, i, a, hardRefresh) {
-
-               a ? a[0].appendChild(this.placeholder[0]) : i.item[0].parentNode.insertBefore(this.placeholder[0], (this.direction === "down" ? i.item[0] : i.item[0].nextSibling));
-
-               //Various things done here to improve the performance:
-               // 1. we create a setTimeout, that calls refreshPositions
-               // 2. on the instance, we have a counter variable, that get's higher after every append
-               // 3. on the local scope, we copy the counter variable, and check in the timeout, if it's still the same
-               // 4. this lets only the last addition to the timeout stack through
-               this.counter = this.counter ? ++this.counter : 1;
-               var counter = this.counter;
-
-               this._delay(function() {
-                       if(counter === this.counter) {
-                               this.refreshPositions(!hardRefresh); //Precompute after each DOM insertion, NOT on mousemove
-                       }
-               });
-
-       },
-
-       _clear: function(event, noPropagation) {
-
-               this.reverting = false;
-               // We delay all events that have to be triggered to after the point where the placeholder has been removed and
-               // everything else normalized again
-               var i,
-                       delayedTriggers = [];
-
-               // We first have to update the dom position of the actual currentItem
-               // Note: don't do it if the current item is already removed (by a user), or it gets reappended (see #4088)
-               if(!this._noFinalSort && this.currentItem.parent().length) {
-                       this.placeholder.before(this.currentItem);
-               }
-               this._noFinalSort = null;
-
-               if(this.helper[0] === this.currentItem[0]) {
-                       for(i in this._storedCSS) {
-                               if(this._storedCSS[i] === "auto" || this._storedCSS[i] === "static") {
-                                       this._storedCSS[i] = "";
-                               }
-                       }
-                       this.currentItem.css(this._storedCSS).removeClass("ui-sortable-helper");
-               } else {
-                       this.currentItem.show();
-               }
-
-               if(this.fromOutside && !noPropagation) {
-                       delayedTriggers.push(function(event) { this._trigger("receive", event, this._uiHash(this.fromOutside)); });
-               }
-               if((this.fromOutside || this.domPosition.prev !== this.currentItem.prev().not(".ui-sortable-helper")[0] || this.domPosition.parent !== this.currentItem.parent()[0]) && !noPropagation) {
-                       delayedTriggers.push(function(event) { this._trigger("update", event, this._uiHash()); }); //Trigger update callback if the DOM position has changed
-               }
-
-               // Check if the items Container has Changed and trigger appropriate
-               // events.
-               if (this !== this.currentContainer) {
-                       if(!noPropagation) {
-                               delayedTriggers.push(function(event) { this._trigger("remove", event, this._uiHash()); });
-                               delayedTriggers.push((function(c) { return function(event) { c._trigger("receive", event, this._uiHash(this)); };  }).call(this, this.currentContainer));
-                               delayedTriggers.push((function(c) { return function(event) { c._trigger("update", event, this._uiHash(this));  }; }).call(this, this.currentContainer));
-                       }
-               }
-
-
-               //Post events to containers
-               function delayEvent( type, instance, container ) {
-                       return function( event ) {
-                               container._trigger( type, event, instance._uiHash( instance ) );
-                       };
-               }
-               for (i = this.containers.length - 1; i >= 0; i--){
-                       if (!noPropagation) {
-                               delayedTriggers.push( delayEvent( "deactivate", this, this.containers[ i ] ) );
-                       }
-                       if(this.containers[i].containerCache.over) {
-                               delayedTriggers.push( delayEvent( "out", this, this.containers[ i ] ) );
-                               this.containers[i].containerCache.over = 0;
-                       }
-               }
-
-               //Do what was originally in plugins
-               if ( this.storedCursor ) {
-                       this.document.find( "body" ).css( "cursor", this.storedCursor );
-                       this.storedStylesheet.remove();
-               }
-               if(this._storedOpacity) {
-                       this.helper.css("opacity", this._storedOpacity);
-               }
-               if(this._storedZIndex) {
-                       this.helper.css("zIndex", this._storedZIndex === "auto" ? "" : this._storedZIndex);
-               }
-
-               this.dragging = false;
-
-               if(!noPropagation) {
-                       this._trigger("beforeStop", event, this._uiHash());
-               }
-
-               //$(this.placeholder[0]).remove(); would have been the jQuery way - unfortunately, it unbinds ALL events from the original node!
-               this.placeholder[0].parentNode.removeChild(this.placeholder[0]);
-
-               if ( !this.cancelHelperRemoval ) {
-                       if ( this.helper[ 0 ] !== this.currentItem[ 0 ] ) {
-                               this.helper.remove();
-                       }
-                       this.helper = null;
-               }
-
-               if(!noPropagation) {
-                       for (i=0; i < delayedTriggers.length; i++) {
-                               delayedTriggers[i].call(this, event);
-                       } //Trigger all delayed events
-                       this._trigger("stop", event, this._uiHash());
-               }
-
-               this.fromOutside = false;
-               return !this.cancelHelperRemoval;
-
-       },
-
-       _trigger: function() {
-               if ($.Widget.prototype._trigger.apply(this, arguments) === false) {
-                       this.cancel();
-               }
-       },
-
-       _uiHash: function(_inst) {
-               var inst = _inst || this;
-               return {
-                       helper: inst.helper,
-                       placeholder: inst.placeholder || $([]),
-                       position: inst.position,
-                       originalPosition: inst.originalPosition,
-                       offset: inst.positionAbs,
-                       item: inst.currentItem,
-                       sender: _inst ? _inst.element : null
-               };
-       }
-
-});
-
-
-/*!
- * jQuery UI Accordion 1.11.3
- * http://jqueryui.com
- *
- * Copyright jQuery Foundation and other contributors
- * Released under the MIT license.
- * http://jquery.org/license
- *
- * http://api.jqueryui.com/accordion/
- */
-
-
-var accordion = $.widget( "ui.accordion", {
-       version: "1.11.3",
-       options: {
-               active: 0,
-               animate: {},
-               collapsible: false,
-               event: "click",
-               header: "> li > :first-child,> :not(li):even",
-               heightStyle: "auto",
-               icons: {
-                       activeHeader: "ui-icon-triangle-1-s",
-                       header: "ui-icon-triangle-1-e"
-               },
-
-               // callbacks
-               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 options = this.options;
-               this.prevShow = this.prevHide = $();
-               this.element.addClass( "ui-accordion ui-widget ui-helper-reset" )
-                       // ARIA
-                       .attr( "role", "tablist" );
-
-               // don't allow collapsible: false and active: false / null
-               if ( !options.collapsible && (options.active === false || options.active == null) ) {
-                       options.active = 0;
-               }
-
-               this._processPanels();
-               // handle negative values
-               if ( options.active < 0 ) {
-                       options.active += this.headers.length;
-               }
-               this._refresh();
-       },
-
-       _getCreateEventData: function() {
-               return {
-                       header: this.active,
-                       panel: !this.active.length ? $() : this.active.next()
-               };
-       },
-
-       _createIcons: function() {
-               var icons = this.options.icons;
-               if ( icons ) {
-                       $( "<span>" )
-                               .addClass( "ui-accordion-header-icon ui-icon " + icons.header )
-                               .prependTo( this.headers );
-                       this.active.children( ".ui-accordion-header-icon" )
-                               .removeClass( icons.header )
-                               .addClass( icons.activeHeader );
-                       this.headers.addClass( "ui-accordion-icons" );
-               }
-       },
-
-       _destroyIcons: function() {
-               this.headers
-                       .removeClass( "ui-accordion-icons" )
-                       .children( ".ui-accordion-header-icon" )
-                               .remove();
-       },
-
-       _destroy: function() {
-               var contents;
-
-               // clean up main element
-               this.element
-                       .removeClass( "ui-accordion ui-widget ui-helper-reset" )
-                       .removeAttr( "role" );
-
-               // clean up headers
-               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();
-
-               // clean up content panels
-               contents = 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();
-
-               if ( this.options.heightStyle !== "content" ) {
-                       contents.css( "height", "" );
-               }
-       },
-
-       _setOption: function( key, value ) {
-               if ( key === "active" ) {
-                       // _activate() will handle invalid values and update this.options
-                       this._activate( value );
-                       return;
-               }
-
-               if ( key === "event" ) {
-                       if ( this.options.event ) {
-                               this._off( this.headers, this.options.event );
-                       }
-                       this._setupEvents( value );
-               }
-
-               this._super( key, value );
-
-               // setting collapsible: false while collapsed; open first panel
-               if ( key === "collapsible" && !value && this.options.active === false ) {
-                       this._activate( 0 );
-               }
-
-               if ( key === "icons" ) {
-                       this._destroyIcons();
-                       if ( value ) {
-                               this._createIcons();
-                       }
-               }
-
-               // #5332 - opacity doesn't cascade to positioned elements in IE
-               // so we need to add the disabled class to the headers and panels
-               if ( key === "disabled" ) {
-                       this.element
-                               .toggleClass( "ui-state-disabled", !!value )
-                               .attr( "aria-disabled", value );
-                       this.headers.add( this.headers.next() )
-                               .toggleClass( "ui-state-disabled", !!value );
-               }
-       },
-
-       _keydown: function( event ) {
-               if ( event.altKey || event.ctrlKey ) {
-                       return;
-               }
-
-               var keyCode = $.ui.keyCode,
-                       length = this.headers.length,
-                       currentIndex = this.headers.index( event.target ),
-                       toFocus = false;
-
-               switch ( event.keyCode ) {
-                       case keyCode.RIGHT:
-                       case keyCode.DOWN:
-                               toFocus = this.headers[ ( currentIndex + 1 ) % length ];
-                               break;
-                       case keyCode.LEFT:
-                       case keyCode.UP:
-                               toFocus = this.headers[ ( currentIndex - 1 + length ) % length ];
-                               break;
-                       case keyCode.SPACE:
-                       case keyCode.ENTER:
-                               this._eventHandler( event );
-                               break;
-                       case keyCode.HOME:
-                               toFocus = this.headers[ 0 ];
-                               break;
-                       case keyCode.END:
-                               toFocus = this.headers[ length - 1 ];
-                               break;
-               }
-
-               if ( toFocus ) {
-                       $( event.target ).attr( "tabIndex", -1 );
-                       $( toFocus ).attr( "tabIndex", 0 );
-                       toFocus.focus();
-                       event.preventDefault();
-               }
-       },
-
-       _panelKeyDown: function( event ) {
-               if ( event.keyCode === $.ui.keyCode.UP && event.ctrlKey ) {
-                       $( event.currentTarget ).prev().focus();
-               }
-       },
-
-       refresh: function() {
-               var options = this.options;
-               this._processPanels();
-
-               // was collapsed or no panel
-               if ( ( options.active === false && options.collapsible === true ) || !this.headers.length ) {
-                       options.active = false;
-                       this.active = $();
-               // active false only when collapsible is true
-               } else if ( options.active === false ) {
-                       this._activate( 0 );
-               // was active, but active panel is gone
-               } else if ( this.active.length && !$.contains( this.element[ 0 ], this.active[ 0 ] ) ) {
-                       // all remaining panel are disabled
-                       if ( this.headers.length === this.headers.find(".ui-state-disabled").length ) {
-                               options.active = false;
-                               this.active = $();
-                       // activate previous panel
-                       } else {
-                               this._activate( Math.max( 0, options.active - 1 ) );
-                       }
-               // was active, active panel still exists
-               } else {
-                       // make sure active index is correct
-                       options.active = this.headers.index( this.active );
-               }
-
-               this._destroyIcons();
-
-               this._refresh();
-       },
-
-       _processPanels: function() {
-               var prevHeaders = this.headers,
-                       prevPanels = 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();
-
-               // Avoid memory leaks (#10056)
-               if ( prevPanels ) {
-                       this._off( prevHeaders.not( this.headers ) );
-                       this._off( prevPanels.not( this.panels ) );
-               }
-       },
-
-       _refresh: function() {
-               var maxHeight,
-                       options = this.options,
-                       heightStyle = options.heightStyle,
-                       parent = this.element.parent();
-
-               this.active = this._findActive( options.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 header = $( this ),
-                                       headerId = header.uniqueId().attr( "id" ),
-                                       panel = header.next(),
-                                       panelId = panel.uniqueId().attr( "id" );
-                               header.attr( "aria-controls", panelId );
-                               panel.attr( "aria-labelledby", headerId );
-                       })
-                       .next()
-                               .attr( "role", "tabpanel" );
-
-               this.headers
-                       .not( this.active )
-                       .attr({
-                               "aria-selected": "false",
-                               "aria-expanded": "false",
-                               tabIndex: -1
-                       })
-                       .next()
-                               .attr({
-                                       "aria-hidden": "true"
-                               })
-                               .hide();
-
-               // make sure at least one header is in the tab order
-               if ( !this.active.length ) {
-                       this.headers.eq( 0 ).attr( "tabIndex", 0 );
-               } else {
-                       this.active.attr({
-                               "aria-selected": "true",
-                               "aria-expanded": "true",
-                               tabIndex: 0
-                       })
-                       .next()
-                               .attr({
-                                       "aria-hidden": "false"
-                               });
-               }
-
-               this._createIcons();
-
-               this._setupEvents( options.event );
-
-               if ( heightStyle === "fill" ) {
-                       maxHeight = parent.height();
-                       this.element.siblings( ":visible" ).each(function() {
-                               var elem = $( this ),
-                                       position = elem.css( "position" );
-
-                               if ( position === "absolute" || position === "fixed" ) {
-                                       return;
-                               }
-                               maxHeight -= elem.outerHeight( true );
-                       });
-
-                       this.headers.each(function() {
-                               maxHeight -= $( this ).outerHeight( true );
-                       });
-
-                       this.headers.next()
-                               .each(function() {
-                                       $( this ).height( Math.max( 0, maxHeight -
-                                               $( this ).innerHeight() + $( this ).height() ) );
-                               })
-                               .css( "overflow", "auto" );
-               } else if ( heightStyle === "auto" ) {
-                       maxHeight = 0;
-                       this.headers.next()
-                               .each(function() {
-                                       maxHeight = Math.max( maxHeight, $( this ).css( "height", "" ).height() );
-                               })
-                               .height( maxHeight );
-               }
-       },
-
-       _activate: function( index ) {
-               var active = this._findActive( index )[ 0 ];
-
-               // trying to activate the already active panel
-               if ( active === this.active[ 0 ] ) {
-                       return;
-               }
-
-               // trying to collapse, simulate a click on the currently active header
-               active = active || this.active[ 0 ];
-
-               this._eventHandler({
-                       target: active,
-                       currentTarget: active,
-                       preventDefault: $.noop
-               });
-       },
-
-       _findActive: function( selector ) {
-               return typeof selector === "number" ? this.headers.eq( selector ) : $();
-       },
-
-       _setupEvents: function( event ) {
-               var events = {
-                       keydown: "_keydown"
-               };
-               if ( event ) {
-                       $.each( event.split( " " ), function( index, eventName ) {
-                               events[ eventName ] = "_eventHandler";
-                       });
-               }
-
-               this._off( this.headers.add( this.headers.next() ) );
-               this._on( this.headers, events );
-               this._on( this.headers.next(), { keydown: "_panelKeyDown" });
-               this._hoverable( this.headers );
-               this._focusable( this.headers );
-       },
-
-       _eventHandler: function( event ) {
-               var options = this.options,
-                       active = this.active,
-                       clicked = $( event.currentTarget ),
-                       clickedIsActive = clicked[ 0 ] === active[ 0 ],
-                       collapsing = clickedIsActive && options.collapsible,
-                       toShow = collapsing ? $() : clicked.next(),
-                       toHide = active.next(),
-                       eventData = {
-                               oldHeader: active,
-                               oldPanel: toHide,
-                               newHeader: collapsing ? $() : clicked,
-                               newPanel: toShow
-                       };
-
-               event.preventDefault();
-
-               if (
-                               // click on active header, but not collapsible
-                               ( clickedIsActive && !options.collapsible ) ||
-                               // allow canceling activation
-                               ( this._trigger( "beforeActivate", event, eventData ) === false ) ) {
-                       return;
-               }
-
-               options.active = collapsing ? false : this.headers.index( clicked );
-
-               // when the call to ._toggle() comes after the class changes
-               // it causes a very odd bug in IE 8 (see #6720)
-               this.active = clickedIsActive ? $() : clicked;
-               this._toggle( eventData );
-
-               // switch classes
-               // corner classes on the previously active header stay after the animation
-               active.removeClass( "ui-accordion-header-active ui-state-active" );
-               if ( options.icons ) {
-                       active.children( ".ui-accordion-header-icon" )
-                               .removeClass( options.icons.activeHeader )
-                               .addClass( options.icons.header );
-               }
-
-               if ( !clickedIsActive ) {
-                       clicked
-                               .removeClass( "ui-corner-all" )
-                               .addClass( "ui-accordion-header-active ui-state-active ui-corner-top" );
-                       if ( options.icons ) {
-                               clicked.children( ".ui-accordion-header-icon" )
-                                       .removeClass( options.icons.header )
-                                       .addClass( options.icons.activeHeader );
-                       }
-
-                       clicked
-                               .next()
-                               .addClass( "ui-accordion-content-active" );
-               }
-       },
-
-       _toggle: function( data ) {
-               var toShow = data.newPanel,
-                       toHide = this.prevShow.length ? this.prevShow : data.oldPanel;
-
-               // handle activating a panel during the animation for another activation
-               this.prevShow.add( this.prevHide ).stop( true, true );
-               this.prevShow = toShow;
-               this.prevHide = toHide;
-
-               if ( this.options.animate ) {
-                       this._animate( toShow, toHide, data );
-               } else {
-                       toHide.hide();
-                       toShow.show();
-                       this._toggleComplete( data );
-               }
-
-               toHide.attr({
-                       "aria-hidden": "true"
-               });
-               toHide.prev().attr({
-                       "aria-selected": "false",
-                       "aria-expanded": "false"
-               });
-               // if we're switching panels, remove the old header from the tab order
-               // if we're opening from collapsed state, remove the previous header from the tab order
-               // if we're collapsing, then keep the collapsing header in the tab order
-               if ( toShow.length && toHide.length ) {
-                       toHide.prev().attr({
-                               "tabIndex": -1,
-                               "aria-expanded": "false"
-                       });
-               } else if ( toShow.length ) {
-                       this.headers.filter(function() {
-                               return parseInt( $( this ).attr( "tabIndex" ), 10 ) === 0;
-                       })
-                       .attr( "tabIndex", -1 );
-               }
-
-               toShow
-                       .attr( "aria-hidden", "false" )
-                       .prev()
-                               .attr({
-                                       "aria-selected": "true",
-                                       "aria-expanded": "true",
-                                       tabIndex: 0
-                               });
-       },
-
-       _animate: function( toShow, toHide, data ) {
-               var total, easing, duration,
-                       that = this,
-                       adjust = 0,
-                       down = toShow.length &&
-                               ( !toHide.length || ( toShow.index() < toHide.index() ) ),
-                       animate = this.options.animate || {},
-                       options = down && animate.down || animate,
-                       complete = function() {
-                               that._toggleComplete( data );
-                       };
-
-               if ( typeof options === "number" ) {
-                       duration = options;
-               }
-               if ( typeof options === "string" ) {
-                       easing = options;
-               }
-               // fall back from options to animation in case of partial down settings
-               easing = easing || options.easing || animate.easing;
-               duration = duration || options.duration || animate.duration;
-
-               if ( !toHide.length ) {
-                       return toShow.animate( this.showProps, duration, easing, complete );
-               }
-               if ( !toShow.length ) {
-                       return toHide.animate( this.hideProps, duration, easing, complete );
-               }
-
-               total = toShow.show().outerHeight();
-               toHide.animate( this.hideProps, {
-                       duration: duration,
-                       easing: easing,
-                       step: function( now, fx ) {
-                               fx.now = Math.round( now );
-                       }
-               });
-               toShow
-                       .hide()
-                       .animate( this.showProps, {
-                               duration: duration,
-                               easing: easing,
-                               complete: complete,
-                               step: function( now, fx ) {
-                                       fx.now = Math.round( now );
-                                       if ( fx.prop !== "height" ) {
-                                               adjust += fx.now;
-                                       } else if ( that.options.heightStyle !== "content" ) {
-                                               fx.now = Math.round( total - toHide.outerHeight() - adjust );
-                                               adjust = 0;
-                                       }
-                               }
-                       });
-       },
-
-       _toggleComplete: function( data ) {
-               var toHide = data.oldPanel;
-
-               toHide
-                       .removeClass( "ui-accordion-content-active" )
-                       .prev()
-                               .removeClass( "ui-corner-top" )
-                               .addClass( "ui-corner-all" );
-
-               // Work around for rendering bug in IE (#5421)
-               if ( toHide.length ) {
-                       toHide.parent()[ 0 ].className = toHide.parent()[ 0 ].className;
-               }
-               this._trigger( "activate", null, data );
-       }
-});
-
-
-/*!
- * jQuery UI Menu 1.11.3
- * http://jqueryui.com
- *
- * Copyright jQuery Foundation and other contributors
- * Released under the MIT license.
- * http://jquery.org/license
- *
- * http://api.jqueryui.com/menu/
- */
-
-
-var menu = $.widget( "ui.menu", {
-       version: "1.11.3",
-       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",
-
-               // callbacks
-               blur: null,
-               focus: null,
-               select: null
-       },
-
-       _create: function() {
-               this.activeMenu = this.element;
-
-               // Flag used to prevent firing of the click handler
-               // as the event bubbles up through nested menus
-               this.mouseHandled = false;
-               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
-                       });
-
-               if ( this.options.disabled ) {
-                       this.element
-                               .addClass( "ui-state-disabled" )
-                               .attr( "aria-disabled", "true" );
-               }
-
-               this._on({
-                       // Prevent focus from sticking to links inside menu after clicking
-                       // them (focus should always stay on UL during navigation).
-                       "mousedown .ui-menu-item": function( event ) {
-                               event.preventDefault();
-                       },
-                       "click .ui-menu-item": function( event ) {
-                               var target = $( event.target );
-                               if ( !this.mouseHandled && target.not( ".ui-state-disabled" ).length ) {
-                                       this.select( event );
-
-                                       // Only set the mouseHandled flag if the event will bubble, see #9469.
-                                       if ( !event.isPropagationStopped() ) {
-                                               this.mouseHandled = true;
-                                       }
-
-                                       // Open submenu on click
-                                       if ( target.has( ".ui-menu" ).length ) {
-                                               this.expand( event );
-                                       } else if ( !this.element.is( ":focus" ) && $( this.document[ 0 ].activeElement ).closest( ".ui-menu" ).length ) {
-
-                                               // Redirect focus to the menu
-                                               this.element.trigger( "focus", [ true ] );
-
-                                               // If the active item is on the top level, let it stay active.
-                                               // Otherwise, blur the active item since it is no longer visible.
-                                               if ( this.active && this.active.parents( ".ui-menu" ).length === 1 ) {
-                                                       clearTimeout( this.timer );
-                                               }
-                                       }
-                               }
-                       },
-                       "mouseenter .ui-menu-item": function( event ) {
-                               // Ignore mouse events while typeahead is active, see #10458.
-                               // Prevents focusing the wrong item when typeahead causes a scroll while the mouse
-                               // is over an item in the menu
-                               if ( this.previousFilter ) {
-                                       return;
-                               }
-                               var target = $( event.currentTarget );
-                               // Remove ui-state-active class from siblings of the newly focused menu item
-                               // to avoid a jump caused by adjacent elements both having a class with a border
-                               target.siblings( ".ui-state-active" ).removeClass( "ui-state-active" );
-                               this.focus( event, target );
-                       },
-                       mouseleave: "collapseAll",
-                       "mouseleave .ui-menu": "collapseAll",
-                       focus: function( event, keepActiveItem ) {
-                               // If there's already an active item, keep it active
-                               // If not, activate the first item
-                               var item = this.active || this.element.find( this.options.items ).eq( 0 );
-
-                               if ( !keepActiveItem ) {
-                                       this.focus( event, item );
-                               }
-                       },
-                       blur: function( event ) {
-                               this._delay(function() {
-                                       if ( !$.contains( this.element[0], this.document[0].activeElement ) ) {
-                                               this.collapseAll( event );
-                                       }
-                               });
-                       },
-                       keydown: "_keydown"
-               });
-
-               this.refresh();
-
-               // Clicks outside of a menu collapse any open menus
-               this._on( this.document, {
-                       click: function( event ) {
-                               if ( this._closeOnDocumentClick( event ) ) {
-                                       this.collapseAll( event );
-                               }
-
-                               // Reset the mouseHandled flag
-                               this.mouseHandled = false;
-                       }
-               });
-       },
-
-       _destroy: function() {
-               // Destroy (sub)menus
-               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();
-
-               // Destroy menu items
-               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 elem = $( this );
-                               if ( elem.data( "ui-menu-submenu-carat" ) ) {
-                                       elem.remove();
-                               }
-                       });
-
-               // Destroy menu dividers
-               this.element.find( ".ui-menu-divider" ).removeClass( "ui-menu-divider ui-widget-content" );
-       },
-
-       _keydown: function( event ) {
-               var match, prev, character, skip,
-                       preventDefault = true;
-
-               switch ( event.keyCode ) {
-               case $.ui.keyCode.PAGE_UP:
-                       this.previousPage( event );
-                       break;
-               case $.ui.keyCode.PAGE_DOWN:
-                       this.nextPage( event );
-                       break;
-               case $.ui.keyCode.HOME:
-                       this._move( "first", "first", event );
-                       break;
-               case $.ui.keyCode.END:
-                       this._move( "last", "last", event );
-                       break;
-               case $.ui.keyCode.UP:
-                       this.previous( event );
-                       break;
-               case $.ui.keyCode.DOWN:
-                       this.next( event );
-                       break;
-               case $.ui.keyCode.LEFT:
-                       this.collapse( event );
-                       break;
-               case $.ui.keyCode.RIGHT:
-                       if ( this.active && !this.active.is( ".ui-state-disabled" ) ) {
-                               this.expand( event );
-                       }
-                       break;
-               case $.ui.keyCode.ENTER:
-               case $.ui.keyCode.SPACE:
-                       this._activate( event );
-                       break;
-               case $.ui.keyCode.ESCAPE:
-                       this.collapse( event );
-                       break;
-               default:
-                       preventDefault = false;
-                       prev = this.previousFilter || "";
-                       character = String.fromCharCode( event.keyCode );
-                       skip = false;
-
-                       clearTimeout( this.filterTimer );
-
-                       if ( character === prev ) {
-                               skip = true;
-                       } else {
-                               character = prev + character;
-                       }
-
-                       match = this._filterMenuItems( character );
-                       match = skip && match.index( this.active.next() ) !== -1 ?
-                               this.active.nextAll( ".ui-menu-item" ) :
-                               match;
-
-                       // If no matches on the current filter, reset to the last character pressed
-                       // to move down the menu to the first item that starts with that character
-                       if ( !match.length ) {
-                               character = String.fromCharCode( event.keyCode );
-                               match = this._filterMenuItems( character );
-                       }
-
-                       if ( match.length ) {
-                               this.focus( event, match );
-                               this.previousFilter = character;
-                               this.filterTimer = this._delay(function() {
-                                       delete this.previousFilter;
-                               }, 1000 );
-                       } else {
-                               delete this.previousFilter;
-                       }
-               }
-
-               if ( preventDefault ) {
-                       event.preventDefault();
-               }
-       },
-
-       _activate: function( event ) {
-               if ( !this.active.is( ".ui-state-disabled" ) ) {
-                       if ( this.active.is( "[aria-haspopup='true']" ) ) {
-                               this.expand( event );
-                       } else {
-                               this.select( event );
-                       }
-               }
-       },
-
-       refresh: function() {
-               var menus, items,
-                       that = this,
-                       icon = this.options.icons.submenu,
-                       submenus = this.element.find( this.options.menus );
-
-               this.element.toggleClass( "ui-menu-icons", !!this.element.find( ".ui-icon" ).length );
-
-               // Initialize nested menus
-               submenus.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 menu = $( this ),
-                                       item = menu.parent(),
-                                       submenuCarat = $( "<span>" )
-                                               .addClass( "ui-menu-icon ui-icon " + icon )
-                                               .data( "ui-menu-submenu-carat", true );
-
-                               item
-                                       .attr( "aria-haspopup", "true" )
-                                       .prepend( submenuCarat );
-                               menu.attr( "aria-labelledby", item.attr( "id" ) );
-                       });
-
-               menus = submenus.add( this.element );
-               items = menus.find( this.options.items );
-
-               // Initialize menu-items containing spaces and/or dashes only as dividers
-               items.not( ".ui-menu-item" ).each(function() {
-                       var item = $( this );
-                       if ( that._isDivider( item ) ) {
-                               item.addClass( "ui-widget-content ui-menu-divider" );
-                       }
-               });
-
-               // Don't refresh list items that are already adapted
-               items.not( ".ui-menu-item, .ui-menu-divider" )
-                       .addClass( "ui-menu-item" )
-                       .uniqueId()
-                       .attr({
-                               tabIndex: -1,
-                               role: this._itemRole()
-                       });
-
-               // Add aria-disabled attribute to any disabled menu item
-               items.filter( ".ui-state-disabled" ).attr( "aria-disabled", "true" );
-
-               // If the active item has been removed, blur the menu
-               if ( this.active && !$.contains( this.element[ 0 ], this.active[ 0 ] ) ) {
-                       this.blur();
-               }
-       },
-
-       _itemRole: function() {
-               return {
-                       menu: "menuitem",
-                       listbox: "option"
-               }[ this.options.role ];
-       },
-
-       _setOption: function( key, value ) {
-               if ( key === "icons" ) {
-                       this.element.find( ".ui-menu-icon" )
-                               .removeClass( this.options.icons.submenu )
-                               .addClass( value.submenu );
-               }
-               if ( key === "disabled" ) {
-                       this.element
-                               .toggleClass( "ui-state-disabled", !!value )
-                               .attr( "aria-disabled", value );
-               }
-               this._super( key, value );
-       },
-
-       focus: function( event, item ) {
-               var nested, focused;
-               this.blur( event, event && event.type === "focus" );
-
-               this._scrollIntoView( item );
-
-               this.active = item.first();
-               focused = this.active.addClass( "ui-state-focus" ).removeClass( "ui-state-active" );
-               // Only update aria-activedescendant if there's a role
-               // otherwise we assume focus is managed elsewhere
-               if ( this.options.role ) {
-                       this.element.attr( "aria-activedescendant", focused.attr( "id" ) );
-               }
-
-               // Highlight active parent menu item, if any
-               this.active
-                       .parent()
-                       .closest( ".ui-menu-item" )
-                       .addClass( "ui-state-active" );
-
-               if ( event && event.type === "keydown" ) {
-                       this._close();
-               } else {
-                       this.timer = this._delay(function() {
-                               this._close();
-                       }, this.delay );
-               }
-
-               nested = item.children( ".ui-menu" );
-               if ( nested.length && event && ( /^mouse/.test( event.type ) ) ) {
-                       this._startOpening(nested);
-               }
-               this.activeMenu = item.parent();
-
-               this._trigger( "focus", event, { item: item } );
-       },
-
-       _scrollIntoView: function( item ) {
-               var borderTop, paddingTop, offset, scroll, elementHeight, itemHeight;
-               if ( this._hasScroll() ) {
-                       borderTop = parseFloat( $.css( this.activeMenu[0], "borderTopWidth" ) ) || 0;
-                       paddingTop = parseFloat( $.css( this.activeMenu[0], "paddingTop" ) ) || 0;
-                       offset = item.offset().top - this.activeMenu.offset().top - borderTop - paddingTop;
-                       scroll = this.activeMenu.scrollTop();
-                       elementHeight = this.activeMenu.height();
-                       itemHeight = item.outerHeight();
-
-                       if ( offset < 0 ) {
-                               this.activeMenu.scrollTop( scroll + offset );
-                       } else if ( offset + itemHeight > elementHeight ) {
-                               this.activeMenu.scrollTop( scroll + offset - elementHeight + itemHeight );
-                       }
-               }
-       },
-
-       blur: function( event, fromFocus ) {
-               if ( !fromFocus ) {
-                       clearTimeout( this.timer );
-               }
-
-               if ( !this.active ) {
-                       return;
-               }
-
-               this.active.removeClass( "ui-state-focus" );
-               this.active = null;
-
-               this._trigger( "blur", event, { item: this.active } );
-       },
-
-       _startOpening: function( submenu ) {
-               clearTimeout( this.timer );
-
-               // Don't open if already open fixes a Firefox bug that caused a .5 pixel
-               // shift in the submenu position when mousing over the carat icon
-               if ( submenu.attr( "aria-hidden" ) !== "true" ) {
-                       return;
-               }
-
-               this.timer = this._delay(function() {
-                       this._close();
-                       this._open( submenu );
-               }, this.delay );
-       },
-
-       _open: function( submenu ) {
-               var position = $.extend({
-                       of: this.active
-               }, this.options.position );
-
-               clearTimeout( this.timer );
-               this.element.find( ".ui-menu" ).not( submenu.parents( ".ui-menu" ) )
-                       .hide()
-                       .attr( "aria-hidden", "true" );
-
-               submenu
-                       .show()
-                       .removeAttr( "aria-hidden" )
-                       .attr( "aria-expanded", "true" )
-                       .position( position );
-       },
-
-       collapseAll: function( event, all ) {
-               clearTimeout( this.timer );
-               this.timer = this._delay(function() {
-                       // If we were passed an event, look for the submenu that contains the event
-                       var currentMenu = all ? this.element :
-                               $( event && event.target ).closest( this.element.find( ".ui-menu" ) );
-
-                       // If we found no valid submenu ancestor, use the main menu to close all sub menus anyway
-                       if ( !currentMenu.length ) {
-                               currentMenu = this.element;
-                       }
-
-                       this._close( currentMenu );
-
-                       this.blur( event );
-                       this.activeMenu = currentMenu;
-               }, this.delay );
-       },
-
-       // With no arguments, closes the currently active menu - if nothing is active
-       // it closes all menus.  If passed an argument, it will search for menus BELOW
-       _close: function( startMenu ) {
-               if ( !startMenu ) {
-                       startMenu = this.active ? this.active.parent() : this.element;
-               }
-
-               startMenu
-                       .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( event ) {
-               return !$( event.target ).closest( ".ui-menu" ).length;
-       },
-
-       _isDivider: function( item ) {
-
-               // Match hyphen, em dash, en dash
-               return !/[^\-\u2014\u2013\s]/.test( item.text() );
-       },
-
-       collapse: function( event ) {
-               var newItem = this.active &&
-                       this.active.parent().closest( ".ui-menu-item", this.element );
-               if ( newItem && newItem.length ) {
-                       this._close();
-                       this.focus( event, newItem );
-               }
-       },
-
-       expand: function( event ) {
-               var newItem = this.active &&
-                       this.active
-                               .children( ".ui-menu " )
-                               .find( this.options.items )
-                               .first();
-
-               if ( newItem && newItem.length ) {
-                       this._open( newItem.parent() );
-
-                       // Delay so Firefox will not hide activedescendant change in expanding submenu from AT
-                       this._delay(function() {
-                               this.focus( event, newItem );
-                       });
-               }
-       },
-
-       next: function( event ) {
-               this._move( "next", "first", event );
-       },
-
-       previous: function( event ) {
-               this._move( "prev", "last", event );
-       },
-
-       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( direction, filter, event ) {
-               var next;
-               if ( this.active ) {
-                       if ( direction === "first" || direction === "last" ) {
-                               next = this.active
-                                       [ direction === "first" ? "prevAll" : "nextAll" ]( ".ui-menu-item" )
-                                       .eq( -1 );
-                       } else {
-                               next = this.active
-                                       [ direction + "All" ]( ".ui-menu-item" )
-                                       .eq( 0 );
-                       }
-               }
-               if ( !next || !next.length || !this.active ) {
-                       next = this.activeMenu.find( this.options.items )[ filter ]();
-               }
-
-               this.focus( event, next );
-       },
-
-       nextPage: function( event ) {
-               var item, base, height;
-
-               if ( !this.active ) {
-                       this.next( event );
-                       return;
-               }
-               if ( this.isLastItem() ) {
-                       return;
-               }
-               if ( this._hasScroll() ) {
-                       base = this.active.offset().top;
-                       height = this.element.height();
-                       this.active.nextAll( ".ui-menu-item" ).each(function() {
-                               item = $( this );
-                               return item.offset().top - base - height < 0;
-                       });
-
-                       this.focus( event, item );
-               } else {
-                       this.focus( event, this.activeMenu.find( this.options.items )
-                               [ !this.active ? "first" : "last" ]() );
-               }
-       },
-
-       previousPage: function( event ) {
-               var item, base, height;
-               if ( !this.active ) {
-                       this.next( event );
-                       return;
-               }
-               if ( this.isFirstItem() ) {
-                       return;
-               }
-               if ( this._hasScroll() ) {
-                       base = this.active.offset().top;
-                       height = this.element.height();
-                       this.active.prevAll( ".ui-menu-item" ).each(function() {
-                               item = $( this );
-                               return item.offset().top - base + height > 0;
-                       });
-
-                       this.focus( event, item );
-               } else {
-                       this.focus( event, this.activeMenu.find( this.options.items ).first() );
-               }
-       },
-
-       _hasScroll: function() {
-               return this.element.outerHeight() < this.element.prop( "scrollHeight" );
-       },
-
-       select: function( event ) {
-               // TODO: It should never be possible to not have an active item at this
-               // point, but the tests don't trigger mouseenter before click.
-               this.active = this.active || $( event.target ).closest( ".ui-menu-item" );
-               var ui = { item: this.active };
-               if ( !this.active.has( ".ui-menu" ).length ) {
-                       this.collapseAll( event, true );
-               }
-               this._trigger( "select", event, ui );
-       },
-
-       _filterMenuItems: function(character) {
-               var escapedCharacter = character.replace( /[\-\[\]{}()*+?.,\\\^$|#\s]/g, "\\$&" ),
-                       regex = new RegExp( "^" + escapedCharacter, "i" );
-
-               return this.activeMenu
-                       .find( this.options.items )
-
-                       // Only match on items, not dividers or other content (#10571)
-                       .filter( ".ui-menu-item" )
-                       .filter(function() {
-                               return regex.test( $.trim( $( this ).text() ) );
-                       });
-       }
-});
-
-
-/*!
- * jQuery UI Autocomplete 1.11.3
- * http://jqueryui.com
- *
- * Copyright jQuery Foundation and other contributors
- * Released under the MIT license.
- * http://jquery.org/license
- *
- * http://api.jqueryui.com/autocomplete/
- */
-
-
-$.widget( "ui.autocomplete", {
-       version: "1.11.3",
-       defaultElement: "<input>",
-       options: {
-               appendTo: null,
-               autoFocus: false,
-               delay: 300,
-               minLength: 1,
-               position: {
-                       my: "left top",
-                       at: "left bottom",
-                       collision: "none"
-               },
-               source: null,
-
-               // callbacks
-               change: null,
-               close: null,
-               focus: null,
-               open: null,
-               response: null,
-               search: null,
-               select: null
-       },
-
-       requestIndex: 0,
-       pending: 0,
-
-       _create: function() {
-               // Some browsers only repeat keydown events, not keypress events,
-               // so we use the suppressKeyPress flag to determine if we've already
-               // handled the keydown event. #7269
-               // Unfortunately the code for & in keypress is the same as the up arrow,
-               // so we use the suppressKeyPressRepeat flag to avoid handling keypress
-               // events when we know the keydown event was used to modify the
-               // search term. #7799
-               var suppressKeyPress, suppressKeyPressRepeat, suppressInput,
-                       nodeName = this.element[ 0 ].nodeName.toLowerCase(),
-                       isTextarea = nodeName === "textarea",
-                       isInput = nodeName === "input";
-
-               this.isMultiLine =
-                       // Textareas are always multi-line
-                       isTextarea ? true :
-                       // Inputs are always single-line, even if inside a contentEditable element
-                       // IE also treats inputs as contentEditable
-                       isInput ? false :
-                       // All other element types are determined by whether or not they're contentEditable
-                       this.element.prop( "isContentEditable" );
-
-               this.valueMethod = this.element[ isTextarea || isInput ? "val" : "text" ];
-               this.isNewMenu = true;
-
-               this.element
-                       .addClass( "ui-autocomplete-input" )
-                       .attr( "autocomplete", "off" );
-
-               this._on( this.element, {
-                       keydown: function( event ) {
-                               if ( this.element.prop( "readOnly" ) ) {
-                                       suppressKeyPress = true;
-                                       suppressInput = true;
-                                       suppressKeyPressRepeat = true;
-                                       return;
-                               }
-
-                               suppressKeyPress = false;
-                               suppressInput = false;
-                               suppressKeyPressRepeat = false;
-                               var keyCode = $.ui.keyCode;
-                               switch ( event.keyCode ) {
-                               case keyCode.PAGE_UP:
-                                       suppressKeyPress = true;
-                                       this._move( "previousPage", event );
-                                       break;
-                               case keyCode.PAGE_DOWN:
-                                       suppressKeyPress = true;
-                                       this._move( "nextPage", event );
-                                       break;
-                               case keyCode.UP:
-                                       suppressKeyPress = true;
-                                       this._keyEvent( "previous", event );
-                                       break;
-                               case keyCode.DOWN:
-                                       suppressKeyPress = true;
-                                       this._keyEvent( "next", event );
-                                       break;
-                               case keyCode.ENTER:
-                                       // when menu is open and has focus
-                                       if ( this.menu.active ) {
-                                               // #6055 - Opera still allows the keypress to occur
-                                               // which causes forms to submit
-                                               suppressKeyPress = true;
-                                               event.preventDefault();
-                                               this.menu.select( event );
-                                       }
-                                       break;
-                               case keyCode.TAB:
-                                       if ( this.menu.active ) {
-                                               this.menu.select( event );
-                                       }
-                                       break;
-                               case keyCode.ESCAPE:
-                                       if ( this.menu.element.is( ":visible" ) ) {
-                                               if ( !this.isMultiLine ) {
-                                                       this._value( this.term );
-                                               }
-                                               this.close( event );
-                                               // Different browsers have different default behavior for escape
-                                               // Single press can mean undo or clear
-                                               // Double press in IE means clear the whole form
-                                               event.preventDefault();
-                                       }
-                                       break;
-                               default:
-                                       suppressKeyPressRepeat = true;
-                                       // search timeout should be triggered before the input value is changed
-                                       this._searchTimeout( event );
-                                       break;
-                               }
-                       },
-                       keypress: function( event ) {
-                               if ( suppressKeyPress ) {
-                                       suppressKeyPress = false;
-                                       if ( !this.isMultiLine || this.menu.element.is( ":visible" ) ) {
-                                               event.preventDefault();
-                                       }
-                                       return;
-                               }
-                               if ( suppressKeyPressRepeat ) {
-                                       return;
-                               }
-
-                               // replicate some key handlers to allow them to repeat in Firefox and Opera
-                               var keyCode = $.ui.keyCode;
-                               switch ( event.keyCode ) {
-                               case keyCode.PAGE_UP:
-                                       this._move( "previousPage", event );
-                                       break;
-                               case keyCode.PAGE_DOWN:
-                                       this._move( "nextPage", event );
-                                       break;
-                               case keyCode.UP:
-                                       this._keyEvent( "previous", event );
-                                       break;
-                               case keyCode.DOWN:
-                                       this._keyEvent( "next", event );
-                                       break;
-                               }
-                       },
-                       input: function( event ) {
-                               if ( suppressInput ) {
-                                       suppressInput = false;
-                                       event.preventDefault();
-                                       return;
-                               }
-                               this._searchTimeout( event );
-                       },
-                       focus: function() {
-                               this.selectedItem = null;
-                               this.previous = this._value();
-                       },
-                       blur: function( event ) {
-                               if ( this.cancelBlur ) {
-                                       delete this.cancelBlur;
-                                       return;
-                               }
-
-                               clearTimeout( this.searching );
-                               this.close( event );
-                               this._change( event );
-                       }
-               });
-
-               this._initSource();
-               this.menu = $( "<ul>" )
-                       .addClass( "ui-autocomplete ui-front" )
-                       .appendTo( this._appendTo() )
-                       .menu({
-                               // disable ARIA support, the live region takes care of that
-                               role: null
-                       })
-                       .hide()
-                       .menu( "instance" );
-
-               this._on( this.menu.element, {
-                       mousedown: function( event ) {
-                               // prevent moving focus out of the text field
-                               event.preventDefault();
-
-                               // IE doesn't prevent moving focus even with event.preventDefault()
-                               // so we set a flag to know when we should ignore the blur event
-                               this.cancelBlur = true;
-                               this._delay(function() {
-                                       delete this.cancelBlur;
-                               });
-
-                               // clicking on the scrollbar causes focus to shift to the body
-                               // but we can't detect a mouseup or a click immediately afterward
-                               // so we have to track the next mousedown and close the menu if
-                               // the user clicks somewhere outside of the autocomplete
-                               var menuElement = this.menu.element[ 0 ];
-                               if ( !$( event.target ).closest( ".ui-menu-item" ).length ) {
-                                       this._delay(function() {
-                                               var that = this;
-                                               this.document.one( "mousedown", function( event ) {
-                                                       if ( event.target !== that.element[ 0 ] &&
-                                                                       event.target !== menuElement &&
-                                                                       !$.contains( menuElement, event.target ) ) {
-                                                               that.close();
-                                                       }
-                                               });
-                                       });
-                               }
-                       },
-                       menufocus: function( event, ui ) {
-                               var label, item;
-                               // support: Firefox
-                               // Prevent accidental activation of menu items in Firefox (#7024 #9118)
-                               if ( this.isNewMenu ) {
-                                       this.isNewMenu = false;
-                                       if ( event.originalEvent && /^mouse/.test( event.originalEvent.type ) ) {
-                                               this.menu.blur();
-
-                                               this.document.one( "mousemove", function() {
-                                                       $( event.target ).trigger( event.originalEvent );
-                                               });
-
-                                               return;
-                                       }
-                               }
-
-                               item = ui.item.data( "ui-autocomplete-item" );
-                               if ( false !== this._trigger( "focus", event, { item: item } ) ) {
-                                       // use value to match what will end up in the input, if it was a key event
-                                       if ( event.originalEvent && /^key/.test( event.originalEvent.type ) ) {
-                                               this._value( item.value );
-                                       }
-                               }
-
-                               // Announce the value in the liveRegion
-                               label = ui.item.attr( "aria-label" ) || item.value;
-                               if ( label && $.trim( label ).length ) {
-                                       this.liveRegion.children().hide();
-                                       $( "<div>" ).text( label ).appendTo( this.liveRegion );
-                               }
-                       },
-                       menuselect: function( event, ui ) {
-                               var item = ui.item.data( "ui-autocomplete-item" ),
-                                       previous = this.previous;
-
-                               // only trigger when focus was lost (click on menu)
-                               if ( this.element[ 0 ] !== this.document[ 0 ].activeElement ) {
-                                       this.element.focus();
-                                       this.previous = previous;
-                                       // #6109 - IE triggers two focus events and the second
-                                       // is asynchronous, so we need to reset the previous
-                                       // term synchronously and asynchronously :-(
-                                       this._delay(function() {
-                                               this.previous = previous;
-                                               this.selectedItem = item;
-                                       });
-                               }
-
-                               if ( false !== this._trigger( "select", event, { item: item } ) ) {
-                                       this._value( item.value );
-                               }
-                               // reset the term after the select event
-                               // this allows custom select handling to work properly
-                               this.term = this._value();
-
-                               this.close( event );
-                               this.selectedItem = item;
-                       }
-               });
-
-               this.liveRegion = $( "<span>", {
-                               role: "status",
-                               "aria-live": "assertive",
-                               "aria-relevant": "additions"
-                       })
-                       .addClass( "ui-helper-hidden-accessible" )
-                       .appendTo( this.document[ 0 ].body );
-
-               // turning off autocomplete prevents the browser from remembering the
-               // value when navigating through history, so we re-enable autocomplete
-               // if the page is unloaded before the widget is destroyed. #7790
-               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( key, value ) {
-               this._super( key, value );
-               if ( key === "source" ) {
-                       this._initSource();
-               }
-               if ( key === "appendTo" ) {
-                       this.menu.element.appendTo( this._appendTo() );
-               }
-               if ( key === "disabled" && value && this.xhr ) {
-                       this.xhr.abort();
-               }
-       },
-
-       _appendTo: function() {
-               var element = this.options.appendTo;
-
-               if ( element ) {
-                       element = element.jquery || element.nodeType ?
-                               $( element ) :
-                               this.document.find( element ).eq( 0 );
-               }
-
-               if ( !element || !element[ 0 ] ) {
-                       element = this.element.closest( ".ui-front" );
-               }
-
-               if ( !element.length ) {
-                       element = this.document[ 0 ].body;
-               }
-
-               return element;
-       },
-
-       _initSource: function() {
-               var array, url,
-                       that = this;
-               if ( $.isArray( this.options.source ) ) {
-                       array = this.options.source;
-                       this.source = function( request, response ) {
-                               response( $.ui.autocomplete.filter( array, request.term ) );
-                       };
-               } else if ( typeof this.options.source === "string" ) {
-                       url = this.options.source;
-                       this.source = function( request, response ) {
-                               if ( that.xhr ) {
-                                       that.xhr.abort();
-                               }
-                               that.xhr = $.ajax({
-                                       url: url,
-                                       data: request,
-                                       dataType: "json",
-                                       success: function( data ) {
-                                               response( data );
-                                       },
-                                       error: function() {
-                                               response([]);
-                                       }
-                               });
-                       };
-               } else {
-                       this.source = this.options.source;
-               }
-       },
-
-       _searchTimeout: function( event ) {
-               clearTimeout( this.searching );
-               this.searching = this._delay(function() {
-
-                       // Search if the value has changed, or if the user retypes the same value (see #7434)
-                       var equalValues = this.term === this._value(),
-                               menuVisible = this.menu.element.is( ":visible" ),
-                               modifierKey = event.altKey || event.ctrlKey || event.metaKey || event.shiftKey;
-
-                       if ( !equalValues || ( equalValues && !menuVisible && !modifierKey ) ) {
-                               this.selectedItem = null;
-                               this.search( null, event );
-                       }
-               }, this.options.delay );
-       },
-
-       search: function( value, event ) {
-               value = value != null ? value : this._value();
-
-               // always save the actual value, not the one passed as an argument
-               this.term = this._value();
-
-               if ( value.length < this.options.minLength ) {
-                       return this.close( event );
-               }
-
-               if ( this._trigger( "search", event ) === false ) {
-                       return;
-               }
-
-               return this._search( value );
-       },
-
-       _search: function( value ) {
-               this.pending++;
-               this.element.addClass( "ui-autocomplete-loading" );
-               this.cancelSearch = false;
-
-               this.source( { term: value }, this._response() );
-       },
-
-       _response: function() {
-               var index = ++this.requestIndex;
-
-               return $.proxy(function( content ) {
-                       if ( index === this.requestIndex ) {
-                               this.__response( content );
-                       }
-
-                       this.pending--;
-                       if ( !this.pending ) {
-                               this.element.removeClass( "ui-autocomplete-loading" );
-                       }
-               }, this );
-       },
-
-       __response: function( content ) {
-               if ( content ) {
-                       content = this._normalize( content );
-               }
-               this._trigger( "response", null, { content: content } );
-               if ( !this.options.disabled && content && content.length && !this.cancelSearch ) {
-                       this._suggest( content );
-                       this._trigger( "open" );
-               } else {
-                       // use ._close() instead of .close() so we don't cancel future searches
-                       this._close();
-               }
-       },
-
-       close: function( event ) {
-               this.cancelSearch = true;
-               this._close( event );
-       },
-
-       _close: function( event ) {
-               if ( this.menu.element.is( ":visible" ) ) {
-                       this.menu.element.hide();
-                       this.menu.blur();
-                       this.isNewMenu = true;
-                       this._trigger( "close", event );
-               }
-       },
-
-       _change: function( event ) {
-               if ( this.previous !== this._value() ) {
-                       this._trigger( "change", event, { item: this.selectedItem } );
-               }
-       },
-
-       _normalize: function( items ) {
-               // assume all items have the right format when the first item is complete
-               if ( items.length && items[ 0 ].label && items[ 0 ].value ) {
-                       return items;
-               }
-               return $.map( items, function( item ) {
-                       if ( typeof item === "string" ) {
-                               return {
-                                       label: item,
-                                       value: item
-                               };
-                       }
-                       return $.extend( {}, item, {
-                               label: item.label || item.value,
-                               value: item.value || item.label
-                       });
-               });
-       },
-
-       _suggest: function( items ) {
-               var ul = this.menu.element.empty();
-               this._renderMenu( ul, items );
-               this.isNewMenu = true;
-               this.menu.refresh();
-
-               // size and position menu
-               ul.show();
-               this._resizeMenu();
-               ul.position( $.extend({
-                       of: this.element
-               }, this.options.position ) );
-
-               if ( this.options.autoFocus ) {
-                       this.menu.next();
-               }
-       },
-
-       _resizeMenu: function() {
-               var ul = this.menu.element;
-               ul.outerWidth( Math.max(
-                       // Firefox wraps long text (possibly a rounding bug)
-                       // so we add 1px to avoid the wrapping (#7513)
-                       ul.width( "" ).outerWidth() + 1,
-                       this.element.outerWidth()
-               ) );
-       },
-
-       _renderMenu: function( ul, items ) {
-               var that = this;
-               $.each( items, function( index, item ) {
-                       that._renderItemData( ul, item );
-               });
-       },
-
-       _renderItemData: function( ul, item ) {
-               return this._renderItem( ul, item ).data( "ui-autocomplete-item", item );
-       },
-
-       _renderItem: function( ul, item ) {
-               return $( "<li>" ).text( item.label ).appendTo( ul );
-       },
-
-       _move: function( direction, event ) {
-               if ( !this.menu.element.is( ":visible" ) ) {
-                       this.search( null, event );
-                       return;
-               }
-               if ( this.menu.isFirstItem() && /^previous/.test( direction ) ||
-                               this.menu.isLastItem() && /^next/.test( direction ) ) {
-
-                       if ( !this.isMultiLine ) {
-                               this._value( this.term );
-                       }
-
-                       this.menu.blur();
-                       return;
-               }
-               this.menu[ direction ]( event );
-       },
-
-       widget: function() {
-               return this.menu.element;
-       },
-
-       _value: function() {
-               return this.valueMethod.apply( this.element, arguments );
-       },
-
-       _keyEvent: function( keyEvent, event ) {
-               if ( !this.isMultiLine || this.menu.element.is( ":visible" ) ) {
-                       this._move( keyEvent, event );
-
-                       // prevents moving cursor to beginning/end of the text field in some browsers
-                       event.preventDefault();
-               }
-       }
-});
-
-$.extend( $.ui.autocomplete, {
-       escapeRegex: function( value ) {
-               return value.replace( /[\-\[\]{}()*+?.,\\\^$|#\s]/g, "\\$&" );
-       },
-       filter: function( array, term ) {
-               var matcher = new RegExp( $.ui.autocomplete.escapeRegex( term ), "i" );
-               return $.grep( array, function( value ) {
-                       return matcher.test( value.label || value.value || value );
-               });
-       }
-});
-
-// live region extension, adding a `messages` option
-// NOTE: This is an experimental API. We are still investigating
-// a full solution for string manipulation and internationalization.
-$.widget( "ui.autocomplete", $.ui.autocomplete, {
-       options: {
-               messages: {
-                       noResults: "No search results.",
-                       results: function( amount ) {
-                               return amount + ( amount > 1 ? " results are" : " result is" ) +
-                                       " available, use up and down arrow keys to navigate.";
-                       }
-               }
-       },
-
-       __response: function( content ) {
-               var message;
-               this._superApply( arguments );
-               if ( this.options.disabled || this.cancelSearch ) {
-                       return;
-               }
-               if ( content && content.length ) {
-                       message = this.options.messages.results( content.length );
-               } else {
-                       message = this.options.messages.noResults;
-               }
-               this.liveRegion.children().hide();
-               $( "<div>" ).text( message ).appendTo( this.liveRegion );
-       }
-});
-
-var autocomplete = $.ui.autocomplete;
-
-
-/*!
- * jQuery UI Button 1.11.3
- * http://jqueryui.com
- *
- * Copyright jQuery Foundation and other contributors
- * Released under the MIT license.
- * http://jquery.org/license
- *
- * http://api.jqueryui.com/button/
- */
-
-
-var lastActive,
-       baseClasses = "ui-button ui-widget ui-state-default ui-corner-all",
-       typeClasses = "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",
-       formResetHandler = function() {
-               var form = $( this );
-               setTimeout(function() {
-                       form.find( ":ui-button" ).button( "refresh" );
-               }, 1 );
-       },
-       radioGroup = function( radio ) {
-               var name = radio.name,
-                       form = radio.form,
-                       radios = $( [] );
-               if ( name ) {
-                       name = name.replace( /'/g, "\\'" );
-                       if ( form ) {
-                               radios = $( form ).find( "[name='" + name + "'][type=radio]" );
-                       } else {
-                               radios = $( "[name='" + name + "'][type=radio]", radio.ownerDocument )
-                                       .filter(function() {
-                                               return !this.form;
-                                       });
-                       }
-               }
-               return radios;
-       };
-
-$.widget( "ui.button", {
-       version: "1.11.3",
-       defaultElement: "<button>",
-       options: {
-               disabled: null,
-               text: true,
-               label: null,
-               icons: {
-                       primary: null,
-                       secondary: null
-               }
-       },
-       _create: function() {
-               this.element.closest( "form" )
-                       .unbind( "reset" + this.eventNamespace )
-                       .bind( "reset" + this.eventNamespace, formResetHandler );
-
-               if ( typeof this.options.disabled !== "boolean" ) {
-                       this.options.disabled = !!this.element.prop( "disabled" );
-               } else {
-                       this.element.prop( "disabled", this.options.disabled );
-               }
-
-               this._determineButtonType();
-               this.hasTitle = !!this.buttonElement.attr( "title" );
-
-               var that = this,
-                       options = this.options,
-                       toggleButton = this.type === "checkbox" || this.type === "radio",
-                       activeClass = !toggleButton ? "ui-state-active" : "";
-
-               if ( options.label === null ) {
-                       options.label = (this.type === "input" ? this.buttonElement.val() : this.buttonElement.html());
-               }
-
-               this._hoverable( this.buttonElement );
-
-               this.buttonElement
-                       .addClass( baseClasses )
-                       .attr( "role", "button" )
-                       .bind( "mouseenter" + this.eventNamespace, function() {
-                               if ( options.disabled ) {
-                                       return;
-                               }
-                               if ( this === lastActive ) {
-                                       $( this ).addClass( "ui-state-active" );
-                               }
-                       })
-                       .bind( "mouseleave" + this.eventNamespace, function() {
-                               if ( options.disabled ) {
-                                       return;
-                               }
-                               $( this ).removeClass( activeClass );
-                       })
-                       .bind( "click" + this.eventNamespace, function( event ) {
-                               if ( options.disabled ) {
-                                       event.preventDefault();
-                                       event.stopImmediatePropagation();
-                               }
-                       });
-
-               // Can't use _focusable() because the element that receives focus
-               // and the element that gets the ui-state-focus class are different
-               this._on({
-                       focus: function() {
-                               this.buttonElement.addClass( "ui-state-focus" );
-                       },
-                       blur: function() {
-                               this.buttonElement.removeClass( "ui-state-focus" );
-                       }
-               });
-
-               if ( toggleButton ) {
-                       this.element.bind( "change" + this.eventNamespace, function() {
-                               that.refresh();
-                       });
-               }
-
-               if ( this.type === "checkbox" ) {
-                       this.buttonElement.bind( "click" + this.eventNamespace, function() {
-                               if ( options.disabled ) {
-                                       return false;
-                               }
-                       });
-               } else if ( this.type === "radio" ) {
-                       this.buttonElement.bind( "click" + this.eventNamespace, function() {
-                               if ( options.disabled ) {
-                                       return false;
-                               }
-                               $( this ).addClass( "ui-state-active" );
-                               that.buttonElement.attr( "aria-pressed", "true" );
-
-                               var radio = that.element[ 0 ];
-                               radioGroup( radio )
-                                       .not( radio )
-                                       .map(function() {
-                                               return $( this ).button( "widget" )[ 0 ];
-                                       })
-                                       .removeClass( "ui-state-active" )
-                                       .attr( "aria-pressed", "false" );
-                       });
-               } else {
-                       this.buttonElement
-                               .bind( "mousedown" + this.eventNamespace, function() {
-                                       if ( options.disabled ) {
-                                               return false;
-                                       }
-                                       $( this ).addClass( "ui-state-active" );
-                                       lastActive = this;
-                                       that.document.one( "mouseup", function() {
-                                               lastActive = null;
-                                       });
-                               })
-                               .bind( "mouseup" + this.eventNamespace, function() {
-                                       if ( options.disabled ) {
-                                               return false;
-                                       }
-                                       $( this ).removeClass( "ui-state-active" );
-                               })
-                               .bind( "keydown" + this.eventNamespace, function(event) {
-                                       if ( options.disabled ) {
-                                               return false;
-                                       }
-                                       if ( event.keyCode === $.ui.keyCode.SPACE || event.keyCode === $.ui.keyCode.ENTER ) {
-                                               $( this ).addClass( "ui-state-active" );
-                                       }
-                               })
-                               // see #8559, we bind to blur here in case the button element loses
-                               // focus between keydown and keyup, it would be left in an "active" state
-                               .bind( "keyup" + this.eventNamespace + " blur" + this.eventNamespace, function() {
-                                       $( this ).removeClass( "ui-state-active" );
-                               });
-
-                       if ( this.buttonElement.is("a") ) {
-                               this.buttonElement.keyup(function(event) {
-                                       if ( event.keyCode === $.ui.keyCode.SPACE ) {
-                                               // TODO pass through original event correctly (just as 2nd argument doesn't work)
-                                               $( this ).click();
-                                       }
-                               });
-                       }
-               }
-
-               this._setOption( "disabled", options.disabled );
-               this._resetButton();
-       },
-
-       _determineButtonType: function() {
-               var ancestor, labelSelector, checked;
-
-               if ( this.element.is("[type=checkbox]") ) {
-                       this.type = "checkbox";
-               } else if ( this.element.is("[type=radio]") ) {
-                       this.type = "radio";
-               } else if ( this.element.is("input") ) {
-                       this.type = "input";
-               } else {
-                       this.type = "button";
-               }
-
-               if ( this.type === "checkbox" || this.type === "radio" ) {
-                       // we don't search against the document in case the element
-                       // is disconnected from the DOM
-                       ancestor = this.element.parents().last();
-                       labelSelector = "label[for='" + this.element.attr("id") + "']";
-                       this.buttonElement = ancestor.find( labelSelector );
-                       if ( !this.buttonElement.length ) {
-                               ancestor = ancestor.length ? ancestor.siblings() : this.element.siblings();
-                               this.buttonElement = ancestor.filter( labelSelector );
-                               if ( !this.buttonElement.length ) {
-                                       this.buttonElement = ancestor.find( labelSelector );
-                               }
-                       }
-                       this.element.addClass( "ui-helper-hidden-accessible" );
-
-                       checked = this.element.is( ":checked" );
-                       if ( checked ) {
-                               this.buttonElement.addClass( "ui-state-active" );
-                       }
-                       this.buttonElement.prop( "aria-pressed", checked );
-               } else {
-                       this.buttonElement = this.element;
-               }
-       },
-
-       widget: function() {
-               return this.buttonElement;
-       },
-
-       _destroy: function() {
-               this.element
-                       .removeClass( "ui-helper-hidden-accessible" );
-               this.buttonElement
-                       .removeClass( baseClasses + " ui-state-active " + typeClasses )
-                       .removeAttr( "role" )
-                       .removeAttr( "aria-pressed" )
-                       .html( this.buttonElement.find(".ui-button-text").html() );
-
-               if ( !this.hasTitle ) {
-                       this.buttonElement.removeAttr( "title" );
-               }
-       },
-
-       _setOption: function( key, value ) {
-               this._super( key, value );
-               if ( key === "disabled" ) {
-                       this.widget().toggleClass( "ui-state-disabled", !!value );
-                       this.element.prop( "disabled", !!value );
-                       if ( value ) {
-                               if ( this.type === "checkbox" || this.type === "radio" ) {
-                                       this.buttonElement.removeClass( "ui-state-focus" );
-                               } else {
-                                       this.buttonElement.removeClass( "ui-state-focus ui-state-active" );
-                               }
-                       }
-                       return;
-               }
-               this._resetButton();
-       },
-
-       refresh: function() {
-               //See #8237 & #8828
-               var isDisabled = this.element.is( "input, button" ) ? this.element.is( ":disabled" ) : this.element.hasClass( "ui-button-disabled" );
-
-               if ( isDisabled !== this.options.disabled ) {
-                       this._setOption( "disabled", isDisabled );
-               }
-               if ( this.type === "radio" ) {
-                       radioGroup( this.element[0] ).each(function() {
-                               if ( $( this ).is( ":checked" ) ) {
-                                       $( this ).button( "widget" )
-                                               .addClass( "ui-state-active" )
-                                               .attr( "aria-pressed", "true" );
-                               } else {
-                                       $( this ).button( "widget" )
-                                               .removeClass( "ui-state-active" )
-                                               .attr( "aria-pressed", "false" );
-                               }
-                       });
-               } else if ( this.type === "checkbox" ) {
-                       if ( this.element.is( ":checked" ) ) {
-                               this.buttonElement
-                                       .addClass( "ui-state-active" )
-                                       .attr( "aria-pressed", "true" );
-                       } else {
-                               this.buttonElement
-                                       .removeClass( "ui-state-active" )
-                                       .attr( "aria-pressed", "false" );
-                       }
-               }
-       },
-
-       _resetButton: function() {
-               if ( this.type === "input" ) {
-                       if ( this.options.label ) {
-                               this.element.val( this.options.label );
-                       }
-                       return;
-               }
-               var buttonElement = this.buttonElement.removeClass( typeClasses ),
-                       buttonText = $( "<span></span>", this.document[0] )
-                               .addClass( "ui-button-text" )
-                               .html( this.options.label )
-                               .appendTo( buttonElement.empty() )
-                               .text(),
-                       icons = this.options.icons,
-                       multipleIcons = icons.primary && icons.secondary,
-                       buttonClasses = [];
-
-               if ( icons.primary || icons.secondary ) {
-                       if ( this.options.text ) {
-                               buttonClasses.push( "ui-button-text-icon" + ( multipleIcons ? "s" : ( icons.primary ? "-primary" : "-secondary" ) ) );
-                       }
-
-                       if ( icons.primary ) {
-                               buttonElement.prepend( "<span class='ui-button-icon-primary ui-icon " + icons.primary + "'></span>" );
-                       }
-
-                       if ( icons.secondary ) {
-                               buttonElement.append( "<span class='ui-button-icon-secondary ui-icon " + icons.secondary + "'></span>" );
-                       }
-
-                       if ( !this.options.text ) {
-                               buttonClasses.push( multipleIcons ? "ui-button-icons-only" : "ui-button-icon-only" );
-
-                               if ( !this.hasTitle ) {
-                                       buttonElement.attr( "title", $.trim( buttonText ) );
-                               }
-                       }
-               } else {
-                       buttonClasses.push( "ui-button-text-only" );
-               }
-               buttonElement.addClass( buttonClasses.join( " " ) );
-       }
-});
-
-$.widget( "ui.buttonset", {
-       version: "1.11.3",
-       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( key, value ) {
-               if ( key === "disabled" ) {
-                       this.buttons.button( "option", key, value );
-               }
-
-               this._super( key, value );
-       },
-
-       refresh: function() {
-               var rtl = this.element.css( "direction" ) === "rtl",
-                       allButtons = this.element.find( this.options.items ),
-                       existingButtons = allButtons.filter( ":ui-button" );
-
-               // Initialize new buttons
-               allButtons.not( ":ui-button" ).button();
-
-               // Refresh existing buttons
-               existingButtons.button( "refresh" );
-
-               this.buttons = allButtons
-                       .map(function() {
-                               return $( this ).button( "widget" )[ 0 ];
-                       })
-                               .removeClass( "ui-corner-all ui-corner-left ui-corner-right" )
-                               .filter( ":first" )
-                                       .addClass( rtl ? "ui-corner-right" : "ui-corner-left" )
-                               .end()
-                               .filter( ":last" )
-                                       .addClass( rtl ? "ui-corner-left" : "ui-corner-right" )
-                               .end()
-                       .end();
-       },
-
-       _destroy: function() {
-               this.element.removeClass( "ui-buttonset" );
-               this.buttons
-                       .map(function() {
-                               return $( this ).button( "widget" )[ 0 ];
-                       })
-                               .removeClass( "ui-corner-left ui-corner-right" )
-                       .end()
-                       .button( "destroy" );
-       }
-});
-
-var button = $.ui.button;
-
-
-/*!
- * jQuery UI Datepicker 1.11.3
- * http://jqueryui.com
- *
- * Copyright jQuery Foundation and other contributors
- * Released under the MIT license.
- * http://jquery.org/license
- *
- * http://api.jqueryui.com/datepicker/
- */
-
-
-$.extend($.ui, { datepicker: { version: "1.11.3" } });
-
-var datepicker_instActive;
-
-function datepicker_getZindex( elem ) {
-       var position, value;
-       while ( elem.length && elem[ 0 ] !== document ) {
-               // Ignore z-index if position is set to a value where z-index is ignored by the browser
-               // This makes behavior of this function consistent across browsers
-               // WebKit always returns auto if the element is positioned
-               position = elem.css( "position" );
-               if ( position === "absolute" || position === "relative" || position === "fixed" ) {
-                       // IE returns 0 when zIndex is not specified
-                       // other browsers return a string
-                       // we ignore the case of nested elements with an explicit value of 0
-                       // <div style="z-index: -10;"><div style="z-index: 0;"></div></div>
-                       value = parseInt( elem.css( "zIndex" ), 10 );
-                       if ( !isNaN( value ) && value !== 0 ) {
-                               return value;
-                       }
-               }
-               elem = elem.parent();
-       }
-
-       return 0;
-}
-/* Date picker manager.
-   Use the singleton instance of this class, $.datepicker, to interact with the date picker.
-   Settings for (groups of) date pickers are maintained in an instance object,
-   allowing multiple different settings on the same page. */
-
-function Datepicker() {
-       this._curInst = null; // The current instance in use
-       this._keyEvent = false; // If the last event was a key event
-       this._disabledInputs = []; // List of date picker inputs that have been disabled
-       this._datepickerShowing = false; // True if the popup picker is showing , false if not
-       this._inDialog = false; // True if showing within a "dialog", false if not
-       this._mainDivId = "ui-datepicker-div"; // The ID of the main datepicker division
-       this._inlineClass = "ui-datepicker-inline"; // The name of the inline marker class
-       this._appendClass = "ui-datepicker-append"; // The name of the append marker class
-       this._triggerClass = "ui-datepicker-trigger"; // The name of the trigger marker class
-       this._dialogClass = "ui-datepicker-dialog"; // The name of the dialog marker class
-       this._disableClass = "ui-datepicker-disabled"; // The name of the disabled covering marker class
-       this._unselectableClass = "ui-datepicker-unselectable"; // The name of the unselectable cell marker class
-       this._currentClass = "ui-datepicker-current-day"; // The name of the current day marker class
-       this._dayOverClass = "ui-datepicker-days-cell-over"; // The name of the day hover marker class
-       this.regional = []; // Available regional settings, indexed by language code
-       this.regional[""] = { // Default regional settings
-               closeText: "Done", // Display text for close link
-               prevText: "Prev", // Display text for previous month link
-               nextText: "Next", // Display text for next month link
-               currentText: "Today", // Display text for current month link
-               monthNames: ["January","February","March","April","May","June",
-                       "July","August","September","October","November","December"], // Names of months for drop-down and formatting
-               monthNamesShort: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"], // For formatting
-               dayNames: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"], // For formatting
-               dayNamesShort: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"], // For formatting
-               dayNamesMin: ["Su","Mo","Tu","We","Th","Fr","Sa"], // Column headings for days starting at Sunday
-               weekHeader: "Wk", // Column header for week of the year
-               dateFormat: "mm/dd/yy", // See format options on parseDate
-               firstDay: 0, // The first day of the week, Sun = 0, Mon = 1, ...
-               isRTL: false, // True if right-to-left language, false if left-to-right
-               showMonthAfterYear: false, // True if the year select precedes month, false for month then year
-               yearSuffix: "" // Additional text to append to the year in the month headers
-       };
-       this._defaults = { // Global defaults for all the date picker instances
-               showOn: "focus", // "focus" for popup on focus,
-                       // "button" for trigger button, or "both" for either
-               showAnim: "fadeIn", // Name of jQuery animation for popup
-               showOptions: {}, // Options for enhanced animations
-               defaultDate: null, // Used when field is blank: actual date,
-                       // +/-number for offset from today, null for today
-               appendText: "", // Display text following the input box, e.g. showing the format
-               buttonText: "...", // Text for trigger button
-               buttonImage: "", // URL for trigger button image
-               buttonImageOnly: false, // True if the image appears alone, false if it appears on a button
-               hideIfNoPrevNext: false, // True to hide next/previous month links
-                       // if not applicable, false to just disable them
-               navigationAsDateFormat: false, // True if date formatting applied to prev/today/next links
-               gotoCurrent: false, // True if today link goes back to current selection instead
-               changeMonth: false, // True if month can be selected directly, false if only prev/next
-               changeYear: false, // True if year can be selected directly, false if only prev/next
-               yearRange: "c-10:c+10", // Range of years to display in drop-down,
-                       // either relative to today's year (-nn:+nn), relative to currently displayed year
-                       // (c-nn:c+nn), absolute (nnnn:nnnn), or a combination of the above (nnnn:-n)
-               showOtherMonths: false, // True to show dates in other months, false to leave blank
-               selectOtherMonths: false, // True to allow selection of dates in other months, false for unselectable
-               showWeek: false, // True to show week of the year, false to not show it
-               calculateWeek: this.iso8601Week, // How to calculate the week of the year,
-                       // takes a Date and returns the number of the week for it
-               shortYearCutoff: "+10", // Short year values < this are in the current century,
-                       // > this are in the previous century,
-                       // string value starting with "+" for current year + value
-               minDate: null, // The earliest selectable date, or null for no limit
-               maxDate: null, // The latest selectable date, or null for no limit
-               duration: "fast", // Duration of display/closure
-               beforeShowDay: null, // Function that takes a date and returns an array with
-                       // [0] = true if selectable, false if not, [1] = custom CSS class name(s) or "",
-                       // [2] = cell title (optional), e.g. $.datepicker.noWeekends
-               beforeShow: null, // Function that takes an input field and
-                       // returns a set of custom settings for the date picker
-               onSelect: null, // Define a callback function when a date is selected
-               onChangeMonthYear: null, // Define a callback function when the month or year is changed
-               onClose: null, // Define a callback function when the datepicker is closed
-               numberOfMonths: 1, // Number of months to show at a time
-               showCurrentAtPos: 0, // The position in multipe months at which to show the current month (starting at 0)
-               stepMonths: 1, // Number of months to step back/forward
-               stepBigMonths: 12, // Number of months to step back/forward for the big links
-               altField: "", // Selector for an alternate field to store selected dates into
-               altFormat: "", // The date format to use for the alternate field
-               constrainInput: true, // The input is constrained by the current date format
-               showButtonPanel: false, // True to show button panel, false to not show it
-               autoSize: false, // True to size the input for the date format, false to leave as is
-               disabled: false // The initial disabled state
-       };
-       $.extend(this._defaults, this.regional[""]);
-       this.regional.en = $.extend( true, {}, this.regional[ "" ]);
-       this.regional[ "en-US" ] = $.extend( true, {}, this.regional.en );
-       this.dpDiv = datepicker_bindHover($("<div id='" + this._mainDivId + "' class='ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all'></div>"));
-}
-
-$.extend(Datepicker.prototype, {
-       /* Class name added to elements to indicate already configured with a date picker. */
-       markerClassName: "hasDatepicker",
-
-       //Keep track of the maximum number of rows displayed (see #7043)
-       maxRows: 4,
-
-       // TODO rename to "widget" when switching to widget factory
-       _widgetDatepicker: function() {
-               return this.dpDiv;
-       },
-
-       /* Override the default settings for all instances of the date picker.
-        * @param  settings  object - the new settings to use as defaults (anonymous object)
-        * @return the manager object
-        */
-       setDefaults: function(settings) {
-               datepicker_extendRemove(this._defaults, settings || {});
-               return this;
-       },
-
-       /* Attach the date picker to a jQuery selection.
-        * @param  target       element - the target input field or division or span
-        * @param  settings  object - the new settings to use for this date picker instance (anonymous)
-        */
-       _attachDatepicker: function(target, settings) {
-               var nodeName, inline, inst;
-               nodeName = target.nodeName.toLowerCase();
-               inline = (nodeName === "div" || nodeName === "span");
-               if (!target.id) {
-                       this.uuid += 1;
-                       target.id = "dp" + this.uuid;
-               }
-               inst = this._newInst($(target), inline);
-               inst.settings = $.extend({}, settings || {});
-               if (nodeName === "input") {
-                       this._connectDatepicker(target, inst);
-               } else if (inline) {
-                       this._inlineDatepicker(target, inst);
-               }
-       },
-
-       /* Create a new instance object. */
-       _newInst: function(target, inline) {
-               var id = target[0].id.replace(/([^A-Za-z0-9_\-])/g, "\\\\$1"); // escape jQuery meta chars
-               return {id: id, input: target, // associated target
-                       selectedDay: 0, selectedMonth: 0, selectedYear: 0, // current selection
-                       drawMonth: 0, drawYear: 0, // month being drawn
-                       inline: inline, // is datepicker inline or not
-                       dpDiv: (!inline ? this.dpDiv : // presentation div
-                       datepicker_bindHover($("<div class='" + this._inlineClass + " ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all'></div>")))};
-       },
-
-       /* Attach the date picker to an input field. */
-       _connectDatepicker: function(target, inst) {
-               var input = $(target);
-               inst.append = $([]);
-               inst.trigger = $([]);
-               if (input.hasClass(this.markerClassName)) {
-                       return;
-               }
-               this._attachments(input, inst);
-               input.addClass(this.markerClassName).keydown(this._doKeyDown).
-                       keypress(this._doKeyPress).keyup(this._doKeyUp);
-               this._autoSize(inst);
-               $.data(target, "datepicker", inst);
-               //If disabled option is true, disable the datepicker once it has been attached to the input (see ticket #5665)
-               if( inst.settings.disabled ) {
-                       this._disableDatepicker( target );
-               }
-       },
-
-       /* Make attachments based on settings. */
-       _attachments: function(input, inst) {
-               var showOn, buttonText, buttonImage,
-                       appendText = this._get(inst, "appendText"),
-                       isRTL = this._get(inst, "isRTL");
-
-               if (inst.append) {
-                       inst.append.remove();
-               }
-               if (appendText) {
-                       inst.append = $("<span class='" + this._appendClass + "'>" + appendText + "</span>");
-                       input[isRTL ? "before" : "after"](inst.append);
-               }
-
-               input.unbind("focus", this._showDatepicker);
-
-               if (inst.trigger) {
-                       inst.trigger.remove();
-               }
-
-               showOn = this._get(inst, "showOn");
-               if (showOn === "focus" || showOn === "both") { // pop-up date picker when in the marked field
-                       input.focus(this._showDatepicker);
-               }
-               if (showOn === "button" || showOn === "both") { // pop-up date picker when button clicked
-                       buttonText = this._get(inst, "buttonText");
-                       buttonImage = this._get(inst, "buttonImage");
-                       inst.trigger = $(this._get(inst, "buttonImageOnly") ?
-                               $("<img/>").addClass(this._triggerClass).
-                                       attr({ src: buttonImage, alt: buttonText, title: buttonText }) :
-                               $("<button type='button'></button>").addClass(this._triggerClass).
-                                       html(!buttonImage ? buttonText : $("<img/>").attr(
-                                       { src:buttonImage, alt:buttonText, title:buttonText })));
-                       input[isRTL ? "before" : "after"](inst.trigger);
-                       inst.trigger.click(function() {
-                               if ($.datepicker._datepickerShowing && $.datepicker._lastInput === input[0]) {
-                                       $.datepicker._hideDatepicker();
-                               } else if ($.datepicker._datepickerShowing && $.datepicker._lastInput !== input[0]) {
-                                       $.datepicker._hideDatepicker();
-                                       $.datepicker._showDatepicker(input[0]);
-                               } else {
-                                       $.datepicker._showDatepicker(input[0]);
-                               }
-                               return false;
-                       });
-               }
-       },
-
-       /* Apply the maximum length for the date format. */
-       _autoSize: function(inst) {
-               if (this._get(inst, "autoSize") && !inst.inline) {
-                       var findMax, max, maxI, i,
-                               date = new Date(2009, 12 - 1, 20), // Ensure double digits
-                               dateFormat = this._get(inst, "dateFormat");
-
-                       if (dateFormat.match(/[DM]/)) {
-                               findMax = function(names) {
-                                       max = 0;
-                                       maxI = 0;
-                                       for (i = 0; i < names.length; i++) {
-                                               if (names[i].length > max) {
-                                                       max = names[i].length;
-                                                       maxI = i;
-                                               }
-                                       }
-                                       return maxI;
-                               };
-                               date.setMonth(findMax(this._get(inst, (dateFormat.match(/MM/) ?
-                                       "monthNames" : "monthNamesShort"))));
-                               date.setDate(findMax(this._get(inst, (dateFormat.match(/DD/) ?
-                                       "dayNames" : "dayNamesShort"))) + 20 - date.getDay());
-                       }
-                       inst.input.attr("size", this._formatDate(inst, date).length);
-               }
-       },
-
-       /* Attach an inline date picker to a div. */
-       _inlineDatepicker: function(target, inst) {
-               var divSpan = $(target);
-               if (divSpan.hasClass(this.markerClassName)) {
-                       return;
-               }
-               divSpan.addClass(this.markerClassName).append(inst.dpDiv);
-               $.data(target, "datepicker", inst);
-               this._setDate(inst, this._getDefaultDate(inst), true);
-               this._updateDatepicker(inst);
-               this._updateAlternate(inst);
-               //If disabled option is true, disable the datepicker before showing it (see ticket #5665)
-               if( inst.settings.disabled ) {
-                       this._disableDatepicker( target );
-               }
-               // Set display:block in place of inst.dpDiv.show() which won't work on disconnected elements
-               // http://bugs.jqueryui.com/ticket/7552 - A Datepicker created on a detached div has zero height
-               inst.dpDiv.css( "display", "block" );
-       },
-
-       /* Pop-up the date picker in a "dialog" box.
-        * @param  input element - ignored
-        * @param  date string or Date - the initial date to display
-        * @param  onSelect  function - the function to call when a date is selected
-        * @param  settings  object - update the dialog date picker instance's settings (anonymous object)
-        * @param  pos int[2] - coordinates for the dialog's position within the screen or
-        *                                      event - with x/y coordinates or
-        *                                      leave empty for default (screen centre)
-        * @return the manager object
-        */
-       _dialogDatepicker: function(input, date, onSelect, settings, pos) {
-               var id, browserWidth, browserHeight, scrollX, scrollY,
-                       inst = this._dialogInst; // internal instance
-
-               if (!inst) {
-                       this.uuid += 1;
-                       id = "dp" + this.uuid;
-                       this._dialogInput = $("<input type='text' id='" + id +
-                               "' style='position: absolute; top: -100px; width: 0px;'/>");
-                       this._dialogInput.keydown(this._doKeyDown);
-                       $("body").append(this._dialogInput);
-                       inst = this._dialogInst = this._newInst(this._dialogInput, false);
-                       inst.settings = {};
-                       $.data(this._dialogInput[0], "datepicker", inst);
-               }
-               datepicker_extendRemove(inst.settings, settings || {});
-               date = (date && date.constructor === Date ? this._formatDate(inst, date) : date);
-               this._dialogInput.val(date);
-
-               this._pos = (pos ? (pos.length ? pos : [pos.pageX, pos.pageY]) : null);
-               if (!this._pos) {
-                       browserWidth = document.documentElement.clientWidth;
-                       browserHeight = document.documentElement.clientHeight;
-                       scrollX = document.documentElement.scrollLeft || document.body.scrollLeft;
-                       scrollY = document.documentElement.scrollTop || document.body.scrollTop;
-                       this._pos = // should use actual width/height below
-                               [(browserWidth / 2) - 100 + scrollX, (browserHeight / 2) - 150 + scrollY];
-               }
-
-               // move input on screen for focus, but hidden behind dialog
-               this._dialogInput.css("left", (this._pos[0] + 20) + "px").css("top", this._pos[1] + "px");
-               inst.settings.onSelect = onSelect;
-               this._inDialog = true;
-               this.dpDiv.addClass(this._dialogClass);
-               this._showDatepicker(this._dialogInput[0]);
-               if ($.blockUI) {
-                       $.blockUI(this.dpDiv);
-               }
-               $.data(this._dialogInput[0], "datepicker", inst);
-               return this;
-       },
-
-       /* Detach a datepicker from its control.
-        * @param  target       element - the target input field or division or span
-        */
-       _destroyDatepicker: function(target) {
-               var nodeName,
-                       $target = $(target),
-                       inst = $.data(target, "datepicker");
-
-               if (!$target.hasClass(this.markerClassName)) {
-                       return;
-               }
-
-               nodeName = target.nodeName.toLowerCase();
-               $.removeData(target, "datepicker");
-               if (nodeName === "input") {
-                       inst.append.remove();
-                       inst.trigger.remove();
-                       $target.removeClass(this.markerClassName).
-                               unbind("focus", this._showDatepicker).
-                               unbind("keydown", this._doKeyDown).
-                               unbind("keypress", this._doKeyPress).
-                               unbind("keyup", this._doKeyUp);
-               } else if (nodeName === "div" || nodeName === "span") {
-                       $target.removeClass(this.markerClassName).empty();
-               }
-
-               if ( datepicker_instActive === inst ) {
-                       datepicker_instActive = null;
-               }
-       },
-
-       /* Enable the date picker to a jQuery selection.
-        * @param  target       element - the target input field or division or span
-        */
-       _enableDatepicker: function(target) {
-               var nodeName, inline,
-                       $target = $(target),
-                       inst = $.data(target, "datepicker");
-
-               if (!$target.hasClass(this.markerClassName)) {
-                       return;
-               }
-
-               nodeName = target.nodeName.toLowerCase();
-               if (nodeName === "input") {
-                       target.disabled = false;
-                       inst.trigger.filter("button").
-                               each(function() { this.disabled = false; }).end().
-                               filter("img").css({opacity: "1.0", cursor: ""});
-               } else if (nodeName === "div" || nodeName === "span") {
-                       inline = $target.children("." + this._inlineClass);
-                       inline.children().removeClass("ui-state-disabled");
-                       inline.find("select.ui-datepicker-month, select.ui-datepicker-year").
-                               prop("disabled", false);
-               }
-               this._disabledInputs = $.map(this._disabledInputs,
-                       function(value) { return (value === target ? null : value); }); // delete entry
-       },
-
-       /* Disable the date picker to a jQuery selection.
-        * @param  target       element - the target input field or division or span
-        */
-       _disableDatepicker: function(target) {
-               var nodeName, inline,
-                       $target = $(target),
-                       inst = $.data(target, "datepicker");
-
-               if (!$target.hasClass(this.markerClassName)) {
-                       return;
-               }
-
-               nodeName = target.nodeName.toLowerCase();
-               if (nodeName === "input") {
-                       target.disabled = true;
-                       inst.trigger.filter("button").
-                               each(function() { this.disabled = true; }).end().
-                               filter("img").css({opacity: "0.5", cursor: "default"});
-               } else if (nodeName === "div" || nodeName === "span") {
-                       inline = $target.children("." + this._inlineClass);
-                       inline.children().addClass("ui-state-disabled");
-                       inline.find("select.ui-datepicker-month, select.ui-datepicker-year").
-                               prop("disabled", true);
-               }
-               this._disabledInputs = $.map(this._disabledInputs,
-                       function(value) { return (value === target ? null : value); }); // delete entry
-               this._disabledInputs[this._disabledInputs.length] = target;
-       },
-
-       /* Is the first field in a jQuery collection disabled as a datepicker?
-        * @param  target       element - the target input field or division or span
-        * @return boolean - true if disabled, false if enabled
-        */
-       _isDisabledDatepicker: function(target) {
-               if (!target) {
-                       return false;
-               }
-               for (var i = 0; i < this._disabledInputs.length; i++) {
-                       if (this._disabledInputs[i] === target) {
-                               return true;
-                       }
-               }
-               return false;
-       },
-
-       /* Retrieve the instance data for the target control.
-        * @param  target  element - the target input field or division or span
-        * @return  object - the associated instance data
-        * @throws  error if a jQuery problem getting data
-        */
-       _getInst: function(target) {
-               try {
-                       return $.data(target, "datepicker");
-               }
-               catch (err) {
-                       throw "Missing instance data for this datepicker";
-               }
-       },
-
-       /* Update or retrieve the settings for a date picker attached to an input field or division.
-        * @param  target  element - the target input field or division or span
-        * @param  name object - the new settings to update or
-        *                              string - the name of the setting to change or retrieve,
-        *                              when retrieving also "all" for all instance settings or
-        *                              "defaults" for all global defaults
-        * @param  value   any - the new value for the setting
-        *                              (omit if above is an object or to retrieve a value)
-        */
-       _optionDatepicker: function(target, name, value) {
-               var settings, date, minDate, maxDate,
-                       inst = this._getInst(target);
-
-               if (arguments.length === 2 && typeof name === "string") {
-                       return (name === "defaults" ? $.extend({}, $.datepicker._defaults) :
-                               (inst ? (name === "all" ? $.extend({}, inst.settings) :
-                               this._get(inst, name)) : null));
-               }
-
-               settings = name || {};
-               if (typeof name === "string") {
-                       settings = {};
-                       settings[name] = value;
-               }
-
-               if (inst) {
-                       if (this._curInst === inst) {
-                               this._hideDatepicker();
-                       }
-
-                       date = this._getDateDatepicker(target, true);
-                       minDate = this._getMinMaxDate(inst, "min");
-                       maxDate = this._getMinMaxDate(inst, "max");
-                       datepicker_extendRemove(inst.settings, settings);
-                       // reformat the old minDate/maxDate values if dateFormat changes and a new minDate/maxDate isn't provided
-                       if (minDate !== null && settings.dateFormat !== undefined && settings.minDate === undefined) {
-                               inst.settings.minDate = this._formatDate(inst, minDate);
-                       }
-                       if (maxDate !== null && settings.dateFormat !== undefined && settings.maxDate === undefined) {
-                               inst.settings.maxDate = this._formatDate(inst, maxDate);
-                       }
-                       if ( "disabled" in settings ) {
-                               if ( settings.disabled ) {
-                                       this._disableDatepicker(target);
-                               } else {
-                                       this._enableDatepicker(target);
-                               }
-                       }
-                       this._attachments($(target), inst);
-                       this._autoSize(inst);
-                       this._setDate(inst, date);
-                       this._updateAlternate(inst);
-                       this._updateDatepicker(inst);
-               }
-       },
-
-       // change method deprecated
-       _changeDatepicker: function(target, name, value) {
-               this._optionDatepicker(target, name, value);
-       },
-
-       /* Redraw the date picker attached to an input field or division.
-        * @param  target  element - the target input field or division or span
-        */
-       _refreshDatepicker: function(target) {
-               var inst = this._getInst(target);
-               if (inst) {
-                       this._updateDatepicker(inst);
-               }
-       },
-
-       /* Set the dates for a jQuery selection.
-        * @param  target element - the target input field or division or span
-        * @param  date Date - the new date
-        */
-       _setDateDatepicker: function(target, date) {
-               var inst = this._getInst(target);
-               if (inst) {
-                       this._setDate(inst, date);
-                       this._updateDatepicker(inst);
-                       this._updateAlternate(inst);
-               }
-       },
-
-       /* Get the date(s) for the first entry in a jQuery selection.
-        * @param  target element - the target input field or division or span
-        * @param  noDefault boolean - true if no default date is to be used
-        * @return Date - the current date
-        */
-       _getDateDatepicker: function(target, noDefault) {
-               var inst = this._getInst(target);
-               if (inst && !inst.inline) {
-                       this._setDateFromField(inst, noDefault);
-               }
-               return (inst ? this._getDate(inst) : null);
-       },
-
-       /* Handle keystrokes. */
-       _doKeyDown: function(event) {
-               var onSelect, dateStr, sel,
-                       inst = $.datepicker._getInst(event.target),
-                       handled = true,
-                       isRTL = inst.dpDiv.is(".ui-datepicker-rtl");
-
-               inst._keyEvent = true;
-               if ($.datepicker._datepickerShowing) {
-                       switch (event.keyCode) {
-                               case 9: $.datepicker._hideDatepicker();
-                                               handled = false;
-                                               break; // hide on tab out
-                               case 13: sel = $("td." + $.datepicker._dayOverClass + ":not(." +
-                                                                       $.datepicker._currentClass + ")", inst.dpDiv);
-                                               if (sel[0]) {
-                                                       $.datepicker._selectDay(event.target, inst.selectedMonth, inst.selectedYear, sel[0]);
-                                               }
-
-                                               onSelect = $.datepicker._get(inst, "onSelect");
-                                               if (onSelect) {
-                                                       dateStr = $.datepicker._formatDate(inst);
-
-                                                       // trigger custom callback
-                                                       onSelect.apply((inst.input ? inst.input[0] : null), [dateStr, inst]);
-                                               } else {
-                                                       $.datepicker._hideDatepicker();
-                                               }
-
-                                               return false; // don't submit the form
-                               case 27: $.datepicker._hideDatepicker();
-                                               break; // hide on escape
-                               case 33: $.datepicker._adjustDate(event.target, (event.ctrlKey ?
-                                                       -$.datepicker._get(inst, "stepBigMonths") :
-                                                       -$.datepicker._get(inst, "stepMonths")), "M");
-                                               break; // previous month/year on page up/+ ctrl
-                               case 34: $.datepicker._adjustDate(event.target, (event.ctrlKey ?
-                                                       +$.datepicker._get(inst, "stepBigMonths") :
-                                                       +$.datepicker._get(inst, "stepMonths")), "M");
-                                               break; // next month/year on page down/+ ctrl
-                               case 35: if (event.ctrlKey || event.metaKey) {
-                                                       $.datepicker._clearDate(event.target);
-                                               }
-                                               handled = event.ctrlKey || event.metaKey;
-                                               break; // clear on ctrl or command +end
-                               case 36: if (event.ctrlKey || event.metaKey) {
-                                                       $.datepicker._gotoToday(event.target);
-                                               }
-                                               handled = event.ctrlKey || event.metaKey;
-                                               break; // current on ctrl or command +home
-                               case 37: if (event.ctrlKey || event.metaKey) {
-                                                       $.datepicker._adjustDate(event.target, (isRTL ? +1 : -1), "D");
-                                               }
-                                               handled = event.ctrlKey || event.metaKey;
-                                               // -1 day on ctrl or command +left
-                                               if (event.originalEvent.altKey) {
-                                                       $.datepicker._adjustDate(event.target, (event.ctrlKey ?
-                                                               -$.datepicker._get(inst, "stepBigMonths") :
-                                                               -$.datepicker._get(inst, "stepMonths")), "M");
-                                               }
-                                               // next month/year on alt +left on Mac
-                                               break;
-                               case 38: if (event.ctrlKey || event.metaKey) {
-                                                       $.datepicker._adjustDate(event.target, -7, "D");
-                                               }
-                                               handled = event.ctrlKey || event.metaKey;
-                                               break; // -1 week on ctrl or command +up
-                               case 39: if (event.ctrlKey || event.metaKey) {
-                                                       $.datepicker._adjustDate(event.target, (isRTL ? -1 : +1), "D");
-                                               }
-                                               handled = event.ctrlKey || event.metaKey;
-                                               // +1 day on ctrl or command +right
-                                               if (event.originalEvent.altKey) {
-                                                       $.datepicker._adjustDate(event.target, (event.ctrlKey ?
-                                                               +$.datepicker._get(inst, "stepBigMonths") :
-                                                               +$.datepicker._get(inst, "stepMonths")), "M");
-                                               }
-                                               // next month/year on alt +right
-                                               break;
-                               case 40: if (event.ctrlKey || event.metaKey) {
-                                                       $.datepicker._adjustDate(event.target, +7, "D");
-                                               }
-                                               handled = event.ctrlKey || event.metaKey;
-                                               break; // +1 week on ctrl or command +down
-                               default: handled = false;
-                       }
-               } else if (event.keyCode === 36 && event.ctrlKey) { // display the date picker on ctrl+home
-                       $.datepicker._showDatepicker(this);
-               } else {
-                       handled = false;
-               }
-
-               if (handled) {
-                       event.preventDefault();
-                       event.stopPropagation();
-               }
-       },
-
-       /* Filter entered characters - based on date format. */
-       _doKeyPress: function(event) {
-               var chars, chr,
-                       inst = $.datepicker._getInst(event.target);
-
-               if ($.datepicker._get(inst, "constrainInput")) {
-                       chars = $.datepicker._possibleChars($.datepicker._get(inst, "dateFormat"));
-                       chr = String.fromCharCode(event.charCode == null ? event.keyCode : event.charCode);
-                       return event.ctrlKey || event.metaKey || (chr < " " || !chars || chars.indexOf(chr) > -1);
-               }
-       },
-
-       /* Synchronise manual entry and field/alternate field. */
-       _doKeyUp: function(event) {
-               var date,
-                       inst = $.datepicker._getInst(event.target);
-
-               if (inst.input.val() !== inst.lastVal) {
-                       try {
-                               date = $.datepicker.parseDate($.datepicker._get(inst, "dateFormat"),
-                                       (inst.input ? inst.input.val() : null),
-                                       $.datepicker._getFormatConfig(inst));
-
-                               if (date) { // only if valid
-                                       $.datepicker._setDateFromField(inst);
-                                       $.datepicker._updateAlternate(inst);
-                                       $.datepicker._updateDatepicker(inst);
-                               }
-                       }
-                       catch (err) {
-                       }
-               }
-               return true;
-       },
-
-       /* Pop-up the date picker for a given input field.
-        * If false returned from beforeShow event handler do not show.
-        * @param  input  element - the input field attached to the date picker or
-        *                                      event - if triggered by focus
-        */
-       _showDatepicker: function(input) {
-               input = input.target || input;
-               if (input.nodeName.toLowerCase() !== "input") { // find from button/image trigger
-                       input = $("input", input.parentNode)[0];
-               }
-
-               if ($.datepicker._isDisabledDatepicker(input) || $.datepicker._lastInput === input) { // already here
-                       return;
-               }
-
-               var inst, beforeShow, beforeShowSettings, isFixed,
-                       offset, showAnim, duration;
-
-               inst = $.datepicker._getInst(input);
-               if ($.datepicker._curInst && $.datepicker._curInst !== inst) {
-                       $.datepicker._curInst.dpDiv.stop(true, true);
-                       if ( inst && $.datepicker._datepickerShowing ) {
-                               $.datepicker._hideDatepicker( $.datepicker._curInst.input[0] );
-                       }
-               }
-
-               beforeShow = $.datepicker._get(inst, "beforeShow");
-               beforeShowSettings = beforeShow ? beforeShow.apply(input, [input, inst]) : {};
-               if(beforeShowSettings === false){
-                       return;
-               }
-               datepicker_extendRemove(inst.settings, beforeShowSettings);
-
-               inst.lastVal = null;
-               $.datepicker._lastInput = input;
-               $.datepicker._setDateFromField(inst);
-
-               if ($.datepicker._inDialog) { // hide cursor
-                       input.value = "";
-               }
-               if (!$.datepicker._pos) { // position below input
-                       $.datepicker._pos = $.datepicker._findPos(input);
-                       $.datepicker._pos[1] += input.offsetHeight; // add the height
-               }
-
-               isFixed = false;
-               $(input).parents().each(function() {
-                       isFixed |= $(this).css("position") === "fixed";
-                       return !isFixed;
-               });
-
-               offset = {left: $.datepicker._pos[0], top: $.datepicker._pos[1]};
-               $.datepicker._pos = null;
-               //to avoid flashes on Firefox
-               inst.dpDiv.empty();
-               // determine sizing offscreen
-               inst.dpDiv.css({position: "absolute", display: "block", top: "-1000px"});
-               $.datepicker._updateDatepicker(inst);
-               // fix width for dynamic number of date pickers
-               // and adjust position before showing
-               offset = $.datepicker._checkOffset(inst, offset, isFixed);
-               inst.dpDiv.css({position: ($.datepicker._inDialog && $.blockUI ?
-                       "static" : (isFixed ? "fixed" : "absolute")), display: "none",
-                       left: offset.left + "px", top: offset.top + "px"});
-
-               if (!inst.inline) {
-                       showAnim = $.datepicker._get(inst, "showAnim");
-                       duration = $.datepicker._get(inst, "duration");
-                       inst.dpDiv.css( "z-index", datepicker_getZindex( $( input ) ) + 1 );
-                       $.datepicker._datepickerShowing = true;
-
-                       if ( $.effects && $.effects.effect[ showAnim ] ) {
-                               inst.dpDiv.show(showAnim, $.datepicker._get(inst, "showOptions"), duration);
-                       } else {
-                               inst.dpDiv[showAnim || "show"](showAnim ? duration : null);
-                       }
-
-                       if ( $.datepicker._shouldFocusInput( inst ) ) {
-                               inst.input.focus();
-                       }
-
-                       $.datepicker._curInst = inst;
-               }
-       },
-
-       /* Generate the date picker content. */
-       _updateDatepicker: function(inst) {
-               this.maxRows = 4; //Reset the max number of rows being displayed (see #7043)
-               datepicker_instActive = inst; // for delegate hover events
-               inst.dpDiv.empty().append(this._generateHTML(inst));
-               this._attachHandlers(inst);
-
-               var origyearshtml,
-                       numMonths = this._getNumberOfMonths(inst),
-                       cols = numMonths[1],
-                       width = 17,
-                       activeCell = inst.dpDiv.find( "." + this._dayOverClass + " a" );
-
-               if ( activeCell.length > 0 ) {
-                       datepicker_handleMouseover.apply( activeCell.get( 0 ) );
-               }
-
-               inst.dpDiv.removeClass("ui-datepicker-multi-2 ui-datepicker-multi-3 ui-datepicker-multi-4").width("");
-               if (cols > 1) {
-                       inst.dpDiv.addClass("ui-datepicker-multi-" + cols).css("width", (width * cols) + "em");
-               }
-               inst.dpDiv[(numMonths[0] !== 1 || numMonths[1] !== 1 ? "add" : "remove") +
-                       "Class"]("ui-datepicker-multi");
-               inst.dpDiv[(this._get(inst, "isRTL") ? "add" : "remove") +
-                       "Class"]("ui-datepicker-rtl");
-
-               if (inst === $.datepicker._curInst && $.datepicker._datepickerShowing && $.datepicker._shouldFocusInput( inst ) ) {
-                       inst.input.focus();
-               }
-
-               // deffered render of the years select (to avoid flashes on Firefox)
-               if( inst.yearshtml ){
-                       origyearshtml = inst.yearshtml;
-                       setTimeout(function(){
-                               //assure that inst.yearshtml didn't change.
-                               if( origyearshtml === inst.yearshtml && inst.yearshtml ){
-                                       inst.dpDiv.find("select.ui-datepicker-year:first").replaceWith(inst.yearshtml);
-                               }
-                               origyearshtml = inst.yearshtml = null;
-                       }, 0);
-               }
-       },
-
-       // #6694 - don't focus the input if it's already focused
-       // this breaks the change event in IE
-       // Support: IE and jQuery <1.9
-       _shouldFocusInput: function( inst ) {
-               return inst.input && inst.input.is( ":visible" ) && !inst.input.is( ":disabled" ) && !inst.input.is( ":focus" );
-       },
-
-       /* Check positioning to remain on screen. */
-       _checkOffset: function(inst, offset, isFixed) {
-               var dpWidth = inst.dpDiv.outerWidth(),
-                       dpHeight = inst.dpDiv.outerHeight(),
-                       inputWidth = inst.input ? inst.input.outerWidth() : 0,
-                       inputHeight = inst.input ? inst.input.outerHeight() : 0,
-                       viewWidth = document.documentElement.clientWidth + (isFixed ? 0 : $(document).scrollLeft()),
-                       viewHeight = document.documentElement.clientHeight + (isFixed ? 0 : $(document).scrollTop());
-
-               offset.left -= (this._get(inst, "isRTL") ? (dpWidth - inputWidth) : 0);
-               offset.left -= (isFixed && offset.left === inst.input.offset().left) ? $(document).scrollLeft() : 0;
-               offset.top -= (isFixed && offset.top === (inst.input.offset().top + inputHeight)) ? $(document).scrollTop() : 0;
-
-               // now check if datepicker is showing outside window viewport - move to a better place if so.
-               offset.left -= Math.min(offset.left, (offset.left + dpWidth > viewWidth && viewWidth > dpWidth) ?
-                       Math.abs(offset.left + dpWidth - viewWidth) : 0);
-               offset.top -= Math.min(offset.top, (offset.top + dpHeight > viewHeight && viewHeight > dpHeight) ?
-                       Math.abs(dpHeight + inputHeight) : 0);
-
-               return offset;
-       },
-
-       /* Find an object's position on the screen. */
-       _findPos: function(obj) {
-               var position,
-                       inst = this._getInst(obj),
-                       isRTL = this._get(inst, "isRTL");
-
-               while (obj && (obj.type === "hidden" || obj.nodeType !== 1 || $.expr.filters.hidden(obj))) {
-                       obj = obj[isRTL ? "previousSibling" : "nextSibling"];
-               }
-
-               position = $(obj).offset();
-               return [position.left, position.top];
-       },
-
-       /* Hide the date picker from view.
-        * @param  input  element - the input field attached to the date picker
-        */
-       _hideDatepicker: function(input) {
-               var showAnim, duration, postProcess, onClose,
-                       inst = this._curInst;
-
-               if (!inst || (input && inst !== $.data(input, "datepicker"))) {
-                       return;
-               }
-
-               if (this._datepickerShowing) {
-                       showAnim = this._get(inst, "showAnim");
-                       duration = this._get(inst, "duration");
-                       postProcess = function() {
-                               $.datepicker._tidyDialog(inst);
-                       };
-
-                       // DEPRECATED: after BC for 1.8.x $.effects[ showAnim ] is not needed
-                       if ( $.effects && ( $.effects.effect[ showAnim ] || $.effects[ showAnim ] ) ) {
-                               inst.dpDiv.hide(showAnim, $.datepicker._get(inst, "showOptions"), duration, postProcess);
-                       } else {
-                               inst.dpDiv[(showAnim === "slideDown" ? "slideUp" :
-                                       (showAnim === "fadeIn" ? "fadeOut" : "hide"))]((showAnim ? duration : null), postProcess);
-                       }
-
-                       if (!showAnim) {
-                               postProcess();
-                       }
-                       this._datepickerShowing = false;
-
-                       onClose = this._get(inst, "onClose");
-                       if (onClose) {
-                               onClose.apply((inst.input ? inst.input[0] : null), [(inst.input ? inst.input.val() : ""), inst]);
-                       }
-
-                       this._lastInput = null;
-                       if (this._inDialog) {
-                               this._dialogInput.css({ position: "absolute", left: "0", top: "-100px" });
-                               if ($.blockUI) {
-                                       $.unblockUI();
-                                       $("body").append(this.dpDiv);
-                               }
-                       }
-                       this._inDialog = false;
-               }
-       },
-
-       /* Tidy up after a dialog display. */
-       _tidyDialog: function(inst) {
-               inst.dpDiv.removeClass(this._dialogClass).unbind(".ui-datepicker-calendar");
-       },
-
-       /* Close date picker if clicked elsewhere. */
-       _checkExternalClick: function(event) {
-               if (!$.datepicker._curInst) {
-                       return;
-               }
-
-               var $target = $(event.target),
-                       inst = $.datepicker._getInst($target[0]);
-
-               if ( ( ( $target[0].id !== $.datepicker._mainDivId &&
-                               $target.parents("#" + $.datepicker._mainDivId).length === 0 &&
-                               !$target.hasClass($.datepicker.markerClassName) &&
-                               !$target.closest("." + $.datepicker._triggerClass).length &&
-                               $.datepicker._datepickerShowing && !($.datepicker._inDialog && $.blockUI) ) ) ||
-                       ( $target.hasClass($.datepicker.markerClassName) && $.datepicker._curInst !== inst ) ) {
-                               $.datepicker._hideDatepicker();
-               }
-       },
-
-       /* Adjust one of the date sub-fields. */
-       _adjustDate: function(id, offset, period) {
-               var target = $(id),
-                       inst = this._getInst(target[0]);
-
-               if (this._isDisabledDatepicker(target[0])) {
-                       return;
-               }
-               this._adjustInstDate(inst, offset +
-                       (period === "M" ? this._get(inst, "showCurrentAtPos") : 0), // undo positioning
-                       period);
-               this._updateDatepicker(inst);
-       },
-
-       /* Action for current link. */
-       _gotoToday: function(id) {
-               var date,
-                       target = $(id),
-                       inst = this._getInst(target[0]);
-
-               if (this._get(inst, "gotoCurrent") && inst.currentDay) {
-                       inst.selectedDay = inst.currentDay;
-                       inst.drawMonth = inst.selectedMonth = inst.currentMonth;
-                       inst.drawYear = inst.selectedYear = inst.currentYear;
-               } else {
-                       date = new Date();
-                       inst.selectedDay = date.getDate();
-                       inst.drawMonth = inst.selectedMonth = date.getMonth();
-                       inst.drawYear = inst.selectedYear = date.getFullYear();
-               }
-               this._notifyChange(inst);
-               this._adjustDate(target);
-       },
-
-       /* Action for selecting a new month/year. */
-       _selectMonthYear: function(id, select, period) {
-               var target = $(id),
-                       inst = this._getInst(target[0]);
-
-               inst["selected" + (period === "M" ? "Month" : "Year")] =
-               inst["draw" + (period === "M" ? "Month" : "Year")] =
-                       parseInt(select.options[select.selectedIndex].value,10);
-
-               this._notifyChange(inst);
-               this._adjustDate(target);
-       },
-
-       /* Action for selecting a day. */
-       _selectDay: function(id, month, year, td) {
-               var inst,
-                       target = $(id);
-
-               if ($(td).hasClass(this._unselectableClass) || this._isDisabledDatepicker(target[0])) {
-                       return;
-               }
-
-               inst = this._getInst(target[0]);
-               inst.selectedDay = inst.currentDay = $("a", td).html();
-               inst.selectedMonth = inst.currentMonth = month;
-               inst.selectedYear = inst.currentYear = year;
-               this._selectDate(id, this._formatDate(inst,
-                       inst.currentDay, inst.currentMonth, inst.currentYear));
-       },
-
-       /* Erase the input field and hide the date picker. */
-       _clearDate: function(id) {
-               var target = $(id);
-               this._selectDate(target, "");
-       },
-
-       /* Update the input field with the selected date. */
-       _selectDate: function(id, dateStr) {
-               var onSelect,
-                       target = $(id),
-                       inst = this._getInst(target[0]);
-
-               dateStr = (dateStr != null ? dateStr : this._formatDate(inst));
-               if (inst.input) {
-                       inst.input.val(dateStr);
-               }
-               this._updateAlternate(inst);
-
-               onSelect = this._get(inst, "onSelect");
-               if (onSelect) {
-                       onSelect.apply((inst.input ? inst.input[0] : null), [dateStr, inst]);  // trigger custom callback
-               } else if (inst.input) {
-                       inst.input.trigger("change"); // fire the change event
-               }
-
-               if (inst.inline){
-                       this._updateDatepicker(inst);
-               } else {
-                       this._hideDatepicker();
-                       this._lastInput = inst.input[0];
-                       if (typeof(inst.input[0]) !== "object") {
-                               inst.input.focus(); // restore focus
-                       }
-                       this._lastInput = null;
-               }
-       },
-
-       /* Update any alternate field to synchronise with the main field. */
-       _updateAlternate: function(inst) {
-               var altFormat, date, dateStr,
-                       altField = this._get(inst, "altField");
-
-               if (altField) { // update alternate field too
-                       altFormat = this._get(inst, "altFormat") || this._get(inst, "dateFormat");
-                       date = this._getDate(inst);
-                       dateStr = this.formatDate(altFormat, date, this._getFormatConfig(inst));
-                       $(altField).each(function() { $(this).val(dateStr); });
-               }
-       },
-
-       /* Set as beforeShowDay function to prevent selection of weekends.
-        * @param  date  Date - the date to customise
-        * @return [boolean, string] - is this date selectable?, what is its CSS class?
-        */
-       noWeekends: function(date) {
-               var day = date.getDay();
-               return [(day > 0 && day < 6), ""];
-       },
-
-       /* Set as calculateWeek to determine the week of the year based on the ISO 8601 definition.
-        * @param  date  Date - the date to get the week for
-        * @return  number - the number of the week within the year that contains this date
-        */
-       iso8601Week: function(date) {
-               var time,
-                       checkDate = new Date(date.getTime());
-
-               // Find Thursday of this week starting on Monday
-               checkDate.setDate(checkDate.getDate() + 4 - (checkDate.getDay() || 7));
-
-               time = checkDate.getTime();
-               checkDate.setMonth(0); // Compare with Jan 1
-               checkDate.setDate(1);
-               return Math.floor(Math.round((time - checkDate) / 86400000) / 7) + 1;
-       },
-
-       /* Parse a string value into a date object.
-        * See formatDate below for the possible formats.
-        *
-        * @param  format string - the expected format of the date
-        * @param  value string - the date in the above format
-        * @param  settings Object - attributes include:
-        *                                      shortYearCutoff  number - the cutoff year for determining the century (optional)
-        *                                      dayNamesShort   string[7] - abbreviated names of the days from Sunday (optional)
-        *                                      dayNames                string[7] - names of the days from Sunday (optional)
-        *                                      monthNamesShort string[12] - abbreviated names of the months (optional)
-        *                                      monthNames              string[12] - names of the months (optional)
-        * @return  Date - the extracted date value or null if value is blank
-        */
-       parseDate: function (format, value, settings) {
-               if (format == null || value == null) {
-                       throw "Invalid arguments";
-               }
-
-               value = (typeof value === "object" ? value.toString() : value + "");
-               if (value === "") {
-                       return null;
-               }
-
-               var iFormat, dim, extra,
-                       iValue = 0,
-                       shortYearCutoffTemp = (settings ? settings.shortYearCutoff : null) || this._defaults.shortYearCutoff,
-                       shortYearCutoff = (typeof shortYearCutoffTemp !== "string" ? shortYearCutoffTemp :
-                               new Date().getFullYear() % 100 + parseInt(shortYearCutoffTemp, 10)),
-                       dayNamesShort = (settings ? settings.dayNamesShort : null) || this._defaults.dayNamesShort,
-                       dayNames = (settings ? settings.dayNames : null) || this._defaults.dayNames,
-                       monthNamesShort = (settings ? settings.monthNamesShort : null) || this._defaults.monthNamesShort,
-                       monthNames = (settings ? settings.monthNames : null) || this._defaults.monthNames,
-                       year = -1,
-                       month = -1,
-                       day = -1,
-                       doy = -1,
-                       literal = false,
-                       date,
-                       // Check whether a format character is doubled
-                       lookAhead = function(match) {
-                               var matches = (iFormat + 1 < format.length && format.charAt(iFormat + 1) === match);
-                               if (matches) {
-                                       iFormat++;
-                               }
-                               return matches;
-                       },
-                       // Extract a number from the string value
-                       getNumber = function(match) {
-                               var isDoubled = lookAhead(match),
-                                       size = (match === "@" ? 14 : (match === "!" ? 20 :
-                                       (match === "y" && isDoubled ? 4 : (match === "o" ? 3 : 2)))),
-                                       minSize = (match === "y" ? size : 1),
-                                       digits = new RegExp("^\\d{" + minSize + "," + size + "}"),
-                                       num = value.substring(iValue).match(digits);
-                               if (!num) {
-                                       throw "Missing number at position " + iValue;
-                               }
-                               iValue += num[0].length;
-                               return parseInt(num[0], 10);
-                       },
-                       // Extract a name from the string value and convert to an index
-                       getName = function(match, shortNames, longNames) {
-                               var index = -1,
-                                       names = $.map(lookAhead(match) ? longNames : shortNames, function (v, k) {
-                                               return [ [k, v] ];
-                                       }).sort(function (a, b) {
-                                               return -(a[1].length - b[1].length);
-                                       });
-
-                               $.each(names, function (i, pair) {
-                                       var name = pair[1];
-                                       if (value.substr(iValue, name.length).toLowerCase() === name.toLowerCase()) {
-                                               index = pair[0];
-                                               iValue += name.length;
-                                               return false;
-                                       }
-                               });
-                               if (index !== -1) {
-                                       return index + 1;
-                               } else {
-                                       throw "Unknown name at position " + iValue;
-                               }
-                       },
-                       // Confirm that a literal character matches the string value
-                       checkLiteral = function() {
-                               if (value.charAt(iValue) !== format.charAt(iFormat)) {
-                                       throw "Unexpected literal at position " + iValue;
-                               }
-                               iValue++;
-                       };
-
-               for (iFormat = 0; iFormat < format.length; iFormat++) {
-                       if (literal) {
-                               if (format.charAt(iFormat) === "'" && !lookAhead("'")) {
-                                       literal = false;
-                               } else {
-                                       checkLiteral();
-                               }
-                       } else {
-                               switch (format.charAt(iFormat)) {
-                                       case "d":
-                                               day = getNumber("d");
-                                               break;
-                                       case "D":
-                                               getName("D", dayNamesShort, dayNames);
-                                               break;
-                                       case "o":
-                                               doy = getNumber("o");
-                                               break;
-                                       case "m":
-                                               month = getNumber("m");
-                                               break;
-                                       case "M":
-                                               month = getName("M", monthNamesShort, monthNames);
-                                               break;
-                                       case "y":
-                                               year = getNumber("y");
-                                               break;
-                                       case "@":
-                                               date = new Date(getNumber("@"));
-                                               year = date.getFullYear();
-                                               month = date.getMonth() + 1;
-                                               day = date.getDate();
-                                               break;
-                                       case "!":
-                                               date = new Date((getNumber("!") - this._ticksTo1970) / 10000);
-                                               year = date.getFullYear();
-                                               month = date.getMonth() + 1;
-                                               day = date.getDate();
-                                               break;
-                                       case "'":
-                                               if (lookAhead("'")){
-                                                       checkLiteral();
-                                               } else {
-                                                       literal = true;
-                                               }
-                                               break;
-                                       default:
-                                               checkLiteral();
-                               }
-                       }
-               }
-
-               if (iValue < value.length){
-                       extra = value.substr(iValue);
-                       if (!/^\s+/.test(extra)) {
-                               throw "Extra/unparsed characters found in date: " + extra;
-                       }
-               }
-
-               if (year === -1) {
-                       year = new Date().getFullYear();
-               } else if (year < 100) {
-                       year += new Date().getFullYear() - new Date().getFullYear() % 100 +
-                               (year <= shortYearCutoff ? 0 : -100);
-               }
-
-               if (doy > -1) {
-                       month = 1;
-                       day = doy;
-                       do {
-                               dim = this._getDaysInMonth(year, month - 1);
-                               if (day <= dim) {
-                                       break;
-                               }
-                               month++;
-                               day -= dim;
-                       } while (true);
-               }
-
-               date = this._daylightSavingAdjust(new Date(year, month - 1, day));
-               if (date.getFullYear() !== year || date.getMonth() + 1 !== month || date.getDate() !== day) {
-                       throw "Invalid date"; // E.g. 31/02/00
-               }
-               return date;
-       },
-
-       /* Standard date formats. */
-       ATOM: "yy-mm-dd", // RFC 3339 (ISO 8601)
-       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", // RFC 822
-       TICKS: "!",
-       TIMESTAMP: "@",
-       W3C: "yy-mm-dd", // ISO 8601
-
-       _ticksTo1970: (((1970 - 1) * 365 + Math.floor(1970 / 4) - Math.floor(1970 / 100) +
-               Math.floor(1970 / 400)) * 24 * 60 * 60 * 10000000),
-
-       /* Format a date object into a string value.
-        * The format can be combinations of the following:
-        * d  - day of month (no leading zero)
-        * dd - day of month (two digit)
-        * o  - day of year (no leading zeros)
-        * oo - day of year (three digit)
-        * D  - day name short
-        * DD - day name long
-        * m  - month of year (no leading zero)
-        * mm - month of year (two digit)
-        * M  - month name short
-        * MM - month name long
-        * y  - year (two digit)
-        * yy - year (four digit)
-        * @ - Unix timestamp (ms since 01/01/1970)
-        * ! - Windows ticks (100ns since 01/01/0001)
-        * "..." - literal text
-        * '' - single quote
-        *
-        * @param  format string - the desired format of the date
-        * @param  date Date - the date value to format
-        * @param  settings Object - attributes include:
-        *                                      dayNamesShort   string[7] - abbreviated names of the days from Sunday (optional)
-        *                                      dayNames                string[7] - names of the days from Sunday (optional)
-        *                                      monthNamesShort string[12] - abbreviated names of the months (optional)
-        *                                      monthNames              string[12] - names of the months (optional)
-        * @return  string - the date in the above format
-        */
-       formatDate: function (format, date, settings) {
-               if (!date) {
-                       return "";
-               }
-
-               var iFormat,
-                       dayNamesShort = (settings ? settings.dayNamesShort : null) || this._defaults.dayNamesShort,
-                       dayNames = (settings ? settings.dayNames : null) || this._defaults.dayNames,
-                       monthNamesShort = (settings ? settings.monthNamesShort : null) || this._defaults.monthNamesShort,
-                       monthNames = (settings ? settings.monthNames : null) || this._defaults.monthNames,
-                       // Check whether a format character is doubled
-                       lookAhead = function(match) {
-                               var matches = (iFormat + 1 < format.length && format.charAt(iFormat + 1) === match);
-                               if (matches) {
-                                       iFormat++;
-                               }
-                               return matches;
-                       },
-                       // Format a number, with leading zero if necessary
-                       formatNumber = function(match, value, len) {
-                               var num = "" + value;
-                               if (lookAhead(match)) {
-                                       while (num.length < len) {
-                                               num = "0" + num;
-                                       }
-                               }
-                               return num;
-                       },
-                       // Format a name, short or long as requested
-                       formatName = function(match, value, shortNames, longNames) {
-                               return (lookAhead(match) ? longNames[value] : shortNames[value]);
-                       },
-                       output = "",
-                       literal = false;
-
-               if (date) {
-                       for (iFormat = 0; iFormat < format.length; iFormat++) {
-                               if (literal) {
-                                       if (format.charAt(iFormat) === "'" && !lookAhead("'")) {
-                                               literal = false;
-                                       } else {
-                                               output += format.charAt(iFormat);
-                                       }
-                               } else {
-                                       switch (format.charAt(iFormat)) {
-                                               case "d":
-                                                       output += formatNumber("d", date.getDate(), 2);
-                                                       break;
-                                               case "D":
-                                                       output += formatName("D", date.getDay(), dayNamesShort, dayNames);
-                                                       break;
-                                               case "o":
-                                                       output += formatNumber("o",
-                                                               Math.round((new Date(date.getFullYear(), date.getMonth(), date.getDate()).getTime() - new Date(date.getFullYear(), 0, 0).getTime()) / 86400000), 3);
-                                                       break;
-                                               case "m":
-                                                       output += formatNumber("m", date.getMonth() + 1, 2);
-                                                       break;
-                                               case "M":
-                                                       output += formatName("M", date.getMonth(), monthNamesShort, monthNames);
-                                                       break;
-                                               case "y":
-                                                       output += (lookAhead("y") ? date.getFullYear() :
-                                                               (date.getYear() % 100 < 10 ? "0" : "") + date.getYear() % 100);
-                                                       break;
-                                               case "@":
-                                                       output += date.getTime();
-                                                       break;
-                                               case "!":
-                                                       output += date.getTime() * 10000 + this._ticksTo1970;
-                                                       break;
-                                               case "'":
-                                                       if (lookAhead("'")) {
-                                                               output += "'";
-                                                       } else {
-                                                               literal = true;
-                                                       }
-                                                       break;
-                                               default:
-                                                       output += format.charAt(iFormat);
-                                       }
-                               }
-                       }
-               }
-               return output;
-       },
-
-       /* Extract all possible characters from the date format. */
-       _possibleChars: function (format) {
-               var iFormat,
-                       chars = "",
-                       literal = false,
-                       // Check whether a format character is doubled
-                       lookAhead = function(match) {
-                               var matches = (iFormat + 1 < format.length && format.charAt(iFormat + 1) === match);
-                               if (matches) {
-                                       iFormat++;
-                               }
-                               return matches;
-                       };
-
-               for (iFormat = 0; iFormat < format.length; iFormat++) {
-                       if (literal) {
-                               if (format.charAt(iFormat) === "'" && !lookAhead("'")) {
-                                       literal = false;
-                               } else {
-                                       chars += format.charAt(iFormat);
-                               }
-                       } else {
-                               switch (format.charAt(iFormat)) {
-                                       case "d": case "m": case "y": case "@":
-                                               chars += "0123456789";
-                                               break;
-                                       case "D": case "M":
-                                               return null; // Accept anything
-                                       case "'":
-                                               if (lookAhead("'")) {
-                                                       chars += "'";
-                                               } else {
-                                                       literal = true;
-                                               }
-                                               break;
-                                       default:
-                                               chars += format.charAt(iFormat);
-                               }
-                       }
-               }
-               return chars;
-       },
-
-       /* Get a setting value, defaulting if necessary. */
-       _get: function(inst, name) {
-               return inst.settings[name] !== undefined ?
-                       inst.settings[name] : this._defaults[name];
-       },
-
-       /* Parse existing date and initialise date picker. */
-       _setDateFromField: function(inst, noDefault) {
-               if (inst.input.val() === inst.lastVal) {
-                       return;
-               }
-
-               var dateFormat = this._get(inst, "dateFormat"),
-                       dates = inst.lastVal = inst.input ? inst.input.val() : null,
-                       defaultDate = this._getDefaultDate(inst),
-                       date = defaultDate,
-                       settings = this._getFormatConfig(inst);
-
-               try {
-                       date = this.parseDate(dateFormat, dates, settings) || defaultDate;
-               } catch (event) {
-                       dates = (noDefault ? "" : dates);
-               }
-               inst.selectedDay = date.getDate();
-               inst.drawMonth = inst.selectedMonth = date.getMonth();
-               inst.drawYear = inst.selectedYear = date.getFullYear();
-               inst.currentDay = (dates ? date.getDate() : 0);
-               inst.currentMonth = (dates ? date.getMonth() : 0);
-               inst.currentYear = (dates ? date.getFullYear() : 0);
-               this._adjustInstDate(inst);
-       },
-
-       /* Retrieve the default date shown on opening. */
-       _getDefaultDate: function(inst) {
-               return this._restrictMinMax(inst,
-                       this._determineDate(inst, this._get(inst, "defaultDate"), new Date()));
-       },
-
-       /* A date may be specified as an exact value or a relative one. */
-       _determineDate: function(inst, date, defaultDate) {
-               var offsetNumeric = function(offset) {
-                               var date = new Date();
-                               date.setDate(date.getDate() + offset);
-                               return date;
-                       },
-                       offsetString = function(offset) {
-                               try {
-                                       return $.datepicker.parseDate($.datepicker._get(inst, "dateFormat"),
-                                               offset, $.datepicker._getFormatConfig(inst));
-                               }
-                               catch (e) {
-                                       // Ignore
-                               }
-
-                               var date = (offset.toLowerCase().match(/^c/) ?
-                                       $.datepicker._getDate(inst) : null) || new Date(),
-                                       year = date.getFullYear(),
-                                       month = date.getMonth(),
-                                       day = date.getDate(),
-                                       pattern = /([+\-]?[0-9]+)\s*(d|D|w|W|m|M|y|Y)?/g,
-                                       matches = pattern.exec(offset);
-
-                               while (matches) {
-                                       switch (matches[2] || "d") {
-                                               case "d" : case "D" :
-                                                       day += parseInt(matches[1],10); break;
-                                               case "w" : case "W" :
-                                                       day += parseInt(matches[1],10) * 7; break;
-                                               case "m" : case "M" :
-                                                       month += parseInt(matches[1],10);
-                                                       day = Math.min(day, $.datepicker._getDaysInMonth(year, month));
-                                                       break;
-                                               case "y": case "Y" :
-                                                       year += parseInt(matches[1],10);
-                                                       day = Math.min(day, $.datepicker._getDaysInMonth(year, month));
-                                                       break;
-                                       }
-                                       matches = pattern.exec(offset);
-                               }
-                               return new Date(year, month, day);
-                       },
-                       newDate = (date == null || date === "" ? defaultDate : (typeof date === "string" ? offsetString(date) :
-                               (typeof date === "number" ? (isNaN(date) ? defaultDate : offsetNumeric(date)) : new Date(date.getTime()))));
-
-               newDate = (newDate && newDate.toString() === "Invalid Date" ? defaultDate : newDate);
-               if (newDate) {
-                       newDate.setHours(0);
-                       newDate.setMinutes(0);
-                       newDate.setSeconds(0);
-                       newDate.setMilliseconds(0);
-               }
-               return this._daylightSavingAdjust(newDate);
-       },
-
-       /* Handle switch to/from daylight saving.
-        * Hours may be non-zero on daylight saving cut-over:
-        * > 12 when midnight changeover, but then cannot generate
-        * midnight datetime, so jump to 1AM, otherwise reset.
-        * @param  date  (Date) the date to check
-        * @return  (Date) the corrected date
-        */
-       _daylightSavingAdjust: function(date) {
-               if (!date) {
-                       return null;
-               }
-               date.setHours(date.getHours() > 12 ? date.getHours() + 2 : 0);
-               return date;
-       },
-
-       /* Set the date(s) directly. */
-       _setDate: function(inst, date, noChange) {
-               var clear = !date,
-                       origMonth = inst.selectedMonth,
-                       origYear = inst.selectedYear,
-                       newDate = this._restrictMinMax(inst, this._determineDate(inst, date, new Date()));
-
-               inst.selectedDay = inst.currentDay = newDate.getDate();
-               inst.drawMonth = inst.selectedMonth = inst.currentMonth = newDate.getMonth();
-               inst.drawYear = inst.selectedYear = inst.currentYear = newDate.getFullYear();
-               if ((origMonth !== inst.selectedMonth || origYear !== inst.selectedYear) && !noChange) {
-                       this._notifyChange(inst);
-               }
-               this._adjustInstDate(inst);
-               if (inst.input) {
-                       inst.input.val(clear ? "" : this._formatDate(inst));
-               }
-       },
-
-       /* Retrieve the date(s) directly. */
-       _getDate: function(inst) {
-               var startDate = (!inst.currentYear || (inst.input && inst.input.val() === "") ? null :
-                       this._daylightSavingAdjust(new Date(
-                       inst.currentYear, inst.currentMonth, inst.currentDay)));
-                       return startDate;
-       },
-
-       /* Attach the onxxx handlers.  These are declared statically so
-        * they work with static code transformers like Caja.
-        */
-       _attachHandlers: function(inst) {
-               var stepMonths = this._get(inst, "stepMonths"),
-                       id = "#" + inst.id.replace( /\\\\/g, "\\" );
-               inst.dpDiv.find("[data-handler]").map(function () {
-                       var handler = {
-                               prev: function () {
-                                       $.datepicker._adjustDate(id, -stepMonths, "M");
-                               },
-                               next: function () {
-                                       $.datepicker._adjustDate(id, +stepMonths, "M");
-                               },
-                               hide: function () {
-                                       $.datepicker._hideDatepicker();
-                               },
-                               today: function () {
-                                       $.datepicker._gotoToday(id);
-                               },
-                               selectDay: function () {
-                                       $.datepicker._selectDay(id, +this.getAttribute("data-month"), +this.getAttribute("data-year"), this);
-                                       return false;
-                               },
-                               selectMonth: function () {
-                                       $.datepicker._selectMonthYear(id, this, "M");
-                                       return false;
-                               },
-                               selectYear: function () {
-                                       $.datepicker._selectMonthYear(id, this, "Y");
-                                       return false;
-                               }
-                       };
-                       $(this).bind(this.getAttribute("data-event"), handler[this.getAttribute("data-handler")]);
-               });
-       },
-
-       /* Generate the HTML for the current state of the date picker. */
-       _generateHTML: function(inst) {
-               var maxDraw, prevText, prev, nextText, next, currentText, gotoDate,
-                       controls, buttonPanel, firstDay, showWeek, dayNames, dayNamesMin,
-                       monthNames, monthNamesShort, beforeShowDay, showOtherMonths,
-                       selectOtherMonths, defaultDate, html, dow, row, group, col, selectedDate,
-                       cornerClass, calender, thead, day, daysInMonth, leadDays, curRows, numRows,
-                       printDate, dRow, tbody, daySettings, otherMonth, unselectable,
-                       tempDate = new Date(),
-                       today = this._daylightSavingAdjust(
-                               new Date(tempDate.getFullYear(), tempDate.getMonth(), tempDate.getDate())), // clear time
-                       isRTL = this._get(inst, "isRTL"),
-                       showButtonPanel = this._get(inst, "showButtonPanel"),
-                       hideIfNoPrevNext = this._get(inst, "hideIfNoPrevNext"),
-                       navigationAsDateFormat = this._get(inst, "navigationAsDateFormat"),
-                       numMonths = this._getNumberOfMonths(inst),
-                       showCurrentAtPos = this._get(inst, "showCurrentAtPos"),
-                       stepMonths = this._get(inst, "stepMonths"),
-                       isMultiMonth = (numMonths[0] !== 1 || numMonths[1] !== 1),
-                       currentDate = this._daylightSavingAdjust((!inst.currentDay ? new Date(9999, 9, 9) :
-                               new Date(inst.currentYear, inst.currentMonth, inst.currentDay))),
-                       minDate = this._getMinMaxDate(inst, "min"),
-                       maxDate = this._getMinMaxDate(inst, "max"),
-                       drawMonth = inst.drawMonth - showCurrentAtPos,
-                       drawYear = inst.drawYear;
-
-               if (drawMonth < 0) {
-                       drawMonth += 12;
-                       drawYear--;
-               }
-               if (maxDate) {
-                       maxDraw = this._daylightSavingAdjust(new Date(maxDate.getFullYear(),
-                               maxDate.getMonth() - (numMonths[0] * numMonths[1]) + 1, maxDate.getDate()));
-                       maxDraw = (minDate && maxDraw < minDate ? minDate : maxDraw);
-                       while (this._daylightSavingAdjust(new Date(drawYear, drawMonth, 1)) > maxDraw) {
-                               drawMonth--;
-                               if (drawMonth < 0) {
-                                       drawMonth = 11;
-                                       drawYear--;
-                               }
-                       }
-               }
-               inst.drawMonth = drawMonth;
-               inst.drawYear = drawYear;
-
-               prevText = this._get(inst, "prevText");
-               prevText = (!navigationAsDateFormat ? prevText : this.formatDate(prevText,
-                       this._daylightSavingAdjust(new Date(drawYear, drawMonth - stepMonths, 1)),
-                       this._getFormatConfig(inst)));
-
-               prev = (this._canAdjustMonth(inst, -1, drawYear, drawMonth) ?
-                       "<a class='ui-datepicker-prev ui-corner-all' data-handler='prev' data-event='click'" +
-                       " title='" + prevText + "'><span class='ui-icon ui-icon-circle-triangle-" + ( isRTL ? "e" : "w") + "'>" + prevText + "</span></a>" :
-                       (hideIfNoPrevNext ? "" : "<a class='ui-datepicker-prev ui-corner-all ui-state-disabled' title='"+ prevText +"'><span class='ui-icon ui-icon-circle-triangle-" + ( isRTL ? "e" : "w") + "'>" + prevText + "</span></a>"));
-
-               nextText = this._get(inst, "nextText");
-               nextText = (!navigationAsDateFormat ? nextText : this.formatDate(nextText,
-                       this._daylightSavingAdjust(new Date(drawYear, drawMonth + stepMonths, 1)),
-                       this._getFormatConfig(inst)));
-
-               next = (this._canAdjustMonth(inst, +1, drawYear, drawMonth) ?
-                       "<a class='ui-datepicker-next ui-corner-all' data-handler='next' data-event='click'" +
-                       " title='" + nextText + "'><span class='ui-icon ui-icon-circle-triangle-" + ( isRTL ? "w" : "e") + "'>" + nextText + "</span></a>" :
-                       (hideIfNoPrevNext ? "" : "<a class='ui-datepicker-next ui-corner-all ui-state-disabled' title='"+ nextText + "'><span class='ui-icon ui-icon-circle-triangle-" + ( isRTL ? "w" : "e") + "'>" + nextText + "</span></a>"));
-
-               currentText = this._get(inst, "currentText");
-               gotoDate = (this._get(inst, "gotoCurrent") && inst.currentDay ? currentDate : today);
-               currentText = (!navigationAsDateFormat ? currentText :
-                       this.formatDate(currentText, gotoDate, this._getFormatConfig(inst)));
-
-               controls = (!inst.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(inst, "closeText") + "</button>" : "");
-
-               buttonPanel = (showButtonPanel) ? "<div class='ui-datepicker-buttonpane ui-widget-content'>" + (isRTL ? controls : "") +
-                       (this._isInRange(inst, gotoDate) ? "<button type='button' class='ui-datepicker-current ui-state-default ui-priority-secondary ui-corner-all' data-handler='today' data-event='click'" +
-                       ">" + currentText + "</button>" : "") + (isRTL ? "" : controls) + "</div>" : "";
-
-               firstDay = parseInt(this._get(inst, "firstDay"),10);
-               firstDay = (isNaN(firstDay) ? 0 : firstDay);
-
-               showWeek = this._get(inst, "showWeek");
-               dayNames = this._get(inst, "dayNames");
-               dayNamesMin = this._get(inst, "dayNamesMin");
-               monthNames = this._get(inst, "monthNames");
-               monthNamesShort = this._get(inst, "monthNamesShort");
-               beforeShowDay = this._get(inst, "beforeShowDay");
-               showOtherMonths = this._get(inst, "showOtherMonths");
-               selectOtherMonths = this._get(inst, "selectOtherMonths");
-               defaultDate = this._getDefaultDate(inst);
-               html = "";
-               dow;
-               for (row = 0; row < numMonths[0]; row++) {
-                       group = "";
-                       this.maxRows = 4;
-                       for (col = 0; col < numMonths[1]; col++) {
-                               selectedDate = this._daylightSavingAdjust(new Date(drawYear, drawMonth, inst.selectedDay));
-                               cornerClass = " ui-corner-all";
-                               calender = "";
-                               if (isMultiMonth) {
-                                       calender += "<div class='ui-datepicker-group";
-                                       if (numMonths[1] > 1) {
-                                               switch (col) {
-                                                       case 0: calender += " ui-datepicker-group-first";
-                                                               cornerClass = " ui-corner-" + (isRTL ? "right" : "left"); break;
-                                                       case numMonths[1]-1: calender += " ui-datepicker-group-last";
-                                                               cornerClass = " ui-corner-" + (isRTL ? "left" : "right"); break;
-                                                       default: calender += " ui-datepicker-group-middle"; cornerClass = ""; break;
-                                               }
-                                       }
-                                       calender += "'>";
-                               }
-                               calender += "<div class='ui-datepicker-header ui-widget-header ui-helper-clearfix" + cornerClass + "'>" +
-                                       (/all|left/.test(cornerClass) && row === 0 ? (isRTL ? next : prev) : "") +
-                                       (/all|right/.test(cornerClass) && row === 0 ? (isRTL ? prev : next) : "") +
-                                       this._generateMonthYearHeader(inst, drawMonth, drawYear, minDate, maxDate,
-                                       row > 0 || col > 0, monthNames, monthNamesShort) + // draw month headers
-                                       "</div><table class='ui-datepicker-calendar'><thead>" +
-                                       "<tr>";
-                               thead = (showWeek ? "<th class='ui-datepicker-week-col'>" + this._get(inst, "weekHeader") + "</th>" : "");
-                               for (dow = 0; dow < 7; dow++) { // days of the week
-                                       day = (dow + firstDay) % 7;
-                                       thead += "<th scope='col'" + ((dow + firstDay + 6) % 7 >= 5 ? " class='ui-datepicker-week-end'" : "") + ">" +
-                                               "<span title='" + dayNames[day] + "'>" + dayNamesMin[day] + "</span></th>";
-                               }
-                               calender += thead + "</tr></thead><tbody>";
-                               daysInMonth = this._getDaysInMonth(drawYear, drawMonth);
-                               if (drawYear === inst.selectedYear && drawMonth === inst.selectedMonth) {
-                                       inst.selectedDay = Math.min(inst.selectedDay, daysInMonth);
-                               }
-                               leadDays = (this._getFirstDayOfMonth(drawYear, drawMonth) - firstDay + 7) % 7;
-                               curRows = Math.ceil((leadDays + daysInMonth) / 7); // calculate the number of rows to generate
-                               numRows = (isMultiMonth ? this.maxRows > curRows ? this.maxRows : curRows : curRows); //If multiple months, use the higher number of rows (see #7043)
-                               this.maxRows = numRows;
-                               printDate = this._daylightSavingAdjust(new Date(drawYear, drawMonth, 1 - leadDays));
-                               for (dRow = 0; dRow < numRows; dRow++) { // create date picker rows
-                                       calender += "<tr>";
-                                       tbody = (!showWeek ? "" : "<td class='ui-datepicker-week-col'>" +
-                                               this._get(inst, "calculateWeek")(printDate) + "</td>");
-                                       for (dow = 0; dow < 7; dow++) { // create date picker days
-                                               daySettings = (beforeShowDay ?
-                                                       beforeShowDay.apply((inst.input ? inst.input[0] : null), [printDate]) : [true, ""]);
-                                               otherMonth = (printDate.getMonth() !== drawMonth);
-                                               unselectable = (otherMonth && !selectOtherMonths) || !daySettings[0] ||
-                                                       (minDate && printDate < minDate) || (maxDate && printDate > maxDate);
-                                               tbody += "<td class='" +
-                                                       ((dow + firstDay + 6) % 7 >= 5 ? " ui-datepicker-week-end" : "") + // highlight weekends
-                                                       (otherMonth ? " ui-datepicker-other-month" : "") + // highlight days from other months
-                                                       ((printDate.getTime() === selectedDate.getTime() && drawMonth === inst.selectedMonth && inst._keyEvent) || // user pressed key
-                                                       (defaultDate.getTime() === printDate.getTime() && defaultDate.getTime() === selectedDate.getTime()) ?
-                                                       // or defaultDate is current printedDate and defaultDate is selectedDate
-                                                       " " + this._dayOverClass : "") + // highlight selected day
-                                                       (unselectable ? " " + this._unselectableClass + " ui-state-disabled": "") +  // highlight unselectable days
-                                                       (otherMonth && !showOtherMonths ? "" : " " + daySettings[1] + // highlight custom dates
-                                                       (printDate.getTime() === currentDate.getTime() ? " " + this._currentClass : "") + // highlight selected day
-                                                       (printDate.getTime() === today.getTime() ? " ui-datepicker-today" : "")) + "'" + // highlight today (if different)
-                                                       ((!otherMonth || showOtherMonths) && daySettings[2] ? " title='" + daySettings[2].replace(/'/g, "&#39;") + "'" : "") + // cell title
-                                                       (unselectable ? "" : " data-handler='selectDay' data-event='click' data-month='" + printDate.getMonth() + "' data-year='" + printDate.getFullYear() + "'") + ">" + // actions
-                                                       (otherMonth && !showOtherMonths ? "&#xa0;" : // display for other months
-                                                       (unselectable ? "<span class='ui-state-default'>" + printDate.getDate() + "</span>" : "<a class='ui-state-default" +
-                                                       (printDate.getTime() === today.getTime() ? " ui-state-highlight" : "") +
-                                                       (printDate.getTime() === currentDate.getTime() ? " ui-state-active" : "") + // highlight selected day
-                                                       (otherMonth ? " ui-priority-secondary" : "") + // distinguish dates from other months
-                                                       "' href='#'>" + printDate.getDate() + "</a>")) + "</td>"; // display selectable date
-                                               printDate.setDate(printDate.getDate() + 1);
-                                               printDate = this._daylightSavingAdjust(printDate);
-                                       }
-                                       calender += tbody + "</tr>";
-                               }
-                               drawMonth++;
-                               if (drawMonth > 11) {
-                                       drawMonth = 0;
-                                       drawYear++;
-                               }
-                               calender += "</tbody></table>" + (isMultiMonth ? "</div>" +
-                                                       ((numMonths[0] > 0 && col === numMonths[1]-1) ? "<div class='ui-datepicker-row-break'></div>" : "") : "");
-                               group += calender;
-                       }
-                       html += group;
-               }
-               html += buttonPanel;
-               inst._keyEvent = false;
-               return html;
-       },
-
-       /* Generate the month and year header. */
-       _generateMonthYearHeader: function(inst, drawMonth, drawYear, minDate, maxDate,
-                       secondary, monthNames, monthNamesShort) {
-
-               var inMinYear, inMaxYear, month, years, thisYear, determineYear, year, endYear,
-                       changeMonth = this._get(inst, "changeMonth"),
-                       changeYear = this._get(inst, "changeYear"),
-                       showMonthAfterYear = this._get(inst, "showMonthAfterYear"),
-                       html = "<div class='ui-datepicker-title'>",
-                       monthHtml = "";
-
-               // month selection
-               if (secondary || !changeMonth) {
-                       monthHtml += "<span class='ui-datepicker-month'>" + monthNames[drawMonth] + "</span>";
-               } else {
-                       inMinYear = (minDate && minDate.getFullYear() === drawYear);
-                       inMaxYear = (maxDate && maxDate.getFullYear() === drawYear);
-                       monthHtml += "<select class='ui-datepicker-month' data-handler='selectMonth' data-event='change'>";
-                       for ( month = 0; month < 12; month++) {
-                               if ((!inMinYear || month >= minDate.getMonth()) && (!inMaxYear || month <= maxDate.getMonth())) {
-                                       monthHtml += "<option value='" + month + "'" +
-                                               (month === drawMonth ? " selected='selected'" : "") +
-                                               ">" + monthNamesShort[month] + "</option>";
-                               }
-                       }
-                       monthHtml += "</select>";
-               }
-
-               if (!showMonthAfterYear) {
-                       html += monthHtml + (secondary || !(changeMonth && changeYear) ? "&#xa0;" : "");
-               }
-
-               // year selection
-               if ( !inst.yearshtml ) {
-                       inst.yearshtml = "";
-                       if (secondary || !changeYear) {
-                               html += "<span class='ui-datepicker-year'>" + drawYear + "</span>";
-                       } else {
-                               // determine range of years to display
-                               years = this._get(inst, "yearRange").split(":");
-                               thisYear = new Date().getFullYear();
-                               determineYear = function(value) {
-                                       var year = (value.match(/c[+\-].*/) ? drawYear + parseInt(value.substring(1), 10) :
-                                               (value.match(/[+\-].*/) ? thisYear + parseInt(value, 10) :
-                                               parseInt(value, 10)));
-                                       return (isNaN(year) ? thisYear : year);
-                               };
-                               year = determineYear(years[0]);
-                               endYear = Math.max(year, determineYear(years[1] || ""));
-                               year = (minDate ? Math.max(year, minDate.getFullYear()) : year);
-                               endYear = (maxDate ? Math.min(endYear, maxDate.getFullYear()) : endYear);
-                               inst.yearshtml += "<select class='ui-datepicker-year' data-handler='selectYear' data-event='change'>";
-                               for (; year <= endYear; year++) {
-                                       inst.yearshtml += "<option value='" + year + "'" +
-                                               (year === drawYear ? " selected='selected'" : "") +
-                                               ">" + year + "</option>";
-                               }
-                               inst.yearshtml += "</select>";
-
-                               html += inst.yearshtml;
-                               inst.yearshtml = null;
-                       }
-               }
-
-               html += this._get(inst, "yearSuffix");
-               if (showMonthAfterYear) {
-                       html += (secondary || !(changeMonth && changeYear) ? "&#xa0;" : "") + monthHtml;
-               }
-               html += "</div>"; // Close datepicker_header
-               return html;
-       },
-
-       /* Adjust one of the date sub-fields. */
-       _adjustInstDate: function(inst, offset, period) {
-               var year = inst.drawYear + (period === "Y" ? offset : 0),
-                       month = inst.drawMonth + (period === "M" ? offset : 0),
-                       day = Math.min(inst.selectedDay, this._getDaysInMonth(year, month)) + (period === "D" ? offset : 0),
-                       date = this._restrictMinMax(inst, this._daylightSavingAdjust(new Date(year, month, day)));
-
-               inst.selectedDay = date.getDate();
-               inst.drawMonth = inst.selectedMonth = date.getMonth();
-               inst.drawYear = inst.selectedYear = date.getFullYear();
-               if (period === "M" || period === "Y") {
-                       this._notifyChange(inst);
-               }
-       },
-
-       /* Ensure a date is within any min/max bounds. */
-       _restrictMinMax: function(inst, date) {
-               var minDate = this._getMinMaxDate(inst, "min"),
-                       maxDate = this._getMinMaxDate(inst, "max"),
-                       newDate = (minDate && date < minDate ? minDate : date);
-               return (maxDate && newDate > maxDate ? maxDate : newDate);
-       },
-
-       /* Notify change of month/year. */
-       _notifyChange: function(inst) {
-               var onChange = this._get(inst, "onChangeMonthYear");
-               if (onChange) {
-                       onChange.apply((inst.input ? inst.input[0] : null),
-                               [inst.selectedYear, inst.selectedMonth + 1, inst]);
-               }
-       },
-
-       /* Determine the number of months to show. */
-       _getNumberOfMonths: function(inst) {
-               var numMonths = this._get(inst, "numberOfMonths");
-               return (numMonths == null ? [1, 1] : (typeof numMonths === "number" ? [1, numMonths] : numMonths));
-       },
-
-       /* Determine the current maximum date - ensure no time components are set. */
-       _getMinMaxDate: function(inst, minMax) {
-               return this._determineDate(inst, this._get(inst, minMax + "Date"), null);
-       },
-
-       /* Find the number of days in a given month. */
-       _getDaysInMonth: function(year, month) {
-               return 32 - this._daylightSavingAdjust(new Date(year, month, 32)).getDate();
-       },
-
-       /* Find the day of the week of the first of a month. */
-       _getFirstDayOfMonth: function(year, month) {
-               return new Date(year, month, 1).getDay();
-       },
-
-       /* Determines if we should allow a "next/prev" month display change. */
-       _canAdjustMonth: function(inst, offset, curYear, curMonth) {
-               var numMonths = this._getNumberOfMonths(inst),
-                       date = this._daylightSavingAdjust(new Date(curYear,
-                       curMonth + (offset < 0 ? offset : numMonths[0] * numMonths[1]), 1));
-
-               if (offset < 0) {
-                       date.setDate(this._getDaysInMonth(date.getFullYear(), date.getMonth()));
-               }
-               return this._isInRange(inst, date);
-       },
-
-       /* Is the given date in the accepted range? */
-       _isInRange: function(inst, date) {
-               var yearSplit, currentYear,
-                       minDate = this._getMinMaxDate(inst, "min"),
-                       maxDate = this._getMinMaxDate(inst, "max"),
-                       minYear = null,
-                       maxYear = null,
-                       years = this._get(inst, "yearRange");
-                       if (years){
-                               yearSplit = years.split(":");
-                               currentYear = new Date().getFullYear();
-                               minYear = parseInt(yearSplit[0], 10);
-                               maxYear = parseInt(yearSplit[1], 10);
-                               if ( yearSplit[0].match(/[+\-].*/) ) {
-                                       minYear += currentYear;
-                               }
-                               if ( yearSplit[1].match(/[+\-].*/) ) {
-                                       maxYear += currentYear;
-                               }
-                       }
-
-               return ((!minDate || date.getTime() >= minDate.getTime()) &&
-                       (!maxDate || date.getTime() <= maxDate.getTime()) &&
-                       (!minYear || date.getFullYear() >= minYear) &&
-                       (!maxYear || date.getFullYear() <= maxYear));
-       },
-
-       /* Provide the configuration settings for formatting/parsing. */
-       _getFormatConfig: function(inst) {
-               var shortYearCutoff = this._get(inst, "shortYearCutoff");
-               shortYearCutoff = (typeof shortYearCutoff !== "string" ? shortYearCutoff :
-                       new Date().getFullYear() % 100 + parseInt(shortYearCutoff, 10));
-               return {shortYearCutoff: shortYearCutoff,
-                       dayNamesShort: this._get(inst, "dayNamesShort"), dayNames: this._get(inst, "dayNames"),
-                       monthNamesShort: this._get(inst, "monthNamesShort"), monthNames: this._get(inst, "monthNames")};
-       },
-
-       /* Format the given date for display. */
-       _formatDate: function(inst, day, month, year) {
-               if (!day) {
-                       inst.currentDay = inst.selectedDay;
-                       inst.currentMonth = inst.selectedMonth;
-                       inst.currentYear = inst.selectedYear;
-               }
-               var date = (day ? (typeof day === "object" ? day :
-                       this._daylightSavingAdjust(new Date(year, month, day))) :
-                       this._daylightSavingAdjust(new Date(inst.currentYear, inst.currentMonth, inst.currentDay)));
-               return this.formatDate(this._get(inst, "dateFormat"), date, this._getFormatConfig(inst));
-       }
-});
-
-/*
- * Bind hover events for datepicker elements.
- * Done via delegate so the binding only occurs once in the lifetime of the parent div.
- * Global datepicker_instActive, set by _updateDatepicker allows the handlers to find their way back to the active picker.
- */
-function datepicker_bindHover(dpDiv) {
-       var selector = "button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a";
-       return dpDiv.delegate(selector, "mouseout", function() {
-                       $(this).removeClass("ui-state-hover");
-                       if (this.className.indexOf("ui-datepicker-prev") !== -1) {
-                               $(this).removeClass("ui-datepicker-prev-hover");
-                       }
-                       if (this.className.indexOf("ui-datepicker-next") !== -1) {
-                               $(this).removeClass("ui-datepicker-next-hover");
-                       }
-               })
-               .delegate( selector, "mouseover", datepicker_handleMouseover );
-}
-
-function datepicker_handleMouseover() {
-       if (!$.datepicker._isDisabledDatepicker( datepicker_instActive.inline? datepicker_instActive.dpDiv.parent()[0] : datepicker_instActive.input[0])) {
-               $(this).parents(".ui-datepicker-calendar").find("a").removeClass("ui-state-hover");
-               $(this).addClass("ui-state-hover");
-               if (this.className.indexOf("ui-datepicker-prev") !== -1) {
-                       $(this).addClass("ui-datepicker-prev-hover");
-               }
-               if (this.className.indexOf("ui-datepicker-next") !== -1) {
-                       $(this).addClass("ui-datepicker-next-hover");
-               }
-       }
-}
-
-/* jQuery extend now ignores nulls! */
-function datepicker_extendRemove(target, props) {
-       $.extend(target, props);
-       for (var name in props) {
-               if (props[name] == null) {
-                       target[name] = props[name];
-               }
-       }
-       return target;
-}
-
-/* Invoke the datepicker functionality.
-   @param  options  string - a command, optionally followed by additional parameters or
-                                       Object - settings for attaching new datepicker functionality
-   @return  jQuery object */
-$.fn.datepicker = function(options){
-
-       /* Verify an empty collection wasn't passed - Fixes #6976 */
-       if ( !this.length ) {
-               return this;
-       }
-
-       /* Initialise the date picker. */
-       if (!$.datepicker.initialized) {
-               $(document).mousedown($.datepicker._checkExternalClick);
-               $.datepicker.initialized = true;
-       }
-
-       /* Append datepicker main container to body if not exist. */
-       if ($("#"+$.datepicker._mainDivId).length === 0) {
-               $("body").append($.datepicker.dpDiv);
-       }
-
-       var otherArgs = Array.prototype.slice.call(arguments, 1);
-       if (typeof options === "string" && (options === "isDisabled" || options === "getDate" || options === "widget")) {
-               return $.datepicker["_" + options + "Datepicker"].
-                       apply($.datepicker, [this[0]].concat(otherArgs));
-       }
-       if (options === "option" && arguments.length === 2 && typeof arguments[1] === "string") {
-               return $.datepicker["_" + options + "Datepicker"].
-                       apply($.datepicker, [this[0]].concat(otherArgs));
-       }
-       return this.each(function() {
-               typeof options === "string" ?
-                       $.datepicker["_" + options + "Datepicker"].
-                               apply($.datepicker, [this].concat(otherArgs)) :
-                       $.datepicker._attachDatepicker(this, options);
-       });
-};
-
-$.datepicker = new Datepicker(); // singleton instance
-$.datepicker.initialized = false;
-$.datepicker.uuid = new Date().getTime();
-$.datepicker.version = "1.11.3";
-
-var datepicker = $.datepicker;
-
-
-/*!
- * jQuery UI Dialog 1.11.3
- * http://jqueryui.com
- *
- * Copyright jQuery Foundation and other contributors
- * Released under the MIT license.
- * http://jquery.org/license
- *
- * http://api.jqueryui.com/dialog/
- */
-
-
-var dialog = $.widget( "ui.dialog", {
-       version: "1.11.3",
-       options: {
-               appendTo: "body",
-               autoOpen: true,
-               buttons: [],
-               closeOnEscape: true,
-               closeText: "Close",
-               dialogClass: "",
-               draggable: true,
-               hide: null,
-               height: "auto",
-               maxHeight: null,
-               maxWidth: null,
-               minHeight: 150,
-               minWidth: 150,
-               modal: false,
-               position: {
-                       my: "center",
-                       at: "center",
-                       of: window,
-                       collision: "fit",
-                       // Ensure the titlebar is always visible
-                       using: function( pos ) {
-                               var topOffset = $( this ).css( pos ).offset().top;
-                               if ( topOffset < 0 ) {
-                                       $( this ).css( "top", pos.top - topOffset );
-                               }
-                       }
-               },
-               resizable: true,
-               show: null,
-               title: null,
-               width: 300,
-
-               // callbacks
-               beforeClose: null,
-               close: null,
-               drag: null,
-               dragStart: null,
-               dragStop: null,
-               focus: null,
-               open: null,
-               resize: null,
-               resizeStart: null,
-               resizeStop: null
-       },
-
-       sizeRelatedOptions: {
-               buttons: true,
-               height: true,
-               maxHeight: true,
-               maxWidth: true,
-               minHeight: true,
-               minWidth: true,
-               width: true
-       },
-
-       resizableRelatedOptions: {
-               maxHeight: true,
-               maxWidth: true,
-               minHeight: true,
-               minWidth: true
-       },
-
-       _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();
-
-               if ( this.options.draggable && $.fn.draggable ) {
-                       this._makeDraggable();
-               }
-               if ( this.options.resizable && $.fn.resizable ) {
-                       this._makeResizable();
-               }
-
-               this._isOpen = false;
-
-               this._trackFocus();
-       },
-
-       _init: function() {
-               if ( this.options.autoOpen ) {
-                       this.open();
-               }
-       },
-
-       _appendTo: function() {
-               var element = this.options.appendTo;
-               if ( element && (element.jquery || element.nodeType) ) {
-                       return $( element );
-               }
-               return this.document.find( element || "body" ).eq( 0 );
-       },
-
-       _destroy: function() {
-               var next,
-                       originalPosition = this.originalPosition;
-
-               this._destroyOverlay();
-
-               this.element
-                       .removeUniqueId()
-                       .removeClass( "ui-dialog-content ui-widget-content" )
-                       .css( this.originalCss )
-                       // Without detaching first, the following becomes really slow
-                       .detach();
-
-               this.uiDialog.stop( true, true ).remove();
-
-               if ( this.originalTitle ) {
-                       this.element.attr( "title", this.originalTitle );
-               }
-
-               next = originalPosition.parent.children().eq( originalPosition.index );
-               // Don't try to place the dialog next to itself (#8613)
-               if ( next.length && next[ 0 ] !== this.element[ 0 ] ) {
-                       next.before( this.element );
-               } else {
-                       originalPosition.parent.append( this.element );
-               }
-       },
-
-       widget: function() {
-               return this.uiDialog;
-       },
-
-       disable: $.noop,
-       enable: $.noop,
-
-       close: function( event ) {
-               var activeElement,
-                       that = this;
-
-               if ( !this._isOpen || this._trigger( "beforeClose", event ) === false ) {
-                       return;
-               }
-
-               this._isOpen = false;
-               this._focusedElement = null;
-               this._destroyOverlay();
-               this._untrackInstance();
-
-               if ( !this.opener.filter( ":focusable" ).focus().length ) {
-
-                       // support: IE9
-                       // IE9 throws an "Unspecified error" accessing document.activeElement from an <iframe>
-                       try {
-                               activeElement = this.document[ 0 ].activeElement;
-
-                               // Support: IE9, IE10
-                               // If the <body> is blurred, IE will switch windows, see #4520
-                               if ( activeElement && activeElement.nodeName.toLowerCase() !== "body" ) {
-
-                                       // Hiding a focused element doesn't trigger blur in WebKit
-                                       // so in case we have nothing to focus on, explicitly blur the active element
-                                       // https://bugs.webkit.org/show_bug.cgi?id=47182
-                                       $( activeElement ).blur();
-                               }
-                       } catch ( error ) {}
-               }
-
-               this._hide( this.uiDialog, this.options.hide, function() {
-                       that._trigger( "close", event );
-               });
-       },
-
-       isOpen: function() {
-               return this._isOpen;
-       },
-
-       moveToTop: function() {
-               this._moveToTop();
-       },
-
-       _moveToTop: function( event, silent ) {
-               var moved = false,
-                       zIndicies = this.uiDialog.siblings( ".ui-front:visible" ).map(function() {
-                               return +$( this ).css( "z-index" );
-                       }).get(),
-                       zIndexMax = Math.max.apply( null, zIndicies );
-
-               if ( zIndexMax >= +this.uiDialog.css( "z-index" ) ) {
-                       this.uiDialog.css( "z-index", zIndexMax + 1 );
-                       moved = true;
-               }
-
-               if ( moved && !silent ) {
-                       this._trigger( "focus", event );
-               }
-               return moved;
-       },
-
-       open: function() {
-               var that = this;
-               if ( this._isOpen ) {
-                       if ( this._moveToTop() ) {
-                               this._focusTabbable();
-                       }
-                       return;
-               }
-
-               this._isOpen = true;
-               this.opener = $( this.document[ 0 ].activeElement );
-
-               this._size();
-               this._position();
-               this._createOverlay();
-               this._moveToTop( null, true );
-
-               // Ensure the overlay is moved to the top with the dialog, but only when
-               // opening. The overlay shouldn't move after the dialog is open so that
-               // modeless dialogs opened after the modal dialog stack properly.
-               if ( this.overlay ) {
-                       this.overlay.css( "z-index", this.uiDialog.css( "z-index" ) - 1 );
-               }
-
-               this._show( this.uiDialog, this.options.show, function() {
-                       that._focusTabbable();
-                       that._trigger( "focus" );
-               });
-
-               // Track the dialog immediately upon openening in case a focus event
-               // somehow occurs outside of the dialog before an element inside the
-               // dialog is focused (#10152)
-               this._makeFocusTarget();
-
-               this._trigger( "open" );
-       },
-
-       _focusTabbable: function() {
-               // Set focus to the first match:
-               // 1. An element that was focused previously
-               // 2. First element inside the dialog matching [autofocus]
-               // 3. Tabbable element inside the content element
-               // 4. Tabbable element inside the buttonpane
-               // 5. The close button
-               // 6. The dialog itself
-               var hasFocus = this._focusedElement;
-               if ( !hasFocus ) {
-                       hasFocus = this.element.find( "[autofocus]" );
-               }
-               if ( !hasFocus.length ) {
-                       hasFocus = this.element.find( ":tabbable" );
-               }
-               if ( !hasFocus.length ) {
-                       hasFocus = this.uiDialogButtonPane.find( ":tabbable" );
-               }
-               if ( !hasFocus.length ) {
-                       hasFocus = this.uiDialogTitlebarClose.filter( ":tabbable" );
-               }
-               if ( !hasFocus.length ) {
-                       hasFocus = this.uiDialog;
-               }
-               hasFocus.eq( 0 ).focus();
-       },
-
-       _keepFocus: function( event ) {
-               function checkFocus() {
-                       var activeElement = this.document[0].activeElement,
-                               isActive = this.uiDialog[0] === activeElement ||
-                                       $.contains( this.uiDialog[0], activeElement );
-                       if ( !isActive ) {
-                               this._focusTabbable();
-                       }
-               }
-               event.preventDefault();
-               checkFocus.call( this );
-               // support: IE
-               // IE <= 8 doesn't prevent moving focus even with event.preventDefault()
-               // so we check again later
-               this._delay( checkFocus );
-       },
-
-       _createWrapper: function() {
-               this.uiDialog = $("<div>")
-                       .addClass( "ui-dialog ui-widget ui-widget-content ui-corner-all ui-front " +
-                               this.options.dialogClass )
-                       .hide()
-                       .attr({
-                               // Setting tabIndex makes the div focusable
-                               tabIndex: -1,
-                               role: "dialog"
-                       })
-                       .appendTo( this._appendTo() );
-
-               this._on( this.uiDialog, {
-                       keydown: function( event ) {
-                               if ( this.options.closeOnEscape && !event.isDefaultPrevented() && event.keyCode &&
-                                               event.keyCode === $.ui.keyCode.ESCAPE ) {
-                                       event.preventDefault();
-                                       this.close( event );
-                                       return;
-                               }
-
-                               // prevent tabbing out of dialogs
-                               if ( event.keyCode !== $.ui.keyCode.TAB || event.isDefaultPrevented() ) {
-                                       return;
-                               }
-                               var tabbables = this.uiDialog.find( ":tabbable" ),
-                                       first = tabbables.filter( ":first" ),
-                                       last = tabbables.filter( ":last" );
-
-                               if ( ( event.target === last[0] || event.target === this.uiDialog[0] ) && !event.shiftKey ) {
-                                       this._delay(function() {
-                                               first.focus();
-                                       });
-                                       event.preventDefault();
-                               } else if ( ( event.target === first[0] || event.target === this.uiDialog[0] ) && event.shiftKey ) {
-                                       this._delay(function() {
-                                               last.focus();
-                                       });
-                                       event.preventDefault();
-                               }
-                       },
-                       mousedown: function( event ) {
-                               if ( this._moveToTop( event ) ) {
-                                       this._focusTabbable();
-                               }
-                       }
-               });
-
-               // We assume that any existing aria-describedby attribute means
-               // that the dialog content is marked up properly
-               // otherwise we brute force the content as the description
-               if ( !this.element.find( "[aria-describedby]" ).length ) {
-                       this.uiDialog.attr({
-                               "aria-describedby": this.element.uniqueId().attr( "id" )
-                       });
-               }
-       },
-
-       _createTitlebar: function() {
-               var uiDialogTitle;
-
-               this.uiDialogTitlebar = $( "<div>" )
-                       .addClass( "ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix" )
-                       .prependTo( this.uiDialog );
-               this._on( this.uiDialogTitlebar, {
-                       mousedown: function( event ) {
-                               // Don't prevent click on close button (#8838)
-                               // Focusing a dialog that is partially scrolled out of view
-                               // causes the browser to scroll it into view, preventing the click event
-                               if ( !$( event.target ).closest( ".ui-dialog-titlebar-close" ) ) {
-                                       // Dialog isn't getting focus when dragging (#8063)
-                                       this.uiDialog.focus();
-                               }
-                       }
-               });
-
-               // support: IE
-               // Use type="button" to prevent enter keypresses in textboxes from closing the
-               // dialog in IE (#9312)
-               this.uiDialogTitlebarClose = $( "<button type='button'></button>" )
-                       .button({
-                               label: this.options.closeText,
-                               icons: {
-                                       primary: "ui-icon-closethick"
-                               },
-                               text: false
-                       })
-                       .addClass( "ui-dialog-titlebar-close" )
-                       .appendTo( this.uiDialogTitlebar );
-               this._on( this.uiDialogTitlebarClose, {
-                       click: function( event ) {
-                               event.preventDefault();
-                               this.close( event );
-                       }
-               });
-
-               uiDialogTitle = $( "<span>" )
-                       .uniqueId()
-                       .addClass( "ui-dialog-title" )
-                       .prependTo( this.uiDialogTitlebar );
-               this._title( uiDialogTitle );
-
-               this.uiDialog.attr({
-                       "aria-labelledby": uiDialogTitle.attr( "id" )
-               });
-       },
-
-       _title: function( title ) {
-               if ( !this.options.title ) {
-                       title.html( "&#160;" );
-               }
-               title.text( this.options.title );
-       },
-
-       _createButtonPane: function() {
-               this.uiDialogButtonPane = $( "<div>" )
-                       .addClass( "ui-dialog-buttonpane ui-widget-content ui-helper-clearfix" );
-
-               this.uiButtonSet = $( "<div>" )
-                       .addClass( "ui-dialog-buttonset" )
-                       .appendTo( this.uiDialogButtonPane );
-
-               this._createButtons();
-       },
-
-       _createButtons: function() {
-               var that = this,
-                       buttons = this.options.buttons;
-
-               // if we already have a button pane, remove it
-               this.uiDialogButtonPane.remove();
-               this.uiButtonSet.empty();
-
-               if ( $.isEmptyObject( buttons ) || ($.isArray( buttons ) && !buttons.length) ) {
-                       this.uiDialog.removeClass( "ui-dialog-buttons" );
-                       return;
-               }
-
-               $.each( buttons, function( name, props ) {
-                       var click, buttonOptions;
-                       props = $.isFunction( props ) ?
-                               { click: props, text: name } :
-                               props;
-                       // Default to a non-submitting button
-                       props = $.extend( { type: "button" }, props );
-                       // Change the context for the click callback to be the main element
-                       click = props.click;
-                       props.click = function() {
-                               click.apply( that.element[ 0 ], arguments );
-                       };
-                       buttonOptions = {
-                               icons: props.icons,
-                               text: props.showText
-                       };
-                       delete props.icons;
-                       delete props.showText;
-                       $( "<button></button>", props )
-                               .button( buttonOptions )
-                               .appendTo( that.uiButtonSet );
-               });
-               this.uiDialog.addClass( "ui-dialog-buttons" );
-               this.uiDialogButtonPane.appendTo( this.uiDialog );
-       },
-
-       _makeDraggable: function() {
-               var that = this,
-                       options = this.options;
-
-               function filteredUi( ui ) {
-                       return {
-                               position: ui.position,
-                               offset: ui.offset
-                       };
-               }
-
-               this.uiDialog.draggable({
-                       cancel: ".ui-dialog-content, .ui-dialog-titlebar-close",
-                       handle: ".ui-dialog-titlebar",
-                       containment: "document",
-                       start: function( event, ui ) {
-                               $( this ).addClass( "ui-dialog-dragging" );
-                               that._blockFrames();
-                               that._trigger( "dragStart", event, filteredUi( ui ) );
-                       },
-                       drag: function( event, ui ) {
-                               that._trigger( "drag", event, filteredUi( ui ) );
-                       },
-                       stop: function( event, ui ) {
-                               var left = ui.offset.left - that.document.scrollLeft(),
-                                       top = ui.offset.top - that.document.scrollTop();
-
-                               options.position = {
-                                       my: "left top",
-                                       at: "left" + (left >= 0 ? "+" : "") + left + " " +
-                                               "top" + (top >= 0 ? "+" : "") + top,
-                                       of: that.window
-                               };
-                               $( this ).removeClass( "ui-dialog-dragging" );
-                               that._unblockFrames();
-                               that._trigger( "dragStop", event, filteredUi( ui ) );
-                       }
-               });
-       },
-
-       _makeResizable: function() {
-               var that = this,
-                       options = this.options,
-                       handles = options.resizable,
-                       // .ui-resizable has position: relative defined in the stylesheet
-                       // but dialogs have to use absolute or fixed positioning
-                       position = this.uiDialog.css("position"),
-                       resizeHandles = typeof handles === "string" ?
-                               handles :
-                               "n,e,s,w,se,sw,ne,nw";
-
-               function filteredUi( ui ) {
-                       return {
-                               originalPosition: ui.originalPosition,
-                               originalSize: ui.originalSize,
-                               position: ui.position,
-                               size: ui.size
-                       };
-               }
-
-               this.uiDialog.resizable({
-                       cancel: ".ui-dialog-content",
-                       containment: "document",
-                       alsoResize: this.element,
-                       maxWidth: options.maxWidth,
-                       maxHeight: options.maxHeight,
-                       minWidth: options.minWidth,
-                       minHeight: this._minHeight(),
-                       handles: resizeHandles,
-                       start: function( event, ui ) {
-                               $( this ).addClass( "ui-dialog-resizing" );
-                               that._blockFrames();
-                               that._trigger( "resizeStart", event, filteredUi( ui ) );
-                       },
-                       resize: function( event, ui ) {
-                               that._trigger( "resize", event, filteredUi( ui ) );
-                       },
-                       stop: function( event, ui ) {
-                               var offset = that.uiDialog.offset(),
-                                       left = offset.left - that.document.scrollLeft(),
-                                       top = offset.top - that.document.scrollTop();
-
-                               options.height = that.uiDialog.height();
-                               options.width = that.uiDialog.width();
-                               options.position = {
-                                       my: "left top",
-                                       at: "left" + (left >= 0 ? "+" : "") + left + " " +
-                                               "top" + (top >= 0 ? "+" : "") + top,
-                                       of: that.window
-                               };
-                               $( this ).removeClass( "ui-dialog-resizing" );
-                               that._unblockFrames();
-                               that._trigger( "resizeStop", event, filteredUi( ui ) );
-                       }
-               })
-               .css( "position", position );
-       },
-
-       _trackFocus: function() {
-               this._on( this.widget(), {
-                       focusin: function( event ) {
-                               this._makeFocusTarget();
-                               this._focusedElement = $( event.target );
-                       }
-               });
-       },
-
-       _makeFocusTarget: function() {
-               this._untrackInstance();
-               this._trackingInstances().unshift( this );
-       },
-
-       _untrackInstance: function() {
-               var instances = this._trackingInstances(),
-                       exists = $.inArray( this, instances );
-               if ( exists !== -1 ) {
-                       instances.splice( exists, 1 );
-               }
-       },
-
-       _trackingInstances: function() {
-               var instances = this.document.data( "ui-dialog-instances" );
-               if ( !instances ) {
-                       instances = [];
-                       this.document.data( "ui-dialog-instances", instances );
-               }
-               return instances;
-       },
-
-       _minHeight: function() {
-               var options = this.options;
-
-               return options.height === "auto" ?
-                       options.minHeight :
-                       Math.min( options.minHeight, options.height );
-       },
-
-       _position: function() {
-               // Need to show the dialog to get the actual offset in the position plugin
-               var isVisible = this.uiDialog.is( ":visible" );
-               if ( !isVisible ) {
-                       this.uiDialog.show();
-               }
-               this.uiDialog.position( this.options.position );
-               if ( !isVisible ) {
-                       this.uiDialog.hide();
-               }
-       },
-
-       _setOptions: function( options ) {
-               var that = this,
-                       resize = false,
-                       resizableOptions = {};
-
-               $.each( options, function( key, value ) {
-                       that._setOption( key, value );
-
-                       if ( key in that.sizeRelatedOptions ) {
-                               resize = true;
-                       }
-                       if ( key in that.resizableRelatedOptions ) {
-                               resizableOptions[ key ] = value;
-                       }
-               });
-
-               if ( resize ) {
-                       this._size();
-                       this._position();
-               }
-               if ( this.uiDialog.is( ":data(ui-resizable)" ) ) {
-                       this.uiDialog.resizable( "option", resizableOptions );
-               }
-       },
-
-       _setOption: function( key, value ) {
-               var isDraggable, isResizable,
-                       uiDialog = this.uiDialog;
-
-               if ( key === "dialogClass" ) {
-                       uiDialog
-                               .removeClass( this.options.dialogClass )
-                               .addClass( value );
-               }
-
-               if ( key === "disabled" ) {
-                       return;
-               }
-
-               this._super( key, value );
-
-               if ( key === "appendTo" ) {
-                       this.uiDialog.appendTo( this._appendTo() );
-               }
-
-               if ( key === "buttons" ) {
-                       this._createButtons();
-               }
-
-               if ( key === "closeText" ) {
-                       this.uiDialogTitlebarClose.button({
-                               // Ensure that we always pass a string
-                               label: "" + value
-                       });
-               }
-
-               if ( key === "draggable" ) {
-                       isDraggable = uiDialog.is( ":data(ui-draggable)" );
-                       if ( isDraggable && !value ) {
-                               uiDialog.draggable( "destroy" );
-                       }
-
-                       if ( !isDraggable && value ) {
-                               this._makeDraggable();
-                       }
-               }
-
-               if ( key === "position" ) {
-                       this._position();
-               }
-
-               if ( key === "resizable" ) {
-                       // currently resizable, becoming non-resizable
-                       isResizable = uiDialog.is( ":data(ui-resizable)" );
-                       if ( isResizable && !value ) {
-                               uiDialog.resizable( "destroy" );
-                       }
-
-                       // currently resizable, changing handles
-                       if ( isResizable && typeof value === "string" ) {
-                               uiDialog.resizable( "option", "handles", value );
-                       }
-
-                       // currently non-resizable, becoming resizable
-                       if ( !isResizable && value !== false ) {
-                               this._makeResizable();
-                       }
-               }
-
-               if ( key === "title" ) {
-                       this._title( this.uiDialogTitlebar.find( ".ui-dialog-title" ) );
-               }
-       },
-
-       _size: function() {
-               // If the user has resized the dialog, the .ui-dialog and .ui-dialog-content
-               // divs will both have width and height set, so we need to reset them
-               var nonContentHeight, minContentHeight, maxContentHeight,
-                       options = this.options;
-
-               // Reset content sizing
-               this.element.show().css({
-                       width: "auto",
-                       minHeight: 0,
-                       maxHeight: "none",
-                       height: 0
-               });
-
-               if ( options.minWidth > options.width ) {
-                       options.width = options.minWidth;
-               }
-
-               // reset wrapper sizing
-               // determine the height of all the non-content elements
-               nonContentHeight = this.uiDialog.css({
-                               height: "auto",
-                               width: options.width
-                       })
-                       .outerHeight();
-               minContentHeight = Math.max( 0, options.minHeight - nonContentHeight );
-               maxContentHeight = typeof options.maxHeight === "number" ?
-                       Math.max( 0, options.maxHeight - nonContentHeight ) :
-                       "none";
-
-               if ( options.height === "auto" ) {
-                       this.element.css({
-                               minHeight: minContentHeight,
-                               maxHeight: maxContentHeight,
-                               height: "auto"
-                       });
-               } else {
-                       this.element.height( Math.max( 0, options.height - nonContentHeight ) );
-               }
-
-               if ( this.uiDialog.is( ":data(ui-resizable)" ) ) {
-                       this.uiDialog.resizable( "option", "minHeight", this._minHeight() );
-               }
-       },
-
-       _blockFrames: function() {
-               this.iframeBlocks = this.document.find( "iframe" ).map(function() {
-                       var iframe = $( this );
-
-                       return $( "<div>" )
-                               .css({
-                                       position: "absolute",
-                                       width: iframe.outerWidth(),
-                                       height: iframe.outerHeight()
-                               })
-                               .appendTo( iframe.parent() )
-                               .offset( iframe.offset() )[0];
-               });
-       },
-
-       _unblockFrames: function() {
-               if ( this.iframeBlocks ) {
-                       this.iframeBlocks.remove();
-                       delete this.iframeBlocks;
-               }
-       },
-
-       _allowInteraction: function( event ) {
-               if ( $( event.target ).closest( ".ui-dialog" ).length ) {
-                       return true;
-               }
-
-               // TODO: Remove hack when datepicker implements
-               // the .ui-front logic (#8989)
-               return !!$( event.target ).closest( ".ui-datepicker" ).length;
-       },
-
-       _createOverlay: function() {
-               if ( !this.options.modal ) {
-                       return;
-               }
-
-               // We use a delay in case the overlay is created from an
-               // event that we're going to be cancelling (#2804)
-               var isOpening = true;
-               this._delay(function() {
-                       isOpening = false;
-               });
-
-               if ( !this.document.data( "ui-dialog-overlays" ) ) {
-
-                       // Prevent use of anchors and inputs
-                       // Using _on() for an event handler shared across many instances is
-                       // safe because the dialogs stack and must be closed in reverse order
-                       this._on( this.document, {
-                               focusin: function( event ) {
-                                       if ( isOpening ) {
-                                               return;
-                                       }
-
-                                       if ( !this._allowInteraction( event ) ) {
-                                               event.preventDefault();
-                                               this._trackingInstances()[ 0 ]._focusTabbable();
-                                       }
-                               }
-                       });
-               }
-
-               this.overlay = $( "<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 ) {
-                       return;
-               }
-
-               if ( this.overlay ) {
-                       var overlays = this.document.data( "ui-dialog-overlays" ) - 1;
-
-                       if ( !overlays ) {
-                               this.document
-                                       .unbind( "focusin" )
-                                       .removeData( "ui-dialog-overlays" );
-                       } else {
-                               this.document.data( "ui-dialog-overlays", overlays );
-                       }
-
-                       this.overlay.remove();
-                       this.overlay = null;
-               }
-       }
-});
-
-
-/*!
- * jQuery UI Progressbar 1.11.3
- * http://jqueryui.com
- *
- * Copyright jQuery Foundation and other contributors
- * Released under the MIT license.
- * http://jquery.org/license
- *
- * http://api.jqueryui.com/progressbar/
- */
-
-
-var progressbar = $.widget( "ui.progressbar", {
-       version: "1.11.3",
-       options: {
-               max: 100,
-               value: 0,
-
-               change: null,
-               complete: null
-       },
-
-       min: 0,
-
-       _create: function() {
-               // Constrain initial value
-               this.oldValue = this.options.value = this._constrainedValue();
-
-               this.element
-                       .addClass( "ui-progressbar ui-widget ui-widget-content ui-corner-all" )
-                       .attr({
-                               // Only set static values, aria-valuenow and aria-valuemax are
-                               // set inside _refreshValue()
-                               role: "progressbar",
-                               "aria-valuemin": this.min
-                       });
-
-               this.valueDiv = $( "<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( newValue ) {
-               if ( newValue === undefined ) {
-                       return this.options.value;
-               }
-
-               this.options.value = this._constrainedValue( newValue );
-               this._refreshValue();
-       },
-
-       _constrainedValue: function( newValue ) {
-               if ( newValue === undefined ) {
-                       newValue = this.options.value;
-               }
-
-               this.indeterminate = newValue === false;
-
-               // sanitize value
-               if ( typeof newValue !== "number" ) {
-                       newValue = 0;
-               }
-
-               return this.indeterminate ? false :
-                       Math.min( this.options.max, Math.max( this.min, newValue ) );
-       },
-
-       _setOptions: function( options ) {
-               // Ensure "value" option is set after other values (like max)
-               var value = options.value;
-               delete options.value;
-
-               this._super( options );
-
-               this.options.value = this._constrainedValue( value );
-               this._refreshValue();
-       },
-
-       _setOption: function( key, value ) {
-               if ( key === "max" ) {
-                       // Don't allow a max less than min
-                       value = Math.max( this.min, value );
-               }
-               if ( key === "disabled" ) {
-                       this.element
-                               .toggleClass( "ui-state-disabled", !!value )
-                               .attr( "aria-disabled", value );
-               }
-               this._super( key, value );
-       },
-
-       _percentage: function() {
-               return this.indeterminate ? 100 : 100 * ( this.options.value - this.min ) / ( this.options.max - this.min );
-       },
-
-       _refreshValue: function() {
-               var value = this.options.value,
-                       percentage = this._percentage();
-
-               this.valueDiv
-                       .toggle( this.indeterminate || value > this.min )
-                       .toggleClass( "ui-corner-right", value === this.options.max )
-                       .width( percentage.toFixed(0) + "%" );
-
-               this.element.toggleClass( "ui-progressbar-indeterminate", this.indeterminate );
-
-               if ( this.indeterminate ) {
-                       this.element.removeAttr( "aria-valuenow" );
-                       if ( !this.overlayDiv ) {
-                               this.overlayDiv = $( "<div class='ui-progressbar-overlay'></div>" ).appendTo( this.valueDiv );
-                       }
-               } else {
-                       this.element.attr({
-                               "aria-valuemax": this.options.max,
-                               "aria-valuenow": value
-                       });
-                       if ( this.overlayDiv ) {
-                               this.overlayDiv.remove();
-                               this.overlayDiv = null;
-                       }
-               }
-
-               if ( this.oldValue !== value ) {
-                       this.oldValue = value;
-                       this._trigger( "change" );
-               }
-               if ( value === this.options.max ) {
-                       this._trigger( "complete" );
-               }
-       }
-});
-
-
-/*!
- * jQuery UI Selectmenu 1.11.3
- * http://jqueryui.com
- *
- * Copyright jQuery Foundation and other contributors
- * Released under the MIT license.
- * http://jquery.org/license
- *
- * http://api.jqueryui.com/selectmenu
- */
-
-
-var selectmenu = $.widget( "ui.selectmenu", {
-       version: "1.11.3",
-       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,
-
-               // callbacks
-               change: null,
-               close: null,
-               focus: null,
-               open: null,
-               select: null
-       },
-
-       _create: function() {
-               var selectmenuId = this.element.uniqueId().attr( "id" );
-               this.ids = {
-                       element: selectmenuId,
-                       button: selectmenuId + "-button",
-                       menu: selectmenuId + "-menu"
-               };
-
-               this._drawButton();
-               this._drawMenu();
-
-               if ( this.options.disabled ) {
-                       this.disable();
-               }
-       },
-
-       _drawButton: function() {
-               var that = this;
-
-               // Associate existing label with the new button
-               this.label = $( "label[for='" + this.ids.element + "']" ).attr( "for", this.ids.button );
-               this._on( this.label, {
-                       click: function( event ) {
-                               this.button.focus();
-                               event.preventDefault();
-                       }
-               });
-
-               // Hide original select element
-               this.element.hide();
-
-               // Create button
-               this.button = $( "<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 );
-
-               $( "<span>", {
-                       "class": "ui-icon " + this.options.icons.button
-               })
-                       .prependTo( this.button );
-
-               this.buttonText = $( "<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() {
-
-                       // Delay rendering the menu items until the button receives focus.
-                       // The menu may have already been rendered via a programmatic open.
-                       if ( !that.menuItems ) {
-                               that._refreshMenu();
-                       }
-               });
-               this._hoverable( this.button );
-               this._focusable( this.button );
-       },
-
-       _drawMenu: function() {
-               var that = this;
-
-               // Create menu
-               this.menu = $( "<ul>", {
-                       "aria-hidden": "true",
-                       "aria-labelledby": this.ids.button,
-                       id: this.ids.menu
-               });
-
-               // Wrap menu
-               this.menuWrap = $( "<div>", {
-                       "class": "ui-selectmenu-menu ui-front"
-               })
-                       .append( this.menu )
-                       .appendTo( this._appendTo() );
-
-               // Initialize menu widget
-               this.menuInstance = this.menu
-                       .menu({
-                               role: "listbox",
-                               select: function( event, ui ) {
-                                       event.preventDefault();
-
-                                       // support: IE8
-                                       // If the item was selected via a click, the text selection
-                                       // will be destroyed in IE
-                                       that._setSelection();
-
-                                       that._select( ui.item.data( "ui-selectmenu-item" ), event );
-                               },
-                               focus: function( event, ui ) {
-                                       var item = ui.item.data( "ui-selectmenu-item" );
-
-                                       // Prevent inital focus from firing and check if its a newly focused item
-                                       if ( that.focusIndex != null && item.index !== that.focusIndex ) {
-                                               that._trigger( "focus", event, { item: item } );
-                                               if ( !that.isOpen ) {
-                                                       that._select( item, event );
-                                               }
-                                       }
-                                       that.focusIndex = item.index;
-
-                                       that.button.attr( "aria-activedescendant",
-                                               that.menuItems.eq( item.index ).attr( "id" ) );
-                               }
-                       })
-                       .menu( "instance" );
-
-               // Adjust menu styles to dropdown
-               this.menu
-                       .addClass( "ui-corner-bottom" )
-                       .removeClass( "ui-corner-all" );
-
-               // Don't close the menu on mouseleave
-               this.menuInstance._off( this.menu, "mouseleave" );
-
-               // Cancel the menu's collapseAll on document click
-               this.menuInstance._closeOnDocumentClick = function() {
-                       return false;
-               };
-
-               // Selects often contain empty items, but never contain dividers
-               this.menuInstance._isDivider = function() {
-                       return false;
-               };
-       },
-
-       refresh: function() {
-               this._refreshMenu();
-               this._setText( this.buttonText, this._getSelectedItem().text() );
-               if ( !this.options.width ) {
-                       this._resizeButton();
-               }
-       },
-
-       _refreshMenu: function() {
-               this.menu.empty();
-
-               var item,
-                       options = this.element.find( "option" );
-
-               if ( !options.length ) {
-                       return;
-               }
-
-               this._parseOptions( options );
-               this._renderMenu( this.menu, this.items );
-
-               this.menuInstance.refresh();
-               this.menuItems = this.menu.find( "li" ).not( ".ui-selectmenu-optgroup" );
-
-               item = this._getSelectedItem();
-
-               // Update the menu to have the correct item focused
-               this.menuInstance.focus( null, item );
-               this._setAria( item.data( "ui-selectmenu-item" ) );
-
-               // Set disabled state
-               this._setOption( "disabled", this.element.prop( "disabled" ) );
-       },
-
-       open: function( event ) {
-               if ( this.options.disabled ) {
-                       return;
-               }
-
-               // If this is the first time the menu is being opened, render the items
-               if ( !this.menuItems ) {
-                       this._refreshMenu();
-               } else {
-
-                       // Menu clears focus on close, reset focus to selected item
-                       this.menu.find( ".ui-state-focus" ).removeClass( "ui-state-focus" );
-                       this.menuInstance.focus( null, this._getSelectedItem() );
-               }
-
-               this.isOpen = true;
-               this._toggleAttr();
-               this._resizeMenu();
-               this._position();
-
-               this._on( this.document, this._documentClick );
-
-               this._trigger( "open", event );
-       },
-
-       _position: function() {
-               this.menuWrap.position( $.extend( { of: this.button }, this.options.position ) );
-       },
-
-       close: function( event ) {
-               if ( !this.isOpen ) {
-                       return;
-               }
-
-               this.isOpen = false;
-               this._toggleAttr();
-
-               this.range = null;
-               this._off( this.document );
-
-               this._trigger( "close", event );
-       },
-
-       widget: function() {
-               return this.button;
-       },
-
-       menuWidget: function() {
-               return this.menu;
-       },
-
-       _renderMenu: function( ul, items ) {
-               var that = this,
-                       currentOptgroup = "";
-
-               $.each( items, function( index, item ) {
-                       if ( item.optgroup !== currentOptgroup ) {
-                               $( "<li>", {
-                                       "class": "ui-selectmenu-optgroup ui-menu-divider" +
-                                               ( item.element.parent( "optgroup" ).prop( "disabled" ) ?
-                                                       " ui-state-disabled" :
-                                                       "" ),
-                                       text: item.optgroup
-                               })
-                                       .appendTo( ul );
-
-                               currentOptgroup = item.optgroup;
-                       }
-
-                       that._renderItemData( ul, item );
-               });
-       },
-
-       _renderItemData: function( ul, item ) {
-               return this._renderItem( ul, item ).data( "ui-selectmenu-item", item );
-       },
-
-       _renderItem: function( ul, item ) {
-               var li = $( "<li>" );
-
-               if ( item.disabled ) {
-                       li.addClass( "ui-state-disabled" );
-               }
-               this._setText( li, item.label );
-
-               return li.appendTo( ul );
-       },
-
-       _setText: function( element, value ) {
-               if ( value ) {
-                       element.text( value );
-               } else {
-                       element.html( "&#160;" );
-               }
-       },
-
-       _move: function( direction, event ) {
-               var item, next,
-                       filter = ".ui-menu-item";
-
-               if ( this.isOpen ) {
-                       item = this.menuItems.eq( this.focusIndex );
-               } else {
-                       item = this.menuItems.eq( this.element[ 0 ].selectedIndex );
-                       filter += ":not(.ui-state-disabled)";
-               }
-
-               if ( direction === "first" || direction === "last" ) {
-                       next = item[ direction === "first" ? "prevAll" : "nextAll" ]( filter ).eq( -1 );
-               } else {
-                       next = item[ direction + "All" ]( filter ).eq( 0 );
-               }
-
-               if ( next.length ) {
-                       this.menuInstance.focus( event, next );
-               }
-       },
-
-       _getSelectedItem: function() {
-               return this.menuItems.eq( this.element[ 0 ].selectedIndex );
-       },
-
-       _toggle: function( event ) {
-               this[ this.isOpen ? "close" : "open" ]( event );
-       },
-
-       _setSelection: function() {
-               var selection;
-
-               if ( !this.range ) {
-                       return;
-               }
-
-               if ( window.getSelection ) {
-                       selection = window.getSelection();
-                       selection.removeAllRanges();
-                       selection.addRange( this.range );
-
-               // support: IE8
-               } else {
-                       this.range.select();
-               }
-
-               // support: IE
-               // Setting the text selection kills the button focus in IE, but
-               // restoring the focus doesn't kill the selection.
-               this.button.focus();
-       },
-
-       _documentClick: {
-               mousedown: function( event ) {
-                       if ( !this.isOpen ) {
-                               return;
-                       }
-
-                       if ( !$( event.target ).closest( ".ui-selectmenu-menu, #" + this.ids.button ).length ) {
-                               this.close( event );
-                       }
-               }
-       },
-
-       _buttonEvents: {
-
-               // Prevent text selection from being reset when interacting with the selectmenu (#10144)
-               mousedown: function() {
-                       var selection;
-
-                       if ( window.getSelection ) {
-                               selection = window.getSelection();
-                               if ( selection.rangeCount ) {
-                                       this.range = selection.getRangeAt( 0 );
-                               }
-
-                       // support: IE8
-                       } else {
-                               this.range = document.selection.createRange();
-                       }
-               },
-
-               click: function( event ) {
-                       this._setSelection();
-                       this._toggle( event );
-               },
-
-               keydown: function( event ) {
-                       var preventDefault = true;
-                       switch ( event.keyCode ) {
-                               case $.ui.keyCode.TAB:
-                               case $.ui.keyCode.ESCAPE:
-                                       this.close( event );
-                                       preventDefault = false;
-                                       break;
-                               case $.ui.keyCode.ENTER:
-                                       if ( this.isOpen ) {
-                                               this._selectFocusedItem( event );
-                                       }
-                                       break;
-                               case $.ui.keyCode.UP:
-                                       if ( event.altKey ) {
-                                               this._toggle( event );
-                                       } else {
-                                               this._move( "prev", event );
-                                       }
-                                       break;
-                               case $.ui.keyCode.DOWN:
-                                       if ( event.altKey ) {
-                                               this._toggle( event );
-                                       } else {
-                                               this._move( "next", event );
-                                       }
-                                       break;
-                               case $.ui.keyCode.SPACE:
-                                       if ( this.isOpen ) {
-                                               this._selectFocusedItem( event );
-                                       } else {
-                                               this._toggle( event );
-                                       }
-                                       break;
-                               case $.ui.keyCode.LEFT:
-                                       this._move( "prev", event );
-                                       break;
-                               case $.ui.keyCode.RIGHT:
-                                       this._move( "next", event );
-                                       break;
-                               case $.ui.keyCode.HOME:
-                               case $.ui.keyCode.PAGE_UP:
-                                       this._move( "first", event );
-                                       break;
-                               case $.ui.keyCode.END:
-                               case $.ui.keyCode.PAGE_DOWN:
-                                       this._move( "last", event );
-                                       break;
-                               default:
-                                       this.menu.trigger( event );
-                                       preventDefault = false;
-                       }
-
-                       if ( preventDefault ) {
-                               event.preventDefault();
-                       }
-               }
-       },
-
-       _selectFocusedItem: function( event ) {
-               var item = this.menuItems.eq( this.focusIndex );
-               if ( !item.hasClass( "ui-state-disabled" ) ) {
-                       this._select( item.data( "ui-selectmenu-item" ), event );
-               }
-       },
-
-       _select: function( item, event ) {
-               var oldIndex = this.element[ 0 ].selectedIndex;
-
-               // Change native select element
-               this.element[ 0 ].selectedIndex = item.index;
-               this._setText( this.buttonText, item.label );
-               this._setAria( item );
-               this._trigger( "select", event, { item: item } );
-
-               if ( item.index !== oldIndex ) {
-                       this._trigger( "change", event, { item: item } );
-               }
-
-               this.close( event );
-       },
-
-       _setAria: function( item ) {
-               var id = this.menuItems.eq( item.index ).attr( "id" );
-
-               this.button.attr({
-                       "aria-labelledby": id,
-                       "aria-activedescendant": id
-               });
-               this.menu.attr( "aria-activedescendant", id );
-       },
-
-       _setOption: function( key, value ) {
-               if ( key === "icons" ) {
-                       this.button.find( "span.ui-icon" )
-                               .removeClass( this.options.icons.button )
-                               .addClass( value.button );
-               }
-
-               this._super( key, value );
-
-               if ( key === "appendTo" ) {
-                       this.menuWrap.appendTo( this._appendTo() );
-               }
-
-               if ( key === "disabled" ) {
-                       this.menuInstance.option( "disabled", value );
-                       this.button
-                               .toggleClass( "ui-state-disabled", value )
-                               .attr( "aria-disabled", value );
-
-                       this.element.prop( "disabled", value );
-                       if ( value ) {
-                               this.button.attr( "tabindex", -1 );
-                               this.close();
-                       } else {
-                               this.button.attr( "tabindex", 0 );
-                       }
-               }
-
-               if ( key === "width" ) {
-                       this._resizeButton();
-               }
-       },
-
-       _appendTo: function() {
-               var element = this.options.appendTo;
-
-               if ( element ) {
-                       element = element.jquery || element.nodeType ?
-                               $( element ) :
-                               this.document.find( element ).eq( 0 );
-               }
-
-               if ( !element || !element[ 0 ] ) {
-                       element = this.element.closest( ".ui-front" );
-               }
-
-               if ( !element.length ) {
-                       element = this.document[ 0 ].body;
-               }
-
-               return element;
-       },
-
-       _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 width = this.options.width;
-
-               if ( !width ) {
-                       width = this.element.show().outerWidth();
-                       this.element.hide();
-               }
-
-               this.button.outerWidth( width );
-       },
-
-       _resizeMenu: function() {
-               this.menu.outerWidth( Math.max(
-                       this.button.outerWidth(),
-
-                       // support: IE10
-                       // IE10 wraps long text (possibly a rounding bug)
-                       // so we add 1px to avoid the wrapping
-                       this.menu.width( "" ).outerWidth() + 1
-               ) );
-       },
-
-       _getCreateOptions: function() {
-               return { disabled: this.element.prop( "disabled" ) };
-       },
-
-       _parseOptions: function( options ) {
-               var data = [];
-               options.each(function( index, item ) {
-                       var option = $( item ),
-                               optgroup = option.parent( "optgroup" );
-                       data.push({
-                               element: option,
-                               index: index,
-                               value: option.val(),
-                               label: option.text(),
-                               optgroup: optgroup.attr( "label" ) || "",
-                               disabled: optgroup.prop( "disabled" ) || option.prop( "disabled" )
-                       });
-               });
-               this.items = data;
-       },
-
-       _destroy: function() {
-               this.menuWrap.remove();
-               this.button.remove();
-               this.element.show();
-               this.element.removeUniqueId();
-               this.label.attr( "for", this.ids.element );
-       }
-});
-
-
-/*!
- * jQuery UI Slider 1.11.3
- * http://jqueryui.com
- *
- * Copyright jQuery Foundation and other contributors
- * Released under the MIT license.
- * http://jquery.org/license
- *
- * http://api.jqueryui.com/slider/
- */
-
-
-var slider = $.widget( "ui.slider", $.ui.mouse, {
-       version: "1.11.3",
-       widgetEventPrefix: "slide",
-
-       options: {
-               animate: false,
-               distance: 0,
-               max: 100,
-               min: 0,
-               orientation: "horizontal",
-               range: false,
-               step: 1,
-               value: 0,
-               values: null,
-
-               // callbacks
-               change: null,
-               slide: null,
-               start: null,
-               stop: null
-       },
-
-       // number of pages in a slider
-       // (how many times can you page up/down to go through the whole range)
-       numPages: 5,
-
-       _create: function() {
-               this._keySliding = false;
-               this._mouseSliding = false;
-               this._animateOff = true;
-               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 = false;
-       },
-
-       _refresh: function() {
-               this._createRange();
-               this._createHandles();
-               this._setupEvents();
-               this._refreshValue();
-       },
-
-       _createHandles: function() {
-               var i, handleCount,
-                       options = this.options,
-                       existingHandles = this.element.find( ".ui-slider-handle" ).addClass( "ui-state-default ui-corner-all" ),
-                       handle = "<span class='ui-slider-handle ui-state-default ui-corner-all' tabindex='0'></span>",
-                       handles = [];
-
-               handleCount = ( options.values && options.values.length ) || 1;
-
-               if ( existingHandles.length > handleCount ) {
-                       existingHandles.slice( handleCount ).remove();
-                       existingHandles = existingHandles.slice( 0, handleCount );
-               }
-
-               for ( i = existingHandles.length; i < handleCount; i++ ) {
-                       handles.push( handle );
-               }
-
-               this.handles = existingHandles.add( $( handles.join( "" ) ).appendTo( this.element ) );
-
-               this.handle = this.handles.eq( 0 );
-
-               this.handles.each(function( i ) {
-                       $( this ).data( "ui-slider-handle-index", i );
-               });
-       },
-
-       _createRange: function() {
-               var options = this.options,
-                       classes = "";
-
-               if ( options.range ) {
-                       if ( options.range === true ) {
-                               if ( !options.values ) {
-                                       options.values = [ this._valueMin(), this._valueMin() ];
-                               } else if ( options.values.length && options.values.length !== 2 ) {
-                                       options.values = [ options.values[0], options.values[0] ];
-                               } else if ( $.isArray( options.values ) ) {
-                                       options.values = options.values.slice(0);
-                               }
-                       }
-
-                       if ( !this.range || !this.range.length ) {
-                               this.range = $( "<div></div>" )
-                                       .appendTo( this.element );
-
-                               classes = "ui-slider-range" +
-                               // note: this isn't the most fittingly semantic framework class for this element,
-                               // but worked best visually with a variety of themes
-                               " ui-widget-header ui-corner-all";
-                       } else {
-                               this.range.removeClass( "ui-slider-range-min ui-slider-range-max" )
-                                       // Handle range switching from true to min/max
-                                       .css({
-                                               "left": "",
-                                               "bottom": ""
-                                       });
-                       }
-
-                       this.range.addClass( classes +
-                               ( ( options.range === "min" || options.range === "max" ) ? " ui-slider-range-" + options.range : "" ) );
-               } else {
-                       if ( 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();
-               if ( 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( event ) {
-               var position, normValue, distance, closestHandle, index, allowed, offset, mouseOverHandle,
-                       that = this,
-                       o = this.options;
-
-               if ( o.disabled ) {
-                       return false;
-               }
-
-               this.elementSize = {
-                       width: this.element.outerWidth(),
-                       height: this.element.outerHeight()
-               };
-               this.elementOffset = this.element.offset();
-
-               position = { x: event.pageX, y: event.pageY };
-               normValue = this._normValueFromMouse( position );
-               distance = this._valueMax() - this._valueMin() + 1;
-               this.handles.each(function( i ) {
-                       var thisDistance = Math.abs( normValue - that.values(i) );
-                       if (( distance > thisDistance ) ||
-                               ( distance === thisDistance &&
-                                       (i === that._lastChangedValue || that.values(i) === o.min ))) {
-                               distance = thisDistance;
-                               closestHandle = $( this );
-                               index = i;
-                       }
-               });
-
-               allowed = this._start( event, index );
-               if ( allowed === false ) {
-                       return false;
-               }
-               this._mouseSliding = true;
-
-               this._handleIndex = index;
-
-               closestHandle
-                       .addClass( "ui-state-active" )
-                       .focus();
-
-               offset = closestHandle.offset();
-               mouseOverHandle = !$( event.target ).parents().addBack().is( ".ui-slider-handle" );
-               this._clickOffset = mouseOverHandle ? { left: 0, top: 0 } : {
-                       left: event.pageX - offset.left - ( closestHandle.width() / 2 ),
-                       top: event.pageY - offset.top -
-                               ( closestHandle.height() / 2 ) -
-                               ( parseInt( closestHandle.css("borderTopWidth"), 10 ) || 0 ) -
-                               ( parseInt( closestHandle.css("borderBottomWidth"), 10 ) || 0) +
-                               ( parseInt( closestHandle.css("marginTop"), 10 ) || 0)
-               };
-
-               if ( !this.handles.hasClass( "ui-state-hover" ) ) {
-                       this._slide( event, index, normValue );
-               }
-               this._animateOff = true;
-               return true;
-       },
-
-       _mouseStart: function() {
-               return true;
-       },
-
-       _mouseDrag: function( event ) {
-               var position = { x: event.pageX, y: event.pageY },
-                       normValue = this._normValueFromMouse( position );
-
-               this._slide( event, this._handleIndex, normValue );
-
-               return false;
-       },
-
-       _mouseStop: function( event ) {
-               this.handles.removeClass( "ui-state-active" );
-               this._mouseSliding = false;
-
-               this._stop( event, this._handleIndex );
-               this._change( event, this._handleIndex );
-
-               this._handleIndex = null;
-               this._clickOffset = null;
-               this._animateOff = false;
-
-               return false;
-       },
-
-       _detectOrientation: function() {
-               this.orientation = ( this.options.orientation === "vertical" ) ? "vertical" : "horizontal";
-       },
-
-       _normValueFromMouse: function( position ) {
-               var pixelTotal,
-                       pixelMouse,
-                       percentMouse,
-                       valueTotal,
-                       valueMouse;
-
-               if ( this.orientation === "horizontal" ) {
-                       pixelTotal = this.elementSize.width;
-                       pixelMouse = position.x - this.elementOffset.left - ( this._clickOffset ? this._clickOffset.left : 0 );
-               } else {
-                       pixelTotal = this.elementSize.height;
-                       pixelMouse = position.y - this.elementOffset.top - ( this._clickOffset ? this._clickOffset.top : 0 );
-               }
-
-               percentMouse = ( pixelMouse / pixelTotal );
-               if ( percentMouse > 1 ) {
-                       percentMouse = 1;
-               }
-               if ( percentMouse < 0 ) {
-                       percentMouse = 0;
-               }
-               if ( this.orientation === "vertical" ) {
-                       percentMouse = 1 - percentMouse;
-               }
-
-               valueTotal = this._valueMax() - this._valueMin();
-               valueMouse = this._valueMin() + percentMouse * valueTotal;
-
-               return this._trimAlignValue( valueMouse );
-       },
-
-       _start: function( event, index ) {
-               var uiHash = {
-                       handle: this.handles[ index ],
-                       value: this.value()
-               };
-               if ( this.options.values && this.options.values.length ) {
-                       uiHash.value = this.values( index );
-                       uiHash.values = this.values();
-               }
-               return this._trigger( "start", event, uiHash );
-       },
-
-       _slide: function( event, index, newVal ) {
-               var otherVal,
-                       newValues,
-                       allowed;
-
-               if ( this.options.values && this.options.values.length ) {
-                       otherVal = this.values( index ? 0 : 1 );
-
-                       if ( ( this.options.values.length === 2 && this.options.range === true ) &&
-                                       ( ( index === 0 && newVal > otherVal) || ( index === 1 && newVal < otherVal ) )
-                               ) {
-                               newVal = otherVal;
-                       }
-
-                       if ( newVal !== this.values( index ) ) {
-                               newValues = this.values();
-                               newValues[ index ] = newVal;
-                               // A slide can be canceled by returning false from the slide callback
-                               allowed = this._trigger( "slide", event, {
-                                       handle: this.handles[ index ],
-                                       value: newVal,
-                                       values: newValues
-                               } );
-                               otherVal = this.values( index ? 0 : 1 );
-                               if ( allowed !== false ) {
-                                       this.values( index, newVal );
-                               }
-                       }
-               } else {
-                       if ( newVal !== this.value() ) {
-                               // A slide can be canceled by returning false from the slide callback
-                               allowed = this._trigger( "slide", event, {
-                                       handle: this.handles[ index ],
-                                       value: newVal
-                               } );
-                               if ( allowed !== false ) {
-                                       this.value( newVal );
-                               }
-                       }
-               }
-       },
-
-       _stop: function( event, index ) {
-               var uiHash = {
-                       handle: this.handles[ index ],
-                       value: this.value()
-               };
-               if ( this.options.values && this.options.values.length ) {
-                       uiHash.value = this.values( index );
-                       uiHash.values = this.values();
-               }
-
-               this._trigger( "stop", event, uiHash );
-       },
-
-       _change: function( event, index ) {
-               if ( !this._keySliding && !this._mouseSliding ) {
-                       var uiHash = {
-                               handle: this.handles[ index ],
-                               value: this.value()
-                       };
-                       if ( this.options.values && this.options.values.length ) {
-                               uiHash.value = this.values( index );
-                               uiHash.values = this.values();
-                       }
-
-                       //store the last changed value index for reference when handles overlap
-                       this._lastChangedValue = index;
-
-                       this._trigger( "change", event, uiHash );
-               }
-       },
-
-       value: function( newValue ) {
-               if ( arguments.length ) {
-                       this.options.value = this._trimAlignValue( newValue );
-                       this._refreshValue();
-                       this._change( null, 0 );
-                       return;
-               }
-
-               return this._value();
-       },
-
-       values: function( index, newValue ) {
-               var vals,
-                       newValues,
-                       i;
-
-               if ( arguments.length > 1 ) {
-                       this.options.values[ index ] = this._trimAlignValue( newValue );
-                       this._refreshValue();
-                       this._change( null, index );
-                       return;
-               }
-
-               if ( arguments.length ) {
-                       if ( $.isArray( arguments[ 0 ] ) ) {
-                               vals = this.options.values;
-                               newValues = arguments[ 0 ];
-                               for ( i = 0; i < vals.length; i += 1 ) {
-                                       vals[ i ] = this._trimAlignValue( newValues[ i ] );
-                                       this._change( null, i );
-                               }
-                               this._refreshValue();
-                       } else {
-                               if ( this.options.values && this.options.values.length ) {
-                                       return this._values( index );
-                               } else {
-                                       return this.value();
-                               }
-                       }
-               } else {
-                       return this._values();
-               }
-       },
-
-       _setOption: function( key, value ) {
-               var i,
-                       valsLength = 0;
-
-               if ( key === "range" && this.options.range === true ) {
-                       if ( value === "min" ) {
-                               this.options.value = this._values( 0 );
-                               this.options.values = null;
-                       } else if ( value === "max" ) {
-                               this.options.value = this._values( this.options.values.length - 1 );
-                               this.options.values = null;
-                       }
-               }
-
-               if ( $.isArray( this.options.values ) ) {
-                       valsLength = this.options.values.length;
-               }
-
-               if ( key === "disabled" ) {
-                       this.element.toggleClass( "ui-state-disabled", !!value );
-               }
-
-               this._super( key, value );
-
-               switch ( key ) {
-                       case "orientation":
-                               this._detectOrientation();
-                               this.element
-                                       .removeClass( "ui-slider-horizontal ui-slider-vertical" )
-                                       .addClass( "ui-slider-" + this.orientation );
-                               this._refreshValue();
-
-                               // Reset positioning from previous orientation
-                               this.handles.css( value === "horizontal" ? "bottom" : "left", "" );
-                               break;
-                       case "value":
-                               this._animateOff = true;
-                               this._refreshValue();
-                               this._change( null, 0 );
-                               this._animateOff = false;
-                               break;
-                       case "values":
-                               this._animateOff = true;
-                               this._refreshValue();
-                               for ( i = 0; i < valsLength; i += 1 ) {
-                                       this._change( null, i );
-                               }
-                               this._animateOff = false;
-                               break;
-                       case "step":
-                       case "min":
-                       case "max":
-                               this._animateOff = true;
-                               this._calculateNewMax();
-                               this._refreshValue();
-                               this._animateOff = false;
-                               break;
-                       case "range":
-                               this._animateOff = true;
-                               this._refresh();
-                               this._animateOff = false;
-                               break;
-               }
-       },
-
-       //internal value getter
-       // _value() returns value trimmed by min and max, aligned by step
-       _value: function() {
-               var val = this.options.value;
-               val = this._trimAlignValue( val );
-
-               return val;
-       },
-
-       //internal values getter
-       // _values() returns array of values trimmed by min and max, aligned by step
-       // _values( index ) returns single value trimmed by min and max, aligned by step
-       _values: function( index ) {
-               var val,
-                       vals,
-                       i;
-
-               if ( arguments.length ) {
-                       val = this.options.values[ index ];
-                       val = this._trimAlignValue( val );
-
-                       return val;
-               } else if ( this.options.values && this.options.values.length ) {
-                       // .slice() creates a copy of the array
-                       // this copy gets trimmed by min and max and then returned
-                       vals = this.options.values.slice();
-                       for ( i = 0; i < vals.length; i += 1) {
-                               vals[ i ] = this._trimAlignValue( vals[ i ] );
-                       }
-
-                       return vals;
-               } else {
-                       return [];
-               }
-       },
-
-       // returns the step-aligned value that val is closest to, between (inclusive) min and max
-       _trimAlignValue: function( val ) {
-               if ( val <= this._valueMin() ) {
-                       return this._valueMin();
-               }
-               if ( val >= this._valueMax() ) {
-                       return this._valueMax();
-               }
-               var step = ( this.options.step > 0 ) ? this.options.step : 1,
-                       valModStep = (val - this._valueMin()) % step,
-                       alignValue = val - valModStep;
-
-               if ( Math.abs(valModStep) * 2 >= step ) {
-                       alignValue += ( valModStep > 0 ) ? step : ( -step );
-               }
-
-               // Since JavaScript has problems with large floats, round
-               // the final value to 5 digits after the decimal point (see #4124)
-               return parseFloat( alignValue.toFixed(5) );
-       },
-
-       _calculateNewMax: function() {
-               var max = this.options.max,
-                       min = this._valueMin(),
-                       step = this.options.step,
-                       aboveMin = Math.floor( ( max - min ) / step ) * step;
-               max = aboveMin + min;
-               this.max = parseFloat( max.toFixed( this._precision() ) );
-       },
-
-       _precision: function() {
-               var precision = this._precisionOf( this.options.step );
-               if ( this.options.min !== null ) {
-                       precision = Math.max( precision, this._precisionOf( this.options.min ) );
-               }
-               return precision;
-       },
-
-       _precisionOf: function( num ) {
-               var str = num.toString(),
-                       decimal = str.indexOf( "." );
-               return decimal === -1 ? 0 : str.length - decimal - 1;
-       },
-
-       _valueMin: function() {
-               return this.options.min;
-       },
-
-       _valueMax: function() {
-               return this.max;
-       },
-
-       _refreshValue: function() {
-               var lastValPercent, valPercent, value, valueMin, valueMax,
-                       oRange = this.options.range,
-                       o = this.options,
-                       that = this,
-                       animate = ( !this._animateOff ) ? o.animate : false,
-                       _set = {};
-
-               if ( this.options.values && this.options.values.length ) {
-                       this.handles.each(function( i ) {
-                               valPercent = ( that.values(i) - that._valueMin() ) / ( that._valueMax() - that._valueMin() ) * 100;
-                               _set[ that.orientation === "horizontal" ? "left" : "bottom" ] = valPercent + "%";
-                               $( this ).stop( 1, 1 )[ animate ? "animate" : "css" ]( _set, o.animate );
-                               if ( that.options.range === true ) {
-                                       if ( that.orientation === "horizontal" ) {
-                                               if ( i === 0 ) {
-                                                       that.range.stop( 1, 1 )[ animate ? "animate" : "css" ]( { left: valPercent + "%" }, o.animate );
-                                               }
-                                               if ( i === 1 ) {
-                                                       that.range[ animate ? "animate" : "css" ]( { width: ( valPercent - lastValPercent ) + "%" }, { queue: false, duration: o.animate } );
-                                               }
-                                       } else {
-                                               if ( i === 0 ) {
-                                                       that.range.stop( 1, 1 )[ animate ? "animate" : "css" ]( { bottom: ( valPercent ) + "%" }, o.animate );
-                                               }
-                                               if ( i === 1 ) {
-                                                       that.range[ animate ? "animate" : "css" ]( { height: ( valPercent - lastValPercent ) + "%" }, { queue: false, duration: o.animate } );
-                                               }
-                                       }
-                               }
-                               lastValPercent = valPercent;
-                       });
-               } else {
-                       value = this.value();
-                       valueMin = this._valueMin();
-                       valueMax = this._valueMax();
-                       valPercent = ( valueMax !== valueMin ) ?
-                                       ( value - valueMin ) / ( valueMax - valueMin ) * 100 :
-                                       0;
-                       _set[ this.orientation === "horizontal" ? "left" : "bottom" ] = valPercent + "%";
-                       this.handle.stop( 1, 1 )[ animate ? "animate" : "css" ]( _set, o.animate );
-
-                       if ( oRange === "min" && this.orientation === "horizontal" ) {
-                               this.range.stop( 1, 1 )[ animate ? "animate" : "css" ]( { width: valPercent + "%" }, o.animate );
-                       }
-                       if ( oRange === "max" && this.orientation === "horizontal" ) {
-                               this.range[ animate ? "animate" : "css" ]( { width: ( 100 - valPercent ) + "%" }, { queue: false, duration: o.animate } );
-                       }
-                       if ( oRange === "min" && this.orientation === "vertical" ) {
-                               this.range.stop( 1, 1 )[ animate ? "animate" : "css" ]( { height: valPercent + "%" }, o.animate );
-                       }
-                       if ( oRange === "max" && this.orientation === "vertical" ) {
-                               this.range[ animate ? "animate" : "css" ]( { height: ( 100 - valPercent ) + "%" }, { queue: false, duration: o.animate } );
-                       }
-               }
-       },
-
-       _handleEvents: {
-               keydown: function( event ) {
-                       var allowed, curVal, newVal, step,
-                               index = $( event.target ).data( "ui-slider-handle-index" );
-
-                       switch ( event.keyCode ) {
-                               case $.ui.keyCode.HOME:
-                               case $.ui.keyCode.END:
-                               case $.ui.keyCode.PAGE_UP:
-                               case $.ui.keyCode.PAGE_DOWN:
-                               case $.ui.keyCode.UP:
-                               case $.ui.keyCode.RIGHT:
-                               case $.ui.keyCode.DOWN:
-                               case $.ui.keyCode.LEFT:
-                                       event.preventDefault();
-                                       if ( !this._keySliding ) {
-                                               this._keySliding = true;
-                                               $( event.target ).addClass( "ui-state-active" );
-                                               allowed = this._start( event, index );
-                                               if ( allowed === false ) {
-                                                       return;
-                                               }
-                                       }
-                                       break;
-                       }
-
-                       step = this.options.step;
-                       if ( this.options.values && this.options.values.length ) {
-                               curVal = newVal = this.values( index );
-                       } else {
-                               curVal = newVal = this.value();
-                       }
-
-                       switch ( event.keyCode ) {
-                               case $.ui.keyCode.HOME:
-                                       newVal = this._valueMin();
-                                       break;
-                               case $.ui.keyCode.END:
-                                       newVal = this._valueMax();
-                                       break;
-                               case $.ui.keyCode.PAGE_UP:
-                                       newVal = this._trimAlignValue(
-                                               curVal + ( ( this._valueMax() - this._valueMin() ) / this.numPages )
-                                       );
-                                       break;
-                               case $.ui.keyCode.PAGE_DOWN:
-                                       newVal = this._trimAlignValue(
-                                               curVal - ( (this._valueMax() - this._valueMin()) / this.numPages ) );
-                                       break;
-                               case $.ui.keyCode.UP:
-                               case $.ui.keyCode.RIGHT:
-                                       if ( curVal === this._valueMax() ) {
-                                               return;
-                                       }
-                                       newVal = this._trimAlignValue( curVal + step );
-                                       break;
-                               case $.ui.keyCode.DOWN:
-                               case $.ui.keyCode.LEFT:
-                                       if ( curVal === this._valueMin() ) {
-                                               return;
-                                       }
-                                       newVal = this._trimAlignValue( curVal - step );
-                                       break;
-                       }
-
-                       this._slide( event, index, newVal );
-               },
-               keyup: function( event ) {
-                       var index = $( event.target ).data( "ui-slider-handle-index" );
-
-                       if ( this._keySliding ) {
-                               this._keySliding = false;
-                               this._stop( event, index );
-                               this._change( event, index );
-                               $( event.target ).removeClass( "ui-state-active" );
-                       }
-               }
-       }
-});
-
-
-/*!
- * jQuery UI Spinner 1.11.3
- * http://jqueryui.com
- *
- * Copyright jQuery Foundation and other contributors
- * Released under the MIT license.
- * http://jquery.org/license
- *
- * http://api.jqueryui.com/spinner/
- */
-
-
-function spinner_modifier( fn ) {
-       return function() {
-               var previous = this.element.val();
-               fn.apply( this, arguments );
-               this._refresh();
-               if ( previous !== this.element.val() ) {
-                       this._trigger( "change" );
-               }
-       };
-}
-
-var spinner = $.widget( "ui.spinner", {
-       version: "1.11.3",
-       defaultElement: "<input>",
-       widgetEventPrefix: "spin",
-       options: {
-               culture: null,
-               icons: {
-                       down: "ui-icon-triangle-1-s",
-                       up: "ui-icon-triangle-1-n"
-               },
-               incremental: true,
-               max: null,
-               min: null,
-               numberFormat: null,
-               page: 10,
-               step: 1,
-
-               change: null,
-               spin: null,
-               start: null,
-               stop: null
-       },
-
-       _create: function() {
-               // handle string values that need to be parsed
-               this._setOption( "max", this.options.max );
-               this._setOption( "min", this.options.min );
-               this._setOption( "step", this.options.step );
-
-               // Only format if there is a value, prevents the field from being marked
-               // as invalid in Firefox, see #9573.
-               if ( this.value() !== "" ) {
-                       // Format the value, but don't constrain.
-                       this._value( this.element.val(), true );
-               }
-
-               this._draw();
-               this._on( this._events );
-               this._refresh();
-
-               // turning off autocomplete prevents the browser from remembering the
-               // value when navigating through history, so we re-enable autocomplete
-               // if the page is unloaded before the widget is destroyed. #7790
-               this._on( this.window, {
-                       beforeunload: function() {
-                               this.element.removeAttr( "autocomplete" );
-                       }
-               });
-       },
-
-       _getCreateOptions: function() {
-               var options = {},
-                       element = this.element;
-
-               $.each( [ "min", "max", "step" ], function( i, option ) {
-                       var value = element.attr( option );
-                       if ( value !== undefined && value.length ) {
-                               options[ option ] = value;
-                       }
-               });
-
-               return options;
-       },
-
-       _events: {
-               keydown: function( event ) {
-                       if ( this._start( event ) && this._keydown( event ) ) {
-                               event.preventDefault();
-                       }
-               },
-               keyup: "_stop",
-               focus: function() {
-                       this.previous = this.element.val();
-               },
-               blur: function( event ) {
-                       if ( this.cancelBlur ) {
-                               delete this.cancelBlur;
-                               return;
-                       }
-
-                       this._stop();
-                       this._refresh();
-                       if ( this.previous !== this.element.val() ) {
-                               this._trigger( "change", event );
-                       }
-               },
-               mousewheel: function( event, delta ) {
-                       if ( !delta ) {
-                               return;
-                       }
-                       if ( !this.spinning && !this._start( event ) ) {
-                               return false;
-                       }
-
-                       this._spin( (delta > 0 ? 1 : -1) * this.options.step, event );
-                       clearTimeout( this.mousewheelTimer );
-                       this.mousewheelTimer = this._delay(function() {
-                               if ( this.spinning ) {
-                                       this._stop( event );
-                               }
-                       }, 100 );
-                       event.preventDefault();
-               },
-               "mousedown .ui-spinner-button": function( event ) {
-                       var previous;
-
-                       // We never want the buttons to have focus; whenever the user is
-                       // interacting with the spinner, the focus should be on the input.
-                       // If the input is focused then this.previous is properly set from
-                       // when the input first received focus. If the input is not focused
-                       // then we need to set this.previous based on the value before spinning.
-                       previous = this.element[0] === this.document[0].activeElement ?
-                               this.previous : this.element.val();
-                       function checkFocus() {
-                               var isActive = this.element[0] === this.document[0].activeElement;
-                               if ( !isActive ) {
-                                       this.element.focus();
-                                       this.previous = previous;
-                                       // support: IE
-                                       // IE sets focus asynchronously, so we need to check if focus
-                                       // moved off of the input because the user clicked on the button.
-                                       this._delay(function() {
-                                               this.previous = previous;
-                                       });
-                               }
-                       }
-
-                       // ensure focus is on (or stays on) the text field
-                       event.preventDefault();
-                       checkFocus.call( this );
-
-                       // support: IE
-                       // IE doesn't prevent moving focus even with event.preventDefault()
-                       // so we set a flag to know when we should ignore the blur event
-                       // and check (again) if focus moved off of the input.
-                       this.cancelBlur = true;
-                       this._delay(function() {
-                               delete this.cancelBlur;
-                               checkFocus.call( this );
-                       });
-
-                       if ( this._start( event ) === false ) {
-                               return;
-                       }
-
-                       this._repeat( null, $( event.currentTarget ).hasClass( "ui-spinner-up" ) ? 1 : -1, event );
-               },
-               "mouseup .ui-spinner-button": "_stop",
-               "mouseenter .ui-spinner-button": function( event ) {
-                       // button will add ui-state-active if mouse was down while mouseleave and kept down
-                       if ( !$( event.currentTarget ).hasClass( "ui-state-active" ) ) {
-                               return;
-                       }
-
-                       if ( this._start( event ) === false ) {
-                               return false;
-                       }
-                       this._repeat( null, $( event.currentTarget ).hasClass( "ui-spinner-up" ) ? 1 : -1, event );
-               },
-               // TODO: do we really want to consider this a stop?
-               // shouldn't we just stop the repeater and wait until mouseup before
-               // we trigger the stop event?
-               "mouseleave .ui-spinner-button": "_stop"
-       },
-
-       _draw: function() {
-               var uiSpinner = this.uiSpinner = this.element
-                       .addClass( "ui-spinner-input" )
-                       .attr( "autocomplete", "off" )
-                       .wrap( this._uiSpinnerHtml() )
-                       .parent()
-                               // add buttons
-                               .append( this._buttonHtml() );
-
-               this.element.attr( "role", "spinbutton" );
-
-               // button bindings
-               this.buttons = uiSpinner.find( ".ui-spinner-button" )
-                       .attr( "tabIndex", -1 )
-                       .button()
-                       .removeClass( "ui-corner-all" );
-
-               // IE 6 doesn't understand height: 50% for the buttons
-               // unless the wrapper has an explicit height
-               if ( this.buttons.height() > Math.ceil( uiSpinner.height() * 0.5 ) &&
-                               uiSpinner.height() > 0 ) {
-                       uiSpinner.height( uiSpinner.height() );
-               }
-
-               // disable spinner if element was already disabled
-               if ( this.options.disabled ) {
-                       this.disable();
-               }
-       },
-
-       _keydown: function( event ) {
-               var options = this.options,
-                       keyCode = $.ui.keyCode;
-
-               switch ( event.keyCode ) {
-               case keyCode.UP:
-                       this._repeat( null, 1, event );
-                       return true;
-               case keyCode.DOWN:
-                       this._repeat( null, -1, event );
-                       return true;
-               case keyCode.PAGE_UP:
-                       this._repeat( null, options.page, event );
-                       return true;
-               case keyCode.PAGE_DOWN:
-                       this._repeat( null, -options.page, event );
-                       return true;
-               }
-
-               return false;
-       },
-
-       _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( event ) {
-               if ( !this.spinning && this._trigger( "start", event ) === false ) {
-                       return false;
-               }
-
-               if ( !this.counter ) {
-                       this.counter = 1;
-               }
-               this.spinning = true;
-               return true;
-       },
-
-       _repeat: function( i, steps, event ) {
-               i = i || 500;
-
-               clearTimeout( this.timer );
-               this.timer = this._delay(function() {
-                       this._repeat( 40, steps, event );
-               }, i );
-
-               this._spin( steps * this.options.step, event );
-       },
-
-       _spin: function( step, event ) {
-               var value = this.value() || 0;
-
-               if ( !this.counter ) {
-                       this.counter = 1;
-               }
-
-               value = this._adjustValue( value + step * this._increment( this.counter ) );
-
-               if ( !this.spinning || this._trigger( "spin", event, { value: value } ) !== false) {
-                       this._value( value );
-                       this.counter++;
-               }
-       },
-
-       _increment: function( i ) {
-               var incremental = this.options.incremental;
-
-               if ( incremental ) {
-                       return $.isFunction( incremental ) ?
-                               incremental( i ) :
-                               Math.floor( i * i * i / 50000 - i * i / 500 + 17 * i / 200 + 1 );
-               }
-
-               return 1;
-       },
-
-       _precision: function() {
-               var precision = this._precisionOf( this.options.step );
-               if ( this.options.min !== null ) {
-                       precision = Math.max( precision, this._precisionOf( this.options.min ) );
-               }
-               return precision;
-       },
-
-       _precisionOf: function( num ) {
-               var str = num.toString(),
-                       decimal = str.indexOf( "." );
-               return decimal === -1 ? 0 : str.length - decimal - 1;
-       },
-
-       _adjustValue: function( value ) {
-               var base, aboveMin,
-                       options = this.options;
-
-               // make sure we're at a valid step
-               // - find out where we are relative to the base (min or 0)
-               base = options.min !== null ? options.min : 0;
-               aboveMin = value - base;
-               // - round to the nearest step
-               aboveMin = Math.round(aboveMin / options.step) * options.step;
-               // - rounding is based on 0, so adjust back to our base
-               value = base + aboveMin;
-
-               // fix precision from bad JS floating point math
-               value = parseFloat( value.toFixed( this._precision() ) );
-
-               // clamp the value
-               if ( options.max !== null && value > options.max) {
-                       return options.max;
-               }
-               if ( options.min !== null && value < options.min ) {
-                       return options.min;
-               }
-
-               return value;
-       },
-
-       _stop: function( event ) {
-               if ( !this.spinning ) {
-                       return;
-               }
-
-               clearTimeout( this.timer );
-               clearTimeout( this.mousewheelTimer );
-               this.counter = 0;
-               this.spinning = false;
-               this._trigger( "stop", event );
-       },
-
-       _setOption: function( key, value ) {
-               if ( key === "culture" || key === "numberFormat" ) {
-                       var prevValue = this._parse( this.element.val() );
-                       this.options[ key ] = value;
-                       this.element.val( this._format( prevValue ) );
-                       return;
-               }
-
-               if ( key === "max" || key === "min" || key === "step" ) {
-                       if ( typeof value === "string" ) {
-                               value = this._parse( value );
-                       }
-               }
-               if ( key === "icons" ) {
-                       this.buttons.first().find( ".ui-icon" )
-                               .removeClass( this.options.icons.up )
-                               .addClass( value.up );
-                       this.buttons.last().find( ".ui-icon" )
-                               .removeClass( this.options.icons.down )
-                               .addClass( value.down );
-               }
-
-               this._super( key, value );
-
-               if ( key === "disabled" ) {
-                       this.widget().toggleClass( "ui-state-disabled", !!value );
-                       this.element.prop( "disabled", !!value );
-                       this.buttons.button( value ? "disable" : "enable" );
-               }
-       },
-
-       _setOptions: spinner_modifier(function( options ) {
-               this._super( options );
-       }),
-
-       _parse: function( val ) {
-               if ( typeof val === "string" && val !== "" ) {
-                       val = window.Globalize && this.options.numberFormat ?
-                               Globalize.parseFloat( val, 10, this.options.culture ) : +val;
-               }
-               return val === "" || isNaN( val ) ? null : val;
-       },
-
-       _format: function( value ) {
-               if ( value === "" ) {
-                       return "";
-               }
-               return window.Globalize && this.options.numberFormat ?
-                       Globalize.format( value, this.options.numberFormat, this.options.culture ) :
-                       value;
-       },
-
-       _refresh: function() {
-               this.element.attr({
-                       "aria-valuemin": this.options.min,
-                       "aria-valuemax": this.options.max,
-                       // TODO: what should we do with values that can't be parsed?
-                       "aria-valuenow": this._parse( this.element.val() )
-               });
-       },
-
-       isValid: function() {
-               var value = this.value();
-
-               // null is invalid
-               if ( value === null ) {
-                       return false;
-               }
-
-               // if value gets adjusted, it's invalid
-               return value === this._adjustValue( value );
-       },
-
-       // update the value without triggering change
-       _value: function( value, allowAny ) {
-               var parsed;
-               if ( value !== "" ) {
-                       parsed = this._parse( value );
-                       if ( parsed !== null ) {
-                               if ( !allowAny ) {
-                                       parsed = this._adjustValue( parsed );
-                               }
-                               value = this._format( parsed );
-                       }
-               }
-               this.element.val( value );
-               this._refresh();
-       },
-
-       _destroy: function() {
-               this.element
-                       .removeClass( "ui-spinner-input" )
-                       .prop( "disabled", false )
-                       .removeAttr( "autocomplete" )
-                       .removeAttr( "role" )
-                       .removeAttr( "aria-valuemin" )
-                       .removeAttr( "aria-valuemax" )
-                       .removeAttr( "aria-valuenow" );
-               this.uiSpinner.replaceWith( this.element );
-       },
-
-       stepUp: spinner_modifier(function( steps ) {
-               this._stepUp( steps );
-       }),
-       _stepUp: function( steps ) {
-               if ( this._start() ) {
-                       this._spin( (steps || 1) * this.options.step );
-                       this._stop();
-               }
-       },
-
-       stepDown: spinner_modifier(function( steps ) {
-               this._stepDown( steps );
-       }),
-       _stepDown: function( steps ) {
-               if ( this._start() ) {
-                       this._spin( (steps || 1) * -this.options.step );
-                       this._stop();
-               }
-       },
-
-       pageUp: spinner_modifier(function( pages ) {
-               this._stepUp( (pages || 1) * this.options.page );
-       }),
-
-       pageDown: spinner_modifier(function( pages ) {
-               this._stepDown( (pages || 1) * this.options.page );
-       }),
-
-       value: function( newVal ) {
-               if ( !arguments.length ) {
-                       return this._parse( this.element.val() );
-               }
-               spinner_modifier( this._value ).call( this, newVal );
-       },
-
-       widget: function() {
-               return this.uiSpinner;
-       }
-});
-
-
-/*!
- * jQuery UI Tabs 1.11.3
- * http://jqueryui.com
- *
- * Copyright jQuery Foundation and other contributors
- * Released under the MIT license.
- * http://jquery.org/license
- *
- * http://api.jqueryui.com/tabs/
- */
-
-
-var tabs = $.widget( "ui.tabs", {
-       version: "1.11.3",
-       delay: 300,
-       options: {
-               active: null,
-               collapsible: false,
-               event: "click",
-               heightStyle: "content",
-               hide: null,
-               show: null,
-
-               // callbacks
-               activate: null,
-               beforeActivate: null,
-               beforeLoad: null,
-               load: null
-       },
-
-       _isLocal: (function() {
-               var rhash = /#.*$/;
-
-               return function( anchor ) {
-                       var anchorUrl, locationUrl;
-
-                       // support: IE7
-                       // IE7 doesn't normalize the href property when set via script (#9317)
-                       anchor = anchor.cloneNode( false );
-
-                       anchorUrl = anchor.href.replace( rhash, "" );
-                       locationUrl = location.href.replace( rhash, "" );
-
-                       // decoding may throw an error if the URL isn't UTF-8 (#9518)
-                       try {
-                               anchorUrl = decodeURIComponent( anchorUrl );
-                       } catch ( error ) {}
-                       try {
-                               locationUrl = decodeURIComponent( locationUrl );
-                       } catch ( error ) {}
-
-                       return anchor.hash.length > 1 && anchorUrl === locationUrl;
-               };
-       })(),
-
-       _create: function() {
-               var that = this,
-                       options = this.options;
-
-               this.running = false;
-
-               this.element
-                       .addClass( "ui-tabs ui-widget ui-widget-content ui-corner-all" )
-                       .toggleClass( "ui-tabs-collapsible", options.collapsible );
-
-               this._processTabs();
-               options.active = this._initialActive();
-
-               // Take disabling tabs via class attribute from HTML
-               // into account and update option properly.
-               if ( $.isArray( options.disabled ) ) {
-                       options.disabled = $.unique( options.disabled.concat(
-                               $.map( this.tabs.filter( ".ui-state-disabled" ), function( li ) {
-                                       return that.tabs.index( li );
-                               })
-                       ) ).sort();
-               }
-
-               // check for length avoids error when initializing empty list
-               if ( this.options.active !== false && this.anchors.length ) {
-                       this.active = this._findActive( options.active );
-               } else {
-                       this.active = $();
-               }
-
-               this._refresh();
-
-               if ( this.active.length ) {
-                       this.load( options.active );
-               }
-       },
-
-       _initialActive: function() {
-               var active = this.options.active,
-                       collapsible = this.options.collapsible,
-                       locationHash = location.hash.substring( 1 );
-
-               if ( active === null ) {
-                       // check the fragment identifier in the URL
-                       if ( locationHash ) {
-                               this.tabs.each(function( i, tab ) {
-                                       if ( $( tab ).attr( "aria-controls" ) === locationHash ) {
-                                               active = i;
-                                               return false;
-                                       }
-                               });
-                       }
-
-                       // check for a tab marked active via a class
-                       if ( active === null ) {
-                               active = this.tabs.index( this.tabs.filter( ".ui-tabs-active" ) );
-                       }
-
-                       // no active tab, set to false
-                       if ( active === null || active === -1 ) {
-                               active = this.tabs.length ? 0 : false;
-                       }
-               }
-
-               // handle numbers: negative, out of range
-               if ( active !== false ) {
-                       active = this.tabs.index( this.tabs.eq( active ) );
-                       if ( active === -1 ) {
-                               active = collapsible ? false : 0;
-                       }
-               }
-
-               // don't allow collapsible: false and active: false
-               if ( !collapsible && active === false && this.anchors.length ) {
-                       active = 0;
-               }
-
-               return active;
-       },
-
-       _getCreateEventData: function() {
-               return {
-                       tab: this.active,
-                       panel: !this.active.length ? $() : this._getPanelForTab( this.active )
-               };
-       },
-
-       _tabKeydown: function( event ) {
-               var focusedTab = $( this.document[0].activeElement ).closest( "li" ),
-                       selectedIndex = this.tabs.index( focusedTab ),
-                       goingForward = true;
-
-               if ( this._handlePageNav( event ) ) {
-                       return;
-               }
-
-               switch ( event.keyCode ) {
-                       case $.ui.keyCode.RIGHT:
-                       case $.ui.keyCode.DOWN:
-                               selectedIndex++;
-                               break;
-                       case $.ui.keyCode.UP:
-                       case $.ui.keyCode.LEFT:
-                               goingForward = false;
-                               selectedIndex--;
-                               break;
-                       case $.ui.keyCode.END:
-                               selectedIndex = this.anchors.length - 1;
-                               break;
-                       case $.ui.keyCode.HOME:
-                               selectedIndex = 0;
-                               break;
-                       case $.ui.keyCode.SPACE:
-                               // Activate only, no collapsing
-                               event.preventDefault();
-                               clearTimeout( this.activating );
-                               this._activate( selectedIndex );
-                               return;
-                       case $.ui.keyCode.ENTER:
-                               // Toggle (cancel delayed activation, allow collapsing)
-                               event.preventDefault();
-                               clearTimeout( this.activating );
-                               // Determine if we should collapse or activate
-                               this._activate( selectedIndex === this.options.active ? false : selectedIndex );
-                               return;
-                       default:
-                               return;
-               }
-
-               // Focus the appropriate tab, based on which key was pressed
-               event.preventDefault();
-               clearTimeout( this.activating );
-               selectedIndex = this._focusNextTab( selectedIndex, goingForward );
-
-               // Navigating with control/command key will prevent automatic activation
-               if ( !event.ctrlKey && !event.metaKey ) {
-
-                       // Update aria-selected immediately so that AT think the tab is already selected.
-                       // Otherwise AT may confuse the user by stating that they need to activate the tab,
-                       // but the tab will already be activated by the time the announcement finishes.
-                       focusedTab.attr( "aria-selected", "false" );
-                       this.tabs.eq( selectedIndex ).attr( "aria-selected", "true" );
-
-                       this.activating = this._delay(function() {
-                               this.option( "active", selectedIndex );
-                       }, this.delay );
-               }
-       },
-
-       _panelKeydown: function( event ) {
-               if ( this._handlePageNav( event ) ) {
-                       return;
-               }
-
-               // Ctrl+up moves focus to the current tab
-               if ( event.ctrlKey && event.keyCode === $.ui.keyCode.UP ) {
-                       event.preventDefault();
-                       this.active.focus();
-               }
-       },
-
-       // Alt+page up/down moves focus to the previous/next tab (and activates)
-       _handlePageNav: function( event ) {
-               if ( event.altKey && event.keyCode === $.ui.keyCode.PAGE_UP ) {
-                       this._activate( this._focusNextTab( this.options.active - 1, false ) );
-                       return true;
-               }
-               if ( event.altKey && event.keyCode === $.ui.keyCode.PAGE_DOWN ) {
-                       this._activate( this._focusNextTab( this.options.active + 1, true ) );
-                       return true;
-               }
-       },
-
-       _findNextTab: function( index, goingForward ) {
-               var lastTabIndex = this.tabs.length - 1;
-
-               function constrain() {
-                       if ( index > lastTabIndex ) {
-                               index = 0;
-                       }
-                       if ( index < 0 ) {
-                               index = lastTabIndex;
-                       }
-                       return index;
-               }
-
-               while ( $.inArray( constrain(), this.options.disabled ) !== -1 ) {
-                       index = goingForward ? index + 1 : index - 1;
-               }
-
-               return index;
-       },
-
-       _focusNextTab: function( index, goingForward ) {
-               index = this._findNextTab( index, goingForward );
-               this.tabs.eq( index ).focus();
-               return index;
-       },
-
-       _setOption: function( key, value ) {
-               if ( key === "active" ) {
-                       // _activate() will handle invalid values and update this.options
-                       this._activate( value );
-                       return;
-               }
-
-               if ( key === "disabled" ) {
-                       // don't use the widget factory's disabled handling
-                       this._setupDisabled( value );
-                       return;
-               }
-
-               this._super( key, value);
-
-               if ( key === "collapsible" ) {
-                       this.element.toggleClass( "ui-tabs-collapsible", value );
-                       // Setting collapsible: false while collapsed; open first panel
-                       if ( !value && this.options.active === false ) {
-                               this._activate( 0 );
-                       }
-               }
-
-               if ( key === "event" ) {
-                       this._setupEvents( value );
-               }
-
-               if ( key === "heightStyle" ) {
-                       this._setupHeightStyle( value );
-               }
-       },
-
-       _sanitizeSelector: function( hash ) {
-               return hash ? hash.replace( /[!"$%&'()*+,.\/:;<=>?@\[\]\^`{|}~]/g, "\\$&" ) : "";
-       },
-
-       refresh: function() {
-               var options = this.options,
-                       lis = this.tablist.children( ":has(a[href])" );
-
-               // get disabled tabs from class attribute from HTML
-               // this will get converted to a boolean if needed in _refresh()
-               options.disabled = $.map( lis.filter( ".ui-state-disabled" ), function( tab ) {
-                       return lis.index( tab );
-               });
-
-               this._processTabs();
-
-               // was collapsed or no tabs
-               if ( options.active === false || !this.anchors.length ) {
-                       options.active = false;
-                       this.active = $();
-               // was active, but active tab is gone
-               } else if ( this.active.length && !$.contains( this.tablist[ 0 ], this.active[ 0 ] ) ) {
-                       // all remaining tabs are disabled
-                       if ( this.tabs.length === options.disabled.length ) {
-                               options.active = false;
-                               this.active = $();
-                       // activate previous tab
-                       } else {
-                               this._activate( this._findNextTab( Math.max( 0, options.active - 1 ), false ) );
-                       }
-               // was active, active tab still exists
-               } else {
-                       // make sure active index is correct
-                       options.active = this.tabs.index( this.active );
-               }
-
-               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"
-                       });
-
-               // Make sure one tab is in the tab order
-               if ( !this.active.length ) {
-                       this.tabs.eq( 0 ).attr( "tabIndex", 0 );
-               } else {
-                       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"
-                               });
-               }
-       },
-
-       _processTabs: function() {
-               var that = this,
-                       prevTabs = this.tabs,
-                       prevAnchors = this.anchors,
-                       prevPanels = 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" )
-
-                       // Prevent users from focusing disabled tabs via click
-                       .delegate( "> li", "mousedown" + this.eventNamespace, function( event ) {
-                               if ( $( this ).is( ".ui-state-disabled" ) ) {
-                                       event.preventDefault();
-                               }
-                       })
-
-                       // support: IE <9
-                       // Preventing the default action in mousedown doesn't prevent IE
-                       // from focusing the element, so if the anchor gets focused, blur.
-                       // We don't have to worry about focusing the previously focused
-                       // element since clicking on a non-focusable element should focus
-                       // the body anyway.
-                       .delegate( ".ui-tabs-anchor", "focus" + this.eventNamespace, function() {
-                               if ( $( 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 $( "a", this )[ 0 ];
-                       })
-                       .addClass( "ui-tabs-anchor" )
-                       .attr({
-                               role: "presentation",
-                               tabIndex: -1
-                       });
-
-               this.panels = $();
-
-               this.anchors.each(function( i, anchor ) {
-                       var selector, panel, panelId,
-                               anchorId = $( anchor ).uniqueId().attr( "id" ),
-                               tab = $( anchor ).closest( "li" ),
-                               originalAriaControls = tab.attr( "aria-controls" );
-
-                       // inline tab
-                       if ( that._isLocal( anchor ) ) {
-                               selector = anchor.hash;
-                               panelId = selector.substring( 1 );
-                               panel = that.element.find( that._sanitizeSelector( selector ) );
-                       // remote tab
-                       } else {
-                               // If the tab doesn't already have aria-controls,
-                               // generate an id by using a throw-away element
-                               panelId = tab.attr( "aria-controls" ) || $( {} ).uniqueId()[ 0 ].id;
-                               selector = "#" + panelId;
-                               panel = that.element.find( selector );
-                               if ( !panel.length ) {
-                                       panel = that._createPanel( panelId );
-                                       panel.insertAfter( that.panels[ i - 1 ] || that.tablist );
-                               }
-                               panel.attr( "aria-live", "polite" );
-                       }
-
-                       if ( panel.length) {
-                               that.panels = that.panels.add( panel );
-                       }
-                       if ( originalAriaControls ) {
-                               tab.data( "ui-tabs-aria-controls", originalAriaControls );
-                       }
-                       tab.attr({
-                               "aria-controls": panelId,
-                               "aria-labelledby": anchorId
-                       });
-                       panel.attr( "aria-labelledby", anchorId );
-               });
-
-               this.panels
-                       .addClass( "ui-tabs-panel ui-widget-content ui-corner-bottom" )
-                       .attr( "role", "tabpanel" );
-
-               // Avoid memory leaks (#10056)
-               if ( prevTabs ) {
-                       this._off( prevTabs.not( this.tabs ) );
-                       this._off( prevAnchors.not( this.anchors ) );
-                       this._off( prevPanels.not( this.panels ) );
-               }
-       },
-
-       // allow overriding how to find the list for rare usage scenarios (#7715)
-       _getList: function() {
-               return this.tablist || this.element.find( "ol,ul" ).eq( 0 );
-       },
-
-       _createPanel: function( id ) {
-               return $( "<div>" )
-                       .attr( "id", id )
-                       .addClass( "ui-tabs-panel ui-widget-content ui-corner-bottom" )
-                       .data( "ui-tabs-destroy", true );
-       },
-
-       _setupDisabled: function( disabled ) {
-               if ( $.isArray( disabled ) ) {
-                       if ( !disabled.length ) {
-                               disabled = false;
-                       } else if ( disabled.length === this.anchors.length ) {
-                               disabled = true;
-                       }
-               }
-
-               // disable tabs
-               for ( var i = 0, li; ( li = this.tabs[ i ] ); i++ ) {
-                       if ( disabled === true || $.inArray( i, disabled ) !== -1 ) {
-                               $( li )
-                                       .addClass( "ui-state-disabled" )
-                                       .attr( "aria-disabled", "true" );
-                       } else {
-                               $( li )
-                                       .removeClass( "ui-state-disabled" )
-                                       .removeAttr( "aria-disabled" );
-                       }
-               }
-
-               this.options.disabled = disabled;
-       },
-
-       _setupEvents: function( event ) {
-               var events = {};
-               if ( event ) {
-                       $.each( event.split(" "), function( index, eventName ) {
-                               events[ eventName ] = "_eventHandler";
-                       });
-               }
-
-               this._off( this.anchors.add( this.tabs ).add( this.panels ) );
-               // Always prevent the default action, even when disabled
-               this._on( true, this.anchors, {
-                       click: function( event ) {
-                               event.preventDefault();
-                       }
-               });
-               this._on( this.anchors, events );
-               this._on( this.tabs, { keydown: "_tabKeydown" } );
-               this._on( this.panels, { keydown: "_panelKeydown" } );
-
-               this._focusable( this.tabs );
-               this._hoverable( this.tabs );
-       },
-
-       _setupHeightStyle: function( heightStyle ) {
-               var maxHeight,
-                       parent = this.element.parent();
-
-               if ( heightStyle === "fill" ) {
-                       maxHeight = parent.height();
-                       maxHeight -= this.element.outerHeight() - this.element.height();
-
-                       this.element.siblings( ":visible" ).each(function() {
-                               var elem = $( this ),
-                                       position = elem.css( "position" );
-
-                               if ( position === "absolute" || position === "fixed" ) {
-                                       return;
-                               }
-                               maxHeight -= elem.outerHeight( true );
-                       });
-
-                       this.element.children().not( this.panels ).each(function() {
-                               maxHeight -= $( this ).outerHeight( true );
-                       });
-
-                       this.panels.each(function() {
-                               $( this ).height( Math.max( 0, maxHeight -
-                                       $( this ).innerHeight() + $( this ).height() ) );
-                       })
-                       .css( "overflow", "auto" );
-               } else if ( heightStyle === "auto" ) {
-                       maxHeight = 0;
-                       this.panels.each(function() {
-                               maxHeight = Math.max( maxHeight, $( this ).height( "" ).height() );
-                       }).height( maxHeight );
-               }
-       },
-
-       _eventHandler: function( event ) {
-               var options = this.options,
-                       active = this.active,
-                       anchor = $( event.currentTarget ),
-                       tab = anchor.closest( "li" ),
-                       clickedIsActive = tab[ 0 ] === active[ 0 ],
-                       collapsing = clickedIsActive && options.collapsible,
-                       toShow = collapsing ? $() : this._getPanelForTab( tab ),
-                       toHide = !active.length ? $() : this._getPanelForTab( active ),
-                       eventData = {
-                               oldTab: active,
-                               oldPanel: toHide,
-                               newTab: collapsing ? $() : tab,
-                               newPanel: toShow
-                       };
-
-               event.preventDefault();
-
-               if ( tab.hasClass( "ui-state-disabled" ) ||
-                               // tab is already loading
-                               tab.hasClass( "ui-tabs-loading" ) ||
-                               // can't switch durning an animation
-                               this.running ||
-                               // click on active header, but not collapsible
-                               ( clickedIsActive && !options.collapsible ) ||
-                               // allow canceling activation
-                               ( this._trigger( "beforeActivate", event, eventData ) === false ) ) {
-                       return;
-               }
-
-               options.active = collapsing ? false : this.tabs.index( tab );
-
-               this.active = clickedIsActive ? $() : tab;
-               if ( this.xhr ) {
-                       this.xhr.abort();
-               }
-
-               if ( !toHide.length && !toShow.length ) {
-                       $.error( "jQuery UI Tabs: Mismatching fragment identifier." );
-               }
-
-               if ( toShow.length ) {
-                       this.load( this.tabs.index( tab ), event );
-               }
-               this._toggle( event, eventData );
-       },
-
-       // handles show/hide for selecting tabs
-       _toggle: function( event, eventData ) {
-               var that = this,
-                       toShow = eventData.newPanel,
-                       toHide = eventData.oldPanel;
-
-               this.running = true;
-
-               function complete() {
-                       that.running = false;
-                       that._trigger( "activate", event, eventData );
-               }
-
-               function show() {
-                       eventData.newTab.closest( "li" ).addClass( "ui-tabs-active ui-state-active" );
-
-                       if ( toShow.length && that.options.show ) {
-                               that._show( toShow, that.options.show, complete );
-                       } else {
-                               toShow.show();
-                               complete();
-                       }
-               }
-
-               // start out by hiding, then showing, then completing
-               if ( toHide.length && this.options.hide ) {
-                       this._hide( toHide, this.options.hide, function() {
-                               eventData.oldTab.closest( "li" ).removeClass( "ui-tabs-active ui-state-active" );
-                               show();
-                       });
-               } else {
-                       eventData.oldTab.closest( "li" ).removeClass( "ui-tabs-active ui-state-active" );
-                       toHide.hide();
-                       show();
-               }
-
-               toHide.attr( "aria-hidden", "true" );
-               eventData.oldTab.attr({
-                       "aria-selected": "false",
-                       "aria-expanded": "false"
-               });
-               // If we're switching tabs, remove the old tab from the tab order.
-               // If we're opening from collapsed state, remove the previous tab from the tab order.
-               // If we're collapsing, then keep the collapsing tab in the tab order.
-               if ( toShow.length && toHide.length ) {
-                       eventData.oldTab.attr( "tabIndex", -1 );
-               } else if ( toShow.length ) {
-                       this.tabs.filter(function() {
-                               return $( this ).attr( "tabIndex" ) === 0;
-                       })
-                       .attr( "tabIndex", -1 );
-               }
-
-               toShow.attr( "aria-hidden", "false" );
-               eventData.newTab.attr({
-                       "aria-selected": "true",
-                       "aria-expanded": "true",
-                       tabIndex: 0
-               });
-       },
-
-       _activate: function( index ) {
-               var anchor,
-                       active = this._findActive( index );
-
-               // trying to activate the already active panel
-               if ( active[ 0 ] === this.active[ 0 ] ) {
-                       return;
-               }
-
-               // trying to collapse, simulate a click on the current active header
-               if ( !active.length ) {
-                       active = this.active;
-               }
-
-               anchor = active.find( ".ui-tabs-anchor" )[ 0 ];
-               this._eventHandler({
-                       target: anchor,
-                       currentTarget: anchor,
-                       preventDefault: $.noop
-               });
-       },
-
-       _findActive: function( index ) {
-               return index === false ? $() : this.tabs.eq( index );
-       },
-
-       _getIndex: function( index ) {
-               // meta-function to give users option to provide a href string instead of a numerical index.
-               if ( typeof index === "string" ) {
-                       index = this.anchors.index( this.anchors.filter( "[href$='" + index + "']" ) );
-               }
-
-               return index;
-       },
-
-       _destroy: function() {
-               if ( 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() {
-                       if ( $.data( this, "ui-tabs-destroy" ) ) {
-                               $( this ).remove();
-                       } else {
-                               $( 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 li = $( this ),
-                               prev = li.data( "ui-tabs-aria-controls" );
-                       if ( prev ) {
-                               li
-                                       .attr( "aria-controls", prev )
-                                       .removeData( "ui-tabs-aria-controls" );
-                       } else {
-                               li.removeAttr( "aria-controls" );
-                       }
-               });
-
-               this.panels.show();
-
-               if ( this.options.heightStyle !== "content" ) {
-                       this.panels.css( "height", "" );
-               }
-       },
-
-       enable: function( index ) {
-               var disabled = this.options.disabled;
-               if ( disabled === false ) {
-                       return;
-               }
-
-               if ( index === undefined ) {
-                       disabled = false;
-               } else {
-                       index = this._getIndex( index );
-                       if ( $.isArray( disabled ) ) {
-                               disabled = $.map( disabled, function( num ) {
-                                       return num !== index ? num : null;
-                               });
-                       } else {
-                               disabled = $.map( this.tabs, function( li, num ) {
-                                       return num !== index ? num : null;
-                               });
-                       }
-               }
-               this._setupDisabled( disabled );
-       },
-
-       disable: function( index ) {
-               var disabled = this.options.disabled;
-               if ( disabled === true ) {
-                       return;
-               }
-
-               if ( index === undefined ) {
-                       disabled = true;
-               } else {
-                       index = this._getIndex( index );
-                       if ( $.inArray( index, disabled ) !== -1 ) {
-                               return;
-                       }
-                       if ( $.isArray( disabled ) ) {
-                               disabled = $.merge( [ index ], disabled ).sort();
-                       } else {
-                               disabled = [ index ];
-                       }
-               }
-               this._setupDisabled( disabled );
-       },
-
-       load: function( index, event ) {
-               index = this._getIndex( index );
-               var that = this,
-                       tab = this.tabs.eq( index ),
-                       anchor = tab.find( ".ui-tabs-anchor" ),
-                       panel = this._getPanelForTab( tab ),
-                       eventData = {
-                               tab: tab,
-                               panel: panel
-                       };
-
-               // not remote
-               if ( this._isLocal( anchor[ 0 ] ) ) {
-                       return;
-               }
-
-               this.xhr = $.ajax( this._ajaxSettings( anchor, event, eventData ) );
-
-               // support: jQuery <1.8
-               // jQuery <1.8 returns false if the request is canceled in beforeSend,
-               // but as of 1.8, $.ajax() always returns a jqXHR object.
-               if ( this.xhr && this.xhr.statusText !== "canceled" ) {
-                       tab.addClass( "ui-tabs-loading" );
-                       panel.attr( "aria-busy", "true" );
-
-                       this.xhr
-                               .success(function( response ) {
-                                       // support: jQuery <1.8
-                                       // http://bugs.jquery.com/ticket/11778
-                                       setTimeout(function() {
-                                               panel.html( response );
-                                               that._trigger( "load", event, eventData );
-                                       }, 1 );
-                               })
-                               .complete(function( jqXHR, status ) {
-                                       // support: jQuery <1.8
-                                       // http://bugs.jquery.com/ticket/11778
-                                       setTimeout(function() {
-                                               if ( status === "abort" ) {
-                                                       that.panels.stop( false, true );
-                                               }
-
-                                               tab.removeClass( "ui-tabs-loading" );
-                                               panel.removeAttr( "aria-busy" );
-
-                                               if ( jqXHR === that.xhr ) {
-                                                       delete that.xhr;
-                                               }
-                                       }, 1 );
-                               });
-               }
-       },
-
-       _ajaxSettings: function( anchor, event, eventData ) {
-               var that = this;
-               return {
-                       url: anchor.attr( "href" ),
-                       beforeSend: function( jqXHR, settings ) {
-                               return that._trigger( "beforeLoad", event,
-                                       $.extend( { jqXHR: jqXHR, ajaxSettings: settings }, eventData ) );
-                       }
-               };
-       },
-
-       _getPanelForTab: function( tab ) {
-               var id = $( tab ).attr( "aria-controls" );
-               return this.element.find( this._sanitizeSelector( "#" + id ) );
-       }
-});
-
-
-/*!
- * jQuery UI Tooltip 1.11.3
- * http://jqueryui.com
- *
- * Copyright jQuery Foundation and other contributors
- * Released under the MIT license.
- * http://jquery.org/license
- *
- * http://api.jqueryui.com/tooltip/
- */
-
-
-var tooltip = $.widget( "ui.tooltip", {
-       version: "1.11.3",
-       options: {
-               content: function() {
-                       // support: IE<9, Opera in jQuery <1.7
-                       // .text() can't accept undefined, so coerce to a string
-                       var title = $( this ).attr( "title" ) || "";
-                       // Escape title, since we're going from an attribute to raw HTML
-                       return $( "<a>" ).text( title ).html();
-               },
-               hide: true,
-               // Disabled elements have inconsistent behavior across browsers (#8661)
-               items: "[title]:not([disabled])",
-               position: {
-                       my: "left top+15",
-                       at: "left bottom",
-                       collision: "flipfit flip"
-               },
-               show: true,
-               tooltipClass: null,
-               track: false,
-
-               // callbacks
-               close: null,
-               open: null
-       },
-
-       _addDescribedBy: function( elem, id ) {
-               var describedby = (elem.attr( "aria-describedby" ) || "").split( /\s+/ );
-               describedby.push( id );
-               elem
-                       .data( "ui-tooltip-id", id )
-                       .attr( "aria-describedby", $.trim( describedby.join( " " ) ) );
-       },
-
-       _removeDescribedBy: function( elem ) {
-               var id = elem.data( "ui-tooltip-id" ),
-                       describedby = (elem.attr( "aria-describedby" ) || "").split( /\s+/ ),
-                       index = $.inArray( id, describedby );
-
-               if ( index !== -1 ) {
-                       describedby.splice( index, 1 );
-               }
-
-               elem.removeData( "ui-tooltip-id" );
-               describedby = $.trim( describedby.join( " " ) );
-               if ( describedby ) {
-                       elem.attr( "aria-describedby", describedby );
-               } else {
-                       elem.removeAttr( "aria-describedby" );
-               }
-       },
-
-       _create: function() {
-               this._on({
-                       mouseover: "open",
-                       focusin: "open"
-               });
-
-               // IDs of generated tooltips, needed for destroy
-               this.tooltips = {};
-
-               // IDs of parent tooltips where we removed the title attribute
-               this.parents = {};
-
-               if ( this.options.disabled ) {
-                       this._disable();
-               }
-
-               // Append the aria-live region so tooltips announce correctly
-               this.liveRegion = $( "<div>" )
-                       .attr({
-                               role: "log",
-                               "aria-live": "assertive",
-                               "aria-relevant": "additions"
-                       })
-                       .addClass( "ui-helper-hidden-accessible" )
-                       .appendTo( this.document[ 0 ].body );
-       },
-
-       _setOption: function( key, value ) {
-               var that = this;
-
-               if ( key === "disabled" ) {
-                       this[ value ? "_disable" : "_enable" ]();
-                       this.options[ key ] = value;
-                       // disable element style changes
-                       return;
-               }
-
-               this._super( key, value );
-
-               if ( key === "content" ) {
-                       $.each( this.tooltips, function( id, tooltipData ) {
-                               that._updateContent( tooltipData.element );
-                       });
-               }
-       },
-
-       _disable: function() {
-               var that = this;
-
-               // close open tooltips
-               $.each( this.tooltips, function( id, tooltipData ) {
-                       var event = $.Event( "blur" );
-                       event.target = event.currentTarget = tooltipData.element[ 0 ];
-                       that.close( event, true );
-               });
-
-               // remove title attributes to prevent native tooltips
-               this.element.find( this.options.items ).addBack().each(function() {
-                       var element = $( this );
-                       if ( element.is( "[title]" ) ) {
-                               element
-                                       .data( "ui-tooltip-title", element.attr( "title" ) )
-                                       .removeAttr( "title" );
-                       }
-               });
-       },
-
-       _enable: function() {
-               // restore title attributes
-               this.element.find( this.options.items ).addBack().each(function() {
-                       var element = $( this );
-                       if ( element.data( "ui-tooltip-title" ) ) {
-                               element.attr( "title", element.data( "ui-tooltip-title" ) );
-                       }
-               });
-       },
-
-       open: function( event ) {
-               var that = this,
-                       target = $( event ? event.target : this.element )
-                               // we need closest here due to mouseover bubbling,
-                               // but always pointing at the same event target
-                               .closest( this.options.items );
-
-               // No element to show a tooltip for or the tooltip is already open
-               if ( !target.length || target.data( "ui-tooltip-id" ) ) {
-                       return;
-               }
-
-               if ( target.attr( "title" ) ) {
-                       target.data( "ui-tooltip-title", target.attr( "title" ) );
-               }
-
-               target.data( "ui-tooltip-open", true );
-
-               // kill parent tooltips, custom or native, for hover
-               if ( event && event.type === "mouseover" ) {
-                       target.parents().each(function() {
-                               var parent = $( this ),
-                                       blurEvent;
-                               if ( parent.data( "ui-tooltip-open" ) ) {
-                                       blurEvent = $.Event( "blur" );
-                                       blurEvent.target = blurEvent.currentTarget = this;
-                                       that.close( blurEvent, true );
-                               }
-                               if ( parent.attr( "title" ) ) {
-                                       parent.uniqueId();
-                                       that.parents[ this.id ] = {
-                                               element: this,
-                                               title: parent.attr( "title" )
-                                       };
-                                       parent.attr( "title", "" );
-                               }
-                       });
-               }
-
-               this._updateContent( target, event );
-       },
-
-       _updateContent: function( target, event ) {
-               var content,
-                       contentOption = this.options.content,
-                       that = this,
-                       eventType = event ? event.type : null;
-
-               if ( typeof contentOption === "string" ) {
-                       return this._open( event, target, contentOption );
-               }
-
-               content = contentOption.call( target[0], function( response ) {
-                       // ignore async response if tooltip was closed already
-                       if ( !target.data( "ui-tooltip-open" ) ) {
-                               return;
-                       }
-                       // IE may instantly serve a cached response for ajax requests
-                       // delay this call to _open so the other call to _open runs first
-                       that._delay(function() {
-                               // jQuery creates a special event for focusin when it doesn't
-                               // exist natively. To improve performance, the native event
-                               // object is reused and the type is changed. Therefore, we can't
-                               // rely on the type being correct after the event finished
-                               // bubbling, so we set it back to the previous value. (#8740)
-                               if ( event ) {
-                                       event.type = eventType;
-                               }
-                               this._open( event, target, response );
-                       });
-               });
-               if ( content ) {
-                       this._open( event, target, content );
-               }
-       },
-
-       _open: function( event, target, content ) {
-               var tooltipData, tooltip, events, delayedShow, a11yContent,
-                       positionOption = $.extend( {}, this.options.position );
-
-               if ( !content ) {
-                       return;
-               }
-
-               // Content can be updated multiple times. If the tooltip already
-               // exists, then just update the content and bail.
-               tooltipData = this._find( target );
-               if ( tooltipData ) {
-                       tooltipData.tooltip.find( ".ui-tooltip-content" ).html( content );
-                       return;
-               }
-
-               // if we have a title, clear it to prevent the native tooltip
-               // we have to check first to avoid defining a title if none exists
-               // (we don't want to cause an element to start matching [title])
-               //
-               // We use removeAttr only for key events, to allow IE to export the correct
-               // accessible attributes. For mouse events, set to empty string to avoid
-               // native tooltip showing up (happens only when removing inside mouseover).
-               if ( target.is( "[title]" ) ) {
-                       if ( event && event.type === "mouseover" ) {
-                               target.attr( "title", "" );
-                       } else {
-                               target.removeAttr( "title" );
-                       }
-               }
-
-               tooltipData = this._tooltip( target );
-               tooltip = tooltipData.tooltip;
-               this._addDescribedBy( target, tooltip.attr( "id" ) );
-               tooltip.find( ".ui-tooltip-content" ).html( content );
-
-               // Support: Voiceover on OS X, JAWS on IE <= 9
-               // JAWS announces deletions even when aria-relevant="additions"
-               // Voiceover will sometimes re-read the entire log region's contents from the beginning
-               this.liveRegion.children().hide();
-               if ( content.clone ) {
-                       a11yContent = content.clone();
-                       a11yContent.removeAttr( "id" ).find( "[id]" ).removeAttr( "id" );
-               } else {
-                       a11yContent = content;
-               }
-               $( "<div>" ).html( a11yContent ).appendTo( this.liveRegion );
-
-               function position( event ) {
-                       positionOption.of = event;
-                       if ( tooltip.is( ":hidden" ) ) {
-                               return;
-                       }
-                       tooltip.position( positionOption );
-               }
-               if ( this.options.track && event && /^mouse/.test( event.type ) ) {
-                       this._on( this.document, {
-                               mousemove: position
-                       });
-                       // trigger once to override element-relative positioning
-                       position( event );
-               } else {
-                       tooltip.position( $.extend({
-                               of: target
-                       }, this.options.position ) );
-               }
-
-               tooltip.hide();
-
-               this._show( tooltip, this.options.show );
-               // Handle tracking tooltips that are shown with a delay (#8644). As soon
-               // as the tooltip is visible, position the tooltip using the most recent
-               // event.
-               if ( this.options.show && this.options.show.delay ) {
-                       delayedShow = this.delayedShow = setInterval(function() {
-                               if ( tooltip.is( ":visible" ) ) {
-                                       position( positionOption.of );
-                                       clearInterval( delayedShow );
-                               }
-                       }, $.fx.interval );
-               }
-
-               this._trigger( "open", event, { tooltip: tooltip } );
-
-               events = {
-                       keyup: function( event ) {
-                               if ( event.keyCode === $.ui.keyCode.ESCAPE ) {
-                                       var fakeEvent = $.Event(event);
-                                       fakeEvent.currentTarget = target[0];
-                                       this.close( fakeEvent, true );
-                               }
-                       }
-               };
-
-               // Only bind remove handler for delegated targets. Non-delegated
-               // tooltips will handle this in destroy.
-               if ( target[ 0 ] !== this.element[ 0 ] ) {
-                       events.remove = function() {
-                               this._removeTooltip( tooltip );
-                       };
-               }
-
-               if ( !event || event.type === "mouseover" ) {
-                       events.mouseleave = "close";
-               }
-               if ( !event || event.type === "focusin" ) {
-                       events.focusout = "close";
-               }
-               this._on( true, target, events );
-       },
-
-       close: function( event ) {
-               var tooltip,
-                       that = this,
-                       target = $( event ? event.currentTarget : this.element ),
-                       tooltipData = this._find( target );
-
-               // The tooltip may already be closed
-               if ( !tooltipData ) {
-                       return;
-               }
-
-               tooltip = tooltipData.tooltip;
-
-               // disabling closes the tooltip, so we need to track when we're closing
-               // to avoid an infinite loop in case the tooltip becomes disabled on close
-               if ( tooltipData.closing ) {
-                       return;
-               }
-
-               // Clear the interval for delayed tracking tooltips
-               clearInterval( this.delayedShow );
-
-               // only set title if we had one before (see comment in _open())
-               // If the title attribute has changed since open(), don't restore
-               if ( target.data( "ui-tooltip-title" ) && !target.attr( "title" ) ) {
-                       target.attr( "title", target.data( "ui-tooltip-title" ) );
-               }
-
-               this._removeDescribedBy( target );
-
-               tooltipData.hiding = true;
-               tooltip.stop( true );
-               this._hide( tooltip, this.options.hide, function() {
-                       that._removeTooltip( $( this ) );
-               });
-
-               target.removeData( "ui-tooltip-open" );
-               this._off( target, "mouseleave focusout keyup" );
-
-               // Remove 'remove' binding only on delegated targets
-               if ( target[ 0 ] !== this.element[ 0 ] ) {
-                       this._off( target, "remove" );
-               }
-               this._off( this.document, "mousemove" );
-
-               if ( event && event.type === "mouseleave" ) {
-                       $.each( this.parents, function( id, parent ) {
-                               $( parent.element ).attr( "title", parent.title );
-                               delete that.parents[ id ];
-                       });
-               }
-
-               tooltipData.closing = true;
-               this._trigger( "close", event, { tooltip: tooltip } );
-               if ( !tooltipData.hiding ) {
-                       tooltipData.closing = false;
-               }
-       },
-
-       _tooltip: function( element ) {
-               var tooltip = $( "<div>" )
-                               .attr( "role", "tooltip" )
-                               .addClass( "ui-tooltip ui-widget ui-corner-all ui-widget-content " +
-                                       ( this.options.tooltipClass || "" ) ),
-                       id = tooltip.uniqueId().attr( "id" );
-
-               $( "<div>" )
-                       .addClass( "ui-tooltip-content" )
-                       .appendTo( tooltip );
-
-               tooltip.appendTo( this.document[0].body );
-
-               return this.tooltips[ id ] = {
-                       element: element,
-                       tooltip: tooltip
-               };
-       },
-
-       _find: function( target ) {
-               var id = target.data( "ui-tooltip-id" );
-               return id ? this.tooltips[ id ] : null;
-       },
-
-       _removeTooltip: function( tooltip ) {
-               tooltip.remove();
-               delete this.tooltips[ tooltip.attr( "id" ) ];
-       },
-
-       _destroy: function() {
-               var that = this;
-
-               // close open tooltips
-               $.each( this.tooltips, function( id, tooltipData ) {
-                       // Delegate to close method to handle common cleanup
-                       var event = $.Event( "blur" ),
-                               element = tooltipData.element;
-                       event.target = event.currentTarget = element[ 0 ];
-                       that.close( event, true );
-
-                       // Remove immediately; destroying an open tooltip doesn't use the
-                       // hide animation
-                       $( "#" + id ).remove();
-
-                       // Restore the title
-                       if ( element.data( "ui-tooltip-title" ) ) {
-                               // If the title attribute has changed since open(), don't restore
-                               if ( !element.attr( "title" ) ) {
-                                       element.attr( "title", element.data( "ui-tooltip-title" ) );
-                               }
-                               element.removeData( "ui-tooltip-title" );
-                       }
-               });
-               this.liveRegion.remove();
-       }
-});
-
-
-/*!
- * jQuery UI Effects 1.11.3
- * http://jqueryui.com
- *
- * Copyright jQuery Foundation and other contributors
- * Released under the MIT license.
- * http://jquery.org/license
- *
- * http://api.jqueryui.com/category/effects-core/
- */
-
-
-var dataSpace = "ui-effects-",
-
-       // Create a local jQuery because jQuery Color relies on it and the
-       // global may not exist with AMD and a custom build (#10199)
-       jQuery = $;
-
-$.effects = {
-       effect: {}
-};
-
-/*!
- * jQuery Color Animations v2.1.2
- * https://github.com/jquery/jquery-color
- *
- * Copyright 2014 jQuery Foundation and other contributors
- * Released under the MIT license.
- * http://jquery.org/license
- *
- * Date: Wed Jan 16 08:47:09 2013 -0600
- */
-(function( jQuery, undefined ) {
-
-       var stepHooks = "backgroundColor borderBottomColor borderLeftColor borderRightColor borderTopColor color columnRuleColor outlineColor textDecorationColor textEmphasisColor",
-
-       // plusequals test for += 100 -= 100
-       rplusequals = /^([\-+])=\s*(\d+\.?\d*)/,
-       // a set of RE's that can match strings and generate color tuples.
-       stringParsers = [ {
-                       re: /rgba?\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,
-                       parse: function( execResult ) {
-                               return [
-                                       execResult[ 1 ],
-                                       execResult[ 2 ],
-                                       execResult[ 3 ],
-                                       execResult[ 4 ]
-                               ];
-                       }
-               }, {
-                       re: /rgba?\(\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,
-                       parse: function( execResult ) {
-                               return [
-                                       execResult[ 1 ] * 2.55,
-                                       execResult[ 2 ] * 2.55,
-                                       execResult[ 3 ] * 2.55,
-                                       execResult[ 4 ]
-                               ];
-                       }
-               }, {
-                       // this regex ignores A-F because it's compared against an already lowercased string
-                       re: /#([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})/,
-                       parse: function( execResult ) {
-                               return [
-                                       parseInt( execResult[ 1 ], 16 ),
-                                       parseInt( execResult[ 2 ], 16 ),
-                                       parseInt( execResult[ 3 ], 16 )
-                               ];
-                       }
-               }, {
-                       // this regex ignores A-F because it's compared against an already lowercased string
-                       re: /#([a-f0-9])([a-f0-9])([a-f0-9])/,
-                       parse: function( execResult ) {
-                               return [
-                                       parseInt( execResult[ 1 ] + execResult[ 1 ], 16 ),
-                                       parseInt( execResult[ 2 ] + execResult[ 2 ], 16 ),
-                                       parseInt( execResult[ 3 ] + execResult[ 3 ], 16 )
-                               ];
-                       }
-               }, {
-                       re: /hsla?\(\s*(\d+(?:\.\d+)?)\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,
-                       space: "hsla",
-                       parse: function( execResult ) {
-                               return [
-                                       execResult[ 1 ],
-                                       execResult[ 2 ] / 100,
-                                       execResult[ 3 ] / 100,
-                                       execResult[ 4 ]
-                               ];
-                       }
-               } ],
-
-       // jQuery.Color( )
-       color = jQuery.Color = function( color, green, blue, alpha ) {
-               return new jQuery.Color.fn.parse( color, green, blue, alpha );
-       },
-       spaces = {
-               rgba: {
-                       props: {
-                               red: {
-                                       idx: 0,
-                                       type: "byte"
-                               },
-                               green: {
-                                       idx: 1,
-                                       type: "byte"
-                               },
-                               blue: {
-                                       idx: 2,
-                                       type: "byte"
-                               }
-                       }
-               },
-
-               hsla: {
-                       props: {
-                               hue: {
-                                       idx: 0,
-                                       type: "degrees"
-                               },
-                               saturation: {
-                                       idx: 1,
-                                       type: "percent"
-                               },
-                               lightness: {
-                                       idx: 2,
-                                       type: "percent"
-                               }
-                       }
-               }
-       },
-       propTypes = {
-               "byte": {
-                       floor: true,
-                       max: 255
-               },
-               "percent": {
-                       max: 1
-               },
-               "degrees": {
-                       mod: 360,
-                       floor: true
-               }
-       },
-       support = color.support = {},
-
-       // element for support tests
-       supportElem = jQuery( "<p>" )[ 0 ],
-
-       // colors = jQuery.Color.names
-       colors,
-
-       // local aliases of functions called often
-       each = jQuery.each;
-
-// determine rgba support immediately
-supportElem.style.cssText = "background-color:rgba(1,1,1,.5)";
-support.rgba = supportElem.style.backgroundColor.indexOf( "rgba" ) > -1;
-
-// define cache name and alpha properties
-// for rgba and hsla spaces
-each( spaces, function( spaceName, space ) {
-       space.cache = "_" + spaceName;
-       space.props.alpha = {
-               idx: 3,
-               type: "percent",
-               def: 1
-       };
-});
-
-function clamp( value, prop, allowEmpty ) {
-       var type = propTypes[ prop.type ] || {};
-
-       if ( value == null ) {
-               return (allowEmpty || !prop.def) ? null : prop.def;
-       }
-
-       // ~~ is an short way of doing floor for positive numbers
-       value = type.floor ? ~~value : parseFloat( value );
-
-       // IE will pass in empty strings as value for alpha,
-       // which will hit this case
-       if ( isNaN( value ) ) {
-               return prop.def;
-       }
-
-       if ( type.mod ) {
-               // we add mod before modding to make sure that negatives values
-               // get converted properly: -10 -> 350
-               return (value + type.mod) % type.mod;
-       }
-
-       // for now all property types without mod have min and max
-       return 0 > value ? 0 : type.max < value ? type.max : value;
-}
-
-function stringParse( string ) {
-       var inst = color(),
-               rgba = inst._rgba = [];
-
-       string = string.toLowerCase();
-
-       each( stringParsers, function( i, parser ) {
-               var parsed,
-                       match = parser.re.exec( string ),
-                       values = match && parser.parse( match ),
-                       spaceName = parser.space || "rgba";
-
-               if ( values ) {
-                       parsed = inst[ spaceName ]( values );
-
-                       // if this was an rgba parse the assignment might happen twice
-                       // oh well....
-                       inst[ spaces[ spaceName ].cache ] = parsed[ spaces[ spaceName ].cache ];
-                       rgba = inst._rgba = parsed._rgba;
-
-                       // exit each( stringParsers ) here because we matched
-                       return false;
-               }
-       });
-
-       // Found a stringParser that handled it
-       if ( rgba.length ) {
-
-               // if this came from a parsed string, force "transparent" when alpha is 0
-               // chrome, (and maybe others) return "transparent" as rgba(0,0,0,0)
-               if ( rgba.join() === "0,0,0,0" ) {
-                       jQuery.extend( rgba, colors.transparent );
-               }
-               return inst;
-       }
-
-       // named colors
-       return colors[ string ];
-}
-
-color.fn = jQuery.extend( color.prototype, {
-       parse: function( red, green, blue, alpha ) {
-               if ( red === undefined ) {
-                       this._rgba = [ null, null, null, null ];
-                       return this;
-               }
-               if ( red.jquery || red.nodeType ) {
-                       red = jQuery( red ).css( green );
-                       green = undefined;
-               }
-
-               var inst = this,
-                       type = jQuery.type( red ),
-                       rgba = this._rgba = [];
-
-               // more than 1 argument specified - assume ( red, green, blue, alpha )
-               if ( green !== undefined ) {
-                       red = [ red, green, blue, alpha ];
-                       type = "array";
-               }
-
-               if ( type === "string" ) {
-                       return this.parse( stringParse( red ) || colors._default );
-               }
-
-               if ( type === "array" ) {
-                       each( spaces.rgba.props, function( key, prop ) {
-                               rgba[ prop.idx ] = clamp( red[ prop.idx ], prop );
-                       });
-                       return this;
-               }
-
-               if ( type === "object" ) {
-                       if ( red instanceof color ) {
-                               each( spaces, function( spaceName, space ) {
-                                       if ( red[ space.cache ] ) {
-                                               inst[ space.cache ] = red[ space.cache ].slice();
-                                       }
-                               });
-                       } else {
-                               each( spaces, function( spaceName, space ) {
-                                       var cache = space.cache;
-                                       each( space.props, function( key, prop ) {
-
-                                               // if the cache doesn't exist, and we know how to convert
-                                               if ( !inst[ cache ] && space.to ) {
-
-                                                       // if the value was null, we don't need to copy it
-                                                       // if the key was alpha, we don't need to copy it either
-                                                       if ( key === "alpha" || red[ key ] == null ) {
-                                                               return;
-                                                       }
-                                                       inst[ cache ] = space.to( inst._rgba );
-                                               }
-
-                                               // this is the only case where we allow nulls for ALL properties.
-                                               // call clamp with alwaysAllowEmpty
-                                               inst[ cache ][ prop.idx ] = clamp( red[ key ], prop, true );
-                                       });
-
-                                       // everything defined but alpha?
-                                       if ( inst[ cache ] && jQuery.inArray( null, inst[ cache ].slice( 0, 3 ) ) < 0 ) {
-                                               // use the default of 1
-                                               inst[ cache ][ 3 ] = 1;
-                                               if ( space.from ) {
-                                                       inst._rgba = space.from( inst[ cache ] );
-                                               }
-                                       }
-                               });
-                       }
-                       return this;
-               }
-       },
-       is: function( compare ) {
-               var is = color( compare ),
-                       same = true,
-                       inst = this;
-
-               each( spaces, function( _, space ) {
-                       var localCache,
-                               isCache = is[ space.cache ];
-                       if (isCache) {
-                               localCache = inst[ space.cache ] || space.to && space.to( inst._rgba ) || [];
-                               each( space.props, function( _, prop ) {
-                                       if ( isCache[ prop.idx ] != null ) {
-                                               same = ( isCache[ prop.idx ] === localCache[ prop.idx ] );
-                                               return same;
-                                       }
-                               });
-                       }
-                       return same;
-               });
-               return same;
-       },
-       _space: function() {
-               var used = [],
-                       inst = this;
-               each( spaces, function( spaceName, space ) {
-                       if ( inst[ space.cache ] ) {
-                               used.push( spaceName );
-                       }
-               });
-               return used.pop();
-       },
-       transition: function( other, distance ) {
-               var end = color( other ),
-                       spaceName = end._space(),
-                       space = spaces[ spaceName ],
-                       startColor = this.alpha() === 0 ? color( "transparent" ) : this,
-                       start = startColor[ space.cache ] || space.to( startColor._rgba ),
-                       result = start.slice();
-
-               end = end[ space.cache ];
-               each( space.props, function( key, prop ) {
-                       var index = prop.idx,
-                               startValue = start[ index ],
-                               endValue = end[ index ],
-                               type = propTypes[ prop.type ] || {};
-
-                       // if null, don't override start value
-                       if ( endValue === null ) {
-                               return;
-                       }
-                       // if null - use end
-                       if ( startValue === null ) {
-                               result[ index ] = endValue;
-                       } else {
-                               if ( type.mod ) {
-                                       if ( endValue - startValue > type.mod / 2 ) {
-                                               startValue += type.mod;
-                                       } else if ( startValue - endValue > type.mod / 2 ) {
-                                               startValue -= type.mod;
-                                       }
-                               }
-                               result[ index ] = clamp( ( endValue - startValue ) * distance + startValue, prop );
-                       }
-               });
-               return this[ spaceName ]( result );
-       },
-       blend: function( opaque ) {
-               // if we are already opaque - return ourself
-               if ( this._rgba[ 3 ] === 1 ) {
-                       return this;
-               }
-
-               var rgb = this._rgba.slice(),
-                       a = rgb.pop(),
-                       blend = color( opaque )._rgba;
-
-               return color( jQuery.map( rgb, function( v, i ) {
-                       return ( 1 - a ) * blend[ i ] + a * v;
-               }));
-       },
-       toRgbaString: function() {
-               var prefix = "rgba(",
-                       rgba = jQuery.map( this._rgba, function( v, i ) {
-                               return v == null ? ( i > 2 ? 1 : 0 ) : v;
-                       });
-
-               if ( rgba[ 3 ] === 1 ) {
-                       rgba.pop();
-                       prefix = "rgb(";
-               }
-
-               return prefix + rgba.join() + ")";
-       },
-       toHslaString: function() {
-               var prefix = "hsla(",
-                       hsla = jQuery.map( this.hsla(), function( v, i ) {
-                               if ( v == null ) {
-                                       v = i > 2 ? 1 : 0;
-                               }
-
-                               // catch 1 and 2
-                               if ( i && i < 3 ) {
-                                       v = Math.round( v * 100 ) + "%";
-                               }
-                               return v;
-                       });
-
-               if ( hsla[ 3 ] === 1 ) {
-                       hsla.pop();
-                       prefix = "hsl(";
-               }
-               return prefix + hsla.join() + ")";
-       },
-       toHexString: function( includeAlpha ) {
-               var rgba = this._rgba.slice(),
-                       alpha = rgba.pop();
-
-               if ( includeAlpha ) {
-                       rgba.push( ~~( alpha * 255 ) );
-               }
-
-               return "#" + jQuery.map( rgba, function( v ) {
-
-                       // default to 0 when nulls exist
-                       v = ( v || 0 ).toString( 16 );
-                       return v.length === 1 ? "0" + v : v;
-               }).join("");
-       },
-       toString: function() {
-               return this._rgba[ 3 ] === 0 ? "transparent" : this.toRgbaString();
-       }
-});
-color.fn.parse.prototype = color.fn;
-
-// hsla conversions adapted from:
-// https://code.google.com/p/maashaack/source/browse/packages/graphics/trunk/src/graphics/colors/HUE2RGB.as?r=5021
-
-function hue2rgb( p, q, h ) {
-       h = ( h + 1 ) % 1;
-       if ( h * 6 < 1 ) {
-               return p + ( q - p ) * h * 6;
-       }
-       if ( h * 2 < 1) {
-               return q;
-       }
-       if ( h * 3 < 2 ) {
-               return p + ( q - p ) * ( ( 2 / 3 ) - h ) * 6;
-       }
-       return p;
-}
-
-spaces.hsla.to = function( rgba ) {
-       if ( rgba[ 0 ] == null || rgba[ 1 ] == null || rgba[ 2 ] == null ) {
-               return [ null, null, null, rgba[ 3 ] ];
-       }
-       var r = rgba[ 0 ] / 255,
-               g = rgba[ 1 ] / 255,
-               b = rgba[ 2 ] / 255,
-               a = rgba[ 3 ],
-               max = Math.max( r, g, b ),
-               min = Math.min( r, g, b ),
-               diff = max - min,
-               add = max + min,
-               l = add * 0.5,
-               h, s;
-
-       if ( min === max ) {
-               h = 0;
-       } else if ( r === max ) {
-               h = ( 60 * ( g - b ) / diff ) + 360;
-       } else if ( g === max ) {
-               h = ( 60 * ( b - r ) / diff ) + 120;
-       } else {
-               h = ( 60 * ( r - g ) / diff ) + 240;
-       }
-
-       // chroma (diff) == 0 means greyscale which, by definition, saturation = 0%
-       // otherwise, saturation is based on the ratio of chroma (diff) to lightness (add)
-       if ( diff === 0 ) {
-               s = 0;
-       } else if ( l <= 0.5 ) {
-               s = diff / add;
-       } else {
-               s = diff / ( 2 - add );
-       }
-       return [ Math.round(h) % 360, s, l, a == null ? 1 : a ];
-};
-
-spaces.hsla.from = function( hsla ) {
-       if ( hsla[ 0 ] == null || hsla[ 1 ] == null || hsla[ 2 ] == null ) {
-               return [ null, null, null, hsla[ 3 ] ];
-       }
-       var h = hsla[ 0 ] / 360,
-               s = hsla[ 1 ],
-               l = hsla[ 2 ],
-               a = hsla[ 3 ],
-               q = l <= 0.5 ? l * ( 1 + s ) : l + s - l * s,
-               p = 2 * l - q;
-
-       return [
-               Math.round( hue2rgb( p, q, h + ( 1 / 3 ) ) * 255 ),
-               Math.round( hue2rgb( p, q, h ) * 255 ),
-               Math.round( hue2rgb( p, q, h - ( 1 / 3 ) ) * 255 ),
-               a
-       ];
-};
-
-each( spaces, function( spaceName, space ) {
-       var props = space.props,
-               cache = space.cache,
-               to = space.to,
-               from = space.from;
-
-       // makes rgba() and hsla()
-       color.fn[ spaceName ] = function( value ) {
-
-               // generate a cache for this space if it doesn't exist
-               if ( to && !this[ cache ] ) {
-                       this[ cache ] = to( this._rgba );
-               }
-               if ( value === undefined ) {
-                       return this[ cache ].slice();
-               }
-
-               var ret,
-                       type = jQuery.type( value ),
-                       arr = ( type === "array" || type === "object" ) ? value : arguments,
-                       local = this[ cache ].slice();
-
-               each( props, function( key, prop ) {
-                       var val = arr[ type === "object" ? key : prop.idx ];
-                       if ( val == null ) {
-                               val = local[ prop.idx ];
-                       }
-                       local[ prop.idx ] = clamp( val, prop );
-               });
-
-               if ( from ) {
-                       ret = color( from( local ) );
-                       ret[ cache ] = local;
-                       return ret;
-               } else {
-                       return color( local );
-               }
-       };
-
-       // makes red() green() blue() alpha() hue() saturation() lightness()
-       each( props, function( key, prop ) {
-               // alpha is included in more than one space
-               if ( color.fn[ key ] ) {
-                       return;
-               }
-               color.fn[ key ] = function( value ) {
-                       var vtype = jQuery.type( value ),
-                               fn = ( key === "alpha" ? ( this._hsla ? "hsla" : "rgba" ) : spaceName ),
-                               local = this[ fn ](),
-                               cur = local[ prop.idx ],
-                               match;
-
-                       if ( vtype === "undefined" ) {
-                               return cur;
-                       }
-
-                       if ( vtype === "function" ) {
-                               value = value.call( this, cur );
-                               vtype = jQuery.type( value );
-                       }
-                       if ( value == null && prop.empty ) {
-                               return this;
-                       }
-                       if ( vtype === "string" ) {
-                               match = rplusequals.exec( value );
-                               if ( match ) {
-                                       value = cur + parseFloat( match[ 2 ] ) * ( match[ 1 ] === "+" ? 1 : -1 );
-                               }
-                       }
-                       local[ prop.idx ] = value;
-                       return this[ fn ]( local );
-               };
-       });
-});
-
-// add cssHook and .fx.step function for each named hook.
-// accept a space separated string of properties
-color.hook = function( hook ) {
-       var hooks = hook.split( " " );
-       each( hooks, function( i, hook ) {
-               jQuery.cssHooks[ hook ] = {
-                       set: function( elem, value ) {
-                               var parsed, curElem,
-                                       backgroundColor = "";
-
-                               if ( value !== "transparent" && ( jQuery.type( value ) !== "string" || ( parsed = stringParse( value ) ) ) ) {
-                                       value = color( parsed || value );
-                                       if ( !support.rgba && value._rgba[ 3 ] !== 1 ) {
-                                               curElem = hook === "backgroundColor" ? elem.parentNode : elem;
-                                               while (
-                                                       (backgroundColor === "" || backgroundColor === "transparent") &&
-                                                       curElem && curElem.style
-                                               ) {
-                                                       try {
-                                                               backgroundColor = jQuery.css( curElem, "backgroundColor" );
-                                                               curElem = curElem.parentNode;
-                                                       } catch ( e ) {
-                                                       }
-                                               }
-
-                                               value = value.blend( backgroundColor && backgroundColor !== "transparent" ?
-                                                       backgroundColor :
-                                                       "_default" );
-                                       }
-
-                                       value = value.toRgbaString();
-                               }
-                               try {
-                                       elem.style[ hook ] = value;
-                               } catch ( e ) {
-                                       // wrapped to prevent IE from throwing errors on "invalid" values like 'auto' or 'inherit'
-                               }
-                       }
-               };
-               jQuery.fx.step[ hook ] = function( fx ) {
-                       if ( !fx.colorInit ) {
-                               fx.start = color( fx.elem, hook );
-                               fx.end = color( fx.end );
-                               fx.colorInit = true;
-                       }
-                       jQuery.cssHooks[ hook ].set( fx.elem, fx.start.transition( fx.end, fx.pos ) );
-               };
-       });
-
-};
-
-color.hook( stepHooks );
-
-jQuery.cssHooks.borderColor = {
-       expand: function( value ) {
-               var expanded = {};
-
-               each( [ "Top", "Right", "Bottom", "Left" ], function( i, part ) {
-                       expanded[ "border" + part + "Color" ] = value;
-               });
-               return expanded;
-       }
-};
-
-// Basic color names only.
-// Usage of any of the other color names requires adding yourself or including
-// jquery.color.svg-names.js.
-colors = jQuery.Color.names = {
-       // 4.1. Basic color keywords
-       aqua: "#00ffff",
-       black: "#000000",
-       blue: "#0000ff",
-       fuchsia: "#ff00ff",
-       gray: "#808080",
-       green: "#008000",
-       lime: "#00ff00",
-       maroon: "#800000",
-       navy: "#000080",
-       olive: "#808000",
-       purple: "#800080",
-       red: "#ff0000",
-       silver: "#c0c0c0",
-       teal: "#008080",
-       white: "#ffffff",
-       yellow: "#ffff00",
-
-       // 4.2.3. "transparent" color keyword
-       transparent: [ null, null, null, 0 ],
-
-       _default: "#ffffff"
-};
-
-})( jQuery );
-
-/******************************************************************************/
-/****************************** CLASS ANIMATIONS ******************************/
-/******************************************************************************/
-(function() {
-
-var classAnimationActions = [ "add", "remove", "toggle" ],
-       shorthandStyles = {
-               border: 1,
-               borderBottom: 1,
-               borderColor: 1,
-               borderLeft: 1,
-               borderRight: 1,
-               borderTop: 1,
-               borderWidth: 1,
-               margin: 1,
-               padding: 1
-       };
-
-$.each([ "borderLeftStyle", "borderRightStyle", "borderBottomStyle", "borderTopStyle" ], function( _, prop ) {
-       $.fx.step[ prop ] = function( fx ) {
-               if ( fx.end !== "none" && !fx.setAttr || fx.pos === 1 && !fx.setAttr ) {
-                       jQuery.style( fx.elem, prop, fx.end );
-                       fx.setAttr = true;
-               }
-       };
-});
-
-function getElementStyles( elem ) {
-       var key, len,
-               style = elem.ownerDocument.defaultView ?
-                       elem.ownerDocument.defaultView.getComputedStyle( elem, null ) :
-                       elem.currentStyle,
-               styles = {};
-
-       if ( style && style.length && style[ 0 ] && style[ style[ 0 ] ] ) {
-               len = style.length;
-               while ( len-- ) {
-                       key = style[ len ];
-                       if ( typeof style[ key ] === "string" ) {
-                               styles[ $.camelCase( key ) ] = style[ key ];
-                       }
-               }
-       // support: Opera, IE <9
-       } else {
-               for ( key in style ) {
-                       if ( typeof style[ key ] === "string" ) {
-                               styles[ key ] = style[ key ];
-                       }
-               }
-       }
-
-       return styles;
-}
-
-function styleDifference( oldStyle, newStyle ) {
-       var diff = {},
-               name, value;
-
-       for ( name in newStyle ) {
-               value = newStyle[ name ];
-               if ( oldStyle[ name ] !== value ) {
-                       if ( !shorthandStyles[ name ] ) {
-                               if ( $.fx.step[ name ] || !isNaN( parseFloat( value ) ) ) {
-                                       diff[ name ] = value;
-                               }
-                       }
-               }
-       }
-
-       return diff;
-}
-
-// support: jQuery <1.8
-if ( !$.fn.addBack ) {
-       $.fn.addBack = function( selector ) {
-               return this.add( selector == null ?
-                       this.prevObject : this.prevObject.filter( selector )
-               );
-       };
-}
-
-$.effects.animateClass = function( value, duration, easing, callback ) {
-       var o = $.speed( duration, easing, callback );
-
-       return this.queue( function() {
-               var animated = $( this ),
-                       baseClass = animated.attr( "class" ) || "",
-                       applyClassChange,
-                       allAnimations = o.children ? animated.find( "*" ).addBack() : animated;
-
-               // map the animated objects to store the original styles.
-               allAnimations = allAnimations.map(function() {
-                       var el = $( this );
-                       return {
-                               el: el,
-                               start: getElementStyles( this )
-                       };
-               });
-
-               // apply class change
-               applyClassChange = function() {
-                       $.each( classAnimationActions, function(i, action) {
-                               if ( value[ action ] ) {
-                                       animated[ action + "Class" ]( value[ action ] );
-                               }
-                       });
-               };
-               applyClassChange();
-
-               // map all animated objects again - calculate new styles and diff
-               allAnimations = allAnimations.map(function() {
-                       this.end = getElementStyles( this.el[ 0 ] );
-                       this.diff = styleDifference( this.start, this.end );
-                       return this;
-               });
-
-               // apply original class
-               animated.attr( "class", baseClass );
-
-               // map all animated objects again - this time collecting a promise
-               allAnimations = allAnimations.map(function() {
-                       var styleInfo = this,
-                               dfd = $.Deferred(),
-                               opts = $.extend({}, o, {
-                                       queue: false,
-                                       complete: function() {
-                                               dfd.resolve( styleInfo );
-                                       }
-                               });
-
-                       this.el.animate( this.diff, opts );
-                       return dfd.promise();
-               });
-
-               // once all animations have completed:
-               $.when.apply( $, allAnimations.get() ).done(function() {
-
-                       // set the final class
-                       applyClassChange();
-
-                       // for each animated element,
-                       // clear all css properties that were animated
-                       $.each( arguments, function() {
-                               var el = this.el;
-                               $.each( this.diff, function(key) {
-                                       el.css( key, "" );
-                               });
-                       });
-
-                       // this is guarnteed to be there if you use jQuery.speed()
-                       // it also handles dequeuing the next anim...
-                       o.complete.call( animated[ 0 ] );
-               });
-       });
-};
-
-$.fn.extend({
-       addClass: (function( orig ) {
-               return function( classNames, speed, easing, callback ) {
-                       return speed ?
-                               $.effects.animateClass.call( this,
-                                       { add: classNames }, speed, easing, callback ) :
-                               orig.apply( this, arguments );
-               };
-       })( $.fn.addClass ),
-
-       removeClass: (function( orig ) {
-               return function( classNames, speed, easing, callback ) {
-                       return arguments.length > 1 ?
-                               $.effects.animateClass.call( this,
-                                       { remove: classNames }, speed, easing, callback ) :
-                               orig.apply( this, arguments );
-               };
-       })( $.fn.removeClass ),
-
-       toggleClass: (function( orig ) {
-               return function( classNames, force, speed, easing, callback ) {
-                       if ( typeof force === "boolean" || force === undefined ) {
-                               if ( !speed ) {
-                                       // without speed parameter
-                                       return orig.apply( this, arguments );
-                               } else {
-                                       return $.effects.animateClass.call( this,
-                                               (force ? { add: classNames } : { remove: classNames }),
-                                               speed, easing, callback );
-                               }
-                       } else {
-                               // without force parameter
-                               return $.effects.animateClass.call( this,
-                                       { toggle: classNames }, force, speed, easing );
-                       }
-               };
-       })( $.fn.toggleClass ),
-
-       switchClass: function( remove, add, speed, easing, callback) {
-               return $.effects.animateClass.call( this, {
-                       add: add,
-                       remove: remove
-               }, speed, easing, callback );
-       }
-});
-
-})();
-
-/******************************************************************************/
-/*********************************** EFFECTS **********************************/
-/******************************************************************************/
-
-(function() {
-
-$.extend( $.effects, {
-       version: "1.11.3",
-
-       // Saves a set of properties in a data storage
-       save: function( element, set ) {
-               for ( var i = 0; i < set.length; i++ ) {
-                       if ( set[ i ] !== null ) {
-                               element.data( dataSpace + set[ i ], element[ 0 ].style[ set[ i ] ] );
-                       }
-               }
-       },
-
-       // Restores a set of previously saved properties from a data storage
-       restore: function( element, set ) {
-               var val, i;
-               for ( i = 0; i < set.length; i++ ) {
-                       if ( set[ i ] !== null ) {
-                               val = element.data( dataSpace + set[ i ] );
-                               // support: jQuery 1.6.2
-                               // http://bugs.jquery.com/ticket/9917
-                               // jQuery 1.6.2 incorrectly returns undefined for any falsy value.
-                               // We can't differentiate between "" and 0 here, so we just assume
-                               // empty string since it's likely to be a more common value...
-                               if ( val === undefined ) {
-                                       val = "";
-                               }
-                               element.css( set[ i ], val );
-                       }
-               }
-       },
-
-       setMode: function( el, mode ) {
-               if (mode === "toggle") {
-                       mode = el.is( ":hidden" ) ? "show" : "hide";
-               }
-               return mode;
-       },
-
-       // Translates a [top,left] array into a baseline value
-       // this should be a little more flexible in the future to handle a string & hash
-       getBaseline: function( origin, original ) {
-               var y, x;
-               switch ( origin[ 0 ] ) {
-                       case "top": y = 0; break;
-                       case "middle": y = 0.5; break;
-                       case "bottom": y = 1; break;
-                       default: y = origin[ 0 ] / original.height;
-               }
-               switch ( origin[ 1 ] ) {
-                       case "left": x = 0; break;
-                       case "center": x = 0.5; break;
-                       case "right": x = 1; break;
-                       default: x = origin[ 1 ] / original.width;
-               }
-               return {
-                       x: x,
-                       y: y
-               };
-       },
-
-       // Wraps the element around a wrapper that copies position properties
-       createWrapper: function( element ) {
-
-               // if the element is already wrapped, return it
-               if ( element.parent().is( ".ui-effects-wrapper" )) {
-                       return element.parent();
-               }
-
-               // wrap the element
-               var props = {
-                               width: element.outerWidth(true),
-                               height: element.outerHeight(true),
-                               "float": element.css( "float" )
-                       },
-                       wrapper = $( "<div></div>" )
-                               .addClass( "ui-effects-wrapper" )
-                               .css({
-                                       fontSize: "100%",
-                                       background: "transparent",
-                                       border: "none",
-                                       margin: 0,
-                                       padding: 0
-                               }),
-                       // Store the size in case width/height are defined in % - Fixes #5245
-                       size = {
-                               width: element.width(),
-                               height: element.height()
-                       },
-                       active = document.activeElement;
-
-               // support: Firefox
-               // Firefox incorrectly exposes anonymous content
-               // https://bugzilla.mozilla.org/show_bug.cgi?id=561664
-               try {
-                       active.id;
-               } catch ( e ) {
-                       active = document.body;
-               }
-
-               element.wrap( wrapper );
-
-               // Fixes #7595 - Elements lose focus when wrapped.
-               if ( element[ 0 ] === active || $.contains( element[ 0 ], active ) ) {
-                       $( active ).focus();
-               }
-
-               wrapper = element.parent(); //Hotfix for jQuery 1.4 since some change in wrap() seems to actually lose the reference to the wrapped element
-
-               // transfer positioning properties to the wrapper
-               if ( element.css( "position" ) === "static" ) {
-                       wrapper.css({ position: "relative" });
-                       element.css({ position: "relative" });
-               } else {
-                       $.extend( props, {
-                               position: element.css( "position" ),
-                               zIndex: element.css( "z-index" )
-                       });
-                       $.each([ "top", "left", "bottom", "right" ], function(i, pos) {
-                               props[ pos ] = element.css( pos );
-                               if ( isNaN( parseInt( props[ pos ], 10 ) ) ) {
-                                       props[ pos ] = "auto";
-                               }
-                       });
-                       element.css({
-                               position: "relative",
-                               top: 0,
-                               left: 0,
-                               right: "auto",
-                               bottom: "auto"
-                       });
-               }
-               element.css(size);
-
-               return wrapper.css( props ).show();
-       },
-
-       removeWrapper: function( element ) {
-               var active = document.activeElement;
-
-               if ( element.parent().is( ".ui-effects-wrapper" ) ) {
-                       element.parent().replaceWith( element );
-
-                       // Fixes #7595 - Elements lose focus when wrapped.
-                       if ( element[ 0 ] === active || $.contains( element[ 0 ], active ) ) {
-                               $( active ).focus();
-                       }
-               }
-
-               return element;
-       },
-
-       setTransition: function( element, list, factor, value ) {
-               value = value || {};
-               $.each( list, function( i, x ) {
-                       var unit = element.cssUnit( x );
-                       if ( unit[ 0 ] > 0 ) {
-                               value[ x ] = unit[ 0 ] * factor + unit[ 1 ];
-                       }
-               });
-               return value;
-       }
-});
-
-// return an effect options object for the given parameters:
-function _normalizeArguments( effect, options, speed, callback ) {
-
-       // allow passing all options as the first parameter
-       if ( $.isPlainObject( effect ) ) {
-               options = effect;
-               effect = effect.effect;
-       }
-
-       // convert to an object
-       effect = { effect: effect };
-
-       // catch (effect, null, ...)
-       if ( options == null ) {
-               options = {};
-       }
-
-       // catch (effect, callback)
-       if ( $.isFunction( options ) ) {
-               callback = options;
-               speed = null;
-               options = {};
-       }
-
-       // catch (effect, speed, ?)
-       if ( typeof options === "number" || $.fx.speeds[ options ] ) {
-               callback = speed;
-               speed = options;
-               options = {};
-       }
-
-       // catch (effect, options, callback)
-       if ( $.isFunction( speed ) ) {
-               callback = speed;
-               speed = null;
-       }
-
-       // add options to effect
-       if ( options ) {
-               $.extend( effect, options );
-       }
-
-       speed = speed || options.duration;
-       effect.duration = $.fx.off ? 0 :
-               typeof speed === "number" ? speed :
-               speed in $.fx.speeds ? $.fx.speeds[ speed ] :
-               $.fx.speeds._default;
-
-       effect.complete = callback || options.complete;
-
-       return effect;
-}
-
-function standardAnimationOption( option ) {
-       // Valid standard speeds (nothing, number, named speed)
-       if ( !option || typeof option === "number" || $.fx.speeds[ option ] ) {
-               return true;
-       }
-
-       // Invalid strings - treat as "normal" speed
-       if ( typeof option === "string" && !$.effects.effect[ option ] ) {
-               return true;
-       }
-
-       // Complete callback
-       if ( $.isFunction( option ) ) {
-               return true;
-       }
-
-       // Options hash (but not naming an effect)
-       if ( typeof option === "object" && !option.effect ) {
-               return true;
-       }
-
-       // Didn't match any standard API
-       return false;
-}
-
-$.fn.extend({
-       effect: function( /* effect, options, speed, callback */ ) {
-               var args = _normalizeArguments.apply( this, arguments ),
-                       mode = args.mode,
-                       queue = args.queue,
-                       effectMethod = $.effects.effect[ args.effect ];
-
-               if ( $.fx.off || !effectMethod ) {
-                       // delegate to the original method (e.g., .show()) if possible
-                       if ( mode ) {
-                               return this[ mode ]( args.duration, args.complete );
-                       } else {
-                               return this.each( function() {
-                                       if ( args.complete ) {
-                                               args.complete.call( this );
-                                       }
-                               });
-                       }
-               }
-
-               function run( next ) {
-                       var elem = $( this ),
-                               complete = args.complete,
-                               mode = args.mode;
-
-                       function done() {
-                               if ( $.isFunction( complete ) ) {
-                                       complete.call( elem[0] );
-                               }
-                               if ( $.isFunction( next ) ) {
-                                       next();
-                               }
-                       }
-
-                       // If the element already has the correct final state, delegate to
-                       // the core methods so the internal tracking of "olddisplay" works.
-                       if ( elem.is( ":hidden" ) ? mode === "hide" : mode === "show" ) {
-                               elem[ mode ]();
-                               done();
-                       } else {
-                               effectMethod.call( elem[0], args, done );
-                       }
-               }
-
-               return queue === false ? this.each( run ) : this.queue( queue || "fx", run );
-       },
-
-       show: (function( orig ) {
-               return function( option ) {
-                       if ( standardAnimationOption( option ) ) {
-                               return orig.apply( this, arguments );
-                       } else {
-                               var args = _normalizeArguments.apply( this, arguments );
-                               args.mode = "show";
-                               return this.effect.call( this, args );
-                       }
-               };
-       })( $.fn.show ),
-
-       hide: (function( orig ) {
-               return function( option ) {
-                       if ( standardAnimationOption( option ) ) {
-                               return orig.apply( this, arguments );
-                       } else {
-                               var args = _normalizeArguments.apply( this, arguments );
-                               args.mode = "hide";
-                               return this.effect.call( this, args );
-                       }
-               };
-       })( $.fn.hide ),
-
-       toggle: (function( orig ) {
-               return function( option ) {
-                       if ( standardAnimationOption( option ) || typeof option === "boolean" ) {
-                               return orig.apply( this, arguments );
-                       } else {
-                               var args = _normalizeArguments.apply( this, arguments );
-                               args.mode = "toggle";
-                               return this.effect.call( this, args );
-                       }
-               };
-       })( $.fn.toggle ),
-
-       // helper functions
-       cssUnit: function(key) {
-               var style = this.css( key ),
-                       val = [];
-
-               $.each( [ "em", "px", "%", "pt" ], function( i, unit ) {
-                       if ( style.indexOf( unit ) > 0 ) {
-                               val = [ parseFloat( style ), unit ];
-                       }
-               });
-               return val;
-       }
-});
-
-})();
-
-/******************************************************************************/
-/*********************************** EASING ***********************************/
-/******************************************************************************/
-
-(function() {
-
-// based on easing equations from Robert Penner (http://www.robertpenner.com/easing)
-
-var baseEasings = {};
-
-$.each( [ "Quad", "Cubic", "Quart", "Quint", "Expo" ], function( i, name ) {
-       baseEasings[ name ] = function( p ) {
-               return Math.pow( p, i + 2 );
-       };
-});
-
-$.extend( baseEasings, {
-       Sine: function( p ) {
-               return 1 - Math.cos( p * Math.PI / 2 );
-       },
-       Circ: function( p ) {
-               return 1 - Math.sqrt( 1 - p * p );
-       },
-       Elastic: function( p ) {
-               return p === 0 || p === 1 ? p :
-                       -Math.pow( 2, 8 * (p - 1) ) * Math.sin( ( (p - 1) * 80 - 7.5 ) * Math.PI / 15 );
-       },
-       Back: function( p ) {
-               return p * p * ( 3 * p - 2 );
-       },
-       Bounce: function( p ) {
-               var pow2,
-                       bounce = 4;
-
-               while ( p < ( ( pow2 = Math.pow( 2, --bounce ) ) - 1 ) / 11 ) {}
-               return 1 / Math.pow( 4, 3 - bounce ) - 7.5625 * Math.pow( ( pow2 * 3 - 2 ) / 22 - p, 2 );
-       }
-});
-
-$.each( baseEasings, function( name, easeIn ) {
-       $.easing[ "easeIn" + name ] = easeIn;
-       $.easing[ "easeOut" + name ] = function( p ) {
-               return 1 - easeIn( 1 - p );
-       };
-       $.easing[ "easeInOut" + name ] = function( p ) {
-               return p < 0.5 ?
-                       easeIn( p * 2 ) / 2 :
-                       1 - easeIn( p * -2 + 2 ) / 2;
-       };
-});
-
-})();
-
-var effect = $.effects;
-
-
-/*!
- * jQuery UI Effects Blind 1.11.3
- * http://jqueryui.com
- *
- * Copyright jQuery Foundation and other contributors
- * Released under the MIT license.
- * http://jquery.org/license
- *
- * http://api.jqueryui.com/blind-effect/
- */
-
-
-var effectBlind = $.effects.effect.blind = function( o, done ) {
-       // Create element
-       var el = $( this ),
-               rvertical = /up|down|vertical/,
-               rpositivemotion = /up|left|vertical|horizontal/,
-               props = [ "position", "top", "bottom", "left", "right", "height", "width" ],
-               mode = $.effects.setMode( el, o.mode || "hide" ),
-               direction = o.direction || "up",
-               vertical = rvertical.test( direction ),
-               ref = vertical ? "height" : "width",
-               ref2 = vertical ? "top" : "left",
-               motion = rpositivemotion.test( direction ),
-               animation = {},
-               show = mode === "show",
-               wrapper, distance, margin;
-
-       // if already wrapped, the wrapper's properties are my property. #6245
-       if ( el.parent().is( ".ui-effects-wrapper" ) ) {
-               $.effects.save( el.parent(), props );
-       } else {
-               $.effects.save( el, props );
-       }
-       el.show();
-       wrapper = $.effects.createWrapper( el ).css({
-               overflow: "hidden"
-       });
-
-       distance = wrapper[ ref ]();
-       margin = parseFloat( wrapper.css( ref2 ) ) || 0;
-
-       animation[ ref ] = show ? distance : 0;
-       if ( !motion ) {
-               el
-                       .css( vertical ? "bottom" : "right", 0 )
-                       .css( vertical ? "top" : "left", "auto" )
-                       .css({ position: "absolute" });
-
-               animation[ ref2 ] = show ? margin : distance + margin;
-       }
-
-       // start at 0 if we are showing
-       if ( show ) {
-               wrapper.css( ref, 0 );
-               if ( !motion ) {
-                       wrapper.css( ref2, margin + distance );
-               }
-       }
-
-       // Animate
-       wrapper.animate( animation, {
-               duration: o.duration,
-               easing: o.easing,
-               queue: false,
-               complete: function() {
-                       if ( mode === "hide" ) {
-                               el.hide();
-                       }
-                       $.effects.restore( el, props );
-                       $.effects.removeWrapper( el );
-                       done();
-               }
-       });
-};
-
-
-/*!
- * jQuery UI Effects Bounce 1.11.3
- * http://jqueryui.com
- *
- * Copyright jQuery Foundation and other contributors
- * Released under the MIT license.
- * http://jquery.org/license
- *
- * http://api.jqueryui.com/bounce-effect/
- */
-
-
-var effectBounce = $.effects.effect.bounce = function( o, done ) {
-       var el = $( this ),
-               props = [ "position", "top", "bottom", "left", "right", "height", "width" ],
-
-               // defaults:
-               mode = $.effects.setMode( el, o.mode || "effect" ),
-               hide = mode === "hide",
-               show = mode === "show",
-               direction = o.direction || "up",
-               distance = o.distance,
-               times = o.times || 5,
-
-               // number of internal animations
-               anims = times * 2 + ( show || hide ? 1 : 0 ),
-               speed = o.duration / anims,
-               easing = o.easing,
-
-               // utility:
-               ref = ( direction === "up" || direction === "down" ) ? "top" : "left",
-               motion = ( direction === "up" || direction === "left" ),
-               i,
-               upAnim,
-               downAnim,
-
-               // we will need to re-assemble the queue to stack our animations in place
-               queue = el.queue(),
-               queuelen = queue.length;
-
-       // Avoid touching opacity to prevent clearType and PNG issues in IE
-       if ( show || hide ) {
-               props.push( "opacity" );
-       }
-
-       $.effects.save( el, props );
-       el.show();
-       $.effects.createWrapper( el ); // Create Wrapper
-
-       // default distance for the BIGGEST bounce is the outer Distance / 3
-       if ( !distance ) {
-               distance = el[ ref === "top" ? "outerHeight" : "outerWidth" ]() / 3;
-       }
-
-       if ( show ) {
-               downAnim = { opacity: 1 };
-               downAnim[ ref ] = 0;
-
-               // if we are showing, force opacity 0 and set the initial position
-               // then do the "first" animation
-               el.css( "opacity", 0 )
-                       .css( ref, motion ? -distance * 2 : distance * 2 )
-                       .animate( downAnim, speed, easing );
-       }
-
-       // start at the smallest distance if we are hiding
-       if ( hide ) {
-               distance = distance / Math.pow( 2, times - 1 );
-       }
-
-       downAnim = {};
-       downAnim[ ref ] = 0;
-       // Bounces up/down/left/right then back to 0 -- times * 2 animations happen here
-       for ( i = 0; i < times; i++ ) {
-               upAnim = {};
-               upAnim[ ref ] = ( motion ? "-=" : "+=" ) + distance;
-
-               el.animate( upAnim, speed, easing )
-                       .animate( downAnim, speed, easing );
-
-               distance = hide ? distance * 2 : distance / 2;
-       }
-
-       // Last Bounce when Hiding
-       if ( hide ) {
-               upAnim = { opacity: 0 };
-               upAnim[ ref ] = ( motion ? "-=" : "+=" ) + distance;
-
-               el.animate( upAnim, speed, easing );
-       }
-
-       el.queue(function() {
-               if ( hide ) {
-                       el.hide();
-               }
-               $.effects.restore( el, props );
-               $.effects.removeWrapper( el );
-               done();
-       });
-
-       // inject all the animations we just queued to be first in line (after "inprogress")
-       if ( queuelen > 1) {
-               queue.splice.apply( queue,
-                       [ 1, 0 ].concat( queue.splice( queuelen, anims + 1 ) ) );
-       }
-       el.dequeue();
-
-};
-
-
-/*!
- * jQuery UI Effects Clip 1.11.3
- * http://jqueryui.com
- *
- * Copyright jQuery Foundation and other contributors
- * Released under the MIT license.
- * http://jquery.org/license
- *
- * http://api.jqueryui.com/clip-effect/
- */
-
-
-var effectClip = $.effects.effect.clip = function( o, done ) {
-       // Create element
-       var el = $( this ),
-               props = [ "position", "top", "bottom", "left", "right", "height", "width" ],
-               mode = $.effects.setMode( el, o.mode || "hide" ),
-               show = mode === "show",
-               direction = o.direction || "vertical",
-               vert = direction === "vertical",
-               size = vert ? "height" : "width",
-               position = vert ? "top" : "left",
-               animation = {},
-               wrapper, animate, distance;
-
-       // Save & Show
-       $.effects.save( el, props );
-       el.show();
-
-       // Create Wrapper
-       wrapper = $.effects.createWrapper( el ).css({
-               overflow: "hidden"
-       });
-       animate = ( el[0].tagName === "IMG" ) ? wrapper : el;
-       distance = animate[ size ]();
-
-       // Shift
-       if ( show ) {
-               animate.css( size, 0 );
-               animate.css( position, distance / 2 );
-       }
-
-       // Create Animation Object:
-       animation[ size ] = show ? distance : 0;
-       animation[ position ] = show ? 0 : distance / 2;
-
-       // Animate
-       animate.animate( animation, {
-               queue: false,
-               duration: o.duration,
-               easing: o.easing,
-               complete: function() {
-                       if ( !show ) {
-                               el.hide();
-                       }
-                       $.effects.restore( el, props );
-                       $.effects.removeWrapper( el );
-                       done();
-               }
-       });
-
-};
-
-
-/*!
- * jQuery UI Effects Drop 1.11.3
- * http://jqueryui.com
- *
- * Copyright jQuery Foundation and other contributors
- * Released under the MIT license.
- * http://jquery.org/license
- *
- * http://api.jqueryui.com/drop-effect/
- */
-
-
-var effectDrop = $.effects.effect.drop = function( o, done ) {
-
-       var el = $( this ),
-               props = [ "position", "top", "bottom", "left", "right", "opacity", "height", "width" ],
-               mode = $.effects.setMode( el, o.mode || "hide" ),
-               show = mode === "show",
-               direction = o.direction || "left",
-               ref = ( direction === "up" || direction === "down" ) ? "top" : "left",
-               motion = ( direction === "up" || direction === "left" ) ? "pos" : "neg",
-               animation = {
-                       opacity: show ? 1 : 0
-               },
-               distance;
-
-       // Adjust
-       $.effects.save( el, props );
-       el.show();
-       $.effects.createWrapper( el );
-
-       distance = o.distance || el[ ref === "top" ? "outerHeight" : "outerWidth" ]( true ) / 2;
-
-       if ( show ) {
-               el
-                       .css( "opacity", 0 )
-                       .css( ref, motion === "pos" ? -distance : distance );
-       }
-
-       // Animation
-       animation[ ref ] = ( show ?
-               ( motion === "pos" ? "+=" : "-=" ) :
-               ( motion === "pos" ? "-=" : "+=" ) ) +
-               distance;
-
-       // Animate
-       el.animate( animation, {
-               queue: false,
-               duration: o.duration,
-               easing: o.easing,
-               complete: function() {
-                       if ( mode === "hide" ) {
-                               el.hide();
-                       }
-                       $.effects.restore( el, props );
-                       $.effects.removeWrapper( el );
-                       done();
-               }
-       });
-};
-
-
-/*!
- * jQuery UI Effects Explode 1.11.3
- * http://jqueryui.com
- *
- * Copyright jQuery Foundation and other contributors
- * Released under the MIT license.
- * http://jquery.org/license
- *
- * http://api.jqueryui.com/explode-effect/
- */
-
-
-var effectExplode = $.effects.effect.explode = function( o, done ) {
-
-       var rows = o.pieces ? Math.round( Math.sqrt( o.pieces ) ) : 3,
-               cells = rows,
-               el = $( this ),
-               mode = $.effects.setMode( el, o.mode || "hide" ),
-               show = mode === "show",
-
-               // show and then visibility:hidden the element before calculating offset
-               offset = el.show().css( "visibility", "hidden" ).offset(),
-
-               // width and height of a piece
-               width = Math.ceil( el.outerWidth() / cells ),
-               height = Math.ceil( el.outerHeight() / rows ),
-               pieces = [],
-
-               // loop
-               i, j, left, top, mx, my;
-
-       // children animate complete:
-       function childComplete() {
-               pieces.push( this );
-               if ( pieces.length === rows * cells ) {
-                       animComplete();
-               }
-       }
-
-       // clone the element for each row and cell.
-       for ( i = 0; i < rows ; i++ ) { // ===>
-               top = offset.top + i * height;
-               my = i - ( rows - 1 ) / 2 ;
-
-               for ( j = 0; j < cells ; j++ ) { // |||
-                       left = offset.left + j * width;
-                       mx = j - ( cells - 1 ) / 2 ;
-
-                       // Create a clone of the now hidden main element that will be absolute positioned
-                       // within a wrapper div off the -left and -top equal to size of our pieces
-                       el
-                               .clone()
-                               .appendTo( "body" )
-                               .wrap( "<div></div>" )
-                               .css({
-                                       position: "absolute",
-                                       visibility: "visible",
-                                       left: -j * width,
-                                       top: -i * height
-                               })
-
-                       // select the wrapper - make it overflow: hidden and absolute positioned based on
-                       // where the original was located +left and +top equal to the size of pieces
-                               .parent()
-                               .addClass( "ui-effects-explode" )
-                               .css({
-                                       position: "absolute",
-                                       overflow: "hidden",
-                                       width: width,
-                                       height: height,
-                                       left: left + ( show ? mx * width : 0 ),
-                                       top: top + ( show ? my * height : 0 ),
-                                       opacity: show ? 0 : 1
-                               }).animate({
-                                       left: left + ( show ? 0 : mx * width ),
-                                       top: top + ( show ? 0 : my * height ),
-                                       opacity: show ? 1 : 0
-                               }, o.duration || 500, o.easing, childComplete );
-               }
-       }
-
-       function animComplete() {
-               el.css({
-                       visibility: "visible"
-               });
-               $( pieces ).remove();
-               if ( !show ) {
-                       el.hide();
-               }
-               done();
-       }
-};
-
-
-/*!
- * jQuery UI Effects Fade 1.11.3
- * http://jqueryui.com
- *
- * Copyright jQuery Foundation and other contributors
- * Released under the MIT license.
- * http://jquery.org/license
- *
- * http://api.jqueryui.com/fade-effect/
- */
-
-
-var effectFade = $.effects.effect.fade = function( o, done ) {
-       var el = $( this ),
-               mode = $.effects.setMode( el, o.mode || "toggle" );
-
-       el.animate({
-               opacity: mode
-       }, {
-               queue: false,
-               duration: o.duration,
-               easing: o.easing,
-               complete: done
-       });
-};
-
-
-/*!
- * jQuery UI Effects Fold 1.11.3
- * http://jqueryui.com
- *
- * Copyright jQuery Foundation and other contributors
- * Released under the MIT license.
- * http://jquery.org/license
- *
- * http://api.jqueryui.com/fold-effect/
- */
-
-
-var effectFold = $.effects.effect.fold = function( o, done ) {
-
-       // Create element
-       var el = $( this ),
-               props = [ "position", "top", "bottom", "left", "right", "height", "width" ],
-               mode = $.effects.setMode( el, o.mode || "hide" ),
-               show = mode === "show",
-               hide = mode === "hide",
-               size = o.size || 15,
-               percent = /([0-9]+)%/.exec( size ),
-               horizFirst = !!o.horizFirst,
-               widthFirst = show !== horizFirst,
-               ref = widthFirst ? [ "width", "height" ] : [ "height", "width" ],
-               duration = o.duration / 2,
-               wrapper, distance,
-               animation1 = {},
-               animation2 = {};
-
-       $.effects.save( el, props );
-       el.show();
-
-       // Create Wrapper
-       wrapper = $.effects.createWrapper( el ).css({
-               overflow: "hidden"
-       });
-       distance = widthFirst ?
-               [ wrapper.width(), wrapper.height() ] :
-               [ wrapper.height(), wrapper.width() ];
-
-       if ( percent ) {
-               size = parseInt( percent[ 1 ], 10 ) / 100 * distance[ hide ? 0 : 1 ];
-       }
-       if ( show ) {
-               wrapper.css( horizFirst ? {
-                       height: 0,
-                       width: size
-               } : {
-                       height: size,
-                       width: 0
-               });
-       }
-
-       // Animation
-       animation1[ ref[ 0 ] ] = show ? distance[ 0 ] : size;
-       animation2[ ref[ 1 ] ] = show ? distance[ 1 ] : 0;
-
-       // Animate
-       wrapper
-               .animate( animation1, duration, o.easing )
-               .animate( animation2, duration, o.easing, function() {
-                       if ( hide ) {
-                               el.hide();
-                       }
-                       $.effects.restore( el, props );
-                       $.effects.removeWrapper( el );
-                       done();
-               });
-
-};
-
-
-/*!
- * jQuery UI Effects Highlight 1.11.3
- * http://jqueryui.com
- *
- * Copyright jQuery Foundation and other contributors
- * Released under the MIT license.
- * http://jquery.org/license
- *
- * http://api.jqueryui.com/highlight-effect/
- */
-
-
-var effectHighlight = $.effects.effect.highlight = function( o, done ) {
-       var elem = $( this ),
-               props = [ "backgroundImage", "backgroundColor", "opacity" ],
-               mode = $.effects.setMode( elem, o.mode || "show" ),
-               animation = {
-                       backgroundColor: elem.css( "backgroundColor" )
-               };
-
-       if (mode === "hide") {
-               animation.opacity = 0;
-       }
-
-       $.effects.save( elem, props );
-
-       elem
-               .show()
-               .css({
-                       backgroundImage: "none",
-                       backgroundColor: o.color || "#ffff99"
-               })
-               .animate( animation, {
-                       queue: false,
-                       duration: o.duration,
-                       easing: o.easing,
-                       complete: function() {
-                               if ( mode === "hide" ) {
-                                       elem.hide();
-                               }
-                               $.effects.restore( elem, props );
-                               done();
-                       }
-               });
-};
-
-
-/*!
- * jQuery UI Effects Size 1.11.3
- * http://jqueryui.com
- *
- * Copyright jQuery Foundation and other contributors
- * Released under the MIT license.
- * http://jquery.org/license
- *
- * http://api.jqueryui.com/size-effect/
- */
-
-
-var effectSize = $.effects.effect.size = function( o, done ) {
-
-       // Create element
-       var original, baseline, factor,
-               el = $( this ),
-               props0 = [ "position", "top", "bottom", "left", "right", "width", "height", "overflow", "opacity" ],
-
-               // Always restore
-               props1 = [ "position", "top", "bottom", "left", "right", "overflow", "opacity" ],
-
-               // Copy for children
-               props2 = [ "width", "height", "overflow" ],
-               cProps = [ "fontSize" ],
-               vProps = [ "borderTopWidth", "borderBottomWidth", "paddingTop", "paddingBottom" ],
-               hProps = [ "borderLeftWidth", "borderRightWidth", "paddingLeft", "paddingRight" ],
-
-               // Set options
-               mode = $.effects.setMode( el, o.mode || "effect" ),
-               restore = o.restore || mode !== "effect",
-               scale = o.scale || "both",
-               origin = o.origin || [ "middle", "center" ],
-               position = el.css( "position" ),
-               props = restore ? props0 : props1,
-               zero = {
-                       height: 0,
-                       width: 0,
-                       outerHeight: 0,
-                       outerWidth: 0
-               };
-
-       if ( mode === "show" ) {
-               el.show();
-       }
-       original = {
-               height: el.height(),
-               width: el.width(),
-               outerHeight: el.outerHeight(),
-               outerWidth: el.outerWidth()
-       };
-
-       if ( o.mode === "toggle" && mode === "show" ) {
-               el.from = o.to || zero;
-               el.to = o.from || original;
-       } else {
-               el.from = o.from || ( mode === "show" ? zero : original );
-               el.to = o.to || ( mode === "hide" ? zero : original );
-       }
-
-       // Set scaling factor
-       factor = {
-               from: {
-                       y: el.from.height / original.height,
-                       x: el.from.width / original.width
-               },
-               to: {
-                       y: el.to.height / original.height,
-                       x: el.to.width / original.width
-               }
-       };
-
-       // Scale the css box
-       if ( scale === "box" || scale === "both" ) {
-
-               // Vertical props scaling
-               if ( factor.from.y !== factor.to.y ) {
-                       props = props.concat( vProps );
-                       el.from = $.effects.setTransition( el, vProps, factor.from.y, el.from );
-                       el.to = $.effects.setTransition( el, vProps, factor.to.y, el.to );
-               }
-
-               // Horizontal props scaling
-               if ( factor.from.x !== factor.to.x ) {
-                       props = props.concat( hProps );
-                       el.from = $.effects.setTransition( el, hProps, factor.from.x, el.from );
-                       el.to = $.effects.setTransition( el, hProps, factor.to.x, el.to );
-               }
-       }
-
-       // Scale the content
-       if ( scale === "content" || scale === "both" ) {
-
-               // Vertical props scaling
-               if ( factor.from.y !== factor.to.y ) {
-                       props = props.concat( cProps ).concat( props2 );
-                       el.from = $.effects.setTransition( el, cProps, factor.from.y, el.from );
-                       el.to = $.effects.setTransition( el, cProps, factor.to.y, el.to );
-               }
-       }
-
-       $.effects.save( el, props );
-       el.show();
-       $.effects.createWrapper( el );
-       el.css( "overflow", "hidden" ).css( el.from );
-
-       // Adjust
-       if (origin) { // Calculate baseline shifts
-               baseline = $.effects.getBaseline( origin, original );
-               el.from.top = ( original.outerHeight - el.outerHeight() ) * baseline.y;
-               el.from.left = ( original.outerWidth - el.outerWidth() ) * baseline.x;
-               el.to.top = ( original.outerHeight - el.to.outerHeight ) * baseline.y;
-               el.to.left = ( original.outerWidth - el.to.outerWidth ) * baseline.x;
-       }
-       el.css( el.from ); // set top & left
-
-       // Animate
-       if ( scale === "content" || scale === "both" ) { // Scale the children
-
-               // Add margins/font-size
-               vProps = vProps.concat([ "marginTop", "marginBottom" ]).concat(cProps);
-               hProps = hProps.concat([ "marginLeft", "marginRight" ]);
-               props2 = props0.concat(vProps).concat(hProps);
-
-               el.find( "*[width]" ).each( function() {
-                       var child = $( this ),
-                               c_original = {
-                                       height: child.height(),
-                                       width: child.width(),
-                                       outerHeight: child.outerHeight(),
-                                       outerWidth: child.outerWidth()
-                               };
-                       if (restore) {
-                               $.effects.save(child, props2);
-                       }
-
-                       child.from = {
-                               height: c_original.height * factor.from.y,
-                               width: c_original.width * factor.from.x,
-                               outerHeight: c_original.outerHeight * factor.from.y,
-                               outerWidth: c_original.outerWidth * factor.from.x
-                       };
-                       child.to = {
-                               height: c_original.height * factor.to.y,
-                               width: c_original.width * factor.to.x,
-                               outerHeight: c_original.height * factor.to.y,
-                               outerWidth: c_original.width * factor.to.x
-                       };
-
-                       // Vertical props scaling
-                       if ( factor.from.y !== factor.to.y ) {
-                               child.from = $.effects.setTransition( child, vProps, factor.from.y, child.from );
-                               child.to = $.effects.setTransition( child, vProps, factor.to.y, child.to );
-                       }
-
-                       // Horizontal props scaling
-                       if ( factor.from.x !== factor.to.x ) {
-                               child.from = $.effects.setTransition( child, hProps, factor.from.x, child.from );
-                               child.to = $.effects.setTransition( child, hProps, factor.to.x, child.to );
-                       }
-
-                       // Animate children
-                       child.css( child.from );
-                       child.animate( child.to, o.duration, o.easing, function() {
-
-                               // Restore children
-                               if ( restore ) {
-                                       $.effects.restore( child, props2 );
-                               }
-                       });
-               });
-       }
-
-       // Animate
-       el.animate( el.to, {
-               queue: false,
-               duration: o.duration,
-               easing: o.easing,
-               complete: function() {
-                       if ( el.to.opacity === 0 ) {
-                               el.css( "opacity", el.from.opacity );
-                       }
-                       if ( mode === "hide" ) {
-                               el.hide();
-                       }
-                       $.effects.restore( el, props );
-                       if ( !restore ) {
-
-                               // we need to calculate our new positioning based on the scaling
-                               if ( position === "static" ) {
-                                       el.css({
-                                               position: "relative",
-                                               top: el.to.top,
-                                               left: el.to.left
-                                       });
-                               } else {
-                                       $.each([ "top", "left" ], function( idx, pos ) {
-                                               el.css( pos, function( _, str ) {
-                                                       var val = parseInt( str, 10 ),
-                                                               toRef = idx ? el.to.left : el.to.top;
-
-                                                       // if original was "auto", recalculate the new value from wrapper
-                                                       if ( str === "auto" ) {
-                                                               return toRef + "px";
-                                                       }
-
-                                                       return val + toRef + "px";
-                                               });
-                                       });
-                               }
-                       }
-
-                       $.effects.removeWrapper( el );
-                       done();
-               }
-       });
-
-};
-
-
-/*!
- * jQuery UI Effects Scale 1.11.3
- * http://jqueryui.com
- *
- * Copyright jQuery Foundation and other contributors
- * Released under the MIT license.
- * http://jquery.org/license
- *
- * http://api.jqueryui.com/scale-effect/
- */
-
-
-var effectScale = $.effects.effect.scale = function( o, done ) {
-
-       // Create element
-       var el = $( this ),
-               options = $.extend( true, {}, o ),
-               mode = $.effects.setMode( el, o.mode || "effect" ),
-               percent = parseInt( o.percent, 10 ) ||
-                       ( parseInt( o.percent, 10 ) === 0 ? 0 : ( mode === "hide" ? 0 : 100 ) ),
-               direction = o.direction || "both",
-               origin = o.origin,
-               original = {
-                       height: el.height(),
-                       width: el.width(),
-                       outerHeight: el.outerHeight(),
-                       outerWidth: el.outerWidth()
-               },
-               factor = {
-                       y: direction !== "horizontal" ? (percent / 100) : 1,
-                       x: direction !== "vertical" ? (percent / 100) : 1
-               };
-
-       // We are going to pass this effect to the size effect:
-       options.effect = "size";
-       options.queue = false;
-       options.complete = done;
-
-       // Set default origin and restore for show/hide
-       if ( mode !== "effect" ) {
-               options.origin = origin || [ "middle", "center" ];
-               options.restore = true;
-       }
-
-       options.from = o.from || ( mode === "show" ? {
-               height: 0,
-               width: 0,
-               outerHeight: 0,
-               outerWidth: 0
-       } : original );
-       options.to = {
-               height: original.height * factor.y,
-               width: original.width * factor.x,
-               outerHeight: original.outerHeight * factor.y,
-               outerWidth: original.outerWidth * factor.x
-       };
-
-       // Fade option to support puff
-       if ( options.fade ) {
-               if ( mode === "show" ) {
-                       options.from.opacity = 0;
-                       options.to.opacity = 1;
-               }
-               if ( mode === "hide" ) {
-                       options.from.opacity = 1;
-                       options.to.opacity = 0;
-               }
-       }
-
-       // Animate
-       el.effect( options );
-
-};
-
-
-/*!
- * jQuery UI Effects Puff 1.11.3
- * http://jqueryui.com
- *
- * Copyright jQuery Foundation and other contributors
- * Released under the MIT license.
- * http://jquery.org/license
- *
- * http://api.jqueryui.com/puff-effect/
- */
-
-
-var effectPuff = $.effects.effect.puff = function( o, done ) {
-       var elem = $( this ),
-               mode = $.effects.setMode( elem, o.mode || "hide" ),
-               hide = mode === "hide",
-               percent = parseInt( o.percent, 10 ) || 150,
-               factor = percent / 100,
-               original = {
-                       height: elem.height(),
-                       width: elem.width(),
-                       outerHeight: elem.outerHeight(),
-                       outerWidth: elem.outerWidth()
-               };
-
-       $.extend( o, {
-               effect: "scale",
-               queue: false,
-               fade: true,
-               mode: mode,
-               complete: done,
-               percent: hide ? percent : 100,
-               from: hide ?
-                       original :
-                       {
-                               height: original.height * factor,
-                               width: original.width * factor,
-                               outerHeight: original.outerHeight * factor,
-                               outerWidth: original.outerWidth * factor
-                       }
-       });
-
-       elem.effect( o );
-};
-
-
-/*!
- * jQuery UI Effects Pulsate 1.11.3
- * http://jqueryui.com
- *
- * Copyright jQuery Foundation and other contributors
- * Released under the MIT license.
- * http://jquery.org/license
- *
- * http://api.jqueryui.com/pulsate-effect/
- */
-
-
-var effectPulsate = $.effects.effect.pulsate = function( o, done ) {
-       var elem = $( this ),
-               mode = $.effects.setMode( elem, o.mode || "show" ),
-               show = mode === "show",
-               hide = mode === "hide",
-               showhide = ( show || mode === "hide" ),
-
-               // showing or hiding leaves of the "last" animation
-               anims = ( ( o.times || 5 ) * 2 ) + ( showhide ? 1 : 0 ),
-               duration = o.duration / anims,
-               animateTo = 0,
-               queue = elem.queue(),
-               queuelen = queue.length,
-               i;
-
-       if ( show || !elem.is(":visible")) {
-               elem.css( "opacity", 0 ).show();
-               animateTo = 1;
-       }
-
-       // anims - 1 opacity "toggles"
-       for ( i = 1; i < anims; i++ ) {
-               elem.animate({
-                       opacity: animateTo
-               }, duration, o.easing );
-               animateTo = 1 - animateTo;
-       }
-
-       elem.animate({
-               opacity: animateTo
-       }, duration, o.easing);
-
-       elem.queue(function() {
-               if ( hide ) {
-                       elem.hide();
-               }
-               done();
-       });
-
-       // We just queued up "anims" animations, we need to put them next in the queue
-       if ( queuelen > 1 ) {
-               queue.splice.apply( queue,
-                       [ 1, 0 ].concat( queue.splice( queuelen, anims + 1 ) ) );
-       }
-       elem.dequeue();
-};
-
-
-/*!
- * jQuery UI Effects Shake 1.11.3
- * http://jqueryui.com
- *
- * Copyright jQuery Foundation and other contributors
- * Released under the MIT license.
- * http://jquery.org/license
- *
- * http://api.jqueryui.com/shake-effect/
- */
-
-
-var effectShake = $.effects.effect.shake = function( o, done ) {
-
-       var el = $( this ),
-               props = [ "position", "top", "bottom", "left", "right", "height", "width" ],
-               mode = $.effects.setMode( el, o.mode || "effect" ),
-               direction = o.direction || "left",
-               distance = o.distance || 20,
-               times = o.times || 3,
-               anims = times * 2 + 1,
-               speed = Math.round( o.duration / anims ),
-               ref = (direction === "up" || direction === "down") ? "top" : "left",
-               positiveMotion = (direction === "up" || direction === "left"),
-               animation = {},
-               animation1 = {},
-               animation2 = {},
-               i,
-
-               // we will need to re-assemble the queue to stack our animations in place
-               queue = el.queue(),
-               queuelen = queue.length;
-
-       $.effects.save( el, props );
-       el.show();
-       $.effects.createWrapper( el );
-
-       // Animation
-       animation[ ref ] = ( positiveMotion ? "-=" : "+=" ) + distance;
-       animation1[ ref ] = ( positiveMotion ? "+=" : "-=" ) + distance * 2;
-       animation2[ ref ] = ( positiveMotion ? "-=" : "+=" ) + distance * 2;
-
-       // Animate
-       el.animate( animation, speed, o.easing );
-
-       // Shakes
-       for ( i = 1; i < times; i++ ) {
-               el.animate( animation1, speed, o.easing ).animate( animation2, speed, o.easing );
-       }
-       el
-               .animate( animation1, speed, o.easing )
-               .animate( animation, speed / 2, o.easing )
-               .queue(function() {
-                       if ( mode === "hide" ) {
-                               el.hide();
-                       }
-                       $.effects.restore( el, props );
-                       $.effects.removeWrapper( el );
-                       done();
-               });
-
-       // inject all the animations we just queued to be first in line (after "inprogress")
-       if ( queuelen > 1) {
-               queue.splice.apply( queue,
-                       [ 1, 0 ].concat( queue.splice( queuelen, anims + 1 ) ) );
-       }
-       el.dequeue();
-
-};
-
-
-/*!
- * jQuery UI Effects Slide 1.11.3
- * http://jqueryui.com
- *
- * Copyright jQuery Foundation and other contributors
- * Released under the MIT license.
- * http://jquery.org/license
- *
- * http://api.jqueryui.com/slide-effect/
- */
-
-
-var effectSlide = $.effects.effect.slide = function( o, done ) {
-
-       // Create element
-       var el = $( this ),
-               props = [ "position", "top", "bottom", "left", "right", "width", "height" ],
-               mode = $.effects.setMode( el, o.mode || "show" ),
-               show = mode === "show",
-               direction = o.direction || "left",
-               ref = (direction === "up" || direction === "down") ? "top" : "left",
-               positiveMotion = (direction === "up" || direction === "left"),
-               distance,
-               animation = {};
-
-       // Adjust
-       $.effects.save( el, props );
-       el.show();
-       distance = o.distance || el[ ref === "top" ? "outerHeight" : "outerWidth" ]( true );
-
-       $.effects.createWrapper( el ).css({
-               overflow: "hidden"
-       });
-
-       if ( show ) {
-               el.css( ref, positiveMotion ? (isNaN(distance) ? "-" + distance : -distance) : distance );
-       }
-
-       // Animation
-       animation[ ref ] = ( show ?
-               ( positiveMotion ? "+=" : "-=") :
-               ( positiveMotion ? "-=" : "+=")) +
-               distance;
-
-       // Animate
-       el.animate( animation, {
-               queue: false,
-               duration: o.duration,
-               easing: o.easing,
-               complete: function() {
-                       if ( mode === "hide" ) {
-                               el.hide();
-                       }
-                       $.effects.restore( el, props );
-                       $.effects.removeWrapper( el );
-                       done();
-               }
-       });
-};
-
-
-/*!
- * jQuery UI Effects Transfer 1.11.3
- * http://jqueryui.com
- *
- * Copyright jQuery Foundation and other contributors
- * Released under the MIT license.
- * http://jquery.org/license
- *
- * http://api.jqueryui.com/transfer-effect/
- */
-
-
-var effectTransfer = $.effects.effect.transfer = function( o, done ) {
-       var elem = $( this ),
-               target = $( o.to ),
-               targetFixed = target.css( "position" ) === "fixed",
-               body = $("body"),
-               fixTop = targetFixed ? body.scrollTop() : 0,
-               fixLeft = targetFixed ? body.scrollLeft() : 0,
-               endPosition = target.offset(),
-               animation = {
-                       top: endPosition.top - fixTop,
-                       left: endPosition.left - fixLeft,
-                       height: target.innerHeight(),
-                       width: target.innerWidth()
-               },
-               startPosition = elem.offset(),
-               transfer = $( "<div class='ui-effects-transfer'></div>" )
-                       .appendTo( document.body )
-                       .addClass( o.className )
-                       .css({
-                               top: startPosition.top - fixTop,
-                               left: startPosition.left - fixLeft,
-                               height: elem.innerHeight(),
-                               width: elem.innerWidth(),
-                               position: targetFixed ? "fixed" : "absolute"
-                       })
-                       .animate( animation, o.duration, o.easing, function() {
-                               transfer.remove();
-                               done();
-                       });
-};
-
-
-
-}));
\ No newline at end of file
diff --git a/src/main/resources/META-INF/resources/designer/lib/jquery-ui-1.11.3.custom/jquery-ui.min.css b/src/main/resources/META-INF/resources/designer/lib/jquery-ui-1.11.3.custom/jquery-ui.min.css
deleted file mode 100644 (file)
index 640dc1e..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-/*! jQuery UI - v1.11.3 - 2015-03-03
-* http://jqueryui.com
-* Includes: core.css, draggable.css, resizable.css, selectable.css, sortable.css, accordion.css, autocomplete.css, button.css, datepicker.css, dialog.css, menu.css, progressbar.css, selectmenu.css, slider.css, spinner.css, tabs.css, tooltip.css, theme.css
-* To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Verdana%2CArial%2Csans-serif&fwDefault=normal&fsDefault=1.1em&cornerRadius=4px&bgColorHeader=cccccc&bgTextureHeader=highlight_soft&bgImgOpacityHeader=75&borderColorHeader=aaaaaa&fcHeader=222222&iconColorHeader=222222&bgColorContent=ffffff&bgTextureContent=flat&bgImgOpacityContent=75&borderColorContent=aaaaaa&fcContent=222222&iconColorContent=222222&bgColorDefault=e6e6e6&bgTextureDefault=glass&bgImgOpacityDefault=75&borderColorDefault=d3d3d3&fcDefault=555555&iconColorDefault=888888&bgColorHover=dadada&bgTextureHover=glass&bgImgOpacityHover=75&borderColorHover=999999&fcHover=212121&iconColorHover=454545&bgColorActive=ffffff&bgTextureActive=glass&bgImgOpacityActive=65&borderColorActive=aaaaaa&fcActive=212121&iconColorActive=454545&bgColorHighlight=fbf9ee&bgTextureHighlight=glass&bgImgOpacityHighlight=55&borderColorHighlight=fcefa1&fcHighlight=363636&iconColorHighlight=2e83ff&bgColorError=fef1ec&bgTextureError=glass&bgImgOpacityError=95&borderColorError=cd0a0a&fcError=cd0a0a&iconColorError=cd0a0a&bgColorOverlay=aaaaaa&bgTextureOverlay=flat&bgImgOpacityOverlay=0&opacityOverlay=30&bgColorShadow=aaaaaa&bgTextureShadow=flat&bgImgOpacityShadow=0&opacityShadow=30&thicknessShadow=8px&offsetTopShadow=-8px&offsetLeftShadow=-8px&cornerRadiusShadow=8px
-* Copyright 2015 jQuery Foundation and other contributors; Licensed MIT */
-
-.ui-helper-hidden{display:none}.ui-helper-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.ui-helper-reset{margin:0;padding:0;border:0;outline:0;line-height:1.3;text-decoration:none;font-size:100%;list-style:none}.ui-helper-clearfix:before,.ui-helper-clearfix:after{content:"";display:table;border-collapse:collapse}.ui-helper-clearfix:after{clear:both}.ui-helper-clearfix{min-height:0}.ui-helper-zfix{width:100%;height:100%;top:0;left:0;position:absolute;opacity:0;filter:Alpha(Opacity=0)}.ui-front{z-index:100}.ui-state-disabled{cursor:default!important}.ui-icon{display:block;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat}.ui-widget-overlay{position:fixed;top:0;left:0;width:100%;height:100%}.ui-draggable-handle{-ms-touch-action:none;touch-action:none}.ui-resizable{position:relative}.ui-resizable-handle{position:absolute;font-size:0.1px;display:block;-ms-touch-action:none;touch-action:none}.ui-resizable-disabled .ui-resizable-handle,.ui-resizable-autohide .ui-resizable-handle{display:none}.ui-resizable-n{cursor:n-resize;height:7px;width:100%;top:-5px;left:0}.ui-resizable-s{cursor:s-resize;height:7px;width:100%;bottom:-5px;left:0}.ui-resizable-e{cursor:e-resize;width:7px;right:-5px;top:0;height:100%}.ui-resizable-w{cursor:w-resize;width:7px;left:-5px;top:0;height:100%}.ui-resizable-se{cursor:se-resize;width:12px;height:12px;right:1px;bottom:1px}.ui-resizable-sw{cursor:sw-resize;width:9px;height:9px;left:-5px;bottom:-5px}.ui-resizable-nw{cursor:nw-resize;width:9px;height:9px;left:-5px;top:-5px}.ui-resizable-ne{cursor:ne-resize;width:9px;height:9px;right:-5px;top:-5px}.ui-selectable{-ms-touch-action:none;touch-action:none}.ui-selectable-helper{position:absolute;z-index:100;border:1px dotted black}.ui-sortable-handle{-ms-touch-action:none;touch-action:none}.ui-accordion .ui-accordion-header{display:block;cursor:pointer;position:relative;margin:2px 0 0 0;padding:.5em .5em .5em .7em;min-height:0;font-size:100%}.ui-accordion .ui-accordion-icons{padding-left:2.2em}.ui-accordion .ui-accordion-icons .ui-accordion-icons{padding-left:2.2em}.ui-accordion .ui-accordion-header .ui-accordion-header-icon{position:absolute;left:.5em;top:50%;margin-top:-8px}.ui-accordion .ui-accordion-content{padding:1em 2.2em;border-top:0;overflow:auto}.ui-autocomplete{position:absolute;top:0;left:0;cursor:default}.ui-button{display:inline-block;position:relative;padding:0;line-height:normal;margin-right:.1em;cursor:pointer;vertical-align:middle;text-align:center;overflow:visible}.ui-button,.ui-button:link,.ui-button:visited,.ui-button:hover,.ui-button:active{text-decoration:none}.ui-button-icon-only{width:2.2em}button.ui-button-icon-only{width:2.4em}.ui-button-icons-only{width:3.4em}button.ui-button-icons-only{width:3.7em}.ui-button .ui-button-text{display:block;line-height:normal}.ui-button-text-only .ui-button-text{padding:.4em 1em}.ui-button-icon-only .ui-button-text,.ui-button-icons-only .ui-button-text{padding:.4em;text-indent:-9999999px}.ui-button-text-icon-primary .ui-button-text,.ui-button-text-icons .ui-button-text{padding:.4em 1em .4em 2.1em}.ui-button-text-icon-secondary .ui-button-text,.ui-button-text-icons .ui-button-text{padding:.4em 2.1em .4em 1em}.ui-button-text-icons .ui-button-text{padding-left:2.1em;padding-right:2.1em}input.ui-button{padding:.4em 1em}.ui-button-icon-only .ui-icon,.ui-button-text-icon-primary .ui-icon,.ui-button-text-icon-secondary .ui-icon,.ui-button-text-icons .ui-icon,.ui-button-icons-only .ui-icon{position:absolute;top:50%;margin-top:-8px}.ui-button-icon-only .ui-icon{left:50%;margin-left:-8px}.ui-button-text-icon-primary .ui-button-icon-primary,.ui-button-text-icons .ui-button-icon-primary,.ui-button-icons-only .ui-button-icon-primary{left:.5em}.ui-button-text-icon-secondary .ui-button-icon-secondary,.ui-button-text-icons .ui-button-icon-secondary,.ui-button-icons-only .ui-button-icon-secondary{right:.5em}.ui-buttonset{margin-right:7px}.ui-buttonset .ui-button{margin-left:0;margin-right:-.3em}input.ui-button::-moz-focus-inner,button.ui-button::-moz-focus-inner{border:0;padding:0}.ui-datepicker{width:17em;padding:.2em .2em 0;display:none}.ui-datepicker .ui-datepicker-header{position:relative;padding:.2em 0}.ui-datepicker .ui-datepicker-prev,.ui-datepicker .ui-datepicker-next{position:absolute;top:2px;width:1.8em;height:1.8em}.ui-datepicker .ui-datepicker-prev-hover,.ui-datepicker .ui-datepicker-next-hover{top:1px}.ui-datepicker .ui-datepicker-prev{left:2px}.ui-datepicker .ui-datepicker-next{right:2px}.ui-datepicker .ui-datepicker-prev-hover{left:1px}.ui-datepicker .ui-datepicker-next-hover{right:1px}.ui-datepicker .ui-datepicker-prev span,.ui-datepicker .ui-datepicker-next span{display:block;position:absolute;left:50%;margin-left:-8px;top:50%;margin-top:-8px}.ui-datepicker .ui-datepicker-title{margin:0 2.3em;line-height:1.8em;text-align:center}.ui-datepicker .ui-datepicker-title select{font-size:1em;margin:1px 0}.ui-datepicker select.ui-datepicker-month,.ui-datepicker select.ui-datepicker-year{width:45%}.ui-datepicker table{width:100%;font-size:.9em;border-collapse:collapse;margin:0 0 .4em}.ui-datepicker th{padding:.7em .3em;text-align:center;font-weight:bold;border:0}.ui-datepicker td{border:0;padding:1px}.ui-datepicker td span,.ui-datepicker td a{display:block;padding:.2em;text-align:right;text-decoration:none}.ui-datepicker .ui-datepicker-buttonpane{background-image:none;margin:.7em 0 0 0;padding:0 .2em;border-left:0;border-right:0;border-bottom:0}.ui-datepicker .ui-datepicker-buttonpane button{float:right;margin:.5em .2em .4em;cursor:pointer;padding:.2em .6em .3em .6em;width:auto;overflow:visible}.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current{float:left}.ui-datepicker.ui-datepicker-multi{width:auto}.ui-datepicker-multi .ui-datepicker-group{float:left}.ui-datepicker-multi .ui-datepicker-group table{width:95%;margin:0 auto .4em}.ui-datepicker-multi-2 .ui-datepicker-group{width:50%}.ui-datepicker-multi-3 .ui-datepicker-group{width:33.3%}.ui-datepicker-multi-4 .ui-datepicker-group{width:25%}.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header{border-left-width:0}.ui-datepicker-multi .ui-datepicker-buttonpane{clear:left}.ui-datepicker-row-break{clear:both;width:100%;font-size:0}.ui-datepicker-rtl{direction:rtl}.ui-datepicker-rtl .ui-datepicker-prev{right:2px;left:auto}.ui-datepicker-rtl .ui-datepicker-next{left:2px;right:auto}.ui-datepicker-rtl .ui-datepicker-prev:hover{right:1px;left:auto}.ui-datepicker-rtl .ui-datepicker-next:hover{left:1px;right:auto}.ui-datepicker-rtl .ui-datepicker-buttonpane{clear:right}.ui-datepicker-rtl .ui-datepicker-buttonpane button{float:left}.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current,.ui-datepicker-rtl .ui-datepicker-group{float:right}.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header{border-right-width:0;border-left-width:1px}.ui-dialog{overflow:hidden;position:absolute;top:0;left:0;padding:.2em;outline:0}.ui-dialog .ui-dialog-titlebar{padding:.4em 1em;position:relative}.ui-dialog .ui-dialog-title{float:left;margin:.1em 0;white-space:nowrap;width:90%;overflow:hidden;text-overflow:ellipsis}.ui-dialog .ui-dialog-titlebar-close{position:absolute;right:.3em;top:50%;width:20px;margin:-10px 0 0 0;padding:1px;height:20px}.ui-dialog .ui-dialog-content{position:relative;border:0;padding:.5em 1em;background:none;overflow:auto}.ui-dialog .ui-dialog-buttonpane{text-align:left;border-width:1px 0 0 0;background-image:none;margin-top:.5em;padding:.3em 1em .5em .4em}.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset{float:right}.ui-dialog .ui-dialog-buttonpane button{margin:.5em .4em .5em 0;cursor:pointer}.ui-dialog .ui-resizable-se{width:12px;height:12px;right:-5px;bottom:-5px;background-position:16px 16px}.ui-draggable .ui-dialog-titlebar{cursor:move}.ui-menu{list-style:none;padding:0;margin:0;display:block;outline:none}.ui-menu .ui-menu{position:absolute}.ui-menu .ui-menu-item{position:relative;margin:0;padding:3px 1em 3px .4em;cursor:pointer;min-height:0;list-style-image:url("data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7")}.ui-menu .ui-menu-divider{margin:5px 0;height:0;font-size:0;line-height:0;border-width:1px 0 0 0}.ui-menu .ui-state-focus,.ui-menu .ui-state-active{margin:-1px}.ui-menu-icons{position:relative}.ui-menu-icons .ui-menu-item{padding-left:2em}.ui-menu .ui-icon{position:absolute;top:0;bottom:0;left:.2em;margin:auto 0}.ui-menu .ui-menu-icon{left:auto;right:0}.ui-progressbar{height:2em;text-align:left;overflow:hidden}.ui-progressbar .ui-progressbar-value{margin:-1px;height:100%}.ui-progressbar .ui-progressbar-overlay{background:url("data:image/gif;base64,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");height:100%;filter:alpha(opacity=25);opacity:0.25}.ui-progressbar-indeterminate .ui-progressbar-value{background-image:none}.ui-selectmenu-menu{padding:0;margin:0;position:absolute;top:0;left:0;display:none}.ui-selectmenu-menu .ui-menu{overflow:auto;overflow-x:hidden;padding-bottom:1px}.ui-selectmenu-menu .ui-menu .ui-selectmenu-optgroup{font-size:1em;font-weight:bold;line-height:1.5;padding:2px 0.4em;margin:0.5em 0 0 0;height:auto;border:0}.ui-selectmenu-open{display:block}.ui-selectmenu-button{display:inline-block;overflow:hidden;position:relative;text-decoration:none;cursor:pointer}.ui-selectmenu-button span.ui-icon{right:0.5em;left:auto;margin-top:-8px;position:absolute;top:50%}.ui-selectmenu-button span.ui-selectmenu-text{text-align:left;padding:0.4em 2.1em 0.4em 1em;display:block;line-height:1.4;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ui-slider{position:relative;text-align:left}.ui-slider .ui-slider-handle{position:absolute;z-index:2;width:1.2em;height:1.2em;cursor:default;-ms-touch-action:none;touch-action:none}.ui-slider .ui-slider-range{position:absolute;z-index:1;font-size:.7em;display:block;border:0;background-position:0 0}.ui-slider.ui-state-disabled .ui-slider-handle,.ui-slider.ui-state-disabled .ui-slider-range{filter:inherit}.ui-slider-horizontal{height:.8em}.ui-slider-horizontal .ui-slider-handle{top:-.3em;margin-left:-.6em}.ui-slider-horizontal .ui-slider-range{top:0;height:100%}.ui-slider-horizontal .ui-slider-range-min{left:0}.ui-slider-horizontal .ui-slider-range-max{right:0}.ui-slider-vertical{width:.8em;height:100px}.ui-slider-vertical .ui-slider-handle{left:-.3em;margin-left:0;margin-bottom:-.6em}.ui-slider-vertical .ui-slider-range{left:0;width:100%}.ui-slider-vertical .ui-slider-range-min{bottom:0}.ui-slider-vertical .ui-slider-range-max{top:0}.ui-spinner{position:relative;display:inline-block;overflow:hidden;padding:0;vertical-align:middle}.ui-spinner-input{border:none;background:none;color:inherit;padding:0;margin:.2em 0;vertical-align:middle;margin-left:.4em;margin-right:22px}.ui-spinner-button{width:16px;height:50%;font-size:.5em;padding:0;margin:0;text-align:center;position:absolute;cursor:default;display:block;overflow:hidden;right:0}.ui-spinner a.ui-spinner-button{border-top:none;border-bottom:none;border-right:none}.ui-spinner .ui-icon{position:absolute;margin-top:-8px;top:50%;left:0}.ui-spinner-up{top:0}.ui-spinner-down{bottom:0}.ui-spinner .ui-icon-triangle-1-s{background-position:-65px -16px}.ui-tabs{position:relative;padding:.2em}.ui-tabs .ui-tabs-nav{margin:0;padding:.2em .2em 0}.ui-tabs .ui-tabs-nav li{list-style:none;float:left;position:relative;top:0;margin:1px .2em 0 0;border-bottom-width:0;padding:0;white-space:nowrap}.ui-tabs .ui-tabs-nav .ui-tabs-anchor{float:left;padding:.5em 1em;text-decoration:none}.ui-tabs .ui-tabs-nav li.ui-tabs-active{margin-bottom:-1px;padding-bottom:1px}.ui-tabs .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor,.ui-tabs .ui-tabs-nav li.ui-state-disabled .ui-tabs-anchor,.ui-tabs .ui-tabs-nav li.ui-tabs-loading .ui-tabs-anchor{cursor:text}.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor{cursor:pointer}.ui-tabs .ui-tabs-panel{display:block;border-width:0;padding:1em 1.4em;background:none}.ui-tooltip{padding:8px;position:absolute;z-index:9999;max-width:300px;-webkit-box-shadow:0 0 5px #aaa;box-shadow:0 0 5px #aaa}body .ui-tooltip{border-width:2px}.ui-widget{font-family:Verdana,Arial,sans-serif;font-size:1.1em}.ui-widget .ui-widget{font-size:1em}.ui-widget input,.ui-widget select,.ui-widget textarea,.ui-widget button{font-family:Verdana,Arial,sans-serif;font-size:1em}.ui-widget-content{border:1px solid #aaa;background:#fff url("images/ui-bg_flat_75_ffffff_40x100.png") 50% 50% repeat-x;color:#222}.ui-widget-content a{color:#222}.ui-widget-header{border:1px solid #aaa;background:#ccc url("images/ui-bg_highlight-soft_75_cccccc_1x100.png") 50% 50% repeat-x;color:#222;font-weight:bold}.ui-widget-header a{color:#222}.ui-state-default,.ui-widget-content .ui-state-default,.ui-widget-header .ui-state-default{border:1px solid #d3d3d3;background:#e6e6e6 url("images/ui-bg_glass_75_e6e6e6_1x400.png") 50% 50% repeat-x;font-weight:normal;color:#555}.ui-state-default a,.ui-state-default a:link,.ui-state-default a:visited{color:#555;text-decoration:none}.ui-state-hover,.ui-widget-content .ui-state-hover,.ui-widget-header .ui-state-hover,.ui-state-focus,.ui-widget-content .ui-state-focus,.ui-widget-header .ui-state-focus{border:1px solid #999;background:#dadada url("images/ui-bg_glass_75_dadada_1x400.png") 50% 50% repeat-x;font-weight:normal;color:#212121}.ui-state-hover a,.ui-state-hover a:hover,.ui-state-hover a:link,.ui-state-hover a:visited,.ui-state-focus a,.ui-state-focus a:hover,.ui-state-focus a:link,.ui-state-focus a:visited{color:#212121;text-decoration:none}.ui-state-active,.ui-widget-content .ui-state-active,.ui-widget-header .ui-state-active{border:1px solid #aaa;background:#fff url("images/ui-bg_glass_65_ffffff_1x400.png") 50% 50% repeat-x;font-weight:normal;color:#212121}.ui-state-active a,.ui-state-active a:link,.ui-state-active a:visited{color:#212121;text-decoration:none}.ui-state-highlight,.ui-widget-content .ui-state-highlight,.ui-widget-header .ui-state-highlight{border:1px solid #fcefa1;background:#fbf9ee url("images/ui-bg_glass_55_fbf9ee_1x400.png") 50% 50% repeat-x;color:#363636}.ui-state-highlight a,.ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a{color:#363636}.ui-state-error,.ui-widget-content .ui-state-error,.ui-widget-header .ui-state-error{border:1px solid #cd0a0a;background:#fef1ec url("images/ui-bg_glass_95_fef1ec_1x400.png") 50% 50% repeat-x;color:#cd0a0a}.ui-state-error a,.ui-widget-content .ui-state-error a,.ui-widget-header .ui-state-error a{color:#cd0a0a}.ui-state-error-text,.ui-widget-content .ui-state-error-text,.ui-widget-header .ui-state-error-text{color:#cd0a0a}.ui-priority-primary,.ui-widget-content .ui-priority-primary,.ui-widget-header .ui-priority-primary{font-weight:bold}.ui-priority-secondary,.ui-widget-content .ui-priority-secondary,.ui-widget-header .ui-priority-secondary{opacity:.7;filter:Alpha(Opacity=70);font-weight:normal}.ui-state-disabled,.ui-widget-content .ui-state-disabled,.ui-widget-header .ui-state-disabled{opacity:.35;filter:Alpha(Opacity=35);background-image:none}.ui-state-disabled .ui-icon{filter:Alpha(Opacity=35)}.ui-icon{width:16px;height:16px}.ui-icon,.ui-widget-content .ui-icon{background-image:url("images/ui-icons_222222_256x240.png")}.ui-widget-header .ui-icon{background-image:url("images/ui-icons_222222_256x240.png")}.ui-state-default .ui-icon{background-image:url("images/ui-icons_888888_256x240.png")}.ui-state-hover .ui-icon,.ui-state-focus .ui-icon{background-image:url("images/ui-icons_454545_256x240.png")}.ui-state-active .ui-icon{background-image:url("images/ui-icons_454545_256x240.png")}.ui-state-highlight .ui-icon{background-image:url("images/ui-icons_2e83ff_256x240.png")}.ui-state-error .ui-icon,.ui-state-error-text .ui-icon{background-image:url("images/ui-icons_cd0a0a_256x240.png")}.ui-icon-blank{background-position:16px 16px}.ui-icon-carat-1-n{background-position:0 0}.ui-icon-carat-1-ne{background-position:-16px 0}.ui-icon-carat-1-e{background-position:-32px 0}.ui-icon-carat-1-se{background-position:-48px 0}.ui-icon-carat-1-s{background-position:-64px 0}.ui-icon-carat-1-sw{background-position:-80px 0}.ui-icon-carat-1-w{background-position:-96px 0}.ui-icon-carat-1-nw{background-position:-112px 0}.ui-icon-carat-2-n-s{background-position:-128px 0}.ui-icon-carat-2-e-w{background-position:-144px 0}.ui-icon-triangle-1-n{background-position:0 -16px}.ui-icon-triangle-1-ne{background-position:-16px -16px}.ui-icon-triangle-1-e{background-position:-32px -16px}.ui-icon-triangle-1-se{background-position:-48px -16px}.ui-icon-triangle-1-s{background-position:-64px -16px}.ui-icon-triangle-1-sw{background-position:-80px -16px}.ui-icon-triangle-1-w{background-position:-96px -16px}.ui-icon-triangle-1-nw{background-position:-112px -16px}.ui-icon-triangle-2-n-s{background-position:-128px -16px}.ui-icon-triangle-2-e-w{background-position:-144px -16px}.ui-icon-arrow-1-n{background-position:0 -32px}.ui-icon-arrow-1-ne{background-position:-16px -32px}.ui-icon-arrow-1-e{background-position:-32px -32px}.ui-icon-arrow-1-se{background-position:-48px -32px}.ui-icon-arrow-1-s{background-position:-64px -32px}.ui-icon-arrow-1-sw{background-position:-80px -32px}.ui-icon-arrow-1-w{background-position:-96px -32px}.ui-icon-arrow-1-nw{background-position:-112px -32px}.ui-icon-arrow-2-n-s{background-position:-128px -32px}.ui-icon-arrow-2-ne-sw{background-position:-144px -32px}.ui-icon-arrow-2-e-w{background-position:-160px -32px}.ui-icon-arrow-2-se-nw{background-position:-176px -32px}.ui-icon-arrowstop-1-n{background-position:-192px -32px}.ui-icon-arrowstop-1-e{background-position:-208px -32px}.ui-icon-arrowstop-1-s{background-position:-224px -32px}.ui-icon-arrowstop-1-w{background-position:-240px -32px}.ui-icon-arrowthick-1-n{background-position:0 -48px}.ui-icon-arrowthick-1-ne{background-position:-16px -48px}.ui-icon-arrowthick-1-e{background-position:-32px -48px}.ui-icon-arrowthick-1-se{background-position:-48px -48px}.ui-icon-arrowthick-1-s{background-position:-64px -48px}.ui-icon-arrowthick-1-sw{background-position:-80px -48px}.ui-icon-arrowthick-1-w{background-position:-96px -48px}.ui-icon-arrowthick-1-nw{background-position:-112px -48px}.ui-icon-arrowthick-2-n-s{background-position:-128px -48px}.ui-icon-arrowthick-2-ne-sw{background-position:-144px -48px}.ui-icon-arrowthick-2-e-w{background-position:-160px -48px}.ui-icon-arrowthick-2-se-nw{background-position:-176px -48px}.ui-icon-arrowthickstop-1-n{background-position:-192px -48px}.ui-icon-arrowthickstop-1-e{background-position:-208px -48px}.ui-icon-arrowthickstop-1-s{background-position:-224px -48px}.ui-icon-arrowthickstop-1-w{background-position:-240px -48px}.ui-icon-arrowreturnthick-1-w{background-position:0 -64px}.ui-icon-arrowreturnthick-1-n{background-position:-16px -64px}.ui-icon-arrowreturnthick-1-e{background-position:-32px -64px}.ui-icon-arrowreturnthick-1-s{background-position:-48px -64px}.ui-icon-arrowreturn-1-w{background-position:-64px -64px}.ui-icon-arrowreturn-1-n{background-position:-80px -64px}.ui-icon-arrowreturn-1-e{background-position:-96px -64px}.ui-icon-arrowreturn-1-s{background-position:-112px -64px}.ui-icon-arrowrefresh-1-w{background-position:-128px -64px}.ui-icon-arrowrefresh-1-n{background-position:-144px -64px}.ui-icon-arrowrefresh-1-e{background-position:-160px -64px}.ui-icon-arrowrefresh-1-s{background-position:-176px -64px}.ui-icon-arrow-4{background-position:0 -80px}.ui-icon-arrow-4-diag{background-position:-16px -80px}.ui-icon-extlink{background-position:-32px -80px}.ui-icon-newwin{background-position:-48px -80px}.ui-icon-refresh{background-position:-64px -80px}.ui-icon-shuffle{background-position:-80px -80px}.ui-icon-transfer-e-w{background-position:-96px -80px}.ui-icon-transferthick-e-w{background-position:-112px -80px}.ui-icon-folder-collapsed{background-position:0 -96px}.ui-icon-folder-open{background-position:-16px -96px}.ui-icon-document{background-position:-32px -96px}.ui-icon-document-b{background-position:-48px -96px}.ui-icon-note{background-position:-64px -96px}.ui-icon-mail-closed{background-position:-80px -96px}.ui-icon-mail-open{background-position:-96px -96px}.ui-icon-suitcase{background-position:-112px -96px}.ui-icon-comment{background-position:-128px -96px}.ui-icon-person{background-position:-144px -96px}.ui-icon-print{background-position:-160px -96px}.ui-icon-trash{background-position:-176px -96px}.ui-icon-locked{background-position:-192px -96px}.ui-icon-unlocked{background-position:-208px -96px}.ui-icon-bookmark{background-position:-224px -96px}.ui-icon-tag{background-position:-240px -96px}.ui-icon-home{background-position:0 -112px}.ui-icon-flag{background-position:-16px -112px}.ui-icon-calendar{background-position:-32px -112px}.ui-icon-cart{background-position:-48px -112px}.ui-icon-pencil{background-position:-64px -112px}.ui-icon-clock{background-position:-80px -112px}.ui-icon-disk{background-position:-96px -112px}.ui-icon-calculator{background-position:-112px -112px}.ui-icon-zoomin{background-position:-128px -112px}.ui-icon-zoomout{background-position:-144px -112px}.ui-icon-search{background-position:-160px -112px}.ui-icon-wrench{background-position:-176px -112px}.ui-icon-gear{background-position:-192px -112px}.ui-icon-heart{background-position:-208px -112px}.ui-icon-star{background-position:-224px -112px}.ui-icon-link{background-position:-240px -112px}.ui-icon-cancel{background-position:0 -128px}.ui-icon-plus{background-position:-16px -128px}.ui-icon-plusthick{background-position:-32px -128px}.ui-icon-minus{background-position:-48px -128px}.ui-icon-minusthick{background-position:-64px -128px}.ui-icon-close{background-position:-80px -128px}.ui-icon-closethick{background-position:-96px -128px}.ui-icon-key{background-position:-112px -128px}.ui-icon-lightbulb{background-position:-128px -128px}.ui-icon-scissors{background-position:-144px -128px}.ui-icon-clipboard{background-position:-160px -128px}.ui-icon-copy{background-position:-176px -128px}.ui-icon-contact{background-position:-192px -128px}.ui-icon-image{background-position:-208px -128px}.ui-icon-video{background-position:-224px -128px}.ui-icon-script{background-position:-240px -128px}.ui-icon-alert{background-position:0 -144px}.ui-icon-info{background-position:-16px -144px}.ui-icon-notice{background-position:-32px -144px}.ui-icon-help{background-position:-48px -144px}.ui-icon-check{background-position:-64px -144px}.ui-icon-bullet{background-position:-80px -144px}.ui-icon-radio-on{background-position:-96px -144px}.ui-icon-radio-off{background-position:-112px -144px}.ui-icon-pin-w{background-position:-128px -144px}.ui-icon-pin-s{background-position:-144px -144px}.ui-icon-play{background-position:0 -160px}.ui-icon-pause{background-position:-16px -160px}.ui-icon-seek-next{background-position:-32px -160px}.ui-icon-seek-prev{background-position:-48px -160px}.ui-icon-seek-end{background-position:-64px -160px}.ui-icon-seek-start{background-position:-80px -160px}.ui-icon-seek-first{background-position:-80px -160px}.ui-icon-stop{background-position:-96px -160px}.ui-icon-eject{background-position:-112px -160px}.ui-icon-volume-off{background-position:-128px -160px}.ui-icon-volume-on{background-position:-144px -160px}.ui-icon-power{background-position:0 -176px}.ui-icon-signal-diag{background-position:-16px -176px}.ui-icon-signal{background-position:-32px -176px}.ui-icon-battery-0{background-position:-48px -176px}.ui-icon-battery-1{background-position:-64px -176px}.ui-icon-battery-2{background-position:-80px -176px}.ui-icon-battery-3{background-position:-96px -176px}.ui-icon-circle-plus{background-position:0 -192px}.ui-icon-circle-minus{background-position:-16px -192px}.ui-icon-circle-close{background-position:-32px -192px}.ui-icon-circle-triangle-e{background-position:-48px -192px}.ui-icon-circle-triangle-s{background-position:-64px -192px}.ui-icon-circle-triangle-w{background-position:-80px -192px}.ui-icon-circle-triangle-n{background-position:-96px -192px}.ui-icon-circle-arrow-e{background-position:-112px -192px}.ui-icon-circle-arrow-s{background-position:-128px -192px}.ui-icon-circle-arrow-w{background-position:-144px -192px}.ui-icon-circle-arrow-n{background-position:-160px -192px}.ui-icon-circle-zoomin{background-position:-176px -192px}.ui-icon-circle-zoomout{background-position:-192px -192px}.ui-icon-circle-check{background-position:-208px -192px}.ui-icon-circlesmall-plus{background-position:0 -208px}.ui-icon-circlesmall-minus{background-position:-16px -208px}.ui-icon-circlesmall-close{background-position:-32px -208px}.ui-icon-squaresmall-plus{background-position:-48px -208px}.ui-icon-squaresmall-minus{background-position:-64px -208px}.ui-icon-squaresmall-close{background-position:-80px -208px}.ui-icon-grip-dotted-vertical{background-position:0 -224px}.ui-icon-grip-dotted-horizontal{background-position:-16px -224px}.ui-icon-grip-solid-vertical{background-position:-32px -224px}.ui-icon-grip-solid-horizontal{background-position:-48px -224px}.ui-icon-gripsmall-diagonal-se{background-position:-64px -224px}.ui-icon-grip-diagonal-se{background-position:-80px -224px}.ui-corner-all,.ui-corner-top,.ui-corner-left,.ui-corner-tl{border-top-left-radius:4px}.ui-corner-all,.ui-corner-top,.ui-corner-right,.ui-corner-tr{border-top-right-radius:4px}.ui-corner-all,.ui-corner-bottom,.ui-corner-left,.ui-corner-bl{border-bottom-left-radius:4px}.ui-corner-all,.ui-corner-bottom,.ui-corner-right,.ui-corner-br{border-bottom-right-radius:4px}.ui-widget-overlay{background:#aaa url("images/ui-bg_flat_0_aaaaaa_40x100.png") 50% 50% repeat-x;opacity:.3;filter:Alpha(Opacity=30)}.ui-widget-shadow{margin:-8px 0 0 -8px;padding:8px;background:#aaa url("images/ui-bg_flat_0_aaaaaa_40x100.png") 50% 50% repeat-x;opacity:.3;filter:Alpha(Opacity=30);border-radius:8px}
\ No newline at end of file
diff --git a/src/main/resources/META-INF/resources/designer/lib/jquery-ui-1.11.3.custom/jquery-ui.min.js b/src/main/resources/META-INF/resources/designer/lib/jquery-ui-1.11.3.custom/jquery-ui.min.js
deleted file mode 100644 (file)
index 0299692..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-/*! jQuery UI - v1.11.3 - 2015-03-01
-* http://jqueryui.com
-* 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, effect.js, effect-blind.js, effect-bounce.js, effect-clip.js, effect-drop.js, effect-explode.js, effect-fade.js, effect-fold.js, effect-highlight.js, effect-puff.js, effect-pulsate.js, effect-scale.js, effect-shake.js, effect-size.js, effect-slide.js, effect-transfer.js
-* Copyright 2015 jQuery Foundation and other contributors; Licensed MIT */
-
-(function(e){"function"==typeof define&&define.amd?define(["jquery"],e):e(jQuery)})(function(e){function t(t,s){var n,a,o,r=t.nodeName.toLowerCase();return"area"===r?(n=t.parentNode,a=n.name,t.href&&a&&"map"===n.nodeName.toLowerCase()?(o=e("img[usemap='#"+a+"']")[0],!!o&&i(o)):!1):(/^(input|select|textarea|button|object)$/.test(r)?!t.disabled:"a"===r?t.href||s:s)&&i(t)}function i(t){return e.expr.filters.visible(t)&&!e(t).parents().addBack().filter(function(){return"hidden"===e.css(this,"visibility")}).length}function s(e){for(var t,i;e.length&&e[0]!==document;){if(t=e.css("position"),("absolute"===t||"relative"===t||"fixed"===t)&&(i=parseInt(e.css("zIndex"),10),!isNaN(i)&&0!==i))return i;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=a(e("<div id='"+this._mainDivId+"' class='ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all'></div>"))}function a(t){var i="button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a";return t.delegate(i,"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(i,"mouseover",o)}function o(){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 r(t,i){e.extend(t,i);for(var s in i)null==i[s]&&(t[s]=i[s]);return t}function h(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.3",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 i=this.css("position"),s="absolute"===i,n=t?/(auto|scroll|hidden)/:/(auto|scroll)/,a=this.parents().filter(function(){var t=e(this);return s&&"static"===t.css("position")?!1:n.test(t.css("overflow")+t.css("overflow-y")+t.css("overflow-x"))}).eq(0);return"fixed"!==i&&a.length?a: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(i){return!!e.data(i,t)}}):function(t,i,s){return!!e.data(t,s[3])},focusable:function(i){return t(i,!isNaN(e.attr(i,"tabindex")))},tabbable:function(i){var s=e.attr(i,"tabindex"),n=isNaN(s);return(n||s>=0)&&t(i,!n)}}),e("<a>").outerWidth(1).jquery||e.each(["Width","Height"],function(t,i){function s(t,i,s,a){return e.each(n,function(){i-=parseFloat(e.css(t,"padding"+this))||0,s&&(i-=parseFloat(e.css(t,"border"+this+"Width"))||0),a&&(i-=parseFloat(e.css(t,"margin"+this))||0)}),i}var n="Width"===i?["Left","Right"]:["Top","Bottom"],a=i.toLowerCase(),o={innerWidth:e.fn.innerWidth,innerHeight:e.fn.innerHeight,outerWidth:e.fn.outerWidth,outerHeight:e.fn.outerHeight};e.fn["inner"+i]=function(t){return void 0===t?o["inner"+i].call(this):this.each(function(){e(this).css(a,s(this,t)+"px")})},e.fn["outer"+i]=function(t,n){return"number"!=typeof t?o["outer"+i].call(this,t):this.each(function(){e(this).css(a,s(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(i){return arguments.length?t.call(this,e.camelCase(i)):t.call(this)}}(e.fn.removeData)),e.ui.ie=!!/msie [\w.]+/.exec(navigator.userAgent.toLowerCase()),e.fn.extend({focus:function(t){return function(i,s){return"number"==typeof i?this.each(function(){var t=this;setTimeout(function(){e(t).focus(),s&&s.call(t)},i)}):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 i,s,n=e(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}}),e.ui.plugin={add:function(t,i,s){var n,a=e.ui[t].prototype;for(n in s)a.plugins[n]=a.plugins[n]||[],a.plugins[n].push([i,s[n]])},call:function(e,t,i,s){var n,a=e.plugins[t];if(a&&(s||e.element[0].parentNode&&11!==e.element[0].parentNode.nodeType))for(n=0;a.length>n;n++)e.options[a[n][0]]&&a[n][1].apply(e.element,i)}};var l=0,u=Array.prototype.slice;e.cleanData=function(t){return function(i){var s,n,a;for(a=0;null!=(n=i[a]);a++)try{s=e._data(n,"events"),s&&s.remove&&e(n).triggerHandler("remove")}catch(o){}t(i)}}(e.cleanData),e.widget=function(t,i,s){var n,a,o,r,h={},l=t.split(".")[0];return t=t.split(".")[1],n=l+"-"+t,s||(s=i,i=e.Widget),e.expr[":"][n.toLowerCase()]=function(t){return!!e.data(t,n)},e[l]=e[l]||{},a=e[l][t],o=e[l][t]=function(e,t){return this._createWidget?(arguments.length&&this._createWidget(e,t),void 0):new o(e,t)},e.extend(o,a,{version:s.version,_proto:e.extend({},s),_childConstructors:[]}),r=new i,r.options=e.widget.extend({},r.options),e.each(s,function(t,s){return e.isFunction(s)?(h[t]=function(){var e=function(){return i.prototype[t].apply(this,arguments)},n=function(e){return i.prototype[t].apply(this,e)};return function(){var t,i=this._super,a=this._superApply;return this._super=e,this._superApply=n,t=s.apply(this,arguments),this._super=i,this._superApply=a,t}}(),void 0):(h[t]=s,void 0)}),o.prototype=e.widget.extend(r,{widgetEventPrefix:a?r.widgetEventPrefix||t:t},h,{constructor:o,namespace:l,widgetName:t,widgetFullName:n}),a?(e.each(a._childConstructors,function(t,i){var s=i.prototype;e.widget(s.namespace+"."+s.widgetName,o,i._proto)}),delete a._childConstructors):i._childConstructors.push(o),e.widget.bridge(t,o),o},e.widget.extend=function(t){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&&(t[i]=e.isPlainObject(s)?e.isPlainObject(t[i])?e.widget.extend({},t[i],s):e.widget.extend({},s):s);return t},e.widget.bridge=function(t,i){var s=i.prototype.widgetFullName||t;e.fn[t]=function(n){var a="string"==typeof n,o=u.call(arguments,1),r=this;return a?this.each(function(){var i,a=e.data(this,s);return"instance"===n?(r=a,!1):a?e.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):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+"'")}):(o.length&&(n=e.widget.extend.apply(null,[n].concat(o))),this.each(function(){var t=e.data(this,s);t?(t.option(n||{}),t._init&&t._init()):e.data(this,s,new i(n,this))})),r}},e.Widget=function(){},e.Widget._childConstructors=[],e.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",defaultElement:"<div>",options:{disabled:!1,create:null},_createWidget:function(t,i){i=e(i||this.defaultElement||this)[0],this.element=e(i),this.uuid=l++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=e(),this.hoverable=e(),this.focusable=e(),i!==this&&(e.data(i,this.widgetFullName,this),this._on(!0,this.element,{remove:function(e){e.target===i&&this.destroy()}}),this.document=e(i.style?i.ownerDocument:i.document||i),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,i){var s,n,a,o=t;if(0===arguments.length)return e.widget.extend({},this.options);if("string"==typeof t)if(o={},s=t.split("."),t=s.shift(),s.length){for(n=o[t]=e.widget.extend({},this.options[t]),a=0;s.length-1>a;a++)n[s[a]]=n[s[a]]||{},n=n[s[a]];if(t=s.pop(),1===arguments.length)return void 0===n[t]?null:n[t];n[t]=i}else{if(1===arguments.length)return void 0===this.options[t]?null:this.options[t];o[t]=i}return this._setOptions(o),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,i,s){var n,a=this;"boolean"!=typeof t&&(s=i,i=t,t=!1),s?(i=n=e(i),this.bindings=this.bindings.add(i)):(s=i,i=this.element,n=this.widget()),e.each(s,function(s,o){function r(){return t||a.options.disabled!==!0&&!e(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||e.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(t,i){i=(i||"").split(" ").join(this.eventNamespace+" ")+this.eventNamespace,t.unbind(i).undelegate(i),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 i(){return("string"==typeof e?s[e]:e).apply(s,arguments)}var s=this;return setTimeout(i,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,i,s){var n,a,o=this.options[t];if(s=s||{},i=e.Event(i),i.type=(t===this.widgetEventPrefix?t:this.widgetEventPrefix+t).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),!(e.isFunction(o)&&o.apply(this.element[0],[i].concat(s))===!1||i.isDefaultPrevented())}},e.each({show:"fadeIn",hide:"fadeOut"},function(t,i){e.Widget.prototype["_"+t]=function(s,n,a){"string"==typeof n&&(n={effect:n});var o,r=n?n===!0||"number"==typeof n?i:n.effect||i:t;n=n||{},"number"==typeof n&&(n={duration:n}),o=!e.isEmptyObject(n),n.complete=a,n.delay&&s.delay(n.delay),o&&e.effects&&e.effects.effect[r]?s[t](n):r!==t&&s[r]?s[r](n.duration,n.easing,a):s.queue(function(i){e(this)[t](),a&&a.call(s[0]),i()})}}),e.widget;var d=!1;e(document).mouseup(function(){d=!1}),e.widget("ui.mouse",{version:"1.11.3",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(i){return!0===e.data(i.target,t.widgetName+".preventClickEvent")?(e.removeData(i.target,t.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(t){if(!d){this._mouseMoved=!1,this._mouseStarted&&this._mouseUp(t),this._mouseDownEvent=t;var i=this,s=1===t.which,n="string"==typeof this.options.cancel&&t.target.nodeName?e(t.target).closest(this.options.cancel).length:!1;return s&&!n&&this._mouseCapture(t)?(this.mouseDelayMet=!this.options.delay,this.mouseDelayMet||(this._mouseDelayTimer=setTimeout(function(){i.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 i._mouseMove(e)},this._mouseUpDelegate=function(e){return i._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,i){return[parseFloat(e[0])*(p.test(e[0])?t/100:1),parseFloat(e[1])*(p.test(e[1])?i/100:1)]}function i(t,i){return parseInt(e.css(t,i),10)||0}function s(t){var i=t[0];return 9===i.nodeType?{width:t.width(),height:t.height(),offset:{top:0,left:0}}:e.isWindow(i)?{width:t.width(),height:t.height(),offset:{top:t.scrollTop(),left:t.scrollLeft()}}:i.preventDefault?{width:0,height:0,offset:{top:i.pageY,left:i.pageX}}:{width:t.outerWidth(),height:t.outerHeight(),offset:t.offset()}}e.ui=e.ui||{};var n,a,o=Math.max,r=Math.abs,h=Math.round,l=/left|center|right/,u=/top|center|bottom/,d=/[\+\-]\d+(\.[\d]+)?%?/,c=/^\w+/,p=/%$/,f=e.fn.position;e.position={scrollbarWidth:function(){if(void 0!==n)return n;var t,i,s=e("<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 e("body").append(s),t=a.offsetWidth,s.css("overflow","scroll"),i=a.offsetWidth,t===i&&(i=s[0].clientWidth),s.remove(),n=t-i},getScrollInfo:function(t){var i=t.isWindow||t.isDocument?"":t.element.css("overflow-x"),s=t.isWindow||t.isDocument?"":t.element.css("overflow-y"),n="scroll"===i||"auto"===i&&t.width<t.element[0].scrollWidth,a="scroll"===s||"auto"===s&&t.height<t.element[0].scrollHeight;return{width:a?e.position.scrollbarWidth():0,height:n?e.position.scrollbarWidth():0}},getWithinInfo:function(t){var i=e(t||window),s=e.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()}}},e.fn.position=function(n){if(!n||!n.of)return f.apply(this,arguments);n=e.extend({},n);var p,m,g,v,y,b,_=e(n.of),x=e.position.getWithinInfo(n.within),w=e.position.getScrollInfo(x),k=(n.collision||"flip").split(" "),T={};return b=s(_),_[0].preventDefault&&(n.at="left top"),m=b.width,g=b.height,v=b.offset,y=e.extend({},v),e.each(["my","at"],function(){var e,t,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",e=d.exec(i[0]),t=d.exec(i[1]),T[this]=[e?e[0]:0,t?t[0]:0],n[this]=[c.exec(i[0])[0],c.exec(i[1])[0]]}),1===k.length&&(k[1]=k[0]),"right"===n.at[0]?y.left+=m:"center"===n.at[0]&&(y.left+=m/2),"bottom"===n.at[1]?y.top+=g:"center"===n.at[1]&&(y.top+=g/2),p=t(T.at,m,g),y.left+=p[0],y.top+=p[1],this.each(function(){var s,l,u=e(this),d=u.outerWidth(),c=u.outerHeight(),f=i(this,"marginLeft"),b=i(this,"marginTop"),D=d+f+i(this,"marginRight")+w.width,S=c+b+i(this,"marginBottom")+w.height,M=e.extend({},y),C=t(T.my,u.outerWidth(),u.outerHeight());"right"===n.my[0]?M.left-=d:"center"===n.my[0]&&(M.left-=d/2),"bottom"===n.my[1]?M.top-=c:"center"===n.my[1]&&(M.top-=c/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},e.each(["left","top"],function(t,i){e.ui.position[k[t]]&&e.ui.position[k[t]][i](M,{targetWidth:m,targetHeight:g,elemWidth:d,elemHeight:c,collisionPosition:s,collisionWidth:D,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(e){var t=v.left-M.left,i=t+m-d,s=v.top-M.top,a=s+g-c,h={target:{element:_,left:v.left,top:v.top,width:m,height:g},element:{element:u,left:M.left,top:M.top,width:d,height:c},horizontal:0>i?"left":t>0?"right":"center",vertical:0>a?"top":s>0?"bottom":"middle"};d>m&&m>r(t+i)&&(h.horizontal="center"),c>g&&g>r(s+a)&&(h.vertical="middle"),h.important=o(r(t),r(i))>o(r(s),r(a))?"horizontal":"vertical",n.using.call(this,e,h)}),u.offset(e.extend(M,{using:l}))})},e.ui.position={fit:{left:function(e,t){var i,s=t.within,n=s.isWindow?s.scrollLeft:s.offset.left,a=s.width,r=e.left-t.collisionPosition.marginLeft,h=n-r,l=r+t.collisionWidth-a-n;t.collisionWidth>a?h>0&&0>=l?(i=e.left+h+t.collisionWidth-a-n,e.left+=h-i):e.left=l>0&&0>=h?n:h>l?n+a-t.collisionWidth:n:h>0?e.left+=h:l>0?e.left-=l:e.left=o(e.left-r,e.left)},top:function(e,t){var i,s=t.within,n=s.isWindow?s.scrollTop:s.offset.top,a=t.within.height,r=e.top-t.collisionPosition.marginTop,h=n-r,l=r+t.collisionHeight-a-n;t.collisionHeight>a?h>0&&0>=l?(i=e.top+h+t.collisionHeight-a-n,e.top+=h-i):e.top=l>0&&0>=h?n:h>l?n+a-t.collisionHeight:n:h>0?e.top+=h:l>0?e.top-=l:e.top=o(e.top-r,e.top)}},flip:{left:function(e,t){var i,s,n=t.within,a=n.offset.left+n.scrollLeft,o=n.width,h=n.isWindow?n.scrollLeft:n.offset.left,l=e.left-t.collisionPosition.marginLeft,u=l-h,d=l+t.collisionWidth-o-h,c="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?(i=e.left+c+p+f+t.collisionWidth-o-a,(0>i||r(u)>i)&&(e.left+=c+p+f)):d>0&&(s=e.left-t.collisionPosition.marginLeft+c+p+f-h,(s>0||d>r(s))&&(e.left+=c+p+f))},top:function(e,t){var i,s,n=t.within,a=n.offset.top+n.scrollTop,o=n.height,h=n.isWindow?n.scrollTop:n.offset.top,l=e.top-t.collisionPosition.marginTop,u=l-h,d=l+t.collisionHeight-o-h,c="top"===t.my[1],p=c?-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?(s=e.top+p+f+m+t.collisionHeight-o-a,(0>s||r(u)>s)&&(e.top+=p+f+m)):d>0&&(i=e.top-t.collisionPosition.marginTop+p+f+m-h,(i>0||d>r(i))&&(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,i,s,n,o,r=document.getElementsByTagName("body")[0],h=document.createElement("div");t=document.createElement(r?"div":"body"),s={visibility:"hidden",width:0,height:0,border:0,margin:0,background:"none"},r&&e.extend(s,{position:"absolute",left:"-1000px",top:"-1000px"});for(o in s)t.style[o]=s[o];t.appendChild(h),i=r||document.documentElement,i.insertBefore(t,i.firstChild),h.style.cssText="position: absolute; left: 10.7432222px;",n=e(h).offset().left,a=n>10&&11>n,t.innerHTML="",i.removeChild(t)}()}(),e.ui.position,e.widget("ui.draggable",e.ui.mouse,{version:"1.11.3",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")?(this.destroyOnClear=!0,void 0):(this.element.removeClass("ui-draggable ui-draggable-dragging ui-draggable-disabled"),this._removeHandleClassName(),this._mouseDestroy(),void 0)},_mouseCapture:function(t){var i=this.options;return this._blurActiveElement(t),this.helper||i.disabled||e(t.target).closest(".ui-resizable-handle").length>0?!1:(this.handle=this._getHandle(t),this.handle?(this._blockFrames(i.iframeFix===!0?"iframe":i.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 i=this.document[0];if(this.handleElement.is(t.target))try{i.activeElement&&"body"!==i.activeElement.nodeName.toLowerCase()&&e(i.activeElement).blur()}catch(s){}},_mouseStart:function(t){var i=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,i.cursorAt&&this._adjustOffsetFromHelper(i.cursorAt),this._setContainment(),this._trigger("start",t)===!1?(this._clear(),!1):(this._cacheHelperProportions(),e.ui.ddmanager&&!i.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,i){if(this.hasFixedAncestor&&(this.offset.parent=this._getParentOffset()),this.position=this._generatePosition(t,!0),this.positionAbs=this._convertPositionTo("absolute"),!i){var s=this._uiHash();if(this._trigger("drag",t,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",e.ui.ddmanager&&e.ui.ddmanager.drag(this,t),!1},_mouseStop:function(t){var i=this,s=!1;return e.ui.ddmanager&&!this.options.dropBehaviour&&(s=e.ui.ddmanager.drop(this,t)),this.dropped&&(s=this.dropped,this.dropped=!1),"invalid"===this.options.revert&&!s||"valid"===this.options.revert&&s||this.options.revert===!0||e.isFunction(this.options.revert)&&this.options.revert.call(this.element,s)?e(this.helper).animate(this.originalPosition,parseInt(this.options.revertDuration,10),function(){i._trigger("stop",t)!==!1&&i._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 i=this.options,s=e.isFunction(i.helper),n=s?e(i.helper.apply(this.element[0],[t])):"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(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(),i=this.document[0];return"absolute"===this.cssPosition&&this.scrollParent[0]!==i&&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,i,s,n=this.options,a=this.document[0];return this.relativeContainer=null,n.containment?"window"===n.containment?(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()||a.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top],void 0):"document"===n.containment?(this.containment=[0,0,e(a).width()-this.helperProportions.width-this.margins.left,(e(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=e(n.containment),s=i[0],s&&(t=/(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),(t?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,(t?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(e,t){t||(t=this.position);var i="absolute"===e?1:-1,s=this._isRootNode(this.scrollParent[0]);return{top:t.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:t.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(e,t){var i,s,n,a,o=this.options,r=this._isRootNode(this.scrollParent[0]),h=e.pageX,l=e.pageY;return r&&this.offset.scroll||(this.offset.scroll={top:this.scrollParent.scrollTop(),left:this.scrollParent.scrollLeft()}),t&&(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,e.pageX-this.offset.click.left<i[0]&&(h=i[0]+this.offset.click.left),e.pageY-this.offset.click.top<i[1]&&(l=i[1]+this.offset.click.top),e.pageX-this.offset.click.left>i[2]&&(h=i[2]+this.offset.click.left),e.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)}
-},_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,i,s){return s=s||this._uiHash(),e.ui.plugin.call(this,t,[i,s,this],!0),/^(drag|start|stop)/.test(t)&&(this.positionAbs=this._convertPositionTo("absolute"),s.offset=this.positionAbs),e.Widget.prototype._trigger.call(this,t,i,s)},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,i,s){var n=e.extend({},i,{item:s.element});s.sortables=[],e(s.options.connectToSortable).each(function(){var i=e(this).sortable("instance");i&&!i.options.disabled&&(s.sortables.push(i),i.refreshPositions(),i._trigger("activate",t,n))})},stop:function(t,i,s){var n=e.extend({},i,{item:s.element});s.cancelHelperRemoval=!1,e.each(s.sortables,function(){var e=this;e.isOver?(e.isOver=0,s.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,i,s){e.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,e.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)&&e.contains(a.element[0],this.element[0])&&(n=!1),n})),n?(a.isOver||(a.isOver=1,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]},t.target=a.currentItem[0],a._mouseCapture(t,!0),a._mouseStart(t,!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",t),s.dropped=a.element,e.each(s.sortables,function(){this.refreshPositions()}),s.currentItem=s.element,a.fromOutside=s),a.currentItem&&(a._mouseDrag(t),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",t,a._uiHash(a)),a._mouseStop(t,!0),a.options.revert=a.options._revert,a.options.helper=a.options._helper,a.placeholder&&a.placeholder.remove(),s._refreshOffsets(t),i.position=s._generatePosition(t,!0),s._trigger("fromSortable",t),s.dropped=!1,e.each(s.sortables,function(){this.refreshPositions()}))})}}),e.ui.plugin.add("draggable","cursor",{start:function(t,i,s){var n=e("body"),a=s.options;n.css("cursor")&&(a._cursor=n.css("cursor")),n.css("cursor",a.cursor)},stop:function(t,i,s){var n=s.options;n._cursor&&e("body").css("cursor",n._cursor)}}),e.ui.plugin.add("draggable","opacity",{start:function(t,i,s){var n=e(i.helper),a=s.options;n.css("opacity")&&(a._opacity=n.css("opacity")),n.css("opacity",a.opacity)},stop:function(t,i,s){var n=s.options;n._opacity&&e(i.helper).css("opacity",n._opacity)}}),e.ui.plugin.add("draggable","scroll",{start:function(e,t,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(t,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-t.pageY<n.scrollSensitivity?o.scrollTop=a=o.scrollTop+n.scrollSpeed:t.pageY-s.overflowOffset.top<n.scrollSensitivity&&(o.scrollTop=a=o.scrollTop-n.scrollSpeed)),n.axis&&"y"===n.axis||(s.overflowOffset.left+o.offsetWidth-t.pageX<n.scrollSensitivity?o.scrollLeft=a=o.scrollLeft+n.scrollSpeed:t.pageX-s.overflowOffset.left<n.scrollSensitivity&&(o.scrollLeft=a=o.scrollLeft-n.scrollSpeed))):(n.axis&&"x"===n.axis||(t.pageY-e(r).scrollTop()<n.scrollSensitivity?a=e(r).scrollTop(e(r).scrollTop()-n.scrollSpeed):e(window).height()-(t.pageY-e(r).scrollTop())<n.scrollSensitivity&&(a=e(r).scrollTop(e(r).scrollTop()+n.scrollSpeed))),n.axis&&"y"===n.axis||(t.pageX-e(r).scrollLeft()<n.scrollSensitivity?a=e(r).scrollLeft(e(r).scrollLeft()-n.scrollSpeed):e(window).width()-(t.pageX-e(r).scrollLeft())<n.scrollSensitivity&&(a=e(r).scrollLeft(e(r).scrollLeft()+n.scrollSpeed)))),a!==!1&&e.ui.ddmanager&&!n.dropBehaviour&&e.ui.ddmanager.prepareOffsets(s,t)}}),e.ui.plugin.add("draggable","snap",{start:function(t,i,s){var n=s.options;s.snapElements=[],e(n.snap.constructor!==String?n.snap.items||":data(ui-draggable)":n.snap).each(function(){var t=e(this),i=t.offset();this!==s.element[0]&&s.snapElements.push({item:this,width:t.outerWidth(),height:t.outerHeight(),top:i.top,left:i.left})})},drag:function(t,i,s){var n,a,o,r,h,l,u,d,c,p,f=s.options,m=f.snapTolerance,g=i.offset.left,v=g+s.helperProportions.width,y=i.offset.top,b=y+s.helperProportions.height;for(c=s.snapElements.length-1;c>=0;c--)h=s.snapElements[c].left-s.margins.left,l=h+s.snapElements[c].width,u=s.snapElements[c].top-s.margins.top,d=u+s.snapElements[c].height,h-m>v||g>l+m||u-m>b||y>d+m||!e.contains(s.snapElements[c].item.ownerDocument,s.snapElements[c].item)?(s.snapElements[c].snapping&&s.options.snap.release&&s.options.snap.release.call(s.element,t,e.extend(s._uiHash(),{snapItem:s.snapElements[c].item})),s.snapElements[c].snapping=!1):("inner"!==f.snapMode&&(n=m>=Math.abs(u-b),a=m>=Math.abs(d-y),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:d,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-y),a=m>=Math.abs(d-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:d-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[c].snapping&&(n||a||o||r||p)&&s.options.snap.snap&&s.options.snap.snap.call(s.element,t,e.extend(s._uiHash(),{snapItem:s.snapElements[c].item})),s.snapElements[c].snapping=n||a||o||r||p)}}),e.ui.plugin.add("draggable","stack",{start:function(t,i,s){var n,a=s.options,o=e.makeArray(e(a.stack)).sort(function(t,i){return(parseInt(e(t).css("zIndex"),10)||0)-(parseInt(e(i).css("zIndex"),10)||0)});o.length&&(n=parseInt(e(o[0]).css("zIndex"),10)||0,e(o).each(function(t){e(this).css("zIndex",n+t)}),this.css("zIndex",n+o.length))}}),e.ui.plugin.add("draggable","zIndex",{start:function(t,i,s){var n=e(i.helper),a=s.options;n.css("zIndex")&&(a._zIndex=n.css("zIndex")),n.css("zIndex",a.zIndex)},stop:function(t,i,s){var n=s.options;n._zIndex&&e(i.helper).css("zIndex",n._zIndex)}}),e.ui.draggable,e.widget("ui.droppable",{version:"1.11.3",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,i=this.options,s=i.accept;this.isover=!1,this.isout=!0,this.accept=e.isFunction(s)?s:function(e){return e.is(s)},this.proportions=function(){return arguments.length?(t=arguments[0],void 0):t?t:t={width:this.element[0].offsetWidth,height:this.element[0].offsetHeight}},this._addToManager(i.scope),i.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,i){if("accept"===t)this.accept=e.isFunction(i)?i:function(e){return e.is(i)};else if("scope"===t){var s=e.ui.ddmanager.droppables[this.options.scope];this._splice(s),this._addToManager(i)}this._super(t,i)},_activate:function(t){var i=e.ui.ddmanager.current;this.options.activeClass&&this.element.addClass(this.options.activeClass),i&&this._trigger("activate",t,this.ui(i))},_deactivate:function(t){var i=e.ui.ddmanager.current;this.options.activeClass&&this.element.removeClass(this.options.activeClass),i&&this._trigger("deactivate",t,this.ui(i))},_over:function(t){var i=e.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",t,this.ui(i)))},_out:function(t){var i=e.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",t,this.ui(i)))},_drop:function(t,i){var s=i||e.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=e(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)&&e.ui.intersect(s,e.extend(i,{offset:i.element.offset()}),i.options.tolerance,t)?(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",t,this.ui(s)),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,i){return e>=t&&t+i>e}return function(t,i,s,n){if(!i.offset)return!1;var a=(t.positionAbs||t.position.absolute).left+t.margins.left,o=(t.positionAbs||t.position.absolute).top+t.margins.top,r=a+t.helperProportions.width,h=o+t.helperProportions.height,l=i.offset.left,u=i.offset.top,d=l+i.proportions().width,c=u+i.proportions().height;switch(s){case"fit":return a>=l&&d>=r&&o>=u&&c>=h;case"intersect":return a+t.helperProportions.width/2>l&&d>r-t.helperProportions.width/2&&o+t.helperProportions.height/2>u&&c>h-t.helperProportions.height/2;case"pointer":return e(n.pageY,u,i.proportions().height)&&e(n.pageX,l,i.proportions().width);case"touch":return(o>=u&&c>=o||h>=u&&c>=h||u>o&&h>c)&&(a>=l&&d>=a||r>=l&&d>=r||l>a&&r>d);default:return!1}}}(),e.ui.ddmanager={current:null,droppables:{"default":[]},prepareOffsets:function(t,i){var s,n,a=e.ui.ddmanager.droppables[t.options.scope]||[],o=i?i.type:null,r=(t.currentItem||t.element).find(":data(ui-droppable)").addBack();e:for(s=0;a.length>s;s++)if(!(a[s].options.disabled||t&&!a[s].accept.call(a[s].element[0],t.currentItem||t.element))){for(n=0;r.length>n;n++)if(r[n]===a[s].element[0]){a[s].proportions().height=0;continue e}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(t,i){var s=!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,i)&&(s=this._drop.call(this,i)||s),!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,i)))}),s},dragStart:function(t,i){t.element.parentsUntil("body").bind("scroll.droppable",function(){t.options.refreshPositions||e.ui.ddmanager.prepareOffsets(t,i)})},drag:function(t,i){t.options.refreshPositions&&e.ui.ddmanager.prepareOffsets(t,i),e.each(e.ui.ddmanager.droppables[t.options.scope]||[],function(){if(!this.options.disabled&&!this.greedyChild&&this.visible){var s,n,a,o=e.ui.intersect(t,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 e(this).droppable("instance").options.scope===n}),a.length&&(s=e(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(t,i){t.element.parentsUntil("body").unbind("scroll.droppable"),t.options.refreshPositions||e.ui.ddmanager.prepareOffsets(t,i)}},e.ui.droppable,e.widget("ui.resizable",e.ui.mouse,{version:"1.11.3",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,i){if("hidden"===e(t).css("overflow"))return!1;var s=i&&"left"===i?"scrollLeft":"scrollTop",n=!1;return t[s]>0?!0:(t[s]=1,n=t[s]>0,t[s]=0,n)},_create:function(){var t,i,s,n,a,o=this,r=this.options;if(this.element.addClass("ui-resizable"),e.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(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=r.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.constructor===String)for("all"===this.handles&&(this.handles="n,e,s,w,se,sw,ne,nw"),t=this.handles.split(","),this.handles={},i=0;t.length>i;i++)s=e.trim(t[i]),a="ui-resizable-"+s,n=e("<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(t){var i,s,n,a;t=t||this.element;for(i in this.handles)this.handles[i].constructor===String&&(this.handles[i]=this.element.children(this.handles[i]).first().show()),this.elementIsWrapper&&this.originalElement[0].nodeName.match(/^(textarea|input|select|button)$/i)&&(s=e(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(""),t.css(n,a),this._proportionallyResize()),e(this.handles[i]).length},this._renderAxis(this.element),this._handles=e(".ui-resizable-handle",this.element).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(),e(this.element).addClass("ui-resizable-autohide").mouseenter(function(){r.disabled||(e(this).removeClass("ui-resizable-autohide"),o._handles.show())}).mouseleave(function(){r.disabled||o.resizing||(e(this).addClass("ui-resizable-autohide"),o._handles.hide())})),this._mouseInit()},_destroy:function(){this._mouseDestroy();var t,i=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&&(i(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),i(this.originalElement),this},_mouseCapture:function(t){var i,s,n=!1;for(i in this.handles)s=e(this.handles[i])[0],(s===t.target||e.contains(s,t.target))&&(n=!0);return!this.options.disabled&&n},_mouseStart:function(t){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+=e(a.containment).scrollLeft()||0,s+=e(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:t.pageX,top:t.pageY},this.aspectRatio="number"==typeof a.aspectRatio?a.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),o.addClass("ui-resizable-resizing"),this._propagate("start",t),!0},_mouseDrag:function(t){var i,s,n=this.originalMousePosition,a=this.axis,o=t.pageX-n.left||0,r=t.pageY-n.top||0,h=this._change[a];return this._updatePrevProperties(),h?(i=h.apply(this,[t,o,r]),this._updateVirtualBoundaries(t.shiftKey),(this._aspectRatio||t.shiftKey)&&(i=this._updateRatio(i,t)),i=this._respectSize(i,t),this._updateCache(i),this._propagate("resize",t),s=this._applyChanges(),!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize(),e.isEmptyObject(s)||(this._updatePrevProperties(),this._trigger("resize",t,this.ui()),this._applyChanges()),!1):!1},_mouseStop:function(t){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(e.extend(o,{top:h,left:r})),u.helper.height(u.size.height),u.helper.width(u.size.width),this._helper&&!l.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,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||e)&&(t=a.minHeight*this.aspectRatio,s=a.minWidth/this.aspectRatio,i=a.maxHeight*this.aspectRatio,n=a.maxWidth/this.aspectRatio,t>a.minWidth&&(a.minWidth=t),s>a.minHeight&&(a.minHeight=s),a.maxWidth>i&&(a.maxWidth=i),a.maxHeight>n&&(a.maxHeight=n)),this._vBoundaries=a},_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,i=this.size,s=this.axis;return this._isNumber(e.height)?e.width=e.height*this.aspectRatio:this._isNumber(e.width)&&(e.height=e.width/this.aspectRatio),"sw"===s&&(e.left=t.left+(i.width-e.width),e.top=null),"nw"===s&&(e.top=t.top+(i.height-e.height),e.left=t.left+(i.width-e.width)),e},_respectSize:function(e){var t=this._vBoundaries,i=this.axis,s=this._isNumber(e.width)&&t.maxWidth&&t.maxWidth<e.width,n=this._isNumber(e.height)&&t.maxHeight&&t.maxHeight<e.height,a=this._isNumber(e.width)&&t.minWidth&&t.minWidth>e.width,o=this._isNumber(e.height)&&t.minHeight&&t.minHeight>e.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&&(e.width=t.minWidth),o&&(e.height=t.minHeight),s&&(e.width=t.maxWidth),n&&(e.height=t.maxHeight),a&&l&&(e.left=r-t.minWidth),s&&l&&(e.left=r-t.maxWidth),o&&u&&(e.top=h-t.minHeight),n&&u&&(e.top=h-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,i=[],s=[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++)i[t]=parseInt(s[t],10)||0,i[t]+=parseInt(n[t],10)||0;return{height:i[0]+i[2],width:i[1]+i[3]}},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var e,t=0,i=this.helper||this.element;this._proportionallyResizeElements.length>t;t++)e=this._proportionallyResizeElements[t],this.outerDimensions||(this.outerDimensions=this._getPaddingPlusBorderDimensions(e)),e.css({height:i.height()-this.outerDimensions.height||0,width:i.width()-this.outerDimensions.width||0})},_renderProxy:function(){var t=this.element,i=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:++i.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 i=this.originalSize,s=this.originalPosition;return{left:s.left+t,width:i.width-t}},n:function(e,t,i){var s=this.originalSize,n=this.originalPosition;return{top:n.top+i,height:s.height-i}},s:function(e,t,i){return{height:this.originalSize.height+i}},se:function(t,i,s){return e.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[t,i,s]))},sw:function(t,i,s){return e.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[t,i,s]))},ne:function(t,i,s){return e.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[t,i,s]))},nw:function(t,i,s){return e.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[t,i,s]))}},_propagate:function(t,i){e.ui.plugin.call(this,t,[i,this.ui()]),"resize"!==t&&this._trigger(t,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}}}),e.ui.plugin.add("resizable","animate",{stop:function(t){var i=e(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(e.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&&e(n[0]).css({width:s.width,height:s.height}),i._updateCache(s),i._propagate("resize",t)}})}}),e.ui.plugin.add("resizable","containment",{start:function(){var t,i,s,n,a,o,r,h=e(this).resizable("instance"),l=h.options,u=h.element,d=l.containment,c=d instanceof e?d.get(0):/parent/.test(d)?u.parent().get(0):d;c&&(h.containerElement=e(c),/document/.test(d)||d===document?(h.containerOffset={left:0,top:0},h.containerPosition={left:0,top:0},h.parentData={element:e(document),left:0,top:0,width:e(document).width(),height:e(document).height()||document.body.parentNode.scrollHeight}):(t=e(c),i=[],e(["Top","Right","Left","Bottom"]).each(function(e,s){i[e]=h._num(t.css("padding"+s))}),h.containerOffset=t.offset(),h.containerPosition=t.position(),h.containerSize={height:t.innerHeight()-i[3],width:t.innerWidth()-i[1]},s=h.containerOffset,n=h.containerSize.height,a=h.containerSize.width,o=h._hasScroll(c,"left")?c.scrollWidth:a,r=h._hasScroll(c)?c.scrollHeight:n,h.parentData={element:c,left:s.left,top:s.top,width:o,height:r}))},resize:function(t){var i,s,n,a,o=e(this).resizable("instance"),r=o.options,h=o.containerOffset,l=o.position,u=o._aspectRatio||t.shiftKey,d={top:0,left:0},c=o.containerElement,p=!0;c[0]!==document&&/static/.test(c.css("position"))&&(d=h),l.left<(o._helper?h.left:0)&&(o.size.width=o.size.width+(o._helper?o.position.left-h.left:o.position.left-d.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-d.left:o.offset.left-h.left)),s=Math.abs(o.sizeDiff.height+(o._helper?o.offset.top-d.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 t=e(this).resizable("instance"),i=t.options,s=t.containerOffset,n=t.containerPosition,a=t.containerElement,o=e(t.helper),r=o.offset(),h=o.outerWidth()-t.sizeDiff.width,l=o.outerHeight()-t.sizeDiff.height;t._helper&&!i.animate&&/relative/.test(a.css("position"))&&e(this).css({left:r.left-n.left-s.left,width:h,height:l}),t._helper&&!i.animate&&/static/.test(a.css("position"))&&e(this).css({left:r.left-n.left-s.left,width:h,height:l})}}),e.ui.plugin.add("resizable","alsoResize",{start:function(){var t=e(this).resizable("instance"),i=t.options,s=function(t){e(t).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)})})};"object"!=typeof i.alsoResize||i.alsoResize.parentNode?s(i.alsoResize):i.alsoResize.length?(i.alsoResize=i.alsoResize[0],s(i.alsoResize)):e.each(i.alsoResize,function(e){s(e)})},resize:function(t,i){var s=e(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},h=function(t,s){e(t).each(function(){var t=e(this),n=e(this).data("ui-resizable-alsoresize"),a={},o=s&&s.length?s:t.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];e.each(o,function(e,t){var i=(n[t]||0)+(r[t]||0);i&&i>=0&&(a[t]=i||null)}),t.css(a)})};"object"!=typeof n.alsoResize||n.alsoResize.nodeType?h(n.alsoResize):e.each(n.alsoResize,function(e,t){h(e,t)})},stop:function(){e(this).removeData("resizable-alsoresize")}}),e.ui.plugin.add("resizable","ghost",{start:function(){var t=e(this).resizable("instance"),i=t.options,s=t.size;t.ghost=t.originalElement.clone(),t.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:""),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,i=e(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,d=Math.round((n.width-a.width)/l)*l,c=Math.round((n.height-a.height)/u)*u,p=a.width+d,f=a.height+c,m=s.maxWidth&&p>s.maxWidth,g=s.maxHeight&&f>s.maxHeight,v=s.minWidth&&s.minWidth>p,y=s.minHeight&&s.minHeight>f;s.grid=h,v&&(p+=l),y&&(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-c):/^(sw)$/.test(r)?(i.size.width=p,i.size.height=f,i.position.left=o.left-d):((0>=f-u||0>=p-l)&&(t=i._getPaddingPlusBorderDimensions(this)),f-u>0?(i.size.height=f,i.position.top=o.top-c):(f=u-t.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-d):(p=l-t.width,i.size.width=p,i.position.left=o.left+a.width-p))}}),e.ui.resizable,e.widget("ui.selectable",e.ui.mouse,{version:"1.11.3",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,i=this;
-this.element.addClass("ui-selectable"),this.dragged=!1,this.refresh=function(){t=e(i.options.filter,i.element[0]),t.addClass("ui-selectee"),t.each(function(){var t=e(this),i=t.offset();e.data(this,"selectable-item",{element:this,$element:t,left:i.left,top:i.top,right:i.left+t.outerWidth(),bottom:i.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 i=this,s=this.options;this.opos=[t.pageX,t.pageY],this.options.disabled||(this.selectees=e(s.filter,this.element[0]),this._trigger("start",t),e(s.appendTo).append(this.helper),this.helper.css({left:t.pageX,top:t.pageY,width:0,height:0}),s.autoRefresh&&this.refresh(),this.selectees.filter(".ui-selected").each(function(){var s=e.data(this,"selectable-item");s.startselected=!0,t.metaKey||t.ctrlKey||(s.$element.removeClass("ui-selected"),s.selected=!1,s.$element.addClass("ui-unselecting"),s.unselecting=!0,i._trigger("unselecting",t,{unselecting:s.element}))}),e(t.target).parents().addBack().each(function(){var s,n=e.data(this,"selectable-item");return n?(s=!t.metaKey&&!t.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",t,{selecting:n.element}):i._trigger("unselecting",t,{unselecting:n.element}),!1):void 0}))},_mouseDrag:function(t){if(this.dragged=!0,!this.options.disabled){var i,s=this,n=this.options,a=this.opos[0],o=this.opos[1],r=t.pageX,h=t.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=e.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",t,{selecting:i.element}))):(i.selecting&&((t.metaKey||t.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",t,{unselecting:i.element}))),i.selected&&(t.metaKey||t.ctrlKey||i.startselected||(i.$element.removeClass("ui-selected"),i.selected=!1,i.$element.addClass("ui-unselecting"),i.unselecting=!0,s._trigger("unselecting",t,{unselecting:i.element})))))}),!1}},_mouseStop:function(t){var i=this;return this.dragged=!1,e(".ui-unselecting",this.element[0]).each(function(){var s=e.data(this,"selectable-item");s.$element.removeClass("ui-unselecting"),s.unselecting=!1,s.startselected=!1,i._trigger("unselected",t,{unselected:s.element})}),e(".ui-selecting",this.element[0]).each(function(){var s=e.data(this,"selectable-item");s.$element.removeClass("ui-selecting").addClass("ui-selected"),s.selecting=!1,s.selected=!0,s.startselected=!0,i._trigger("selected",t,{selected:s.element})}),this._trigger("stop",t),this.helper.remove(),!1}}),e.widget("ui.sortable",e.ui.mouse,{version:"1.11.3",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,i){return e>=t&&t+i>e},_isFloating:function(e){return/left|right/.test(e.css("float"))||/inline|table-cell/.test(e.css("display"))},_create:function(){var e=this.options;this.containerCache={},this.element.addClass("ui-sortable"),this.refresh(),this.floating=this.items.length?"x"===e.axis||this._isFloating(this.items[0].item):!1,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,i){var s=null,n=!1,a=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,a.widgetName+"-item")===a?(s=e(this),!1):void 0}),e.data(t.target,a.widgetName+"-item")===a&&(s=e(t.target)),s?!this.options.handle||i||(e(this.options.handle,s).find("*").addBack().each(function(){this===t.target&&(n=!0)}),n)?(this.currentItem=s,this._removeCurrentsFromItems(),!0):!1:!1)},_mouseStart:function(t,i,s){var n,a,o=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,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=e("<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",t,this._uiHash()),this._preserveHelperProportions||this._cacheHelperProportions(),!s)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&&!o.dropBehaviour&&e.ui.ddmanager.prepareOffsets(this,t),this.dragging=!0,this.helper.addClass("ui-sortable-helper"),this._mouseDrag(t),!0},_mouseDrag:function(t){var i,s,n,a,o=this.options,r=!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<o.scrollSensitivity?this.scrollParent[0].scrollTop=r=this.scrollParent[0].scrollTop+o.scrollSpeed:t.pageY-this.overflowOffset.top<o.scrollSensitivity&&(this.scrollParent[0].scrollTop=r=this.scrollParent[0].scrollTop-o.scrollSpeed),this.overflowOffset.left+this.scrollParent[0].offsetWidth-t.pageX<o.scrollSensitivity?this.scrollParent[0].scrollLeft=r=this.scrollParent[0].scrollLeft+o.scrollSpeed:t.pageX-this.overflowOffset.left<o.scrollSensitivity&&(this.scrollParent[0].scrollLeft=r=this.scrollParent[0].scrollLeft-o.scrollSpeed)):(t.pageY-this.document.scrollTop()<o.scrollSensitivity?r=this.document.scrollTop(this.document.scrollTop()-o.scrollSpeed):this.window.height()-(t.pageY-this.document.scrollTop())<o.scrollSensitivity&&(r=this.document.scrollTop(this.document.scrollTop()+o.scrollSpeed)),t.pageX-this.document.scrollLeft()<o.scrollSensitivity?r=this.document.scrollLeft(this.document.scrollLeft()-o.scrollSpeed):this.window.width()-(t.pageX-this.document.scrollLeft())<o.scrollSensitivity&&(r=this.document.scrollLeft(this.document.scrollLeft()+o.scrollSpeed))),r!==!1&&e.ui.ddmanager&&!o.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"),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&&!e.contains(this.placeholder[0],n)&&("semi-dynamic"===this.options.type?!e.contains(this.element[0],n):!0)){if(this.direction=1===a?"down":"up","pointer"!==this.options.tolerance&&!this._intersectsWithSides(s))break;this._rearrange(t,s),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,i){if(t){if(e.ui.ddmanager&&!this.options.dropBehaviour&&e.ui.ddmanager.drop(this,t),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,e(this.helper).animate(o,parseInt(this.options.revert,10)||500,function(){s._clear(t)})}else this._clear(t,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 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 i=this._getItemsAsjQuery(t&&t.connected),s=[];return t=t||{},e(i).each(function(){var i=(e(t.item||this).attr(t.attribute||"id")||"").match(t.expression||/(.+)[\-=_](.+)/);i&&s.push((t.key||i[1]+"[]")+"="+(t.key&&t.expression?i[1]:i[2]))}),!s.length&&t.key&&s.push(t.key+"="),s.join("&")},toArray:function(t){var i=this._getItemsAsjQuery(t&&t.connected),s=[];return t=t||{},i.each(function(){s.push(e(t.item||this).attr(t.attribute||"id")||"")}),s},_intersectsWith:function(e){var t=this.positionAbs.left,i=t+this.helperProportions.width,s=this.positionAbs.top,n=s+this.helperProportions.height,a=e.left,o=a+e.width,r=e.top,h=r+e.height,l=this.offset.click.top,u=this.offset.click.left,d="x"===this.options.axis||s+l>r&&h>s+l,c="y"===this.options.axis||t+u>a&&o>t+u,p=d&&c;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>a&&o>i-this.helperProportions.width/2&&s+this.helperProportions.height/2>r&&h>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),i="y"===this.options.axis||this._isOverAxis(this.positionAbs.left+this.offset.click.left,e.left,e.width),s=t&&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(e){var t=this._isOverAxis(this.positionAbs.top+this.offset.click.top,e.top+e.height/2,e.height),i=this._isOverAxis(this.positionAbs.left+this.offset.click.left,e.left+e.width/2,e.width),s=this._getDragVerticalDirection(),n=this._getDragHorizontalDirection();return this.floating&&n?"right"===n&&i||"left"===n&&!i:s&&("down"===s&&t||"up"===s&&!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 i(){r.push(this)}var s,n,a,o,r=[],h=[],l=this._connectWith();if(l&&t)for(s=l.length-1;s>=0;s--)for(a=e(l[s],this.document[0]),n=a.length-1;n>=0;n--)o=e.data(a[n],this.widgetFullName),o&&o!==this&&!o.options.disabled&&h.push([e.isFunction(o.options.items)?o.options.items.call(o.element):e(o.options.items,o.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),o]);for(h.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]),s=h.length-1;s>=0;s--)h[s][0].each(i);return e(r)},_removeCurrentsFromItems:function(){var t=this.currentItem.find(":data("+this.widgetName+"-item)");this.items=e.grep(this.items,function(e){for(var i=0;t.length>i;i++)if(t[i]===e.item[0])return!1;return!0})},_refreshItems:function(t){this.items=[],this.containers=[this];var i,s,n,a,o,r,h,l,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]],c=this._connectWith();if(c&&this.ready)for(i=c.length-1;i>=0;i--)for(n=e(c[i],this.document[0]),s=n.length-1;s>=0;s--)a=e.data(n[s],this.widgetFullName),a&&a!==this&&!a.options.disabled&&(d.push([e.isFunction(a.options.items)?a.options.items.call(a.element[0],t,{item:this.currentItem}):e(a.options.items,a.element),a]),this.containers.push(a));for(i=d.length-1;i>=0;i--)for(o=d[i][1],r=d[i][0],s=0,l=r.length;l>s;s++)h=e(r[s]),h.data(this.widgetName+"-item",o),u.push({item:h,instance:o,width:0,height:0,left:0,top:0})},refreshPositions:function(t){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?e(this.options.toleranceElement,s.item):s.item,t||(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(t){t=t||this;var i,s=t.options;s.placeholder&&s.placeholder.constructor!==String||(i=s.placeholder,s.placeholder={element:function(){var s=t.currentItem[0].nodeName.toLowerCase(),n=e("<"+s+">",t.document[0]).addClass(i||t.currentItem[0].className+" ui-sortable-placeholder").removeClass("ui-sortable-helper");return"tr"===s?t.currentItem.children().each(function(){e("<td>&#160;</td>",t.document[0]).attr("colspan",e(this).attr("colspan")||1).appendTo(n)}):"img"===s&&n.attr("src",t.currentItem.attr("src")),i||n.css("visibility","hidden"),n},update:function(e,n){(!i||s.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(s.placeholder.element.call(t.element,t.currentItem)),t.currentItem.after(t.placeholder),s.placeholder.update(t,t.placeholder)},_contactContainers:function(t){var i,s,n,a,o,r,h,l,u,d,c=null,p=null;for(i=this.containers.length-1;i>=0;i--)if(!e.contains(this.currentItem[0],this.containers[i].element[0]))if(this._intersectsWith(this.containers[i].containerCache)){if(c&&e.contains(this.containers[i].element[0],c.element[0]))continue;c=this.containers[i],p=i}else this.containers[i].containerCache.over&&(this.containers[i]._trigger("out",t,this._uiHash(this)),this.containers[i].containerCache.over=0);if(c)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,a=null,u=c.floating||this._isFloating(this.currentItem),o=u?"left":"top",r=u?"width":"height",d=u?"clientX":"clientY",s=this.items.length-1;s>=0;s--)e.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,t[d]-h>this.items[s][r]/2&&(l=!0),n>Math.abs(t[d]-h)&&(n=Math.abs(t[d]-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",t,this._uiHash()),this.currentContainer.containerCache.over=1),void 0;a?this._rearrange(t,a,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 i=this.options,s=e.isFunction(i.helper)?e(i.helper.apply(this.element[0],[t,this.currentItem])):"clone"===i.helper?this.currentItem.clone():this.currentItem;return s.parents("body").length||e("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(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,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)||(t=e(n.containment)[0],i=e(n.containment).offset(),s="hidden"!==e(t).css("overflow"),this.containment=[i.left+(parseInt(e(t).css("borderLeftWidth"),10)||0)+(parseInt(e(t).css("paddingLeft"),10)||0)-this.margins.left,i.top+(parseInt(e(t).css("borderTopWidth"),10)||0)+(parseInt(e(t).css("paddingTop"),10)||0)-this.margins.top,i.left+(s?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,i.top+(s?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,i){i||(i=this.position);var s="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,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(t){var i,s,n=this.options,a=t.pageX,o=t.pageY,r="absolute"!==this.cssPosition||this.scrollParent[0]!==this.document[0]&&e.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&&(t.pageX-this.offset.click.left<this.containment[0]&&(a=this.containment[0]+this.offset.click.left),t.pageY-this.offset.click.top<this.containment[1]&&(o=this.containment[1]+this.offset.click.top),t.pageX-this.offset.click.left>this.containment[2]&&(a=this.containment[2]+this.offset.click.left),t.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(e,t,i,s){i?i[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(!s)})},_clear:function(e,t){function i(e,t,i){return function(s){i._trigger(e,s,t._uiHash(t))}}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&&!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)))),s=this.containers.length-1;s>=0;s--)t||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,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(s=0;n.length>s;s++)n[s].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 i=t||this;return{helper:i.helper,placeholder:i.placeholder||e([]),position:i.position,originalPosition:i.originalPosition,offset:i.positionAbs,item:i.currentItem,sender:t?t.element:null}}}),e.widget("ui.accordion",{version:"1.11.3",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?(this._activate(t),void 0):("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()),"disabled"===e&&(this.element.toggleClass("ui-state-disabled",!!t).attr("aria-disabled",t),this.headers.add(this.headers.next()).toggleClass("ui-state-disabled",!!t)),void 0)},_keydown:function(t){if(!t.altKey&&!t.ctrlKey){var i=e.ui.keyCode,s=this.headers.length,n=this.headers.index(t.target),a=!1;switch(t.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(t);break;case i.HOME:a=this.headers[0];break;case i.END:a=this.headers[s-1]}a&&(e(t.target).attr("tabIndex",-1),e(a).attr("tabIndex",0),a.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,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 t=e(this),i=t.uniqueId().attr("id"),s=t.next(),n=s.uniqueId().attr("id");t.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?(t=n.height(),this.element.siblings(":visible").each(function(){var i=e(this),s=i.css("position");"absolute"!==s&&"fixed"!==s&&(t-=i.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"===s&&(t=0,this.headers.next().each(function(){t=Math.max(t,e(this).css("height","").height())}).height(t))},_activate:function(t){var i=this._findActive(t)[0];i!==this.active[0]&&(i=i||this.active[0],this._eventHandler({target:i,currentTarget:i,preventDefault:e.noop}))},_findActive:function(t){return"number"==typeof t?this.headers.eq(t):e()},_setupEvents:function(t){var i={keydown:"_keydown"};t&&e.each(t.split(" "),function(e,t){i[t]="_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(t){var i=this.options,s=this.active,n=e(t.currentTarget),a=n[0]===s[0],o=a&&i.collapsible,r=o?e():n.next(),h=s.next(),l={oldHeader:s,oldPanel:h,newHeader:o?e():n,newPanel:r};t.preventDefault(),a&&!i.collapsible||this._trigger("beforeActivate",t,l)===!1||(i.active=o?!1:this.headers.index(n),this.active=a?e():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(t){var i=t.newPanel,s=this.prevShow.length?this.prevShow:t.oldPanel;this.prevShow.add(this.prevHide).stop(!0,!0),this.prevShow=i,this.prevHide=s,this.options.animate?this._animate(i,s,t):(s.hide(),i.show(),this._toggleComplete(t)),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(e(this).attr("tabIndex"),10)}).attr("tabIndex",-1),i.attr("aria-hidden","false").prev().attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0})},_animate:function(e,t,i){var s,n,a,o=this,r=0,h=e.length&&(!t.length||e.index()<t.index()),l=this.options.animate||{},u=h&&l.down||l,d=function(){o._toggleComplete(i)};return"number"==typeof u&&(a=u),"string"==typeof u&&(n=u),n=n||u.easing||l.easing,a=a||u.duration||l.duration,t.length?e.length?(s=e.show().outerHeight(),t.animate(this.hideProps,{duration:a,easing:n,step:function(e,t){t.now=Math.round(e)}}),e.hide().animate(this.showProps,{duration:a,easing:n,complete:d,step:function(e,i){i.now=Math.round(e),"height"!==i.prop?r+=i.now:"content"!==o.options.heightStyle&&(i.now=Math.round(s-t.outerHeight()-r),r=0)}}),void 0):t.animate(this.hideProps,a,n,d):e.animate(this.showProps,a,n,d)},_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.3",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 i=e(t.target);!this.mouseHandled&&i.not(".ui-state-disabled").length&&(this.select(t),t.isPropagationStopped()||(this.mouseHandled=!0),i.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 i=e(t.currentTarget);i.siblings(".ui-state-active").removeClass("ui-state-active"),this.focus(t,i)}},mouseleave:"collapseAll","mouseleave .ui-menu":"collapseAll",focus:function(e,t){var i=this.active||this.element.find(this.options.items).eq(0);t||this.focus(e,i)},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 i,s,n,a,o=!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:o=!1,s=this.previousFilter||"",n=String.fromCharCode(t.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(t.keyCode),i=this._filterMenuItems(n)),i.length?(this.focus(t,i),this.previousFilter=n,this.filterTimer=this._delay(function(){delete this.previousFilter},1e3)):delete this.previousFilter}o&&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,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 t=e(this),i=t.parent(),s=e("<span>").addClass("ui-menu-icon ui-icon "+n).data("ui-menu-submenu-carat",!0);i.attr("aria-haspopup","true").prepend(s),t.attr("aria-labelledby",i.attr("id"))}),t=a.add(this.element),i=t.find(this.options.items),i.not(".ui-menu-item").each(function(){var t=e(this);s._isDivider(t)&&t.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&&!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 i,s;this.blur(e,e&&"focus"===e.type),this._scrollIntoView(t),this.active=t.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"),e&&"keydown"===e.type?this._close():this.timer=this._delay(function(){this._close()},this.delay),i=t.children(".ui-menu"),i.length&&e&&/^mouse/.test(e.type)&&this._startOpening(i),this.activeMenu=t.parent(),this._trigger("focus",e,{item:t})},_scrollIntoView:function(t){var i,s,n,a,o,r;this._hasScroll()&&(i=parseFloat(e.css(this.activeMenu[0],"borderTopWidth"))||0,s=parseFloat(e.css(this.activeMenu[0],"paddingTop"))||0,n=t.offset().top-this.activeMenu.offset().top-i-s,a=this.activeMenu.scrollTop(),o=this.activeMenu.height(),r=t.outerHeight(),0>n?this.activeMenu.scrollTop(a+n):n+r>o&&this.activeMenu.scrollTop(a+n-o+r))},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 i=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(i)},collapseAll:function(t,i){clearTimeout(this.timer),this.timer=this._delay(function(){var s=i?this.element:e(t&&t.target).closest(this.element.find(".ui-menu"));s.length||(s=this.element),this._close(s),this.blur(t),this.activeMenu=s},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,i){var s;this.active&&(s="first"===e||"last"===e?this.active["first"===e?"prevAll":"nextAll"](".ui-menu-item").eq(-1):this.active[e+"All"](".ui-menu-item").eq(0)),s&&s.length&&this.active||(s=this.activeMenu.find(this.options.items)[t]()),this.focus(i,s)},nextPage:function(t){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=e(this),0>i.offset().top-s-n}),this.focus(t,i)):this.focus(t,this.activeMenu.find(this.options.items)[this.active?"last":"first"]())),void 0):(this.next(t),void 0)},previousPage:function(t){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=e(this),i.offset().top-s+n>0}),this.focus(t,i)):this.focus(t,this.activeMenu.find(this.options.items).first())),void 0):(this.next(t),void 0)},_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 i={item:this.active};this.active.has(".ui-menu").length||this.collapseAll(t,!0),this._trigger("select",t,i)},_filterMenuItems:function(t){var i=t.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&"),s=RegExp("^"+i,"i");return this.activeMenu.find(this.options.items).filter(".ui-menu-item").filter(function(){return s.test(e.trim(e(this).text()))})}}),e.widget("ui.autocomplete",{version:"1.11.3",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,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 t=!0,s=!0,i=!0,void 0;t=!1,s=!1,i=!1;var a=e.ui.keyCode;switch(n.keyCode){case a.PAGE_UP:t=!0,this._move("previousPage",n);break;case a.PAGE_DOWN:t=!0,this._move("nextPage",n);break;case a.UP:t=!0,this._keyEvent("previous",n);break;case a.DOWN:t=!0,this._keyEvent("next",n);break;case a.ENTER:this.menu.active&&(t=!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(t)return t=!1,(!this.isMultiLine||this.menu.element.is(":visible"))&&s.preventDefault(),void 0;if(!i){var n=e.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(e){return s?(s=!1,e.preventDefault(),void 0):(this._searchTimeout(e),void 0)},focus:function(){this.selectedItem=null,this.previous=this._value()},blur:function(e){return this.cancelBlur?(delete this.cancelBlur,void 0):(clearTimeout(this.searching),this.close(e),this._change(e),void 0)}}),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 i=this.menu.element[0];e(t.target).closest(".ui-menu-item").length||this._delay(function(){var t=this;this.document.one("mousedown",function(s){s.target===t.element[0]||s.target===i||e.contains(i,s.target)||t.close()})})},menufocus:function(t,i){var s,n;return this.isNewMenu&&(this.isNewMenu=!1,t.originalEvent&&/^mouse/.test(t.originalEvent.type))?(this.menu.blur(),this.document.one("mousemove",function(){e(t.target).trigger(t.originalEvent)}),void 0):(n=i.item.data("ui-autocomplete-item"),!1!==this._trigger("focus",t,{item:n})&&t.originalEvent&&/^key/.test(t.originalEvent.type)&&this._value(n.value),s=i.item.attr("aria-label")||n.value,s&&e.trim(s).length&&(this.liveRegion.children().hide(),e("<div>").text(s).appendTo(this.liveRegion)),void 0)},menuselect:function(e,t){var i=t.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",e,{item:i})&&this._value(i.value),this.term=this._value(),this.close(e),this.selectedItem=i}}),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,i,s=this;e.isArray(this.options.source)?(t=this.options.source,this.source=function(i,s){s(e.ui.autocomplete.filter(t,i.term))}):"string"==typeof this.options.source?(i=this.options.source,this.source=function(t,n){s.xhr&&s.xhr.abort(),s.xhr=e.ajax({url:i,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(),i=this.menu.element.is(":visible"),s=e.altKey||e.ctrlKey||e.metaKey||e.shiftKey;(!t||t&&!i&&!s)&&(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 i=this.menu.element.empty();this._renderMenu(i,t),this.isNewMenu=!0,this.menu.refresh(),i.show(),this._resizeMenu(),i.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,i){var s=this;e.each(i,function(e,i){s._renderItemData(t,i)})},_renderItemData:function(e,t){return this._renderItem(e,t).data("ui-autocomplete-item",t)},_renderItem:function(t,i){return e("<li>").text(i.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),this.menu.blur(),void 0):(this.menu[e](t),void 0):(this.search(null,t),void 0)},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,i){var s=RegExp(e.ui.autocomplete.escapeRegex(i),"i");return e.grep(t,function(e){return s.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 i;this._superApply(arguments),this.options.disabled||this.cancelSearch||(i=t&&t.length?this.options.messages.results(t.length):this.options.messages.noResults,this.liveRegion.children().hide(),e("<div>").text(i).appendTo(this.liveRegion))}}),e.ui.autocomplete;var c,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 i=t.name,s=t.form,n=e([]);return i&&(i=i.replace(/'/g,"\\'"),n=s?e(s).find("[name='"+i+"'][type=radio]"):e("[name='"+i+"'][type=radio]",t.ownerDocument).filter(function(){return!this.form})),n};e.widget("ui.button",{version:"1.11.3",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,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===c&&e(this).addClass("ui-state-active")}).bind("mouseleave"+this.eventNamespace,function(){i.disabled||e(this).removeClass(n)}).bind("click"+this.eventNamespace,function(e){i.disabled&&(e.preventDefault(),e.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(){t.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;e(this).addClass("ui-state-active"),t.buttonElement.attr("aria-pressed","true");var s=t.element[0];g(s).not(s).map(function(){return e(this).button("widget")[0]}).removeClass("ui-state-active").attr("aria-pressed","false")}):(this.buttonElement.bind("mousedown"+this.eventNamespace,function(){return i.disabled?!1:(e(this).addClass("ui-state-active"),c=this,t.document.one("mouseup",function(){c=null}),void 0)}).bind("mouseup"+this.eventNamespace,function(){return i.disabled?!1:(e(this).removeClass("ui-state-active"),void 0)}).bind("keydown"+this.eventNamespace,function(t){return i.disabled?!1:((t.keyCode===e.ui.keyCode.SPACE||t.keyCode===e.ui.keyCode.ENTER)&&e(this).addClass("ui-state-active"),void 0)}).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",i.disabled),this._resetButton()},_determineButtonType:function(){var e,t,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?(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"),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(e,t){return this._super(e,t),"disabled"===e?(this.widget().toggleClass("ui-state-disabled",!!t),this.element.prop("disabled",!!t),t&&("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 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 this.options.label&&this.element.val(this.options.label),void 0;var t=this.buttonElement.removeClass(f),i=e("<span></span>",this.document[0]).addClass("ui-button-text").html(this.options.label).appendTo(t.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&&t.prepend("<span class='ui-button-icon-primary ui-icon "+s.primary+"'></span>"),s.secondary&&t.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||t.attr("title",e.trim(i)))):a.push("ui-button-text-only"),t.addClass(a.join(" "))}}),e.widget("ui.buttonset",{version:"1.11.3",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"),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 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.3"}});var v;e.extend(n.prototype,{markerClassName:"hasDatepicker",maxRows:4,_widgetDatepicker:function(){return this.dpDiv},setDefaults:function(e){return r(this._defaults,e||{}),this},_attachDatepicker:function(t,i){var s,n,a;s=t.nodeName.toLowerCase(),n="div"===s||"span"===s,t.id||(this.uuid+=1,t.id="dp"+this.uuid),a=this._newInst(e(t),n),a.settings=e.extend({},i||{}),"input"===s?this._connectDatepicker(t,a):n&&this._inlineDatepicker(t,a)},_newInst:function(t,i){var s=t[0].id.replace(/([^A-Za-z0-9_\-])/g,"\\\\$1");return{id:s,input:t,selectedDay:0,selectedMonth:0,selectedYear:0,drawMonth:0,drawYear:0,inline:i,dpDiv:i?a(e("<div class='"+this._inlineClass+" ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all'></div>")):this.dpDiv}},_connectDatepicker:function(t,i){var s=e(t);i.append=e([]),i.trigger=e([]),s.hasClass(this.markerClassName)||(this._attachments(s,i),s.addClass(this.markerClassName).keydown(this._doKeyDown).keypress(this._doKeyPress).keyup(this._doKeyUp),this._autoSize(i),e.data(t,"datepicker",i),i.settings.disabled&&this._disableDatepicker(t))},_attachments:function(t,i){var s,n,a,o=this._get(i,"appendText"),r=this._get(i,"isRTL");i.append&&i.append.remove(),o&&(i.append=e("<span class='"+this._appendClass+"'>"+o+"</span>"),t[r?"before":"after"](i.append)),t.unbind("focus",this._showDatepicker),i.trigger&&i.trigger.remove(),s=this._get(i,"showOn"),("focus"===s||"both"===s)&&t.focus(this._showDatepicker),("button"===s||"both"===s)&&(n=this._get(i,"buttonText"),a=this._get(i,"buttonImage"),i.trigger=e(this._get(i,"buttonImageOnly")?e("<img/>").addClass(this._triggerClass).attr({src:a,alt:n,title:n}):e("<button type='button'></button>").addClass(this._triggerClass).html(a?e("<img/>").attr({src:a,alt:n,title:n}):n)),t[r?"before":"after"](i.trigger),i.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,i,s,n,a=new Date(2009,11,20),o=this._get(e,"dateFormat");o.match(/[DM]/)&&(t=function(e){for(i=0,s=0,n=0;e.length>n;n++)e[n].length>i&&(i=e[n].length,s=n);return s},a.setMonth(t(this._get(e,o.match(/MM/)?"monthNames":"monthNamesShort"))),a.setDate(t(this._get(e,o.match(/DD/)?"dayNames":"dayNamesShort"))+20-a.getDay())),e.input.attr("size",this._formatDate(e,a).length)}},_inlineDatepicker:function(t,i){var s=e(t);s.hasClass(this.markerClassName)||(s.addClass(this.markerClassName).append(i.dpDiv),e.data(t,"datepicker",i),this._setDate(i,this._getDefaultDate(i),!0),this._updateDatepicker(i),this._updateAlternate(i),i.settings.disabled&&this._disableDatepicker(t),i.dpDiv.css("display","block"))},_dialogDatepicker:function(t,i,s,n,a){var o,h,l,u,d,c=this._dialogInst;return c||(this.uuid+=1,o="dp"+this.uuid,this._dialogInput=e("<input type='text' id='"+o+"' style='position: absolute; top: -100px; width: 0px;'/>"),this._dialogInput.keydown(this._doKeyDown),e("body").append(this._dialogInput),c=this._dialogInst=this._newInst(this._dialogInput,!1),c.settings={},e.data(this._dialogInput[0],"datepicker",c)),r(c.settings,n||{}),i=i&&i.constructor===Date?this._formatDate(c,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,d=document.documentElement.scrollTop||document.body.scrollTop,this._pos=[h/2-100+u,l/2-150+d]),this._dialogInput.css("left",this._pos[0]+20+"px").css("top",this._pos[1]+"px"),c.settings.onSelect=s,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",c),this
-},_destroyDatepicker:function(t){var i,s=e(t),n=e.data(t,"datepicker");s.hasClass(this.markerClassName)&&(i=t.nodeName.toLowerCase(),e.removeData(t,"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(t){var i,s,n=e(t),a=e.data(t,"datepicker");n.hasClass(this.markerClassName)&&(i=t.nodeName.toLowerCase(),"input"===i?(t.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=e.map(this._disabledInputs,function(e){return e===t?null:e}))},_disableDatepicker:function(t){var i,s,n=e(t),a=e.data(t,"datepicker");n.hasClass(this.markerClassName)&&(i=t.nodeName.toLowerCase(),"input"===i?(t.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=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(i){throw"Missing instance data for this datepicker"}},_optionDatepicker:function(t,i,s){var n,a,o,h,l=this._getInst(t);return 2===arguments.length&&"string"==typeof i?"defaults"===i?e.extend({},e.datepicker._defaults):l?"all"===i?e.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(t,!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(t):this._enableDatepicker(t)),this._attachments(e(t),l),this._autoSize(l),this._setDate(l,a),this._updateAlternate(l),this._updateDatepicker(l)),void 0)},_changeDatepicker:function(e,t,i){this._optionDatepicker(e,t,i)},_refreshDatepicker:function(e){var t=this._getInst(e);t&&this._updateDatepicker(t)},_setDateDatepicker:function(e,t){var i=this._getInst(e);i&&(this._setDate(i,t),this._updateDatepicker(i),this._updateAlternate(i))},_getDateDatepicker:function(e,t){var i=this._getInst(e);return i&&!i.inline&&this._setDateFromField(i,t),i?this._getDate(i):null},_doKeyDown:function(t){var i,s,n,a=e.datepicker._getInst(t.target),o=!0,r=a.dpDiv.is(".ui-datepicker-rtl");if(a._keyEvent=!0,e.datepicker._datepickerShowing)switch(t.keyCode){case 9:e.datepicker._hideDatepicker(),o=!1;break;case 13:return n=e("td."+e.datepicker._dayOverClass+":not(."+e.datepicker._currentClass+")",a.dpDiv),n[0]&&e.datepicker._selectDay(t.target,a.selectedMonth,a.selectedYear,n[0]),i=e.datepicker._get(a,"onSelect"),i?(s=e.datepicker._formatDate(a),i.apply(a.input?a.input[0]:null,[s,a])):e.datepicker._hideDatepicker(),!1;case 27:e.datepicker._hideDatepicker();break;case 33:e.datepicker._adjustDate(t.target,t.ctrlKey?-e.datepicker._get(a,"stepBigMonths"):-e.datepicker._get(a,"stepMonths"),"M");break;case 34:e.datepicker._adjustDate(t.target,t.ctrlKey?+e.datepicker._get(a,"stepBigMonths"):+e.datepicker._get(a,"stepMonths"),"M");break;case 35:(t.ctrlKey||t.metaKey)&&e.datepicker._clearDate(t.target),o=t.ctrlKey||t.metaKey;break;case 36:(t.ctrlKey||t.metaKey)&&e.datepicker._gotoToday(t.target),o=t.ctrlKey||t.metaKey;break;case 37:(t.ctrlKey||t.metaKey)&&e.datepicker._adjustDate(t.target,r?1:-1,"D"),o=t.ctrlKey||t.metaKey,t.originalEvent.altKey&&e.datepicker._adjustDate(t.target,t.ctrlKey?-e.datepicker._get(a,"stepBigMonths"):-e.datepicker._get(a,"stepMonths"),"M");break;case 38:(t.ctrlKey||t.metaKey)&&e.datepicker._adjustDate(t.target,-7,"D"),o=t.ctrlKey||t.metaKey;break;case 39:(t.ctrlKey||t.metaKey)&&e.datepicker._adjustDate(t.target,r?-1:1,"D"),o=t.ctrlKey||t.metaKey,t.originalEvent.altKey&&e.datepicker._adjustDate(t.target,t.ctrlKey?+e.datepicker._get(a,"stepBigMonths"):+e.datepicker._get(a,"stepMonths"),"M");break;case 40:(t.ctrlKey||t.metaKey)&&e.datepicker._adjustDate(t.target,7,"D"),o=t.ctrlKey||t.metaKey;break;default:o=!1}else 36===t.keyCode&&t.ctrlKey?e.datepicker._showDatepicker(this):o=!1;o&&(t.preventDefault(),t.stopPropagation())},_doKeyPress:function(t){var i,s,n=e.datepicker._getInst(t.target);return e.datepicker._get(n,"constrainInput")?(i=e.datepicker._possibleChars(e.datepicker._get(n,"dateFormat")),s=String.fromCharCode(null==t.charCode?t.keyCode:t.charCode),t.ctrlKey||t.metaKey||" ">s||!i||i.indexOf(s)>-1):void 0},_doKeyUp:function(t){var i,s=e.datepicker._getInst(t.target);if(s.input.val()!==s.lastVal)try{i=e.datepicker.parseDate(e.datepicker._get(s,"dateFormat"),s.input?s.input.val():null,e.datepicker._getFormatConfig(s)),i&&(e.datepicker._setDateFromField(s),e.datepicker._updateAlternate(s),e.datepicker._updateDatepicker(s))}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 i,n,a,o,h,l,u;i=e.datepicker._getInst(t),e.datepicker._curInst&&e.datepicker._curInst!==i&&(e.datepicker._curInst.dpDiv.stop(!0,!0),i&&e.datepicker._datepickerShowing&&e.datepicker._hideDatepicker(e.datepicker._curInst.input[0])),n=e.datepicker._get(i,"beforeShow"),a=n?n.apply(t,[t,i]):{},a!==!1&&(r(i.settings,a),i.lastVal=null,e.datepicker._lastInput=t,e.datepicker._setDateFromField(i),e.datepicker._inDialog&&(t.value=""),e.datepicker._pos||(e.datepicker._pos=e.datepicker._findPos(t),e.datepicker._pos[1]+=t.offsetHeight),o=!1,e(t).parents().each(function(){return o|="fixed"===e(this).css("position"),!o}),h={left:e.datepicker._pos[0],top:e.datepicker._pos[1]},e.datepicker._pos=null,i.dpDiv.empty(),i.dpDiv.css({position:"absolute",display:"block",top:"-1000px"}),e.datepicker._updateDatepicker(i),h=e.datepicker._checkOffset(i,h,o),i.dpDiv.css({position:e.datepicker._inDialog&&e.blockUI?"static":o?"fixed":"absolute",display:"none",left:h.left+"px",top:h.top+"px"}),i.inline||(l=e.datepicker._get(i,"showAnim"),u=e.datepicker._get(i,"duration"),i.dpDiv.css("z-index",s(e(t))+1),e.datepicker._datepickerShowing=!0,e.effects&&e.effects.effect[l]?i.dpDiv.show(l,e.datepicker._get(i,"showOptions"),u):i.dpDiv[l||"show"](l?u:null),e.datepicker._shouldFocusInput(i)&&i.input.focus(),e.datepicker._curInst=i))}},_updateDatepicker:function(t){this.maxRows=4,v=t,t.dpDiv.empty().append(this._generateHTML(t)),this._attachHandlers(t);var i,s=this._getNumberOfMonths(t),n=s[1],a=17,r=t.dpDiv.find("."+this._dayOverClass+" a");r.length>0&&o.apply(r.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",a*n+"em"),t.dpDiv[(1!==s[0]||1!==s[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&&(i=t.yearshtml,setTimeout(function(){i===t.yearshtml&&t.yearshtml&&t.dpDiv.find("select.ui-datepicker-year:first").replaceWith(t.yearshtml),i=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,i,s){var n=t.dpDiv.outerWidth(),a=t.dpDiv.outerHeight(),o=t.input?t.input.outerWidth():0,r=t.input?t.input.outerHeight():0,h=document.documentElement.clientWidth+(s?0:e(document).scrollLeft()),l=document.documentElement.clientHeight+(s?0:e(document).scrollTop());return i.left-=this._get(t,"isRTL")?n-o:0,i.left-=s&&i.left===t.input.offset().left?e(document).scrollLeft():0,i.top-=s&&i.top===t.input.offset().top+r?e(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(t){for(var i,s=this._getInst(t),n=this._get(s,"isRTL");t&&("hidden"===t.type||1!==t.nodeType||e.expr.filters.hidden(t));)t=t[n?"previousSibling":"nextSibling"];return i=e(t).offset(),[i.left,i.top]},_hideDatepicker:function(t){var i,s,n,a,o=this._curInst;!o||t&&o!==e.data(t,"datepicker")||this._datepickerShowing&&(i=this._get(o,"showAnim"),s=this._get(o,"duration"),n=function(){e.datepicker._tidyDialog(o)},e.effects&&(e.effects.effect[i]||e.effects[i])?o.dpDiv.hide(i,e.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"}),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 i=e(t.target),s=e.datepicker._getInst(i[0]);(i[0].id!==e.datepicker._mainDivId&&0===i.parents("#"+e.datepicker._mainDivId).length&&!i.hasClass(e.datepicker.markerClassName)&&!i.closest("."+e.datepicker._triggerClass).length&&e.datepicker._datepickerShowing&&(!e.datepicker._inDialog||!e.blockUI)||i.hasClass(e.datepicker.markerClassName)&&e.datepicker._curInst!==s)&&e.datepicker._hideDatepicker()}},_adjustDate:function(t,i,s){var n=e(t),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(t){var i,s=e(t),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(t,i,s){var n=e(t),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(t,i,s,n){var a,o=e(t);e(n).hasClass(this._unselectableClass)||this._isDisabledDatepicker(o[0])||(a=this._getInst(o[0]),a.selectedDay=a.currentDay=e("a",n).html(),a.selectedMonth=a.currentMonth=i,a.selectedYear=a.currentYear=s,this._selectDate(t,this._formatDate(a,a.currentDay,a.currentMonth,a.currentYear)))},_clearDate:function(t){var i=e(t);this._selectDate(i,"")},_selectDate:function(t,i){var s,n=e(t),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(t){var i,s,n,a=this._get(t,"altField");a&&(i=this._get(t,"altFormat")||this._get(t,"dateFormat"),s=this._getDate(t),n=this.formatDate(i,s,this._getFormatConfig(t)),e(a).each(function(){e(this).val(n)}))},noWeekends:function(e){var t=e.getDay();return[t>0&&6>t,""]},iso8601Week:function(e){var t,i=new Date(e.getTime());return i.setDate(i.getDate()+4-(i.getDay()||7)),t=i.getTime(),i.setMonth(0),i.setDate(1),Math.floor(Math.round((t-i)/864e5)/7)+1},parseDate:function(t,i,s){if(null==t||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),d=(s?s.dayNamesShort:null)||this._defaults.dayNamesShort,c=(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,y=-1,b=!1,_=function(e){var i=t.length>n+1&&t.charAt(n+1)===e;return i&&n++,i},x=function(e){var t=_(e),s="@"===e?14:"!"===e?20:"y"===e&&t?4:"o"===e?3:2,n="y"===e?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(t,s,n){var a=-1,o=e.map(_(t)?n:s,function(e,t){return[[t,e]]}).sort(function(e,t){return-(e[1].length-t[1].length)});if(e.each(o,function(e,t){var s=t[1];return i.substr(h,s.length).toLowerCase()===s.toLowerCase()?(a=t[0],h+=s.length,!1):void 0}),-1!==a)return a+1;throw"Unknown name at position "+h},k=function(){if(i.charAt(h)!==t.charAt(n))throw"Unexpected literal at position "+h;h++};for(n=0;t.length>n;n++)if(b)"'"!==t.charAt(n)||_("'")?k():b=!1;else switch(t.charAt(n)){case"d":v=x("d");break;case"D":w("D",d,c);break;case"o":y=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"'":_("'")?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)),y>-1)for(g=1,v=y;;){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(e,t,i){if(!t)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(t){var i=e.length>s+1&&e.charAt(s+1)===t;return i&&s++,i},l=function(e,t,i){var s=""+t;if(h(e))for(;i>s.length;)s="0"+s;return s},u=function(e,t,i,s){return h(e)?s[t]:i[t]},d="",c=!1;if(t)for(s=0;e.length>s;s++)if(c)"'"!==e.charAt(s)||h("'")?d+=e.charAt(s):c=!1;else switch(e.charAt(s)){case"d":d+=l("d",t.getDate(),2);break;case"D":d+=u("D",t.getDay(),n,a);break;case"o":d+=l("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+=l("m",t.getMonth()+1,2);break;case"M":d+=u("M",t.getMonth(),o,r);break;case"y":d+=h("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"'":h("'")?d+="'":c=!0;break;default:d+=e.charAt(s)}return d},_possibleChars:function(e){var t,i="",s=!1,n=function(i){var s=e.length>t+1&&e.charAt(t+1)===i;return s&&t++,s};for(t=0;e.length>t;t++)if(s)"'"!==e.charAt(t)||n("'")?i+=e.charAt(t):s=!1;else switch(e.charAt(t)){case"d":case"m":case"y":case"@":i+="0123456789";break;case"D":case"M":return null;case"'":n("'")?i+="'":s=!0;break;default:i+=e.charAt(t)}return i},_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 i=this._get(e,"dateFormat"),s=e.lastVal=e.input?e.input.val():null,n=this._getDefaultDate(e),a=n,o=this._getFormatConfig(e);try{a=this.parseDate(i,s,o)||n}catch(r){s=t?"":s}e.selectedDay=a.getDate(),e.drawMonth=e.selectedMonth=a.getMonth(),e.drawYear=e.selectedYear=a.getFullYear(),e.currentDay=s?a.getDate():0,e.currentMonth=s?a.getMonth():0,e.currentYear=s?a.getFullYear():0,this._adjustInstDate(e)}},_getDefaultDate:function(e){return this._restrictMinMax(e,this._determineDate(e,this._get(e,"defaultDate"),new Date))},_determineDate:function(t,i,s){var n=function(e){var t=new Date;return t.setDate(t.getDate()+e),t},a=function(i){try{return e.datepicker.parseDate(e.datepicker._get(t,"dateFormat"),i,e.datepicker._getFormatConfig(t))}catch(s){}for(var n=(i.toLowerCase().match(/^c/)?e.datepicker._getDate(t):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,e.datepicker._getDaysInMonth(a,o));break;case"y":case"Y":a+=parseInt(l[1],10),r=Math.min(r,e.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(e){return e?(e.setHours(e.getHours()>12?e.getHours()+2:0),e):null},_setDate:function(e,t,i){var s=!t,n=e.selectedMonth,a=e.selectedYear,o=this._restrictMinMax(e,this._determineDate(e,t,new Date));e.selectedDay=e.currentDay=o.getDate(),e.drawMonth=e.selectedMonth=e.currentMonth=o.getMonth(),e.drawYear=e.selectedYear=e.currentYear=o.getFullYear(),n===e.selectedMonth&&a===e.selectedYear||i||this._notifyChange(e),this._adjustInstDate(e),e.input&&e.input.val(s?"":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 i=this._get(t,"stepMonths"),s="#"+t.id.replace(/\\\\/g,"\\");t.dpDiv.find("[data-handler]").map(function(){var t={prev:function(){e.datepicker._adjustDate(s,-i,"M")},next:function(){e.datepicker._adjustDate(s,+i,"M")},hide:function(){e.datepicker._hideDatepicker()},today:function(){e.datepicker._gotoToday(s)},selectDay:function(){return e.datepicker._selectDay(s,+this.getAttribute("data-month"),+this.getAttribute("data-year"),this),!1},selectMonth:function(){return e.datepicker._selectMonthYear(s,this,"M"),!1},selectYear:function(){return e.datepicker._selectMonthYear(s,this,"Y"),!1}};e(this).bind(this.getAttribute("data-event"),t[this.getAttribute("data-handler")])})},_generateHTML:function(e){var t,i,s,n,a,o,r,h,l,u,d,c,p,f,m,g,v,y,b,_,x,w,k,T,D,S,M,C,N,A,I,P,z,H,F,E,O,j,W,L=new Date,R=this._daylightSavingAdjust(new Date(L.getFullYear(),L.getMonth(),L.getDate())),Y=this._get(e,"isRTL"),B=this._get(e,"showButtonPanel"),J=this._get(e,"hideIfNoPrevNext"),q=this._get(e,"navigationAsDateFormat"),K=this._getNumberOfMonths(e),V=this._get(e,"showCurrentAtPos"),U=this._get(e,"stepMonths"),Q=1!==K[0]||1!==K[1],G=this._daylightSavingAdjust(e.currentDay?new Date(e.currentYear,e.currentMonth,e.currentDay):new Date(9999,9,9)),X=this._getMinMaxDate(e,"min"),$=this._getMinMaxDate(e,"max"),Z=e.drawMonth-V,et=e.drawYear;if(0>Z&&(Z+=12,et--),$)for(t=this._daylightSavingAdjust(new Date($.getFullYear(),$.getMonth()-K[0]*K[1]+1,$.getDate())),t=X&&X>t?X:t;this._daylightSavingAdjust(new Date(et,Z,1))>t;)Z--,0>Z&&(Z=11,et--);for(e.drawMonth=Z,e.drawYear=et,i=this._get(e,"prevText"),i=q?this.formatDate(i,this._daylightSavingAdjust(new Date(et,Z-U,1)),this._getFormatConfig(e)):i,s=this._canAdjustMonth(e,-1,et,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(e,"nextText"),n=q?this.formatDate(n,this._daylightSavingAdjust(new Date(et,Z+U,1)),this._getFormatConfig(e)):n,a=this._canAdjustMonth(e,1,et,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(e,"currentText"),r=this._get(e,"gotoCurrent")&&e.currentDay?G:R,o=q?this.formatDate(o,r,this._getFormatConfig(e)):o,h=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>",l=B?"<div class='ui-datepicker-buttonpane ui-widget-content'>"+(Y?h:"")+(this._isInRange(e,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(e,"firstDay"),10),u=isNaN(u)?0:u,d=this._get(e,"showWeek"),c=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"),y=this._get(e,"selectOtherMonths"),b=this._getDefaultDate(e),_="",w=0;K[0]>w;w++){for(k="",this.maxRows=4,T=0;K[1]>T;T++){if(D=this._daylightSavingAdjust(new Date(et,Z,e.selectedDay)),S=" ui-corner-all",M="",Q){if(M+="<div class='ui-datepicker-group",K[1]>1)switch(T){case 0:M+=" ui-datepicker-group-first",S=" ui-corner-"+(Y?"right":"left");break;case K[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(e,Z,et,X,$,w>0||T>0,f,m)+"</div><table class='ui-datepicker-calendar'><thead>"+"<tr>",C=d?"<th class='ui-datepicker-week-col'>"+this._get(e,"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='"+c[N]+"'>"+p[N]+"</span></th>";for(M+=C+"</tr></thead><tbody>",A=this._getDaysInMonth(et,Z),et===e.selectedYear&&Z===e.selectedMonth&&(e.selectedDay=Math.min(e.selectedDay,A)),I=(this._getFirstDayOfMonth(et,Z)-u+7)%7,P=Math.ceil((I+A)/7),z=Q?this.maxRows>P?this.maxRows:P:P,this.maxRows=z,H=this._daylightSavingAdjust(new Date(et,Z,1-I)),F=0;z>F;F++){for(M+="<tr>",E=d?"<td class='ui-datepicker-week-col'>"+this._get(e,"calculateWeek")(H)+"</td>":"",x=0;7>x;x++)O=g?g.apply(e.input?e.input[0]:null,[H]):[!0,""],j=H.getMonth()!==Z,W=j&&!y||!O[0]||X&&X>H||$&&H>$,E+="<td class='"+((x+u+6)%7>=5?" ui-datepicker-week-end":"")+(j?" ui-datepicker-other-month":"")+(H.getTime()===D.getTime()&&Z===e.selectedMonth&&e._keyEvent||b.getTime()===H.getTime()&&b.getTime()===D.getTime()?" "+this._dayOverClass:"")+(W?" "+this._unselectableClass+" ui-state-disabled":"")+(j&&!v?"":" "+O[1]+(H.getTime()===G.getTime()?" "+this._currentClass:"")+(H.getTime()===R.getTime()?" ui-datepicker-today":""))+"'"+(j&&!v||!O[2]?"":" title='"+O[2].replace(/'/g,"&#39;")+"'")+(W?"":" data-handler='selectDay' data-event='click' data-month='"+H.getMonth()+"' data-year='"+H.getFullYear()+"'")+">"+(j&&!v?"&#xa0;":W?"<span class='ui-state-default'>"+H.getDate()+"</span>":"<a class='ui-state-default"+(H.getTime()===R.getTime()?" ui-state-highlight":"")+(H.getTime()===G.getTime()?" ui-state-active":"")+(j?" ui-priority-secondary":"")+"' href='#'>"+H.getDate()+"</a>")+"</td>",H.setDate(H.getDate()+1),H=this._daylightSavingAdjust(H);M+=E+"</tr>"}Z++,Z>11&&(Z=0,et++),M+="</tbody></table>"+(Q?"</div>"+(K[0]>0&&T===K[1]-1?"<div class='ui-datepicker-row-break'></div>":""):""),k+=M}_+=k}return _+=l,e._keyEvent=!1,_},_generateMonthYearHeader:function(e,t,i,s,n,a,o,r){var h,l,u,d,c,p,f,m,g=this._get(e,"changeMonth"),v=this._get(e,"changeYear"),y=this._get(e,"showMonthAfterYear"),b="<div class='ui-datepicker-title'>",_="";if(a||!g)_+="<span class='ui-datepicker-month'>"+o[t]+"</span>";else{for(h=s&&s.getFullYear()===i,l=n&&n.getFullYear()===i,_+="<select class='ui-datepicker-month' data-handler='selectMonth' data-event='change'>",u=0;12>u;u++)(!h||u>=s.getMonth())&&(!l||n.getMonth()>=u)&&(_+="<option value='"+u+"'"+(u===t?" selected='selected'":"")+">"+r[u]+"</option>");_+="</select>"}if(y||(b+=_+(!a&&g&&v?"":"&#xa0;")),!e.yearshtml)if(e.yearshtml="",a||!v)b+="<span class='ui-datepicker-year'>"+i+"</span>";else{for(d=this._get(e,"yearRange").split(":"),c=(new Date).getFullYear(),p=function(e){var t=e.match(/c[+\-].*/)?i+parseInt(e.substring(1),10):e.match(/[+\-].*/)?c+parseInt(e,10):parseInt(e,10);return isNaN(t)?c:t},f=p(d[0]),m=Math.max(f,p(d[1]||"")),f=s?Math.max(f,s.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===i?" selected='selected'":"")+">"+f+"</option>";e.yearshtml+="</select>",b+=e.yearshtml,e.yearshtml=null}return b+=this._get(e,"yearSuffix"),y&&(b+=(!a&&g&&v?"":"&#xa0;")+_),b+="</div>"},_adjustInstDate:function(e,t,i){var s=e.drawYear+("Y"===i?t:0),n=e.drawMonth+("M"===i?t:0),a=Math.min(e.selectedDay,this._getDaysInMonth(s,n))+("D"===i?t:0),o=this._restrictMinMax(e,this._daylightSavingAdjust(new Date(s,n,a)));e.selectedDay=o.getDate(),e.drawMonth=e.selectedMonth=o.getMonth(),e.drawYear=e.selectedYear=o.getFullYear(),("M"===i||"Y"===i)&&this._notifyChange(e)},_restrictMinMax:function(e,t){var i=this._getMinMaxDate(e,"min"),s=this._getMinMaxDate(e,"max"),n=i&&i>t?i:t;return s&&n>s?s: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,i,s){var n=this._getNumberOfMonths(e),a=this._daylightSavingAdjust(new Date(i,s+(0>t?t:n[0]*n[1]),1));return 0>t&&a.setDate(this._getDaysInMonth(a.getFullYear(),a.getMonth())),this._isInRange(e,a)},_isInRange:function(e,t){var i,s,n=this._getMinMaxDate(e,"min"),a=this._getMinMaxDate(e,"max"),o=null,r=null,h=this._get(e,"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||t.getTime()>=n.getTime())&&(!a||t.getTime()<=a.getTime())&&(!o||t.getFullYear()>=o)&&(!r||r>=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,i,s){t||(e.currentDay=e.selectedDay,e.currentMonth=e.selectedMonth,e.currentYear=e.selectedYear);var n=t?"object"==typeof t?t:this._daylightSavingAdjust(new Date(s,i,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 i=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(i)):this.each(function(){"string"==typeof t?e.datepicker["_"+t+"Datepicker"].apply(e.datepicker,[this].concat(i)):e.datepicker._attachDatepicker(this,t)}):e.datepicker["_"+t+"Datepicker"].apply(e.datepicker,[this[0]].concat(i))},e.datepicker=new n,e.datepicker.initialized=!1,e.datepicker.uuid=(new Date).getTime(),e.datepicker.version="1.11.3",e.datepicker,e.widget("ui.dialog",{version:"1.11.3",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 i=e(this).css(t).offset().top;0>i&&e(this).css("top",t.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&&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._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 i,s=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{i=this.document[0].activeElement,i&&"body"!==i.nodeName.toLowerCase()&&e(i).blur()}catch(n){}this._hide(this.uiDialog,this.options.hide,function(){s._trigger("close",t)})}},isOpen:function(){return this._isOpen},moveToTop:function(){this._moveToTop()},_moveToTop:function(t,i){var s=!1,n=this.uiDialog.siblings(".ui-front:visible").map(function(){return+e(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",t),s},open:function(){var t=this;return this._isOpen?(this._moveToTop()&&this._focusTabbable(),void 0):(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(),this._trigger("open"),void 0)},_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 i(){var t=this.document[0].activeElement,i=this.uiDialog[0]===t||e.contains(this.uiDialog[0],t);i||this._focusTabbable()}t.preventDefault(),i.call(this),this._delay(i)},_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(),this.close(t),void 0;if(t.keyCode===e.ui.keyCode.TAB&&!t.isDefaultPrevented()){var i=this.uiDialog.find(":tabbable"),s=i.filter(":first"),n=i.filter(":last");t.target!==n[0]&&t.target!==this.uiDialog[0]||t.shiftKey?t.target!==s[0]&&t.target!==this.uiDialog[0]||!t.shiftKey||(this._delay(function(){n.focus()}),t.preventDefault()):(this._delay(function(){s.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,i=this.options.buttons;return this.uiDialogButtonPane.remove(),this.uiButtonSet.empty(),e.isEmptyObject(i)||e.isArray(i)&&!i.length?(this.uiDialog.removeClass("ui-dialog-buttons"),void 0):(e.each(i,function(i,s){var n,a;s=e.isFunction(s)?{click:s,text:i}:s,s=e.extend({type:"button"},s),n=s.click,s.click=function(){n.apply(t.element[0],arguments)},a={icons:s.icons,text:s.showText},delete s.icons,delete s.showText,e("<button></button>",s).button(a).appendTo(t.uiButtonSet)}),this.uiDialog.addClass("ui-dialog-buttons"),this.uiDialogButtonPane.appendTo(this.uiDialog),void 0)},_makeDraggable:function(){function t(e){return{position:e.position,offset:e.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){e(this).addClass("ui-dialog-dragging"),i._blockFrames(),i._trigger("dragStart",s,t(n))},drag:function(e,s){i._trigger("drag",e,t(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},e(this).removeClass("ui-dialog-dragging"),i._unblockFrames(),i._trigger("dragStop",n,t(a))}})},_makeResizable:function(){function t(e){return{originalPosition:e.originalPosition,originalSize:e.originalSize,position:e.position,size:e.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){e(this).addClass("ui-dialog-resizing"),i._blockFrames(),i._trigger("resizeStart",s,t(n))},resize:function(e,s){i._trigger("resize",e,t(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},e(this).removeClass("ui-dialog-resizing"),i._unblockFrames(),i._trigger("resizeStop",n,t(a))}}).css("position",a)},_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(),i=e.inArray(this,t);-1!==i&&t.splice(i,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 i=this,s=!1,n={};e.each(t,function(e,t){i._setOption(e,t),e in i.sizeRelatedOptions&&(s=!0),e in i.resizableRelatedOptions&&(n[e]=t)}),s&&(this._size(),this._position()),this.uiDialog.is(":data(ui-resizable)")&&this.uiDialog.resizable("option",n)},_setOption:function(e,t){var i,s,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&&(i=n.is(":data(ui-draggable)"),i&&!t&&n.draggable("destroy"),!i&&t&&this._makeDraggable()),"position"===e&&this._position(),"resizable"===e&&(s=n.is(":data(ui-resizable)"),s&&!t&&n.resizable("destroy"),s&&"string"==typeof t&&n.resizable("option","handles",t),s||t===!1||this._makeResizable()),"title"===e&&this._title(this.uiDialogTitlebar.find(".ui-dialog-title")))},_size:function(){var e,t,i,s=this.options;this.element.show().css({width:"auto",minHeight:0,maxHeight:"none",height:0}),s.minWidth>s.width&&(s.width=s.minWidth),e=this.uiDialog.css({height:"auto",width:s.width}).outerHeight(),t=Math.max(0,s.minHeight-e),i="number"==typeof s.maxHeight?Math.max(0,s.maxHeight-e):"none","auto"===s.height?this.element.css({minHeight:t,maxHeight:i,height:"auto"}):this.element.height(Math.max(0,s.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.3",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),this._refreshValue(),void 0)},_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,i=this._percentage();this.valueDiv.toggle(this.indeterminate||t>this.min).toggleClass("ui-corner-right",t===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=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.3",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,i){e.preventDefault(),t._setSelection(),t._select(i.item.data("ui-selectmenu-item"),e)},focus:function(e,i){var s=i.item.data("ui-selectmenu-item");null!=t.focusIndex&&s.index!==t.focusIndex&&(t._trigger("focus",e,{item:s}),t.isOpen||t._select(s,e)),t.focusIndex=s.index,t.button.attr("aria-activedescendant",t.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 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,i){var s=this,n="";e.each(i,function(i,a){a.optgroup!==n&&(e("<li>",{"class":"ui-selectmenu-optgroup ui-menu-divider"+(a.element.parent("optgroup").prop("disabled")?" ui-state-disabled":""),text:a.optgroup}).appendTo(t),n=a.optgroup),s._renderItemData(t,a)})},_renderItemData:function(e,t){return this._renderItem(e,t).data("ui-selectmenu-item",t)},_renderItem:function(t,i){var s=e("<li>");return i.disabled&&s.addClass("ui-state-disabled"),this._setText(s,i.label),s.appendTo(t)},_setText:function(e,t){t?e.text(t):e.html("&#160;")},_move:function(e,t){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"===e||"last"===e?i["first"===e?"prevAll":"nextAll"](n).eq(-1):i[e+"All"](n).eq(0),s.length&&this.menuInstance.focus(t,s)},_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 i=!0;switch(t.keyCode){case e.ui.keyCode.TAB:case e.ui.keyCode.ESCAPE:this.close(t),i=!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),i=!1}i&&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 i=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!==i&&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 i=[];t.each(function(t,s){var n=e(s),a=n.parent("optgroup");i.push({element:n,index:t,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)}}),e.widget("ui.slider",e.ui.mouse,{version:"1.11.3",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,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)),t=n.length;i>t;t++)o.push(a);this.handles=n.add(e(o.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,i="";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),i="ui-slider-range ui-widget-header ui-corner-all"),this.range.addClass(i+("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 i,s,n,a,o,r,h,l,u=this,d=this.options;return d.disabled?!1:(this.elementSize={width:this.element.outerWidth(),height:this.element.outerHeight()},this.elementOffset=this.element.offset(),i={x:t.pageX,y:t.pageY},s=this._normValueFromMouse(i),n=this._valueMax()-this._valueMin()+1,this.handles.each(function(t){var i=Math.abs(s-u.values(t));(n>i||n===i&&(t===u._lastChangedValue||u.values(t)===d.min))&&(n=i,a=e(this),o=t)}),r=this._start(t,o),r===!1?!1:(this._mouseSliding=!0,this._handleIndex=o,a.addClass("ui-state-active").focus(),h=a.offset(),l=!e(t.target).parents().addBack().is(".ui-slider-handle"),this._clickOffset=l?{left:0,top:0}:{left:t.pageX-h.left-a.width()/2,top:t.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(t,o,s),this._animateOff=!0,!0))},_mouseStart:function(){return!0},_mouseDrag:function(e){var t={x:e.pageX,y:e.pageY},i=this._normValueFromMouse(t);return this._slide(e,this._handleIndex,i),!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,i,s,n,a;return"horizontal"===this.orientation?(t=this.elementSize.width,i=e.x-this.elementOffset.left-(this._clickOffset?this._clickOffset.left:0)):(t=this.elementSize.height,i=e.y-this.elementOffset.top-(this._clickOffset?this._clickOffset.top:0)),s=i/t,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(e,t){var i={handle:this.handles[t],value:this.value()};return this.options.values&&this.options.values.length&&(i.value=this.values(t),i.values=this.values()),this._trigger("start",e,i)},_slide:function(e,t,i){var s,n,a;this.options.values&&this.options.values.length?(s=this.values(t?0:1),2===this.options.values.length&&this.options.range===!0&&(0===t&&i>s||1===t&&s>i)&&(i=s),i!==this.values(t)&&(n=this.values(),n[t]=i,a=this._trigger("slide",e,{handle:this.handles[t],value:i,values:n}),s=this.values(t?0:1),a!==!1&&this.values(t,i))):i!==this.value()&&(a=this._trigger("slide",e,{handle:this.handles[t],value:i}),a!==!1&&this.value(i))},_stop:function(e,t){var i={handle:this.handles[t],value:this.value()};this.options.values&&this.options.values.length&&(i.value=this.values(t),i.values=this.values()),this._trigger("stop",e,i)},_change:function(e,t){if(!this._keySliding&&!this._mouseSliding){var i={handle:this.handles[t],value:this.value()};this.options.values&&this.options.values.length&&(i.value=this.values(t),i.values=this.values()),this._lastChangedValue=t,this._trigger("change",e,i)}},value:function(e){return arguments.length?(this.options.value=this._trimAlignValue(e),this._refreshValue(),this._change(null,0),void 0):this._value()},values:function(t,i){var s,n,a;if(arguments.length>1)return this.options.values[t]=this._trimAlignValue(i),this._refreshValue(),this._change(null,t),void 0;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(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(t,i){var s,n=0;switch("range"===t&&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)),e.isArray(this.options.values)&&(n=this.options.values.length),"disabled"===t&&this.element.toggleClass("ui-state-disabled",!!i),this._super(t,i),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"===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 e=this.options.value;return e=this._trimAlignValue(e)},_values:function(e){var t,i,s;if(arguments.length)return t=this.options.values[e],t=this._trimAlignValue(t);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(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,i=(e-this._valueMin())%t,s=e-i;return 2*Math.abs(i)>=t&&(s+=i>0?t:-t),parseFloat(s.toFixed(5))},_calculateNewMax:function(){var e=this.options.max,t=this._valueMin(),i=this.options.step,s=Math.floor((e-t)/i)*i;e=s+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,i=t.indexOf(".");return-1===i?0:t.length-i-1},_valueMin:function(){return this.options.min},_valueMax:function(){return this.max},_refreshValue:function(){var t,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+"%",e(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-t+"%"},{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-t+"%"},{queue:!1,duration:r.animate}))),t=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(t){var i,s,n,a,o=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"),i=this._start(t,o),i===!1))return}switch(a=this.options.step,s=n=this.options.values&&this.options.values.length?this.values(o):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(s+(this._valueMax()-this._valueMin())/this.numPages);break;case e.ui.keyCode.PAGE_DOWN:n=this._trimAlignValue(s-(this._valueMax()-this._valueMin())/this.numPages);break;case e.ui.keyCode.UP:case e.ui.keyCode.RIGHT:if(s===this._valueMax())return;n=this._trimAlignValue(s+a);break;case e.ui.keyCode.DOWN:case e.ui.keyCode.LEFT:if(s===this._valueMin())return;n=this._trimAlignValue(s-a)}this._slide(t,o,n)},keyup:function(t){var i=e(t.target).data("ui-slider-handle-index");this._keySliding&&(this._keySliding=!1,this._stop(t,i),this._change(t,i),e(t.target).removeClass("ui-state-active"))}}}),e.widget("ui.spinner",{version:"1.11.3",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={},i=this.element;return e.each(["min","max","step"],function(e,s){var n=i.attr(s);void 0!==n&&n.length&&(t[s]=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?(delete this.cancelBlur,void 0):(this._stop(),this._refresh(),this.previous!==this.element.val()&&this._trigger("change",e),void 0)},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 i(){var e=this.element[0]===this.document[0].activeElement;e||(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(),t.preventDefault(),i.call(this),this.cancelBlur=!0,this._delay(function(){delete this.cancelBlur,i.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:(this._repeat(null,e(t.currentTarget).hasClass("ui-spinner-up")?1:-1,t),void 0):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 i=this.options,s=e.ui.keyCode;switch(t.keyCode){case s.UP:return this._repeat(null,1,t),!0;case s.DOWN:return this._repeat(null,-1,t),!0;case s.PAGE_UP:return this._repeat(null,i.page,t),!0;case s.PAGE_DOWN:return this._repeat(null,-i.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,i){e=e||500,clearTimeout(this.timer),this.timer=this._delay(function(){this._repeat(40,t,i)},e),this._spin(t*this.options.step,i)},_spin:function(e,t){var i=this.value()||0;this.counter||(this.counter=1),i=this._adjustValue(i+e*this._increment(this.counter)),this.spinning&&this._trigger("spin",t,{value:i})===!1||(this._value(i),this.counter++)},_increment:function(t){var i=this.options.incremental;return i?e.isFunction(i)?i(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,i=t.indexOf(".");return-1===i?0:t.length-i-1},_adjustValue:function(e){var t,i,s=this.options;return t=null!==s.min?s.min:0,i=e-t,i=Math.round(i/s.step)*s.step,e=t+i,e=parseFloat(e.toFixed(this._precision())),null!==s.max&&e>s.max?s.max:null!==s.min&&s.min>e?s.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 i=this._parse(this.element.val());return this.options[e]=t,this.element.val(this._format(i)),void 0}("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:h(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 i;""!==e&&(i=this._parse(e),null!==i&&(t||(i=this._adjustValue(i)),e=this._format(i))),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:h(function(e){this._stepUp(e)}),_stepUp:function(e){this._start()&&(this._spin((e||1)*this.options.step),this._stop())},stepDown:h(function(e){this._stepDown(e)}),_stepDown:function(e){this._start()&&(this._spin((e||1)*-this.options.step),this._stop())},pageUp:h(function(e){this._stepUp((e||1)*this.options.page)}),pageDown:h(function(e){this._stepDown((e||1)*this.options.page)}),value:function(e){return arguments.length?(h(this._value).call(this,e),void 0):this._parse(this.element.val())},widget:function(){return this.uiSpinner}}),e.widget("ui.tabs",{version:"1.11.3",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 i,s;t=t.cloneNode(!1),i=t.href.replace(e,""),s=location.href.replace(e,"");try{i=decodeURIComponent(i)}catch(n){}try{s=decodeURIComponent(s)}catch(n){}return t.hash.length>1&&i===s}}(),_create:function(){var t=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(),e.isArray(i.disabled)&&(i.disabled=e.unique(i.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(i.active):e(),this._refresh(),this.active.length&&this.load(i.active)},_initialActive:function(){var t=this.options.active,i=this.options.collapsible,s=location.hash.substring(1);return null===t&&(s&&this.tabs.each(function(i,n){return e(n).attr("aria-controls")===s?(t=i,!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=i?!1:0)),!i&&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 i=e(this.document[0].activeElement).closest("li"),s=this.tabs.index(i),n=!0;if(!this._handlePageNav(t)){switch(t.keyCode){case e.ui.keyCode.RIGHT:case e.ui.keyCode.DOWN:s++;break;case e.ui.keyCode.UP:case e.ui.keyCode.LEFT:n=!1,s--;break;case e.ui.keyCode.END:s=this.anchors.length-1;break;case e.ui.keyCode.HOME:s=0;break;case e.ui.keyCode.SPACE:return t.preventDefault(),clearTimeout(this.activating),this._activate(s),void 0;case e.ui.keyCode.ENTER:return t.preventDefault(),clearTimeout(this.activating),this._activate(s===this.options.active?!1:s),void 0;default:return}t.preventDefault(),clearTimeout(this.activating),s=this._focusNextTab(s,n),t.ctrlKey||t.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(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,i){function s(){return t>n&&(t=0),0>t&&(t=n),t}for(var n=this.tabs.length-1;-1!==e.inArray(s(),this.options.disabled);)t=i?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?(this._activate(t),void 0):"disabled"===e?(this._setupDisabled(t),void 0):(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),"heightStyle"===e&&this._setupHeightStyle(t),void 0)},_sanitizeSelector:function(e){return e?e.replace(/[!"$%&'()*+,.\/:;<=>?@\[\]\^`{|}~]/g,"\\$&"):""},refresh:function(){var t=this.options,i=this.tablist.children(":has(a[href])");t.disabled=e.map(i.filter(".ui-state-disabled"),function(e){return i.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,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(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(i,s){var n,a,o,r=e(s).uniqueId().attr("id"),h=e(s).closest("li"),l=h.attr("aria-controls");t._isLocal(s)?(n=s.hash,o=n.substring(1),a=t.element.find(t._sanitizeSelector(n))):(o=h.attr("aria-controls")||e({}).uniqueId()[0].id,n="#"+o,a=t.element.find(n),a.length||(a=t._createPanel(o),a.insertAfter(t.panels[i-1]||t.tablist)),a.attr("aria-live","polite")),a.length&&(t.panels=t.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(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 i,s=0;i=this.tabs[s];s++)t===!0||-1!==e.inArray(s,t)?e(i).addClass("ui-state-disabled").attr("aria-disabled","true"):e(i).removeClass("ui-state-disabled").removeAttr("aria-disabled");this.options.disabled=t},_setupEvents:function(t){var i={};t&&e.each(t.split(" "),function(e,t){i[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,i),this._on(this.tabs,{keydown:"_tabKeydown"}),this._on(this.panels,{keydown:"_panelKeydown"}),this._focusable(this.tabs),this._hoverable(this.tabs)},_setupHeightStyle:function(t){var i,s=this.element.parent();"fill"===t?(i=s.height(),i-=this.element.outerHeight()-this.element.height(),this.element.siblings(":visible").each(function(){var t=e(this),s=t.css("position");"absolute"!==s&&"fixed"!==s&&(i-=t.outerHeight(!0))}),this.element.children().not(this.panels).each(function(){i-=e(this).outerHeight(!0)}),this.panels.each(function(){e(this).height(Math.max(0,i-e(this).innerHeight()+e(this).height()))}).css("overflow","auto")):"auto"===t&&(i=0,this.panels.each(function(){i=Math.max(i,e(this).height("").height())}).height(i))},_eventHandler:function(t){var i=this.options,s=this.active,n=e(t.currentTarget),a=n.closest("li"),o=a[0]===s[0],r=o&&i.collapsible,h=r?e():this._getPanelForTab(a),l=s.length?this._getPanelForTab(s):e(),u={oldTab:s,oldPanel:l,newTab:r?e():a,newPanel:h};t.preventDefault(),a.hasClass("ui-state-disabled")||a.hasClass("ui-tabs-loading")||this.running||o&&!i.collapsible||this._trigger("beforeActivate",t,u)===!1||(i.active=r?!1:this.tabs.index(a),this.active=o?e():a,this.xhr&&this.xhr.abort(),l.length||h.length||e.error("jQuery UI Tabs: Mismatching fragment identifier."),h.length&&this.load(this.tabs.index(a),t),this._toggle(t,u))},_toggle:function(t,i){function s(){a.running=!1,a._trigger("activate",t,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===e(this).attr("tabIndex")}).attr("tabIndex",-1),o.attr("aria-hidden","false"),i.newTab.attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0})},_activate:function(t){var i,s=this._findActive(t);s[0]!==this.active[0]&&(s.length||(s=this.active),i=s.find(".ui-tabs-anchor")[0],this._eventHandler({target:i,currentTarget:i,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),i=t.data("ui-tabs-aria-controls");i?t.attr("aria-controls",i).removeData("ui-tabs-aria-controls"):t.removeAttr("aria-controls")}),this.panels.show(),"content"!==this.options.heightStyle&&this.panels.css("height","")},enable:function(t){var i=this.options.disabled;i!==!1&&(void 0===t?i=!1:(t=this._getIndex(t),i=e.isArray(i)?e.map(i,function(e){return e!==t?e:null}):e.map(this.tabs,function(e,i){return i!==t?i:null})),this._setupDisabled(i))},disable:function(t){var i=this.options.disabled;if(i!==!0){if(void 0===t)i=!0;else{if(t=this._getIndex(t),-1!==e.inArray(t,i))return;i=e.isArray(i)?e.merge([t],i).sort():[t]}this._setupDisabled(i)}},load:function(t,i){t=this._getIndex(t);var s=this,n=this.tabs.eq(t),a=n.find(".ui-tabs-anchor"),o=this._getPanelForTab(n),r={tab:n,panel:o};this._isLocal(a[0])||(this.xhr=e.ajax(this._ajaxSettings(a,i,r)),this.xhr&&"canceled"!==this.xhr.statusText&&(n.addClass("ui-tabs-loading"),o.attr("aria-busy","true"),this.xhr.success(function(e){setTimeout(function(){o.html(e),s._trigger("load",i,r)},1)}).complete(function(e,t){setTimeout(function(){"abort"===t&&s.panels.stop(!1,!0),n.removeClass("ui-tabs-loading"),o.removeAttr("aria-busy"),e===s.xhr&&delete s.xhr},1)})))},_ajaxSettings:function(t,i,s){var n=this;return{url:t.attr("href"),beforeSend:function(t,a){return n._trigger("beforeLoad",i,e.extend({jqXHR:t,ajaxSettings:a},s))}}},_getPanelForTab:function(t){var i=e(t).attr("aria-controls");return this.element.find(this._sanitizeSelector("#"+i))}}),e.widget("ui.tooltip",{version:"1.11.3",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,i){var s=(t.attr("aria-describedby")||"").split(/\s+/);s.push(i),t.data("ui-tooltip-id",i).attr("aria-describedby",e.trim(s.join(" ")))},_removeDescribedBy:function(t){var i=t.data("ui-tooltip-id"),s=(t.attr("aria-describedby")||"").split(/\s+/),n=e.inArray(i,s);-1!==n&&s.splice(n,1),t.removeData("ui-tooltip-id"),s=e.trim(s.join(" ")),s?t.attr("aria-describedby",s):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,i){var s=this;return"disabled"===t?(this[i?"_disable":"_enable"](),this.options[t]=i,void 0):(this._super(t,i),"content"===t&&e.each(this.tooltips,function(e,t){s._updateContent(t.element)}),void 0)},_disable:function(){var t=this;e.each(this.tooltips,function(i,s){var n=e.Event("blur");n.target=n.currentTarget=s.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 i=this,s=e(t?t.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),t&&"mouseover"===t.type&&s.parents().each(function(){var t,s=e(this);s.data("ui-tooltip-open")&&(t=e.Event("blur"),t.target=t.currentTarget=this,i.close(t,!0)),s.attr("title")&&(s.uniqueId(),i.parents[this.id]={element:this,title:s.attr("title")},s.attr("title",""))}),this._updateContent(s,t))},_updateContent:function(e,t){var i,s=this.options.content,n=this,a=t?t.type:null;return"string"==typeof s?this._open(t,e,s):(i=s.call(e[0],function(i){e.data("ui-tooltip-open")&&n._delay(function(){t&&(t.type=a),this._open(t,e,i)})}),i&&this._open(t,e,i),void 0)},_open:function(t,i,s){function n(e){u.of=e,o.is(":hidden")||o.position(u)}var a,o,r,h,l,u=e.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]")&&(t&&"mouseover"===t.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?(l=s.clone(),l.removeAttr("id").find("[id]").removeAttr("id")):l=s,e("<div>").html(l).appendTo(this.liveRegion),this.options.track&&t&&/^mouse/.test(t.type)?(this._on(this.document,{mousemove:n}),n(t)):o.position(e.extend({of:i},this.options.position)),o.hide(),this._show(o,this.options.show),this.options.show&&this.options.show.delay&&(h=this.delayedShow=setInterval(function(){o.is(":visible")&&(n(u.of),clearInterval(h))},e.fx.interval)),this._trigger("open",t,{tooltip:o}),r={keyup:function(t){if(t.keyCode===e.ui.keyCode.ESCAPE){var s=e.Event(t);s.currentTarget=i[0],this.close(s,!0)}}},i[0]!==this.element[0]&&(r.remove=function(){this._removeTooltip(o)}),t&&"mouseover"!==t.type||(r.mouseleave="close"),t&&"focusin"!==t.type||(r.focusout="close"),this._on(!0,i,r)}},close:function(t){var i,s=this,n=e(t?t.currentTarget:this.element),a=this._find(n);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(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,i){e(i.element).attr("title",i.title),delete s.parents[t]}),a.closing=!0,this._trigger("close",t,{tooltip:i}),a.hiding||(a.closing=!1)))},_tooltip:function(t){var i=e("<div>").attr("role","tooltip").addClass("ui-tooltip ui-widget ui-corner-all ui-widget-content "+(this.options.tooltipClass||"")),s=i.uniqueId().attr("id");return e("<div>").addClass("ui-tooltip-content").appendTo(i),i.appendTo(this.document[0].body),this.tooltips[s]={element:t,tooltip:i}},_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(i,s){var n=e.Event("blur"),a=s.element;n.target=n.currentTarget=a[0],t.close(n,!0),e("#"+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()}});var y="ui-effects-",b=e;e.effects={effect:{}},function(e,t){function i(e,t,i){var s=d[t.type]||{};return null==e?i||!t.def?null:t.def:(e=s.floor?~~e:parseFloat(e),isNaN(e)?t.def:s.mod?(e+s.mod)%s.mod:0>e?0:e>s.max?s.max:e)}function s(i){var s=l(),n=s._rgba=[];return i=i.toLowerCase(),f(h,function(e,a){var o,r=a.re.exec(i),h=r&&a.parse(r),l=a.space||"rgba";return h?(o=s[l](h),s[u[l].cache]=o[u[l].cache],n=s._rgba=o._rgba,!1):t}),n.length?("0,0,0,0"===n.join()&&e.extend(n,a.transparent),s):a[i]}function n(e,t,i){return i=(i+1)%1,1>6*i?e+6*(t-e)*i:1>2*i?t:2>3*i?e+6*(t-e)*(2/3-i):e}var a,o="backgroundColor borderBottomColor borderLeftColor borderRightColor borderTopColor color columnRuleColor outlineColor textDecorationColor textEmphasisColor",r=/^([\-+])=\s*(\d+\.?\d*)/,h=[{re:/rgba?\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,parse:function(e){return[e[1],e[2],e[3],e[4]]}},{re:/rgba?\(\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,parse:function(e){return[2.55*e[1],2.55*e[2],2.55*e[3],e[4]]}},{re:/#([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})/,parse:function(e){return[parseInt(e[1],16),parseInt(e[2],16),parseInt(e[3],16)]}},{re:/#([a-f0-9])([a-f0-9])([a-f0-9])/,parse:function(e){return[parseInt(e[1]+e[1],16),parseInt(e[2]+e[2],16),parseInt(e[3]+e[3],16)]}},{re:/hsla?\(\s*(\d+(?:\.\d+)?)\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,space:"hsla",parse:function(e){return[e[1],e[2]/100,e[3]/100,e[4]]}}],l=e.Color=function(t,i,s,n){return new e.Color.fn.parse(t,i,s,n)},u={rgba:{props:{red:{idx:0,type:"byte"},green:{idx:1,type:"byte"},blue:{idx:2,type:"byte"}}},hsla:{props:{hue:{idx:0,type:"degrees"},saturation:{idx:1,type:"percent"},lightness:{idx:2,type:"percent"}}}},d={"byte":{floor:!0,max:255},percent:{max:1},degrees:{mod:360,floor:!0}},c=l.support={},p=e("<p>")[0],f=e.each;p.style.cssText="background-color:rgba(1,1,1,.5)",c.rgba=p.style.backgroundColor.indexOf("rgba")>-1,f(u,function(e,t){t.cache="_"+e,t.props.alpha={idx:3,type:"percent",def:1}}),l.fn=e.extend(l.prototype,{parse:function(n,o,r,h){if(n===t)return this._rgba=[null,null,null,null],this;(n.jquery||n.nodeType)&&(n=e(n).css(o),o=t);var d=this,c=e.type(n),p=this._rgba=[];return o!==t&&(n=[n,o,r,h],c="array"),"string"===c?this.parse(s(n)||a._default):"array"===c?(f(u.rgba.props,function(e,t){p[t.idx]=i(n[t.idx],t)}),this):"object"===c?(n instanceof l?f(u,function(e,t){n[t.cache]&&(d[t.cache]=n[t.cache].slice())}):f(u,function(t,s){var a=s.cache;f(s.props,function(e,t){if(!d[a]&&s.to){if("alpha"===e||null==n[e])return;d[a]=s.to(d._rgba)}d[a][t.idx]=i(n[e],t,!0)}),d[a]&&0>e.inArray(null,d[a].slice(0,3))&&(d[a][3]=1,s.from&&(d._rgba=s.from(d[a])))}),this):t},is:function(e){var i=l(e),s=!0,n=this;return f(u,function(e,a){var o,r=i[a.cache];return r&&(o=n[a.cache]||a.to&&a.to(n._rgba)||[],f(a.props,function(e,i){return null!=r[i.idx]?s=r[i.idx]===o[i.idx]:t})),s}),s},_space:function(){var e=[],t=this;return f(u,function(i,s){t[s.cache]&&e.push(i)}),e.pop()},transition:function(e,t){var s=l(e),n=s._space(),a=u[n],o=0===this.alpha()?l("transparent"):this,r=o[a.cache]||a.to(o._rgba),h=r.slice();return s=s[a.cache],f(a.props,function(e,n){var a=n.idx,o=r[a],l=s[a],u=d[n.type]||{};null!==l&&(null===o?h[a]=l:(u.mod&&(l-o>u.mod/2?o+=u.mod:o-l>u.mod/2&&(o-=u.mod)),h[a]=i((l-o)*t+o,n)))}),this[n](h)},blend:function(t){if(1===this._rgba[3])return this;var i=this._rgba.slice(),s=i.pop(),n=l(t)._rgba;return l(e.map(i,function(e,t){return(1-s)*n[t]+s*e}))},toRgbaString:function(){var t="rgba(",i=e.map(this._rgba,function(e,t){return null==e?t>2?1:0:e});return 1===i[3]&&(i.pop(),t="rgb("),t+i.join()+")"},toHslaString:function(){var t="hsla(",i=e.map(this.hsla(),function(e,t){return null==e&&(e=t>2?1:0),t&&3>t&&(e=Math.round(100*e)+"%"),e});return 1===i[3]&&(i.pop(),t="hsl("),t+i.join()+")"},toHexString:function(t){var i=this._rgba.slice(),s=i.pop();return t&&i.push(~~(255*s)),"#"+e.map(i,function(e){return e=(e||0).toString(16),1===e.length?"0"+e:e}).join("")},toString:function(){return 0===this._rgba[3]?"transparent":this.toRgbaString()}}),l.fn.parse.prototype=l.fn,u.hsla.to=function(e){if(null==e[0]||null==e[1]||null==e[2])return[null,null,null,e[3]];var t,i,s=e[0]/255,n=e[1]/255,a=e[2]/255,o=e[3],r=Math.max(s,n,a),h=Math.min(s,n,a),l=r-h,u=r+h,d=.5*u;return t=h===r?0:s===r?60*(n-a)/l+360:n===r?60*(a-s)/l+120:60*(s-n)/l+240,i=0===l?0:.5>=d?l/u:l/(2-u),[Math.round(t)%360,i,d,null==o?1:o]},u.hsla.from=function(e){if(null==e[0]||null==e[1]||null==e[2])return[null,null,null,e[3]];var t=e[0]/360,i=e[1],s=e[2],a=e[3],o=.5>=s?s*(1+i):s+i-s*i,r=2*s-o;return[Math.round(255*n(r,o,t+1/3)),Math.round(255*n(r,o,t)),Math.round(255*n(r,o,t-1/3)),a]},f(u,function(s,n){var a=n.props,o=n.cache,h=n.to,u=n.from;l.fn[s]=function(s){if(h&&!this[o]&&(this[o]=h(this._rgba)),s===t)return this[o].slice();var n,r=e.type(s),d="array"===r||"object"===r?s:arguments,c=this[o].slice();return f(a,function(e,t){var s=d["object"===r?e:t.idx];null==s&&(s=c[t.idx]),c[t.idx]=i(s,t)}),u?(n=l(u(c)),n[o]=c,n):l(c)},f(a,function(t,i){l.fn[t]||(l.fn[t]=function(n){var a,o=e.type(n),h="alpha"===t?this._hsla?"hsla":"rgba":s,l=this[h](),u=l[i.idx];return"undefined"===o?u:("function"===o&&(n=n.call(this,u),o=e.type(n)),null==n&&i.empty?this:("string"===o&&(a=r.exec(n),a&&(n=u+parseFloat(a[2])*("+"===a[1]?1:-1))),l[i.idx]=n,this[h](l)))})})}),l.hook=function(t){var i=t.split(" ");f(i,function(t,i){e.cssHooks[i]={set:function(t,n){var a,o,r="";if("transparent"!==n&&("string"!==e.type(n)||(a=s(n)))){if(n=l(a||n),!c.rgba&&1!==n._rgba[3]){for(o="backgroundColor"===i?t.parentNode:t;(""===r||"transparent"===r)&&o&&o.style;)try{r=e.css(o,"backgroundColor"),o=o.parentNode}catch(h){}n=n.blend(r&&"transparent"!==r?r:"_default")}n=n.toRgbaString()}try{t.style[i]=n}catch(h){}}},e.fx.step[i]=function(t){t.colorInit||(t.start=l(t.elem,i),t.end=l(t.end),t.colorInit=!0),e.cssHooks[i].set(t.elem,t.start.transition(t.end,t.pos))}})},l.hook(o),e.cssHooks.borderColor={expand:function(e){var t={};return f(["Top","Right","Bottom","Left"],function(i,s){t["border"+s+"Color"]=e}),t}},a=e.Color.names={aqua:"#00ffff",black:"#000000",blue:"#0000ff",fuchsia:"#ff00ff",gray:"#808080",green:"#008000",lime:"#00ff00",maroon:"#800000",navy:"#000080",olive:"#808000",purple:"#800080",red:"#ff0000",silver:"#c0c0c0",teal:"#008080",white:"#ffffff",yellow:"#ffff00",transparent:[null,null,null,0],_default:"#ffffff"}}(b),function(){function t(t){var i,s,n=t.ownerDocument.defaultView?t.ownerDocument.defaultView.getComputedStyle(t,null):t.currentStyle,a={};if(n&&n.length&&n[0]&&n[n[0]])for(s=n.length;s--;)i=n[s],"string"==typeof n[i]&&(a[e.camelCase(i)]=n[i]);else for(i in n)"string"==typeof n[i]&&(a[i]=n[i]);return a}function i(t,i){var s,a,o={};for(s in i)a=i[s],t[s]!==a&&(n[s]||(e.fx.step[s]||!isNaN(parseFloat(a)))&&(o[s]=a));return o}var s=["add","remove","toggle"],n={border:1,borderBottom:1,borderColor:1,borderLeft:1,borderRight:1,borderTop:1,borderWidth:1,margin:1,padding:1};e.each(["borderLeftStyle","borderRightStyle","borderBottomStyle","borderTopStyle"],function(t,i){e.fx.step[i]=function(e){("none"!==e.end&&!e.setAttr||1===e.pos&&!e.setAttr)&&(b.style(e.elem,i,e.end),e.setAttr=!0)}}),e.fn.addBack||(e.fn.addBack=function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}),e.effects.animateClass=function(n,a,o,r){var h=e.speed(a,o,r);return this.queue(function(){var a,o=e(this),r=o.attr("class")||"",l=h.children?o.find("*").addBack():o;l=l.map(function(){var i=e(this);return{el:i,start:t(this)}}),a=function(){e.each(s,function(e,t){n[t]&&o[t+"Class"](n[t])})},a(),l=l.map(function(){return this.end=t(this.el[0]),this.diff=i(this.start,this.end),this}),o.attr("class",r),l=l.map(function(){var t=this,i=e.Deferred(),s=e.extend({},h,{queue:!1,complete:function(){i.resolve(t)}});return this.el.animate(this.diff,s),i.promise()}),e.when.apply(e,l.get()).done(function(){a(),e.each(arguments,function(){var t=this.el;e.each(this.diff,function(e){t.css(e,"")})}),h.complete.call(o[0])})})},e.fn.extend({addClass:function(t){return function(i,s,n,a){return s?e.effects.animateClass.call(this,{add:i},s,n,a):t.apply(this,arguments)}}(e.fn.addClass),removeClass:function(t){return function(i,s,n,a){return arguments.length>1?e.effects.animateClass.call(this,{remove:i},s,n,a):t.apply(this,arguments)}}(e.fn.removeClass),toggleClass:function(t){return function(i,s,n,a,o){return"boolean"==typeof s||void 0===s?n?e.effects.animateClass.call(this,s?{add:i}:{remove:i},n,a,o):t.apply(this,arguments):e.effects.animateClass.call(this,{toggle:i},s,n,a)}}(e.fn.toggleClass),switchClass:function(t,i,s,n,a){return e.effects.animateClass.call(this,{add:i,remove:t},s,n,a)}})}(),function(){function t(t,i,s,n){return e.isPlainObject(t)&&(i=t,t=t.effect),t={effect:t},null==i&&(i={}),e.isFunction(i)&&(n=i,s=null,i={}),("number"==typeof i||e.fx.speeds[i])&&(n=s,s=i,i={}),e.isFunction(s)&&(n=s,s=null),i&&e.extend(t,i),s=s||i.duration,t.duration=e.fx.off?0:"number"==typeof s?s:s in e.fx.speeds?e.fx.speeds[s]:e.fx.speeds._default,t.complete=n||i.complete,t}function i(t){return!t||"number"==typeof t||e.fx.speeds[t]?!0:"string"!=typeof t||e.effects.effect[t]?e.isFunction(t)?!0:"object"!=typeof t||t.effect?!1:!0:!0}e.extend(e.effects,{version:"1.11.3",save:function(e,t){for(var i=0;t.length>i;i++)null!==t[i]&&e.data(y+t[i],e[0].style[t[i]])},restore:function(e,t){var i,s;for(s=0;t.length>s;s++)null!==t[s]&&(i=e.data(y+t[s]),void 0===i&&(i=""),e.css(t[s],i))},setMode:function(e,t){return"toggle"===t&&(t=e.is(":hidden")?"show":"hide"),t},getBaseline:function(e,t){var i,s;switch(e[0]){case"top":i=0;break;case"middle":i=.5;break;case"bottom":i=1;break;default:i=e[0]/t.height}switch(e[1]){case"left":s=0;break;case"center":s=.5;break;case"right":s=1;break;default:s=e[1]/t.width}return{x:s,y:i}},createWrapper:function(t){if(t.parent().is(".ui-effects-wrapper"))return t.parent();var i={width:t.outerWidth(!0),height:t.outerHeight(!0),"float":t.css("float")},s=e("<div></div>").addClass("ui-effects-wrapper").css({fontSize:"100%",background:"transparent",border:"none",margin:0,padding:0}),n={width:t.width(),height:t.height()},a=document.activeElement;try{a.id}catch(o){a=document.body}return t.wrap(s),(t[0]===a||e.contains(t[0],a))&&e(a).focus(),s=t.parent(),"static"===t.css("position")?(s.css({position:"relative"}),t.css({position:"relative"})):(e.extend(i,{position:t.css("position"),zIndex:t.css("z-index")}),e.each(["top","left","bottom","right"],function(e,s){i[s]=t.css(s),isNaN(parseInt(i[s],10))&&(i[s]="auto")}),t.css({position:"relative",top:0,left:0,right:"auto",bottom:"auto"})),t.css(n),s.css(i).show()},removeWrapper:function(t){var i=document.activeElement;return t.parent().is(".ui-effects-wrapper")&&(t.parent().replaceWith(t),(t[0]===i||e.contains(t[0],i))&&e(i).focus()),t},setTransition:function(t,i,s,n){return n=n||{},e.each(i,function(e,i){var a=t.cssUnit(i);a[0]>0&&(n[i]=a[0]*s+a[1])}),n}}),e.fn.extend({effect:function(){function i(t){function i(){e.isFunction(a)&&a.call(n[0]),e.isFunction(t)&&t()}var n=e(this),a=s.complete,r=s.mode;(n.is(":hidden")?"hide"===r:"show"===r)?(n[r](),i()):o.call(n[0],s,i)}var s=t.apply(this,arguments),n=s.mode,a=s.queue,o=e.effects.effect[s.effect];return e.fx.off||!o?n?this[n](s.duration,s.complete):this.each(function(){s.complete&&s.complete.call(this)
-}):a===!1?this.each(i):this.queue(a||"fx",i)},show:function(e){return function(s){if(i(s))return e.apply(this,arguments);var n=t.apply(this,arguments);return n.mode="show",this.effect.call(this,n)}}(e.fn.show),hide:function(e){return function(s){if(i(s))return e.apply(this,arguments);var n=t.apply(this,arguments);return n.mode="hide",this.effect.call(this,n)}}(e.fn.hide),toggle:function(e){return function(s){if(i(s)||"boolean"==typeof s)return e.apply(this,arguments);var n=t.apply(this,arguments);return n.mode="toggle",this.effect.call(this,n)}}(e.fn.toggle),cssUnit:function(t){var i=this.css(t),s=[];return e.each(["em","px","%","pt"],function(e,t){i.indexOf(t)>0&&(s=[parseFloat(i),t])}),s}})}(),function(){var t={};e.each(["Quad","Cubic","Quart","Quint","Expo"],function(e,i){t[i]=function(t){return Math.pow(t,e+2)}}),e.extend(t,{Sine:function(e){return 1-Math.cos(e*Math.PI/2)},Circ:function(e){return 1-Math.sqrt(1-e*e)},Elastic:function(e){return 0===e||1===e?e:-Math.pow(2,8*(e-1))*Math.sin((80*(e-1)-7.5)*Math.PI/15)},Back:function(e){return e*e*(3*e-2)},Bounce:function(e){for(var t,i=4;((t=Math.pow(2,--i))-1)/11>e;);return 1/Math.pow(4,3-i)-7.5625*Math.pow((3*t-2)/22-e,2)}}),e.each(t,function(t,i){e.easing["easeIn"+t]=i,e.easing["easeOut"+t]=function(e){return 1-i(1-e)},e.easing["easeInOut"+t]=function(e){return.5>e?i(2*e)/2:1-i(-2*e+2)/2}})}(),e.effects,e.effects.effect.blind=function(t,i){var s,n,a,o=e(this),r=/up|down|vertical/,h=/up|left|vertical|horizontal/,l=["position","top","bottom","left","right","height","width"],u=e.effects.setMode(o,t.mode||"hide"),d=t.direction||"up",c=r.test(d),p=c?"height":"width",f=c?"top":"left",m=h.test(d),g={},v="show"===u;o.parent().is(".ui-effects-wrapper")?e.effects.save(o.parent(),l):e.effects.save(o,l),o.show(),s=e.effects.createWrapper(o).css({overflow:"hidden"}),n=s[p](),a=parseFloat(s.css(f))||0,g[p]=v?n:0,m||(o.css(c?"bottom":"right",0).css(c?"top":"left","auto").css({position:"absolute"}),g[f]=v?a:n+a),v&&(s.css(p,0),m||s.css(f,a+n)),s.animate(g,{duration:t.duration,easing:t.easing,queue:!1,complete:function(){"hide"===u&&o.hide(),e.effects.restore(o,l),e.effects.removeWrapper(o),i()}})},e.effects.effect.bounce=function(t,i){var s,n,a,o=e(this),r=["position","top","bottom","left","right","height","width"],h=e.effects.setMode(o,t.mode||"effect"),l="hide"===h,u="show"===h,d=t.direction||"up",c=t.distance,p=t.times||5,f=2*p+(u||l?1:0),m=t.duration/f,g=t.easing,v="up"===d||"down"===d?"top":"left",y="up"===d||"left"===d,b=o.queue(),_=b.length;for((u||l)&&r.push("opacity"),e.effects.save(o,r),o.show(),e.effects.createWrapper(o),c||(c=o["top"===v?"outerHeight":"outerWidth"]()/3),u&&(a={opacity:1},a[v]=0,o.css("opacity",0).css(v,y?2*-c:2*c).animate(a,m,g)),l&&(c/=Math.pow(2,p-1)),a={},a[v]=0,s=0;p>s;s++)n={},n[v]=(y?"-=":"+=")+c,o.animate(n,m,g).animate(a,m,g),c=l?2*c:c/2;l&&(n={opacity:0},n[v]=(y?"-=":"+=")+c,o.animate(n,m,g)),o.queue(function(){l&&o.hide(),e.effects.restore(o,r),e.effects.removeWrapper(o),i()}),_>1&&b.splice.apply(b,[1,0].concat(b.splice(_,f+1))),o.dequeue()},e.effects.effect.clip=function(t,i){var s,n,a,o=e(this),r=["position","top","bottom","left","right","height","width"],h=e.effects.setMode(o,t.mode||"hide"),l="show"===h,u=t.direction||"vertical",d="vertical"===u,c=d?"height":"width",p=d?"top":"left",f={};e.effects.save(o,r),o.show(),s=e.effects.createWrapper(o).css({overflow:"hidden"}),n="IMG"===o[0].tagName?s:o,a=n[c](),l&&(n.css(c,0),n.css(p,a/2)),f[c]=l?a:0,f[p]=l?0:a/2,n.animate(f,{queue:!1,duration:t.duration,easing:t.easing,complete:function(){l||o.hide(),e.effects.restore(o,r),e.effects.removeWrapper(o),i()}})},e.effects.effect.drop=function(t,i){var s,n=e(this),a=["position","top","bottom","left","right","opacity","height","width"],o=e.effects.setMode(n,t.mode||"hide"),r="show"===o,h=t.direction||"left",l="up"===h||"down"===h?"top":"left",u="up"===h||"left"===h?"pos":"neg",d={opacity:r?1:0};e.effects.save(n,a),n.show(),e.effects.createWrapper(n),s=t.distance||n["top"===l?"outerHeight":"outerWidth"](!0)/2,r&&n.css("opacity",0).css(l,"pos"===u?-s:s),d[l]=(r?"pos"===u?"+=":"-=":"pos"===u?"-=":"+=")+s,n.animate(d,{queue:!1,duration:t.duration,easing:t.easing,complete:function(){"hide"===o&&n.hide(),e.effects.restore(n,a),e.effects.removeWrapper(n),i()}})},e.effects.effect.explode=function(t,i){function s(){b.push(this),b.length===d*c&&n()}function n(){p.css({visibility:"visible"}),e(b).remove(),m||p.hide(),i()}var a,o,r,h,l,u,d=t.pieces?Math.round(Math.sqrt(t.pieces)):3,c=d,p=e(this),f=e.effects.setMode(p,t.mode||"hide"),m="show"===f,g=p.show().css("visibility","hidden").offset(),v=Math.ceil(p.outerWidth()/c),y=Math.ceil(p.outerHeight()/d),b=[];for(a=0;d>a;a++)for(h=g.top+a*y,u=a-(d-1)/2,o=0;c>o;o++)r=g.left+o*v,l=o-(c-1)/2,p.clone().appendTo("body").wrap("<div></div>").css({position:"absolute",visibility:"visible",left:-o*v,top:-a*y}).parent().addClass("ui-effects-explode").css({position:"absolute",overflow:"hidden",width:v,height:y,left:r+(m?l*v:0),top:h+(m?u*y:0),opacity:m?0:1}).animate({left:r+(m?0:l*v),top:h+(m?0:u*y),opacity:m?1:0},t.duration||500,t.easing,s)},e.effects.effect.fade=function(t,i){var s=e(this),n=e.effects.setMode(s,t.mode||"toggle");s.animate({opacity:n},{queue:!1,duration:t.duration,easing:t.easing,complete:i})},e.effects.effect.fold=function(t,i){var s,n,a=e(this),o=["position","top","bottom","left","right","height","width"],r=e.effects.setMode(a,t.mode||"hide"),h="show"===r,l="hide"===r,u=t.size||15,d=/([0-9]+)%/.exec(u),c=!!t.horizFirst,p=h!==c,f=p?["width","height"]:["height","width"],m=t.duration/2,g={},v={};e.effects.save(a,o),a.show(),s=e.effects.createWrapper(a).css({overflow:"hidden"}),n=p?[s.width(),s.height()]:[s.height(),s.width()],d&&(u=parseInt(d[1],10)/100*n[l?0:1]),h&&s.css(c?{height:0,width:u}:{height:u,width:0}),g[f[0]]=h?n[0]:u,v[f[1]]=h?n[1]:0,s.animate(g,m,t.easing).animate(v,m,t.easing,function(){l&&a.hide(),e.effects.restore(a,o),e.effects.removeWrapper(a),i()})},e.effects.effect.highlight=function(t,i){var s=e(this),n=["backgroundImage","backgroundColor","opacity"],a=e.effects.setMode(s,t.mode||"show"),o={backgroundColor:s.css("backgroundColor")};"hide"===a&&(o.opacity=0),e.effects.save(s,n),s.show().css({backgroundImage:"none",backgroundColor:t.color||"#ffff99"}).animate(o,{queue:!1,duration:t.duration,easing:t.easing,complete:function(){"hide"===a&&s.hide(),e.effects.restore(s,n),i()}})},e.effects.effect.size=function(t,i){var s,n,a,o=e(this),r=["position","top","bottom","left","right","width","height","overflow","opacity"],h=["position","top","bottom","left","right","overflow","opacity"],l=["width","height","overflow"],u=["fontSize"],d=["borderTopWidth","borderBottomWidth","paddingTop","paddingBottom"],c=["borderLeftWidth","borderRightWidth","paddingLeft","paddingRight"],p=e.effects.setMode(o,t.mode||"effect"),f=t.restore||"effect"!==p,m=t.scale||"both",g=t.origin||["middle","center"],v=o.css("position"),y=f?r:h,b={height:0,width:0,outerHeight:0,outerWidth:0};"show"===p&&o.show(),s={height:o.height(),width:o.width(),outerHeight:o.outerHeight(),outerWidth:o.outerWidth()},"toggle"===t.mode&&"show"===p?(o.from=t.to||b,o.to=t.from||s):(o.from=t.from||("show"===p?b:s),o.to=t.to||("hide"===p?b:s)),a={from:{y:o.from.height/s.height,x:o.from.width/s.width},to:{y:o.to.height/s.height,x:o.to.width/s.width}},("box"===m||"both"===m)&&(a.from.y!==a.to.y&&(y=y.concat(d),o.from=e.effects.setTransition(o,d,a.from.y,o.from),o.to=e.effects.setTransition(o,d,a.to.y,o.to)),a.from.x!==a.to.x&&(y=y.concat(c),o.from=e.effects.setTransition(o,c,a.from.x,o.from),o.to=e.effects.setTransition(o,c,a.to.x,o.to))),("content"===m||"both"===m)&&a.from.y!==a.to.y&&(y=y.concat(u).concat(l),o.from=e.effects.setTransition(o,u,a.from.y,o.from),o.to=e.effects.setTransition(o,u,a.to.y,o.to)),e.effects.save(o,y),o.show(),e.effects.createWrapper(o),o.css("overflow","hidden").css(o.from),g&&(n=e.effects.getBaseline(g,s),o.from.top=(s.outerHeight-o.outerHeight())*n.y,o.from.left=(s.outerWidth-o.outerWidth())*n.x,o.to.top=(s.outerHeight-o.to.outerHeight)*n.y,o.to.left=(s.outerWidth-o.to.outerWidth)*n.x),o.css(o.from),("content"===m||"both"===m)&&(d=d.concat(["marginTop","marginBottom"]).concat(u),c=c.concat(["marginLeft","marginRight"]),l=r.concat(d).concat(c),o.find("*[width]").each(function(){var i=e(this),s={height:i.height(),width:i.width(),outerHeight:i.outerHeight(),outerWidth:i.outerWidth()};f&&e.effects.save(i,l),i.from={height:s.height*a.from.y,width:s.width*a.from.x,outerHeight:s.outerHeight*a.from.y,outerWidth:s.outerWidth*a.from.x},i.to={height:s.height*a.to.y,width:s.width*a.to.x,outerHeight:s.height*a.to.y,outerWidth:s.width*a.to.x},a.from.y!==a.to.y&&(i.from=e.effects.setTransition(i,d,a.from.y,i.from),i.to=e.effects.setTransition(i,d,a.to.y,i.to)),a.from.x!==a.to.x&&(i.from=e.effects.setTransition(i,c,a.from.x,i.from),i.to=e.effects.setTransition(i,c,a.to.x,i.to)),i.css(i.from),i.animate(i.to,t.duration,t.easing,function(){f&&e.effects.restore(i,l)})})),o.animate(o.to,{queue:!1,duration:t.duration,easing:t.easing,complete:function(){0===o.to.opacity&&o.css("opacity",o.from.opacity),"hide"===p&&o.hide(),e.effects.restore(o,y),f||("static"===v?o.css({position:"relative",top:o.to.top,left:o.to.left}):e.each(["top","left"],function(e,t){o.css(t,function(t,i){var s=parseInt(i,10),n=e?o.to.left:o.to.top;return"auto"===i?n+"px":s+n+"px"})})),e.effects.removeWrapper(o),i()}})},e.effects.effect.scale=function(t,i){var s=e(this),n=e.extend(!0,{},t),a=e.effects.setMode(s,t.mode||"effect"),o=parseInt(t.percent,10)||(0===parseInt(t.percent,10)?0:"hide"===a?0:100),r=t.direction||"both",h=t.origin,l={height:s.height(),width:s.width(),outerHeight:s.outerHeight(),outerWidth:s.outerWidth()},u={y:"horizontal"!==r?o/100:1,x:"vertical"!==r?o/100:1};n.effect="size",n.queue=!1,n.complete=i,"effect"!==a&&(n.origin=h||["middle","center"],n.restore=!0),n.from=t.from||("show"===a?{height:0,width:0,outerHeight:0,outerWidth:0}:l),n.to={height:l.height*u.y,width:l.width*u.x,outerHeight:l.outerHeight*u.y,outerWidth:l.outerWidth*u.x},n.fade&&("show"===a&&(n.from.opacity=0,n.to.opacity=1),"hide"===a&&(n.from.opacity=1,n.to.opacity=0)),s.effect(n)},e.effects.effect.puff=function(t,i){var s=e(this),n=e.effects.setMode(s,t.mode||"hide"),a="hide"===n,o=parseInt(t.percent,10)||150,r=o/100,h={height:s.height(),width:s.width(),outerHeight:s.outerHeight(),outerWidth:s.outerWidth()};e.extend(t,{effect:"scale",queue:!1,fade:!0,mode:n,complete:i,percent:a?o:100,from:a?h:{height:h.height*r,width:h.width*r,outerHeight:h.outerHeight*r,outerWidth:h.outerWidth*r}}),s.effect(t)},e.effects.effect.pulsate=function(t,i){var s,n=e(this),a=e.effects.setMode(n,t.mode||"show"),o="show"===a,r="hide"===a,h=o||"hide"===a,l=2*(t.times||5)+(h?1:0),u=t.duration/l,d=0,c=n.queue(),p=c.length;for((o||!n.is(":visible"))&&(n.css("opacity",0).show(),d=1),s=1;l>s;s++)n.animate({opacity:d},u,t.easing),d=1-d;n.animate({opacity:d},u,t.easing),n.queue(function(){r&&n.hide(),i()}),p>1&&c.splice.apply(c,[1,0].concat(c.splice(p,l+1))),n.dequeue()},e.effects.effect.shake=function(t,i){var s,n=e(this),a=["position","top","bottom","left","right","height","width"],o=e.effects.setMode(n,t.mode||"effect"),r=t.direction||"left",h=t.distance||20,l=t.times||3,u=2*l+1,d=Math.round(t.duration/u),c="up"===r||"down"===r?"top":"left",p="up"===r||"left"===r,f={},m={},g={},v=n.queue(),y=v.length;for(e.effects.save(n,a),n.show(),e.effects.createWrapper(n),f[c]=(p?"-=":"+=")+h,m[c]=(p?"+=":"-=")+2*h,g[c]=(p?"-=":"+=")+2*h,n.animate(f,d,t.easing),s=1;l>s;s++)n.animate(m,d,t.easing).animate(g,d,t.easing);n.animate(m,d,t.easing).animate(f,d/2,t.easing).queue(function(){"hide"===o&&n.hide(),e.effects.restore(n,a),e.effects.removeWrapper(n),i()}),y>1&&v.splice.apply(v,[1,0].concat(v.splice(y,u+1))),n.dequeue()},e.effects.effect.slide=function(t,i){var s,n=e(this),a=["position","top","bottom","left","right","width","height"],o=e.effects.setMode(n,t.mode||"show"),r="show"===o,h=t.direction||"left",l="up"===h||"down"===h?"top":"left",u="up"===h||"left"===h,d={};e.effects.save(n,a),n.show(),s=t.distance||n["top"===l?"outerHeight":"outerWidth"](!0),e.effects.createWrapper(n).css({overflow:"hidden"}),r&&n.css(l,u?isNaN(s)?"-"+s:-s:s),d[l]=(r?u?"+=":"-=":u?"-=":"+=")+s,n.animate(d,{queue:!1,duration:t.duration,easing:t.easing,complete:function(){"hide"===o&&n.hide(),e.effects.restore(n,a),e.effects.removeWrapper(n),i()}})},e.effects.effect.transfer=function(t,i){var s=e(this),n=e(t.to),a="fixed"===n.css("position"),o=e("body"),r=a?o.scrollTop():0,h=a?o.scrollLeft():0,l=n.offset(),u={top:l.top-r,left:l.left-h,height:n.innerHeight(),width:n.innerWidth()},d=s.offset(),c=e("<div class='ui-effects-transfer'></div>").appendTo(document.body).addClass(t.className).css({top:d.top-r,left:d.left-h,height:s.innerHeight(),width:s.innerWidth(),position:a?"fixed":"absolute"}).animate(u,t.duration,t.easing,function(){c.remove(),i()})}});
\ No newline at end of file
diff --git a/src/main/resources/META-INF/resources/designer/lib/jquery-ui-1.11.3.custom/jquery-ui.structure.css b/src/main/resources/META-INF/resources/designer/lib/jquery-ui-1.11.3.custom/jquery-ui.structure.css
deleted file mode 100644 (file)
index 32ff6f7..0000000
+++ /dev/null
@@ -1,833 +0,0 @@
-/*!
- * jQuery UI CSS Framework 1.11.3
- * http://jqueryui.com
- *
- * Copyright jQuery Foundation and other contributors
- * Released under the MIT license.
- * http://jquery.org/license
- *
- * http://api.jqueryui.com/category/theming/
- */
-
-/* Layout helpers
-----------------------------------*/
-.ui-helper-hidden {
-       display: none;
-}
-.ui-helper-hidden-accessible {
-       border: 0;
-       clip: rect(0 0 0 0);
-       height: 1px;
-       margin: -1px;
-       overflow: hidden;
-       padding: 0;
-       position: absolute;
-       width: 1px;
-}
-.ui-helper-reset {
-       margin: 0;
-       padding: 0;
-       border: 0;
-       outline: 0;
-       line-height: 1.3;
-       text-decoration: none;
-       font-size: 100%;
-       list-style: none;
-}
-.ui-helper-clearfix:before,
-.ui-helper-clearfix:after {
-       content: "";
-       display: table;
-       border-collapse: collapse;
-}
-.ui-helper-clearfix:after {
-       clear: both;
-}
-.ui-helper-clearfix {
-       min-height: 0; /* support: IE7 */
-}
-.ui-helper-zfix {
-       width: 100%;
-       height: 100%;
-       top: 0;
-       left: 0;
-       position: absolute;
-       opacity: 0;
-       filter:Alpha(Opacity=0); /* support: IE8 */
-}
-
-.ui-front {
-       z-index: 100;
-}
-
-
-/* Interaction Cues
-----------------------------------*/
-.ui-state-disabled {
-       cursor: default !important;
-}
-
-
-/* Icons
-----------------------------------*/
-
-/* states and images */
-.ui-icon {
-       display: block;
-       text-indent: -99999px;
-       overflow: hidden;
-       background-repeat: no-repeat;
-}
-
-
-/* Misc visuals
-----------------------------------*/
-
-/* Overlays */
-.ui-widget-overlay {
-       position: fixed;
-       top: 0;
-       left: 0;
-       width: 100%;
-       height: 100%;
-}
-.ui-draggable-handle {
-       -ms-touch-action: none;
-       touch-action: none;
-}
-.ui-resizable {
-       position: relative;
-}
-.ui-resizable-handle {
-       position: absolute;
-       font-size: 0.1px;
-       display: block;
-       -ms-touch-action: none;
-       touch-action: none;
-}
-.ui-resizable-disabled .ui-resizable-handle,
-.ui-resizable-autohide .ui-resizable-handle {
-       display: none;
-}
-.ui-resizable-n {
-       cursor: n-resize;
-       height: 7px;
-       width: 100%;
-       top: -5px;
-       left: 0;
-}
-.ui-resizable-s {
-       cursor: s-resize;
-       height: 7px;
-       width: 100%;
-       bottom: -5px;
-       left: 0;
-}
-.ui-resizable-e {
-       cursor: e-resize;
-       width: 7px;
-       right: -5px;
-       top: 0;
-       height: 100%;
-}
-.ui-resizable-w {
-       cursor: w-resize;
-       width: 7px;
-       left: -5px;
-       top: 0;
-       height: 100%;
-}
-.ui-resizable-se {
-       cursor: se-resize;
-       width: 12px;
-       height: 12px;
-       right: 1px;
-       bottom: 1px;
-}
-.ui-resizable-sw {
-       cursor: sw-resize;
-       width: 9px;
-       height: 9px;
-       left: -5px;
-       bottom: -5px;
-}
-.ui-resizable-nw {
-       cursor: nw-resize;
-       width: 9px;
-       height: 9px;
-       left: -5px;
-       top: -5px;
-}
-.ui-resizable-ne {
-       cursor: ne-resize;
-       width: 9px;
-       height: 9px;
-       right: -5px;
-       top: -5px;
-}
-.ui-selectable {
-       -ms-touch-action: none;
-       touch-action: none;
-}
-.ui-selectable-helper {
-       position: absolute;
-       z-index: 100;
-       border: 1px dotted black;
-}
-.ui-sortable-handle {
-       -ms-touch-action: none;
-       touch-action: none;
-}
-.ui-accordion .ui-accordion-header {
-       display: block;
-       cursor: pointer;
-       position: relative;
-       margin: 2px 0 0 0;
-       padding: .5em .5em .5em .7em;
-       min-height: 0; /* support: IE7 */
-       font-size: 100%;
-}
-.ui-accordion .ui-accordion-icons {
-       padding-left: 2.2em;
-}
-.ui-accordion .ui-accordion-icons .ui-accordion-icons {
-       padding-left: 2.2em;
-}
-.ui-accordion .ui-accordion-header .ui-accordion-header-icon {
-       position: absolute;
-       left: .5em;
-       top: 50%;
-       margin-top: -8px;
-}
-.ui-accordion .ui-accordion-content {
-       padding: 1em 2.2em;
-       border-top: 0;
-       overflow: auto;
-}
-.ui-autocomplete {
-       position: absolute;
-       top: 0;
-       left: 0;
-       cursor: default;
-}
-.ui-button {
-       display: inline-block;
-       position: relative;
-       padding: 0;
-       line-height: normal;
-       margin-right: .1em;
-       cursor: pointer;
-       vertical-align: middle;
-       text-align: center;
-       overflow: visible; /* removes extra width in IE */
-}
-.ui-button,
-.ui-button:link,
-.ui-button:visited,
-.ui-button:hover,
-.ui-button:active {
-       text-decoration: none;
-}
-/* to make room for the icon, a width needs to be set here */
-.ui-button-icon-only {
-       width: 2.2em;
-}
-/* button elements seem to need a little more width */
-button.ui-button-icon-only {
-       width: 2.4em;
-}
-.ui-button-icons-only {
-       width: 3.4em;
-}
-button.ui-button-icons-only {
-       width: 3.7em;
-}
-
-/* button text element */
-.ui-button .ui-button-text {
-       display: block;
-       line-height: normal;
-}
-.ui-button-text-only .ui-button-text {
-       padding: .4em 1em;
-}
-.ui-button-icon-only .ui-button-text,
-.ui-button-icons-only .ui-button-text {
-       padding: .4em;
-       text-indent: -9999999px;
-}
-.ui-button-text-icon-primary .ui-button-text,
-.ui-button-text-icons .ui-button-text {
-       padding: .4em 1em .4em 2.1em;
-}
-.ui-button-text-icon-secondary .ui-button-text,
-.ui-button-text-icons .ui-button-text {
-       padding: .4em 2.1em .4em 1em;
-}
-.ui-button-text-icons .ui-button-text {
-       padding-left: 2.1em;
-       padding-right: 2.1em;
-}
-/* no icon support for input elements, provide padding by default */
-input.ui-button {
-       padding: .4em 1em;
-}
-
-/* button icon element(s) */
-.ui-button-icon-only .ui-icon,
-.ui-button-text-icon-primary .ui-icon,
-.ui-button-text-icon-secondary .ui-icon,
-.ui-button-text-icons .ui-icon,
-.ui-button-icons-only .ui-icon {
-       position: absolute;
-       top: 50%;
-       margin-top: -8px;
-}
-.ui-button-icon-only .ui-icon {
-       left: 50%;
-       margin-left: -8px;
-}
-.ui-button-text-icon-primary .ui-button-icon-primary,
-.ui-button-text-icons .ui-button-icon-primary,
-.ui-button-icons-only .ui-button-icon-primary {
-       left: .5em;
-}
-.ui-button-text-icon-secondary .ui-button-icon-secondary,
-.ui-button-text-icons .ui-button-icon-secondary,
-.ui-button-icons-only .ui-button-icon-secondary {
-       right: .5em;
-}
-
-/* button sets */
-.ui-buttonset {
-       margin-right: 7px;
-}
-.ui-buttonset .ui-button {
-       margin-left: 0;
-       margin-right: -.3em;
-}
-
-/* workarounds */
-/* reset extra padding in Firefox, see h5bp.com/l */
-input.ui-button::-moz-focus-inner,
-button.ui-button::-moz-focus-inner {
-       border: 0;
-       padding: 0;
-}
-.ui-datepicker {
-       width: 17em;
-       padding: .2em .2em 0;
-       display: none;
-}
-.ui-datepicker .ui-datepicker-header {
-       position: relative;
-       padding: .2em 0;
-}
-.ui-datepicker .ui-datepicker-prev,
-.ui-datepicker .ui-datepicker-next {
-       position: absolute;
-       top: 2px;
-       width: 1.8em;
-       height: 1.8em;
-}
-.ui-datepicker .ui-datepicker-prev-hover,
-.ui-datepicker .ui-datepicker-next-hover {
-       top: 1px;
-}
-.ui-datepicker .ui-datepicker-prev {
-       left: 2px;
-}
-.ui-datepicker .ui-datepicker-next {
-       right: 2px;
-}
-.ui-datepicker .ui-datepicker-prev-hover {
-       left: 1px;
-}
-.ui-datepicker .ui-datepicker-next-hover {
-       right: 1px;
-}
-.ui-datepicker .ui-datepicker-prev span,
-.ui-datepicker .ui-datepicker-next span {
-       display: block;
-       position: absolute;
-       left: 50%;
-       margin-left: -8px;
-       top: 50%;
-       margin-top: -8px;
-}
-.ui-datepicker .ui-datepicker-title {
-       margin: 0 2.3em;
-       line-height: 1.8em;
-       text-align: center;
-}
-.ui-datepicker .ui-datepicker-title select {
-       font-size: 1em;
-       margin: 1px 0;
-}
-.ui-datepicker select.ui-datepicker-month,
-.ui-datepicker select.ui-datepicker-year {
-       width: 45%;
-}
-.ui-datepicker table {
-       width: 100%;
-       font-size: .9em;
-       border-collapse: collapse;
-       margin: 0 0 .4em;
-}
-.ui-datepicker th {
-       padding: .7em .3em;
-       text-align: center;
-       font-weight: bold;
-       border: 0;
-}
-.ui-datepicker td {
-       border: 0;
-       padding: 1px;
-}
-.ui-datepicker td span,
-.ui-datepicker td a {
-       display: block;
-       padding: .2em;
-       text-align: right;
-       text-decoration: none;
-}
-.ui-datepicker .ui-datepicker-buttonpane {
-       background-image: none;
-       margin: .7em 0 0 0;
-       padding: 0 .2em;
-       border-left: 0;
-       border-right: 0;
-       border-bottom: 0;
-}
-.ui-datepicker .ui-datepicker-buttonpane button {
-       float: right;
-       margin: .5em .2em .4em;
-       cursor: pointer;
-       padding: .2em .6em .3em .6em;
-       width: auto;
-       overflow: visible;
-}
-.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current {
-       float: left;
-}
-
-/* with multiple calendars */
-.ui-datepicker.ui-datepicker-multi {
-       width: auto;
-}
-.ui-datepicker-multi .ui-datepicker-group {
-       float: left;
-}
-.ui-datepicker-multi .ui-datepicker-group table {
-       width: 95%;
-       margin: 0 auto .4em;
-}
-.ui-datepicker-multi-2 .ui-datepicker-group {
-       width: 50%;
-}
-.ui-datepicker-multi-3 .ui-datepicker-group {
-       width: 33.3%;
-}
-.ui-datepicker-multi-4 .ui-datepicker-group {
-       width: 25%;
-}
-.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header,
-.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header {
-       border-left-width: 0;
-}
-.ui-datepicker-multi .ui-datepicker-buttonpane {
-       clear: left;
-}
-.ui-datepicker-row-break {
-       clear: both;
-       width: 100%;
-       font-size: 0;
-}
-
-/* RTL support */
-.ui-datepicker-rtl {
-       direction: rtl;
-}
-.ui-datepicker-rtl .ui-datepicker-prev {
-       right: 2px;
-       left: auto;
-}
-.ui-datepicker-rtl .ui-datepicker-next {
-       left: 2px;
-       right: auto;
-}
-.ui-datepicker-rtl .ui-datepicker-prev:hover {
-       right: 1px;
-       left: auto;
-}
-.ui-datepicker-rtl .ui-datepicker-next:hover {
-       left: 1px;
-       right: auto;
-}
-.ui-datepicker-rtl .ui-datepicker-buttonpane {
-       clear: right;
-}
-.ui-datepicker-rtl .ui-datepicker-buttonpane button {
-       float: left;
-}
-.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current,
-.ui-datepicker-rtl .ui-datepicker-group {
-       float: right;
-}
-.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header,
-.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header {
-       border-right-width: 0;
-       border-left-width: 1px;
-}
-.ui-dialog {
-       overflow: hidden;
-       position: absolute;
-       top: 0;
-       left: 0;
-       padding: .2em;
-       outline: 0;
-}
-.ui-dialog .ui-dialog-titlebar {
-       padding: .4em 1em;
-       position: relative;
-}
-.ui-dialog .ui-dialog-title {
-       float: left;
-       margin: .1em 0;
-       white-space: nowrap;
-       width: 90%;
-       overflow: hidden;
-       text-overflow: ellipsis;
-}
-.ui-dialog .ui-dialog-titlebar-close {
-       position: absolute;
-       right: .3em;
-       top: 50%;
-       width: 20px;
-       margin: -10px 0 0 0;
-       padding: 1px;
-       height: 20px;
-}
-.ui-dialog .ui-dialog-content {
-       position: relative;
-       border: 0;
-       padding: .5em 1em;
-       background: none;
-       overflow: auto;
-}
-.ui-dialog .ui-dialog-buttonpane {
-       text-align: left;
-       border-width: 1px 0 0 0;
-       background-image: none;
-       margin-top: .5em;
-       padding: .3em 1em .5em .4em;
-}
-.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset {
-       float: right;
-}
-.ui-dialog .ui-dialog-buttonpane button {
-       margin: .5em .4em .5em 0;
-       cursor: pointer;
-}
-.ui-dialog .ui-resizable-se {
-       width: 12px;
-       height: 12px;
-       right: -5px;
-       bottom: -5px;
-       background-position: 16px 16px;
-}
-.ui-draggable .ui-dialog-titlebar {
-       cursor: move;
-}
-.ui-menu {
-       list-style: none;
-       padding: 0;
-       margin: 0;
-       display: block;
-       outline: none;
-}
-.ui-menu .ui-menu {
-       position: absolute;
-}
-.ui-menu .ui-menu-item {
-       position: relative;
-       margin: 0;
-       padding: 3px 1em 3px .4em;
-       cursor: pointer;
-       min-height: 0; /* support: IE7 */
-       /* support: IE10, see #8844 */
-       list-style-image: url("data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7");
-}
-.ui-menu .ui-menu-divider {
-       margin: 5px 0;
-       height: 0;
-       font-size: 0;
-       line-height: 0;
-       border-width: 1px 0 0 0;
-}
-.ui-menu .ui-state-focus,
-.ui-menu .ui-state-active {
-       margin: -1px;
-}
-
-/* icon support */
-.ui-menu-icons {
-       position: relative;
-}
-.ui-menu-icons .ui-menu-item {
-       padding-left: 2em;
-}
-
-/* left-aligned */
-.ui-menu .ui-icon {
-       position: absolute;
-       top: 0;
-       bottom: 0;
-       left: .2em;
-       margin: auto 0;
-}
-
-/* right-aligned */
-.ui-menu .ui-menu-icon {
-       left: auto;
-       right: 0;
-}
-.ui-progressbar {
-       height: 2em;
-       text-align: left;
-       overflow: hidden;
-}
-.ui-progressbar .ui-progressbar-value {
-       margin: -1px;
-       height: 100%;
-}
-.ui-progressbar .ui-progressbar-overlay {
-       background: url("data:image/gif;base64,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");
-       height: 100%;
-       filter: alpha(opacity=25); /* support: IE8 */
-       opacity: 0.25;
-}
-.ui-progressbar-indeterminate .ui-progressbar-value {
-       background-image: none;
-}
-.ui-selectmenu-menu {
-       padding: 0;
-       margin: 0;
-       position: absolute;
-       top: 0;
-       left: 0;
-       display: none;
-}
-.ui-selectmenu-menu .ui-menu {
-       overflow: auto;
-       /* Support: IE7 */
-       overflow-x: hidden;
-       padding-bottom: 1px;
-}
-.ui-selectmenu-menu .ui-menu .ui-selectmenu-optgroup {
-       font-size: 1em;
-       font-weight: bold;
-       line-height: 1.5;
-       padding: 2px 0.4em;
-       margin: 0.5em 0 0 0;
-       height: auto;
-       border: 0;
-}
-.ui-selectmenu-open {
-       display: block;
-}
-.ui-selectmenu-button {
-       display: inline-block;
-       overflow: hidden;
-       position: relative;
-       text-decoration: none;
-       cursor: pointer;
-}
-.ui-selectmenu-button span.ui-icon {
-       right: 0.5em;
-       left: auto;
-       margin-top: -8px;
-       position: absolute;
-       top: 50%;
-}
-.ui-selectmenu-button span.ui-selectmenu-text {
-       text-align: left;
-       padding: 0.4em 2.1em 0.4em 1em;
-       display: block;
-       line-height: 1.4;
-       overflow: hidden;
-       text-overflow: ellipsis;
-       white-space: nowrap;
-}
-.ui-slider {
-       position: relative;
-       text-align: left;
-}
-.ui-slider .ui-slider-handle {
-       position: absolute;
-       z-index: 2;
-       width: 1.2em;
-       height: 1.2em;
-       cursor: default;
-       -ms-touch-action: none;
-       touch-action: none;
-}
-.ui-slider .ui-slider-range {
-       position: absolute;
-       z-index: 1;
-       font-size: .7em;
-       display: block;
-       border: 0;
-       background-position: 0 0;
-}
-
-/* support: IE8 - See #6727 */
-.ui-slider.ui-state-disabled .ui-slider-handle,
-.ui-slider.ui-state-disabled .ui-slider-range {
-       filter: inherit;
-}
-
-.ui-slider-horizontal {
-       height: .8em;
-}
-.ui-slider-horizontal .ui-slider-handle {
-       top: -.3em;
-       margin-left: -.6em;
-}
-.ui-slider-horizontal .ui-slider-range {
-       top: 0;
-       height: 100%;
-}
-.ui-slider-horizontal .ui-slider-range-min {
-       left: 0;
-}
-.ui-slider-horizontal .ui-slider-range-max {
-       right: 0;
-}
-
-.ui-slider-vertical {
-       width: .8em;
-       height: 100px;
-}
-.ui-slider-vertical .ui-slider-handle {
-       left: -.3em;
-       margin-left: 0;
-       margin-bottom: -.6em;
-}
-.ui-slider-vertical .ui-slider-range {
-       left: 0;
-       width: 100%;
-}
-.ui-slider-vertical .ui-slider-range-min {
-       bottom: 0;
-}
-.ui-slider-vertical .ui-slider-range-max {
-       top: 0;
-}
-.ui-spinner {
-       position: relative;
-       display: inline-block;
-       overflow: hidden;
-       padding: 0;
-       vertical-align: middle;
-}
-.ui-spinner-input {
-       border: none;
-       background: none;
-       color: inherit;
-       padding: 0;
-       margin: .2em 0;
-       vertical-align: middle;
-       margin-left: .4em;
-       margin-right: 22px;
-}
-.ui-spinner-button {
-       width: 16px;
-       height: 50%;
-       font-size: .5em;
-       padding: 0;
-       margin: 0;
-       text-align: center;
-       position: absolute;
-       cursor: default;
-       display: block;
-       overflow: hidden;
-       right: 0;
-}
-/* more specificity required here to override default borders */
-.ui-spinner a.ui-spinner-button {
-       border-top: none;
-       border-bottom: none;
-       border-right: none;
-}
-/* vertically center icon */
-.ui-spinner .ui-icon {
-       position: absolute;
-       margin-top: -8px;
-       top: 50%;
-       left: 0;
-}
-.ui-spinner-up {
-       top: 0;
-}
-.ui-spinner-down {
-       bottom: 0;
-}
-
-/* TR overrides */
-.ui-spinner .ui-icon-triangle-1-s {
-       /* need to fix icons sprite */
-       background-position: -65px -16px;
-}
-.ui-tabs {
-       position: relative;/* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as "fixed") */
-       padding: .2em;
-}
-.ui-tabs .ui-tabs-nav {
-       margin: 0;
-       padding: .2em .2em 0;
-}
-.ui-tabs .ui-tabs-nav li {
-       list-style: none;
-       float: left;
-       position: relative;
-       top: 0;
-       margin: 1px .2em 0 0;
-       border-bottom-width: 0;
-       padding: 0;
-       white-space: nowrap;
-}
-.ui-tabs .ui-tabs-nav .ui-tabs-anchor {
-       float: left;
-       padding: .5em 1em;
-       text-decoration: none;
-}
-.ui-tabs .ui-tabs-nav li.ui-tabs-active {
-       margin-bottom: -1px;
-       padding-bottom: 1px;
-}
-.ui-tabs .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor,
-.ui-tabs .ui-tabs-nav li.ui-state-disabled .ui-tabs-anchor,
-.ui-tabs .ui-tabs-nav li.ui-tabs-loading .ui-tabs-anchor {
-       cursor: text;
-}
-.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor {
-       cursor: pointer;
-}
-.ui-tabs .ui-tabs-panel {
-       display: block;
-       border-width: 0;
-       padding: 1em 1.4em;
-       background: none;
-}
-.ui-tooltip {
-       padding: 8px;
-       position: absolute;
-       z-index: 9999;
-       max-width: 300px;
-       -webkit-box-shadow: 0 0 5px #aaa;
-       box-shadow: 0 0 5px #aaa;
-}
-body .ui-tooltip {
-       border-width: 2px;
-}
diff --git a/src/main/resources/META-INF/resources/designer/lib/jquery-ui-1.11.3.custom/jquery-ui.structure.min.css b/src/main/resources/META-INF/resources/designer/lib/jquery-ui-1.11.3.custom/jquery-ui.structure.min.css
deleted file mode 100644 (file)
index 85b63cc..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-/*! jQuery UI - v1.11.3 - 2015-03-01
-* http://jqueryui.com
-* Copyright 2015 jQuery Foundation and other contributors; Licensed MIT */
-
-.ui-helper-hidden{display:none}.ui-helper-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.ui-helper-reset{margin:0;padding:0;border:0;outline:0;line-height:1.3;text-decoration:none;font-size:100%;list-style:none}.ui-helper-clearfix:before,.ui-helper-clearfix:after{content:"";display:table;border-collapse:collapse}.ui-helper-clearfix:after{clear:both}.ui-helper-clearfix{min-height:0}.ui-helper-zfix{width:100%;height:100%;top:0;left:0;position:absolute;opacity:0;filter:Alpha(Opacity=0)}.ui-front{z-index:100}.ui-state-disabled{cursor:default!important}.ui-icon{display:block;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat}.ui-widget-overlay{position:fixed;top:0;left:0;width:100%;height:100%}.ui-draggable-handle{-ms-touch-action:none;touch-action:none}.ui-resizable{position:relative}.ui-resizable-handle{position:absolute;font-size:0.1px;display:block;-ms-touch-action:none;touch-action:none}.ui-resizable-disabled .ui-resizable-handle,.ui-resizable-autohide .ui-resizable-handle{display:none}.ui-resizable-n{cursor:n-resize;height:7px;width:100%;top:-5px;left:0}.ui-resizable-s{cursor:s-resize;height:7px;width:100%;bottom:-5px;left:0}.ui-resizable-e{cursor:e-resize;width:7px;right:-5px;top:0;height:100%}.ui-resizable-w{cursor:w-resize;width:7px;left:-5px;top:0;height:100%}.ui-resizable-se{cursor:se-resize;width:12px;height:12px;right:1px;bottom:1px}.ui-resizable-sw{cursor:sw-resize;width:9px;height:9px;left:-5px;bottom:-5px}.ui-resizable-nw{cursor:nw-resize;width:9px;height:9px;left:-5px;top:-5px}.ui-resizable-ne{cursor:ne-resize;width:9px;height:9px;right:-5px;top:-5px}.ui-selectable{-ms-touch-action:none;touch-action:none}.ui-selectable-helper{position:absolute;z-index:100;border:1px dotted black}.ui-sortable-handle{-ms-touch-action:none;touch-action:none}.ui-accordion .ui-accordion-header{display:block;cursor:pointer;position:relative;margin:2px 0 0 0;padding:.5em .5em .5em .7em;min-height:0;font-size:100%}.ui-accordion .ui-accordion-icons{padding-left:2.2em}.ui-accordion .ui-accordion-icons .ui-accordion-icons{padding-left:2.2em}.ui-accordion .ui-accordion-header .ui-accordion-header-icon{position:absolute;left:.5em;top:50%;margin-top:-8px}.ui-accordion .ui-accordion-content{padding:1em 2.2em;border-top:0;overflow:auto}.ui-autocomplete{position:absolute;top:0;left:0;cursor:default}.ui-button{display:inline-block;position:relative;padding:0;line-height:normal;margin-right:.1em;cursor:pointer;vertical-align:middle;text-align:center;overflow:visible}.ui-button,.ui-button:link,.ui-button:visited,.ui-button:hover,.ui-button:active{text-decoration:none}.ui-button-icon-only{width:2.2em}button.ui-button-icon-only{width:2.4em}.ui-button-icons-only{width:3.4em}button.ui-button-icons-only{width:3.7em}.ui-button .ui-button-text{display:block;line-height:normal}.ui-button-text-only .ui-button-text{padding:.4em 1em}.ui-button-icon-only .ui-button-text,.ui-button-icons-only .ui-button-text{padding:.4em;text-indent:-9999999px}.ui-button-text-icon-primary .ui-button-text,.ui-button-text-icons .ui-button-text{padding:.4em 1em .4em 2.1em}.ui-button-text-icon-secondary .ui-button-text,.ui-button-text-icons .ui-button-text{padding:.4em 2.1em .4em 1em}.ui-button-text-icons .ui-button-text{padding-left:2.1em;padding-right:2.1em}input.ui-button{padding:.4em 1em}.ui-button-icon-only .ui-icon,.ui-button-text-icon-primary .ui-icon,.ui-button-text-icon-secondary .ui-icon,.ui-button-text-icons .ui-icon,.ui-button-icons-only .ui-icon{position:absolute;top:50%;margin-top:-8px}.ui-button-icon-only .ui-icon{left:50%;margin-left:-8px}.ui-button-text-icon-primary .ui-button-icon-primary,.ui-button-text-icons .ui-button-icon-primary,.ui-button-icons-only .ui-button-icon-primary{left:.5em}.ui-button-text-icon-secondary .ui-button-icon-secondary,.ui-button-text-icons .ui-button-icon-secondary,.ui-button-icons-only .ui-button-icon-secondary{right:.5em}.ui-buttonset{margin-right:7px}.ui-buttonset .ui-button{margin-left:0;margin-right:-.3em}input.ui-button::-moz-focus-inner,button.ui-button::-moz-focus-inner{border:0;padding:0}.ui-datepicker{width:17em;padding:.2em .2em 0;display:none}.ui-datepicker .ui-datepicker-header{position:relative;padding:.2em 0}.ui-datepicker .ui-datepicker-prev,.ui-datepicker .ui-datepicker-next{position:absolute;top:2px;width:1.8em;height:1.8em}.ui-datepicker .ui-datepicker-prev-hover,.ui-datepicker .ui-datepicker-next-hover{top:1px}.ui-datepicker .ui-datepicker-prev{left:2px}.ui-datepicker .ui-datepicker-next{right:2px}.ui-datepicker .ui-datepicker-prev-hover{left:1px}.ui-datepicker .ui-datepicker-next-hover{right:1px}.ui-datepicker .ui-datepicker-prev span,.ui-datepicker .ui-datepicker-next span{display:block;position:absolute;left:50%;margin-left:-8px;top:50%;margin-top:-8px}.ui-datepicker .ui-datepicker-title{margin:0 2.3em;line-height:1.8em;text-align:center}.ui-datepicker .ui-datepicker-title select{font-size:1em;margin:1px 0}.ui-datepicker select.ui-datepicker-month,.ui-datepicker select.ui-datepicker-year{width:45%}.ui-datepicker table{width:100%;font-size:.9em;border-collapse:collapse;margin:0 0 .4em}.ui-datepicker th{padding:.7em .3em;text-align:center;font-weight:bold;border:0}.ui-datepicker td{border:0;padding:1px}.ui-datepicker td span,.ui-datepicker td a{display:block;padding:.2em;text-align:right;text-decoration:none}.ui-datepicker .ui-datepicker-buttonpane{background-image:none;margin:.7em 0 0 0;padding:0 .2em;border-left:0;border-right:0;border-bottom:0}.ui-datepicker .ui-datepicker-buttonpane button{float:right;margin:.5em .2em .4em;cursor:pointer;padding:.2em .6em .3em .6em;width:auto;overflow:visible}.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current{float:left}.ui-datepicker.ui-datepicker-multi{width:auto}.ui-datepicker-multi .ui-datepicker-group{float:left}.ui-datepicker-multi .ui-datepicker-group table{width:95%;margin:0 auto .4em}.ui-datepicker-multi-2 .ui-datepicker-group{width:50%}.ui-datepicker-multi-3 .ui-datepicker-group{width:33.3%}.ui-datepicker-multi-4 .ui-datepicker-group{width:25%}.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header{border-left-width:0}.ui-datepicker-multi .ui-datepicker-buttonpane{clear:left}.ui-datepicker-row-break{clear:both;width:100%;font-size:0}.ui-datepicker-rtl{direction:rtl}.ui-datepicker-rtl .ui-datepicker-prev{right:2px;left:auto}.ui-datepicker-rtl .ui-datepicker-next{left:2px;right:auto}.ui-datepicker-rtl .ui-datepicker-prev:hover{right:1px;left:auto}.ui-datepicker-rtl .ui-datepicker-next:hover{left:1px;right:auto}.ui-datepicker-rtl .ui-datepicker-buttonpane{clear:right}.ui-datepicker-rtl .ui-datepicker-buttonpane button{float:left}.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current,.ui-datepicker-rtl .ui-datepicker-group{float:right}.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header{border-right-width:0;border-left-width:1px}.ui-dialog{overflow:hidden;position:absolute;top:0;left:0;padding:.2em;outline:0}.ui-dialog .ui-dialog-titlebar{padding:.4em 1em;position:relative}.ui-dialog .ui-dialog-title{float:left;margin:.1em 0;white-space:nowrap;width:90%;overflow:hidden;text-overflow:ellipsis}.ui-dialog .ui-dialog-titlebar-close{position:absolute;right:.3em;top:50%;width:20px;margin:-10px 0 0 0;padding:1px;height:20px}.ui-dialog .ui-dialog-content{position:relative;border:0;padding:.5em 1em;background:none;overflow:auto}.ui-dialog .ui-dialog-buttonpane{text-align:left;border-width:1px 0 0 0;background-image:none;margin-top:.5em;padding:.3em 1em .5em .4em}.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset{float:right}.ui-dialog .ui-dialog-buttonpane button{margin:.5em .4em .5em 0;cursor:pointer}.ui-dialog .ui-resizable-se{width:12px;height:12px;right:-5px;bottom:-5px;background-position:16px 16px}.ui-draggable .ui-dialog-titlebar{cursor:move}.ui-menu{list-style:none;padding:0;margin:0;display:block;outline:none}.ui-menu .ui-menu{position:absolute}.ui-menu .ui-menu-item{position:relative;margin:0;padding:3px 1em 3px .4em;cursor:pointer;min-height:0;list-style-image:url("data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7")}.ui-menu .ui-menu-divider{margin:5px 0;height:0;font-size:0;line-height:0;border-width:1px 0 0 0}.ui-menu .ui-state-focus,.ui-menu .ui-state-active{margin:-1px}.ui-menu-icons{position:relative}.ui-menu-icons .ui-menu-item{padding-left:2em}.ui-menu .ui-icon{position:absolute;top:0;bottom:0;left:.2em;margin:auto 0}.ui-menu .ui-menu-icon{left:auto;right:0}.ui-progressbar{height:2em;text-align:left;overflow:hidden}.ui-progressbar .ui-progressbar-value{margin:-1px;height:100%}.ui-progressbar .ui-progressbar-overlay{background:url("data:image/gif;base64,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");height:100%;filter:alpha(opacity=25);opacity:0.25}.ui-progressbar-indeterminate .ui-progressbar-value{background-image:none}.ui-selectmenu-menu{padding:0;margin:0;position:absolute;top:0;left:0;display:none}.ui-selectmenu-menu .ui-menu{overflow:auto;overflow-x:hidden;padding-bottom:1px}.ui-selectmenu-menu .ui-menu .ui-selectmenu-optgroup{font-size:1em;font-weight:bold;line-height:1.5;padding:2px 0.4em;margin:0.5em 0 0 0;height:auto;border:0}.ui-selectmenu-open{display:block}.ui-selectmenu-button{display:inline-block;overflow:hidden;position:relative;text-decoration:none;cursor:pointer}.ui-selectmenu-button span.ui-icon{right:0.5em;left:auto;margin-top:-8px;position:absolute;top:50%}.ui-selectmenu-button span.ui-selectmenu-text{text-align:left;padding:0.4em 2.1em 0.4em 1em;display:block;line-height:1.4;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ui-slider{position:relative;text-align:left}.ui-slider .ui-slider-handle{position:absolute;z-index:2;width:1.2em;height:1.2em;cursor:default;-ms-touch-action:none;touch-action:none}.ui-slider .ui-slider-range{position:absolute;z-index:1;font-size:.7em;display:block;border:0;background-position:0 0}.ui-slider.ui-state-disabled .ui-slider-handle,.ui-slider.ui-state-disabled .ui-slider-range{filter:inherit}.ui-slider-horizontal{height:.8em}.ui-slider-horizontal .ui-slider-handle{top:-.3em;margin-left:-.6em}.ui-slider-horizontal .ui-slider-range{top:0;height:100%}.ui-slider-horizontal .ui-slider-range-min{left:0}.ui-slider-horizontal .ui-slider-range-max{right:0}.ui-slider-vertical{width:.8em;height:100px}.ui-slider-vertical .ui-slider-handle{left:-.3em;margin-left:0;margin-bottom:-.6em}.ui-slider-vertical .ui-slider-range{left:0;width:100%}.ui-slider-vertical .ui-slider-range-min{bottom:0}.ui-slider-vertical .ui-slider-range-max{top:0}.ui-spinner{position:relative;display:inline-block;overflow:hidden;padding:0;vertical-align:middle}.ui-spinner-input{border:none;background:none;color:inherit;padding:0;margin:.2em 0;vertical-align:middle;margin-left:.4em;margin-right:22px}.ui-spinner-button{width:16px;height:50%;font-size:.5em;padding:0;margin:0;text-align:center;position:absolute;cursor:default;display:block;overflow:hidden;right:0}.ui-spinner a.ui-spinner-button{border-top:none;border-bottom:none;border-right:none}.ui-spinner .ui-icon{position:absolute;margin-top:-8px;top:50%;left:0}.ui-spinner-up{top:0}.ui-spinner-down{bottom:0}.ui-spinner .ui-icon-triangle-1-s{background-position:-65px -16px}.ui-tabs{position:relative;padding:.2em}.ui-tabs .ui-tabs-nav{margin:0;padding:.2em .2em 0}.ui-tabs .ui-tabs-nav li{list-style:none;float:left;position:relative;top:0;margin:1px .2em 0 0;border-bottom-width:0;padding:0;white-space:nowrap}.ui-tabs .ui-tabs-nav .ui-tabs-anchor{float:left;padding:.5em 1em;text-decoration:none}.ui-tabs .ui-tabs-nav li.ui-tabs-active{margin-bottom:-1px;padding-bottom:1px}.ui-tabs .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor,.ui-tabs .ui-tabs-nav li.ui-state-disabled .ui-tabs-anchor,.ui-tabs .ui-tabs-nav li.ui-tabs-loading .ui-tabs-anchor{cursor:text}.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor{cursor:pointer}.ui-tabs .ui-tabs-panel{display:block;border-width:0;padding:1em 1.4em;background:none}.ui-tooltip{padding:8px;position:absolute;z-index:9999;max-width:300px;-webkit-box-shadow:0 0 5px #aaa;box-shadow:0 0 5px #aaa}body .ui-tooltip{border-width:2px}
\ No newline at end of file
diff --git a/src/main/resources/META-INF/resources/designer/lib/jquery-ui-1.11.3.custom/jquery-ui.theme.css b/src/main/resources/META-INF/resources/designer/lib/jquery-ui-1.11.3.custom/jquery-ui.theme.css
deleted file mode 100644 (file)
index 22b988a..0000000
+++ /dev/null
@@ -1,410 +0,0 @@
-/*!
- * jQuery UI CSS Framework 1.11.3
- * http://jqueryui.com
- *
- * Copyright jQuery Foundation and other contributors
- * Released under the MIT license.
- * http://jquery.org/license
- *
- * http://api.jqueryui.com/category/theming/
- *
- * To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Verdana%2CArial%2Csans-serif&fwDefault=normal&fsDefault=1.1em&cornerRadius=4px&bgColorHeader=cccccc&bgTextureHeader=highlight_soft&bgImgOpacityHeader=75&borderColorHeader=aaaaaa&fcHeader=222222&iconColorHeader=222222&bgColorContent=ffffff&bgTextureContent=flat&bgImgOpacityContent=75&borderColorContent=aaaaaa&fcContent=222222&iconColorContent=222222&bgColorDefault=e6e6e6&bgTextureDefault=glass&bgImgOpacityDefault=75&borderColorDefault=d3d3d3&fcDefault=555555&iconColorDefault=888888&bgColorHover=dadada&bgTextureHover=glass&bgImgOpacityHover=75&borderColorHover=999999&fcHover=212121&iconColorHover=454545&bgColorActive=ffffff&bgTextureActive=glass&bgImgOpacityActive=65&borderColorActive=aaaaaa&fcActive=212121&iconColorActive=454545&bgColorHighlight=fbf9ee&bgTextureHighlight=glass&bgImgOpacityHighlight=55&borderColorHighlight=fcefa1&fcHighlight=363636&iconColorHighlight=2e83ff&bgColorError=fef1ec&bgTextureError=glass&bgImgOpacityError=95&borderColorError=cd0a0a&fcError=cd0a0a&iconColorError=cd0a0a&bgColorOverlay=aaaaaa&bgTextureOverlay=flat&bgImgOpacityOverlay=0&opacityOverlay=30&bgColorShadow=aaaaaa&bgTextureShadow=flat&bgImgOpacityShadow=0&opacityShadow=30&thicknessShadow=8px&offsetTopShadow=-8px&offsetLeftShadow=-8px&cornerRadiusShadow=8px
- */
-
-
-/* Component containers
-----------------------------------*/
-.ui-widget {
-       font-family: Verdana,Arial,sans-serif;
-       font-size: 1.1em;
-}
-.ui-widget .ui-widget {
-       font-size: 1em;
-}
-.ui-widget input,
-.ui-widget select,
-.ui-widget textarea,
-.ui-widget button {
-       font-family: Verdana,Arial,sans-serif;
-       font-size: 1em;
-}
-.ui-widget-content {
-       border: 1px solid #aaaaaa;
-       background: #ffffff url("images/ui-bg_flat_75_ffffff_40x100.png") 50% 50% repeat-x;
-       color: #222222;
-}
-.ui-widget-content a {
-       color: #222222;
-}
-.ui-widget-header {
-       border: 1px solid #aaaaaa;
-       background: #cccccc url("images/ui-bg_highlight-soft_75_cccccc_1x100.png") 50% 50% repeat-x;
-       color: #222222;
-       font-weight: bold;
-}
-.ui-widget-header a {
-       color: #222222;
-}
-
-/* Interaction states
-----------------------------------*/
-.ui-state-default,
-.ui-widget-content .ui-state-default,
-.ui-widget-header .ui-state-default {
-       border: 1px solid #d3d3d3;
-       background: #e6e6e6 url("images/ui-bg_glass_75_e6e6e6_1x400.png") 50% 50% repeat-x;
-       font-weight: normal;
-       color: #555555;
-}
-.ui-state-default a,
-.ui-state-default a:link,
-.ui-state-default a:visited {
-       color: #555555;
-       text-decoration: none;
-}
-.ui-state-hover,
-.ui-widget-content .ui-state-hover,
-.ui-widget-header .ui-state-hover,
-.ui-state-focus,
-.ui-widget-content .ui-state-focus,
-.ui-widget-header .ui-state-focus {
-       border: 1px solid #999999;
-       background: #dadada url("images/ui-bg_glass_75_dadada_1x400.png") 50% 50% repeat-x;
-       font-weight: normal;
-       color: #212121;
-}
-.ui-state-hover a,
-.ui-state-hover a:hover,
-.ui-state-hover a:link,
-.ui-state-hover a:visited,
-.ui-state-focus a,
-.ui-state-focus a:hover,
-.ui-state-focus a:link,
-.ui-state-focus a:visited {
-       color: #212121;
-       text-decoration: none;
-}
-.ui-state-active,
-.ui-widget-content .ui-state-active,
-.ui-widget-header .ui-state-active {
-       border: 1px solid #aaaaaa;
-       background: #ffffff url("images/ui-bg_glass_65_ffffff_1x400.png") 50% 50% repeat-x;
-       font-weight: normal;
-       color: #212121;
-}
-.ui-state-active a,
-.ui-state-active a:link,
-.ui-state-active a:visited {
-       color: #212121;
-       text-decoration: none;
-}
-
-/* Interaction Cues
-----------------------------------*/
-.ui-state-highlight,
-.ui-widget-content .ui-state-highlight,
-.ui-widget-header .ui-state-highlight {
-       border: 1px solid #fcefa1;
-       background: #fbf9ee url("images/ui-bg_glass_55_fbf9ee_1x400.png") 50% 50% repeat-x;
-       color: #363636;
-}
-.ui-state-highlight a,
-.ui-widget-content .ui-state-highlight a,
-.ui-widget-header .ui-state-highlight a {
-       color: #363636;
-}
-.ui-state-error,
-.ui-widget-content .ui-state-error,
-.ui-widget-header .ui-state-error {
-       border: 1px solid #cd0a0a;
-       background: #fef1ec url("images/ui-bg_glass_95_fef1ec_1x400.png") 50% 50% repeat-x;
-       color: #cd0a0a;
-}
-.ui-state-error a,
-.ui-widget-content .ui-state-error a,
-.ui-widget-header .ui-state-error a {
-       color: #cd0a0a;
-}
-.ui-state-error-text,
-.ui-widget-content .ui-state-error-text,
-.ui-widget-header .ui-state-error-text {
-       color: #cd0a0a;
-}
-.ui-priority-primary,
-.ui-widget-content .ui-priority-primary,
-.ui-widget-header .ui-priority-primary {
-       font-weight: bold;
-}
-.ui-priority-secondary,
-.ui-widget-content .ui-priority-secondary,
-.ui-widget-header .ui-priority-secondary {
-       opacity: .7;
-       filter:Alpha(Opacity=70); /* support: IE8 */
-       font-weight: normal;
-}
-.ui-state-disabled,
-.ui-widget-content .ui-state-disabled,
-.ui-widget-header .ui-state-disabled {
-       opacity: .35;
-       filter:Alpha(Opacity=35); /* support: IE8 */
-       background-image: none;
-}
-.ui-state-disabled .ui-icon {
-       filter:Alpha(Opacity=35); /* support: IE8 - See #6059 */
-}
-
-/* Icons
-----------------------------------*/
-
-/* states and images */
-.ui-icon {
-       width: 16px;
-       height: 16px;
-}
-.ui-icon,
-.ui-widget-content .ui-icon {
-       background-image: url("images/ui-icons_222222_256x240.png");
-}
-.ui-widget-header .ui-icon {
-       background-image: url("images/ui-icons_222222_256x240.png");
-}
-.ui-state-default .ui-icon {
-       background-image: url("images/ui-icons_888888_256x240.png");
-}
-.ui-state-hover .ui-icon,
-.ui-state-focus .ui-icon {
-       background-image: url("images/ui-icons_454545_256x240.png");
-}
-.ui-state-active .ui-icon {
-       background-image: url("images/ui-icons_454545_256x240.png");
-}
-.ui-state-highlight .ui-icon {
-       background-image: url("images/ui-icons_2e83ff_256x240.png");
-}
-.ui-state-error .ui-icon,
-.ui-state-error-text .ui-icon {
-       background-image: url("images/ui-icons_cd0a0a_256x240.png");
-}
-
-/* positioning */
-.ui-icon-blank { background-position: 16px 16px; }
-.ui-icon-carat-1-n { background-position: 0 0; }
-.ui-icon-carat-1-ne { background-position: -16px 0; }
-.ui-icon-carat-1-e { background-position: -32px 0; }
-.ui-icon-carat-1-se { background-position: -48px 0; }
-.ui-icon-carat-1-s { background-position: -64px 0; }
-.ui-icon-carat-1-sw { background-position: -80px 0; }
-.ui-icon-carat-1-w { background-position: -96px 0; }
-.ui-icon-carat-1-nw { background-position: -112px 0; }
-.ui-icon-carat-2-n-s { background-position: -128px 0; }
-.ui-icon-carat-2-e-w { background-position: -144px 0; }
-.ui-icon-triangle-1-n { background-position: 0 -16px; }
-.ui-icon-triangle-1-ne { background-position: -16px -16px; }
-.ui-icon-triangle-1-e { background-position: -32px -16px; }
-.ui-icon-triangle-1-se { background-position: -48px -16px; }
-.ui-icon-triangle-1-s { background-position: -64px -16px; }
-.ui-icon-triangle-1-sw { background-position: -80px -16px; }
-.ui-icon-triangle-1-w { background-position: -96px -16px; }
-.ui-icon-triangle-1-nw { background-position: -112px -16px; }
-.ui-icon-triangle-2-n-s { background-position: -128px -16px; }
-.ui-icon-triangle-2-e-w { background-position: -144px -16px; }
-.ui-icon-arrow-1-n { background-position: 0 -32px; }
-.ui-icon-arrow-1-ne { background-position: -16px -32px; }
-.ui-icon-arrow-1-e { background-position: -32px -32px; }
-.ui-icon-arrow-1-se { background-position: -48px -32px; }
-.ui-icon-arrow-1-s { background-position: -64px -32px; }
-.ui-icon-arrow-1-sw { background-position: -80px -32px; }
-.ui-icon-arrow-1-w { background-position: -96px -32px; }
-.ui-icon-arrow-1-nw { background-position: -112px -32px; }
-.ui-icon-arrow-2-n-s { background-position: -128px -32px; }
-.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }
-.ui-icon-arrow-2-e-w { background-position: -160px -32px; }
-.ui-icon-arrow-2-se-nw { background-position: -176px -32px; }
-.ui-icon-arrowstop-1-n { background-position: -192px -32px; }
-.ui-icon-arrowstop-1-e { background-position: -208px -32px; }
-.ui-icon-arrowstop-1-s { background-position: -224px -32px; }
-.ui-icon-arrowstop-1-w { background-position: -240px -32px; }
-.ui-icon-arrowthick-1-n { background-position: 0 -48px; }
-.ui-icon-arrowthick-1-ne { background-position: -16px -48px; }
-.ui-icon-arrowthick-1-e { background-position: -32px -48px; }
-.ui-icon-arrowthick-1-se { background-position: -48px -48px; }
-.ui-icon-arrowthick-1-s { background-position: -64px -48px; }
-.ui-icon-arrowthick-1-sw { background-position: -80px -48px; }
-.ui-icon-arrowthick-1-w { background-position: -96px -48px; }
-.ui-icon-arrowthick-1-nw { background-position: -112px -48px; }
-.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }
-.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }
-.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }
-.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }
-.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }
-.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }
-.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }
-.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }
-.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }
-.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }
-.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }
-.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }
-.ui-icon-arrowreturn-1-w { background-position: -64px -64px; }
-.ui-icon-arrowreturn-1-n { background-position: -80px -64px; }
-.ui-icon-arrowreturn-1-e { background-position: -96px -64px; }
-.ui-icon-arrowreturn-1-s { background-position: -112px -64px; }
-.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }
-.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }
-.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }
-.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }
-.ui-icon-arrow-4 { background-position: 0 -80px; }
-.ui-icon-arrow-4-diag { background-position: -16px -80px; }
-.ui-icon-extlink { background-position: -32px -80px; }
-.ui-icon-newwin { background-position: -48px -80px; }
-.ui-icon-refresh { background-position: -64px -80px; }
-.ui-icon-shuffle { background-position: -80px -80px; }
-.ui-icon-transfer-e-w { background-position: -96px -80px; }
-.ui-icon-transferthick-e-w { background-position: -112px -80px; }
-.ui-icon-folder-collapsed { background-position: 0 -96px; }
-.ui-icon-folder-open { background-position: -16px -96px; }
-.ui-icon-document { background-position: -32px -96px; }
-.ui-icon-document-b { background-position: -48px -96px; }
-.ui-icon-note { background-position: -64px -96px; }
-.ui-icon-mail-closed { background-position: -80px -96px; }
-.ui-icon-mail-open { background-position: -96px -96px; }
-.ui-icon-suitcase { background-position: -112px -96px; }
-.ui-icon-comment { background-position: -128px -96px; }
-.ui-icon-person { background-position: -144px -96px; }
-.ui-icon-print { background-position: -160px -96px; }
-.ui-icon-trash { background-position: -176px -96px; }
-.ui-icon-locked { background-position: -192px -96px; }
-.ui-icon-unlocked { background-position: -208px -96px; }
-.ui-icon-bookmark { background-position: -224px -96px; }
-.ui-icon-tag { background-position: -240px -96px; }
-.ui-icon-home { background-position: 0 -112px; }
-.ui-icon-flag { background-position: -16px -112px; }
-.ui-icon-calendar { background-position: -32px -112px; }
-.ui-icon-cart { background-position: -48px -112px; }
-.ui-icon-pencil { background-position: -64px -112px; }
-.ui-icon-clock { background-position: -80px -112px; }
-.ui-icon-disk { background-position: -96px -112px; }
-.ui-icon-calculator { background-position: -112px -112px; }
-.ui-icon-zoomin { background-position: -128px -112px; }
-.ui-icon-zoomout { background-position: -144px -112px; }
-.ui-icon-search { background-position: -160px -112px; }
-.ui-icon-wrench { background-position: -176px -112px; }
-.ui-icon-gear { background-position: -192px -112px; }
-.ui-icon-heart { background-position: -208px -112px; }
-.ui-icon-star { background-position: -224px -112px; }
-.ui-icon-link { background-position: -240px -112px; }
-.ui-icon-cancel { background-position: 0 -128px; }
-.ui-icon-plus { background-position: -16px -128px; }
-.ui-icon-plusthick { background-position: -32px -128px; }
-.ui-icon-minus { background-position: -48px -128px; }
-.ui-icon-minusthick { background-position: -64px -128px; }
-.ui-icon-close { background-position: -80px -128px; }
-.ui-icon-closethick { background-position: -96px -128px; }
-.ui-icon-key { background-position: -112px -128px; }
-.ui-icon-lightbulb { background-position: -128px -128px; }
-.ui-icon-scissors { background-position: -144px -128px; }
-.ui-icon-clipboard { background-position: -160px -128px; }
-.ui-icon-copy { background-position: -176px -128px; }
-.ui-icon-contact { background-position: -192px -128px; }
-.ui-icon-image { background-position: -208px -128px; }
-.ui-icon-video { background-position: -224px -128px; }
-.ui-icon-script { background-position: -240px -128px; }
-.ui-icon-alert { background-position: 0 -144px; }
-.ui-icon-info { background-position: -16px -144px; }
-.ui-icon-notice { background-position: -32px -144px; }
-.ui-icon-help { background-position: -48px -144px; }
-.ui-icon-check { background-position: -64px -144px; }
-.ui-icon-bullet { background-position: -80px -144px; }
-.ui-icon-radio-on { background-position: -96px -144px; }
-.ui-icon-radio-off { background-position: -112px -144px; }
-.ui-icon-pin-w { background-position: -128px -144px; }
-.ui-icon-pin-s { background-position: -144px -144px; }
-.ui-icon-play { background-position: 0 -160px; }
-.ui-icon-pause { background-position: -16px -160px; }
-.ui-icon-seek-next { background-position: -32px -160px; }
-.ui-icon-seek-prev { background-position: -48px -160px; }
-.ui-icon-seek-end { background-position: -64px -160px; }
-.ui-icon-seek-start { background-position: -80px -160px; }
-/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */
-.ui-icon-seek-first { background-position: -80px -160px; }
-.ui-icon-stop { background-position: -96px -160px; }
-.ui-icon-eject { background-position: -112px -160px; }
-.ui-icon-volume-off { background-position: -128px -160px; }
-.ui-icon-volume-on { background-position: -144px -160px; }
-.ui-icon-power { background-position: 0 -176px; }
-.ui-icon-signal-diag { background-position: -16px -176px; }
-.ui-icon-signal { background-position: -32px -176px; }
-.ui-icon-battery-0 { background-position: -48px -176px; }
-.ui-icon-battery-1 { background-position: -64px -176px; }
-.ui-icon-battery-2 { background-position: -80px -176px; }
-.ui-icon-battery-3 { background-position: -96px -176px; }
-.ui-icon-circle-plus { background-position: 0 -192px; }
-.ui-icon-circle-minus { background-position: -16px -192px; }
-.ui-icon-circle-close { background-position: -32px -192px; }
-.ui-icon-circle-triangle-e { background-position: -48px -192px; }
-.ui-icon-circle-triangle-s { background-position: -64px -192px; }
-.ui-icon-circle-triangle-w { background-position: -80px -192px; }
-.ui-icon-circle-triangle-n { background-position: -96px -192px; }
-.ui-icon-circle-arrow-e { background-position: -112px -192px; }
-.ui-icon-circle-arrow-s { background-position: -128px -192px; }
-.ui-icon-circle-arrow-w { background-position: -144px -192px; }
-.ui-icon-circle-arrow-n { background-position: -160px -192px; }
-.ui-icon-circle-zoomin { background-position: -176px -192px; }
-.ui-icon-circle-zoomout { background-position: -192px -192px; }
-.ui-icon-circle-check { background-position: -208px -192px; }
-.ui-icon-circlesmall-plus { background-position: 0 -208px; }
-.ui-icon-circlesmall-minus { background-position: -16px -208px; }
-.ui-icon-circlesmall-close { background-position: -32px -208px; }
-.ui-icon-squaresmall-plus { background-position: -48px -208px; }
-.ui-icon-squaresmall-minus { background-position: -64px -208px; }
-.ui-icon-squaresmall-close { background-position: -80px -208px; }
-.ui-icon-grip-dotted-vertical { background-position: 0 -224px; }
-.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }
-.ui-icon-grip-solid-vertical { background-position: -32px -224px; }
-.ui-icon-grip-solid-horizontal { background-position: -48px -224px; }
-.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }
-.ui-icon-grip-diagonal-se { background-position: -80px -224px; }
-
-
-/* Misc visuals
-----------------------------------*/
-
-/* Corner radius */
-.ui-corner-all,
-.ui-corner-top,
-.ui-corner-left,
-.ui-corner-tl {
-       border-top-left-radius: 4px;
-}
-.ui-corner-all,
-.ui-corner-top,
-.ui-corner-right,
-.ui-corner-tr {
-       border-top-right-radius: 4px;
-}
-.ui-corner-all,
-.ui-corner-bottom,
-.ui-corner-left,
-.ui-corner-bl {
-       border-bottom-left-radius: 4px;
-}
-.ui-corner-all,
-.ui-corner-bottom,
-.ui-corner-right,
-.ui-corner-br {
-       border-bottom-right-radius: 4px;
-}
-
-/* Overlays */
-.ui-widget-overlay {
-       background: #aaaaaa url("images/ui-bg_flat_0_aaaaaa_40x100.png") 50% 50% repeat-x;
-       opacity: .3;
-       filter: Alpha(Opacity=30); /* support: IE8 */
-}
-.ui-widget-shadow {
-       margin: -8px 0 0 -8px;
-       padding: 8px;
-       background: #aaaaaa url("images/ui-bg_flat_0_aaaaaa_40x100.png") 50% 50% repeat-x;
-       opacity: .3;
-       filter: Alpha(Opacity=30); /* support: IE8 */
-       border-radius: 8px;
-}
diff --git a/src/main/resources/META-INF/resources/designer/lib/jquery-ui-1.11.3.custom/jquery-ui.theme.min.css b/src/main/resources/META-INF/resources/designer/lib/jquery-ui-1.11.3.custom/jquery-ui.theme.min.css
deleted file mode 100644 (file)
index 16c531c..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-/*! jQuery UI - v1.11.3 - 2015-03-03
-* http://jqueryui.com
-* Copyright 2015 jQuery Foundation and other contributors; Licensed MIT */
-
-.ui-widget{font-family:Verdana,Arial,sans-serif;font-size:1.1em}.ui-widget .ui-widget{font-size:1em}.ui-widget input,.ui-widget select,.ui-widget textarea,.ui-widget button{font-family:Verdana,Arial,sans-serif;font-size:1em}.ui-widget-content{border:1px solid #aaa;background:#fff url("images/ui-bg_flat_75_ffffff_40x100.png") 50% 50% repeat-x;color:#222}.ui-widget-content a{color:#222}.ui-widget-header{border:1px solid #aaa;background:#ccc url("images/ui-bg_highlight-soft_75_cccccc_1x100.png") 50% 50% repeat-x;color:#222;font-weight:bold}.ui-widget-header a{color:#222}.ui-state-default,.ui-widget-content .ui-state-default,.ui-widget-header .ui-state-default{border:1px solid #d3d3d3;background:#e6e6e6 url("images/ui-bg_glass_75_e6e6e6_1x400.png") 50% 50% repeat-x;font-weight:normal;color:#555}.ui-state-default a,.ui-state-default a:link,.ui-state-default a:visited{color:#555;text-decoration:none}.ui-state-hover,.ui-widget-content .ui-state-hover,.ui-widget-header .ui-state-hover,.ui-state-focus,.ui-widget-content .ui-state-focus,.ui-widget-header .ui-state-focus{border:1px solid #999;background:#dadada url("images/ui-bg_glass_75_dadada_1x400.png") 50% 50% repeat-x;font-weight:normal;color:#212121}.ui-state-hover a,.ui-state-hover a:hover,.ui-state-hover a:link,.ui-state-hover a:visited,.ui-state-focus a,.ui-state-focus a:hover,.ui-state-focus a:link,.ui-state-focus a:visited{color:#212121;text-decoration:none}.ui-state-active,.ui-widget-content .ui-state-active,.ui-widget-header .ui-state-active{border:1px solid #aaa;background:#fff url("images/ui-bg_glass_65_ffffff_1x400.png") 50% 50% repeat-x;font-weight:normal;color:#212121}.ui-state-active a,.ui-state-active a:link,.ui-state-active a:visited{color:#212121;text-decoration:none}.ui-state-highlight,.ui-widget-content .ui-state-highlight,.ui-widget-header .ui-state-highlight{border:1px solid #fcefa1;background:#fbf9ee url("images/ui-bg_glass_55_fbf9ee_1x400.png") 50% 50% repeat-x;color:#363636}.ui-state-highlight a,.ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a{color:#363636}.ui-state-error,.ui-widget-content .ui-state-error,.ui-widget-header .ui-state-error{border:1px solid #cd0a0a;background:#fef1ec url("images/ui-bg_glass_95_fef1ec_1x400.png") 50% 50% repeat-x;color:#cd0a0a}.ui-state-error a,.ui-widget-content .ui-state-error a,.ui-widget-header .ui-state-error a{color:#cd0a0a}.ui-state-error-text,.ui-widget-content .ui-state-error-text,.ui-widget-header .ui-state-error-text{color:#cd0a0a}.ui-priority-primary,.ui-widget-content .ui-priority-primary,.ui-widget-header .ui-priority-primary{font-weight:bold}.ui-priority-secondary,.ui-widget-content .ui-priority-secondary,.ui-widget-header .ui-priority-secondary{opacity:.7;filter:Alpha(Opacity=70);font-weight:normal}.ui-state-disabled,.ui-widget-content .ui-state-disabled,.ui-widget-header .ui-state-disabled{opacity:.35;filter:Alpha(Opacity=35);background-image:none}.ui-state-disabled .ui-icon{filter:Alpha(Opacity=35)}.ui-icon{width:16px;height:16px}.ui-icon,.ui-widget-content .ui-icon{background-image:url("images/ui-icons_222222_256x240.png")}.ui-widget-header .ui-icon{background-image:url("images/ui-icons_222222_256x240.png")}.ui-state-default .ui-icon{background-image:url("images/ui-icons_888888_256x240.png")}.ui-state-hover .ui-icon,.ui-state-focus .ui-icon{background-image:url("images/ui-icons_454545_256x240.png")}.ui-state-active .ui-icon{background-image:url("images/ui-icons_454545_256x240.png")}.ui-state-highlight .ui-icon{background-image:url("images/ui-icons_2e83ff_256x240.png")}.ui-state-error .ui-icon,.ui-state-error-text .ui-icon{background-image:url("images/ui-icons_cd0a0a_256x240.png")}.ui-icon-blank{background-position:16px 16px}.ui-icon-carat-1-n{background-position:0 0}.ui-icon-carat-1-ne{background-position:-16px 0}.ui-icon-carat-1-e{background-position:-32px 0}.ui-icon-carat-1-se{background-position:-48px 0}.ui-icon-carat-1-s{background-position:-64px 0}.ui-icon-carat-1-sw{background-position:-80px 0}.ui-icon-carat-1-w{background-position:-96px 0}.ui-icon-carat-1-nw{background-position:-112px 0}.ui-icon-carat-2-n-s{background-position:-128px 0}.ui-icon-carat-2-e-w{background-position:-144px 0}.ui-icon-triangle-1-n{background-position:0 -16px}.ui-icon-triangle-1-ne{background-position:-16px -16px}.ui-icon-triangle-1-e{background-position:-32px -16px}.ui-icon-triangle-1-se{background-position:-48px -16px}.ui-icon-triangle-1-s{background-position:-64px -16px}.ui-icon-triangle-1-sw{background-position:-80px -16px}.ui-icon-triangle-1-w{background-position:-96px -16px}.ui-icon-triangle-1-nw{background-position:-112px -16px}.ui-icon-triangle-2-n-s{background-position:-128px -16px}.ui-icon-triangle-2-e-w{background-position:-144px -16px}.ui-icon-arrow-1-n{background-position:0 -32px}.ui-icon-arrow-1-ne{background-position:-16px -32px}.ui-icon-arrow-1-e{background-position:-32px -32px}.ui-icon-arrow-1-se{background-position:-48px -32px}.ui-icon-arrow-1-s{background-position:-64px -32px}.ui-icon-arrow-1-sw{background-position:-80px -32px}.ui-icon-arrow-1-w{background-position:-96px -32px}.ui-icon-arrow-1-nw{background-position:-112px -32px}.ui-icon-arrow-2-n-s{background-position:-128px -32px}.ui-icon-arrow-2-ne-sw{background-position:-144px -32px}.ui-icon-arrow-2-e-w{background-position:-160px -32px}.ui-icon-arrow-2-se-nw{background-position:-176px -32px}.ui-icon-arrowstop-1-n{background-position:-192px -32px}.ui-icon-arrowstop-1-e{background-position:-208px -32px}.ui-icon-arrowstop-1-s{background-position:-224px -32px}.ui-icon-arrowstop-1-w{background-position:-240px -32px}.ui-icon-arrowthick-1-n{background-position:0 -48px}.ui-icon-arrowthick-1-ne{background-position:-16px -48px}.ui-icon-arrowthick-1-e{background-position:-32px -48px}.ui-icon-arrowthick-1-se{background-position:-48px -48px}.ui-icon-arrowthick-1-s{background-position:-64px -48px}.ui-icon-arrowthick-1-sw{background-position:-80px -48px}.ui-icon-arrowthick-1-w{background-position:-96px -48px}.ui-icon-arrowthick-1-nw{background-position:-112px -48px}.ui-icon-arrowthick-2-n-s{background-position:-128px -48px}.ui-icon-arrowthick-2-ne-sw{background-position:-144px -48px}.ui-icon-arrowthick-2-e-w{background-position:-160px -48px}.ui-icon-arrowthick-2-se-nw{background-position:-176px -48px}.ui-icon-arrowthickstop-1-n{background-position:-192px -48px}.ui-icon-arrowthickstop-1-e{background-position:-208px -48px}.ui-icon-arrowthickstop-1-s{background-position:-224px -48px}.ui-icon-arrowthickstop-1-w{background-position:-240px -48px}.ui-icon-arrowreturnthick-1-w{background-position:0 -64px}.ui-icon-arrowreturnthick-1-n{background-position:-16px -64px}.ui-icon-arrowreturnthick-1-e{background-position:-32px -64px}.ui-icon-arrowreturnthick-1-s{background-position:-48px -64px}.ui-icon-arrowreturn-1-w{background-position:-64px -64px}.ui-icon-arrowreturn-1-n{background-position:-80px -64px}.ui-icon-arrowreturn-1-e{background-position:-96px -64px}.ui-icon-arrowreturn-1-s{background-position:-112px -64px}.ui-icon-arrowrefresh-1-w{background-position:-128px -64px}.ui-icon-arrowrefresh-1-n{background-position:-144px -64px}.ui-icon-arrowrefresh-1-e{background-position:-160px -64px}.ui-icon-arrowrefresh-1-s{background-position:-176px -64px}.ui-icon-arrow-4{background-position:0 -80px}.ui-icon-arrow-4-diag{background-position:-16px -80px}.ui-icon-extlink{background-position:-32px -80px}.ui-icon-newwin{background-position:-48px -80px}.ui-icon-refresh{background-position:-64px -80px}.ui-icon-shuffle{background-position:-80px -80px}.ui-icon-transfer-e-w{background-position:-96px -80px}.ui-icon-transferthick-e-w{background-position:-112px -80px}.ui-icon-folder-collapsed{background-position:0 -96px}.ui-icon-folder-open{background-position:-16px -96px}.ui-icon-document{background-position:-32px -96px}.ui-icon-document-b{background-position:-48px -96px}.ui-icon-note{background-position:-64px -96px}.ui-icon-mail-closed{background-position:-80px -96px}.ui-icon-mail-open{background-position:-96px -96px}.ui-icon-suitcase{background-position:-112px -96px}.ui-icon-comment{background-position:-128px -96px}.ui-icon-person{background-position:-144px -96px}.ui-icon-print{background-position:-160px -96px}.ui-icon-trash{background-position:-176px -96px}.ui-icon-locked{background-position:-192px -96px}.ui-icon-unlocked{background-position:-208px -96px}.ui-icon-bookmark{background-position:-224px -96px}.ui-icon-tag{background-position:-240px -96px}.ui-icon-home{background-position:0 -112px}.ui-icon-flag{background-position:-16px -112px}.ui-icon-calendar{background-position:-32px -112px}.ui-icon-cart{background-position:-48px -112px}.ui-icon-pencil{background-position:-64px -112px}.ui-icon-clock{background-position:-80px -112px}.ui-icon-disk{background-position:-96px -112px}.ui-icon-calculator{background-position:-112px -112px}.ui-icon-zoomin{background-position:-128px -112px}.ui-icon-zoomout{background-position:-144px -112px}.ui-icon-search{background-position:-160px -112px}.ui-icon-wrench{background-position:-176px -112px}.ui-icon-gear{background-position:-192px -112px}.ui-icon-heart{background-position:-208px -112px}.ui-icon-star{background-position:-224px -112px}.ui-icon-link{background-position:-240px -112px}.ui-icon-cancel{background-position:0 -128px}.ui-icon-plus{background-position:-16px -128px}.ui-icon-plusthick{background-position:-32px -128px}.ui-icon-minus{background-position:-48px -128px}.ui-icon-minusthick{background-position:-64px -128px}.ui-icon-close{background-position:-80px -128px}.ui-icon-closethick{background-position:-96px -128px}.ui-icon-key{background-position:-112px -128px}.ui-icon-lightbulb{background-position:-128px -128px}.ui-icon-scissors{background-position:-144px -128px}.ui-icon-clipboard{background-position:-160px -128px}.ui-icon-copy{background-position:-176px -128px}.ui-icon-contact{background-position:-192px -128px}.ui-icon-image{background-position:-208px -128px}.ui-icon-video{background-position:-224px -128px}.ui-icon-script{background-position:-240px -128px}.ui-icon-alert{background-position:0 -144px}.ui-icon-info{background-position:-16px -144px}.ui-icon-notice{background-position:-32px -144px}.ui-icon-help{background-position:-48px -144px}.ui-icon-check{background-position:-64px -144px}.ui-icon-bullet{background-position:-80px -144px}.ui-icon-radio-on{background-position:-96px -144px}.ui-icon-radio-off{background-position:-112px -144px}.ui-icon-pin-w{background-position:-128px -144px}.ui-icon-pin-s{background-position:-144px -144px}.ui-icon-play{background-position:0 -160px}.ui-icon-pause{background-position:-16px -160px}.ui-icon-seek-next{background-position:-32px -160px}.ui-icon-seek-prev{background-position:-48px -160px}.ui-icon-seek-end{background-position:-64px -160px}.ui-icon-seek-start{background-position:-80px -160px}.ui-icon-seek-first{background-position:-80px -160px}.ui-icon-stop{background-position:-96px -160px}.ui-icon-eject{background-position:-112px -160px}.ui-icon-volume-off{background-position:-128px -160px}.ui-icon-volume-on{background-position:-144px -160px}.ui-icon-power{background-position:0 -176px}.ui-icon-signal-diag{background-position:-16px -176px}.ui-icon-signal{background-position:-32px -176px}.ui-icon-battery-0{background-position:-48px -176px}.ui-icon-battery-1{background-position:-64px -176px}.ui-icon-battery-2{background-position:-80px -176px}.ui-icon-battery-3{background-position:-96px -176px}.ui-icon-circle-plus{background-position:0 -192px}.ui-icon-circle-minus{background-position:-16px -192px}.ui-icon-circle-close{background-position:-32px -192px}.ui-icon-circle-triangle-e{background-position:-48px -192px}.ui-icon-circle-triangle-s{background-position:-64px -192px}.ui-icon-circle-triangle-w{background-position:-80px -192px}.ui-icon-circle-triangle-n{background-position:-96px -192px}.ui-icon-circle-arrow-e{background-position:-112px -192px}.ui-icon-circle-arrow-s{background-position:-128px -192px}.ui-icon-circle-arrow-w{background-position:-144px -192px}.ui-icon-circle-arrow-n{background-position:-160px -192px}.ui-icon-circle-zoomin{background-position:-176px -192px}.ui-icon-circle-zoomout{background-position:-192px -192px}.ui-icon-circle-check{background-position:-208px -192px}.ui-icon-circlesmall-plus{background-position:0 -208px}.ui-icon-circlesmall-minus{background-position:-16px -208px}.ui-icon-circlesmall-close{background-position:-32px -208px}.ui-icon-squaresmall-plus{background-position:-48px -208px}.ui-icon-squaresmall-minus{background-position:-64px -208px}.ui-icon-squaresmall-close{background-position:-80px -208px}.ui-icon-grip-dotted-vertical{background-position:0 -224px}.ui-icon-grip-dotted-horizontal{background-position:-16px -224px}.ui-icon-grip-solid-vertical{background-position:-32px -224px}.ui-icon-grip-solid-horizontal{background-position:-48px -224px}.ui-icon-gripsmall-diagonal-se{background-position:-64px -224px}.ui-icon-grip-diagonal-se{background-position:-80px -224px}.ui-corner-all,.ui-corner-top,.ui-corner-left,.ui-corner-tl{border-top-left-radius:4px}.ui-corner-all,.ui-corner-top,.ui-corner-right,.ui-corner-tr{border-top-right-radius:4px}.ui-corner-all,.ui-corner-bottom,.ui-corner-left,.ui-corner-bl{border-bottom-left-radius:4px}.ui-corner-all,.ui-corner-bottom,.ui-corner-right,.ui-corner-br{border-bottom-right-radius:4px}.ui-widget-overlay{background:#aaa url("images/ui-bg_flat_0_aaaaaa_40x100.png") 50% 50% repeat-x;opacity:.3;filter:Alpha(Opacity=30)}.ui-widget-shadow{margin:-8px 0 0 -8px;padding:8px;background:#aaa url("images/ui-bg_flat_0_aaaaaa_40x100.png") 50% 50% repeat-x;opacity:.3;filter:Alpha(Opacity=30);border-radius:8px}
\ No newline at end of file
diff --git a/src/main/resources/META-INF/resources/designer/lib/jquery-ui-1.11.3/external/jquery/jquery.js b/src/main/resources/META-INF/resources/designer/lib/jquery-ui-1.11.3/external/jquery/jquery.js
deleted file mode 100644 (file)
index c5c6482..0000000
+++ /dev/null
@@ -1,9789 +0,0 @@
-/*!
- * jQuery JavaScript Library v1.10.2
- * http://jquery.com/
- *
- * Includes Sizzle.js
- * http://sizzlejs.com/
- *
- * Copyright 2005, 2013 jQuery Foundation, Inc. and other contributors
- * Released under the MIT license
- * http://jquery.org/license
- *
- * Date: 2013-07-03T13:48Z
- */
-(function( window, undefined ) {
-
-// Can't do this because several apps including ASP.NET trace
-// the stack via arguments.caller.callee and Firefox dies if
-// you try to trace through "use strict" call chains. (#13335)
-// Support: Firefox 18+
-//"use strict";
-var
-       // The deferred used on DOM ready
-       readyList,
-
-       // A central reference to the root jQuery(document)
-       rootjQuery,
-
-       // Support: IE<10
-       // For `typeof xmlNode.method` instead of `xmlNode.method !== undefined`
-       core_strundefined = typeof undefined,
-
-       // Use the correct document accordingly with window argument (sandbox)
-       location = window.location,
-       document = window.document,
-       docElem = document.documentElement,
-
-       // Map over jQuery in case of overwrite
-       _jQuery = window.jQuery,
-
-       // Map over the $ in case of overwrite
-       _$ = window.$,
-
-       // [[Class]] -> type pairs
-       class2type = {},
-
-       // List of deleted data cache ids, so we can reuse them
-       core_deletedIds = [],
-
-       core_version = "1.10.2",
-
-       // Save a reference to some core methods
-       core_concat = core_deletedIds.concat,
-       core_push = core_deletedIds.push,
-       core_slice = core_deletedIds.slice,
-       core_indexOf = core_deletedIds.indexOf,
-       core_toString = class2type.toString,
-       core_hasOwn = class2type.hasOwnProperty,
-       core_trim = core_version.trim,
-
-       // Define a local copy of jQuery
-       jQuery = function( selector, context ) {
-               // The jQuery object is actually just the init constructor 'enhanced'
-               return new jQuery.fn.init( selector, context, rootjQuery );
-       },
-
-       // Used for matching numbers
-       core_pnum = /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,
-
-       // Used for splitting on whitespace
-       core_rnotwhite = /\S+/g,
-
-       // Make sure we trim BOM and NBSP (here's looking at you, Safari 5.0 and IE)
-       rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,
-
-       // A simple way to check for HTML strings
-       // Prioritize #id over <tag> to avoid XSS via location.hash (#9521)
-       // Strict HTML recognition (#11290: must start with <)
-       rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,
-
-       // Match a standalone tag
-       rsingleTag = /^<(\w+)\s*\/?>(?:<\/\1>|)$/,
-
-       // JSON RegExp
-       rvalidchars = /^[\],:{}\s]*$/,
-       rvalidbraces = /(?:^|:|,)(?:\s*\[)+/g,
-       rvalidescape = /\\(?:["\\\/bfnrt]|u[\da-fA-F]{4})/g,
-       rvalidtokens = /"[^"\\\r\n]*"|true|false|null|-?(?:\d+\.|)\d+(?:[eE][+-]?\d+|)/g,
-
-       // Matches dashed string for camelizing
-       rmsPrefix = /^-ms-/,
-       rdashAlpha = /-([\da-z])/gi,
-
-       // Used by jQuery.camelCase as callback to replace()
-       fcamelCase = function( all, letter ) {
-               return letter.toUpperCase();
-       },
-
-       // The ready event handler
-       completed = function( event ) {
-
-               // readyState === "complete" is good enough for us to call the dom ready in oldIE
-               if ( document.addEventListener || event.type === "load" || document.readyState === "complete" ) {
-                       detach();
-                       jQuery.ready();
-               }
-       },
-       // Clean-up method for dom ready events
-       detach = function() {
-               if ( document.addEventListener ) {
-                       document.removeEventListener( "DOMContentLoaded", completed, false );
-                       window.removeEventListener( "load", completed, false );
-
-               } else {
-                       document.detachEvent( "onreadystatechange", completed );
-                       window.detachEvent( "onload", completed );
-               }
-       };
-
-jQuery.fn = jQuery.prototype = {
-       // The current version of jQuery being used
-       jquery: core_version,
-
-       constructor: jQuery,
-       init: function( selector, context, rootjQuery ) {
-               var match, elem;
-
-               // HANDLE: $(""), $(null), $(undefined), $(false)
-               if ( !selector ) {
-                       return this;
-               }
-
-               // Handle HTML strings
-               if ( typeof selector === "string" ) {
-                       if ( selector.charAt(0) === "<" && selector.charAt( selector.length - 1 ) === ">" && selector.length >= 3 ) {
-                               // Assume that strings that start and end with <> are HTML and skip the regex check
-                               match = [ null, selector, null ];
-
-                       } else {
-                               match = rquickExpr.exec( selector );
-                       }
-
-                       // Match html or make sure no context is specified for #id
-                       if ( match && (match[1] || !context) ) {
-
-                               // HANDLE: $(html) -> $(array)
-                               if ( match[1] ) {
-                                       context = context instanceof jQuery ? context[0] : context;
-
-                                       // scripts is true for back-compat
-                                       jQuery.merge( this, jQuery.parseHTML(
-                                               match[1],
-                                               context && context.nodeType ? context.ownerDocument || context : document,
-                                               true
-                                       ) );
-
-                                       // HANDLE: $(html, props)
-                                       if ( rsingleTag.test( match[1] ) && jQuery.isPlainObject( context ) ) {
-                                               for ( match in context ) {
-                                                       // Properties of context are called as methods if possible
-                                                       if ( jQuery.isFunction( this[ match ] ) ) {
-                                                               this[ match ]( context[ match ] );
-
-                                                       // ...and otherwise set as attributes
-                                                       } else {
-                                                               this.attr( match, context[ match ] );
-                                                       }
-                                               }
-                                       }
-
-                                       return this;
-
-                               // HANDLE: $(#id)
-                               } else {
-                                       elem = document.getElementById( match[2] );
-
-                                       // Check parentNode to catch when Blackberry 4.6 returns
-                                       // nodes that are no longer in the document #6963
-                                       if ( elem && elem.parentNode ) {
-                                               // Handle the case where IE and Opera return items
-                                               // by name instead of ID
-                                               if ( elem.id !== match[2] ) {
-                                                       return rootjQuery.find( selector );
-                                               }
-
-                                               // Otherwise, we inject the element directly into the jQuery object
-                                               this.length = 1;
-                                               this[0] = elem;
-                                       }
-
-                                       this.context = document;
-                                       this.selector = selector;
-                                       return this;
-                               }
-
-                       // HANDLE: $(expr, $(...))
-                       } else if ( !context || context.jquery ) {
-                               return ( context || rootjQuery ).find( selector );
-
-                       // HANDLE: $(expr, context)
-                       // (which is just equivalent to: $(context).find(expr)
-                       } else {
-                               return this.constructor( context ).find( selector );
-                       }
-
-               // HANDLE: $(DOMElement)
-               } else if ( selector.nodeType ) {
-                       this.context = this[0] = selector;
-                       this.length = 1;
-                       return this;
-
-               // HANDLE: $(function)
-               // Shortcut for document ready
-               } else if ( jQuery.isFunction( selector ) ) {
-                       return rootjQuery.ready( selector );
-               }
-
-               if ( selector.selector !== undefined ) {
-                       this.selector = selector.selector;
-                       this.context = selector.context;
-               }
-
-               return jQuery.makeArray( selector, this );
-       },
-
-       // Start with an empty selector
-       selector: "",
-
-       // The default length of a jQuery object is 0
-       length: 0,
-
-       toArray: function() {
-               return core_slice.call( this );
-       },
-
-       // Get the Nth element in the matched element set OR
-       // Get the whole matched element set as a clean array
-       get: function( num ) {
-               return num == null ?
-
-                       // Return a 'clean' array
-                       this.toArray() :
-
-                       // Return just the object
-                       ( num < 0 ? this[ this.length + num ] : this[ num ] );
-       },
-
-       // Take an array of elements and push it onto the stack
-       // (returning the new matched element set)
-       pushStack: function( elems ) {
-
-               // Build a new jQuery matched element set
-               var ret = jQuery.merge( this.constructor(), elems );
-
-               // Add the old object onto the stack (as a reference)
-               ret.prevObject = this;
-               ret.context = this.context;
-
-               // Return the newly-formed element set
-               return ret;
-       },
-
-       // Execute a callback for every element in the matched set.
-       // (You can seed the arguments with an array of args, but this is
-       // only used internally.)
-       each: function( callback, args ) {
-               return jQuery.each( this, callback, args );
-       },
-
-       ready: function( fn ) {
-               // Add the callback
-               jQuery.ready.promise().done( fn );
-
-               return this;
-       },
-
-       slice: function() {
-               return this.pushStack( core_slice.apply( this, arguments ) );
-       },
-
-       first: function() {
-               return this.eq( 0 );
-       },
-
-       last: function() {
-               return this.eq( -1 );
-       },
-
-       eq: function( i ) {
-               var len = this.length,
-                       j = +i + ( i < 0 ? len : 0 );
-               return this.pushStack( j >= 0 && j < len ? [ this[j] ] : [] );
-       },
-
-       map: function( callback ) {
-               return this.pushStack( jQuery.map(this, function( elem, i ) {
-                       return callback.call( elem, i, elem );
-               }));
-       },
-
-       end: function() {
-               return this.prevObject || this.constructor(null);
-       },
-
-       // For internal use only.
-       // Behaves like an Array's method, not like a jQuery method.
-       push: core_push,
-       sort: [].sort,
-       splice: [].splice
-};
-
-// Give the init function the jQuery prototype for later instantiation
-jQuery.fn.init.prototype = jQuery.fn;
-
-jQuery.extend = jQuery.fn.extend = function() {
-       var src, copyIsArray, copy, name, options, clone,
-               target = arguments[0] || {},
-               i = 1,
-               length = arguments.length,
-               deep = false;
-
-       // Handle a deep copy situation
-       if ( typeof target === "boolean" ) {
-               deep = target;
-               target = arguments[1] || {};
-               // skip the boolean and the target
-               i = 2;
-       }
-
-       // Handle case when target is a string or something (possible in deep copy)
-       if ( typeof target !== "object" && !jQuery.isFunction(target) ) {
-               target = {};
-       }
-
-       // extend jQuery itself if only one argument is passed
-       if ( length === i ) {
-               target = this;
-               --i;
-       }
-
-       for ( ; i < length; i++ ) {
-               // Only deal with non-null/undefined values
-               if ( (options = arguments[ i ]) != null ) {
-                       // Extend the base object
-                       for ( name in options ) {
-                               src = target[ name ];
-                               copy = options[ name ];
-
-                               // Prevent never-ending loop
-                               if ( target === copy ) {
-                                       continue;
-                               }
-
-                               // Recurse if we're merging plain objects or arrays
-                               if ( deep && copy && ( jQuery.isPlainObject(copy) || (copyIsArray = jQuery.isArray(copy)) ) ) {
-                                       if ( copyIsArray ) {
-                                               copyIsArray = false;
-                                               clone = src && jQuery.isArray(src) ? src : [];
-
-                                       } else {
-                                               clone = src && jQuery.isPlainObject(src) ? src : {};
-                                       }
-
-                                       // Never move original objects, clone them
-                                       target[ name ] = jQuery.extend( deep, clone, copy );
-
-                               // Don't bring in undefined values
-                               } else if ( copy !== undefined ) {
-                                       target[ name ] = copy;
-                               }
-                       }
-               }
-       }
-
-       // Return the modified object
-       return target;
-};
-
-jQuery.extend({
-       // Unique for each copy of jQuery on the page
-       // Non-digits removed to match rinlinejQuery
-       expando: "jQuery" + ( core_version + Math.random() ).replace( /\D/g, "" ),
-
-       noConflict: function( deep ) {
-               if ( window.$ === jQuery ) {
-                       window.$ = _$;
-               }
-
-               if ( deep && window.jQuery === jQuery ) {
-                       window.jQuery = _jQuery;
-               }
-
-               return jQuery;
-       },
-
-       // Is the DOM ready to be used? Set to true once it occurs.
-       isReady: false,
-
-       // A counter to track how many items to wait for before
-       // the ready event fires. See #6781
-       readyWait: 1,
-
-       // Hold (or release) the ready event
-       holdReady: function( hold ) {
-               if ( hold ) {
-                       jQuery.readyWait++;
-               } else {
-                       jQuery.ready( true );
-               }
-       },
-
-       // Handle when the DOM is ready
-       ready: function( wait ) {
-
-               // Abort if there are pending holds or we're already ready
-               if ( wait === true ? --jQuery.readyWait : jQuery.isReady ) {
-                       return;
-               }
-
-               // Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443).
-               if ( !document.body ) {
-                       return setTimeout( jQuery.ready );
-               }
-
-               // Remember that the DOM is ready
-               jQuery.isReady = true;
-
-               // If a normal DOM Ready event fired, decrement, and wait if need be
-               if ( wait !== true && --jQuery.readyWait > 0 ) {
-                       return;
-               }
-
-               // If there are functions bound, to execute
-               readyList.resolveWith( document, [ jQuery ] );
-
-               // Trigger any bound ready events
-               if ( jQuery.fn.trigger ) {
-                       jQuery( document ).trigger("ready").off("ready");
-               }
-       },
-
-       // See test/unit/core.js for details concerning isFunction.
-       // Since version 1.3, DOM methods and functions like alert
-       // aren't supported. They return false on IE (#2968).
-       isFunction: function( obj ) {
-               return jQuery.type(obj) === "function";
-       },
-
-       isArray: Array.isArray || function( obj ) {
-               return jQuery.type(obj) === "array";
-       },
-
-       isWindow: function( obj ) {
-               /* jshint eqeqeq: false */
-               return obj != null && obj == obj.window;
-       },
-
-       isNumeric: function( obj ) {
-               return !isNaN( parseFloat(obj) ) && isFinite( obj );
-       },
-
-       type: function( obj ) {
-               if ( obj == null ) {
-                       return String( obj );
-               }
-               return typeof obj === "object" || typeof obj === "function" ?
-                       class2type[ core_toString.call(obj) ] || "object" :
-                       typeof obj;
-       },
-
-       isPlainObject: function( obj ) {
-               var key;
-
-               // Must be an Object.
-               // Because of IE, we also have to check the presence of the constructor property.
-               // Make sure that DOM nodes and window objects don't pass through, as well
-               if ( !obj || jQuery.type(obj) !== "object" || obj.nodeType || jQuery.isWindow( obj ) ) {
-                       return false;
-               }
-
-               try {
-                       // Not own constructor property must be Object
-                       if ( obj.constructor &&
-                               !core_hasOwn.call(obj, "constructor") &&
-                               !core_hasOwn.call(obj.constructor.prototype, "isPrototypeOf") ) {
-                               return false;
-                       }
-               } catch ( e ) {
-                       // IE8,9 Will throw exceptions on certain host objects #9897
-                       return false;
-               }
-
-               // Support: IE<9
-               // Handle iteration over inherited properties before own properties.
-               if ( jQuery.support.ownLast ) {
-                       for ( key in obj ) {
-                               return core_hasOwn.call( obj, key );
-                       }
-               }
-
-               // Own properties are enumerated firstly, so to speed up,
-               // if last one is own, then all properties are own.
-               for ( key in obj ) {}
-
-               return key === undefined || core_hasOwn.call( obj, key );
-       },
-
-       isEmptyObject: function( obj ) {
-               var name;
-               for ( name in obj ) {
-                       return false;
-               }
-               return true;
-       },
-
-       error: function( msg ) {
-               throw new Error( msg );
-       },
-
-       // data: string of html
-       // context (optional): If specified, the fragment will be created in this context, defaults to document
-       // keepScripts (optional): If true, will include scripts passed in the html string
-       parseHTML: function( data, context, keepScripts ) {
-               if ( !data || typeof data !== "string" ) {
-                       return null;
-               }
-               if ( typeof context === "boolean" ) {
-                       keepScripts = context;
-                       context = false;
-               }
-               context = context || document;
-
-               var parsed = rsingleTag.exec( data ),
-                       scripts = !keepScripts && [];
-
-               // Single tag
-               if ( parsed ) {
-                       return [ context.createElement( parsed[1] ) ];
-               }
-
-               parsed = jQuery.buildFragment( [ data ], context, scripts );
-               if ( scripts ) {
-                       jQuery( scripts ).remove();
-               }
-               return jQuery.merge( [], parsed.childNodes );
-       },
-
-       parseJSON: function( data ) {
-               // Attempt to parse using the native JSON parser first
-               if ( window.JSON && window.JSON.parse ) {
-                       return window.JSON.parse( data );
-               }
-
-               if ( data === null ) {
-                       return data;
-               }
-
-               if ( typeof data === "string" ) {
-
-                       // Make sure leading/trailing whitespace is removed (IE can't handle it)
-                       data = jQuery.trim( data );
-
-                       if ( data ) {
-                               // Make sure the incoming data is actual JSON
-                               // Logic borrowed from http://json.org/json2.js
-                               if ( rvalidchars.test( data.replace( rvalidescape, "@" )
-                                       .replace( rvalidtokens, "]" )
-                                       .replace( rvalidbraces, "")) ) {
-
-                                       return ( new Function( "return " + data ) )();
-                               }
-                       }
-               }
-
-               jQuery.error( "Invalid JSON: " + data );
-       },
-
-       // Cross-browser xml parsing
-       parseXML: function( data ) {
-               var xml, tmp;
-               if ( !data || typeof data !== "string" ) {
-                       return null;
-               }
-               try {
-                       if ( window.DOMParser ) { // Standard
-                               tmp = new DOMParser();
-                               xml = tmp.parseFromString( data , "text/xml" );
-                       } else { // IE
-                               xml = new ActiveXObject( "Microsoft.XMLDOM" );
-                               xml.async = "false";
-                               xml.loadXML( data );
-                       }
-               } catch( e ) {
-                       xml = undefined;
-               }
-               if ( !xml || !xml.documentElement || xml.getElementsByTagName( "parsererror" ).length ) {
-                       jQuery.error( "Invalid XML: " + data );
-               }
-               return xml;
-       },
-
-       noop: function() {},
-
-       // Evaluates a script in a global context
-       // Workarounds based on findings by Jim Driscoll
-       // http://weblogs.java.net/blog/driscoll/archive/2009/09/08/eval-javascript-global-context
-       globalEval: function( data ) {
-               if ( data && jQuery.trim( data ) ) {
-                       // We use execScript on Internet Explorer
-                       // We use an anonymous function so that context is window
-                       // rather than jQuery in Firefox
-                       ( window.execScript || function( data ) {
-                               window[ "eval" ].call( window, data );
-                       } )( data );
-               }
-       },
-
-       // Convert dashed to camelCase; used by the css and data modules
-       // Microsoft forgot to hump their vendor prefix (#9572)
-       camelCase: function( string ) {
-               return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase );
-       },
-
-       nodeName: function( elem, name ) {
-               return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();
-       },
-
-       // args is for internal usage only
-       each: function( obj, callback, args ) {
-               var value,
-                       i = 0,
-                       length = obj.length,
-                       isArray = isArraylike( obj );
-
-               if ( args ) {
-                       if ( isArray ) {
-                               for ( ; i < length; i++ ) {
-                                       value = callback.apply( obj[ i ], args );
-
-                                       if ( value === false ) {
-                                               break;
-                                       }
-                               }
-                       } else {
-                               for ( i in obj ) {
-                                       value = callback.apply( obj[ i ], args );
-
-                                       if ( value === false ) {
-                                               break;
-                                       }
-                               }
-                       }
-
-               // A special, fast, case for the most common use of each
-               } else {
-                       if ( isArray ) {
-                               for ( ; i < length; i++ ) {
-                                       value = callback.call( obj[ i ], i, obj[ i ] );
-
-                                       if ( value === false ) {
-                                               break;
-                                       }
-                               }
-                       } else {
-                               for ( i in obj ) {
-                                       value = callback.call( obj[ i ], i, obj[ i ] );
-
-                                       if ( value === false ) {
-                                               break;
-                                       }
-                               }
-                       }
-               }
-
-               return obj;
-       },
-
-       // Use native String.trim function wherever possible
-       trim: core_trim && !core_trim.call("\uFEFF\xA0") ?
-               function( text ) {
-                       return text == null ?
-                               "" :
-                               core_trim.call( text );
-               } :
-
-               // Otherwise use our own trimming functionality
-               function( text ) {
-                       return text == null ?
-                               "" :
-                               ( text + "" ).replace( rtrim, "" );
-               },
-
-       // results is for internal usage only
-       makeArray: function( arr, results ) {
-               var ret = results || [];
-
-               if ( arr != null ) {
-                       if ( isArraylike( Object(arr) ) ) {
-                               jQuery.merge( ret,
-                                       typeof arr === "string" ?
-                                       [ arr ] : arr
-                               );
-                       } else {
-                               core_push.call( ret, arr );
-                       }
-               }
-
-               return ret;
-       },
-
-       inArray: function( elem, arr, i ) {
-               var len;
-
-               if ( arr ) {
-                       if ( core_indexOf ) {
-                               return core_indexOf.call( arr, elem, i );
-                       }
-
-                       len = arr.length;
-                       i = i ? i < 0 ? Math.max( 0, len + i ) : i : 0;
-
-                       for ( ; i < len; i++ ) {
-                               // Skip accessing in sparse arrays
-                               if ( i in arr && arr[ i ] === elem ) {
-                                       return i;
-                               }
-                       }
-               }
-
-               return -1;
-       },
-
-       merge: function( first, second ) {
-               var l = second.length,
-                       i = first.length,
-                       j = 0;
-
-               if ( typeof l === "number" ) {
-                       for ( ; j < l; j++ ) {
-                               first[ i++ ] = second[ j ];
-                       }
-               } else {
-                       while ( second[j] !== undefined ) {
-                               first[ i++ ] = second[ j++ ];
-                       }
-               }
-
-               first.length = i;
-
-               return first;
-       },
-
-       grep: function( elems, callback, inv ) {
-               var retVal,
-                       ret = [],
-                       i = 0,
-                       length = elems.length;
-               inv = !!inv;
-
-               // Go through the array, only saving the items
-               // that pass the validator function
-               for ( ; i < length; i++ ) {
-                       retVal = !!callback( elems[ i ], i );
-                       if ( inv !== retVal ) {
-                               ret.push( elems[ i ] );
-                       }
-               }
-
-               return ret;
-       },
-
-       // arg is for internal usage only
-       map: function( elems, callback, arg ) {
-               var value,
-                       i = 0,
-                       length = elems.length,
-                       isArray = isArraylike( elems ),
-                       ret = [];
-
-               // Go through the array, translating each of the items to their
-               if ( isArray ) {
-                       for ( ; i < length; i++ ) {
-                               value = callback( elems[ i ], i, arg );
-
-                               if ( value != null ) {
-                                       ret[ ret.length ] = value;
-                               }
-                       }
-
-               // Go through every key on the object,
-               } else {
-                       for ( i in elems ) {
-                               value = callback( elems[ i ], i, arg );
-
-                               if ( value != null ) {
-                                       ret[ ret.length ] = value;
-                               }
-                       }
-               }
-
-               // Flatten any nested arrays
-               return core_concat.apply( [], ret );
-       },
-
-       // A global GUID counter for objects
-       guid: 1,
-
-       // Bind a function to a context, optionally partially applying any
-       // arguments.
-       proxy: function( fn, context ) {
-               var args, proxy, tmp;
-
-               if ( typeof context === "string" ) {
-                       tmp = fn[ context ];
-                       context = fn;
-                       fn = tmp;
-               }
-
-               // Quick check to determine if target is callable, in the spec
-               // this throws a TypeError, but we will just return undefined.
-               if ( !jQuery.isFunction( fn ) ) {
-                       return undefined;
-               }
-
-               // Simulated bind
-               args = core_slice.call( arguments, 2 );
-               proxy = function() {
-                       return fn.apply( context || this, args.concat( core_slice.call( arguments ) ) );
-               };
-
-               // Set the guid of unique handler to the same of original handler, so it can be removed
-               proxy.guid = fn.guid = fn.guid || jQuery.guid++;
-
-               return proxy;
-       },
-
-       // Multifunctional method to get and set values of a collection
-       // The value/s can optionally be executed if it's a function
-       access: function( elems, fn, key, value, chainable, emptyGet, raw ) {
-               var i = 0,
-                       length = elems.length,
-                       bulk = key == null;
-
-               // Sets many values
-               if ( jQuery.type( key ) === "object" ) {
-                       chainable = true;
-                       for ( i in key ) {
-                               jQuery.access( elems, fn, i, key[i], true, emptyGet, raw );
-                       }
-
-               // Sets one value
-               } else if ( value !== undefined ) {
-                       chainable = true;
-
-                       if ( !jQuery.isFunction( value ) ) {
-                               raw = true;
-                       }
-
-                       if ( bulk ) {
-                               // Bulk operations run against the entire set
-                               if ( raw ) {
-                                       fn.call( elems, value );
-                                       fn = null;
-
-                               // ...except when executing function values
-                               } else {
-                                       bulk = fn;
-                                       fn = function( elem, key, value ) {
-                                               return bulk.call( jQuery( elem ), value );
-                                       };
-                               }
-                       }
-
-                       if ( fn ) {
-                               for ( ; i < length; i++ ) {
-                                       fn( elems[i], key, raw ? value : value.call( elems[i], i, fn( elems[i], key ) ) );
-                               }
-                       }
-               }
-
-               return chainable ?
-                       elems :
-
-                       // Gets
-                       bulk ?
-                               fn.call( elems ) :
-                               length ? fn( elems[0], key ) : emptyGet;
-       },
-
-       now: function() {
-               return ( new Date() ).getTime();
-       },
-
-       // A method for quickly swapping in/out CSS properties to get correct calculations.
-       // Note: this method belongs to the css module but it's needed here for the support module.
-       // If support gets modularized, this method should be moved back to the css module.
-       swap: function( elem, options, callback, args ) {
-               var ret, name,
-                       old = {};
-
-               // Remember the old values, and insert the new ones
-               for ( name in options ) {
-                       old[ name ] = elem.style[ name ];
-                       elem.style[ name ] = options[ name ];
-               }
-
-               ret = callback.apply( elem, args || [] );
-
-               // Revert the old values
-               for ( name in options ) {
-                       elem.style[ name ] = old[ name ];
-               }
-
-               return ret;
-       }
-});
-
-jQuery.ready.promise = function( obj ) {
-       if ( !readyList ) {
-
-               readyList = jQuery.Deferred();
-
-               // Catch cases where $(document).ready() is called after the browser event has already occurred.
-               // we once tried to use readyState "interactive" here, but it caused issues like the one
-               // discovered by ChrisS here: http://bugs.jquery.com/ticket/12282#comment:15
-               if ( document.readyState === "complete" ) {
-                       // Handle it asynchronously to allow scripts the opportunity to delay ready
-                       setTimeout( jQuery.ready );
-
-               // Standards-based browsers support DOMContentLoaded
-               } else if ( document.addEventListener ) {
-                       // Use the handy event callback
-                       document.addEventListener( "DOMContentLoaded", completed, false );
-
-                       // A fallback to window.onload, that will always work
-                       window.addEventListener( "load", completed, false );
-
-               // If IE event model is used
-               } else {
-                       // Ensure firing before onload, maybe late but safe also for iframes
-                       document.attachEvent( "onreadystatechange", completed );
-
-                       // A fallback to window.onload, that will always work
-                       window.attachEvent( "onload", completed );
-
-                       // If IE and not a frame
-                       // continually check to see if the document is ready
-                       var top = false;
-
-                       try {
-                               top = window.frameElement == null && document.documentElement;
-                       } catch(e) {}
-
-                       if ( top && top.doScroll ) {
-                               (function doScrollCheck() {
-                                       if ( !jQuery.isReady ) {
-
-                                               try {
-                                                       // Use the trick by Diego Perini
-                                                       // http://javascript.nwbox.com/IEContentLoaded/
-                                                       top.doScroll("left");
-                                               } catch(e) {
-                                                       return setTimeout( doScrollCheck, 50 );
-                                               }
-
-                                               // detach all dom ready events
-                                               detach();
-
-                                               // and execute any waiting functions
-                                               jQuery.ready();
-                                       }
-                               })();
-                       }
-               }
-       }
-       return readyList.promise( obj );
-};
-
-// Populate the class2type map
-jQuery.each("Boolean Number String Function Array Date RegExp Object Error".split(" "), function(i, name) {
-       class2type[ "[object " + name + "]" ] = name.toLowerCase();
-});
-
-function isArraylike( obj ) {
-       var length = obj.length,
-               type = jQuery.type( obj );
-
-       if ( jQuery.isWindow( obj ) ) {
-               return false;
-       }
-
-       if ( obj.nodeType === 1 && length ) {
-               return true;
-       }
-
-       return type === "array" || type !== "function" &&
-               ( length === 0 ||
-               typeof length === "number" && length > 0 && ( length - 1 ) in obj );
-}
-
-// All jQuery objects should point back to these
-rootjQuery = jQuery(document);
-/*!
- * Sizzle CSS Selector Engine v1.10.2
- * http://sizzlejs.com/
- *
- * Copyright 2013 jQuery Foundation, Inc. and other contributors
- * Released under the MIT license
- * http://jquery.org/license
- *
- * Date: 2013-07-03
- */
-(function( window, undefined ) {
-
-var i,
-       support,
-       cachedruns,
-       Expr,
-       getText,
-       isXML,
-       compile,
-       outermostContext,
-       sortInput,
-
-       // Local document vars
-       setDocument,
-       document,
-       docElem,
-       documentIsHTML,
-       rbuggyQSA,
-       rbuggyMatches,
-       matches,
-       contains,
-
-       // Instance-specific data
-       expando = "sizzle" + -(new Date()),
-       preferredDoc = window.document,
-       dirruns = 0,
-       done = 0,
-       classCache = createCache(),
-       tokenCache = createCache(),
-       compilerCache = createCache(),
-       hasDuplicate = false,
-       sortOrder = function( a, b ) {
-               if ( a === b ) {
-                       hasDuplicate = true;
-                       return 0;
-               }
-               return 0;
-       },
-
-       // General-purpose constants
-       strundefined = typeof undefined,
-       MAX_NEGATIVE = 1 << 31,
-
-       // Instance methods
-       hasOwn = ({}).hasOwnProperty,
-       arr = [],
-       pop = arr.pop,
-       push_native = arr.push,
-       push = arr.push,
-       slice = arr.slice,
-       // Use a stripped-down indexOf if we can't use a native one
-       indexOf = arr.indexOf || function( elem ) {
-               var i = 0,
-                       len = this.length;
-               for ( ; i < len; i++ ) {
-                       if ( this[i] === elem ) {
-                               return i;
-                       }
-               }
-               return -1;
-       },
-
-       booleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",
-
-       // Regular expressions
-
-       // Whitespace characters http://www.w3.org/TR/css3-selectors/#whitespace
-       whitespace = "[\\x20\\t\\r\\n\\f]",
-       // http://www.w3.org/TR/css3-syntax/#characters
-       characterEncoding = "(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",
-
-       // Loosely modeled on CSS identifier characters
-       // An unquoted value should be a CSS identifier http://www.w3.org/TR/css3-selectors/#attribute-selectors
-       // Proper syntax: http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier
-       identifier = characterEncoding.replace( "w", "w#" ),
-
-       // Acceptable operators http://www.w3.org/TR/selectors/#attribute-selectors
-       attributes = "\\[" + whitespace + "*(" + characterEncoding + ")" + whitespace +
-               "*(?:([*^$|!~]?=)" + whitespace + "*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|(" + identifier + ")|)|)" + whitespace + "*\\]",
-
-       // Prefer arguments quoted,
-       //   then not containing pseudos/brackets,
-       //   then attribute selectors/non-parenthetical expressions,
-       //   then anything else
-       // These preferences are here to reduce the number of selectors
-       //   needing tokenize in the PSEUDO preFilter
-       pseudos = ":(" + characterEncoding + ")(?:\\(((['\"])((?:\\\\.|[^\\\\])*?)\\3|((?:\\\\.|[^\\\\()[\\]]|" + attributes.replace( 3, 8 ) + ")*)|.*)\\)|)",
-
-       // Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter
-       rtrim = new RegExp( "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$", "g" ),
-
-       rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ),
-       rcombinators = new RegExp( "^" + whitespace + "*([>+~]|" + whitespace + ")" + whitespace + "*" ),
-
-       rsibling = new RegExp( whitespace + "*[+~]" ),
-       rattributeQuotes = new RegExp( "=" + whitespace + "*([^\\]'\"]*)" + whitespace + "*\\]", "g" ),
-
-       rpseudo = new RegExp( pseudos ),
-       ridentifier = new RegExp( "^" + identifier + "$" ),
-
-       matchExpr = {
-               "ID": new RegExp( "^#(" + characterEncoding + ")" ),
-               "CLASS": new RegExp( "^\\.(" + characterEncoding + ")" ),
-               "TAG": new RegExp( "^(" + characterEncoding.replace( "w", "w*" ) + ")" ),
-               "ATTR": new RegExp( "^" + attributes ),
-               "PSEUDO": new RegExp( "^" + pseudos ),
-               "CHILD": new RegExp( "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + whitespace +
-                       "*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + whitespace +
-                       "*(\\d+)|))" + whitespace + "*\\)|)", "i" ),
-               "bool": new RegExp( "^(?:" + booleans + ")$", "i" ),
-               // For use in libraries implementing .is()
-               // We use this for POS matching in `select`
-               "needsContext": new RegExp( "^" + whitespace + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" +
-                       whitespace + "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i" )
-       },
-
-       rnative = /^[^{]+\{\s*\[native \w/,
-
-       // Easily-parseable/retrievable ID or TAG or CLASS selectors
-       rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,
-
-       rinputs = /^(?:input|select|textarea|button)$/i,
-       rheader = /^h\d$/i,
-
-       rescape = /'|\\/g,
-
-       // CSS escapes http://www.w3.org/TR/CSS21/syndata.html#escaped-characters
-       runescape = new RegExp( "\\\\([\\da-f]{1,6}" + whitespace + "?|(" + whitespace + ")|.)", "ig" ),
-       funescape = function( _, escaped, escapedWhitespace ) {
-               var high = "0x" + escaped - 0x10000;
-               // NaN means non-codepoint
-               // Support: Firefox
-               // Workaround erroneous numeric interpretation of +"0x"
-               return high !== high || escapedWhitespace ?
-                       escaped :
-                       // BMP codepoint
-                       high < 0 ?
-                               String.fromCharCode( high + 0x10000 ) :
-                               // Supplemental Plane codepoint (surrogate pair)
-                               String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );
-       };
-
-// Optimize for push.apply( _, NodeList )
-try {
-       push.apply(
-               (arr = slice.call( preferredDoc.childNodes )),
-               preferredDoc.childNodes
-       );
-       // Support: Android<4.0
-       // Detect silently failing push.apply
-       arr[ preferredDoc.childNodes.length ].nodeType;
-} catch ( e ) {
-       push = { apply: arr.length ?
-
-               // Leverage slice if possible
-               function( target, els ) {
-                       push_native.apply( target, slice.call(els) );
-               } :
-
-               // Support: IE<9
-               // Otherwise append directly
-               function( target, els ) {
-                       var j = target.length,
-                               i = 0;
-                       // Can't trust NodeList.length
-                       while ( (target[j++] = els[i++]) ) {}
-                       target.length = j - 1;
-               }
-       };
-}
-
-function Sizzle( selector, context, results, seed ) {
-       var match, elem, m, nodeType,
-               // QSA vars
-               i, groups, old, nid, newContext, newSelector;
-
-       if ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) {
-               setDocument( context );
-       }
-
-       context = context || document;
-       results = results || [];
-
-       if ( !selector || typeof selector !== "string" ) {
-               return results;
-       }
-
-       if ( (nodeType = context.nodeType) !== 1 && nodeType !== 9 ) {
-               return [];
-       }
-
-       if ( documentIsHTML && !seed ) {
-
-               // Shortcuts
-               if ( (match = rquickExpr.exec( selector )) ) {
-                       // Speed-up: Sizzle("#ID")
-                       if ( (m = match[1]) ) {
-                               if ( nodeType === 9 ) {
-                                       elem = context.getElementById( m );
-                                       // Check parentNode to catch when Blackberry 4.6 returns
-                                       // nodes that are no longer in the document #6963
-                                       if ( elem && elem.parentNode ) {
-                                               // Handle the case where IE, Opera, and Webkit return items
-                                               // by name instead of ID
-                                               if ( elem.id === m ) {
-                                                       results.push( elem );
-                                                       return results;
-                                               }
-                                       } else {
-                                               return results;
-                                       }
-                               } else {
-                                       // Context is not a document
-                                       if ( context.ownerDocument && (elem = context.ownerDocument.getElementById( m )) &&
-                                               contains( context, elem ) && elem.id === m ) {
-                                               results.push( elem );
-                                               return results;
-                                       }
-                               }
-
-                       // Speed-up: Sizzle("TAG")
-                       } else if ( match[2] ) {
-                               push.apply( results, context.getElementsByTagName( selector ) );
-                               return results;
-
-                       // Speed-up: Sizzle(".CLASS")
-                       } else if ( (m = match[3]) && support.getElementsByClassName && context.getElementsByClassName ) {
-                               push.apply( results, context.getElementsByClassName( m ) );
-                               return results;
-                       }
-               }
-
-               // QSA path
-               if ( support.qsa && (!rbuggyQSA || !rbuggyQSA.test( selector )) ) {
-                       nid = old = expando;
-                       newContext = context;
-                       newSelector = nodeType === 9 && selector;
-
-                       // qSA works strangely on Element-rooted queries
-                       // We can work around this by specifying an extra ID on the root
-                       // and working up from there (Thanks to Andrew Dupont for the technique)
-                       // IE 8 doesn't work on object elements
-                       if ( nodeType === 1 && context.nodeName.toLowerCase() !== "object" ) {
-                               groups = tokenize( selector );
-
-                               if ( (old = context.getAttribute("id")) ) {
-                                       nid = old.replace( rescape, "\\$&" );
-                               } else {
-                                       context.setAttribute( "id", nid );
-                               }
-                               nid = "[id='" + nid + "'] ";
-
-                               i = groups.length;
-                               while ( i-- ) {
-                                       groups[i] = nid + toSelector( groups[i] );
-                               }
-                               newContext = rsibling.test( selector ) && context.parentNode || context;
-                               newSelector = groups.join(",");
-                       }
-
-                       if ( newSelector ) {
-                               try {
-                                       push.apply( results,
-                                               newContext.querySelectorAll( newSelector )
-                                       );
-                                       return results;
-                               } catch(qsaError) {
-                               } finally {
-                                       if ( !old ) {
-                                               context.removeAttribute("id");
-                                       }
-                               }
-                       }
-               }
-       }
-
-       // All others
-       return select( selector.replace( rtrim, "$1" ), context, results, seed );
-}
-
-/**
- * Create key-value caches of limited size
- * @returns {Function(string, Object)} Returns the Object data after storing it on itself with
- *     property name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength)
- *     deleting the oldest entry
- */
-function createCache() {
-       var keys = [];
-
-       function cache( key, value ) {
-               // Use (key + " ") to avoid collision with native prototype properties (see Issue #157)
-               if ( keys.push( key += " " ) > Expr.cacheLength ) {
-                       // Only keep the most recent entries
-                       delete cache[ keys.shift() ];
-               }
-               return (cache[ key ] = value);
-       }
-       return cache;
-}
-
-/**
- * Mark a function for special use by Sizzle
- * @param {Function} fn The function to mark
- */
-function markFunction( fn ) {
-       fn[ expando ] = true;
-       return fn;
-}
-
-/**
- * Support testing using an element
- * @param {Function} fn Passed the created div and expects a boolean result
- */
-function assert( fn ) {
-       var div = document.createElement("div");
-
-       try {
-               return !!fn( div );
-       } catch (e) {
-               return false;
-       } finally {
-               // Remove from its parent by default
-               if ( div.parentNode ) {
-                       div.parentNode.removeChild( div );
-               }
-               // release memory in IE
-               div = null;
-       }
-}
-
-/**
- * Adds the same handler for all of the specified attrs
- * @param {String} attrs Pipe-separated list of attributes
- * @param {Function} handler The method that will be applied
- */
-function addHandle( attrs, handler ) {
-       var arr = attrs.split("|"),
-               i = attrs.length;
-
-       while ( i-- ) {
-               Expr.attrHandle[ arr[i] ] = handler;
-       }
-}
-
-/**
- * Checks document order of two siblings
- * @param {Element} a
- * @param {Element} b
- * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b
- */
-function siblingCheck( a, b ) {
-       var cur = b && a,
-               diff = cur && a.nodeType === 1 && b.nodeType === 1 &&
-                       ( ~b.sourceIndex || MAX_NEGATIVE ) -
-                       ( ~a.sourceIndex || MAX_NEGATIVE );
-
-       // Use IE sourceIndex if available on both nodes
-       if ( diff ) {
-               return diff;
-       }
-
-       // Check if b follows a
-       if ( cur ) {
-               while ( (cur = cur.nextSibling) ) {
-                       if ( cur === b ) {
-                               return -1;
-                       }
-               }
-       }
-
-       return a ? 1 : -1;
-}
-
-/**
- * Returns a function to use in pseudos for input types
- * @param {String} type
- */
-function createInputPseudo( type ) {
-       return function( elem ) {
-               var name = elem.nodeName.toLowerCase();
-               return name === "input" && elem.type === type;
-       };
-}
-
-/**
- * Returns a function to use in pseudos for buttons
- * @param {String} type
- */
-function createButtonPseudo( type ) {
-       return function( elem ) {
-               var name = elem.nodeName.toLowerCase();
-               return (name === "input" || name === "button") && elem.type === type;
-       };
-}
-
-/**
- * Returns a function to use in pseudos for positionals
- * @param {Function} fn
- */
-function createPositionalPseudo( fn ) {
-       return markFunction(function( argument ) {
-               argument = +argument;
-               return markFunction(function( seed, matches ) {
-                       var j,
-                               matchIndexes = fn( [], seed.length, argument ),
-                               i = matchIndexes.length;
-
-                       // Match elements found at the specified indexes
-                       while ( i-- ) {
-                               if ( seed[ (j = matchIndexes[i]) ] ) {
-                                       seed[j] = !(matches[j] = seed[j]);
-                               }
-                       }
-               });
-       });
-}
-
-/**
- * Detect xml
- * @param {Element|Object} elem An element or a document
- */
-isXML = Sizzle.isXML = function( elem ) {
-       // documentElement is verified for cases where it doesn't yet exist
-       // (such as loading iframes in IE - #4833)
-       var documentElement = elem && (elem.ownerDocument || elem).documentElement;
-       return documentElement ? documentElement.nodeName !== "HTML" : false;
-};
-
-// Expose support vars for convenience
-support = Sizzle.support = {};
-
-/**
- * Sets document-related variables once based on the current document
- * @param {Element|Object} [doc] An element or document object to use to set the document
- * @returns {Object} Returns the current document
- */
-setDocument = Sizzle.setDocument = function( node ) {
-       var doc = node ? node.ownerDocument || node : preferredDoc,
-               parent = doc.defaultView;
-
-       // If no document and documentElement is available, return
-       if ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) {
-               return document;
-       }
-
-       // Set our document
-       document = doc;
-       docElem = doc.documentElement;
-
-       // Support tests
-       documentIsHTML = !isXML( doc );
-
-       // Support: IE>8
-       // If iframe document is assigned to "document" variable and if iframe has been reloaded,
-       // IE will throw "permission denied" error when accessing "document" variable, see jQuery #13936
-       // IE6-8 do not support the defaultView property so parent will be undefined
-       if ( parent && parent.attachEvent && parent !== parent.top ) {
-               parent.attachEvent( "onbeforeunload", function() {
-                       setDocument();
-               });
-       }
-
-       /* Attributes
-       ---------------------------------------------------------------------- */
-
-       // Support: IE<8
-       // Verify that getAttribute really returns attributes and not properties (excepting IE8 booleans)
-       support.attributes = assert(function( div ) {
-               div.className = "i";
-               return !div.getAttribute("className");
-       });
-
-       /* getElement(s)By*
-       ---------------------------------------------------------------------- */
-
-       // Check if getElementsByTagName("*") returns only elements
-       support.getElementsByTagName = assert(function( div ) {
-               div.appendChild( doc.createComment("") );
-               return !div.getElementsByTagName("*").length;
-       });
-
-       // Check if getElementsByClassName can be trusted
-       support.getElementsByClassName = assert(function( div ) {
-               div.innerHTML = "<div class='a'></div><div class='a i'></div>";
-
-               // Support: Safari<4
-               // Catch class over-caching
-               div.firstChild.className = "i";
-               // Support: Opera<10
-               // Catch gEBCN failure to find non-leading classes
-               return div.getElementsByClassName("i").length === 2;
-       });
-
-       // Support: IE<10
-       // Check if getElementById returns elements by name
-       // The broken getElementById methods don't pick up programatically-set names,
-       // so use a roundabout getElementsByName test
-       support.getById = assert(function( div ) {
-               docElem.appendChild( div ).id = expando;
-               return !doc.getElementsByName || !doc.getElementsByName( expando ).length;
-       });
-
-       // ID find and filter
-       if ( support.getById ) {
-               Expr.find["ID"] = function( id, context ) {
-                       if ( typeof context.getElementById !== strundefined && documentIsHTML ) {
-                               var m = context.getElementById( id );
-                               // Check parentNode to catch when Blackberry 4.6 returns
-                               // nodes that are no longer in the document #6963
-                               return m && m.parentNode ? [m] : [];
-                       }
-               };
-               Expr.filter["ID"] = function( id ) {
-                       var attrId = id.replace( runescape, funescape );
-                       return function( elem ) {
-                               return elem.getAttribute("id") === attrId;
-                       };
-               };
-       } else {
-               // Support: IE6/7
-               // getElementById is not reliable as a find shortcut
-               delete Expr.find["ID"];
-
-               Expr.filter["ID"] =  function( id ) {
-                       var attrId = id.replace( runescape, funescape );
-                       return function( elem ) {
-                               var node = typeof elem.getAttributeNode !== strundefined && elem.getAttributeNode("id");
-                               return node && node.value === attrId;
-                       };
-               };
-       }
-
-       // Tag
-       Expr.find["TAG"] = support.getElementsByTagName ?
-               function( tag, context ) {
-                       if ( typeof context.getElementsByTagName !== strundefined ) {
-                               return context.getElementsByTagName( tag );
-                       }
-               } :
-               function( tag, context ) {
-                       var elem,
-                               tmp = [],
-                               i = 0,
-                               results = context.getElementsByTagName( tag );
-
-                       // Filter out possible comments
-                       if ( tag === "*" ) {
-                               while ( (elem = results[i++]) ) {
-                                       if ( elem.nodeType === 1 ) {
-                                               tmp.push( elem );
-                                       }
-                               }
-
-                               return tmp;
-                       }
-                       return results;
-               };
-
-       // Class
-       Expr.find["CLASS"] = support.getElementsByClassName && function( className, context ) {
-               if ( typeof context.getElementsByClassName !== strundefined && documentIsHTML ) {
-                       return context.getElementsByClassName( className );
-               }
-       };
-
-       /* QSA/matchesSelector
-       ---------------------------------------------------------------------- */
-
-       // QSA and matchesSelector support
-
-       // matchesSelector(:active) reports false when true (IE9/Opera 11.5)
-       rbuggyMatches = [];
-
-       // qSa(:focus) reports false when true (Chrome 21)
-       // We allow this because of a bug in IE8/9 that throws an error
-       // whenever `document.activeElement` is accessed on an iframe
-       // So, we allow :focus to pass through QSA all the time to avoid the IE error
-       // See http://bugs.jquery.com/ticket/13378
-       rbuggyQSA = [];
-
-       if ( (support.qsa = rnative.test( doc.querySelectorAll )) ) {
-               // Build QSA regex
-               // Regex strategy adopted from Diego Perini
-               assert(function( div ) {
-                       // Select is set to empty string on purpose
-                       // This is to test IE's treatment of not explicitly
-                       // setting a boolean content attribute,
-                       // since its presence should be enough
-                       // http://bugs.jquery.com/ticket/12359
-                       div.innerHTML = "<select><option selected=''></option></select>";
-
-                       // Support: IE8
-                       // Boolean attributes and "value" are not treated correctly
-                       if ( !div.querySelectorAll("[selected]").length ) {
-                               rbuggyQSA.push( "\\[" + whitespace + "*(?:value|" + booleans + ")" );
-                       }
-
-                       // Webkit/Opera - :checked should return selected option elements
-                       // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked
-                       // IE8 throws error here and will not see later tests
-                       if ( !div.querySelectorAll(":checked").length ) {
-                               rbuggyQSA.push(":checked");
-                       }
-               });
-
-               assert(function( div ) {
-
-                       // Support: Opera 10-12/IE8
-                       // ^= $= *= and empty values
-                       // Should not select anything
-                       // Support: Windows 8 Native Apps
-                       // The type attribute is restricted during .innerHTML assignment
-                       var input = doc.createElement("input");
-                       input.setAttribute( "type", "hidden" );
-                       div.appendChild( input ).setAttribute( "t", "" );
-
-                       if ( div.querySelectorAll("[t^='']").length ) {
-                               rbuggyQSA.push( "[*^$]=" + whitespace + "*(?:''|\"\")" );
-                       }
-
-                       // FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled)
-                       // IE8 throws error here and will not see later tests
-                       if ( !div.querySelectorAll(":enabled").length ) {
-                               rbuggyQSA.push( ":enabled", ":disabled" );
-                       }
-
-                       // Opera 10-11 does not throw on post-comma invalid pseudos
-                       div.querySelectorAll("*,:x");
-                       rbuggyQSA.push(",.*:");
-               });
-       }
-
-       if ( (support.matchesSelector = rnative.test( (matches = docElem.webkitMatchesSelector ||
-               docElem.mozMatchesSelector ||
-               docElem.oMatchesSelector ||
-               docElem.msMatchesSelector) )) ) {
-
-               assert(function( div ) {
-                       // Check to see if it's possible to do matchesSelector
-                       // on a disconnected node (IE 9)
-                       support.disconnectedMatch = matches.call( div, "div" );
-
-                       // This should fail with an exception
-                       // Gecko does not error, returns false instead
-                       matches.call( div, "[s!='']:x" );
-                       rbuggyMatches.push( "!=", pseudos );
-               });
-       }
-
-       rbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join("|") );
-       rbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join("|") );
-
-       /* Contains
-       ---------------------------------------------------------------------- */
-
-       // Element contains another
-       // Purposefully does not implement inclusive descendent
-       // As in, an element does not contain itself
-       contains = rnative.test( docElem.contains ) || docElem.compareDocumentPosition ?
-               function( a, b ) {
-                       var adown = a.nodeType === 9 ? a.documentElement : a,
-                               bup = b && b.parentNode;
-                       return a === bup || !!( bup && bup.nodeType === 1 && (
-                               adown.contains ?
-                                       adown.contains( bup ) :
-                                       a.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16
-                       ));
-               } :
-               function( a, b ) {
-                       if ( b ) {
-                               while ( (b = b.parentNode) ) {
-                                       if ( b === a ) {
-                                               return true;
-                                       }
-                               }
-                       }
-                       return false;
-               };
-
-       /* Sorting
-       ---------------------------------------------------------------------- */
-
-       // Document order sorting
-       sortOrder = docElem.compareDocumentPosition ?
-       function( a, b ) {
-
-               // Flag for duplicate removal
-               if ( a === b ) {
-                       hasDuplicate = true;
-                       return 0;
-               }
-
-               var compare = b.compareDocumentPosition && a.compareDocumentPosition && a.compareDocumentPosition( b );
-
-               if ( compare ) {
-                       // Disconnected nodes
-                       if ( compare & 1 ||
-                               (!support.sortDetached && b.compareDocumentPosition( a ) === compare) ) {
-
-                               // Choose the first element that is related to our preferred document
-                               if ( a === doc || contains(preferredDoc, a) ) {
-                                       return -1;
-                               }
-                               if ( b === doc || contains(preferredDoc, b) ) {
-                                       return 1;
-                               }
-
-                               // Maintain original order
-                               return sortInput ?
-                                       ( indexOf.call( sortInput, a ) - indexOf.call( sortInput, b ) ) :
-                                       0;
-                       }
-
-                       return compare & 4 ? -1 : 1;
-               }
-
-               // Not directly comparable, sort on existence of method
-               return a.compareDocumentPosition ? -1 : 1;
-       } :
-       function( a, b ) {
-               var cur,
-                       i = 0,
-                       aup = a.parentNode,
-                       bup = b.parentNode,
-                       ap = [ a ],
-                       bp = [ b ];
-
-               // Exit early if the nodes are identical
-               if ( a === b ) {
-                       hasDuplicate = true;
-                       return 0;
-
-               // Parentless nodes are either documents or disconnected
-               } else if ( !aup || !bup ) {
-                       return a === doc ? -1 :
-                               b === doc ? 1 :
-                               aup ? -1 :
-                               bup ? 1 :
-                               sortInput ?
-                               ( indexOf.call( sortInput, a ) - indexOf.call( sortInput, b ) ) :
-                               0;
-
-               // If the nodes are siblings, we can do a quick check
-               } else if ( aup === bup ) {
-                       return siblingCheck( a, b );
-               }
-
-               // Otherwise we need full lists of their ancestors for comparison
-               cur = a;
-               while ( (cur = cur.parentNode) ) {
-                       ap.unshift( cur );
-               }
-               cur = b;
-               while ( (cur = cur.parentNode) ) {
-                       bp.unshift( cur );
-               }
-
-               // Walk down the tree looking for a discrepancy
-               while ( ap[i] === bp[i] ) {
-                       i++;
-               }
-
-               return i ?
-                       // Do a sibling check if the nodes have a common ancestor
-                       siblingCheck( ap[i], bp[i] ) :
-
-                       // Otherwise nodes in our document sort first
-                       ap[i] === preferredDoc ? -1 :
-                       bp[i] === preferredDoc ? 1 :
-                       0;
-       };
-
-       return doc;
-};
-
-Sizzle.matches = function( expr, elements ) {
-       return Sizzle( expr, null, null, elements );
-};
-
-Sizzle.matchesSelector = function( elem, expr ) {
-       // Set document vars if needed
-       if ( ( elem.ownerDocument || elem ) !== document ) {
-               setDocument( elem );
-       }
-
-       // Make sure that attribute selectors are quoted
-       expr = expr.replace( rattributeQuotes, "='$1']" );
-
-       if ( support.matchesSelector && documentIsHTML &&
-               ( !rbuggyMatches || !rbuggyMatches.test( expr ) ) &&
-               ( !rbuggyQSA     || !rbuggyQSA.test( expr ) ) ) {
-
-               try {
-                       var ret = matches.call( elem, expr );
-
-                       // IE 9's matchesSelector returns false on disconnected nodes
-                       if ( ret || support.disconnectedMatch ||
-                                       // As well, disconnected nodes are said to be in a document
-                                       // fragment in IE 9
-                                       elem.document && elem.document.nodeType !== 11 ) {
-                               return ret;
-                       }
-               } catch(e) {}
-       }
-
-       return Sizzle( expr, document, null, [elem] ).length > 0;
-};
-
-Sizzle.contains = function( context, elem ) {
-       // Set document vars if needed
-       if ( ( context.ownerDocument || context ) !== document ) {
-               setDocument( context );
-       }
-       return contains( context, elem );
-};
-
-Sizzle.attr = function( elem, name ) {
-       // Set document vars if needed
-       if ( ( elem.ownerDocument || elem ) !== document ) {
-               setDocument( elem );
-       }
-
-       var fn = Expr.attrHandle[ name.toLowerCase() ],
-               // Don't get fooled by Object.prototype properties (jQuery #13807)
-               val = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ?
-                       fn( elem, name, !documentIsHTML ) :
-                       undefined;
-
-       return val === undefined ?
-               support.attributes || !documentIsHTML ?
-                       elem.getAttribute( name ) :
-                       (val = elem.getAttributeNode(name)) && val.specified ?
-                               val.value :
-                               null :
-               val;
-};
-
-Sizzle.error = function( msg ) {
-       throw new Error( "Syntax error, unrecognized expression: " + msg );
-};
-
-/**
- * Document sorting and removing duplicates
- * @param {ArrayLike} results
- */
-Sizzle.uniqueSort = function( results ) {
-       var elem,
-               duplicates = [],
-               j = 0,
-               i = 0;
-
-       // Unless we *know* we can detect duplicates, assume their presence
-       hasDuplicate = !support.detectDuplicates;
-       sortInput = !support.sortStable && results.slice( 0 );
-       results.sort( sortOrder );
-
-       if ( hasDuplicate ) {
-               while ( (elem = results[i++]) ) {
-                       if ( elem === results[ i ] ) {
-                               j = duplicates.push( i );
-                       }
-               }
-               while ( j-- ) {
-                       results.splice( duplicates[ j ], 1 );
-               }
-       }
-
-       return results;
-};
-
-/**
- * Utility function for retrieving the text value of an array of DOM nodes
- * @param {Array|Element} elem
- */
-getText = Sizzle.getText = function( elem ) {
-       var node,
-               ret = "",
-               i = 0,
-               nodeType = elem.nodeType;
-
-       if ( !nodeType ) {
-               // If no nodeType, this is expected to be an array
-               for ( ; (node = elem[i]); i++ ) {
-                       // Do not traverse comment nodes
-                       ret += getText( node );
-               }
-       } else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {
-               // Use textContent for elements
-               // innerText usage removed for consistency of new lines (see #11153)
-               if ( typeof elem.textContent === "string" ) {
-                       return elem.textContent;
-               } else {
-                       // Traverse its children
-                       for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {
-                               ret += getText( elem );
-                       }
-               }
-       } else if ( nodeType === 3 || nodeType === 4 ) {
-               return elem.nodeValue;
-       }
-       // Do not include comment or processing instruction nodes
-
-       return ret;
-};
-
-Expr = Sizzle.selectors = {
-
-       // Can be adjusted by the user
-       cacheLength: 50,
-
-       createPseudo: markFunction,
-
-       match: matchExpr,
-
-       attrHandle: {},
-
-       find: {},
-
-       relative: {
-               ">": { dir: "parentNode", first: true },
-               " ": { dir: "parentNode" },
-               "+": { dir: "previousSibling", first: true },
-               "~": { dir: "previousSibling" }
-       },
-
-       preFilter: {
-               "ATTR": function( match ) {
-                       match[1] = match[1].replace( runescape, funescape );
-
-                       // Move the given value to match[3] whether quoted or unquoted
-                       match[3] = ( match[4] || match[5] || "" ).replace( runescape, funescape );
-
-                       if ( match[2] === "~=" ) {
-                               match[3] = " " + match[3] + " ";
-                       }
-
-                       return match.slice( 0, 4 );
-               },
-
-               "CHILD": function( match ) {
-                       /* matches from matchExpr["CHILD"]
-                               1 type (only|nth|...)
-                               2 what (child|of-type)
-                               3 argument (even|odd|\d*|\d*n([+-]\d+)?|...)
-                               4 xn-component of xn+y argument ([+-]?\d*n|)
-                               5 sign of xn-component
-                               6 x of xn-component
-                               7 sign of y-component
-                               8 y of y-component
-                       */
-                       match[1] = match[1].toLowerCase();
-
-                       if ( match[1].slice( 0, 3 ) === "nth" ) {
-                               // nth-* requires argument
-                               if ( !match[3] ) {
-                                       Sizzle.error( match[0] );
-                               }
-
-                               // numeric x and y parameters for Expr.filter.CHILD
-                               // remember that false/true cast respectively to 0/1
-                               match[4] = +( match[4] ? match[5] + (match[6] || 1) : 2 * ( match[3] === "even" || match[3] === "odd" ) );
-                               match[5] = +( ( match[7] + match[8] ) || match[3] === "odd" );
-
-                       // other types prohibit arguments
-                       } else if ( match[3] ) {
-                               Sizzle.error( match[0] );
-                       }
-
-                       return match;
-               },
-
-               "PSEUDO": function( match ) {
-                       var excess,
-                               unquoted = !match[5] && match[2];
-
-                       if ( matchExpr["CHILD"].test( match[0] ) ) {
-                               return null;
-                       }
-
-                       // Accept quoted arguments as-is
-                       if ( match[3] && match[4] !== undefined ) {
-                               match[2] = match[4];
-
-                       // Strip excess characters from unquoted arguments
-                       } else if ( unquoted && rpseudo.test( unquoted ) &&
-                               // Get excess from tokenize (recursively)
-                               (excess = tokenize( unquoted, true )) &&
-                               // advance to the next closing parenthesis
-                               (excess = unquoted.indexOf( ")", unquoted.length - excess ) - unquoted.length) ) {
-
-                               // excess is a negative index
-                               match[0] = match[0].slice( 0, excess );
-                               match[2] = unquoted.slice( 0, excess );
-                       }
-
-                       // Return only captures needed by the pseudo filter method (type and argument)
-                       return match.slice( 0, 3 );
-               }
-       },
-
-       filter: {
-
-               "TAG": function( nodeNameSelector ) {
-                       var nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase();
-                       return nodeNameSelector === "*" ?
-                               function() { return true; } :
-                               function( elem ) {
-                                       return elem.nodeName && elem.nodeName.toLowerCase() === nodeName;
-                               };
-               },
-
-               "CLASS": function( className ) {
-                       var pattern = classCache[ className + " " ];
-
-                       return pattern ||
-                               (pattern = new RegExp( "(^|" + whitespace + ")" + className + "(" + whitespace + "|$)" )) &&
-                               classCache( className, function( elem ) {
-                                       return pattern.test( typeof elem.className === "string" && elem.className || typeof elem.getAttribute !== strundefined && elem.getAttribute("class") || "" );
-                               });
-               },
-
-               "ATTR": function( name, operator, check ) {
-                       return function( elem ) {
-                               var result = Sizzle.attr( elem, name );
-
-                               if ( result == null ) {
-                                       return operator === "!=";
-                               }
-                               if ( !operator ) {
-                                       return true;
-                               }
-
-                               result += "";
-
-                               return operator === "=" ? result === check :
-                                       operator === "!=" ? result !== check :
-                                       operator === "^=" ? check && result.indexOf( check ) === 0 :
-                                       operator === "*=" ? check && result.indexOf( check ) > -1 :
-                                       operator === "$=" ? check && result.slice( -check.length ) === check :
-                                       operator === "~=" ? ( " " + result + " " ).indexOf( check ) > -1 :
-                                       operator === "|=" ? result === check || result.slice( 0, check.length + 1 ) === check + "-" :
-                                       false;
-                       };
-               },
-
-               "CHILD": function( type, what, argument, first, last ) {
-                       var simple = type.slice( 0, 3 ) !== "nth",
-                               forward = type.slice( -4 ) !== "last",
-                               ofType = what === "of-type";
-
-                       return first === 1 && last === 0 ?
-
-                               // Shortcut for :nth-*(n)
-                               function( elem ) {
-                                       return !!elem.parentNode;
-                               } :
-
-                               function( elem, context, xml ) {
-                                       var cache, outerCache, node, diff, nodeIndex, start,
-                                               dir = simple !== forward ? "nextSibling" : "previousSibling",
-                                               parent = elem.parentNode,
-                                               name = ofType && elem.nodeName.toLowerCase(),
-                                               useCache = !xml && !ofType;
-
-                                       if ( parent ) {
-
-                                               // :(first|last|only)-(child|of-type)
-                                               if ( simple ) {
-                                                       while ( dir ) {
-                                                               node = elem;
-                                                               while ( (node = node[ dir ]) ) {
-                                                                       if ( ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1 ) {
-                                                                               return false;
-                                                                       }
-                                                               }
-                                                               // Reverse direction for :only-* (if we haven't yet done so)
-                                                               start = dir = type === "only" && !start && "nextSibling";
-                                                       }
-                                                       return true;
-                                               }
-
-                                               start = [ forward ? parent.firstChild : parent.lastChild ];
-
-                                               // non-xml :nth-child(...) stores cache data on `parent`
-                                               if ( forward && useCache ) {
-                                                       // Seek `elem` from a previously-cached index
-                                                       outerCache = parent[ expando ] || (parent[ expando ] = {});
-                                                       cache = outerCache[ type ] || [];
-                                                       nodeIndex = cache[0] === dirruns && cache[1];
-                                                       diff = cache[0] === dirruns && cache[2];
-                                                       node = nodeIndex && parent.childNodes[ nodeIndex ];
-
-                                                       while ( (node = ++nodeIndex && node && node[ dir ] ||
-
-                                                               // Fallback to seeking `elem` from the start
-                                                               (diff = nodeIndex = 0) || start.pop()) ) {
-
-                                                               // When found, cache indexes on `parent` and break
-                                                               if ( node.nodeType === 1 && ++diff && node === elem ) {
-                                                                       outerCache[ type ] = [ dirruns, nodeIndex, diff ];
-                                                                       break;
-                                                               }
-                                                       }
-
-                                               // Use previously-cached element index if available
-                                               } else if ( useCache && (cache = (elem[ expando ] || (elem[ expando ] = {}))[ type ]) && cache[0] === dirruns ) {
-                                                       diff = cache[1];
-
-                                               // xml :nth-child(...) or :nth-last-child(...) or :nth(-last)?-of-type(...)
-                                               } else {
-                                                       // Use the same loop as above to seek `elem` from the start
-                                                       while ( (node = ++nodeIndex && node && node[ dir ] ||
-                                                               (diff = nodeIndex = 0) || start.pop()) ) {
-
-                                                               if ( ( ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1 ) && ++diff ) {
-                                                                       // Cache the index of each encountered element
-                                                                       if ( useCache ) {
-                                                                               (node[ expando ] || (node[ expando ] = {}))[ type ] = [ dirruns, diff ];
-                                                                       }
-
-                                                                       if ( node === elem ) {
-                                                                               break;
-                                                                       }
-                                                               }
-                                                       }
-                                               }
-
-                                               // Incorporate the offset, then check against cycle size
-                                               diff -= last;
-                                               return diff === first || ( diff % first === 0 && diff / first >= 0 );
-                                       }
-                               };
-               },
-
-               "PSEUDO": function( pseudo, argument ) {
-                       // pseudo-class names are case-insensitive
-                       // http://www.w3.org/TR/selectors/#pseudo-classes
-                       // Prioritize by case sensitivity in case custom pseudos are added with uppercase letters
-                       // Remember that setFilters inherits from pseudos
-                       var args,
-                               fn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] ||
-                                       Sizzle.error( "unsupported pseudo: " + pseudo );
-
-                       // The user may use createPseudo to indicate that
-                       // arguments are needed to create the filter function
-                       // just as Sizzle does
-                       if ( fn[ expando ] ) {
-                               return fn( argument );
-                       }
-
-                       // But maintain support for old signatures
-                       if ( fn.length > 1 ) {
-                               args = [ pseudo, pseudo, "", argument ];
-                               return Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ?
-                                       markFunction(function( seed, matches ) {
-                                               var idx,
-                                                       matched = fn( seed, argument ),
-                                                       i = matched.length;
-                                               while ( i-- ) {
-                                                       idx = indexOf.call( seed, matched[i] );
-                                                       seed[ idx ] = !( matches[ idx ] = matched[i] );
-                                               }
-                                       }) :
-                                       function( elem ) {
-                                               return fn( elem, 0, args );
-                                       };
-                       }
-
-                       return fn;
-               }
-       },
-
-       pseudos: {
-               // Potentially complex pseudos
-               "not": markFunction(function( selector ) {
-                       // Trim the selector passed to compile
-                       // to avoid treating leading and trailing
-                       // spaces as combinators
-                       var input = [],
-                               results = [],
-                               matcher = compile( selector.replace( rtrim, "$1" ) );
-
-                       return matcher[ expando ] ?
-                               markFunction(function( seed, matches, context, xml ) {
-                                       var elem,
-                                               unmatched = matcher( seed, null, xml, [] ),
-                                               i = seed.length;
-
-                                       // Match elements unmatched by `matcher`
-                                       while ( i-- ) {
-                                               if ( (elem = unmatched[i]) ) {
-                                                       seed[i] = !(matches[i] = elem);
-                                               }
-                                       }
-                               }) :
-                               function( elem, context, xml ) {
-                                       input[0] = elem;
-                                       matcher( input, null, xml, results );
-                                       return !results.pop();
-                               };
-               }),
-
-               "has": markFunction(function( selector ) {
-                       return function( elem ) {
-                               return Sizzle( selector, elem ).length > 0;
-                       };
-               }),
-
-               "contains": markFunction(function( text ) {
-                       return function( elem ) {
-                               return ( elem.textContent || elem.innerText || getText( elem ) ).indexOf( text ) > -1;
-                       };
-               }),
-
-               // "Whether an element is represented by a :lang() selector
-               // is based solely on the element's language value
-               // being equal to the identifier C,
-               // or beginning with the identifier C immediately followed by "-".
-               // The matching of C against the element's language value is performed case-insensitively.
-               // The identifier C does not have to be a valid language name."
-               // http://www.w3.org/TR/selectors/#lang-pseudo
-               "lang": markFunction( function( lang ) {
-                       // lang value must be a valid identifier
-                       if ( !ridentifier.test(lang || "") ) {
-                               Sizzle.error( "unsupported lang: " + lang );
-                       }
-                       lang = lang.replace( runescape, funescape ).toLowerCase();
-                       return function( elem ) {
-                               var elemLang;
-                               do {
-                                       if ( (elemLang = documentIsHTML ?
-                                               elem.lang :
-                                               elem.getAttribute("xml:lang") || elem.getAttribute("lang")) ) {
-
-                                               elemLang = elemLang.toLowerCase();
-                                               return elemLang === lang || elemLang.indexOf( lang + "-" ) === 0;
-                                       }
-                               } while ( (elem = elem.parentNode) && elem.nodeType === 1 );
-                               return false;
-                       };
-               }),
-
-               // Miscellaneous
-               "target": function( elem ) {
-                       var hash = window.location && window.location.hash;
-                       return hash && hash.slice( 1 ) === elem.id;
-               },
-
-               "root": function( elem ) {
-                       return elem === docElem;
-               },
-
-               "focus": function( elem ) {
-                       return elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex);
-               },
-
-               // Boolean properties
-               "enabled": function( elem ) {
-                       return elem.disabled === false;
-               },
-
-               "disabled": function( elem ) {
-                       return elem.disabled === true;
-               },
-
-               "checked": function( elem ) {
-                       // In CSS3, :checked should return both checked and selected elements
-                       // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked
-                       var nodeName = elem.nodeName.toLowerCase();
-                       return (nodeName === "input" && !!elem.checked) || (nodeName === "option" && !!elem.selected);
-               },
-
-               "selected": function( elem ) {
-                       // Accessing this property makes selected-by-default
-                       // options in Safari work properly
-                       if ( elem.parentNode ) {
-                               elem.parentNode.selectedIndex;
-                       }
-
-                       return elem.selected === true;
-               },
-
-               // Contents
-               "empty": function( elem ) {
-                       // http://www.w3.org/TR/selectors/#empty-pseudo
-                       // :empty is only affected by element nodes and content nodes(including text(3), cdata(4)),
-                       //   not comment, processing instructions, or others
-                       // Thanks to Diego Perini for the nodeName shortcut
-                       //   Greater than "@" means alpha characters (specifically not starting with "#" or "?")
-                       for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {
-                               if ( elem.nodeName > "@" || elem.nodeType === 3 || elem.nodeType === 4 ) {
-                                       return false;
-                               }
-                       }
-                       return true;
-               },
-
-               "parent": function( elem ) {
-                       return !Expr.pseudos["empty"]( elem );
-               },
-
-               // Element/input types
-               "header": function( elem ) {
-                       return rheader.test( elem.nodeName );
-               },
-
-               "input": function( elem ) {
-                       return rinputs.test( elem.nodeName );
-               },
-
-               "button": function( elem ) {
-                       var name = elem.nodeName.toLowerCase();
-                       return name === "input" && elem.type === "button" || name === "button";
-               },
-
-               "text": function( elem ) {
-                       var attr;
-                       // IE6 and 7 will map elem.type to 'text' for new HTML5 types (search, etc)
-                       // use getAttribute instead to test this case
-                       return elem.nodeName.toLowerCase() === "input" &&
-                               elem.type === "text" &&
-                               ( (attr = elem.getAttribute("type")) == null || attr.toLowerCase() === elem.type );
-               },
-
-               // Position-in-collection
-               "first": createPositionalPseudo(function() {
-                       return [ 0 ];
-               }),
-
-               "last": createPositionalPseudo(function( matchIndexes, length ) {
-                       return [ length - 1 ];
-               }),
-
-               "eq": createPositionalPseudo(function( matchIndexes, length, argument ) {
-                       return [ argument < 0 ? argument + length : argument ];
-               }),
-
-               "even": createPositionalPseudo(function( matchIndexes, length ) {
-                       var i = 0;
-                       for ( ; i < length; i += 2 ) {
-                               matchIndexes.push( i );
-                       }
-                       return matchIndexes;
-               }),
-
-               "odd": createPositionalPseudo(function( matchIndexes, length ) {
-                       var i = 1;
-                       for ( ; i < length; i += 2 ) {
-                               matchIndexes.push( i );
-                       }
-                       return matchIndexes;
-               }),
-
-               "lt": createPositionalPseudo(function( matchIndexes, length, argument ) {
-                       var i = argument < 0 ? argument + length : argument;
-                       for ( ; --i >= 0; ) {
-                               matchIndexes.push( i );
-                       }
-                       return matchIndexes;
-               }),
-
-               "gt": createPositionalPseudo(function( matchIndexes, length, argument ) {
-                       var i = argument < 0 ? argument + length : argument;
-                       for ( ; ++i < length; ) {
-                               matchIndexes.push( i );
-                       }
-                       return matchIndexes;
-               })
-       }
-};
-
-Expr.pseudos["nth"] = Expr.pseudos["eq"];
-
-// Add button/input type pseudos
-for ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) {
-       Expr.pseudos[ i ] = createInputPseudo( i );
-}
-for ( i in { submit: true, reset: true } ) {
-       Expr.pseudos[ i ] = createButtonPseudo( i );
-}
-
-// Easy API for creating new setFilters
-function setFilters() {}
-setFilters.prototype = Expr.filters = Expr.pseudos;
-Expr.setFilters = new setFilters();
-
-function tokenize( selector, parseOnly ) {
-       var matched, match, tokens, type,
-               soFar, groups, preFilters,
-               cached = tokenCache[ selector + " " ];
-
-       if ( cached ) {
-               return parseOnly ? 0 : cached.slice( 0 );
-       }
-
-       soFar = selector;
-       groups = [];
-       preFilters = Expr.preFilter;
-
-       while ( soFar ) {
-
-               // Comma and first run
-               if ( !matched || (match = rcomma.exec( soFar )) ) {
-                       if ( match ) {
-                               // Don't consume trailing commas as valid
-                               soFar = soFar.slice( match[0].length ) || soFar;
-                       }
-                       groups.push( tokens = [] );
-               }
-
-               matched = false;
-
-               // Combinators
-               if ( (match = rcombinators.exec( soFar )) ) {
-                       matched = match.shift();
-                       tokens.push({
-                               value: matched,
-                               // Cast descendant combinators to space
-                               type: match[0].replace( rtrim, " " )
-                       });
-                       soFar = soFar.slice( matched.length );
-               }
-
-               // Filters
-               for ( type in Expr.filter ) {
-                       if ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] ||
-                               (match = preFilters[ type ]( match ))) ) {
-                               matched = match.shift();
-                               tokens.push({
-                                       value: matched,
-                                       type: type,
-                                       matches: match
-                               });
-                               soFar = soFar.slice( matched.length );
-                       }
-               }
-
-               if ( !matched ) {
-                       break;
-               }
-       }
-
-       // Return the length of the invalid excess
-       // if we're just parsing
-       // Otherwise, throw an error or return tokens
-       return parseOnly ?
-               soFar.length :
-               soFar ?
-                       Sizzle.error( selector ) :
-                       // Cache the tokens
-                       tokenCache( selector, groups ).slice( 0 );
-}
-
-function toSelector( tokens ) {
-       var i = 0,
-               len = tokens.length,
-               selector = "";
-       for ( ; i < len; i++ ) {
-               selector += tokens[i].value;
-       }
-       return selector;
-}
-
-function addCombinator( matcher, combinator, base ) {
-       var dir = combinator.dir,
-               checkNonElements = base && dir === "parentNode",
-               doneName = done++;
-
-       return combinator.first ?
-               // Check against closest ancestor/preceding element
-               function( elem, context, xml ) {
-                       while ( (elem = elem[ dir ]) ) {
-                               if ( elem.nodeType === 1 || checkNonElements ) {
-                                       return matcher( elem, context, xml );
-                               }
-                       }
-               } :
-
-               // Check against all ancestor/preceding elements
-               function( elem, context, xml ) {
-                       var data, cache, outerCache,
-                               dirkey = dirruns + " " + doneName;
-
-                       // We can't set arbitrary data on XML nodes, so they don't benefit from dir caching
-                       if ( xml ) {
-                               while ( (elem = elem[ dir ]) ) {
-                                       if ( elem.nodeType === 1 || checkNonElements ) {
-                                               if ( matcher( elem, context, xml ) ) {
-                                                       return true;
-                                               }
-                                       }
-                               }
-                       } else {
-                               while ( (elem = elem[ dir ]) ) {
-                                       if ( elem.nodeType === 1 || checkNonElements ) {
-                                               outerCache = elem[ expando ] || (elem[ expando ] = {});
-                                               if ( (cache = outerCache[ dir ]) && cache[0] === dirkey ) {
-                                                       if ( (data = cache[1]) === true || data === cachedruns ) {
-                                                               return data === true;
-                                                       }
-                                               } else {
-                                                       cache = outerCache[ dir ] = [ dirkey ];
-                                                       cache[1] = matcher( elem, context, xml ) || cachedruns;
-                                                       if ( cache[1] === true ) {
-                                                               return true;
-                                                       }
-                                               }
-                                       }
-                               }
-                       }
-               };
-}
-
-function elementMatcher( matchers ) {
-       return matchers.length > 1 ?
-               function( elem, context, xml ) {
-                       var i = matchers.length;
-                       while ( i-- ) {
-                               if ( !matchers[i]( elem, context, xml ) ) {
-                                       return false;
-                               }
-                       }
-                       return true;
-               } :
-               matchers[0];
-}
-
-function condense( unmatched, map, filter, context, xml ) {
-       var elem,
-               newUnmatched = [],
-               i = 0,
-               len = unmatched.length,
-               mapped = map != null;
-
-       for ( ; i < len; i++ ) {
-               if ( (elem = unmatched[i]) ) {
-                       if ( !filter || filter( elem, context, xml ) ) {
-                               newUnmatched.push( elem );
-                               if ( mapped ) {
-                                       map.push( i );
-                               }
-                       }
-               }
-       }
-
-       return newUnmatched;
-}
-
-function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) {
-       if ( postFilter && !postFilter[ expando ] ) {
-               postFilter = setMatcher( postFilter );
-       }
-       if ( postFinder && !postFinder[ expando ] ) {
-               postFinder = setMatcher( postFinder, postSelector );
-       }
-       return markFunction(function( seed, results, context, xml ) {
-               var temp, i, elem,
-                       preMap = [],
-                       postMap = [],
-                       preexisting = results.length,
-
-                       // Get initial elements from seed or context
-                       elems = seed || multipleContexts( selector || "*", context.nodeType ? [ context ] : context, [] ),
-
-                       // Prefilter to get matcher input, preserving a map for seed-results synchronization
-                       matcherIn = preFilter && ( seed || !selector ) ?
-                               condense( elems, preMap, preFilter, context, xml ) :
-                               elems,
-
-                       matcherOut = matcher ?
-                               // If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results,
-                               postFinder || ( seed ? preFilter : preexisting || postFilter ) ?
-
-                                       // ...intermediate processing is necessary
-                                       [] :
-
-                                       // ...otherwise use results directly
-                                       results :
-                               matcherIn;
-
-               // Find primary matches
-               if ( matcher ) {
-                       matcher( matcherIn, matcherOut, context, xml );
-               }
-
-               // Apply postFilter
-               if ( postFilter ) {
-                       temp = condense( matcherOut, postMap );
-                       postFilter( temp, [], context, xml );
-
-                       // Un-match failing elements by moving them back to matcherIn
-                       i = temp.length;
-                       while ( i-- ) {
-                               if ( (elem = temp[i]) ) {
-                                       matcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem);
-                               }
-                       }
-               }
-
-               if ( seed ) {
-                       if ( postFinder || preFilter ) {
-                               if ( postFinder ) {
-                                       // Get the final matcherOut by condensing this intermediate into postFinder contexts
-                                       temp = [];
-                                       i = matcherOut.length;
-                                       while ( i-- ) {
-                                               if ( (elem = matcherOut[i]) ) {
-                                                       // Restore matcherIn since elem is not yet a final match
-                                                       temp.push( (matcherIn[i] = elem) );
-                                               }
-                                       }
-                                       postFinder( null, (matcherOut = []), temp, xml );
-                               }
-
-                               // Move matched elements from seed to results to keep them synchronized
-                               i = matcherOut.length;
-                               while ( i-- ) {
-                                       if ( (elem = matcherOut[i]) &&
-                                               (temp = postFinder ? indexOf.call( seed, elem ) : preMap[i]) > -1 ) {
-
-                                               seed[temp] = !(results[temp] = elem);
-                                       }
-                               }
-                       }
-
-               // Add elements to results, through postFinder if defined
-               } else {
-                       matcherOut = condense(
-                               matcherOut === results ?
-                                       matcherOut.splice( preexisting, matcherOut.length ) :
-                                       matcherOut
-                       );
-                       if ( postFinder ) {
-                               postFinder( null, results, matcherOut, xml );
-                       } else {
-                               push.apply( results, matcherOut );
-                       }
-               }
-       });
-}
-
-function matcherFromTokens( tokens ) {
-       var checkContext, matcher, j,
-               len = tokens.length,
-               leadingRelative = Expr.relative[ tokens[0].type ],
-               implicitRelative = leadingRelative || Expr.relative[" "],
-               i = leadingRelative ? 1 : 0,
-
-               // The foundational matcher ensures that elements are reachable from top-level context(s)
-               matchContext = addCombinator( function( elem ) {
-                       return elem === checkContext;
-               }, implicitRelative, true ),
-               matchAnyContext = addCombinator( function( elem ) {
-                       return indexOf.call( checkContext, elem ) > -1;
-               }, implicitRelative, true ),
-               matchers = [ function( elem, context, xml ) {
-                       return ( !leadingRelative && ( xml || context !== outermostContext ) ) || (
-                               (checkContext = context).nodeType ?
-                                       matchContext( elem, context, xml ) :
-                                       matchAnyContext( elem, context, xml ) );
-               } ];
-
-       for ( ; i < len; i++ ) {
-               if ( (matcher = Expr.relative[ tokens[i].type ]) ) {
-                       matchers = [ addCombinator(elementMatcher( matchers ), matcher) ];
-               } else {
-                       matcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches );
-
-                       // Return special upon seeing a positional matcher
-                       if ( matcher[ expando ] ) {
-                               // Find the next relative operator (if any) for proper handling
-                               j = ++i;
-                               for ( ; j < len; j++ ) {
-                                       if ( Expr.relative[ tokens[j].type ] ) {
-                                               break;
-                                       }
-                               }
-                               return setMatcher(
-                                       i > 1 && elementMatcher( matchers ),
-                                       i > 1 && toSelector(
-                                               // If the preceding token was a descendant combinator, insert an implicit any-element `*`
-                                               tokens.slice( 0, i - 1 ).concat({ value: tokens[ i - 2 ].type === " " ? "*" : "" })
-                                       ).replace( rtrim, "$1" ),
-                                       matcher,
-                                       i < j && matcherFromTokens( tokens.slice( i, j ) ),
-                                       j < len && matcherFromTokens( (tokens = tokens.slice( j )) ),
-                                       j < len && toSelector( tokens )
-                               );
-                       }
-                       matchers.push( matcher );
-               }
-       }
-
-       return elementMatcher( matchers );
-}
-
-function matcherFromGroupMatchers( elementMatchers, setMatchers ) {
-       // A counter to specify which element is currently being matched
-       var matcherCachedRuns = 0,
-               bySet = setMatchers.length > 0,
-               byElement = elementMatchers.length > 0,
-               superMatcher = function( seed, context, xml, results, expandContext ) {
-                       var elem, j, matcher,
-                               setMatched = [],
-                               matchedCount = 0,
-                               i = "0",
-                               unmatched = seed && [],
-                               outermost = expandContext != null,
-                               contextBackup = outermostContext,
-                               // We must always have either seed elements or context
-                               elems = seed || byElement && Expr.find["TAG"]( "*", expandContext && context.parentNode || context ),
-                               // Use integer dirruns iff this is the outermost matcher
-                               dirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.random() || 0.1);
-
-                       if ( outermost ) {
-                               outermostContext = context !== document && context;
-                               cachedruns = matcherCachedRuns;
-                       }
-
-                       // Add elements passing elementMatchers directly to results
-                       // Keep `i` a string if there are no elements so `matchedCount` will be "00" below
-                       for ( ; (elem = elems[i]) != null; i++ ) {
-                               if ( byElement && elem ) {
-                                       j = 0;
-                                       while ( (matcher = elementMatchers[j++]) ) {
-                                               if ( matcher( elem, context, xml ) ) {
-                                                       results.push( elem );
-                                                       break;
-                                               }
-                                       }
-                                       if ( outermost ) {
-                                               dirruns = dirrunsUnique;
-                                               cachedruns = ++matcherCachedRuns;
-                                       }
-                               }
-
-                               // Track unmatched elements for set filters
-                               if ( bySet ) {
-                                       // They will have gone through all possible matchers
-                                       if ( (elem = !matcher && elem) ) {
-                                               matchedCount--;
-                                       }
-
-                                       // Lengthen the array for every element, matched or not
-                                       if ( seed ) {
-                                               unmatched.push( elem );
-                                       }
-                               }
-                       }
-
-                       // Apply set filters to unmatched elements
-                       matchedCount += i;
-                       if ( bySet && i !== matchedCount ) {
-                               j = 0;
-                               while ( (matcher = setMatchers[j++]) ) {
-                                       matcher( unmatched, setMatched, context, xml );
-                               }
-
-                               if ( seed ) {
-                                       // Reintegrate element matches to eliminate the need for sorting
-                                       if ( matchedCount > 0 ) {
-                                               while ( i-- ) {
-                                                       if ( !(unmatched[i] || setMatched[i]) ) {
-                                                               setMatched[i] = pop.call( results );
-                                                       }
-                                               }
-                                       }
-
-                                       // Discard index placeholder values to get only actual matches
-                                       setMatched = condense( setMatched );
-                               }
-
-                               // Add matches to results
-                               push.apply( results, setMatched );
-
-                               // Seedless set matches succeeding multiple successful matchers stipulate sorting
-                               if ( outermost && !seed && setMatched.length > 0 &&
-                                       ( matchedCount + setMatchers.length ) > 1 ) {
-
-                                       Sizzle.uniqueSort( results );
-                               }
-                       }
-
-                       // Override manipulation of globals by nested matchers
-                       if ( outermost ) {
-                               dirruns = dirrunsUnique;
-                               outermostContext = contextBackup;
-                       }
-
-                       return unmatched;
-               };
-
-       return bySet ?
-               markFunction( superMatcher ) :
-               superMatcher;
-}
-
-compile = Sizzle.compile = function( selector, group /* Internal Use Only */ ) {
-       var i,
-               setMatchers = [],
-               elementMatchers = [],
-               cached = compilerCache[ selector + " " ];
-
-       if ( !cached ) {
-               // Generate a function of recursive functions that can be used to check each element
-               if ( !group ) {
-                       group = tokenize( selector );
-               }
-               i = group.length;
-               while ( i-- ) {
-                       cached = matcherFromTokens( group[i] );
-                       if ( cached[ expando ] ) {
-                               setMatchers.push( cached );
-                       } else {
-                               elementMatchers.push( cached );
-                       }
-               }
-
-               // Cache the compiled function
-               cached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) );
-       }
-       return cached;
-};
-
-function multipleContexts( selector, contexts, results ) {
-       var i = 0,
-               len = contexts.length;
-       for ( ; i < len; i++ ) {
-               Sizzle( selector, contexts[i], results );
-       }
-       return results;
-}
-
-function select( selector, context, results, seed ) {
-       var i, tokens, token, type, find,
-               match = tokenize( selector );
-
-       if ( !seed ) {
-               // Try to minimize operations if there is only one group
-               if ( match.length === 1 ) {
-
-                       // Take a shortcut and set the context if the root selector is an ID
-                       tokens = match[0] = match[0].slice( 0 );
-                       if ( tokens.length > 2 && (token = tokens[0]).type === "ID" &&
-                                       support.getById && context.nodeType === 9 && documentIsHTML &&
-                                       Expr.relative[ tokens[1].type ] ) {
-
-                               context = ( Expr.find["ID"]( token.matches[0].replace(runescape, funescape), context ) || [] )[0];
-                               if ( !context ) {
-                                       return results;
-                               }
-                               selector = selector.slice( tokens.shift().value.length );
-                       }
-
-                       // Fetch a seed set for right-to-left matching
-                       i = matchExpr["needsContext"].test( selector ) ? 0 : tokens.length;
-                       while ( i-- ) {
-                               token = tokens[i];
-
-                               // Abort if we hit a combinator
-                               if ( Expr.relative[ (type = token.type) ] ) {
-                                       break;
-                               }
-                               if ( (find = Expr.find[ type ]) ) {
-                                       // Search, expanding context for leading sibling combinators
-                                       if ( (seed = find(
-                                               token.matches[0].replace( runescape, funescape ),
-                                               rsibling.test( tokens[0].type ) && context.parentNode || context
-                                       )) ) {
-
-                                               // If seed is empty or no tokens remain, we can return early
-                                               tokens.splice( i, 1 );
-                                               selector = seed.length && toSelector( tokens );
-                                               if ( !selector ) {
-                                                       push.apply( results, seed );
-                                                       return results;
-                                               }
-
-                                               break;
-                                       }
-                               }
-                       }
-               }
-       }
-
-       // Compile and execute a filtering function
-       // Provide `match` to avoid retokenization if we modified the selector above
-       compile( selector, match )(
-               seed,
-               context,
-               !documentIsHTML,
-               results,
-               rsibling.test( selector )
-       );
-       return results;
-}
-
-// One-time assignments
-
-// Sort stability
-support.sortStable = expando.split("").sort( sortOrder ).join("") === expando;
-
-// Support: Chrome<14
-// Always assume duplicates if they aren't passed to the comparison function
-support.detectDuplicates = hasDuplicate;
-
-// Initialize against the default document
-setDocument();
-
-// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27)
-// Detached nodes confoundingly follow *each other*
-support.sortDetached = assert(function( div1 ) {
-       // Should return 1, but returns 4 (following)
-       return div1.compareDocumentPosition( document.createElement("div") ) & 1;
-});
-
-// Support: IE<8
-// Prevent attribute/property "interpolation"
-// http://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx
-if ( !assert(function( div ) {
-       div.innerHTML = "<a href='#'></a>";
-       return div.firstChild.getAttribute("href") === "#" ;
-}) ) {
-       addHandle( "type|href|height|width", function( elem, name, isXML ) {
-               if ( !isXML ) {
-                       return elem.getAttribute( name, name.toLowerCase() === "type" ? 1 : 2 );
-               }
-       });
-}
-
-// Support: IE<9
-// Use defaultValue in place of getAttribute("value")
-if ( !support.attributes || !assert(function( div ) {
-       div.innerHTML = "<input/>";
-       div.firstChild.setAttribute( "value", "" );
-       return div.firstChild.getAttribute( "value" ) === "";
-}) ) {
-       addHandle( "value", function( elem, name, isXML ) {
-               if ( !isXML && elem.nodeName.toLowerCase() === "input" ) {
-                       return elem.defaultValue;
-               }
-       });
-}
-
-// Support: IE<9
-// Use getAttributeNode to fetch booleans when getAttribute lies
-if ( !assert(function( div ) {
-       return div.getAttribute("disabled") == null;
-}) ) {
-       addHandle( booleans, function( elem, name, isXML ) {
-               var val;
-               if ( !isXML ) {
-                       return (val = elem.getAttributeNode( name )) && val.specified ?
-                               val.value :
-                               elem[ name ] === true ? name.toLowerCase() : null;
-               }
-       });
-}
-
-jQuery.find = Sizzle;
-jQuery.expr = Sizzle.selectors;
-jQuery.expr[":"] = jQuery.expr.pseudos;
-jQuery.unique = Sizzle.uniqueSort;
-jQuery.text = Sizzle.getText;
-jQuery.isXMLDoc = Sizzle.isXML;
-jQuery.contains = Sizzle.contains;
-
-
-})( window );
-// String to Object options format cache
-var optionsCache = {};
-
-// Convert String-formatted options into Object-formatted ones and store in cache
-function createOptions( options ) {
-       var object = optionsCache[ options ] = {};
-       jQuery.each( options.match( core_rnotwhite ) || [], function( _, flag ) {
-               object[ flag ] = true;
-       });
-       return object;
-}
-
-/*
- * Create a callback list using the following parameters:
- *
- *     options: an optional list of space-separated options that will change how
- *                     the callback list behaves or a more traditional option object
- *
- * By default a callback list will act like an event callback list and can be
- * "fired" multiple times.
- *
- * Possible options:
- *
- *     once:                   will ensure the callback list can only be fired once (like a Deferred)
- *
- *     memory:                 will keep track of previous values and will call any callback added
- *                                     after the list has been fired right away with the latest "memorized"
- *                                     values (like a Deferred)
- *
- *     unique:                 will ensure a callback can only be added once (no duplicate in the list)
- *
- *     stopOnFalse:    interrupt callings when a callback returns false
- *
- */
-jQuery.Callbacks = function( options ) {
-
-       // Convert options from String-formatted to Object-formatted if needed
-       // (we check in cache first)
-       options = typeof options === "string" ?
-               ( optionsCache[ options ] || createOptions( options ) ) :
-               jQuery.extend( {}, options );
-
-       var // Flag to know if list is currently firing
-               firing,
-               // Last fire value (for non-forgettable lists)
-               memory,
-               // Flag to know if list was already fired
-               fired,
-               // End of the loop when firing
-               firingLength,
-               // Index of currently firing callback (modified by remove if needed)
-               firingIndex,
-               // First callback to fire (used internally by add and fireWith)
-               firingStart,
-               // Actual callback list
-               list = [],
-               // Stack of fire calls for repeatable lists
-               stack = !options.once && [],
-               // Fire callbacks
-               fire = function( data ) {
-                       memory = options.memory && data;
-                       fired = true;
-                       firingIndex = firingStart || 0;
-                       firingStart = 0;
-                       firingLength = list.length;
-                       firing = true;
-                       for ( ; list && firingIndex < firingLength; firingIndex++ ) {
-                               if ( list[ firingIndex ].apply( data[ 0 ], data[ 1 ] ) === false && options.stopOnFalse ) {
-                                       memory = false; // To prevent further calls using add
-                                       break;
-                               }
-                       }
-                       firing = false;
-                       if ( list ) {
-                               if ( stack ) {
-                                       if ( stack.length ) {
-                                               fire( stack.shift() );
-                                       }
-                               } else if ( memory ) {
-                                       list = [];
-                               } else {
-                                       self.disable();
-                               }
-                       }
-               },
-               // Actual Callbacks object
-               self = {
-                       // Add a callback or a collection of callbacks to the list
-                       add: function() {
-                               if ( list ) {
-                                       // First, we save the current length
-                                       var start = list.length;
-                                       (function add( args ) {
-                                               jQuery.each( args, function( _, arg ) {
-                                                       var type = jQuery.type( arg );
-                                                       if ( type === "function" ) {
-                                                               if ( !options.unique || !self.has( arg ) ) {
-                                                                       list.push( arg );
-                                                               }
-                                                       } else if ( arg && arg.length && type !== "string" ) {
-                                                               // Inspect recursively
-                                                               add( arg );
-                                                       }
-                                               });
-                                       })( arguments );
-                                       // Do we need to add the callbacks to the
-                                       // current firing batch?
-                                       if ( firing ) {
-                                               firingLength = list.length;
-                                       // With memory, if we're not firing then
-                                       // we should call right away
-                                       } else if ( memory ) {
-                                               firingStart = start;
-                                               fire( memory );
-                                       }
-                               }
-                               return this;
-                       },
-                       // Remove a callback from the list
-                       remove: function() {
-                               if ( list ) {
-                                       jQuery.each( arguments, function( _, arg ) {
-                                               var index;
-                                               while( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) {
-                                                       list.splice( index, 1 );
-                                                       // Handle firing indexes
-                                                       if ( firing ) {
-                                                               if ( index <= firingLength ) {
-                                                                       firingLength--;
-                                                               }
-                                                               if ( index <= firingIndex ) {
-                                                                       firingIndex--;
-                                                               }
-                                                       }
-                                               }
-                                       });
-                               }
-                               return this;
-                       },
-                       // Check if a given callback is in the list.
-                       // If no argument is given, return whether or not list has callbacks attached.
-                       has: function( fn ) {
-                               return fn ? jQuery.inArray( fn, list ) > -1 : !!( list && list.length );
-                       },
-                       // Remove all callbacks from the list
-                       empty: function() {
-                               list = [];
-                               firingLength = 0;
-                               return this;
-                       },
-                       // Have the list do nothing anymore
-                       disable: function() {
-                               list = stack = memory = undefined;
-                               return this;
-                       },
-                       // Is it disabled?
-                       disabled: function() {
-                               return !list;
-                       },
-                       // Lock the list in its current state
-                       lock: function() {
-                               stack = undefined;
-                               if ( !memory ) {
-                                       self.disable();
-                               }
-                               return this;
-                       },
-                       // Is it locked?
-                       locked: function() {
-                               return !stack;
-                       },
-                       // Call all callbacks with the given context and arguments
-                       fireWith: function( context, args ) {
-                               if ( list && ( !fired || stack ) ) {
-                                       args = args || [];
-                                       args = [ context, args.slice ? args.slice() : args ];
-                                       if ( firing ) {
-                                               stack.push( args );
-                                       } else {
-                                               fire( args );
-                                       }
-                               }
-                               return this;
-                       },
-                       // Call all the callbacks with the given arguments
-                       fire: function() {
-                               self.fireWith( this, arguments );
-                               return this;
-                       },
-                       // To know if the callbacks have already been called at least once
-                       fired: function() {
-                               return !!fired;
-                       }
-               };
-
-       return self;
-};
-jQuery.extend({
-
-       Deferred: function( func ) {
-               var tuples = [
-                               // action, add listener, listener list, final state
-                               [ "resolve", "done", jQuery.Callbacks("once memory"), "resolved" ],
-                               [ "reject", "fail", jQuery.Callbacks("once memory"), "rejected" ],
-                               [ "notify", "progress", jQuery.Callbacks("memory") ]
-                       ],
-                       state = "pending",
-                       promise = {
-                               state: function() {
-                                       return state;
-                               },
-                               always: function() {
-                                       deferred.done( arguments ).fail( arguments );
-                                       return this;
-                               },
-                               then: function( /* fnDone, fnFail, fnProgress */ ) {
-                                       var fns = arguments;
-                                       return jQuery.Deferred(function( newDefer ) {
-                                               jQuery.each( tuples, function( i, tuple ) {
-                                                       var action = tuple[ 0 ],
-                                                               fn = jQuery.isFunction( fns[ i ] ) && fns[ i ];
-                                                       // deferred[ done | fail | progress ] for forwarding actions to newDefer
-                                                       deferred[ tuple[1] ](function() {
-                                                               var returned = fn && fn.apply( this, arguments );
-                                                               if ( returned && jQuery.isFunction( returned.promise ) ) {
-                                                                       returned.promise()
-                                                                               .done( newDefer.resolve )
-                                                                               .fail( newDefer.reject )
-                                                                               .progress( newDefer.notify );
-                                                               } else {
-                                                                       newDefer[ action + "With" ]( this === promise ? newDefer.promise() : this, fn ? [ returned ] : arguments );
-                                                               }
-                                                       });
-                                               });
-                                               fns = null;
-                                       }).promise();
-                               },
-                               // Get a promise for this deferred
-                               // If obj is provided, the promise aspect is added to the object
-                               promise: function( obj ) {
-                                       return obj != null ? jQuery.extend( obj, promise ) : promise;
-                               }
-                       },
-                       deferred = {};
-
-               // Keep pipe for back-compat
-               promise.pipe = promise.then;
-
-               // Add list-specific methods
-               jQuery.each( tuples, function( i, tuple ) {
-                       var list = tuple[ 2 ],
-                               stateString = tuple[ 3 ];
-
-                       // promise[ done | fail | progress ] = list.add
-                       promise[ tuple[1] ] = list.add;
-
-                       // Handle state
-                       if ( stateString ) {
-                               list.add(function() {
-                                       // state = [ resolved | rejected ]
-                                       state = stateString;
-
-                               // [ reject_list | resolve_list ].disable; progress_list.lock
-                               }, tuples[ i ^ 1 ][ 2 ].disable, tuples[ 2 ][ 2 ].lock );
-                       }
-
-                       // deferred[ resolve | reject | notify ]
-                       deferred[ tuple[0] ] = function() {
-                               deferred[ tuple[0] + "With" ]( this === deferred ? promise : this, arguments );
-                               return this;
-                       };
-                       deferred[ tuple[0] + "With" ] = list.fireWith;
-               });
-
-               // Make the deferred a promise
-               promise.promise( deferred );
-
-               // Call given func if any
-               if ( func ) {
-                       func.call( deferred, deferred );
-               }
-
-               // All done!
-               return deferred;
-       },
-
-       // Deferred helper
-       when: function( subordinate /* , ..., subordinateN */ ) {
-               var i = 0,
-                       resolveValues = core_slice.call( arguments ),
-                       length = resolveValues.length,
-
-                       // the count of uncompleted subordinates
-                       remaining = length !== 1 || ( subordinate && jQuery.isFunction( subordinate.promise ) ) ? length : 0,
-
-                       // the master Deferred. If resolveValues consist of only a single Deferred, just use that.
-                       deferred = remaining === 1 ? subordinate : jQuery.Deferred(),
-
-                       // Update function for both resolve and progress values
-                       updateFunc = function( i, contexts, values ) {
-                               return function( value ) {
-                                       contexts[ i ] = this;
-                                       values[ i ] = arguments.length > 1 ? core_slice.call( arguments ) : value;
-                                       if( values === progressValues ) {
-                                               deferred.notifyWith( contexts, values );
-                                       } else if ( !( --remaining ) ) {
-                                               deferred.resolveWith( contexts, values );
-                                       }
-                               };
-                       },
-
-                       progressValues, progressContexts, resolveContexts;
-
-               // add listeners to Deferred subordinates; treat others as resolved
-               if ( length > 1 ) {
-                       progressValues = new Array( length );
-                       progressContexts = new Array( length );
-                       resolveContexts = new Array( length );
-                       for ( ; i < length; i++ ) {
-                               if ( resolveValues[ i ] && jQuery.isFunction( resolveValues[ i ].promise ) ) {
-                                       resolveValues[ i ].promise()
-                                               .done( updateFunc( i, resolveContexts, resolveValues ) )
-                                               .fail( deferred.reject )
-                                               .progress( updateFunc( i, progressContexts, progressValues ) );
-                               } else {
-                                       --remaining;
-                               }
-                       }
-               }
-
-               // if we're not waiting on anything, resolve the master
-               if ( !remaining ) {
-                       deferred.resolveWith( resolveContexts, resolveValues );
-               }
-
-               return deferred.promise();
-       }
-});
-jQuery.support = (function( support ) {
-
-       var all, a, input, select, fragment, opt, eventName, isSupported, i,
-               div = document.createElement("div");
-
-       // Setup
-       div.setAttribute( "className", "t" );
-       div.innerHTML = "  <link/><table></table><a href='/a'>a</a><input type='checkbox'/>";
-
-       // Finish early in limited (non-browser) environments
-       all = div.getElementsByTagName("*") || [];
-       a = div.getElementsByTagName("a")[ 0 ];
-       if ( !a || !a.style || !all.length ) {
-               return support;
-       }
-
-       // First batch of tests
-       select = document.createElement("select");
-       opt = select.appendChild( document.createElement("option") );
-       input = div.getElementsByTagName("input")[ 0 ];
-
-       a.style.cssText = "top:1px;float:left;opacity:.5";
-
-       // Test setAttribute on camelCase class. If it works, we need attrFixes when doing get/setAttribute (ie6/7)
-       support.getSetAttribute = div.className !== "t";
-
-       // IE strips leading whitespace when .innerHTML is used
-       support.leadingWhitespace = div.firstChild.nodeType === 3;
-
-       // Make sure that tbody elements aren't automatically inserted
-       // IE will insert them into empty tables
-       support.tbody = !div.getElementsByTagName("tbody").length;
-
-       // Make sure that link elements get serialized correctly by innerHTML
-       // This requires a wrapper element in IE
-       support.htmlSerialize = !!div.getElementsByTagName("link").length;
-
-       // Get the style information from getAttribute
-       // (IE uses .cssText instead)
-       support.style = /top/.test( a.getAttribute("style") );
-
-       // Make sure that URLs aren't manipulated
-       // (IE normalizes it by default)
-       support.hrefNormalized = a.getAttribute("href") === "/a";
-
-       // Make sure that element opacity exists
-       // (IE uses filter instead)
-       // Use a regex to work around a WebKit issue. See #5145
-       support.opacity = /^0.5/.test( a.style.opacity );
-
-       // Verify style float existence
-       // (IE uses styleFloat instead of cssFloat)
-       support.cssFloat = !!a.style.cssFloat;
-
-       // Check the default checkbox/radio value ("" on WebKit; "on" elsewhere)
-       support.checkOn = !!input.value;
-
-       // Make sure that a selected-by-default option has a working selected property.
-       // (WebKit defaults to false instead of true, IE too, if it's in an optgroup)
-       support.optSelected = opt.selected;
-
-       // Tests for enctype support on a form (#6743)
-       support.enctype = !!document.createElement("form").enctype;
-
-       // Makes sure cloning an html5 element does not cause problems
-       // Where outerHTML is undefined, this still works
-       support.html5Clone = document.createElement("nav").cloneNode( true ).outerHTML !== "<:nav></:nav>";
-
-       // Will be defined later
-       support.inlineBlockNeedsLayout = false;
-       support.shrinkWrapBlocks = false;
-       support.pixelPosition = false;
-       support.deleteExpando = true;
-       support.noCloneEvent = true;
-       support.reliableMarginRight = true;
-       support.boxSizingReliable = true;
-
-       // Make sure checked status is properly cloned
-       input.checked = true;
-       support.noCloneChecked = input.cloneNode( true ).checked;
-
-       // Make sure that the options inside disabled selects aren't marked as disabled
-       // (WebKit marks them as disabled)
-       select.disabled = true;
-       support.optDisabled = !opt.disabled;
-
-       // Support: IE<9
-       try {
-               delete div.test;
-       } catch( e ) {
-               support.deleteExpando = false;
-       }
-
-       // Check if we can trust getAttribute("value")
-       input = document.createElement("input");
-       input.setAttribute( "value", "" );
-       support.input = input.getAttribute( "value" ) === "";
-
-       // Check if an input maintains its value after becoming a radio
-       input.value = "t";
-       input.setAttribute( "type", "radio" );
-       support.radioValue = input.value === "t";
-
-       // #11217 - WebKit loses check when the name is after the checked attribute
-       input.setAttribute( "checked", "t" );
-       input.setAttribute( "name", "t" );
-
-       fragment = document.createDocumentFragment();
-       fragment.appendChild( input );
-
-       // Check if a disconnected checkbox will retain its checked
-       // value of true after appended to the DOM (IE6/7)
-       support.appendChecked = input.checked;
-
-       // WebKit doesn't clone checked state correctly in fragments
-       support.checkClone = fragment.cloneNode( true ).cloneNode( true ).lastChild.checked;
-
-       // Support: IE<9
-       // Opera does not clone events (and typeof div.attachEvent === undefined).
-       // IE9-10 clones events bound via attachEvent, but they don't trigger with .click()
-       if ( div.attachEvent ) {
-               div.attachEvent( "onclick", function() {
-                       support.noCloneEvent = false;
-               });
-
-               div.cloneNode( true ).click();
-       }
-
-       // Support: IE<9 (lack submit/change bubble), Firefox 17+ (lack focusin event)
-       // Beware of CSP restrictions (https://developer.mozilla.org/en/Security/CSP)
-       for ( i in { submit: true, change: true, focusin: true }) {
-               div.setAttribute( eventName = "on" + i, "t" );
-
-               support[ i + "Bubbles" ] = eventName in window || div.attributes[ eventName ].expando === false;
-       }
-
-       div.style.backgroundClip = "content-box";
-       div.cloneNode( true ).style.backgroundClip = "";
-       support.clearCloneStyle = div.style.backgroundClip === "content-box";
-
-       // Support: IE<9
-       // Iteration over object's inherited properties before its own.
-       for ( i in jQuery( support ) ) {
-               break;
-       }
-       support.ownLast = i !== "0";
-
-       // Run tests that need a body at doc ready
-       jQuery(function() {
-               var container, marginDiv, tds,
-                       divReset = "padding:0;margin:0;border:0;display:block;box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;",
-                       body = document.getElementsByTagName("body")[0];
-
-               if ( !body ) {
-                       // Return for frameset docs that don't have a body
-                       return;
-               }
-
-               container = document.createElement("div");
-               container.style.cssText = "border:0;width:0;height:0;position:absolute;top:0;left:-9999px;margin-top:1px";
-
-               body.appendChild( container ).appendChild( div );
-
-               // Support: IE8
-               // Check if table cells still have offsetWidth/Height when they are set
-               // to display:none and there are still other visible table cells in a
-               // table row; if so, offsetWidth/Height are not reliable for use when
-               // determining if an element has been hidden directly using
-               // display:none (it is still safe to use offsets if a parent element is
-               // hidden; don safety goggles and see bug #4512 for more information).
-               div.innerHTML = "<table><tr><td></td><td>t</td></tr></table>";
-               tds = div.getElementsByTagName("td");
-               tds[ 0 ].style.cssText = "padding:0;margin:0;border:0;display:none";
-               isSupported = ( tds[ 0 ].offsetHeight === 0 );
-
-               tds[ 0 ].style.display = "";
-               tds[ 1 ].style.display = "none";
-
-               // Support: IE8
-               // Check if empty table cells still have offsetWidth/Height
-               support.reliableHiddenOffsets = isSupported && ( tds[ 0 ].offsetHeight === 0 );
-
-               // Check box-sizing and margin behavior.
-               div.innerHTML = "";
-               div.style.cssText = "box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%;";
-
-               // Workaround failing boxSizing test due to offsetWidth returning wrong value
-               // with some non-1 values of body zoom, ticket #13543
-               jQuery.swap( body, body.style.zoom != null ? { zoom: 1 } : {}, function() {
-                       support.boxSizing = div.offsetWidth === 4;
-               });
-
-               // Use window.getComputedStyle because jsdom on node.js will break without it.
-               if ( window.getComputedStyle ) {
-                       support.pixelPosition = ( window.getComputedStyle( div, null ) || {} ).top !== "1%";
-                       support.boxSizingReliable = ( window.getComputedStyle( div, null ) || { width: "4px" } ).width === "4px";
-
-                       // Check if div with explicit width and no margin-right incorrectly
-                       // gets computed margin-right based on width of container. (#3333)
-                       // Fails in WebKit before Feb 2011 nightlies
-                       // WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right
-                       marginDiv = div.appendChild( document.createElement("div") );
-                       marginDiv.style.cssText = div.style.cssText = divReset;
-                       marginDiv.style.marginRight = marginDiv.style.width = "0";
-                       div.style.width = "1px";
-
-                       support.reliableMarginRight =
-                               !parseFloat( ( window.getComputedStyle( marginDiv, null ) || {} ).marginRight );
-               }
-
-               if ( typeof div.style.zoom !== core_strundefined ) {
-                       // Support: IE<8
-                       // Check if natively block-level elements act like inline-block
-                       // elements when setting their display to 'inline' and giving
-                       // them layout
-                       div.innerHTML = "";
-                       div.style.cssText = divReset + "width:1px;padding:1px;display:inline;zoom:1";
-                       support.inlineBlockNeedsLayout = ( div.offsetWidth === 3 );
-
-                       // Support: IE6
-                       // Check if elements with layout shrink-wrap their children
-                       div.style.display = "block";
-                       div.innerHTML = "<div></div>";
-                       div.firstChild.style.width = "5px";
-                       support.shrinkWrapBlocks = ( div.offsetWidth !== 3 );
-
-                       if ( support.inlineBlockNeedsLayout ) {
-                               // Prevent IE 6 from affecting layout for positioned elements #11048
-                               // Prevent IE from shrinking the body in IE 7 mode #12869
-                               // Support: IE<8
-                               body.style.zoom = 1;
-                       }
-               }
-
-               body.removeChild( container );
-
-               // Null elements to avoid leaks in IE
-               container = div = tds = marginDiv = null;
-       });
-
-       // Null elements to avoid leaks in IE
-       all = select = fragment = opt = a = input = null;
-
-       return support;
-})({});
-
-var rbrace = /(?:\{[\s\S]*\}|\[[\s\S]*\])$/,
-       rmultiDash = /([A-Z])/g;
-
-function internalData( elem, name, data, pvt /* Internal Use Only */ ){
-       if ( !jQuery.acceptData( elem ) ) {
-               return;
-       }
-
-       var ret, thisCache,
-               internalKey = jQuery.expando,
-
-               // We have to handle DOM nodes and JS objects differently because IE6-7
-               // can't GC object references properly across the DOM-JS boundary
-               isNode = elem.nodeType,
-
-               // Only DOM nodes need the global jQuery cache; JS object data is
-               // attached directly to the object so GC can occur automatically
-               cache = isNode ? jQuery.cache : elem,
-
-               // Only defining an ID for JS objects if its cache already exists allows
-               // the code to shortcut on the same path as a DOM node with no cache
-               id = isNode ? elem[ internalKey ] : elem[ internalKey ] && internalKey;
-
-       // Avoid doing any more work than we need to when trying to get data on an
-       // object that has no data at all
-       if ( (!id || !cache[id] || (!pvt && !cache[id].data)) && data === undefined && typeof name === "string" ) {
-               return;
-       }
-
-       if ( !id ) {
-               // Only DOM nodes need a new unique ID for each element since their data
-               // ends up in the global cache
-               if ( isNode ) {
-                       id = elem[ internalKey ] = core_deletedIds.pop() || jQuery.guid++;
-               } else {
-                       id = internalKey;
-               }
-       }
-
-       if ( !cache[ id ] ) {
-               // Avoid exposing jQuery metadata on plain JS objects when the object
-               // is serialized using JSON.stringify
-               cache[ id ] = isNode ? {} : { toJSON: jQuery.noop };
-       }
-
-       // An object can be passed to jQuery.data instead of a key/value pair; this gets
-       // shallow copied over onto the existing cache
-       if ( typeof name === "object" || typeof name === "function" ) {
-               if ( pvt ) {
-                       cache[ id ] = jQuery.extend( cache[ id ], name );
-               } else {
-                       cache[ id ].data = jQuery.extend( cache[ id ].data, name );
-               }
-       }
-
-       thisCache = cache[ id ];
-
-       // jQuery data() is stored in a separate object inside the object's internal data
-       // cache in order to avoid key collisions between internal data and user-defined
-       // data.
-       if ( !pvt ) {
-               if ( !thisCache.data ) {
-                       thisCache.data = {};
-               }
-
-               thisCache = thisCache.data;
-       }
-
-       if ( data !== undefined ) {
-               thisCache[ jQuery.camelCase( name ) ] = data;
-       }
-
-       // Check for both converted-to-camel and non-converted data property names
-       // If a data property was specified
-       if ( typeof name === "string" ) {
-
-               // First Try to find as-is property data
-               ret = thisCache[ name ];
-
-               // Test for null|undefined property data
-               if ( ret == null ) {
-
-                       // Try to find the camelCased property
-                       ret = thisCache[ jQuery.camelCase( name ) ];
-               }
-       } else {
-               ret = thisCache;
-       }
-
-       return ret;
-}
-
-function internalRemoveData( elem, name, pvt ) {
-       if ( !jQuery.acceptData( elem ) ) {
-               return;
-       }
-
-       var thisCache, i,
-               isNode = elem.nodeType,
-
-               // See jQuery.data for more information
-               cache = isNode ? jQuery.cache : elem,
-               id = isNode ? elem[ jQuery.expando ] : jQuery.expando;
-
-       // If there is already no cache entry for this object, there is no
-       // purpose in continuing
-       if ( !cache[ id ] ) {
-               return;
-       }
-
-       if ( name ) {
-
-               thisCache = pvt ? cache[ id ] : cache[ id ].data;
-
-               if ( thisCache ) {
-
-                       // Support array or space separated string names for data keys
-                       if ( !jQuery.isArray( name ) ) {
-
-                               // try the string as a key before any manipulation
-                               if ( name in thisCache ) {
-                                       name = [ name ];
-                               } else {
-
-                                       // split the camel cased version by spaces unless a key with the spaces exists
-                                       name = jQuery.camelCase( name );
-                                       if ( name in thisCache ) {
-                                               name = [ name ];
-                                       } else {
-                                               name = name.split(" ");
-                                       }
-                               }
-                       } else {
-                               // If "name" is an array of keys...
-                               // When data is initially created, via ("key", "val") signature,
-                               // keys will be converted to camelCase.
-                               // Since there is no way to tell _how_ a key was added, remove
-                               // both plain key and camelCase key. #12786
-                               // This will only penalize the array argument path.
-                               name = name.concat( jQuery.map( name, jQuery.camelCase ) );
-                       }
-
-                       i = name.length;
-                       while ( i-- ) {
-                               delete thisCache[ name[i] ];
-                       }
-
-                       // If there is no data left in the cache, we want to continue
-                       // and let the cache object itself get destroyed
-                       if ( pvt ? !isEmptyDataObject(thisCache) : !jQuery.isEmptyObject(thisCache) ) {
-                               return;
-                       }
-               }
-       }
-
-       // See jQuery.data for more information
-       if ( !pvt ) {
-               delete cache[ id ].data;
-
-               // Don't destroy the parent cache unless the internal data object
-               // had been the only thing left in it
-               if ( !isEmptyDataObject( cache[ id ] ) ) {
-                       return;
-               }
-       }
-
-       // Destroy the cache
-       if ( isNode ) {
-               jQuery.cleanData( [ elem ], true );
-
-       // Use delete when supported for expandos or `cache` is not a window per isWindow (#10080)
-       /* jshint eqeqeq: false */
-       } else if ( jQuery.support.deleteExpando || cache != cache.window ) {
-               /* jshint eqeqeq: true */
-               delete cache[ id ];
-
-       // When all else fails, null
-       } else {
-               cache[ id ] = null;
-       }
-}
-
-jQuery.extend({
-       cache: {},
-
-       // The following elements throw uncatchable exceptions if you
-       // attempt to add expando properties to them.
-       noData: {
-               "applet": true,
-               "embed": true,
-               // Ban all objects except for Flash (which handle expandos)
-               "object": "clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
-       },
-
-       hasData: function( elem ) {
-               elem = elem.nodeType ? jQuery.cache[ elem[jQuery.expando] ] : elem[ jQuery.expando ];
-               return !!elem && !isEmptyDataObject( elem );
-       },
-
-       data: function( elem, name, data ) {
-               return internalData( elem, name, data );
-       },
-
-       removeData: function( elem, name ) {
-               return internalRemoveData( elem, name );
-       },
-
-       // For internal use only.
-       _data: function( elem, name, data ) {
-               return internalData( elem, name, data, true );
-       },
-
-       _removeData: function( elem, name ) {
-               return internalRemoveData( elem, name, true );
-       },
-
-       // A method for determining if a DOM node can handle the data expando
-       acceptData: function( elem ) {
-               // Do not set data on non-element because it will not be cleared (#8335).
-               if ( elem.nodeType && elem.nodeType !== 1 && elem.nodeType !== 9 ) {
-                       return false;
-               }
-
-               var noData = elem.nodeName && jQuery.noData[ elem.nodeName.toLowerCase() ];
-
-               // nodes accept data unless otherwise specified; rejection can be conditional
-               return !noData || noData !== true && elem.getAttribute("classid") === noData;
-       }
-});
-
-jQuery.fn.extend({
-       data: function( key, value ) {
-               var attrs, name,
-                       data = null,
-                       i = 0,
-                       elem = this[0];
-
-               // Special expections of .data basically thwart jQuery.access,
-               // so implement the relevant behavior ourselves
-
-               // Gets all values
-               if ( key === undefined ) {
-                       if ( this.length ) {
-                               data = jQuery.data( elem );
-
-                               if ( elem.nodeType === 1 && !jQuery._data( elem, "parsedAttrs" ) ) {
-                                       attrs = elem.attributes;
-                                       for ( ; i < attrs.length; i++ ) {
-                                               name = attrs[i].name;
-
-                                               if ( name.indexOf("data-") === 0 ) {
-                                                       name = jQuery.camelCase( name.slice(5) );
-
-                                                       dataAttr( elem, name, data[ name ] );
-                                               }
-                                       }
-                                       jQuery._data( elem, "parsedAttrs", true );
-                               }
-                       }
-
-                       return data;
-               }
-
-               // Sets multiple values
-               if ( typeof key === "object" ) {
-                       return this.each(function() {
-                               jQuery.data( this, key );
-                       });
-               }
-
-               return arguments.length > 1 ?
-
-                       // Sets one value
-                       this.each(function() {
-                               jQuery.data( this, key, value );
-                       }) :
-
-                       // Gets one value
-                       // Try to fetch any internally stored data first
-                       elem ? dataAttr( elem, key, jQuery.data( elem, key ) ) : null;
-       },
-
-       removeData: function( key ) {
-               return this.each(function() {
-                       jQuery.removeData( this, key );
-               });
-       }
-});
-
-function dataAttr( elem, key, data ) {
-       // If nothing was found internally, try to fetch any
-       // data from the HTML5 data-* attribute
-       if ( data === undefined && elem.nodeType === 1 ) {
-
-               var name = "data-" + key.replace( rmultiDash, "-$1" ).toLowerCase();
-
-               data = elem.getAttribute( name );
-
-               if ( typeof data === "string" ) {
-                       try {
-                               data = data === "true" ? true :
-                                       data === "false" ? false :
-                                       data === "null" ? null :
-                                       // Only convert to a number if it doesn't change the string
-                                       +data + "" === data ? +data :
-                                       rbrace.test( data ) ? jQuery.parseJSON( data ) :
-                                               data;
-                       } catch( e ) {}
-
-                       // Make sure we set the data so it isn't changed later
-                       jQuery.data( elem, key, data );
-
-               } else {
-                       data = undefined;
-               }
-       }
-
-       return data;
-}
-
-// checks a cache object for emptiness
-function isEmptyDataObject( obj ) {
-       var name;
-       for ( name in obj ) {
-
-               // if the public data object is empty, the private is still empty
-               if ( name === "data" && jQuery.isEmptyObject( obj[name] ) ) {
-                       continue;
-               }
-               if ( name !== "toJSON" ) {
-                       return false;
-               }
-       }
-
-       return true;
-}
-jQuery.extend({
-       queue: function( elem, type, data ) {
-               var queue;
-
-               if ( elem ) {
-                       type = ( type || "fx" ) + "queue";
-                       queue = jQuery._data( elem, type );
-
-                       // Speed up dequeue by getting out quickly if this is just a lookup
-                       if ( data ) {
-                               if ( !queue || jQuery.isArray(data) ) {
-                                       queue = jQuery._data( elem, type, jQuery.makeArray(data) );
-                               } else {
-                                       queue.push( data );
-                               }
-                       }
-                       return queue || [];
-               }
-       },
-
-       dequeue: function( elem, type ) {
-               type = type || "fx";
-
-               var queue = jQuery.queue( elem, type ),
-                       startLength = queue.length,
-                       fn = queue.shift(),
-                       hooks = jQuery._queueHooks( elem, type ),
-                       next = function() {
-                               jQuery.dequeue( elem, type );
-                       };
-
-               // If the fx queue is dequeued, always remove the progress sentinel
-               if ( fn === "inprogress" ) {
-                       fn = queue.shift();
-                       startLength--;
-               }
-
-               if ( fn ) {
-
-                       // Add a progress sentinel to prevent the fx queue from being
-                       // automatically dequeued
-                       if ( type === "fx" ) {
-                               queue.unshift( "inprogress" );
-                       }
-
-                       // clear up the last queue stop function
-                       delete hooks.stop;
-                       fn.call( elem, next, hooks );
-               }
-
-               if ( !startLength && hooks ) {
-                       hooks.empty.fire();
-               }
-       },
-
-       // not intended for public consumption - generates a queueHooks object, or returns the current one
-       _queueHooks: function( elem, type ) {
-               var key = type + "queueHooks";
-               return jQuery._data( elem, key ) || jQuery._data( elem, key, {
-                       empty: jQuery.Callbacks("once memory").add(function() {
-                               jQuery._removeData( elem, type + "queue" );
-                               jQuery._removeData( elem, key );
-                       })
-               });
-       }
-});
-
-jQuery.fn.extend({
-       queue: function( type, data ) {
-               var setter = 2;
-
-               if ( typeof type !== "string" ) {
-                       data = type;
-                       type = "fx";
-                       setter--;
-               }
-
-               if ( arguments.length < setter ) {
-                       return jQuery.queue( this[0], type );
-               }
-
-               return data === undefined ?
-                       this :
-                       this.each(function() {
-                               var queue = jQuery.queue( this, type, data );
-
-                               // ensure a hooks for this queue
-                               jQuery._queueHooks( this, type );
-
-                               if ( type === "fx" && queue[0] !== "inprogress" ) {
-                                       jQuery.dequeue( this, type );
-                               }
-                       });
-       },
-       dequeue: function( type ) {
-               return this.each(function() {
-                       jQuery.dequeue( this, type );
-               });
-       },
-       // Based off of the plugin by Clint Helfers, with permission.
-       // http://blindsignals.com/index.php/2009/07/jquery-delay/
-       delay: function( time, type ) {
-               time = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time;
-               type = type || "fx";
-
-               return this.queue( type, function( next, hooks ) {
-                       var timeout = setTimeout( next, time );
-                       hooks.stop = function() {
-                               clearTimeout( timeout );
-                       };
-               });
-       },
-       clearQueue: function( type ) {
-               return this.queue( type || "fx", [] );
-       },
-       // Get a promise resolved when queues of a certain type
-       // are emptied (fx is the type by default)
-       promise: function( type, obj ) {
-               var tmp,
-                       count = 1,
-                       defer = jQuery.Deferred(),
-                       elements = this,
-                       i = this.length,
-                       resolve = function() {
-                               if ( !( --count ) ) {
-                                       defer.resolveWith( elements, [ elements ] );
-                               }
-                       };
-
-               if ( typeof type !== "string" ) {
-                       obj = type;
-                       type = undefined;
-               }
-               type = type || "fx";
-
-               while( i-- ) {
-                       tmp = jQuery._data( elements[ i ], type + "queueHooks" );
-                       if ( tmp && tmp.empty ) {
-                               count++;
-                               tmp.empty.add( resolve );
-                       }
-               }
-               resolve();
-               return defer.promise( obj );
-       }
-});
-var nodeHook, boolHook,
-       rclass = /[\t\r\n\f]/g,
-       rreturn = /\r/g,
-       rfocusable = /^(?:input|select|textarea|button|object)$/i,
-       rclickable = /^(?:a|area)$/i,
-       ruseDefault = /^(?:checked|selected)$/i,
-       getSetAttribute = jQuery.support.getSetAttribute,
-       getSetInput = jQuery.support.input;
-
-jQuery.fn.extend({
-       attr: function( name, value ) {
-               return jQuery.access( this, jQuery.attr, name, value, arguments.length > 1 );
-       },
-
-       removeAttr: function( name ) {
-               return this.each(function() {
-                       jQuery.removeAttr( this, name );
-               });
-       },
-
-       prop: function( name, value ) {
-               return jQuery.access( this, jQuery.prop, name, value, arguments.length > 1 );
-       },
-
-       removeProp: function( name ) {
-               name = jQuery.propFix[ name ] || name;
-               return this.each(function() {
-                       // try/catch handles cases where IE balks (such as removing a property on window)
-                       try {
-                               this[ name ] = undefined;
-                               delete this[ name ];
-                       } catch( e ) {}
-               });
-       },
-
-       addClass: function( value ) {
-               var classes, elem, cur, clazz, j,
-                       i = 0,
-                       len = this.length,
-                       proceed = typeof value === "string" && value;
-
-               if ( jQuery.isFunction( value ) ) {
-                       return this.each(function( j ) {
-                               jQuery( this ).addClass( value.call( this, j, this.className ) );
-                       });
-               }
-
-               if ( proceed ) {
-                       // The disjunction here is for better compressibility (see removeClass)
-                       classes = ( value || "" ).match( core_rnotwhite ) || [];
-
-                       for ( ; i < len; i++ ) {
-                               elem = this[ i ];
-                               cur = elem.nodeType === 1 && ( elem.className ?
-                                       ( " " + elem.className + " " ).replace( rclass, " " ) :
-                                       " "
-                               );
-
-                               if ( cur ) {
-                                       j = 0;
-                                       while ( (clazz = classes[j++]) ) {
-                                               if ( cur.indexOf( " " + clazz + " " ) < 0 ) {
-                                                       cur += clazz + " ";
-                                               }
-                                       }
-                                       elem.className = jQuery.trim( cur );
-
-                               }
-                       }
-               }
-
-               return this;
-       },
-
-       removeClass: function( value ) {
-               var classes, elem, cur, clazz, j,
-                       i = 0,
-                       len = this.length,
-                       proceed = arguments.length === 0 || typeof value === "string" && value;
-
-               if ( jQuery.isFunction( value ) ) {
-                       return this.each(function( j ) {
-                               jQuery( this ).removeClass( value.call( this, j, this.className ) );
-                       });
-               }
-               if ( proceed ) {
-                       classes = ( value || "" ).match( core_rnotwhite ) || [];
-
-                       for ( ; i < len; i++ ) {
-                               elem = this[ i ];
-                               // This expression is here for better compressibility (see addClass)
-                               cur = elem.nodeType === 1 && ( elem.className ?
-                                       ( " " + elem.className + " " ).replace( rclass, " " ) :
-                                       ""
-                               );
-
-                               if ( cur ) {
-                                       j = 0;
-                                       while ( (clazz = classes[j++]) ) {
-                                               // Remove *all* instances
-                                               while ( cur.indexOf( " " + clazz + " " ) >= 0 ) {
-                                                       cur = cur.replace( " " + clazz + " ", " " );
-                                               }
-                                       }
-                                       elem.className = value ? jQuery.trim( cur ) : "";
-                               }
-                       }
-               }
-
-               return this;
-       },
-
-       toggleClass: function( value, stateVal ) {
-               var type = typeof value;
-
-               if ( typeof stateVal === "boolean" && type === "string" ) {
-                       return stateVal ? this.addClass( value ) : this.removeClass( value );
-               }
-
-               if ( jQuery.isFunction( value ) ) {
-                       return this.each(function( i ) {
-                               jQuery( this ).toggleClass( value.call(this, i, this.className, stateVal), stateVal );
-                       });
-               }
-
-               return this.each(function() {
-                       if ( type === "string" ) {
-                               // toggle individual class names
-                               var className,
-                                       i = 0,
-                                       self = jQuery( this ),
-                                       classNames = value.match( core_rnotwhite ) || [];
-
-                               while ( (className = classNames[ i++ ]) ) {
-                                       // check each className given, space separated list
-                                       if ( self.hasClass( className ) ) {
-                                               self.removeClass( className );
-                                       } else {
-                                               self.addClass( className );
-                                       }
-                               }
-
-                       // Toggle whole class name
-                       } else if ( type === core_strundefined || type === "boolean" ) {
-                               if ( this.className ) {
-                                       // store className if set
-                                       jQuery._data( this, "__className__", this.className );
-                               }
-
-                               // If the element has a class name or if we're passed "false",
-                               // then remove the whole classname (if there was one, the above saved it).
-                               // Otherwise bring back whatever was previously saved (if anything),
-                               // falling back to the empty string if nothing was stored.
-                               this.className = this.className || value === false ? "" : jQuery._data( this, "__className__" ) || "";
-                       }
-               });
-       },
-
-       hasClass: function( selector ) {
-               var className = " " + selector + " ",
-                       i = 0,
-                       l = this.length;
-               for ( ; i < l; i++ ) {
-                       if ( this[i].nodeType === 1 && (" " + this[i].className + " ").replace(rclass, " ").indexOf( className ) >= 0 ) {
-                               return true;
-                       }
-               }
-
-               return false;
-       },
-
-       val: function( value ) {
-               var ret, hooks, isFunction,
-                       elem = this[0];
-
-               if ( !arguments.length ) {
-                       if ( elem ) {
-                               hooks = jQuery.valHooks[ elem.type ] || jQuery.valHooks[ elem.nodeName.toLowerCase() ];
-
-                               if ( hooks && "get" in hooks && (ret = hooks.get( elem, "value" )) !== undefined ) {
-                                       return ret;
-                               }
-
-                               ret = elem.value;
-
-                               return typeof ret === "string" ?
-                                       // handle most common string cases
-                                       ret.replace(rreturn, "") :
-                                       // handle cases where value is null/undef or number
-                                       ret == null ? "" : ret;
-                       }
-
-                       return;
-               }
-
-               isFunction = jQuery.isFunction( value );
-
-               return this.each(function( i ) {
-                       var val;
-
-                       if ( this.nodeType !== 1 ) {
-                               return;
-                       }
-
-                       if ( isFunction ) {
-                               val = value.call( this, i, jQuery( this ).val() );
-                       } else {
-                               val = value;
-                       }
-
-                       // Treat null/undefined as ""; convert numbers to string
-                       if ( val == null ) {
-                               val = "";
-                       } else if ( typeof val === "number" ) {
-                               val += "";
-                       } else if ( jQuery.isArray( val ) ) {
-                               val = jQuery.map(val, function ( value ) {
-                                       return value == null ? "" : value + "";
-                               });
-                       }
-
-                       hooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ];
-
-                       // If set returns undefined, fall back to normal setting
-                       if ( !hooks || !("set" in hooks) || hooks.set( this, val, "value" ) === undefined ) {
-                               this.value = val;
-                       }
-               });
-       }
-});
-
-jQuery.extend({
-       valHooks: {
-               option: {
-                       get: function( elem ) {
-                               // Use proper attribute retrieval(#6932, #12072)
-                               var val = jQuery.find.attr( elem, "value" );
-                               return val != null ?
-                                       val :
-                                       elem.text;
-                       }
-               },
-               select: {
-                       get: function( elem ) {
-                               var value, option,
-                                       options = elem.options,
-                                       index = elem.selectedIndex,
-                                       one = elem.type === "select-one" || index < 0,
-                                       values = one ? null : [],
-                                       max = one ? index + 1 : options.length,
-                                       i = index < 0 ?
-                                               max :
-                                               one ? index : 0;
-
-                               // Loop through all the selected options
-                               for ( ; i < max; i++ ) {
-                                       option = options[ i ];
-
-                                       // oldIE doesn't update selected after form reset (#2551)
-                                       if ( ( option.selected || i === index ) &&
-                                                       // Don't return options that are disabled or in a disabled optgroup
-                                                       ( jQuery.support.optDisabled ? !option.disabled : option.getAttribute("disabled") === null ) &&
-                                                       ( !option.parentNode.disabled || !jQuery.nodeName( option.parentNode, "optgroup" ) ) ) {
-
-                                               // Get the specific value for the option
-                                               value = jQuery( option ).val();
-
-                                               // We don't need an array for one selects
-                                               if ( one ) {
-                                                       return value;
-                                               }
-
-                                               // Multi-Selects return an array
-                                               values.push( value );
-                                       }
-                               }
-
-                               return values;
-                       },
-
-                       set: function( elem, value ) {
-                               var optionSet, option,
-                                       options = elem.options,
-                                       values = jQuery.makeArray( value ),
-                                       i = options.length;
-
-                               while ( i-- ) {
-                                       option = options[ i ];
-                                       if ( (option.selected = jQuery.inArray( jQuery(option).val(), values ) >= 0) ) {
-                                               optionSet = true;
-                                       }
-                               }
-
-                               // force browsers to behave consistently when non-matching value is set
-                               if ( !optionSet ) {
-                                       elem.selectedIndex = -1;
-                               }
-                               return values;
-                       }
-               }
-       },
-
-       attr: function( elem, name, value ) {
-               var hooks, ret,
-                       nType = elem.nodeType;
-
-               // don't get/set attributes on text, comment and attribute nodes
-               if ( !elem || nType === 3 || nType === 8 || nType === 2 ) {
-                       return;
-               }
-
-               // Fallback to prop when attributes are not supported
-               if ( typeof elem.getAttribute === core_strundefined ) {
-                       return jQuery.prop( elem, name, value );
-               }
-
-               // All attributes are lowercase
-               // Grab necessary hook if one is defined
-               if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {
-                       name = name.toLowerCase();
-                       hooks = jQuery.attrHooks[ name ] ||
-                               ( jQuery.expr.match.bool.test( name ) ? boolHook : nodeHook );
-               }
-
-               if ( value !== undefined ) {
-
-                       if ( value === null ) {
-                               jQuery.removeAttr( elem, name );
-
-                       } else if ( hooks && "set" in hooks && (ret = hooks.set( elem, value, name )) !== undefined ) {
-                               return ret;
-
-                       } else {
-                               elem.setAttribute( name, value + "" );
-                               return value;
-                       }
-
-               } else if ( hooks && "get" in hooks && (ret = hooks.get( elem, name )) !== null ) {
-                       return ret;
-
-               } else {
-                       ret = jQuery.find.attr( elem, name );
-
-                       // Non-existent attributes return null, we normalize to undefined
-                       return ret == null ?
-                               undefined :
-                               ret;
-               }
-       },
-
-       removeAttr: function( elem, value ) {
-               var name, propName,
-                       i = 0,
-                       attrNames = value && value.match( core_rnotwhite );
-
-               if ( attrNames && elem.nodeType === 1 ) {
-                       while ( (name = attrNames[i++]) ) {
-                               propName = jQuery.propFix[ name ] || name;
-
-                               // Boolean attributes get special treatment (#10870)
-                               if ( jQuery.expr.match.bool.test( name ) ) {
-                                       // Set corresponding property to false
-                                       if ( getSetInput && getSetAttribute || !ruseDefault.test( name ) ) {
-                                               elem[ propName ] = false;
-                                       // Support: IE<9
-                                       // Also clear defaultChecked/defaultSelected (if appropriate)
-                                       } else {
-                                               elem[ jQuery.camelCase( "default-" + name ) ] =
-                                                       elem[ propName ] = false;
-                                       }
-
-                               // See #9699 for explanation of this approach (setting first, then removal)
-                               } else {
-                                       jQuery.attr( elem, name, "" );
-                               }
-
-                               elem.removeAttribute( getSetAttribute ? name : propName );
-                       }
-               }
-       },
-
-       attrHooks: {
-               type: {
-                       set: function( elem, value ) {
-                               if ( !jQuery.support.radioValue && value === "radio" && jQuery.nodeName(elem, "input") ) {
-                                       // Setting the type on a radio button after the value resets the value in IE6-9
-                                       // Reset value to default in case type is set after value during creation
-                                       var val = elem.value;
-                                       elem.setAttribute( "type", value );
-                                       if ( val ) {
-                                               elem.value = val;
-                                       }
-                                       return value;
-                               }
-                       }
-               }
-       },
-
-       propFix: {
-               "for": "htmlFor",
-               "class": "className"
-       },
-
-       prop: function( elem, name, value ) {
-               var ret, hooks, notxml,
-                       nType = elem.nodeType;
-
-               // don't get/set properties on text, comment and attribute nodes
-               if ( !elem || nType === 3 || nType === 8 || nType === 2 ) {
-                       return;
-               }
-
-               notxml = nType !== 1 || !jQuery.isXMLDoc( elem );
-
-               if ( notxml ) {
-                       // Fix name and attach hooks
-                       name = jQuery.propFix[ name ] || name;
-                       hooks = jQuery.propHooks[ name ];
-               }
-
-               if ( value !== undefined ) {
-                       return hooks && "set" in hooks && (ret = hooks.set( elem, value, name )) !== undefined ?
-                               ret :
-                               ( elem[ name ] = value );
-
-               } else {
-                       return hooks && "get" in hooks && (ret = hooks.get( elem, name )) !== null ?
-                               ret :
-                               elem[ name ];
-               }
-       },
-
-       propHooks: {
-               tabIndex: {
-                       get: function( elem ) {
-                               // elem.tabIndex doesn't always return the correct value when it hasn't been explicitly set
-                               // http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/
-                               // Use proper attribute retrieval(#12072)
-                               var tabindex = jQuery.find.attr( elem, "tabindex" );
-
-                               return tabindex ?
-                                       parseInt( tabindex, 10 ) :
-                                       rfocusable.test( elem.nodeName ) || rclickable.test( elem.nodeName ) && elem.href ?
-                                               0 :
-                                               -1;
-                       }
-               }
-       }
-});
-
-// Hooks for boolean attributes
-boolHook = {
-       set: function( elem, value, name ) {
-               if ( value === false ) {
-                       // Remove boolean attributes when set to false
-                       jQuery.removeAttr( elem, name );
-               } else if ( getSetInput && getSetAttribute || !ruseDefault.test( name ) ) {
-                       // IE<8 needs the *property* name
-                       elem.setAttribute( !getSetAttribute && jQuery.propFix[ name ] || name, name );
-
-               // Use defaultChecked and defaultSelected for oldIE
-               } else {
-                       elem[ jQuery.camelCase( "default-" + name ) ] = elem[ name ] = true;
-               }
-
-               return name;
-       }
-};
-jQuery.each( jQuery.expr.match.bool.source.match( /\w+/g ), function( i, name ) {
-       var getter = jQuery.expr.attrHandle[ name ] || jQuery.find.attr;
-
-       jQuery.expr.attrHandle[ name ] = getSetInput && getSetAttribute || !ruseDefault.test( name ) ?
-               function( elem, name, isXML ) {
-                       var fn = jQuery.expr.attrHandle[ name ],
-                               ret = isXML ?
-                                       undefined :
-                                       /* jshint eqeqeq: false */
-                                       (jQuery.expr.attrHandle[ name ] = undefined) !=
-                                               getter( elem, name, isXML ) ?
-
-                                               name.toLowerCase() :
-                                               null;
-                       jQuery.expr.attrHandle[ name ] = fn;
-                       return ret;
-               } :
-               function( elem, name, isXML ) {
-                       return isXML ?
-                               undefined :
-                               elem[ jQuery.camelCase( "default-" + name ) ] ?
-                                       name.toLowerCase() :
-                                       null;
-               };
-});
-
-// fix oldIE attroperties
-if ( !getSetInput || !getSetAttribute ) {
-       jQuery.attrHooks.value = {
-               set: function( elem, value, name ) {
-                       if ( jQuery.nodeName( elem, "input" ) ) {
-                               // Does not return so that setAttribute is also used
-                               elem.defaultValue = value;
-                       } else {
-                               // Use nodeHook if defined (#1954); otherwise setAttribute is fine
-                               return nodeHook && nodeHook.set( elem, value, name );
-                       }
-               }
-       };
-}
-
-// IE6/7 do not support getting/setting some attributes with get/setAttribute
-if ( !getSetAttribute ) {
-
-       // Use this for any attribute in IE6/7
-       // This fixes almost every IE6/7 issue
-       nodeHook = {
-               set: function( elem, value, name ) {
-                       // Set the existing or create a new attribute node
-                       var ret = elem.getAttributeNode( name );
-                       if ( !ret ) {
-                               elem.setAttributeNode(
-                                       (ret = elem.ownerDocument.createAttribute( name ))
-                               );
-                       }
-
-                       ret.value = value += "";
-
-                       // Break association with cloned elements by also using setAttribute (#9646)
-                       return name === "value" || value === elem.getAttribute( name ) ?
-                               value :
-                               undefined;
-               }
-       };
-       jQuery.expr.attrHandle.id = jQuery.expr.attrHandle.name = jQuery.expr.attrHandle.coords =
-               // Some attributes are constructed with empty-string values when not defined
-               function( elem, name, isXML ) {
-                       var ret;
-                       return isXML ?
-                               undefined :
-                               (ret = elem.getAttributeNode( name )) && ret.value !== "" ?
-                                       ret.value :
-                                       null;
-               };
-       jQuery.valHooks.button = {
-               get: function( elem, name ) {
-                       var ret = elem.getAttributeNode( name );
-                       return ret && ret.specified ?
-                               ret.value :
-                               undefined;
-               },
-               set: nodeHook.set
-       };
-
-       // Set contenteditable to false on removals(#10429)
-       // Setting to empty string throws an error as an invalid value
-       jQuery.attrHooks.contenteditable = {
-               set: function( elem, value, name ) {
-                       nodeHook.set( elem, value === "" ? false : value, name );
-               }
-       };
-
-       // Set width and height to auto instead of 0 on empty string( Bug #8150 )
-       // This is for removals
-       jQuery.each([ "width", "height" ], function( i, name ) {
-               jQuery.attrHooks[ name ] = {
-                       set: function( elem, value ) {
-                               if ( value === "" ) {
-                                       elem.setAttribute( name, "auto" );
-                                       return value;
-                               }
-                       }
-               };
-       });
-}
-
-
-// Some attributes require a special call on IE
-// http://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx
-if ( !jQuery.support.hrefNormalized ) {
-       // href/src property should get the full normalized URL (#10299/#12915)
-       jQuery.each([ "href", "src" ], function( i, name ) {
-               jQuery.propHooks[ name ] = {
-                       get: function( elem ) {
-                               return elem.getAttribute( name, 4 );
-                       }
-               };
-       });
-}
-
-if ( !jQuery.support.style ) {
-       jQuery.attrHooks.style = {
-               get: function( elem ) {
-                       // Return undefined in the case of empty string
-                       // Note: IE uppercases css property names, but if we were to .toLowerCase()
-                       // .cssText, that would destroy case senstitivity in URL's, like in "background"
-                       return elem.style.cssText || undefined;
-               },
-               set: function( elem, value ) {
-                       return ( elem.style.cssText = value + "" );
-               }
-       };
-}
-
-// Safari mis-reports the default selected property of an option
-// Accessing the parent's selectedIndex property fixes it
-if ( !jQuery.support.optSelected ) {
-       jQuery.propHooks.selected = {
-               get: function( elem ) {
-                       var parent = elem.parentNode;
-
-                       if ( parent ) {
-                               parent.selectedIndex;
-
-                               // Make sure that it also works with optgroups, see #5701
-                               if ( parent.parentNode ) {
-                                       parent.parentNode.selectedIndex;
-                               }
-                       }
-                       return null;
-               }
-       };
-}
-
-jQuery.each([
-       "tabIndex",
-       "readOnly",
-       "maxLength",
-       "cellSpacing",
-       "cellPadding",
-       "rowSpan",
-       "colSpan",
-       "useMap",
-       "frameBorder",
-       "contentEditable"
-], function() {
-       jQuery.propFix[ this.toLowerCase() ] = this;
-});
-
-// IE6/7 call enctype encoding
-if ( !jQuery.support.enctype ) {
-       jQuery.propFix.enctype = "encoding";
-}
-
-// Radios and checkboxes getter/setter
-jQuery.each([ "radio", "checkbox" ], function() {
-       jQuery.valHooks[ this ] = {
-               set: function( elem, value ) {
-                       if ( jQuery.isArray( value ) ) {
-                               return ( elem.checked = jQuery.inArray( jQuery(elem).val(), value ) >= 0 );
-                       }
-               }
-       };
-       if ( !jQuery.support.checkOn ) {
-               jQuery.valHooks[ this ].get = function( elem ) {
-                       // Support: Webkit
-                       // "" is returned instead of "on" if a value isn't specified
-                       return elem.getAttribute("value") === null ? "on" : elem.value;
-               };
-       }
-});
-var rformElems = /^(?:input|select|textarea)$/i,
-       rkeyEvent = /^key/,
-       rmouseEvent = /^(?:mouse|contextmenu)|click/,
-       rfocusMorph = /^(?:focusinfocus|focusoutblur)$/,
-       rtypenamespace = /^([^.]*)(?:\.(.+)|)$/;
-
-function returnTrue() {
-       return true;
-}
-
-function returnFalse() {
-       return false;
-}
-
-function safeActiveElement() {
-       try {
-               return document.activeElement;
-       } catch ( err ) { }
-}
-
-/*
- * Helper functions for managing events -- not part of the public interface.
- * Props to Dean Edwards' addEvent library for many of the ideas.
- */
-jQuery.event = {
-
-       global: {},
-
-       add: function( elem, types, handler, data, selector ) {
-               var tmp, events, t, handleObjIn,
-                       special, eventHandle, handleObj,
-                       handlers, type, namespaces, origType,
-                       elemData = jQuery._data( elem );
-
-               // Don't attach events to noData or text/comment nodes (but allow plain objects)
-               if ( !elemData ) {
-                       return;
-               }
-
-               // Caller can pass in an object of custom data in lieu of the handler
-               if ( handler.handler ) {
-                       handleObjIn = handler;
-                       handler = handleObjIn.handler;
-                       selector = handleObjIn.selector;
-               }
-
-               // Make sure that the handler has a unique ID, used to find/remove it later
-               if ( !handler.guid ) {
-                       handler.guid = jQuery.guid++;
-               }
-
-               // Init the element's event structure and main handler, if this is the first
-               if ( !(events = elemData.events) ) {
-                       events = elemData.events = {};
-               }
-               if ( !(eventHandle = elemData.handle) ) {
-                       eventHandle = elemData.handle = function( e ) {
-                               // Discard the second event of a jQuery.event.trigger() and
-                               // when an event is called after a page has unloaded
-                               return typeof jQuery !== core_strundefined && (!e || jQuery.event.triggered !== e.type) ?
-                                       jQuery.event.dispatch.apply( eventHandle.elem, arguments ) :
-                                       undefined;
-                       };
-                       // Add elem as a property of the handle fn to prevent a memory leak with IE non-native events
-                       eventHandle.elem = elem;
-               }
-
-               // Handle multiple events separated by a space
-               types = ( types || "" ).match( core_rnotwhite ) || [""];
-               t = types.length;
-               while ( t-- ) {
-                       tmp = rtypenamespace.exec( types[t] ) || [];
-                       type = origType = tmp[1];
-                       namespaces = ( tmp[2] || "" ).split( "." ).sort();
-
-                       // There *must* be a type, no attaching namespace-only handlers
-                       if ( !type ) {
-                               continue;
-                       }
-
-                       // If event changes its type, use the special event handlers for the changed type
-                       special = jQuery.event.special[ type ] || {};
-
-                       // If selector defined, determine special event api type, otherwise given type
-                       type = ( selector ? special.delegateType : special.bindType ) || type;
-
-                       // Update special based on newly reset type
-                       special = jQuery.event.special[ type ] || {};
-
-                       // handleObj is passed to all event handlers
-                       handleObj = jQuery.extend({
-                               type: type,
-                               origType: origType,
-                               data: data,
-                               handler: handler,
-                               guid: handler.guid,
-                               selector: selector,
-                               needsContext: selector && jQuery.expr.match.needsContext.test( selector ),
-                               namespace: namespaces.join(".")
-                       }, handleObjIn );
-
-                       // Init the event handler queue if we're the first
-                       if ( !(handlers = events[ type ]) ) {
-                               handlers = events[ type ] = [];
-                               handlers.delegateCount = 0;
-
-                               // Only use addEventListener/attachEvent if the special events handler returns false
-                               if ( !special.setup || special.setup.call( elem, data, namespaces, eventHandle ) === false ) {
-                                       // Bind the global event handler to the element
-                                       if ( elem.addEventListener ) {
-                                               elem.addEventListener( type, eventHandle, false );
-
-                                       } else if ( elem.attachEvent ) {
-                                               elem.attachEvent( "on" + type, eventHandle );
-                                       }
-                               }
-                       }
-
-                       if ( special.add ) {
-                               special.add.call( elem, handleObj );
-
-                               if ( !handleObj.handler.guid ) {
-                                       handleObj.handler.guid = handler.guid;
-                               }
-                       }
-
-                       // Add to the element's handler list, delegates in front
-                       if ( selector ) {
-                               handlers.splice( handlers.delegateCount++, 0, handleObj );
-                       } else {
-                               handlers.push( handleObj );
-                       }
-
-                       // Keep track of which events have ever been used, for event optimization
-                       jQuery.event.global[ type ] = true;
-               }
-
-               // Nullify elem to prevent memory leaks in IE
-               elem = null;
-       },
-
-       // Detach an event or set of events from an element
-       remove: function( elem, types, handler, selector, mappedTypes ) {
-               var j, handleObj, tmp,
-                       origCount, t, events,
-                       special, handlers, type,
-                       namespaces, origType,
-                       elemData = jQuery.hasData( elem ) && jQuery._data( elem );
-
-               if ( !elemData || !(events = elemData.events) ) {
-                       return;
-               }
-
-               // Once for each type.namespace in types; type may be omitted
-               types = ( types || "" ).match( core_rnotwhite ) || [""];
-               t = types.length;
-               while ( t-- ) {
-                       tmp = rtypenamespace.exec( types[t] ) || [];
-                       type = origType = tmp[1];
-                       namespaces = ( tmp[2] || "" ).split( "." ).sort();
-
-                       // Unbind all events (on this namespace, if provided) for the element
-                       if ( !type ) {
-                               for ( type in events ) {
-                                       jQuery.event.remove( elem, type + types[ t ], handler, selector, true );
-                               }
-                               continue;
-                       }
-
-                       special = jQuery.event.special[ type ] || {};
-                       type = ( selector ? special.delegateType : special.bindType ) || type;
-                       handlers = events[ type ] || [];
-                       tmp = tmp[2] && new RegExp( "(^|\\.)" + namespaces.join("\\.(?:.*\\.|)") + "(\\.|$)" );
-
-                       // Remove matching events
-                       origCount = j = handlers.length;
-                       while ( j-- ) {
-                               handleObj = handlers[ j ];
-
-                               if ( ( mappedTypes || origType === handleObj.origType ) &&
-                                       ( !handler || handler.guid === handleObj.guid ) &&
-                                       ( !tmp || tmp.test( handleObj.namespace ) ) &&
-                                       ( !selector || selector === handleObj.selector || selector === "**" && handleObj.selector ) ) {
-                                       handlers.splice( j, 1 );
-
-                                       if ( handleObj.selector ) {
-                                               handlers.delegateCount--;
-                                       }
-                                       if ( special.remove ) {
-                                               special.remove.call( elem, handleObj );
-                                       }
-                               }
-                       }
-
-                       // Remove generic event handler if we removed something and no more handlers exist
-                       // (avoids potential for endless recursion during removal of special event handlers)
-                       if ( origCount && !handlers.length ) {
-                               if ( !special.teardown || special.teardown.call( elem, namespaces, elemData.handle ) === false ) {
-                                       jQuery.removeEvent( elem, type, elemData.handle );
-                               }
-
-                               delete events[ type ];
-                       }
-               }
-
-               // Remove the expando if it's no longer used
-               if ( jQuery.isEmptyObject( events ) ) {
-                       delete elemData.handle;
-
-                       // removeData also checks for emptiness and clears the expando if empty
-                       // so use it instead of delete
-                       jQuery._removeData( elem, "events" );
-               }
-       },
-
-       trigger: function( event, data, elem, onlyHandlers ) {
-               var handle, ontype, cur,
-                       bubbleType, special, tmp, i,
-                       eventPath = [ elem || document ],
-                       type = core_hasOwn.call( event, "type" ) ? event.type : event,
-                       namespaces = core_hasOwn.call( event, "namespace" ) ? event.namespace.split(".") : [];
-
-               cur = tmp = elem = elem || document;
-
-               // Don't do events on text and comment nodes
-               if ( elem.nodeType === 3 || elem.nodeType === 8 ) {
-                       return;
-               }
-
-               // focus/blur morphs to focusin/out; ensure we're not firing them right now
-               if ( rfocusMorph.test( type + jQuery.event.triggered ) ) {
-                       return;
-               }
-
-               if ( type.indexOf(".") >= 0 ) {
-                       // Namespaced trigger; create a regexp to match event type in handle()
-                       namespaces = type.split(".");
-                       type = namespaces.shift();
-                       namespaces.sort();
-               }
-               ontype = type.indexOf(":") < 0 && "on" + type;
-
-               // Caller can pass in a jQuery.Event object, Object, or just an event type string
-               event = event[ jQuery.expando ] ?
-                       event :
-                       new jQuery.Event( type, typeof event === "object" && event );
-
-               // Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true)
-               event.isTrigger = onlyHandlers ? 2 : 3;
-               event.namespace = namespaces.join(".");
-               event.namespace_re = event.namespace ?
-                       new RegExp( "(^|\\.)" + namespaces.join("\\.(?:.*\\.|)") + "(\\.|$)" ) :
-                       null;
-
-               // Clean up the event in case it is being reused
-               event.result = undefined;
-               if ( !event.target ) {
-                       event.target = elem;
-               }
-
-               // Clone any incoming data and prepend the event, creating the handler arg list
-               data = data == null ?
-                       [ event ] :
-                       jQuery.makeArray( data, [ event ] );
-
-               // Allow special events to draw outside the lines
-               special = jQuery.event.special[ type ] || {};
-               if ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) {
-                       return;
-               }
-
-               // Determine event propagation path in advance, per W3C events spec (#9951)
-               // Bubble up to document, then to window; watch for a global ownerDocument var (#9724)
-               if ( !onlyHandlers && !special.noBubble && !jQuery.isWindow( elem ) ) {
-
-                       bubbleType = special.delegateType || type;
-                       if ( !rfocusMorph.test( bubbleType + type ) ) {
-                               cur = cur.parentNode;
-                       }
-                       for ( ; cur; cur = cur.parentNode ) {
-                               eventPath.push( cur );
-                               tmp = cur;
-                       }
-
-                       // Only add window if we got to document (e.g., not plain obj or detached DOM)
-                       if ( tmp === (elem.ownerDocument || document) ) {
-                               eventPath.push( tmp.defaultView || tmp.parentWindow || window );
-                       }
-               }
-
-               // Fire handlers on the event path
-               i = 0;
-               while ( (cur = eventPath[i++]) && !event.isPropagationStopped() ) {
-
-                       event.type = i > 1 ?
-                               bubbleType :
-                               special.bindType || type;
-
-                       // jQuery handler
-                       handle = ( jQuery._data( cur, "events" ) || {} )[ event.type ] && jQuery._data( cur, "handle" );
-                       if ( handle ) {
-                               handle.apply( cur, data );
-                       }
-
-                       // Native handler
-                       handle = ontype && cur[ ontype ];
-                       if ( handle && jQuery.acceptData( cur ) && handle.apply && handle.apply( cur, data ) === false ) {
-                               event.preventDefault();
-                       }
-               }
-               event.type = type;
-
-               // If nobody prevented the default action, do it now
-               if ( !onlyHandlers && !event.isDefaultPrevented() ) {
-
-                       if ( (!special._default || special._default.apply( eventPath.pop(), data ) === false) &&
-                               jQuery.acceptData( elem ) ) {
-
-                               // Call a native DOM method on the target with the same name name as the event.
-                               // Can't use an .isFunction() check here because IE6/7 fails that test.
-                               // Don't do default actions on window, that's where global variables be (#6170)
-                               if ( ontype && elem[ type ] && !jQuery.isWindow( elem ) ) {
-
-                                       // Don't re-trigger an onFOO event when we call its FOO() method
-                                       tmp = elem[ ontype ];
-
-                                       if ( tmp ) {
-                                               elem[ ontype ] = null;
-                                       }
-
-                                       // Prevent re-triggering of the same event, since we already bubbled it above
-                                       jQuery.event.triggered = type;
-                                       try {
-                                               elem[ type ]();
-                                       } catch ( e ) {
-                                               // IE<9 dies on focus/blur to hidden element (#1486,#12518)
-                                               // only reproducible on winXP IE8 native, not IE9 in IE8 mode
-                                       }
-                                       jQuery.event.triggered = undefined;
-
-                                       if ( tmp ) {
-                                               elem[ ontype ] = tmp;
-                                       }
-                               }
-                       }
-               }
-
-               return event.result;
-       },
-
-       dispatch: function( event ) {
-
-               // Make a writable jQuery.Event from the native event object
-               event = jQuery.event.fix( event );
-
-               var i, ret, handleObj, matched, j,
-                       handlerQueue = [],
-                       args = core_slice.call( arguments ),
-                       handlers = ( jQuery._data( this, "events" ) || {} )[ event.type ] || [],
-                       special = jQuery.event.special[ event.type ] || {};
-
-               // Use the fix-ed jQuery.Event rather than the (read-only) native event
-               args[0] = event;
-               event.delegateTarget = this;
-
-               // Call the preDispatch hook for the mapped type, and let it bail if desired
-               if ( special.preDispatch && special.preDispatch.call( this, event ) === false ) {
-                       return;
-               }
-
-               // Determine handlers
-               handlerQueue = jQuery.event.handlers.call( this, event, handlers );
-
-               // Run delegates first; they may want to stop propagation beneath us
-               i = 0;
-               while ( (matched = handlerQueue[ i++ ]) && !event.isPropagationStopped() ) {
-                       event.currentTarget = matched.elem;
-
-                       j = 0;
-                       while ( (handleObj = matched.handlers[ j++ ]) && !event.isImmediatePropagationStopped() ) {
-
-                               // Triggered event must either 1) have no namespace, or
-                               // 2) have namespace(s) a subset or equal to those in the bound event (both can have no namespace).
-                               if ( !event.namespace_re || event.namespace_re.test( handleObj.namespace ) ) {
-
-                                       event.handleObj = handleObj;
-                                       event.data = handleObj.data;
-
-                                       ret = ( (jQuery.event.special[ handleObj.origType ] || {}).handle || handleObj.handler )
-                                                       .apply( matched.elem, args );
-
-                                       if ( ret !== undefined ) {
-                                               if ( (event.result = ret) === false ) {
-                                                       event.preventDefault();
-                                                       event.stopPropagation();
-                                               }
-                                       }
-                               }
-                       }
-               }
-
-               // Call the postDispatch hook for the mapped type
-               if ( special.postDispatch ) {
-                       special.postDispatch.call( this, event );
-               }
-
-               return event.result;
-       },
-
-       handlers: function( event, handlers ) {
-               var sel, handleObj, matches, i,
-                       handlerQueue = [],
-                       delegateCount = handlers.delegateCount,
-                       cur = event.target;
-
-               // Find delegate handlers
-               // Black-hole SVG <use> instance trees (#13180)
-               // Avoid non-left-click bubbling in Firefox (#3861)
-               if ( delegateCount && cur.nodeType && (!event.button || event.type !== "click") ) {
-
-                       /* jshint eqeqeq: false */
-                       for ( ; cur != this; cur = cur.parentNode || this ) {
-                               /* jshint eqeqeq: true */
-
-                               // Don't check non-elements (#13208)
-                               // Don't process clicks on disabled elements (#6911, #8165, #11382, #11764)
-                               if ( cur.nodeType === 1 && (cur.disabled !== true || event.type !== "click") ) {
-                                       matches = [];
-                                       for ( i = 0; i < delegateCount; i++ ) {
-                                               handleObj = handlers[ i ];
-
-                                               // Don't conflict with Object.prototype properties (#13203)
-                                               sel = handleObj.selector + " ";
-
-                                               if ( matches[ sel ] === undefined ) {
-                                                       matches[ sel ] = handleObj.needsContext ?
-                                                               jQuery( sel, this ).index( cur ) >= 0 :
-                                                               jQuery.find( sel, this, null, [ cur ] ).length;
-                                               }
-                                               if ( matches[ sel ] ) {
-                                                       matches.push( handleObj );
-                                               }
-                                       }
-                                       if ( matches.length ) {
-                                               handlerQueue.push({ elem: cur, handlers: matches });
-                                       }
-                               }
-                       }
-               }
-
-               // Add the remaining (directly-bound) handlers
-               if ( delegateCount < handlers.length ) {
-                       handlerQueue.push({ elem: this, handlers: handlers.slice( delegateCount ) });
-               }
-
-               return handlerQueue;
-       },
-
-       fix: function( event ) {
-               if ( event[ jQuery.expando ] ) {
-                       return event;
-               }
-
-               // Create a writable copy of the event object and normalize some properties
-               var i, prop, copy,
-                       type = event.type,
-                       originalEvent = event,
-                       fixHook = this.fixHooks[ type ];
-
-               if ( !fixHook ) {
-                       this.fixHooks[ type ] = fixHook =
-                               rmouseEvent.test( type ) ? this.mouseHooks :
-                               rkeyEvent.test( type ) ? this.keyHooks :
-                               {};
-               }
-               copy = fixHook.props ? this.props.concat( fixHook.props ) : this.props;
-
-               event = new jQuery.Event( originalEvent );
-
-               i = copy.length;
-               while ( i-- ) {
-                       prop = copy[ i ];
-                       event[ prop ] = originalEvent[ prop ];
-               }
-
-               // Support: IE<9
-               // Fix target property (#1925)
-               if ( !event.target ) {
-                       event.target = originalEvent.srcElement || document;
-               }
-
-               // Support: Chrome 23+, Safari?
-               // Target should not be a text node (#504, #13143)
-               if ( event.target.nodeType === 3 ) {
-                       event.target = event.target.parentNode;
-               }
-
-               // Support: IE<9
-               // For mouse/key events, metaKey==false if it's undefined (#3368, #11328)
-               event.metaKey = !!event.metaKey;
-
-               return fixHook.filter ? fixHook.filter( event, originalEvent ) : event;
-       },
-
-       // Includes some event props shared by KeyEvent and MouseEvent
-       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( event, original ) {
-
-                       // Add which for key events
-                       if ( event.which == null ) {
-                               event.which = original.charCode != null ? original.charCode : original.keyCode;
-                       }
-
-                       return event;
-               }
-       },
-
-       mouseHooks: {
-               props: "button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),
-               filter: function( event, original ) {
-                       var body, eventDoc, doc,
-                               button = original.button,
-                               fromElement = original.fromElement;
-
-                       // Calculate pageX/Y if missing and clientX/Y available
-                       if ( event.pageX == null && original.clientX != null ) {
-                               eventDoc = event.target.ownerDocument || document;
-                               doc = eventDoc.documentElement;
-                               body = eventDoc.body;
-
-                               event.pageX = original.clientX + ( doc && doc.scrollLeft || body && body.scrollLeft || 0 ) - ( doc && doc.clientLeft || body && body.clientLeft || 0 );
-                               event.pageY = original.clientY + ( doc && doc.scrollTop  || body && body.scrollTop  || 0 ) - ( doc && doc.clientTop  || body && body.clientTop  || 0 );
-                       }
-
-                       // Add relatedTarget, if necessary
-                       if ( !event.relatedTarget && fromElement ) {
-                               event.relatedTarget = fromElement === event.target ? original.toElement : fromElement;
-                       }
-
-                       // Add which for click: 1 === left; 2 === middle; 3 === right
-                       // Note: button is not normalized, so don't use it
-                       if ( !event.which && button !== undefined ) {
-                               event.which = ( button & 1 ? 1 : ( button & 2 ? 3 : ( button & 4 ? 2 : 0 ) ) );
-                       }
-
-                       return event;
-               }
-       },
-
-       special: {
-               load: {
-                       // Prevent triggered image.load events from bubbling to window.load
-                       noBubble: true
-               },
-               focus: {
-                       // Fire native event if possible so blur/focus sequence is correct
-                       trigger: function() {
-                               if ( this !== safeActiveElement() && this.focus ) {
-                                       try {
-                                               this.focus();
-                                               return false;
-                                       } catch ( e ) {
-                                               // Support: IE<9
-                                               // If we error on focus to hidden element (#1486, #12518),
-                                               // let .trigger() run the handlers
-                                       }
-                               }
-                       },
-                       delegateType: "focusin"
-               },
-               blur: {
-                       trigger: function() {
-                               if ( this === safeActiveElement() && this.blur ) {
-                                       this.blur();
-                                       return false;
-                               }
-                       },
-                       delegateType: "focusout"
-               },
-               click: {
-                       // For checkbox, fire native event so checked state will be right
-                       trigger: function() {
-                               if ( jQuery.nodeName( this, "input" ) && this.type === "checkbox" && this.click ) {
-                                       this.click();
-                                       return false;
-                               }
-                       },
-
-                       // For cross-browser consistency, don't fire native .click() on links
-                       _default: function( event ) {
-                               return jQuery.nodeName( event.target, "a" );
-                       }
-               },
-
-               beforeunload: {
-                       postDispatch: function( event ) {
-
-                               // Even when returnValue equals to undefined Firefox will still show alert
-                               if ( event.result !== undefined ) {
-                                       event.originalEvent.returnValue = event.result;
-                               }
-                       }
-               }
-       },
-
-       simulate: function( type, elem, event, bubble ) {
-               // Piggyback on a donor event to simulate a different one.
-               // Fake originalEvent to avoid donor's stopPropagation, but if the
-               // simulated event prevents default then we do the same on the donor.
-               var e = jQuery.extend(
-                       new jQuery.Event(),
-                       event,
-                       {
-                               type: type,
-                               isSimulated: true,
-                               originalEvent: {}
-                       }
-               );
-               if ( bubble ) {
-                       jQuery.event.trigger( e, null, elem );
-               } else {
-                       jQuery.event.dispatch.call( elem, e );
-               }
-               if ( e.isDefaultPrevented() ) {
-                       event.preventDefault();
-               }
-       }
-};
-
-jQuery.removeEvent = document.removeEventListener ?
-       function( elem, type, handle ) {
-               if ( elem.removeEventListener ) {
-                       elem.removeEventListener( type, handle, false );
-               }
-       } :
-       function( elem, type, handle ) {
-               var name = "on" + type;
-
-               if ( elem.detachEvent ) {
-
-                       // #8545, #7054, preventing memory leaks for custom events in IE6-8
-                       // detachEvent needed property on element, by name of that event, to properly expose it to GC
-                       if ( typeof elem[ name ] === core_strundefined ) {
-                               elem[ name ] = null;
-                       }
-
-                       elem.detachEvent( name, handle );
-               }
-       };
-
-jQuery.Event = function( src, props ) {
-       // Allow instantiation without the 'new' keyword
-       if ( !(this instanceof jQuery.Event) ) {
-               return new jQuery.Event( src, props );
-       }
-
-       // Event object
-       if ( src && src.type ) {
-               this.originalEvent = src;
-               this.type = src.type;
-
-               // Events bubbling up the document may have been marked as prevented
-               // by a handler lower down the tree; reflect the correct value.
-               this.isDefaultPrevented = ( src.defaultPrevented || src.returnValue === false ||
-                       src.getPreventDefault && src.getPreventDefault() ) ? returnTrue : returnFalse;
-
-       // Event type
-       } else {
-               this.type = src;
-       }
-
-       // Put explicitly provided properties onto the event object
-       if ( props ) {
-               jQuery.extend( this, props );
-       }
-
-       // Create a timestamp if incoming event doesn't have one
-       this.timeStamp = src && src.timeStamp || jQuery.now();
-
-       // Mark it as fixed
-       this[ jQuery.expando ] = true;
-};
-
-// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding
-// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html
-jQuery.Event.prototype = {
-       isDefaultPrevented: returnFalse,
-       isPropagationStopped: returnFalse,
-       isImmediatePropagationStopped: returnFalse,
-
-       preventDefault: function() {
-               var e = this.originalEvent;
-
-               this.isDefaultPrevented = returnTrue;
-               if ( !e ) {
-                       return;
-               }
-
-               // If preventDefault exists, run it on the original event
-               if ( e.preventDefault ) {
-                       e.preventDefault();
-
-               // Support: IE
-               // Otherwise set the returnValue property of the original event to false
-               } else {
-                       e.returnValue = false;
-               }
-       },
-       stopPropagation: function() {
-               var e = this.originalEvent;
-
-               this.isPropagationStopped = returnTrue;
-               if ( !e ) {
-                       return;
-               }
-               // If stopPropagation exists, run it on the original event
-               if ( e.stopPropagation ) {
-                       e.stopPropagation();
-               }
-
-               // Support: IE
-               // Set the cancelBubble property of the original event to true
-               e.cancelBubble = true;
-       },
-       stopImmediatePropagation: function() {
-               this.isImmediatePropagationStopped = returnTrue;
-               this.stopPropagation();
-       }
-};
-
-// Create mouseenter/leave events using mouseover/out and event-time checks
-jQuery.each({
-       mouseenter: "mouseover",
-       mouseleave: "mouseout"
-}, function( orig, fix ) {
-       jQuery.event.special[ orig ] = {
-               delegateType: fix,
-               bindType: fix,
-
-               handle: function( event ) {
-                       var ret,
-                               target = this,
-                               related = event.relatedTarget,
-                               handleObj = event.handleObj;
-
-                       // For mousenter/leave call the handler if related is outside the target.
-                       // NB: No relatedTarget if the mouse left/entered the browser window
-                       if ( !related || (related !== target && !jQuery.contains( target, related )) ) {
-                               event.type = handleObj.origType;
-                               ret = handleObj.handler.apply( this, arguments );
-                               event.type = fix;
-                       }
-                       return ret;
-               }
-       };
-});
-
-// IE submit delegation
-if ( !jQuery.support.submitBubbles ) {
-
-       jQuery.event.special.submit = {
-               setup: function() {
-                       // Only need this for delegated form submit events
-                       if ( jQuery.nodeName( this, "form" ) ) {
-                               return false;
-                       }
-
-                       // Lazy-add a submit handler when a descendant form may potentially be submitted
-                       jQuery.event.add( this, "click._submit keypress._submit", function( e ) {
-                               // Node name check avoids a VML-related crash in IE (#9807)
-                               var elem = e.target,
-                                       form = jQuery.nodeName( elem, "input" ) || jQuery.nodeName( elem, "button" ) ? elem.form : undefined;
-                               if ( form && !jQuery._data( form, "submitBubbles" ) ) {
-                                       jQuery.event.add( form, "submit._submit", function( event ) {
-                                               event._submit_bubble = true;
-                                       });
-                                       jQuery._data( form, "submitBubbles", true );
-                               }
-                       });
-                       // return undefined since we don't need an event listener
-               },
-
-               postDispatch: function( event ) {
-                       // If form was submitted by the user, bubble the event up the tree
-                       if ( event._submit_bubble ) {
-                               delete event._submit_bubble;
-                               if ( this.parentNode && !event.isTrigger ) {
-                                       jQuery.event.simulate( "submit", this.parentNode, event, true );
-                               }
-                       }
-               },
-
-               teardown: function() {
-                       // Only need this for delegated form submit events
-                       if ( jQuery.nodeName( this, "form" ) ) {
-                               return false;
-                       }
-
-                       // Remove delegated handlers; cleanData eventually reaps submit handlers attached above
-                       jQuery.event.remove( this, "._submit" );
-               }
-       };
-}
-
-// IE change delegation and checkbox/radio fix
-if ( !jQuery.support.changeBubbles ) {
-
-       jQuery.event.special.change = {
-
-               setup: function() {
-
-                       if ( rformElems.test( this.nodeName ) ) {
-                               // IE doesn't fire change on a check/radio until blur; trigger it on click
-                               // after a propertychange. Eat the blur-change in special.change.handle.
-                               // This still fires onchange a second time for check/radio after blur.
-                               if ( this.type === "checkbox" || this.type === "radio" ) {
-                                       jQuery.event.add( this, "propertychange._change", function( event ) {
-                                               if ( event.originalEvent.propertyName === "checked" ) {
-                                                       this._just_changed = true;
-                                               }
-                                       });
-                                       jQuery.event.add( this, "click._change", function( event ) {
-                                               if ( this._just_changed && !event.isTrigger ) {
-                                                       this._just_changed = false;
-                                               }
-                                               // Allow triggered, simulated change events (#11500)
-                                               jQuery.event.simulate( "change", this, event, true );
-                                       });
-                               }
-                               return false;
-                       }
-                       // Delegated event; lazy-add a change handler on descendant inputs
-                       jQuery.event.add( this, "beforeactivate._change", function( e ) {
-                               var elem = e.target;
-
-                               if ( rformElems.test( elem.nodeName ) && !jQuery._data( elem, "changeBubbles" ) ) {
-                                       jQuery.event.add( elem, "change._change", function( event ) {
-                                               if ( this.parentNode && !event.isSimulated && !event.isTrigger ) {
-                                                       jQuery.event.simulate( "change", this.parentNode, event, true );
-                                               }
-                                       });
-                                       jQuery._data( elem, "changeBubbles", true );
-                               }
-                       });
-               },
-
-               handle: function( event ) {
-                       var elem = event.target;
-
-                       // Swallow native change events from checkbox/radio, we already triggered them above
-                       if ( this !== elem || event.isSimulated || event.isTrigger || (elem.type !== "radio" && elem.type !== "checkbox") ) {
-                               return event.handleObj.handler.apply( this, arguments );
-                       }
-               },
-
-               teardown: function() {
-                       jQuery.event.remove( this, "._change" );
-
-                       return !rformElems.test( this.nodeName );
-               }
-       };
-}
-
-// Create "bubbling" focus and blur events
-if ( !jQuery.support.focusinBubbles ) {
-       jQuery.each({ focus: "focusin", blur: "focusout" }, function( orig, fix ) {
-
-               // Attach a single capturing handler while someone wants focusin/focusout
-               var attaches = 0,
-                       handler = function( event ) {
-                               jQuery.event.simulate( fix, event.target, jQuery.event.fix( event ), true );
-                       };
-
-               jQuery.event.special[ fix ] = {
-                       setup: function() {
-                               if ( attaches++ === 0 ) {
-                                       document.addEventListener( orig, handler, true );
-                               }
-                       },
-                       teardown: function() {
-                               if ( --attaches === 0 ) {
-                                       document.removeEventListener( orig, handler, true );
-                               }
-                       }
-               };
-       });
-}
-
-jQuery.fn.extend({
-
-       on: function( types, selector, data, fn, /*INTERNAL*/ one ) {
-               var type, origFn;
-
-               // Types can be a map of types/handlers
-               if ( typeof types === "object" ) {
-                       // ( types-Object, selector, data )
-                       if ( typeof selector !== "string" ) {
-                               // ( types-Object, data )
-                               data = data || selector;
-                               selector = undefined;
-                       }
-                       for ( type in types ) {
-                               this.on( type, selector, data, types[ type ], one );
-                       }
-                       return this;
-               }
-
-               if ( data == null && fn == null ) {
-                       // ( types, fn )
-                       fn = selector;
-                       data = selector = undefined;
-               } else if ( fn == null ) {
-                       if ( typeof selector === "string" ) {
-                               // ( types, selector, fn )
-                               fn = data;
-                               data = undefined;
-                       } else {
-                               // ( types, data, fn )
-                               fn = data;
-                               data = selector;
-                               selector = undefined;
-                       }
-               }
-               if ( fn === false ) {
-                       fn = returnFalse;
-               } else if ( !fn ) {
-                       return this;
-               }
-
-               if ( one === 1 ) {
-                       origFn = fn;
-                       fn = function( event ) {
-                               // Can use an empty set, since event contains the info
-                               jQuery().off( event );
-                               return origFn.apply( this, arguments );
-                       };
-                       // Use same guid so caller can remove using origFn
-                       fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );
-               }
-               return this.each( function() {
-                       jQuery.event.add( this, types, fn, data, selector );
-               });
-       },
-       one: function( types, selector, data, fn ) {
-               return this.on( types, selector, data, fn, 1 );
-       },
-       off: function( types, selector, fn ) {
-               var handleObj, type;
-               if ( types && types.preventDefault && types.handleObj ) {
-                       // ( event )  dispatched jQuery.Event
-                       handleObj = types.handleObj;
-                       jQuery( types.delegateTarget ).off(
-                               handleObj.namespace ? handleObj.origType + "." + handleObj.namespace : handleObj.origType,
-                               handleObj.selector,
-                               handleObj.handler
-                       );
-                       return this;
-               }
-               if ( typeof types === "object" ) {
-                       // ( types-object [, selector] )
-                       for ( type in types ) {
-                               this.off( type, selector, types[ type ] );
-                       }
-                       return this;
-               }
-               if ( selector === false || typeof selector === "function" ) {
-                       // ( types [, fn] )
-                       fn = selector;
-                       selector = undefined;
-               }
-               if ( fn === false ) {
-                       fn = returnFalse;
-               }
-               return this.each(function() {
-                       jQuery.event.remove( this, types, fn, selector );
-               });
-       },
-
-       trigger: function( type, data ) {
-               return this.each(function() {
-                       jQuery.event.trigger( type, data, this );
-               });
-       },
-       triggerHandler: function( type, data ) {
-               var elem = this[0];
-               if ( elem ) {
-                       return jQuery.event.trigger( type, data, elem, true );
-               }
-       }
-});
-var isSimple = /^.[^:#\[\.,]*$/,
-       rparentsprev = /^(?:parents|prev(?:Until|All))/,
-       rneedsContext = jQuery.expr.match.needsContext,
-       // methods guaranteed to produce a unique set when starting from a unique set
-       guaranteedUnique = {
-               children: true,
-               contents: true,
-               next: true,
-               prev: true
-       };
-
-jQuery.fn.extend({
-       find: function( selector ) {
-               var i,
-                       ret = [],
-                       self = this,
-                       len = self.length;
-
-               if ( typeof selector !== "string" ) {
-                       return this.pushStack( jQuery( selector ).filter(function() {
-                               for ( i = 0; i < len; i++ ) {
-                                       if ( jQuery.contains( self[ i ], this ) ) {
-                                               return true;
-                                       }
-                               }
-                       }) );
-               }
-
-               for ( i = 0; i < len; i++ ) {
-                       jQuery.find( selector, self[ i ], ret );
-               }
-
-               // Needed because $( selector, context ) becomes $( context ).find( selector )
-               ret = this.pushStack( len > 1 ? jQuery.unique( ret ) : ret );
-               ret.selector = this.selector ? this.selector + " " + selector : selector;
-               return ret;
-       },
-
-       has: function( target ) {
-               var i,
-                       targets = jQuery( target, this ),
-                       len = targets.length;
-
-               return this.filter(function() {
-                       for ( i = 0; i < len; i++ ) {
-                               if ( jQuery.contains( this, targets[i] ) ) {
-                                       return true;
-                               }
-                       }
-               });
-       },
-
-       not: function( selector ) {
-               return this.pushStack( winnow(this, selector || [], true) );
-       },
-
-       filter: function( selector ) {
-               return this.pushStack( winnow(this, selector || [], false) );
-       },
-
-       is: function( selector ) {
-               return !!winnow(
-                       this,
-
-                       // If this is a positional/relative selector, check membership in the returned set
-                       // so $("p:first").is("p:last") won't return true for a doc with two "p".
-                       typeof selector === "string" && rneedsContext.test( selector ) ?
-                               jQuery( selector ) :
-                               selector || [],
-                       false
-               ).length;
-       },
-
-       closest: function( selectors, context ) {
-               var cur,
-                       i = 0,
-                       l = this.length,
-                       ret = [],
-                       pos = rneedsContext.test( selectors ) || typeof selectors !== "string" ?
-                               jQuery( selectors, context || this.context ) :
-                               0;
-
-               for ( ; i < l; i++ ) {
-                       for ( cur = this[i]; cur && cur !== context; cur = cur.parentNode ) {
-                               // Always skip document fragments
-                               if ( cur.nodeType < 11 && (pos ?
-                                       pos.index(cur) > -1 :
-
-                                       // Don't pass non-elements to Sizzle
-                                       cur.nodeType === 1 &&
-                                               jQuery.find.matchesSelector(cur, selectors)) ) {
-
-                                       cur = ret.push( cur );
-                                       break;
-                               }
-                       }
-               }
-
-               return this.pushStack( ret.length > 1 ? jQuery.unique( ret ) : ret );
-       },
-
-       // Determine the position of an element within
-       // the matched set of elements
-       index: function( elem ) {
-
-               // No argument, return index in parent
-               if ( !elem ) {
-                       return ( this[0] && this[0].parentNode ) ? this.first().prevAll().length : -1;
-               }
-
-               // index in selector
-               if ( typeof elem === "string" ) {
-                       return jQuery.inArray( this[0], jQuery( elem ) );
-               }
-
-               // Locate the position of the desired element
-               return jQuery.inArray(
-                       // If it receives a jQuery object, the first element is used
-                       elem.jquery ? elem[0] : elem, this );
-       },
-
-       add: function( selector, context ) {
-               var set = typeof selector === "string" ?
-                               jQuery( selector, context ) :
-                               jQuery.makeArray( selector && selector.nodeType ? [ selector ] : selector ),
-                       all = jQuery.merge( this.get(), set );
-
-               return this.pushStack( jQuery.unique(all) );
-       },
-
-       addBack: function( selector ) {
-               return this.add( selector == null ?
-                       this.prevObject : this.prevObject.filter(selector)
-               );
-       }
-});
-
-function sibling( cur, dir ) {
-       do {
-               cur = cur[ dir ];
-       } while ( cur && cur.nodeType !== 1 );
-
-       return cur;
-}
-
-jQuery.each({
-       parent: function( elem ) {
-               var parent = elem.parentNode;
-               return parent && parent.nodeType !== 11 ? parent : null;
-       },
-       parents: function( elem ) {
-               return jQuery.dir( elem, "parentNode" );
-       },
-       parentsUntil: function( elem, i, until ) {
-               return jQuery.dir( elem, "parentNode", until );
-       },
-       next: function( elem ) {
-               return sibling( elem, "nextSibling" );
-       },
-       prev: function( elem ) {
-               return sibling( elem, "previousSibling" );
-       },
-       nextAll: function( elem ) {
-               return jQuery.dir( elem, "nextSibling" );
-       },
-       prevAll: function( elem ) {
-               return jQuery.dir( elem, "previousSibling" );
-       },
-       nextUntil: function( elem, i, until ) {
-               return jQuery.dir( elem, "nextSibling", until );
-       },
-       prevUntil: function( elem, i, until ) {
-               return jQuery.dir( elem, "previousSibling", until );
-       },
-       siblings: function( elem ) {
-               return jQuery.sibling( ( elem.parentNode || {} ).firstChild, elem );
-       },
-       children: function( elem ) {
-               return jQuery.sibling( elem.firstChild );
-       },
-       contents: function( elem ) {
-               return jQuery.nodeName( elem, "iframe" ) ?
-                       elem.contentDocument || elem.contentWindow.document :
-                       jQuery.merge( [], elem.childNodes );
-       }
-}, function( name, fn ) {
-       jQuery.fn[ name ] = function( until, selector ) {
-               var ret = jQuery.map( this, fn, until );
-
-               if ( name.slice( -5 ) !== "Until" ) {
-                       selector = until;
-               }
-
-               if ( selector && typeof selector === "string" ) {
-                       ret = jQuery.filter( selector, ret );
-               }
-
-               if ( this.length > 1 ) {
-                       // Remove duplicates
-                       if ( !guaranteedUnique[ name ] ) {
-                               ret = jQuery.unique( ret );
-                       }
-
-                       // Reverse order for parents* and prev-derivatives
-                       if ( rparentsprev.test( name ) ) {
-                               ret = ret.reverse();
-                       }
-               }
-
-               return this.pushStack( ret );
-       };
-});
-
-jQuery.extend({
-       filter: function( expr, elems, not ) {
-               var elem = elems[ 0 ];
-
-               if ( not ) {
-                       expr = ":not(" + expr + ")";
-               }
-
-               return elems.length === 1 && elem.nodeType === 1 ?
-                       jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [] :
-                       jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) {
-                               return elem.nodeType === 1;
-                       }));
-       },
-
-       dir: function( elem, dir, until ) {
-               var matched = [],
-                       cur = elem[ dir ];
-
-               while ( cur && cur.nodeType !== 9 && (until === undefined || cur.nodeType !== 1 || !jQuery( cur ).is( until )) ) {
-                       if ( cur.nodeType === 1 ) {
-                               matched.push( cur );
-                       }
-                       cur = cur[dir];
-               }
-               return matched;
-       },
-
-       sibling: function( n, elem ) {
-               var r = [];
-
-               for ( ; n; n = n.nextSibling ) {
-                       if ( n.nodeType === 1 && n !== elem ) {
-                               r.push( n );
-                       }
-               }
-
-               return r;
-       }
-});
-
-// Implement the identical functionality for filter and not
-function winnow( elements, qualifier, not ) {
-       if ( jQuery.isFunction( qualifier ) ) {
-               return jQuery.grep( elements, function( elem, i ) {
-                       /* jshint -W018 */
-                       return !!qualifier.call( elem, i, elem ) !== not;
-               });
-
-       }
-
-       if ( qualifier.nodeType ) {
-               return jQuery.grep( elements, function( elem ) {
-                       return ( elem === qualifier ) !== not;
-               });
-
-       }
-
-       if ( typeof qualifier === "string" ) {
-               if ( isSimple.test( qualifier ) ) {
-                       return jQuery.filter( qualifier, elements, not );
-               }
-
-               qualifier = jQuery.filter( qualifier, elements );
-       }
-
-       return jQuery.grep( elements, function( elem ) {
-               return ( jQuery.inArray( elem, qualifier ) >= 0 ) !== not;
-       });
-}
-function createSafeFragment( document ) {
-       var list = nodeNames.split( "|" ),
-               safeFrag = document.createDocumentFragment();
-
-       if ( safeFrag.createElement ) {
-               while ( list.length ) {
-                       safeFrag.createElement(
-                               list.pop()
-                       );
-               }
-       }
-       return safeFrag;
-}
-
-var nodeNames = "abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|" +
-               "header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",
-       rinlinejQuery = / jQuery\d+="(?:null|\d+)"/g,
-       rnoshimcache = new RegExp("<(?:" + nodeNames + ")[\\s/>]", "i"),
-       rleadingWhitespace = /^\s+/,
-       rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,
-       rtagName = /<([\w:]+)/,
-       rtbody = /<tbody/i,
-       rhtml = /<|&#?\w+;/,
-       rnoInnerhtml = /<(?:script|style|link)/i,
-       manipulation_rcheckableType = /^(?:checkbox|radio)$/i,
-       // checked="checked" or checked
-       rchecked = /checked\s*(?:[^=]|=\s*.checked.)/i,
-       rscriptType = /^$|\/(?:java|ecma)script/i,
-       rscriptTypeMasked = /^true\/(.*)/,
-       rcleanScript = /^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g,
-
-       // We have to close these tags to support XHTML (#13200)
-       wrapMap = {
-               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>" ],
-
-               // IE6-8 can't serialize link, script, style, or any html5 (NoScope) tags,
-               // unless wrapped in a div with non-breaking characters in front of it.
-               _default: jQuery.support.htmlSerialize ? [ 0, "", "" ] : [ 1, "X<div>", "</div>"  ]
-       },
-       safeFragment = createSafeFragment( document ),
-       fragmentDiv = safeFragment.appendChild( document.createElement("div") );
-
-wrapMap.optgroup = wrapMap.option;
-wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;
-wrapMap.th = wrapMap.td;
-
-jQuery.fn.extend({
-       text: function( value ) {
-               return jQuery.access( this, function( value ) {
-                       return value === undefined ?
-                               jQuery.text( this ) :
-                               this.empty().append( ( this[0] && this[0].ownerDocument || document ).createTextNode( value ) );
-               }, null, value, arguments.length );
-       },
-
-       append: function() {
-               return this.domManip( arguments, function( elem ) {
-                       if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {
-                               var target = manipulationTarget( this, elem );
-                               target.appendChild( elem );
-                       }
-               });
-       },
-
-       prepend: function() {
-               return this.domManip( arguments, function( elem ) {
-                       if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {
-                               var target = manipulationTarget( this, elem );
-                               target.insertBefore( elem, target.firstChild );
-                       }
-               });
-       },
-
-       before: function() {
-               return this.domManip( arguments, function( elem ) {
-                       if ( this.parentNode ) {
-                               this.parentNode.insertBefore( elem, this );
-                       }
-               });
-       },
-
-       after: function() {
-               return this.domManip( arguments, function( elem ) {
-                       if ( this.parentNode ) {
-                               this.parentNode.insertBefore( elem, this.nextSibling );
-                       }
-               });
-       },
-
-       // keepData is for internal use only--do not document
-       remove: function( selector, keepData ) {
-               var elem,
-                       elems = selector ? jQuery.filter( selector, this ) : this,
-                       i = 0;
-
-               for ( ; (elem = elems[i]) != null; i++ ) {
-
-                       if ( !keepData && elem.nodeType === 1 ) {
-                               jQuery.cleanData( getAll( elem ) );
-                       }
-
-                       if ( elem.parentNode ) {
-                               if ( keepData && jQuery.contains( elem.ownerDocument, elem ) ) {
-                                       setGlobalEval( getAll( elem, "script" ) );
-                               }
-                               elem.parentNode.removeChild( elem );
-                       }
-               }
-
-               return this;
-       },
-
-       empty: function() {
-               var elem,
-                       i = 0;
-
-               for ( ; (elem = this[i]) != null; i++ ) {
-                       // Remove element nodes and prevent memory leaks
-                       if ( elem.nodeType === 1 ) {
-                               jQuery.cleanData( getAll( elem, false ) );
-                       }
-
-                       // Remove any remaining nodes
-                       while ( elem.firstChild ) {
-                               elem.removeChild( elem.firstChild );
-                       }
-
-                       // If this is a select, ensure that it displays empty (#12336)
-                       // Support: IE<9
-                       if ( elem.options && jQuery.nodeName( elem, "select" ) ) {
-                               elem.options.length = 0;
-                       }
-               }
-
-               return this;
-       },
-
-       clone: function( dataAndEvents, deepDataAndEvents ) {
-               dataAndEvents = dataAndEvents == null ? false : dataAndEvents;
-               deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;
-
-               return this.map( function () {
-                       return jQuery.clone( this, dataAndEvents, deepDataAndEvents );
-               });
-       },
-
-       html: function( value ) {
-               return jQuery.access( this, function( value ) {
-                       var elem = this[0] || {},
-                               i = 0,
-                               l = this.length;
-
-                       if ( value === undefined ) {
-                               return elem.nodeType === 1 ?
-                                       elem.innerHTML.replace( rinlinejQuery, "" ) :
-                                       undefined;
-                       }
-
-                       // See if we can take a shortcut and just use innerHTML
-                       if ( typeof value === "string" && !rnoInnerhtml.test( value ) &&
-                               ( jQuery.support.htmlSerialize || !rnoshimcache.test( value )  ) &&
-                               ( jQuery.support.leadingWhitespace || !rleadingWhitespace.test( value ) ) &&
-                               !wrapMap[ ( rtagName.exec( value ) || ["", ""] )[1].toLowerCase() ] ) {
-
-                               value = value.replace( rxhtmlTag, "<$1></$2>" );
-
-                               try {
-                                       for (; i < l; i++ ) {
-                                               // Remove element nodes and prevent memory leaks
-                                               elem = this[i] || {};
-                                               if ( elem.nodeType === 1 ) {
-                                                       jQuery.cleanData( getAll( elem, false ) );
-                                                       elem.innerHTML = value;
-                                               }
-                                       }
-
-                                       elem = 0;
-
-                               // If using innerHTML throws an exception, use the fallback method
-                               } catch(e) {}
-                       }
-
-                       if ( elem ) {
-                               this.empty().append( value );
-                       }
-               }, null, value, arguments.length );
-       },
-
-       replaceWith: function() {
-               var
-                       // Snapshot the DOM in case .domManip sweeps something relevant into its fragment
-                       args = jQuery.map( this, function( elem ) {
-                               return [ elem.nextSibling, elem.parentNode ];
-                       }),
-                       i = 0;
-
-               // Make the changes, replacing each context element with the new content
-               this.domManip( arguments, function( elem ) {
-                       var next = args[ i++ ],
-                               parent = args[ i++ ];
-
-                       if ( parent ) {
-                               // Don't use the snapshot next if it has moved (#13810)
-                               if ( next && next.parentNode !== parent ) {
-                                       next = this.nextSibling;
-                               }
-                               jQuery( this ).remove();
-                               parent.insertBefore( elem, next );
-                       }
-               // Allow new content to include elements from the context set
-               }, true );
-
-               // Force removal if there was no new content (e.g., from empty arguments)
-               return i ? this : this.remove();
-       },
-
-       detach: function( selector ) {
-               return this.remove( selector, true );
-       },
-
-       domManip: function( args, callback, allowIntersection ) {
-
-               // Flatten any nested arrays
-               args = core_concat.apply( [], args );
-
-               var first, node, hasScripts,
-                       scripts, doc, fragment,
-                       i = 0,
-                       l = this.length,
-                       set = this,
-                       iNoClone = l - 1,
-                       value = args[0],
-                       isFunction = jQuery.isFunction( value );
-
-               // We can't cloneNode fragments that contain checked, in WebKit
-               if ( isFunction || !( l <= 1 || typeof value !== "string" || jQuery.support.checkClone || !rchecked.test( value ) ) ) {
-                       return this.each(function( index ) {
-                               var self = set.eq( index );
-                               if ( isFunction ) {
-                                       args[0] = value.call( this, index, self.html() );
-                               }
-                               self.domManip( args, callback, allowIntersection );
-                       });
-               }
-
-               if ( l ) {
-                       fragment = jQuery.buildFragment( args, this[ 0 ].ownerDocument, false, !allowIntersection && this );
-                       first = fragment.firstChild;
-
-                       if ( fragment.childNodes.length === 1 ) {
-                               fragment = first;
-                       }
-
-                       if ( first ) {
-                               scripts = jQuery.map( getAll( fragment, "script" ), disableScript );
-                               hasScripts = scripts.length;
-
-                               // Use the original fragment for the last item instead of the first because it can end up
-                               // being emptied incorrectly in certain situations (#8070).
-                               for ( ; i < l; i++ ) {
-                                       node = fragment;
-
-                                       if ( i !== iNoClone ) {
-                                               node = jQuery.clone( node, true, true );
-
-                                               // Keep references to cloned scripts for later restoration
-                                               if ( hasScripts ) {
-                                                       jQuery.merge( scripts, getAll( node, "script" ) );
-                                               }
-                                       }
-
-                                       callback.call( this[i], node, i );
-                               }
-
-                               if ( hasScripts ) {
-                                       doc = scripts[ scripts.length - 1 ].ownerDocument;
-
-                                       // Reenable scripts
-                                       jQuery.map( scripts, restoreScript );
-
-                                       // Evaluate executable scripts on first document insertion
-                                       for ( i = 0; i < hasScripts; i++ ) {
-                                               node = scripts[ i ];
-                                               if ( rscriptType.test( node.type || "" ) &&
-                                                       !jQuery._data( node, "globalEval" ) && jQuery.contains( doc, node ) ) {
-
-                                                       if ( node.src ) {
-                                                               // Hope ajax is available...
-                                                               jQuery._evalUrl( node.src );
-                                                       } else {
-                                                               jQuery.globalEval( ( node.text || node.textContent || node.innerHTML || "" ).replace( rcleanScript, "" ) );
-                                                       }
-                                               }
-                                       }
-                               }
-
-                               // Fix #11809: Avoid leaking memory
-                               fragment = first = null;
-                       }
-               }
-
-               return this;
-       }
-});
-
-// Support: IE<8
-// Manipulating tables requires a tbody
-function manipulationTarget( elem, content ) {
-       return jQuery.nodeName( elem, "table" ) &&
-               jQuery.nodeName( content.nodeType === 1 ? content : content.firstChild, "tr" ) ?
-
-               elem.getElementsByTagName("tbody")[0] ||
-                       elem.appendChild( elem.ownerDocument.createElement("tbody") ) :
-               elem;
-}
-
-// Replace/restore the type attribute of script elements for safe DOM manipulation
-function disableScript( elem ) {
-       elem.type = (jQuery.find.attr( elem, "type" ) !== null) + "/" + elem.type;
-       return elem;
-}
-function restoreScript( elem ) {
-       var match = rscriptTypeMasked.exec( elem.type );
-       if ( match ) {
-               elem.type = match[1];
-       } else {
-               elem.removeAttribute("type");
-       }
-       return elem;
-}
-
-// Mark scripts as having already been evaluated
-function setGlobalEval( elems, refElements ) {
-       var elem,
-               i = 0;
-       for ( ; (elem = elems[i]) != null; i++ ) {
-               jQuery._data( elem, "globalEval", !refElements || jQuery._data( refElements[i], "globalEval" ) );
-       }
-}
-
-function cloneCopyEvent( src, dest ) {
-
-       if ( dest.nodeType !== 1 || !jQuery.hasData( src ) ) {
-               return;
-       }
-
-       var type, i, l,
-               oldData = jQuery._data( src ),
-               curData = jQuery._data( dest, oldData ),
-               events = oldData.events;
-
-       if ( events ) {
-               delete curData.handle;
-               curData.events = {};
-
-               for ( type in events ) {
-                       for ( i = 0, l = events[ type ].length; i < l; i++ ) {
-                               jQuery.event.add( dest, type, events[ type ][ i ] );
-                       }
-               }
-       }
-
-       // make the cloned public data object a copy from the original
-       if ( curData.data ) {
-               curData.data = jQuery.extend( {}, curData.data );
-       }
-}
-
-function fixCloneNodeIssues( src, dest ) {
-       var nodeName, e, data;
-
-       // We do not need to do anything for non-Elements
-       if ( dest.nodeType !== 1 ) {
-               return;
-       }
-
-       nodeName = dest.nodeName.toLowerCase();
-
-       // IE6-8 copies events bound via attachEvent when using cloneNode.
-       if ( !jQuery.support.noCloneEvent && dest[ jQuery.expando ] ) {
-               data = jQuery._data( dest );
-
-               for ( e in data.events ) {
-                       jQuery.removeEvent( dest, e, data.handle );
-               }
-
-               // Event data gets referenced instead of copied if the expando gets copied too
-               dest.removeAttribute( jQuery.expando );
-       }
-
-       // IE blanks contents when cloning scripts, and tries to evaluate newly-set text
-       if ( nodeName === "script" && dest.text !== src.text ) {
-               disableScript( dest ).text = src.text;
-               restoreScript( dest );
-
-       // IE6-10 improperly clones children of object elements using classid.
-       // IE10 throws NoModificationAllowedError if parent is null, #12132.
-       } else if ( nodeName === "object" ) {
-               if ( dest.parentNode ) {
-                       dest.outerHTML = src.outerHTML;
-               }
-
-               // This path appears unavoidable for IE9. When cloning an object
-               // element in IE9, the outerHTML strategy above is not sufficient.
-               // If the src has innerHTML and the destination does not,
-               // copy the src.innerHTML into the dest.innerHTML. #10324
-               if ( jQuery.support.html5Clone && ( src.innerHTML && !jQuery.trim(dest.innerHTML) ) ) {
-                       dest.innerHTML = src.innerHTML;
-               }
-
-       } else if ( nodeName === "input" && manipulation_rcheckableType.test( src.type ) ) {
-               // IE6-8 fails to persist the checked state of a cloned checkbox
-               // or radio button. Worse, IE6-7 fail to give the cloned element
-               // a checked appearance if the defaultChecked value isn't also set
-
-               dest.defaultChecked = dest.checked = src.checked;
-
-               // IE6-7 get confused and end up setting the value of a cloned
-               // checkbox/radio button to an empty string instead of "on"
-               if ( dest.value !== src.value ) {
-                       dest.value = src.value;
-               }
-
-       // IE6-8 fails to return the selected option to the default selected
-       // state when cloning options
-       } else if ( nodeName === "option" ) {
-               dest.defaultSelected = dest.selected = src.defaultSelected;
-
-       // IE6-8 fails to set the defaultValue to the correct value when
-       // cloning other types of input fields
-       } else if ( nodeName === "input" || nodeName === "textarea" ) {
-               dest.defaultValue = src.defaultValue;
-       }
-}
-
-jQuery.each({
-       appendTo: "append",
-       prependTo: "prepend",
-       insertBefore: "before",
-       insertAfter: "after",
-       replaceAll: "replaceWith"
-}, function( name, original ) {
-       jQuery.fn[ name ] = function( selector ) {
-               var elems,
-                       i = 0,
-                       ret = [],
-                       insert = jQuery( selector ),
-                       last = insert.length - 1;
-
-               for ( ; i <= last; i++ ) {
-                       elems = i === last ? this : this.clone(true);
-                       jQuery( insert[i] )[ original ]( elems );
-
-                       // Modern browsers can apply jQuery collections as arrays, but oldIE needs a .get()
-                       core_push.apply( ret, elems.get() );
-               }
-
-               return this.pushStack( ret );
-       };
-});
-
-function getAll( context, tag ) {
-       var elems, elem,
-               i = 0,
-               found = typeof context.getElementsByTagName !== core_strundefined ? context.getElementsByTagName( tag || "*" ) :
-                       typeof context.querySelectorAll !== core_strundefined ? context.querySelectorAll( tag || "*" ) :
-                       undefined;
-
-       if ( !found ) {
-               for ( found = [], elems = context.childNodes || context; (elem = elems[i]) != null; i++ ) {
-                       if ( !tag || jQuery.nodeName( elem, tag ) ) {
-                               found.push( elem );
-                       } else {
-                               jQuery.merge( found, getAll( elem, tag ) );
-                       }
-               }
-       }
-
-       return tag === undefined || tag && jQuery.nodeName( context, tag ) ?
-               jQuery.merge( [ context ], found ) :
-               found;
-}
-
-// Used in buildFragment, fixes the defaultChecked property
-function fixDefaultChecked( elem ) {
-       if ( manipulation_rcheckableType.test( elem.type ) ) {
-               elem.defaultChecked = elem.checked;
-       }
-}
-
-jQuery.extend({
-       clone: function( elem, dataAndEvents, deepDataAndEvents ) {
-               var destElements, node, clone, i, srcElements,
-                       inPage = jQuery.contains( elem.ownerDocument, elem );
-
-               if ( jQuery.support.html5Clone || jQuery.isXMLDoc(elem) || !rnoshimcache.test( "<" + elem.nodeName + ">" ) ) {
-                       clone = elem.cloneNode( true );
-
-               // IE<=8 does not properly clone detached, unknown element nodes
-               } else {
-                       fragmentDiv.innerHTML = elem.outerHTML;
-                       fragmentDiv.removeChild( clone = fragmentDiv.firstChild );
-               }
-
-               if ( (!jQuery.support.noCloneEvent || !jQuery.support.noCloneChecked) &&
-                               (elem.nodeType === 1 || elem.nodeType === 11) && !jQuery.isXMLDoc(elem) ) {
-
-                       // We eschew Sizzle here for performance reasons: http://jsperf.com/getall-vs-sizzle/2
-                       destElements = getAll( clone );
-                       srcElements = getAll( elem );
-
-                       // Fix all IE cloning issues
-                       for ( i = 0; (node = srcElements[i]) != null; ++i ) {
-                               // Ensure that the destination node is not null; Fixes #9587
-                               if ( destElements[i] ) {
-                                       fixCloneNodeIssues( node, destElements[i] );
-                               }
-                       }
-               }
-
-               // Copy the events from the original to the clone
-               if ( dataAndEvents ) {
-                       if ( deepDataAndEvents ) {
-                               srcElements = srcElements || getAll( elem );
-                               destElements = destElements || getAll( clone );
-
-                               for ( i = 0; (node = srcElements[i]) != null; i++ ) {
-                                       cloneCopyEvent( node, destElements[i] );
-                               }
-                       } else {
-                               cloneCopyEvent( elem, clone );
-                       }
-               }
-
-               // Preserve script evaluation history
-               destElements = getAll( clone, "script" );
-               if ( destElements.length > 0 ) {
-                       setGlobalEval( destElements, !inPage && getAll( elem, "script" ) );
-               }
-
-               destElements = srcElements = node = null;
-
-               // Return the cloned set
-               return clone;
-       },
-
-       buildFragment: function( elems, context, scripts, selection ) {
-               var j, elem, contains,
-                       tmp, tag, tbody, wrap,
-                       l = elems.length,
-
-                       // Ensure a safe fragment
-                       safe = createSafeFragment( context ),
-
-                       nodes = [],
-                       i = 0;
-
-               for ( ; i < l; i++ ) {
-                       elem = elems[ i ];
-
-                       if ( elem || elem === 0 ) {
-
-                               // Add nodes directly
-                               if ( jQuery.type( elem ) === "object" ) {
-                                       jQuery.merge( nodes, elem.nodeType ? [ elem ] : elem );
-
-                               // Convert non-html into a text node
-                               } else if ( !rhtml.test( elem ) ) {
-                                       nodes.push( context.createTextNode( elem ) );
-
-                               // Convert html into DOM nodes
-                               } else {
-                                       tmp = tmp || safe.appendChild( context.createElement("div") );
-
-                                       // Deserialize a standard representation
-                                       tag = ( rtagName.exec( elem ) || ["", ""] )[1].toLowerCase();
-                                       wrap = wrapMap[ tag ] || wrapMap._default;
-
-                                       tmp.innerHTML = wrap[1] + elem.replace( rxhtmlTag, "<$1></$2>" ) + wrap[2];
-
-                                       // Descend through wrappers to the right content
-                                       j = wrap[0];
-                                       while ( j-- ) {
-                                               tmp = tmp.lastChild;
-                                       }
-
-                                       // Manually add leading whitespace removed by IE
-                                       if ( !jQuery.support.leadingWhitespace && rleadingWhitespace.test( elem ) ) {
-                                               nodes.push( context.createTextNode( rleadingWhitespace.exec( elem )[0] ) );
-                                       }
-
-                                       // Remove IE's autoinserted <tbody> from table fragments
-                                       if ( !jQuery.support.tbody ) {
-
-                                               // String was a <table>, *may* have spurious <tbody>
-                                               elem = tag === "table" && !rtbody.test( elem ) ?
-                                                       tmp.firstChild :
-
-                                                       // String was a bare <thead> or <tfoot>
-                                                       wrap[1] === "<table>" && !rtbody.test( elem ) ?
-                                                               tmp :
-                                                               0;
-
-                                               j = elem && elem.childNodes.length;
-                                               while ( j-- ) {
-                                                       if ( jQuery.nodeName( (tbody = elem.childNodes[j]), "tbody" ) && !tbody.childNodes.length ) {
-                                                               elem.removeChild( tbody );
-                                                       }
-                                               }
-                                       }
-
-                                       jQuery.merge( nodes, tmp.childNodes );
-
-                                       // Fix #12392 for WebKit and IE > 9
-                                       tmp.textContent = "";
-
-                                       // Fix #12392 for oldIE
-                                       while ( tmp.firstChild ) {
-                                               tmp.removeChild( tmp.firstChild );
-                                       }
-
-                                       // Remember the top-level container for proper cleanup
-                                       tmp = safe.lastChild;
-                               }
-                       }
-               }
-
-               // Fix #11356: Clear elements from fragment
-               if ( tmp ) {
-                       safe.removeChild( tmp );
-               }
-
-               // Reset defaultChecked for any radios and checkboxes
-               // about to be appended to the DOM in IE 6/7 (#8060)
-               if ( !jQuery.support.appendChecked ) {
-                       jQuery.grep( getAll( nodes, "input" ), fixDefaultChecked );
-               }
-
-               i = 0;
-               while ( (elem = nodes[ i++ ]) ) {
-
-                       // #4087 - If origin and destination elements are the same, and this is
-                       // that element, do not do anything
-                       if ( selection && jQuery.inArray( elem, selection ) !== -1 ) {
-                               continue;
-                       }
-
-                       contains = jQuery.contains( elem.ownerDocument, elem );
-
-                       // Append to fragment
-                       tmp = getAll( safe.appendChild( elem ), "script" );
-
-                       // Preserve script evaluation history
-                       if ( contains ) {
-                               setGlobalEval( tmp );
-                       }
-
-                       // Capture executables
-                       if ( scripts ) {
-                               j = 0;
-                               while ( (elem = tmp[ j++ ]) ) {
-                                       if ( rscriptType.test( elem.type || "" ) ) {
-                                               scripts.push( elem );
-                                       }
-                               }
-                       }
-               }
-
-               tmp = null;
-
-               return safe;
-       },
-
-       cleanData: function( elems, /* internal */ acceptData ) {
-               var elem, type, id, data,
-                       i = 0,
-                       internalKey = jQuery.expando,
-                       cache = jQuery.cache,
-                       deleteExpando = jQuery.support.deleteExpando,
-                       special = jQuery.event.special;
-
-               for ( ; (elem = elems[i]) != null; i++ ) {
-
-                       if ( acceptData || jQuery.acceptData( elem ) ) {
-
-                               id = elem[ internalKey ];
-                               data = id && cache[ id ];
-
-                               if ( data ) {
-                                       if ( data.events ) {
-                                               for ( type in data.events ) {
-                                                       if ( special[ type ] ) {
-                                                               jQuery.event.remove( elem, type );
-
-                                                       // This is a shortcut to avoid jQuery.event.remove's overhead
-                                                       } else {
-                                                               jQuery.removeEvent( elem, type, data.handle );
-                                                       }
-                                               }
-                                       }
-
-                                       // Remove cache only if it was not already removed by jQuery.event.remove
-                                       if ( cache[ id ] ) {
-
-                                               delete cache[ id ];
-
-                                               // IE does not allow us to delete expando properties from nodes,
-                                               // nor does it have a removeAttribute function on Document nodes;
-                                               // we must handle all of these cases
-                                               if ( deleteExpando ) {
-                                                       delete elem[ internalKey ];
-
-                                               } else if ( typeof elem.removeAttribute !== core_strundefined ) {
-                                                       elem.removeAttribute( internalKey );
-
-                                               } else {
-                                                       elem[ internalKey ] = null;
-                                               }
-
-                                               core_deletedIds.push( id );
-                                       }
-                               }
-                       }
-               }
-       },
-
-       _evalUrl: function( url ) {
-               return jQuery.ajax({
-                       url: url,
-                       type: "GET",
-                       dataType: "script",
-                       async: false,
-                       global: false,
-                       "throws": true
-               });
-       }
-});
-jQuery.fn.extend({
-       wrapAll: function( html ) {
-               if ( jQuery.isFunction( html ) ) {
-                       return this.each(function(i) {
-                               jQuery(this).wrapAll( html.call(this, i) );
-                       });
-               }
-
-               if ( this[0] ) {
-                       // The elements to wrap the target around
-                       var wrap = jQuery( html, this[0].ownerDocument ).eq(0).clone(true);
-
-                       if ( this[0].parentNode ) {
-                               wrap.insertBefore( this[0] );
-                       }
-
-                       wrap.map(function() {
-                               var elem = this;
-
-                               while ( elem.firstChild && elem.firstChild.nodeType === 1 ) {
-                                       elem = elem.firstChild;
-                               }
-
-                               return elem;
-                       }).append( this );
-               }
-
-               return this;
-       },
-
-       wrapInner: function( html ) {
-               if ( jQuery.isFunction( html ) ) {
-                       return this.each(function(i) {
-                               jQuery(this).wrapInner( html.call(this, i) );
-                       });
-               }
-
-               return this.each(function() {
-                       var self = jQuery( this ),
-                               contents = self.contents();
-
-                       if ( contents.length ) {
-                               contents.wrapAll( html );
-
-                       } else {
-                               self.append( html );
-                       }
-               });
-       },
-
-       wrap: function( html ) {
-               var isFunction = jQuery.isFunction( html );
-
-               return this.each(function(i) {
-                       jQuery( this ).wrapAll( isFunction ? html.call(this, i) : html );
-               });
-       },
-
-       unwrap: function() {
-               return this.parent().each(function() {
-                       if ( !jQuery.nodeName( this, "body" ) ) {
-                               jQuery( this ).replaceWith( this.childNodes );
-                       }
-               }).end();
-       }
-});
-var iframe, getStyles, curCSS,
-       ralpha = /alpha\([^)]*\)/i,
-       ropacity = /opacity\s*=\s*([^)]*)/,
-       rposition = /^(top|right|bottom|left)$/,
-       // swappable if display is none or starts with table except "table", "table-cell", or "table-caption"
-       // see here for display values: https://developer.mozilla.org/en-US/docs/CSS/display
-       rdisplayswap = /^(none|table(?!-c[ea]).+)/,
-       rmargin = /^margin/,
-       rnumsplit = new RegExp( "^(" + core_pnum + ")(.*)$", "i" ),
-       rnumnonpx = new RegExp( "^(" + core_pnum + ")(?!px)[a-z%]+$", "i" ),
-       rrelNum = new RegExp( "^([+-])=(" + core_pnum + ")", "i" ),
-       elemdisplay = { BODY: "block" },
-
-       cssShow = { position: "absolute", visibility: "hidden", display: "block" },
-       cssNormalTransform = {
-               letterSpacing: 0,
-               fontWeight: 400
-       },
-
-       cssExpand = [ "Top", "Right", "Bottom", "Left" ],
-       cssPrefixes = [ "Webkit", "O", "Moz", "ms" ];
-
-// return a css property mapped to a potentially vendor prefixed property
-function vendorPropName( style, name ) {
-
-       // shortcut for names that are not vendor prefixed
-       if ( name in style ) {
-               return name;
-       }
-
-       // check for vendor prefixed names
-       var capName = name.charAt(0).toUpperCase() + name.slice(1),
-               origName = name,
-               i = cssPrefixes.length;
-
-       while ( i-- ) {
-               name = cssPrefixes[ i ] + capName;
-               if ( name in style ) {
-                       return name;
-               }
-       }
-
-       return origName;
-}
-
-function isHidden( elem, el ) {
-       // isHidden might be called from jQuery#filter function;
-       // in that case, element will be second argument
-       elem = el || elem;
-       return jQuery.css( elem, "display" ) === "none" || !jQuery.contains( elem.ownerDocument, elem );
-}
-
-function showHide( elements, show ) {
-       var display, elem, hidden,
-               values = [],
-               index = 0,
-               length = elements.length;
-
-       for ( ; index < length; index++ ) {
-               elem = elements[ index ];
-               if ( !elem.style ) {
-                       continue;
-               }
-
-               values[ index ] = jQuery._data( elem, "olddisplay" );
-               display = elem.style.display;
-               if ( show ) {
-                       // Reset the inline display of this element to learn if it is
-                       // being hidden by cascaded rules or not
-                       if ( !values[ index ] && display === "none" ) {
-                               elem.style.display = "";
-                       }
-
-                       // Set elements which have been overridden with display: none
-                       // in a stylesheet to whatever the default browser style is
-                       // for such an element
-                       if ( elem.style.display === "" && isHidden( elem ) ) {
-                               values[ index ] = jQuery._data( elem, "olddisplay", css_defaultDisplay(elem.nodeName) );
-                       }
-               } else {
-
-                       if ( !values[ index ] ) {
-                               hidden = isHidden( elem );
-
-                               if ( display && display !== "none" || !hidden ) {
-                                       jQuery._data( elem, "olddisplay", hidden ? display : jQuery.css( elem, "display" ) );
-                               }
-                       }
-               }
-       }
-
-       // Set the display of most of the elements in a second loop
-       // to avoid the constant reflow
-       for ( index = 0; index < length; index++ ) {
-               elem = elements[ index ];
-               if ( !elem.style ) {
-                       continue;
-               }
-               if ( !show || elem.style.display === "none" || elem.style.display === "" ) {
-                       elem.style.display = show ? values[ index ] || "" : "none";
-               }
-       }
-
-       return elements;
-}
-
-jQuery.fn.extend({
-       css: function( name, value ) {
-               return jQuery.access( this, function( elem, name, value ) {
-                       var len, styles,
-                               map = {},
-                               i = 0;
-
-                       if ( jQuery.isArray( name ) ) {
-                               styles = getStyles( elem );
-                               len = name.length;
-
-                               for ( ; i < len; i++ ) {
-                                       map[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles );
-                               }
-
-                               return map;
-                       }
-
-                       return value !== undefined ?
-                               jQuery.style( elem, name, value ) :
-                               jQuery.css( elem, name );
-               }, name, value, arguments.length > 1 );
-       },
-       show: function() {
-               return showHide( this, true );
-       },
-       hide: function() {
-               return showHide( this );
-       },
-       toggle: function( state ) {
-               if ( typeof state === "boolean" ) {
-                       return state ? this.show() : this.hide();
-               }
-
-               return this.each(function() {
-                       if ( isHidden( this ) ) {
-                               jQuery( this ).show();
-                       } else {
-                               jQuery( this ).hide();
-                       }
-               });
-       }
-});
-
-jQuery.extend({
-       // Add in style property hooks for overriding the default
-       // behavior of getting and setting a style property
-       cssHooks: {
-               opacity: {
-                       get: function( elem, computed ) {
-                               if ( computed ) {
-                                       // We should always get a number back from opacity
-                                       var ret = curCSS( elem, "opacity" );
-                                       return ret === "" ? "1" : ret;
-                               }
-                       }
-               }
-       },
-
-       // Don't automatically add "px" to these possibly-unitless properties
-       cssNumber: {
-               "columnCount": true,
-               "fillOpacity": true,
-               "fontWeight": true,
-               "lineHeight": true,
-               "opacity": true,
-               "order": true,
-               "orphans": true,
-               "widows": true,
-               "zIndex": true,
-               "zoom": true
-       },
-
-       // Add in properties whose names you wish to fix before
-       // setting or getting the value
-       cssProps: {
-               // normalize float css property
-               "float": jQuery.support.cssFloat ? "cssFloat" : "styleFloat"
-       },
-
-       // Get and set the style property on a DOM Node
-       style: function( elem, name, value, extra ) {
-               // Don't set styles on text and comment nodes
-               if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {
-                       return;
-               }
-
-               // Make sure that we're working with the right name
-               var ret, type, hooks,
-                       origName = jQuery.camelCase( name ),
-                       style = elem.style;
-
-               name = jQuery.cssProps[ origName ] || ( jQuery.cssProps[ origName ] = vendorPropName( style, origName ) );
-
-               // gets hook for the prefixed version
-               // followed by the unprefixed version
-               hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];
-
-               // Check if we're setting a value
-               if ( value !== undefined ) {
-                       type = typeof value;
-
-                       // convert relative number strings (+= or -=) to relative numbers. #7345
-                       if ( type === "string" && (ret = rrelNum.exec( value )) ) {
-                               value = ( ret[1] + 1 ) * ret[2] + parseFloat( jQuery.css( elem, name ) );
-                               // Fixes bug #9237
-                               type = "number";
-                       }
-
-                       // Make sure that NaN and null values aren't set. See: #7116
-                       if ( value == null || type === "number" && isNaN( value ) ) {
-                               return;
-                       }
-
-                       // If a number was passed in, add 'px' to the (except for certain CSS properties)
-                       if ( type === "number" && !jQuery.cssNumber[ origName ] ) {
-                               value += "px";
-                       }
-
-                       // Fixes #8908, it can be done more correctly by specifing setters in cssHooks,
-                       // but it would mean to define eight (for every problematic property) identical functions
-                       if ( !jQuery.support.clearCloneStyle && value === "" && name.indexOf("background") === 0 ) {
-                               style[ name ] = "inherit";
-                       }
-
-                       // If a hook was provided, use that value, otherwise just set the specified value
-                       if ( !hooks || !("set" in hooks) || (value = hooks.set( elem, value, extra )) !== undefined ) {
-
-                               // Wrapped to prevent IE from throwing errors when 'invalid' values are provided
-                               // Fixes bug #5509
-                               try {
-                                       style[ name ] = value;
-                               } catch(e) {}
-                       }
-
-               } else {
-                       // If a hook was provided get the non-computed value from there
-                       if ( hooks && "get" in hooks && (ret = hooks.get( elem, false, extra )) !== undefined ) {
-                               return ret;
-                       }
-
-                       // Otherwise just get the value from the style object
-                       return style[ name ];
-               }
-       },
-
-       css: function( elem, name, extra, styles ) {
-               var num, val, hooks,
-                       origName = jQuery.camelCase( name );
-
-               // Make sure that we're working with the right name
-               name = jQuery.cssProps[ origName ] || ( jQuery.cssProps[ origName ] = vendorPropName( elem.style, origName ) );
-
-               // gets hook for the prefixed version
-               // followed by the unprefixed version
-               hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];
-
-               // If a hook was provided get the computed value from there
-               if ( hooks && "get" in hooks ) {
-                       val = hooks.get( elem, true, extra );
-               }
-
-               // Otherwise, if a way to get the computed value exists, use that
-               if ( val === undefined ) {
-                       val = curCSS( elem, name, styles );
-               }
-
-               //convert "normal" to computed value
-               if ( val === "normal" && name in cssNormalTransform ) {
-                       val = cssNormalTransform[ name ];
-               }
-
-               // Return, converting to number if forced or a qualifier was provided and val looks numeric
-               if ( extra === "" || extra ) {
-                       num = parseFloat( val );
-                       return extra === true || jQuery.isNumeric( num ) ? num || 0 : val;
-               }
-               return val;
-       }
-});
-
-// NOTE: we've included the "window" in window.getComputedStyle
-// because jsdom on node.js will break without it.
-if ( window.getComputedStyle ) {
-       getStyles = function( elem ) {
-               return window.getComputedStyle( elem, null );
-       };
-
-       curCSS = function( elem, name, _computed ) {
-               var width, minWidth, maxWidth,
-                       computed = _computed || getStyles( elem ),
-
-                       // getPropertyValue is only needed for .css('filter') in IE9, see #12537
-                       ret = computed ? computed.getPropertyValue( name ) || computed[ name ] : undefined,
-                       style = elem.style;
-
-               if ( computed ) {
-
-                       if ( ret === "" && !jQuery.contains( elem.ownerDocument, elem ) ) {
-                               ret = jQuery.style( elem, name );
-                       }
-
-                       // A tribute to the "awesome hack by Dean Edwards"
-                       // Chrome < 17 and Safari 5.0 uses "computed value" instead of "used value" for margin-right
-                       // Safari 5.1.7 (at least) returns percentage for a larger set of values, but width seems to be reliably pixels
-                       // this is against the CSSOM draft spec: http://dev.w3.org/csswg/cssom/#resolved-values
-                       if ( rnumnonpx.test( ret ) && rmargin.test( name ) ) {
-
-                               // Remember the original values
-                               width = style.width;
-                               minWidth = style.minWidth;
-                               maxWidth = style.maxWidth;
-
-                               // Put in the new values to get a computed value out
-                               style.minWidth = style.maxWidth = style.width = ret;
-                               ret = computed.width;
-
-                               // Revert the changed values
-                               style.width = width;
-                               style.minWidth = minWidth;
-                               style.maxWidth = maxWidth;
-                       }
-               }
-
-               return ret;
-       };
-} else if ( document.documentElement.currentStyle ) {
-       getStyles = function( elem ) {
-               return elem.currentStyle;
-       };
-
-       curCSS = function( elem, name, _computed ) {
-               var left, rs, rsLeft,
-                       computed = _computed || getStyles( elem ),
-                       ret = computed ? computed[ name ] : undefined,
-                       style = elem.style;
-
-               // Avoid setting ret to empty string here
-               // so we don't default to auto
-               if ( ret == null && style && style[ name ] ) {
-                       ret = style[ name ];
-               }
-
-               // From the awesome hack by Dean Edwards
-               // http://erik.eae.net/archives/2007/07/27/18.54.15/#comment-102291
-
-               // If we're not dealing with a regular pixel number
-               // but a number that has a weird ending, we need to convert it to pixels
-               // but not position css attributes, as those are proportional to the parent element instead
-               // and we can't measure the parent instead because it might trigger a "stacking dolls" problem
-               if ( rnumnonpx.test( ret ) && !rposition.test( name ) ) {
-
-                       // Remember the original values
-                       left = style.left;
-                       rs = elem.runtimeStyle;
-                       rsLeft = rs && rs.left;
-
-                       // Put in the new values to get a computed value out
-                       if ( rsLeft ) {
-                               rs.left = elem.currentStyle.left;
-                       }
-                       style.left = name === "fontSize" ? "1em" : ret;
-                       ret = style.pixelLeft + "px";
-
-                       // Revert the changed values
-                       style.left = left;
-                       if ( rsLeft ) {
-                               rs.left = rsLeft;
-                       }
-               }
-
-               return ret === "" ? "auto" : ret;
-       };
-}
-
-function setPositiveNumber( elem, value, subtract ) {
-       var matches = rnumsplit.exec( value );
-       return matches ?
-               // Guard against undefined "subtract", e.g., when used as in cssHooks
-               Math.max( 0, matches[ 1 ] - ( subtract || 0 ) ) + ( matches[ 2 ] || "px" ) :
-               value;
-}
-
-function augmentWidthOrHeight( elem, name, extra, isBorderBox, styles ) {
-       var i = extra === ( isBorderBox ? "border" : "content" ) ?
-               // If we already have the right measurement, avoid augmentation
-               4 :
-               // Otherwise initialize for horizontal or vertical properties
-               name === "width" ? 1 : 0,
-
-               val = 0;
-
-       for ( ; i < 4; i += 2 ) {
-               // both box models exclude margin, so add it if we want it
-               if ( extra === "margin" ) {
-                       val += jQuery.css( elem, extra + cssExpand[ i ], true, styles );
-               }
-
-               if ( isBorderBox ) {
-                       // border-box includes padding, so remove it if we want content
-                       if ( extra === "content" ) {
-                               val -= jQuery.css( elem, "padding" + cssExpand[ i ], true, styles );
-                       }
-
-                       // at this point, extra isn't border nor margin, so remove border
-                       if ( extra !== "margin" ) {
-                               val -= jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles );
-                       }
-               } else {
-                       // at this point, extra isn't content, so add padding
-                       val += jQuery.css( elem, "padding" + cssExpand[ i ], true, styles );
-
-                       // at this point, extra isn't content nor padding, so add border
-                       if ( extra !== "padding" ) {
-                               val += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles );
-                       }
-               }
-       }
-
-       return val;
-}
-
-function getWidthOrHeight( elem, name, extra ) {
-
-       // Start with offset property, which is equivalent to the border-box value
-       var valueIsBorderBox = true,
-               val = name === "width" ? elem.offsetWidth : elem.offsetHeight,
-               styles = getStyles( elem ),
-               isBorderBox = jQuery.support.boxSizing && jQuery.css( elem, "boxSizing", false, styles ) === "border-box";
-
-       // some non-html elements return undefined for offsetWidth, so check for null/undefined
-       // svg - https://bugzilla.mozilla.org/show_bug.cgi?id=649285
-       // MathML - https://bugzilla.mozilla.org/show_bug.cgi?id=491668
-       if ( val <= 0 || val == null ) {
-               // Fall back to computed then uncomputed css if necessary
-               val = curCSS( elem, name, styles );
-               if ( val < 0 || val == null ) {
-                       val = elem.style[ name ];
-               }
-
-               // Computed unit is not pixels. Stop here and return.
-               if ( rnumnonpx.test(val) ) {
-                       return val;
-               }
-
-               // we need the check for style in case a browser which returns unreliable values
-               // for getComputedStyle silently falls back to the reliable elem.style
-               valueIsBorderBox = isBorderBox && ( jQuery.support.boxSizingReliable || val === elem.style[ name ] );
-
-               // Normalize "", auto, and prepare for extra
-               val = parseFloat( val ) || 0;
-       }
-
-       // use the active box-sizing model to add/subtract irrelevant styles
-       return ( val +
-               augmentWidthOrHeight(
-                       elem,
-                       name,
-                       extra || ( isBorderBox ? "border" : "content" ),
-                       valueIsBorderBox,
-                       styles
-               )
-       ) + "px";
-}
-
-// Try to determine the default display value of an element
-function css_defaultDisplay( nodeName ) {
-       var doc = document,
-               display = elemdisplay[ nodeName ];
-
-       if ( !display ) {
-               display = actualDisplay( nodeName, doc );
-
-               // If the simple way fails, read from inside an iframe
-               if ( display === "none" || !display ) {
-                       // Use the already-created iframe if possible
-                       iframe = ( iframe ||
-                               jQuery("<iframe frameborder='0' width='0' height='0'/>")
-                               .css( "cssText", "display:block !important" )
-                       ).appendTo( doc.documentElement );
-
-                       // Always write a new HTML skeleton so Webkit and Firefox don't choke on reuse
-                       doc = ( iframe[0].contentWindow || iframe[0].contentDocument ).document;
-                       doc.write("<!doctype html><html><body>");
-                       doc.close();
-
-                       display = actualDisplay( nodeName, doc );
-                       iframe.detach();
-               }
-
-               // Store the correct default display
-               elemdisplay[ nodeName ] = display;
-       }
-
-       return display;
-}
-
-// Called ONLY from within css_defaultDisplay
-function actualDisplay( name, doc ) {
-       var elem = jQuery( doc.createElement( name ) ).appendTo( doc.body ),
-               display = jQuery.css( elem[0], "display" );
-       elem.remove();
-       return display;
-}
-
-jQuery.each([ "height", "width" ], function( i, name ) {
-       jQuery.cssHooks[ name ] = {
-               get: function( elem, computed, extra ) {
-                       if ( computed ) {
-                               // certain elements can have dimension info if we invisibly show them
-                               // however, it must have a current display style that would benefit from this
-                               return elem.offsetWidth === 0 && rdisplayswap.test( jQuery.css( elem, "display" ) ) ?
-                                       jQuery.swap( elem, cssShow, function() {
-                                               return getWidthOrHeight( elem, name, extra );
-                                       }) :
-                                       getWidthOrHeight( elem, name, extra );
-                       }
-               },
-
-               set: function( elem, value, extra ) {
-                       var styles = extra && getStyles( elem );
-                       return setPositiveNumber( elem, value, extra ?
-                               augmentWidthOrHeight(
-                                       elem,
-                                       name,
-                                       extra,
-                                       jQuery.support.boxSizing && jQuery.css( elem, "boxSizing", false, styles ) === "border-box",
-                                       styles
-                               ) : 0
-                       );
-               }
-       };
-});
-
-if ( !jQuery.support.opacity ) {
-       jQuery.cssHooks.opacity = {
-               get: function( elem, computed ) {
-                       // IE uses filters for opacity
-                       return ropacity.test( (computed && elem.currentStyle ? elem.currentStyle.filter : elem.style.filter) || "" ) ?
-                               ( 0.01 * parseFloat( RegExp.$1 ) ) + "" :
-                               computed ? "1" : "";
-               },
-
-               set: function( elem, value ) {
-                       var style = elem.style,
-                               currentStyle = elem.currentStyle,
-                               opacity = jQuery.isNumeric( value ) ? "alpha(opacity=" + value * 100 + ")" : "",
-                               filter = currentStyle && currentStyle.filter || style.filter || "";
-
-                       // IE has trouble with opacity if it does not have layout
-                       // Force it by setting the zoom level
-                       style.zoom = 1;
-
-                       // if setting opacity to 1, and no other filters exist - attempt to remove filter attribute #6652
-                       // if value === "", then remove inline opacity #12685
-                       if ( ( value >= 1 || value === "" ) &&
-                                       jQuery.trim( filter.replace( ralpha, "" ) ) === "" &&
-                                       style.removeAttribute ) {
-
-                               // Setting style.filter to null, "" & " " still leave "filter:" in the cssText
-                               // if "filter:" is present at all, clearType is disabled, we want to avoid this
-                               // style.removeAttribute is IE Only, but so apparently is this code path...
-                               style.removeAttribute( "filter" );
-
-                               // if there is no filter style applied in a css rule or unset inline opacity, we are done
-                               if ( value === "" || currentStyle && !currentStyle.filter ) {
-                                       return;
-                               }
-                       }
-
-                       // otherwise, set new filter values
-                       style.filter = ralpha.test( filter ) ?
-                               filter.replace( ralpha, opacity ) :
-                               filter + " " + opacity;
-               }
-       };
-}
-
-// These hooks cannot be added until DOM ready because the support test
-// for it is not run until after DOM ready
-jQuery(function() {
-       if ( !jQuery.support.reliableMarginRight ) {
-               jQuery.cssHooks.marginRight = {
-                       get: function( elem, computed ) {
-                               if ( computed ) {
-                                       // WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right
-                                       // Work around by temporarily setting element display to inline-block
-                                       return jQuery.swap( elem, { "display": "inline-block" },
-                                               curCSS, [ elem, "marginRight" ] );
-                               }
-                       }
-               };
-       }
-
-       // Webkit bug: https://bugs.webkit.org/show_bug.cgi?id=29084
-       // getComputedStyle returns percent when specified for top/left/bottom/right
-       // rather than make the css module depend on the offset module, we just check for it here
-       if ( !jQuery.support.pixelPosition && jQuery.fn.position ) {
-               jQuery.each( [ "top", "left" ], function( i, prop ) {
-                       jQuery.cssHooks[ prop ] = {
-                               get: function( elem, computed ) {
-                                       if ( computed ) {
-                                               computed = curCSS( elem, prop );
-                                               // if curCSS returns percentage, fallback to offset
-                                               return rnumnonpx.test( computed ) ?
-                                                       jQuery( elem ).position()[ prop ] + "px" :
-                                                       computed;
-                                       }
-                               }
-                       };
-               });
-       }
-
-});
-
-if ( jQuery.expr && jQuery.expr.filters ) {
-       jQuery.expr.filters.hidden = function( elem ) {
-               // Support: Opera <= 12.12
-               // Opera reports offsetWidths and offsetHeights less than zero on some elements
-               return elem.offsetWidth <= 0 && elem.offsetHeight <= 0 ||
-                       (!jQuery.support.reliableHiddenOffsets && ((elem.style && elem.style.display) || jQuery.css( elem, "display" )) === "none");
-       };
-
-       jQuery.expr.filters.visible = function( elem ) {
-               return !jQuery.expr.filters.hidden( elem );
-       };
-}
-
-// These hooks are used by animate to expand properties
-jQuery.each({
-       margin: "",
-       padding: "",
-       border: "Width"
-}, function( prefix, suffix ) {
-       jQuery.cssHooks[ prefix + suffix ] = {
-               expand: function( value ) {
-                       var i = 0,
-                               expanded = {},
-
-                               // assumes a single number if not a string
-                               parts = typeof value === "string" ? value.split(" ") : [ value ];
-
-                       for ( ; i < 4; i++ ) {
-                               expanded[ prefix + cssExpand[ i ] + suffix ] =
-                                       parts[ i ] || parts[ i - 2 ] || parts[ 0 ];
-                       }
-
-                       return expanded;
-               }
-       };
-
-       if ( !rmargin.test( prefix ) ) {
-               jQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber;
-       }
-});
-var r20 = /%20/g,
-       rbracket = /\[\]$/,
-       rCRLF = /\r?\n/g,
-       rsubmitterTypes = /^(?:submit|button|image|reset|file)$/i,
-       rsubmittable = /^(?:input|select|textarea|keygen)/i;
-
-jQuery.fn.extend({
-       serialize: function() {
-               return jQuery.param( this.serializeArray() );
-       },
-       serializeArray: function() {
-               return this.map(function(){
-                       // Can add propHook for "elements" to filter or add form elements
-                       var elements = jQuery.prop( this, "elements" );
-                       return elements ? jQuery.makeArray( elements ) : this;
-               })
-               .filter(function(){
-                       var type = this.type;
-                       // Use .is(":disabled") so that fieldset[disabled] works
-                       return this.name && !jQuery( this ).is( ":disabled" ) &&
-                               rsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) &&
-                               ( this.checked || !manipulation_rcheckableType.test( type ) );
-               })
-               .map(function( i, elem ){
-                       var val = jQuery( this ).val();
-
-                       return val == null ?
-                               null :
-                               jQuery.isArray( val ) ?
-                                       jQuery.map( val, function( val ){
-                                               return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) };
-                                       }) :
-                                       { name: elem.name, value: val.replace( rCRLF, "\r\n" ) };
-               }).get();
-       }
-});
-
-//Serialize an array of form elements or a set of
-//key/values into a query string
-jQuery.param = function( a, traditional ) {
-       var prefix,
-               s = [],
-               add = function( key, value ) {
-                       // If value is a function, invoke it and return its value
-                       value = jQuery.isFunction( value ) ? value() : ( value == null ? "" : value );
-                       s[ s.length ] = encodeURIComponent( key ) + "=" + encodeURIComponent( value );
-               };
-
-       // Set traditional to true for jQuery <= 1.3.2 behavior.
-       if ( traditional === undefined ) {
-               traditional = jQuery.ajaxSettings && jQuery.ajaxSettings.traditional;
-       }
-
-       // If an array was passed in, assume that it is an array of form elements.
-       if ( jQuery.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {
-               // Serialize the form elements
-               jQuery.each( a, function() {
-                       add( this.name, this.value );
-               });
-
-       } else {
-               // If traditional, encode the "old" way (the way 1.3.2 or older
-               // did it), otherwise encode params recursively.
-               for ( prefix in a ) {
-                       buildParams( prefix, a[ prefix ], traditional, add );
-               }
-       }
-
-       // Return the resulting serialization
-       return s.join( "&" ).replace( r20, "+" );
-};
-
-function buildParams( prefix, obj, traditional, add ) {
-       var name;
-
-       if ( jQuery.isArray( obj ) ) {
-               // Serialize array item.
-               jQuery.each( obj, function( i, v ) {
-                       if ( traditional || rbracket.test( prefix ) ) {
-                               // Treat each array item as a scalar.
-                               add( prefix, v );
-
-                       } else {
-                               // Item is non-scalar (array or object), encode its numeric index.
-                               buildParams( prefix + "[" + ( typeof v === "object" ? i : "" ) + "]", v, traditional, add );
-                       }
-               });
-
-       } else if ( !traditional && jQuery.type( obj ) === "object" ) {
-               // Serialize object item.
-               for ( name in obj ) {
-                       buildParams( prefix + "[" + name + "]", obj[ name ], traditional, add );
-               }
-
-       } else {
-               // Serialize scalar item.
-               add( prefix, obj );
-       }
-}
-jQuery.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( i, name ) {
-
-       // Handle event binding
-       jQuery.fn[ name ] = function( data, fn ) {
-               return arguments.length > 0 ?
-                       this.on( name, null, data, fn ) :
-                       this.trigger( name );
-       };
-});
-
-jQuery.fn.extend({
-       hover: function( fnOver, fnOut ) {
-               return this.mouseenter( fnOver ).mouseleave( fnOut || fnOver );
-       },
-
-       bind: function( types, data, fn ) {
-               return this.on( types, null, data, fn );
-       },
-       unbind: function( types, fn ) {
-               return this.off( types, null, fn );
-       },
-
-       delegate: function( selector, types, data, fn ) {
-               return this.on( types, selector, data, fn );
-       },
-       undelegate: function( selector, types, fn ) {
-               // ( namespace ) or ( selector, types [, fn] )
-               return arguments.length === 1 ? this.off( selector, "**" ) : this.off( types, selector || "**", fn );
-       }
-});
-var
-       // Document location
-       ajaxLocParts,
-       ajaxLocation,
-       ajax_nonce = jQuery.now(),
-
-       ajax_rquery = /\?/,
-       rhash = /#.*$/,
-       rts = /([?&])_=[^&]*/,
-       rheaders = /^(.*?):[ \t]*([^\r\n]*)\r?$/mg, // IE leaves an \r character at EOL
-       // #7653, #8125, #8152: local protocol detection
-       rlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/,
-       rnoContent = /^(?:GET|HEAD)$/,
-       rprotocol = /^\/\//,
-       rurl = /^([\w.+-]+:)(?:\/\/([^\/?#:]*)(?::(\d+)|)|)/,
-
-       // Keep a copy of the old load method
-       _load = jQuery.fn.load,
-
-       /* Prefilters
-        * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)
-        * 2) These are called:
-        *    - BEFORE asking for a transport
-        *    - AFTER param serialization (s.data is a string if s.processData is true)
-        * 3) key is the dataType
-        * 4) the catchall symbol "*" can be used
-        * 5) execution will start with transport dataType and THEN continue down to "*" if needed
-        */
-       prefilters = {},
-
-       /* Transports bindings
-        * 1) key is the dataType
-        * 2) the catchall symbol "*" can be used
-        * 3) selection will start with transport dataType and THEN go to "*" if needed
-        */
-       transports = {},
-
-       // Avoid comment-prolog char sequence (#10098); must appease lint and evade compression
-       allTypes = "*/".concat("*");
-
-// #8138, IE may throw an exception when accessing
-// a field from window.location if document.domain has been set
-try {
-       ajaxLocation = location.href;
-} catch( e ) {
-       // Use the href attribute of an A element
-       // since IE will modify it given document.location
-       ajaxLocation = document.createElement( "a" );
-       ajaxLocation.href = "";
-       ajaxLocation = ajaxLocation.href;
-}
-
-// Segment location into parts
-ajaxLocParts = rurl.exec( ajaxLocation.toLowerCase() ) || [];
-
-// Base "constructor" for jQuery.ajaxPrefilter and jQuery.ajaxTransport
-function addToPrefiltersOrTransports( structure ) {
-
-       // dataTypeExpression is optional and defaults to "*"
-       return function( dataTypeExpression, func ) {
-
-               if ( typeof dataTypeExpression !== "string" ) {
-                       func = dataTypeExpression;
-                       dataTypeExpression = "*";
-               }
-
-               var dataType,
-                       i = 0,
-                       dataTypes = dataTypeExpression.toLowerCase().match( core_rnotwhite ) || [];
-
-               if ( jQuery.isFunction( func ) ) {
-                       // For each dataType in the dataTypeExpression
-                       while ( (dataType = dataTypes[i++]) ) {
-                               // Prepend if requested
-                               if ( dataType[0] === "+" ) {
-                                       dataType = dataType.slice( 1 ) || "*";
-                                       (structure[ dataType ] = structure[ dataType ] || []).unshift( func );
-
-                               // Otherwise append
-                               } else {
-                                       (structure[ dataType ] = structure[ dataType ] || []).push( func );
-                               }
-                       }
-               }
-       };
-}
-
-// Base inspection function for prefilters and transports
-function inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) {
-
-       var inspected = {},
-               seekingTransport = ( structure === transports );
-
-       function inspect( dataType ) {
-               var selected;
-               inspected[ dataType ] = true;
-               jQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) {
-                       var dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR );
-                       if( typeof dataTypeOrTransport === "string" && !seekingTransport && !inspected[ dataTypeOrTransport ] ) {
-                               options.dataTypes.unshift( dataTypeOrTransport );
-                               inspect( dataTypeOrTransport );
-                               return false;
-                       } else if ( seekingTransport ) {
-                               return !( selected = dataTypeOrTransport );
-                       }
-               });
-               return selected;
-       }
-
-       return inspect( options.dataTypes[ 0 ] ) || !inspected[ "*" ] && inspect( "*" );
-}
-
-// A special extend for ajax options
-// that takes "flat" options (not to be deep extended)
-// Fixes #9887
-function ajaxExtend( target, src ) {
-       var deep, key,
-               flatOptions = jQuery.ajaxSettings.flatOptions || {};
-
-       for ( key in src ) {
-               if ( src[ key ] !== undefined ) {
-                       ( flatOptions[ key ] ? target : ( deep || (deep = {}) ) )[ key ] = src[ key ];
-               }
-       }
-       if ( deep ) {
-               jQuery.extend( true, target, deep );
-       }
-
-       return target;
-}
-
-jQuery.fn.load = function( url, params, callback ) {
-       if ( typeof url !== "string" && _load ) {
-               return _load.apply( this, arguments );
-       }
-
-       var selector, response, type,
-               self = this,
-               off = url.indexOf(" ");
-
-       if ( off >= 0 ) {
-               selector = url.slice( off, url.length );
-               url = url.slice( 0, off );
-       }
-
-       // If it's a function
-       if ( jQuery.isFunction( params ) ) {
-
-               // We assume that it's the callback
-               callback = params;
-               params = undefined;
-
-       // Otherwise, build a param string
-       } else if ( params && typeof params === "object" ) {
-               type = "POST";
-       }
-
-       // If we have elements to modify, make the request
-       if ( self.length > 0 ) {
-               jQuery.ajax({
-                       url: url,
-
-                       // if "type" variable is undefined, then "GET" method will be used
-                       type: type,
-                       dataType: "html",
-                       data: params
-               }).done(function( responseText ) {
-
-                       // Save response for use in complete callback
-                       response = arguments;
-
-                       self.html( selector ?
-
-                               // If a selector was specified, locate the right elements in a dummy div
-                               // Exclude scripts to avoid IE 'Permission Denied' errors
-                               jQuery("<div>").append( jQuery.parseHTML( responseText ) ).find( selector ) :
-
-                               // Otherwise use the full result
-                               responseText );
-
-               }).complete( callback && function( jqXHR, status ) {
-                       self.each( callback, response || [ jqXHR.responseText, status, jqXHR ] );
-               });
-       }
-
-       return this;
-};
-
-// Attach a bunch of functions for handling common AJAX events
-jQuery.each( [ "ajaxStart", "ajaxStop", "ajaxComplete", "ajaxError", "ajaxSuccess", "ajaxSend" ], function( i, type ){
-       jQuery.fn[ type ] = function( fn ){
-               return this.on( type, fn );
-       };
-});
-
-jQuery.extend({
-
-       // Counter for holding the number of active queries
-       active: 0,
-
-       // Last-Modified header cache for next request
-       lastModified: {},
-       etag: {},
-
-       ajaxSettings: {
-               url: ajaxLocation,
-               type: "GET",
-               isLocal: rlocalProtocol.test( ajaxLocParts[ 1 ] ),
-               global: true,
-               processData: true,
-               async: true,
-               contentType: "application/x-www-form-urlencoded; charset=UTF-8",
-               /*
-               timeout: 0,
-               data: null,
-               dataType: null,
-               username: null,
-               password: null,
-               cache: null,
-               throws: false,
-               traditional: false,
-               headers: {},
-               */
-
-               accepts: {
-                       "*": allTypes,
-                       text: "text/plain",
-                       html: "text/html",
-                       xml: "application/xml, text/xml",
-                       json: "application/json, text/javascript"
-               },
-
-               contents: {
-                       xml: /xml/,
-                       html: /html/,
-                       json: /json/
-               },
-
-               responseFields: {
-                       xml: "responseXML",
-                       text: "responseText",
-                       json: "responseJSON"
-               },
-
-               // Data converters
-               // Keys separate source (or catchall "*") and destination types with a single space
-               converters: {
-
-                       // Convert anything to text
-                       "* text": String,
-
-                       // Text to html (true = no transformation)
-                       "text html": true,
-
-                       // Evaluate text as a json expression
-                       "text json": jQuery.parseJSON,
-
-                       // Parse text as xml
-                       "text xml": jQuery.parseXML
-               },
-
-               // For options that shouldn't be deep extended:
-               // you can add your own custom options here if
-               // and when you create one that shouldn't be
-               // deep extended (see ajaxExtend)
-               flatOptions: {
-                       url: true,
-                       context: true
-               }
-       },
-
-       // Creates a full fledged settings object into target
-       // with both ajaxSettings and settings fields.
-       // If target is omitted, writes into ajaxSettings.
-       ajaxSetup: function( target, settings ) {
-               return settings ?
-
-                       // Building a settings object
-                       ajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) :
-
-                       // Extending ajaxSettings
-                       ajaxExtend( jQuery.ajaxSettings, target );
-       },
-
-       ajaxPrefilter: addToPrefiltersOrTransports( prefilters ),
-       ajaxTransport: addToPrefiltersOrTransports( transports ),
-
-       // Main method
-       ajax: function( url, options ) {
-
-               // If url is an object, simulate pre-1.5 signature
-               if ( typeof url === "object" ) {
-                       options = url;
-                       url = undefined;
-               }
-
-               // Force options to be an object
-               options = options || {};
-
-               var // Cross-domain detection vars
-                       parts,
-                       // Loop variable
-                       i,
-                       // URL without anti-cache param
-                       cacheURL,
-                       // Response headers as string
-                       responseHeadersString,
-                       // timeout handle
-                       timeoutTimer,
-
-                       // To know if global events are to be dispatched
-                       fireGlobals,
-
-                       transport,
-                       // Response headers
-                       responseHeaders,
-                       // Create the final options object
-                       s = jQuery.ajaxSetup( {}, options ),
-                       // Callbacks context
-                       callbackContext = s.context || s,
-                       // Context for global events is callbackContext if it is a DOM node or jQuery collection
-                       globalEventContext = s.context && ( callbackContext.nodeType || callbackContext.jquery ) ?
-                               jQuery( callbackContext ) :
-                               jQuery.event,
-                       // Deferreds
-                       deferred = jQuery.Deferred(),
-                       completeDeferred = jQuery.Callbacks("once memory"),
-                       // Status-dependent callbacks
-                       statusCode = s.statusCode || {},
-                       // Headers (they are sent all at once)
-                       requestHeaders = {},
-                       requestHeadersNames = {},
-                       // The jqXHR state
-                       state = 0,
-                       // Default abort message
-                       strAbort = "canceled",
-                       // Fake xhr
-                       jqXHR = {
-                               readyState: 0,
-
-                               // Builds headers hashtable if needed
-                               getResponseHeader: function( key ) {
-                                       var match;
-                                       if ( state === 2 ) {
-                                               if ( !responseHeaders ) {
-                                                       responseHeaders = {};
-                                                       while ( (match = rheaders.exec( responseHeadersString )) ) {
-                                                               responseHeaders[ match[1].toLowerCase() ] = match[ 2 ];
-                                                       }
-                                               }
-                                               match = responseHeaders[ key.toLowerCase() ];
-                                       }
-                                       return match == null ? null : match;
-                               },
-
-                               // Raw string
-                               getAllResponseHeaders: function() {
-                                       return state === 2 ? responseHeadersString : null;
-                               },
-
-                               // Caches the header
-                               setRequestHeader: function( name, value ) {
-                                       var lname = name.toLowerCase();
-                                       if ( !state ) {
-                                               name = requestHeadersNames[ lname ] = requestHeadersNames[ lname ] || name;
-                                               requestHeaders[ name ] = value;
-                                       }
-                                       return this;
-                               },
-
-                               // Overrides response content-type header
-                               overrideMimeType: function( type ) {
-                                       if ( !state ) {
-                                               s.mimeType = type;
-                                       }
-                                       return this;
-                               },
-
-                               // Status-dependent callbacks
-                               statusCode: function( map ) {
-                                       var code;
-                                       if ( map ) {
-                                               if ( state < 2 ) {
-                                                       for ( code in map ) {
-                                                               // Lazy-add the new callback in a way that preserves old ones
-                                                               statusCode[ code ] = [ statusCode[ code ], map[ code ] ];
-                                                       }
-                                               } else {
-                                                       // Execute the appropriate callbacks
-                                                       jqXHR.always( map[ jqXHR.status ] );
-                                               }
-                                       }
-                                       return this;
-                               },
-
-                               // Cancel the request
-                               abort: function( statusText ) {
-                                       var finalText = statusText || strAbort;
-                                       if ( transport ) {
-                                               transport.abort( finalText );
-                                       }
-                                       done( 0, finalText );
-                                       return this;
-                               }
-                       };
-
-               // Attach deferreds
-               deferred.promise( jqXHR ).complete = completeDeferred.add;
-               jqXHR.success = jqXHR.done;
-               jqXHR.error = jqXHR.fail;
-
-               // Remove hash character (#7531: and string promotion)
-               // Add protocol if not provided (#5866: IE7 issue with protocol-less urls)
-               // Handle falsy url in the settings object (#10093: consistency with old signature)
-               // We also use the url parameter if available
-               s.url = ( ( url || s.url || ajaxLocation ) + "" ).replace( rhash, "" ).replace( rprotocol, ajaxLocParts[ 1 ] + "//" );
-
-               // Alias method option to type as per ticket #12004
-               s.type = options.method || options.type || s.method || s.type;
-
-               // Extract dataTypes list
-               s.dataTypes = jQuery.trim( s.dataType || "*" ).toLowerCase().match( core_rnotwhite ) || [""];
-
-               // A cross-domain request is in order when we have a protocol:host:port mismatch
-               if ( s.crossDomain == null ) {
-                       parts = rurl.exec( s.url.toLowerCase() );
-                       s.crossDomain = !!( parts &&
-                               ( parts[ 1 ] !== ajaxLocParts[ 1 ] || parts[ 2 ] !== ajaxLocParts[ 2 ] ||
-                                       ( parts[ 3 ] || ( parts[ 1 ] === "http:" ? "80" : "443" ) ) !==
-                                               ( ajaxLocParts[ 3 ] || ( ajaxLocParts[ 1 ] === "http:" ? "80" : "443" ) ) )
-                       );
-               }
-
-               // Convert data if not already a string
-               if ( s.data && s.processData && typeof s.data !== "string" ) {
-                       s.data = jQuery.param( s.data, s.traditional );
-               }
-
-               // Apply prefilters
-               inspectPrefiltersOrTransports( prefilters, s, options, jqXHR );
-
-               // If request was aborted inside a prefilter, stop there
-               if ( state === 2 ) {
-                       return jqXHR;
-               }
-
-               // We can fire global events as of now if asked to
-               fireGlobals = s.global;
-
-               // Watch for a new set of requests
-               if ( fireGlobals && jQuery.active++ === 0 ) {
-                       jQuery.event.trigger("ajaxStart");
-               }
-
-               // Uppercase the type
-               s.type = s.type.toUpperCase();
-
-               // Determine if request has content
-               s.hasContent = !rnoContent.test( s.type );
-
-               // Save the URL in case we're toying with the If-Modified-Since
-               // and/or If-None-Match header later on
-               cacheURL = s.url;
-
-               // More options handling for requests with no content
-               if ( !s.hasContent ) {
-
-                       // If data is available, append data to url
-                       if ( s.data ) {
-                               cacheURL = ( s.url += ( ajax_rquery.test( cacheURL ) ? "&" : "?" ) + s.data );
-                               // #9682: remove data so that it's not used in an eventual retry
-                               delete s.data;
-                       }
-
-                       // Add anti-cache in url if needed
-                       if ( s.cache === false ) {
-                               s.url = rts.test( cacheURL ) ?
-
-                                       // If there is already a '_' parameter, set its value
-                                       cacheURL.replace( rts, "$1_=" + ajax_nonce++ ) :
-
-                                       // Otherwise add one to the end
-                                       cacheURL + ( ajax_rquery.test( cacheURL ) ? "&" : "?" ) + "_=" + ajax_nonce++;
-                       }
-               }
-
-               // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.
-               if ( s.ifModified ) {
-                       if ( jQuery.lastModified[ cacheURL ] ) {
-                               jqXHR.setRequestHeader( "If-Modified-Since", jQuery.lastModified[ cacheURL ] );
-                       }
-                       if ( jQuery.etag[ cacheURL ] ) {
-                               jqXHR.setRequestHeader( "If-None-Match", jQuery.etag[ cacheURL ] );
-                       }
-               }
-
-               // Set the correct header, if data is being sent
-               if ( s.data && s.hasContent && s.contentType !== false || options.contentType ) {
-                       jqXHR.setRequestHeader( "Content-Type", s.contentType );
-               }
-
-               // Set the Accepts header for the server, depending on the dataType
-               jqXHR.setRequestHeader(
-                       "Accept",
-                       s.dataTypes[ 0 ] && s.accepts[ s.dataTypes[0] ] ?
-                               s.accepts[ s.dataTypes[0] ] + ( s.dataTypes[ 0 ] !== "*" ? ", " + allTypes + "; q=0.01" : "" ) :
-                               s.accepts[ "*" ]
-               );
-
-               // Check for headers option
-               for ( i in s.headers ) {
-                       jqXHR.setRequestHeader( i, s.headers[ i ] );
-               }
-
-               // Allow custom headers/mimetypes and early abort
-               if ( s.beforeSend && ( s.beforeSend.call( callbackContext, jqXHR, s ) === false || state === 2 ) ) {
-                       // Abort if not done already and return
-                       return jqXHR.abort();
-               }
-
-               // aborting is no longer a cancellation
-               strAbort = "abort";
-
-               // Install callbacks on deferreds
-               for ( i in { success: 1, error: 1, complete: 1 } ) {
-                       jqXHR[ i ]( s[ i ] );
-               }
-
-               // Get transport
-               transport = inspectPrefiltersOrTransports( transports, s, options, jqXHR );
-
-               // If no transport, we auto-abort
-               if ( !transport ) {
-                       done( -1, "No Transport" );
-               } else {
-                       jqXHR.readyState = 1;
-
-                       // Send global event
-                       if ( fireGlobals ) {
-                               globalEventContext.trigger( "ajaxSend", [ jqXHR, s ] );
-                       }
-                       // Timeout
-                       if ( s.async && s.timeout > 0 ) {
-                               timeoutTimer = setTimeout(function() {
-                                       jqXHR.abort("timeout");
-                               }, s.timeout );
-                       }
-
-                       try {
-                               state = 1;
-                               transport.send( requestHeaders, done );
-                       } catch ( e ) {
-                               // Propagate exception as error if not done
-                               if ( state < 2 ) {
-                                       done( -1, e );
-                               // Simply rethrow otherwise
-                               } else {
-                                       throw e;
-                               }
-                       }
-               }
-
-               // Callback for when everything is done
-               function done( status, nativeStatusText, responses, headers ) {
-                       var isSuccess, success, error, response, modified,
-                               statusText = nativeStatusText;
-
-                       // Called once
-                       if ( state === 2 ) {
-                               return;
-                       }
-
-                       // State is "done" now
-                       state = 2;
-
-                       // Clear timeout if it exists
-                       if ( timeoutTimer ) {
-                               clearTimeout( timeoutTimer );
-                       }
-
-                       // Dereference transport for early garbage collection
-                       // (no matter how long the jqXHR object will be used)
-                       transport = undefined;
-
-                       // Cache response headers
-                       responseHeadersString = headers || "";
-
-                       // Set readyState
-                       jqXHR.readyState = status > 0 ? 4 : 0;
-
-                       // Determine if successful
-                       isSuccess = status >= 200 && status < 300 || status === 304;
-
-                       // Get response data
-                       if ( responses ) {
-                               response = ajaxHandleResponses( s, jqXHR, responses );
-                       }
-
-                       // Convert no matter what (that way responseXXX fields are always set)
-                       response = ajaxConvert( s, response, jqXHR, isSuccess );
-
-                       // If successful, handle type chaining
-                       if ( isSuccess ) {
-
-                               // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.
-                               if ( s.ifModified ) {
-                                       modified = jqXHR.getResponseHeader("Last-Modified");
-                                       if ( modified ) {
-                                               jQuery.lastModified[ cacheURL ] = modified;
-                                       }
-                                       modified = jqXHR.getResponseHeader("etag");
-                                       if ( modified ) {
-                                               jQuery.etag[ cacheURL ] = modified;
-                                       }
-                               }
-
-                               // if no content
-                               if ( status === 204 || s.type === "HEAD" ) {
-                                       statusText = "nocontent";
-
-                               // if not modified
-                               } else if ( status === 304 ) {
-                                       statusText = "notmodified";
-
-                               // If we have data, let's convert it
-                               } else {
-                                       statusText = response.state;
-                                       success = response.data;
-                                       error = response.error;
-                                       isSuccess = !error;
-                               }
-                       } else {
-                               // We extract error from statusText
-                               // then normalize statusText and status for non-aborts
-                               error = statusText;
-                               if ( status || !statusText ) {
-                                       statusText = "error";
-                                       if ( status < 0 ) {
-                                               status = 0;
-                                       }
-                               }
-                       }
-
-                       // Set data for the fake xhr object
-                       jqXHR.status = status;
-                       jqXHR.statusText = ( nativeStatusText || statusText ) + "";
-
-                       // Success/Error
-                       if ( isSuccess ) {
-                               deferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] );
-                       } else {
-                               deferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] );
-                       }
-
-                       // Status-dependent callbacks
-                       jqXHR.statusCode( statusCode );
-                       statusCode = undefined;
-
-                       if ( fireGlobals ) {
-                               globalEventContext.trigger( isSuccess ? "ajaxSuccess" : "ajaxError",
-                                       [ jqXHR, s, isSuccess ? success : error ] );
-                       }
-
-                       // Complete
-                       completeDeferred.fireWith( callbackContext, [ jqXHR, statusText ] );
-
-                       if ( fireGlobals ) {
-                               globalEventContext.trigger( "ajaxComplete", [ jqXHR, s ] );
-                               // Handle the global AJAX counter
-                               if ( !( --jQuery.active ) ) {
-                                       jQuery.event.trigger("ajaxStop");
-                               }
-                       }
-               }
-
-               return jqXHR;
-       },
-
-       getJSON: function( url, data, callback ) {
-               return jQuery.get( url, data, callback, "json" );
-       },
-
-       getScript: function( url, callback ) {
-               return jQuery.get( url, undefined, callback, "script" );
-       }
-});
-
-jQuery.each( [ "get", "post" ], function( i, method ) {
-       jQuery[ method ] = function( url, data, callback, type ) {
-               // shift arguments if data argument was omitted
-               if ( jQuery.isFunction( data ) ) {
-                       type = type || callback;
-                       callback = data;
-                       data = undefined;
-               }
-
-               return jQuery.ajax({
-                       url: url,
-                       type: method,
-                       dataType: type,
-                       data: data,
-                       success: callback
-               });
-       };
-});
-
-/* Handles responses to an ajax request:
- * - finds the right dataType (mediates between content-type and expected dataType)
- * - returns the corresponding response
- */
-function ajaxHandleResponses( s, jqXHR, responses ) {
-       var firstDataType, ct, finalDataType, type,
-               contents = s.contents,
-               dataTypes = s.dataTypes;
-
-       // Remove auto dataType and get content-type in the process
-       while( dataTypes[ 0 ] === "*" ) {
-               dataTypes.shift();
-               if ( ct === undefined ) {
-                       ct = s.mimeType || jqXHR.getResponseHeader("Content-Type");
-               }
-       }
-
-       // Check if we're dealing with a known content-type
-       if ( ct ) {
-               for ( type in contents ) {
-                       if ( contents[ type ] && contents[ type ].test( ct ) ) {
-                               dataTypes.unshift( type );
-                               break;
-                       }
-               }
-       }
-
-       // Check to see if we have a response for the expected dataType
-       if ( dataTypes[ 0 ] in responses ) {
-               finalDataType = dataTypes[ 0 ];
-       } else {
-               // Try convertible dataTypes
-               for ( type in responses ) {
-                       if ( !dataTypes[ 0 ] || s.converters[ type + " " + dataTypes[0] ] ) {
-                               finalDataType = type;
-                               break;
-                       }
-                       if ( !firstDataType ) {
-                               firstDataType = type;
-                       }
-               }
-               // Or just use first one
-               finalDataType = finalDataType || firstDataType;
-       }
-
-       // If we found a dataType
-       // We add the dataType to the list if needed
-       // and return the corresponding response
-       if ( finalDataType ) {
-               if ( finalDataType !== dataTypes[ 0 ] ) {
-                       dataTypes.unshift( finalDataType );
-               }
-               return responses[ finalDataType ];
-       }
-}
-
-/* Chain conversions given the request and the original response
- * Also sets the responseXXX fields on the jqXHR instance
- */
-function ajaxConvert( s, response, jqXHR, isSuccess ) {
-       var conv2, current, conv, tmp, prev,
-               converters = {},
-               // Work with a copy of dataTypes in case we need to modify it for conversion
-               dataTypes = s.dataTypes.slice();
-
-       // Create converters map with lowercased keys
-       if ( dataTypes[ 1 ] ) {
-               for ( conv in s.converters ) {
-                       converters[ conv.toLowerCase() ] = s.converters[ conv ];
-               }
-       }
-
-       current = dataTypes.shift();
-
-       // Convert to each sequential dataType
-       while ( current ) {
-
-               if ( s.responseFields[ current ] ) {
-                       jqXHR[ s.responseFields[ current ] ] = response;
-               }
-
-               // Apply the dataFilter if provided
-               if ( !prev && isSuccess && s.dataFilter ) {
-                       response = s.dataFilter( response, s.dataType );
-               }
-
-               prev = current;
-               current = dataTypes.shift();
-
-               if ( current ) {
-
-                       // There's only work to do if current dataType is non-auto
-                       if ( current === "*" ) {
-
-                               current = prev;
-
-                       // Convert response if prev dataType is non-auto and differs from current
-                       } else if ( prev !== "*" && prev !== current ) {
-
-                               // Seek a direct converter
-                               conv = converters[ prev + " " + current ] || converters[ "* " + current ];
-
-                               // If none found, seek a pair
-                               if ( !conv ) {
-                                       for ( conv2 in converters ) {
-
-                                               // If conv2 outputs current
-                                               tmp = conv2.split( " " );
-                                               if ( tmp[ 1 ] === current ) {
-
-                                                       // If prev can be converted to accepted input
-                                                       conv = converters[ prev + " " + tmp[ 0 ] ] ||
-                                                               converters[ "* " + tmp[ 0 ] ];
-                                                       if ( conv ) {
-                                                               // Condense equivalence converters
-                                                               if ( conv === true ) {
-                                                                       conv = converters[ conv2 ];
-
-                                                               // Otherwise, insert the intermediate dataType
-                                                               } else if ( converters[ conv2 ] !== true ) {
-                                                                       current = tmp[ 0 ];
-                                                                       dataTypes.unshift( tmp[ 1 ] );
-                                                               }
-                                                               break;
-                                                       }
-                                               }
-                                       }
-                               }
-
-                               // Apply converter (if not an equivalence)
-                               if ( conv !== true ) {
-
-                                       // Unless errors are allowed to bubble, catch and return them
-                                       if ( conv && s[ "throws" ] ) {
-                                               response = conv( response );
-                                       } else {
-                                               try {
-                                                       response = conv( response );
-                                               } catch ( e ) {
-                                                       return { state: "parsererror", error: conv ? e : "No conversion from " + prev + " to " + current };
-                                               }
-                                       }
-                               }
-                       }
-               }
-       }
-
-       return { state: "success", data: response };
-}
-// Install script dataType
-jQuery.ajaxSetup({
-       accepts: {
-               script: "text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"
-       },
-       contents: {
-               script: /(?:java|ecma)script/
-       },
-       converters: {
-               "text script": function( text ) {
-                       jQuery.globalEval( text );
-                       return text;
-               }
-       }
-});
-
-// Handle cache's special case and global
-jQuery.ajaxPrefilter( "script", function( s ) {
-       if ( s.cache === undefined ) {
-               s.cache = false;
-       }
-       if ( s.crossDomain ) {
-               s.type = "GET";
-               s.global = false;
-       }
-});
-
-// Bind script tag hack transport
-jQuery.ajaxTransport( "script", function(s) {
-
-       // This transport only deals with cross domain requests
-       if ( s.crossDomain ) {
-
-               var script,
-                       head = document.head || jQuery("head")[0] || document.documentElement;
-
-               return {
-
-                       send: function( _, callback ) {
-
-                               script = document.createElement("script");
-
-                               script.async = true;
-
-                               if ( s.scriptCharset ) {
-                                       script.charset = s.scriptCharset;
-                               }
-
-                               script.src = s.url;
-
-                               // Attach handlers for all browsers
-                               script.onload = script.onreadystatechange = function( _, isAbort ) {
-
-                                       if ( isAbort || !script.readyState || /loaded|complete/.test( script.readyState ) ) {
-
-                                               // Handle memory leak in IE
-                                               script.onload = script.onreadystatechange = null;
-
-                                               // Remove the script
-                                               if ( script.parentNode ) {
-                                                       script.parentNode.removeChild( script );
-                                               }
-
-                                               // Dereference the script
-                                               script = null;
-
-                                               // Callback if not abort
-                                               if ( !isAbort ) {
-                                                       callback( 200, "success" );
-                                               }
-                                       }
-                               };
-
-                               // Circumvent IE6 bugs with base elements (#2709 and #4378) by prepending
-                               // Use native DOM manipulation to avoid our domManip AJAX trickery
-                               head.insertBefore( script, head.firstChild );
-                       },
-
-                       abort: function() {
-                               if ( script ) {
-                                       script.onload( undefined, true );
-                               }
-                       }
-               };
-       }
-});
-var oldCallbacks = [],
-       rjsonp = /(=)\?(?=&|$)|\?\?/;
-
-// Default jsonp settings
-jQuery.ajaxSetup({
-       jsonp: "callback",
-       jsonpCallback: function() {
-               var callback = oldCallbacks.pop() || ( jQuery.expando + "_" + ( ajax_nonce++ ) );
-               this[ callback ] = true;
-               return callback;
-       }
-});
-
-// Detect, normalize options and install callbacks for jsonp requests
-jQuery.ajaxPrefilter( "json jsonp", function( s, originalSettings, jqXHR ) {
-
-       var callbackName, overwritten, responseContainer,
-               jsonProp = s.jsonp !== false && ( rjsonp.test( s.url ) ?
-                       "url" :
-                       typeof s.data === "string" && !( s.contentType || "" ).indexOf("application/x-www-form-urlencoded") && rjsonp.test( s.data ) && "data"
-               );
-
-       // Handle iff the expected data type is "jsonp" or we have a parameter to set
-       if ( jsonProp || s.dataTypes[ 0 ] === "jsonp" ) {
-
-               // Get callback name, remembering preexisting value associated with it
-               callbackName = s.jsonpCallback = jQuery.isFunction( s.jsonpCallback ) ?
-                       s.jsonpCallback() :
-                       s.jsonpCallback;
-
-               // Insert callback into url or form data
-               if ( jsonProp ) {
-                       s[ jsonProp ] = s[ jsonProp ].replace( rjsonp, "$1" + callbackName );
-               } else if ( s.jsonp !== false ) {
-                       s.url += ( ajax_rquery.test( s.url ) ? "&" : "?" ) + s.jsonp + "=" + callbackName;
-               }
-
-               // Use data converter to retrieve json after script execution
-               s.converters["script json"] = function() {
-                       if ( !responseContainer ) {
-                               jQuery.error( callbackName + " was not called" );
-                       }
-                       return responseContainer[ 0 ];
-               };
-
-               // force json dataType
-               s.dataTypes[ 0 ] = "json";
-
-               // Install callback
-               overwritten = window[ callbackName ];
-               window[ callbackName ] = function() {
-                       responseContainer = arguments;
-               };
-
-               // Clean-up function (fires after converters)
-               jqXHR.always(function() {
-                       // Restore preexisting value
-                       window[ callbackName ] = overwritten;
-
-                       // Save back as free
-                       if ( s[ callbackName ] ) {
-                               // make sure that re-using the options doesn't screw things around
-                               s.jsonpCallback = originalSettings.jsonpCallback;
-
-                               // save the callback name for future use
-                               oldCallbacks.push( callbackName );
-                       }
-
-                       // Call if it was a function and we have a response
-                       if ( responseContainer && jQuery.isFunction( overwritten ) ) {
-                               overwritten( responseContainer[ 0 ] );
-                       }
-
-                       responseContainer = overwritten = undefined;
-               });
-
-               // Delegate to script
-               return "script";
-       }
-});
-var xhrCallbacks, xhrSupported,
-       xhrId = 0,
-       // #5280: Internet Explorer will keep connections alive if we don't abort on unload
-       xhrOnUnloadAbort = window.ActiveXObject && function() {
-               // Abort all pending requests
-               var key;
-               for ( key in xhrCallbacks ) {
-                       xhrCallbacks[ key ]( undefined, true );
-               }
-       };
-
-// Functions to create xhrs
-function createStandardXHR() {
-       try {
-               return new window.XMLHttpRequest();
-       } catch( e ) {}
-}
-
-function createActiveXHR() {
-       try {
-               return new window.ActiveXObject("Microsoft.XMLHTTP");
-       } catch( e ) {}
-}
-
-// Create the request object
-// (This is still attached to ajaxSettings for backward compatibility)
-jQuery.ajaxSettings.xhr = window.ActiveXObject ?
-       /* Microsoft failed to properly
-        * implement the XMLHttpRequest in IE7 (can't request local files),
-        * so we use the ActiveXObject when it is available
-        * Additionally XMLHttpRequest can be disabled in IE7/IE8 so
-        * we need a fallback.
-        */
-       function() {
-               return !this.isLocal && createStandardXHR() || createActiveXHR();
-       } :
-       // For all other browsers, use the standard XMLHttpRequest object
-       createStandardXHR;
-
-// Determine support properties
-xhrSupported = jQuery.ajaxSettings.xhr();
-jQuery.support.cors = !!xhrSupported && ( "withCredentials" in xhrSupported );
-xhrSupported = jQuery.support.ajax = !!xhrSupported;
-
-// Create transport if the browser can provide an xhr
-if ( xhrSupported ) {
-
-       jQuery.ajaxTransport(function( s ) {
-               // Cross domain only allowed if supported through XMLHttpRequest
-               if ( !s.crossDomain || jQuery.support.cors ) {
-
-                       var callback;
-
-                       return {
-                               send: function( headers, complete ) {
-
-                                       // Get a new xhr
-                                       var handle, i,
-                                               xhr = s.xhr();
-
-                                       // Open the socket
-                                       // Passing null username, generates a login popup on Opera (#2865)
-                                       if ( s.username ) {
-                                               xhr.open( s.type, s.url, s.async, s.username, s.password );
-                                       } else {
-                                               xhr.open( s.type, s.url, s.async );
-                                       }
-
-                                       // Apply custom fields if provided
-                                       if ( s.xhrFields ) {
-                                               for ( i in s.xhrFields ) {
-                                                       xhr[ i ] = s.xhrFields[ i ];
-                                               }
-                                       }
-
-                                       // Override mime type if needed
-                                       if ( s.mimeType && xhr.overrideMimeType ) {
-                                               xhr.overrideMimeType( s.mimeType );
-                                       }
-
-                                       // X-Requested-With header
-                                       // For cross-domain requests, seeing as conditions for a preflight are
-                                       // akin to a jigsaw puzzle, we simply never set it to be sure.
-                                       // (it can always be set on a per-request basis or even using ajaxSetup)
-                                       // For same-domain requests, won't change header if already provided.
-                                       if ( !s.crossDomain && !headers["X-Requested-With"] ) {
-                                               headers["X-Requested-With"] = "XMLHttpRequest";
-                                       }
-
-                                       // Need an extra try/catch for cross domain requests in Firefox 3
-                                       try {
-                                               for ( i in headers ) {
-                                                       xhr.setRequestHeader( i, headers[ i ] );
-                                               }
-                                       } catch( err ) {}
-
-                                       // Do send the request
-                                       // This may raise an exception which is actually
-                                       // handled in jQuery.ajax (so no try/catch here)
-                                       xhr.send( ( s.hasContent && s.data ) || null );
-
-                                       // Listener
-                                       callback = function( _, isAbort ) {
-                                               var status, responseHeaders, statusText, responses;
-
-                                               // Firefox throws exceptions when accessing properties
-                                               // of an xhr when a network error occurred
-                                               // http://helpful.knobs-dials.com/index.php/Component_returned_failure_code:_0x80040111_(NS_ERROR_NOT_AVAILABLE)
-                                               try {
-
-                                                       // Was never called and is aborted or complete
-                                                       if ( callback && ( isAbort || xhr.readyState === 4 ) ) {
-
-                                                               // Only called once
-                                                               callback = undefined;
-
-                                                               // Do not keep as active anymore
-                                                               if ( handle ) {
-                                                                       xhr.onreadystatechange = jQuery.noop;
-                                                                       if ( xhrOnUnloadAbort ) {
-                                                                               delete xhrCallbacks[ handle ];
-                                                                       }
-                                                               }
-
-                                                               // If it's an abort
-                                                               if ( isAbort ) {
-                                                                       // Abort it manually if needed
-                                                                       if ( xhr.readyState !== 4 ) {
-                                                                               xhr.abort();
-                                                                       }
-                                                               } else {
-                                                                       responses = {};
-                                                                       status = xhr.status;
-                                                                       responseHeaders = xhr.getAllResponseHeaders();
-
-                                                                       // When requesting binary data, IE6-9 will throw an exception
-                                                                       // on any attempt to access responseText (#11426)
-                                                                       if ( typeof xhr.responseText === "string" ) {
-                                                                               responses.text = xhr.responseText;
-                                                                       }
-
-                                                                       // Firefox throws an exception when accessing
-                                                                       // statusText for faulty cross-domain requests
-                                                                       try {
-                                                                               statusText = xhr.statusText;
-                                                                       } catch( e ) {
-                                                                               // We normalize with Webkit giving an empty statusText
-                                                                               statusText = "";
-                                                                       }
-
-                                                                       // Filter status for non standard behaviors
-
-                                                                       // If the request is local and we have data: assume a success
-                                                                       // (success with no data won't get notified, that's the best we
-                                                                       // can do given current implementations)
-                                                                       if ( !status && s.isLocal && !s.crossDomain ) {
-                                                                               status = responses.text ? 200 : 404;
-                                                                       // IE - #1450: sometimes returns 1223 when it should be 204
-                                                                       } else if ( status === 1223 ) {
-                                                                               status = 204;
-                                                                       }
-                                                               }
-                                                       }
-                                               } catch( firefoxAccessException ) {
-                                                       if ( !isAbort ) {
-                                                               complete( -1, firefoxAccessException );
-                                                       }
-                                               }
-
-                                               // Call complete if needed
-                                               if ( responses ) {
-                                                       complete( status, statusText, responses, responseHeaders );
-                                               }
-                                       };
-
-                                       if ( !s.async ) {
-                                               // if we're in sync mode we fire the callback
-                                               callback();
-                                       } else if ( xhr.readyState === 4 ) {
-                                               // (IE6 & IE7) if it's in cache and has been
-                                               // retrieved directly we need to fire the callback
-                                               setTimeout( callback );
-                                       } else {
-                                               handle = ++xhrId;
-                                               if ( xhrOnUnloadAbort ) {
-                                                       // Create the active xhrs callbacks list if needed
-                                                       // and attach the unload handler
-                                                       if ( !xhrCallbacks ) {
-                                                               xhrCallbacks = {};
-                                                               jQuery( window ).unload( xhrOnUnloadAbort );
-                                                       }
-                                                       // Add to list of active xhrs callbacks
-                                                       xhrCallbacks[ handle ] = callback;
-                                               }
-                                               xhr.onreadystatechange = callback;
-                                       }
-                               },
-
-                               abort: function() {
-                                       if ( callback ) {
-                                               callback( undefined, true );
-                                       }
-                               }
-                       };
-               }
-       });
-}
-var fxNow, timerId,
-       rfxtypes = /^(?:toggle|show|hide)$/,
-       rfxnum = new RegExp( "^(?:([+-])=|)(" + core_pnum + ")([a-z%]*)$", "i" ),
-       rrun = /queueHooks$/,
-       animationPrefilters = [ defaultPrefilter ],
-       tweeners = {
-               "*": [function( prop, value ) {
-                       var tween = this.createTween( prop, value ),
-                               target = tween.cur(),
-                               parts = rfxnum.exec( value ),
-                               unit = parts && parts[ 3 ] || ( jQuery.cssNumber[ prop ] ? "" : "px" ),
-
-                               // Starting value computation is required for potential unit mismatches
-                               start = ( jQuery.cssNumber[ prop ] || unit !== "px" && +target ) &&
-                                       rfxnum.exec( jQuery.css( tween.elem, prop ) ),
-                               scale = 1,
-                               maxIterations = 20;
-
-                       if ( start && start[ 3 ] !== unit ) {
-                               // Trust units reported by jQuery.css
-                               unit = unit || start[ 3 ];
-
-                               // Make sure we update the tween properties later on
-                               parts = parts || [];
-
-                               // Iteratively approximate from a nonzero starting point
-                               start = +target || 1;
-
-                               do {
-                                       // If previous iteration zeroed out, double until we get *something*
-                                       // Use a string for doubling factor so we don't accidentally see scale as unchanged below
-                                       scale = scale || ".5";
-
-                                       // Adjust and apply
-                                       start = start / scale;
-                                       jQuery.style( tween.elem, prop, start + unit );
-
-                               // Update scale, tolerating zero or NaN from tween.cur()
-                               // And breaking the loop if scale is unchanged or perfect, or if we've just had enough
-                               } while ( scale !== (scale = tween.cur() / target) && scale !== 1 && --maxIterations );
-                       }
-
-                       // Update tween properties
-                       if ( parts ) {
-                               start = tween.start = +start || +target || 0;
-                               tween.unit = unit;
-                               // If a +=/-= token was provided, we're doing a relative animation
-                               tween.end = parts[ 1 ] ?
-                                       start + ( parts[ 1 ] + 1 ) * parts[ 2 ] :
-                                       +parts[ 2 ];
-                       }
-
-                       return tween;
-               }]
-       };
-
-// Animations created synchronously will run synchronously
-function createFxNow() {
-       setTimeout(function() {
-               fxNow = undefined;
-       });
-       return ( fxNow = jQuery.now() );
-}
-
-function createTween( value, prop, animation ) {
-       var tween,
-               collection = ( tweeners[ prop ] || [] ).concat( tweeners[ "*" ] ),
-               index = 0,
-               length = collection.length;
-       for ( ; index < length; index++ ) {
-               if ( (tween = collection[ index ].call( animation, prop, value )) ) {
-
-                       // we're done with this property
-                       return tween;
-               }
-       }
-}
-
-function Animation( elem, properties, options ) {
-       var result,
-               stopped,
-               index = 0,
-               length = animationPrefilters.length,
-               deferred = jQuery.Deferred().always( function() {
-                       // don't match elem in the :animated selector
-                       delete tick.elem;
-               }),
-               tick = function() {
-                       if ( stopped ) {
-                               return false;
-                       }
-                       var currentTime = fxNow || createFxNow(),
-                               remaining = Math.max( 0, animation.startTime + animation.duration - currentTime ),
-                               // archaic crash bug won't allow us to use 1 - ( 0.5 || 0 ) (#12497)
-                               temp = remaining / animation.duration || 0,
-                               percent = 1 - temp,
-                               index = 0,
-                               length = animation.tweens.length;
-
-                       for ( ; index < length ; index++ ) {
-                               animation.tweens[ index ].run( percent );
-                       }
-
-                       deferred.notifyWith( elem, [ animation, percent, remaining ]);
-
-                       if ( percent < 1 && length ) {
-                               return remaining;
-                       } else {
-                               deferred.resolveWith( elem, [ animation ] );
-                               return false;
-                       }
-               },
-               animation = deferred.promise({
-                       elem: elem,
-                       props: jQuery.extend( {}, properties ),
-                       opts: jQuery.extend( true, { specialEasing: {} }, options ),
-                       originalProperties: properties,
-                       originalOptions: options,
-                       startTime: fxNow || createFxNow(),
-                       duration: options.duration,
-                       tweens: [],
-                       createTween: function( prop, end ) {
-                               var tween = jQuery.Tween( elem, animation.opts, prop, end,
-                                               animation.opts.specialEasing[ prop ] || animation.opts.easing );
-                               animation.tweens.push( tween );
-                               return tween;
-                       },
-                       stop: function( gotoEnd ) {
-                               var index = 0,
-                                       // if we are going to the end, we want to run all the tweens
-                                       // otherwise we skip this part
-                                       length = gotoEnd ? animation.tweens.length : 0;
-                               if ( stopped ) {
-                                       return this;
-                               }
-                               stopped = true;
-                               for ( ; index < length ; index++ ) {
-                                       animation.tweens[ index ].run( 1 );
-                               }
-
-                               // resolve when we played the last frame
-                               // otherwise, reject
-                               if ( gotoEnd ) {
-                                       deferred.resolveWith( elem, [ animation, gotoEnd ] );
-                               } else {
-                                       deferred.rejectWith( elem, [ animation, gotoEnd ] );
-                               }
-                               return this;
-                       }
-               }),
-               props = animation.props;
-
-       propFilter( props, animation.opts.specialEasing );
-
-       for ( ; index < length ; index++ ) {
-               result = animationPrefilters[ index ].call( animation, elem, props, animation.opts );
-               if ( result ) {
-                       return result;
-               }
-       }
-
-       jQuery.map( props, createTween, animation );
-
-       if ( jQuery.isFunction( animation.opts.start ) ) {
-               animation.opts.start.call( elem, animation );
-       }
-
-       jQuery.fx.timer(
-               jQuery.extend( tick, {
-                       elem: elem,
-                       anim: animation,
-                       queue: animation.opts.queue
-               })
-       );
-
-       // attach callbacks from options
-       return animation.progress( animation.opts.progress )
-               .done( animation.opts.done, animation.opts.complete )
-               .fail( animation.opts.fail )
-               .always( animation.opts.always );
-}
-
-function propFilter( props, specialEasing ) {
-       var index, name, easing, value, hooks;
-
-       // camelCase, specialEasing and expand cssHook pass
-       for ( index in props ) {
-               name = jQuery.camelCase( index );
-               easing = specialEasing[ name ];
-               value = props[ index ];
-               if ( jQuery.isArray( value ) ) {
-                       easing = value[ 1 ];
-                       value = props[ index ] = value[ 0 ];
-               }
-
-               if ( index !== name ) {
-                       props[ name ] = value;
-                       delete props[ index ];
-               }
-
-               hooks = jQuery.cssHooks[ name ];
-               if ( hooks && "expand" in hooks ) {
-                       value = hooks.expand( value );
-                       delete props[ name ];
-
-                       // not quite $.extend, this wont overwrite keys already present.
-                       // also - reusing 'index' from above because we have the correct "name"
-                       for ( index in value ) {
-                               if ( !( index in props ) ) {
-                                       props[ index ] = value[ index ];
-                                       specialEasing[ index ] = easing;
-                               }
-                       }
-               } else {
-                       specialEasing[ name ] = easing;
-               }
-       }
-}
-
-jQuery.Animation = jQuery.extend( Animation, {
-
-       tweener: function( props, callback ) {
-               if ( jQuery.isFunction( props ) ) {
-                       callback = props;
-                       props = [ "*" ];
-               } else {
-                       props = props.split(" ");
-               }
-
-               var prop,
-                       index = 0,
-                       length = props.length;
-
-               for ( ; index < length ; index++ ) {
-                       prop = props[ index ];
-                       tweeners[ prop ] = tweeners[ prop ] || [];
-                       tweeners[ prop ].unshift( callback );
-               }
-       },
-
-       prefilter: function( callback, prepend ) {
-               if ( prepend ) {
-                       animationPrefilters.unshift( callback );
-               } else {
-                       animationPrefilters.push( callback );
-               }
-       }
-});
-
-function defaultPrefilter( elem, props, opts ) {
-       /* jshint validthis: true */
-       var prop, value, toggle, tween, hooks, oldfire,
-               anim = this,
-               orig = {},
-               style = elem.style,
-               hidden = elem.nodeType && isHidden( elem ),
-               dataShow = jQuery._data( elem, "fxshow" );
-
-       // handle queue: false promises
-       if ( !opts.queue ) {
-               hooks = jQuery._queueHooks( elem, "fx" );
-               if ( hooks.unqueued == null ) {
-                       hooks.unqueued = 0;
-                       oldfire = hooks.empty.fire;
-                       hooks.empty.fire = function() {
-                               if ( !hooks.unqueued ) {
-                                       oldfire();
-                               }
-                       };
-               }
-               hooks.unqueued++;
-
-               anim.always(function() {
-                       // doing this makes sure that the complete handler will be called
-                       // before this completes
-                       anim.always(function() {
-                               hooks.unqueued--;
-                               if ( !jQuery.queue( elem, "fx" ).length ) {
-                                       hooks.empty.fire();
-                               }
-                       });
-               });
-       }
-
-       // height/width overflow pass
-       if ( elem.nodeType === 1 && ( "height" in props || "width" in props ) ) {
-               // Make sure that nothing sneaks out
-               // Record all 3 overflow attributes because IE does not
-               // change the overflow attribute when overflowX and
-               // overflowY are set to the same value
-               opts.overflow = [ style.overflow, style.overflowX, style.overflowY ];
-
-               // Set display property to inline-block for height/width
-               // animations on inline elements that are having width/height animated
-               if ( jQuery.css( elem, "display" ) === "inline" &&
-                               jQuery.css( elem, "float" ) === "none" ) {
-
-                       // inline-level elements accept inline-block;
-                       // block-level elements need to be inline with layout
-                       if ( !jQuery.support.inlineBlockNeedsLayout || css_defaultDisplay( elem.nodeName ) === "inline" ) {
-                               style.display = "inline-block";
-
-                       } else {
-                               style.zoom = 1;
-                       }
-               }
-       }
-
-       if ( opts.overflow ) {
-               style.overflow = "hidden";
-               if ( !jQuery.support.shrinkWrapBlocks ) {
-                       anim.always(function() {
-                               style.overflow = opts.overflow[ 0 ];
-                               style.overflowX = opts.overflow[ 1 ];
-                               style.overflowY = opts.overflow[ 2 ];
-                       });
-               }
-       }
-
-
-       // show/hide pass
-       for ( prop in props ) {
-               value = props[ prop ];
-               if ( rfxtypes.exec( value ) ) {
-                       delete props[ prop ];
-                       toggle = toggle || value === "toggle";
-                       if ( value === ( hidden ? "hide" : "show" ) ) {
-                               continue;
-                       }
-                       orig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop );
-               }
-       }
-
-       if ( !jQuery.isEmptyObject( orig ) ) {
-               if ( dataShow ) {
-                       if ( "hidden" in dataShow ) {
-                               hidden = dataShow.hidden;
-                       }
-               } else {
-                       dataShow = jQuery._data( elem, "fxshow", {} );
-               }
-
-               // store state if its toggle - enables .stop().toggle() to "reverse"
-               if ( toggle ) {
-                       dataShow.hidden = !hidden;
-               }
-               if ( hidden ) {
-                       jQuery( elem ).show();
-               } else {
-                       anim.done(function() {
-                               jQuery( elem ).hide();
-                       });
-               }
-               anim.done(function() {
-                       var prop;
-                       jQuery._removeData( elem, "fxshow" );
-                       for ( prop in orig ) {
-                               jQuery.style( elem, prop, orig[ prop ] );
-                       }
-               });
-               for ( prop in orig ) {
-                       tween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim );
-
-                       if ( !( prop in dataShow ) ) {
-                               dataShow[ prop ] = tween.start;
-                               if ( hidden ) {
-                                       tween.end = tween.start;
-                                       tween.start = prop === "width" || prop === "height" ? 1 : 0;
-                               }
-                       }
-               }
-       }
-}
-
-function Tween( elem, options, prop, end, easing ) {
-       return new Tween.prototype.init( elem, options, prop, end, easing );
-}
-jQuery.Tween = Tween;
-
-Tween.prototype = {
-       constructor: Tween,
-       init: function( elem, options, prop, end, easing, unit ) {
-               this.elem = elem;
-               this.prop = prop;
-               this.easing = easing || "swing";
-               this.options = options;
-               this.start = this.now = this.cur();
-               this.end = end;
-               this.unit = unit || ( jQuery.cssNumber[ prop ] ? "" : "px" );
-       },
-       cur: function() {
-               var hooks = Tween.propHooks[ this.prop ];
-
-               return hooks && hooks.get ?
-                       hooks.get( this ) :
-                       Tween.propHooks._default.get( this );
-       },
-       run: function( percent ) {
-               var eased,
-                       hooks = Tween.propHooks[ this.prop ];
-
-               if ( this.options.duration ) {
-                       this.pos = eased = jQuery.easing[ this.easing ](
-                               percent, this.options.duration * percent, 0, 1, this.options.duration
-                       );
-               } else {
-                       this.pos = eased = percent;
-               }
-               this.now = ( this.end - this.start ) * eased + this.start;
-
-               if ( this.options.step ) {
-                       this.options.step.call( this.elem, this.now, this );
-               }
-
-               if ( hooks && hooks.set ) {
-                       hooks.set( this );
-               } else {
-                       Tween.propHooks._default.set( this );
-               }
-               return this;
-       }
-};
-
-Tween.prototype.init.prototype = Tween.prototype;
-
-Tween.propHooks = {
-       _default: {
-               get: function( tween ) {
-                       var result;
-
-                       if ( tween.elem[ tween.prop ] != null &&
-                               (!tween.elem.style || tween.elem.style[ tween.prop ] == null) ) {
-                               return tween.elem[ tween.prop ];
-                       }
-
-                       // passing an empty string as a 3rd parameter to .css will automatically
-                       // attempt a parseFloat and fallback to a string if the parse fails
-                       // so, simple values such as "10px" are parsed to Float.
-                       // complex values such as "rotate(1rad)" are returned as is.
-                       result = jQuery.css( tween.elem, tween.prop, "" );
-                       // Empty strings, null, undefined and "auto" are converted to 0.
-                       return !result || result === "auto" ? 0 : result;
-               },
-               set: function( tween ) {
-                       // use step hook for back compat - use cssHook if its there - use .style if its
-                       // available and use plain properties where available
-                       if ( jQuery.fx.step[ tween.prop ] ) {
-                               jQuery.fx.step[ tween.prop ]( tween );
-                       } else if ( tween.elem.style && ( tween.elem.style[ jQuery.cssProps[ tween.prop ] ] != null || jQuery.cssHooks[ tween.prop ] ) ) {
-                               jQuery.style( tween.elem, tween.prop, tween.now + tween.unit );
-                       } else {
-                               tween.elem[ tween.prop ] = tween.now;
-                       }
-               }
-       }
-};
-
-// Support: IE <=9
-// Panic based approach to setting things on disconnected nodes
-
-Tween.propHooks.scrollTop = Tween.propHooks.scrollLeft = {
-       set: function( tween ) {
-               if ( tween.elem.nodeType && tween.elem.parentNode ) {
-                       tween.elem[ tween.prop ] = tween.now;
-               }
-       }
-};
-
-jQuery.each([ "toggle", "show", "hide" ], function( i, name ) {
-       var cssFn = jQuery.fn[ name ];
-       jQuery.fn[ name ] = function( speed, easing, callback ) {
-               return speed == null || typeof speed === "boolean" ?
-                       cssFn.apply( this, arguments ) :
-                       this.animate( genFx( name, true ), speed, easing, callback );
-       };
-});
-
-jQuery.fn.extend({
-       fadeTo: function( speed, to, easing, callback ) {
-
-               // show any hidden elements after setting opacity to 0
-               return this.filter( isHidden ).css( "opacity", 0 ).show()
-
-                       // animate to the value specified
-                       .end().animate({ opacity: to }, speed, easing, callback );
-       },
-       animate: function( prop, speed, easing, callback ) {
-               var empty = jQuery.isEmptyObject( prop ),
-                       optall = jQuery.speed( speed, easing, callback ),
-                       doAnimation = function() {
-                               // Operate on a copy of prop so per-property easing won't be lost
-                               var anim = Animation( this, jQuery.extend( {}, prop ), optall );
-
-                               // Empty animations, or finishing resolves immediately
-                               if ( empty || jQuery._data( this, "finish" ) ) {
-                                       anim.stop( true );
-                               }
-                       };
-                       doAnimation.finish = doAnimation;
-
-               return empty || optall.queue === false ?
-                       this.each( doAnimation ) :
-                       this.queue( optall.queue, doAnimation );
-       },
-       stop: function( type, clearQueue, gotoEnd ) {
-               var stopQueue = function( hooks ) {
-                       var stop = hooks.stop;
-                       delete hooks.stop;
-                       stop( gotoEnd );
-               };
-
-               if ( typeof type !== "string" ) {
-                       gotoEnd = clearQueue;
-                       clearQueue = type;
-                       type = undefined;
-               }
-               if ( clearQueue && type !== false ) {
-                       this.queue( type || "fx", [] );
-               }
-
-               return this.each(function() {
-                       var dequeue = true,
-                               index = type != null && type + "queueHooks",
-                               timers = jQuery.timers,
-                               data = jQuery._data( this );
-
-                       if ( index ) {
-                               if ( data[ index ] && data[ index ].stop ) {
-                                       stopQueue( data[ index ] );
-                               }
-                       } else {
-                               for ( index in data ) {
-                                       if ( data[ index ] && data[ index ].stop && rrun.test( index ) ) {
-                                               stopQueue( data[ index ] );
-                                       }
-                               }
-                       }
-
-                       for ( index = timers.length; index--; ) {
-                               if ( timers[ index ].elem === this && (type == null || timers[ index ].queue === type) ) {
-                                       timers[ index ].anim.stop( gotoEnd );
-                                       dequeue = false;
-                                       timers.splice( index, 1 );
-                               }
-                       }
-
-                       // start the next in the queue if the last step wasn't forced
-                       // timers currently will call their complete callbacks, which will dequeue
-                       // but only if they were gotoEnd
-                       if ( dequeue || !gotoEnd ) {
-                               jQuery.dequeue( this, type );
-                       }
-               });
-       },
-       finish: function( type ) {
-               if ( type !== false ) {
-                       type = type || "fx";
-               }
-               return this.each(function() {
-                       var index,
-                               data = jQuery._data( this ),
-                               queue = data[ type + "queue" ],
-                               hooks = data[ type + "queueHooks" ],
-                               timers = jQuery.timers,
-                               length = queue ? queue.length : 0;
-
-                       // enable finishing flag on private data
-                       data.finish = true;
-
-                       // empty the queue first
-                       jQuery.queue( this, type, [] );
-
-                       if ( hooks && hooks.stop ) {
-                               hooks.stop.call( this, true );
-                       }
-
-                       // look for any active animations, and finish them
-                       for ( index = timers.length; index--; ) {
-                               if ( timers[ index ].elem === this && timers[ index ].queue === type ) {
-                                       timers[ index ].anim.stop( true );
-                                       timers.splice( index, 1 );
-                               }
-                       }
-
-                       // look for any animations in the old queue and finish them
-                       for ( index = 0; index < length; index++ ) {
-                               if ( queue[ index ] && queue[ index ].finish ) {
-                                       queue[ index ].finish.call( this );
-                               }
-                       }
-
-                       // turn off finishing flag
-                       delete data.finish;
-               });
-       }
-});
-
-// Generate parameters to create a standard animation
-function genFx( type, includeWidth ) {
-       var which,
-               attrs = { height: type },
-               i = 0;
-
-       // if we include width, step value is 1 to do all cssExpand values,
-       // if we don't include width, step value is 2 to skip over Left and Right
-       includeWidth = includeWidth? 1 : 0;
-       for( ; i < 4 ; i += 2 - includeWidth ) {
-               which = cssExpand[ i ];
-               attrs[ "margin" + which ] = attrs[ "padding" + which ] = type;
-       }
-
-       if ( includeWidth ) {
-               attrs.opacity = attrs.width = type;
-       }
-
-       return attrs;
-}
-
-// Generate shortcuts for custom animations
-jQuery.each({
-       slideDown: genFx("show"),
-       slideUp: genFx("hide"),
-       slideToggle: genFx("toggle"),
-       fadeIn: { opacity: "show" },
-       fadeOut: { opacity: "hide" },
-       fadeToggle: { opacity: "toggle" }
-}, function( name, props ) {
-       jQuery.fn[ name ] = function( speed, easing, callback ) {
-               return this.animate( props, speed, easing, callback );
-       };
-});
-
-jQuery.speed = function( speed, easing, fn ) {
-       var opt = speed && typeof speed === "object" ? jQuery.extend( {}, speed ) : {
-               complete: fn || !fn && easing ||
-                       jQuery.isFunction( speed ) && speed,
-               duration: speed,
-               easing: fn && easing || easing && !jQuery.isFunction( easing ) && easing
-       };
-
-       opt.duration = jQuery.fx.off ? 0 : typeof opt.duration === "number" ? opt.duration :
-               opt.duration in jQuery.fx.speeds ? jQuery.fx.speeds[ opt.duration ] : jQuery.fx.speeds._default;
-
-       // normalize opt.queue - true/undefined/null -> "fx"
-       if ( opt.queue == null || opt.queue === true ) {
-               opt.queue = "fx";
-       }
-
-       // Queueing
-       opt.old = opt.complete;
-
-       opt.complete = function() {
-               if ( jQuery.isFunction( opt.old ) ) {
-                       opt.old.call( this );
-               }
-
-               if ( opt.queue ) {
-                       jQuery.dequeue( this, opt.queue );
-               }
-       };
-
-       return opt;
-};
-
-jQuery.easing = {
-       linear: function( p ) {
-               return p;
-       },
-       swing: function( p ) {
-               return 0.5 - Math.cos( p*Math.PI ) / 2;
-       }
-};
-
-jQuery.timers = [];
-jQuery.fx = Tween.prototype.init;
-jQuery.fx.tick = function() {
-       var timer,
-               timers = jQuery.timers,
-               i = 0;
-
-       fxNow = jQuery.now();
-
-       for ( ; i < timers.length; i++ ) {
-               timer = timers[ i ];
-               // Checks the timer has not already been removed
-               if ( !timer() && timers[ i ] === timer ) {
-                       timers.splice( i--, 1 );
-               }
-       }
-
-       if ( !timers.length ) {
-               jQuery.fx.stop();
-       }
-       fxNow = undefined;
-};
-
-jQuery.fx.timer = function( timer ) {
-       if ( timer() && jQuery.timers.push( timer ) ) {
-               jQuery.fx.start();
-       }
-};
-
-jQuery.fx.interval = 13;
-
-jQuery.fx.start = function() {
-       if ( !timerId ) {
-               timerId = setInterval( jQuery.fx.tick, jQuery.fx.interval );
-       }
-};
-
-jQuery.fx.stop = function() {
-       clearInterval( timerId );
-       timerId = null;
-};
-
-jQuery.fx.speeds = {
-       slow: 600,
-       fast: 200,
-       // Default speed
-       _default: 400
-};
-
-// Back Compat <1.8 extension point
-jQuery.fx.step = {};
-
-if ( jQuery.expr && jQuery.expr.filters ) {
-       jQuery.expr.filters.animated = function( elem ) {
-               return jQuery.grep(jQuery.timers, function( fn ) {
-                       return elem === fn.elem;
-               }).length;
-       };
-}
-jQuery.fn.offset = function( options ) {
-       if ( arguments.length ) {
-               return options === undefined ?
-                       this :
-                       this.each(function( i ) {
-                               jQuery.offset.setOffset( this, options, i );
-                       });
-       }
-
-       var docElem, win,
-               box = { top: 0, left: 0 },
-               elem = this[ 0 ],
-               doc = elem && elem.ownerDocument;
-
-       if ( !doc ) {
-               return;
-       }
-
-       docElem = doc.documentElement;
-
-       // Make sure it's not a disconnected DOM node
-       if ( !jQuery.contains( docElem, elem ) ) {
-               return box;
-       }
-
-       // If we don't have gBCR, just use 0,0 rather than error
-       // BlackBerry 5, iOS 3 (original iPhone)
-       if ( typeof elem.getBoundingClientRect !== core_strundefined ) {
-               box = elem.getBoundingClientRect();
-       }
-       win = getWindow( doc );
-       return {
-               top: box.top  + ( win.pageYOffset || docElem.scrollTop )  - ( docElem.clientTop  || 0 ),
-               left: box.left + ( win.pageXOffset || docElem.scrollLeft ) - ( docElem.clientLeft || 0 )
-       };
-};
-
-jQuery.offset = {
-
-       setOffset: function( elem, options, i ) {
-               var position = jQuery.css( elem, "position" );
-
-               // set position first, in-case top/left are set even on static elem
-               if ( position === "static" ) {
-                       elem.style.position = "relative";
-               }
-
-               var curElem = jQuery( elem ),
-                       curOffset = curElem.offset(),
-                       curCSSTop = jQuery.css( elem, "top" ),
-                       curCSSLeft = jQuery.css( elem, "left" ),
-                       calculatePosition = ( position === "absolute" || position === "fixed" ) && jQuery.inArray("auto", [curCSSTop, curCSSLeft]) > -1,
-                       props = {}, curPosition = {}, curTop, curLeft;
-
-               // need to be able to calculate position if either top or left is auto and position is either absolute or fixed
-               if ( calculatePosition ) {
-                       curPosition = curElem.position();
-                       curTop = curPosition.top;
-                       curLeft = curPosition.left;
-               } else {
-                       curTop = parseFloat( curCSSTop ) || 0;
-                       curLeft = parseFloat( curCSSLeft ) || 0;
-               }
-
-               if ( jQuery.isFunction( options ) ) {
-                       options = options.call( elem, i, curOffset );
-               }
-
-               if ( options.top != null ) {
-                       props.top = ( options.top - curOffset.top ) + curTop;
-               }
-               if ( options.left != null ) {
-                       props.left = ( options.left - curOffset.left ) + curLeft;
-               }
-
-               if ( "using" in options ) {
-                       options.using.call( elem, props );
-               } else {
-                       curElem.css( props );
-               }
-       }
-};
-
-
-jQuery.fn.extend({
-
-       position: function() {
-               if ( !this[ 0 ] ) {
-                       return;
-               }
-
-               var offsetParent, offset,
-                       parentOffset = { top: 0, left: 0 },
-                       elem = this[ 0 ];
-
-               // fixed elements are offset from window (parentOffset = {top:0, left: 0}, because it is it's only offset parent
-               if ( jQuery.css( elem, "position" ) === "fixed" ) {
-                       // we assume that getBoundingClientRect is available when computed position is fixed
-                       offset = elem.getBoundingClientRect();
-               } else {
-                       // Get *real* offsetParent
-                       offsetParent = this.offsetParent();
-
-                       // Get correct offsets
-                       offset = this.offset();
-                       if ( !jQuery.nodeName( offsetParent[ 0 ], "html" ) ) {
-                               parentOffset = offsetParent.offset();
-                       }
-
-                       // Add offsetParent borders
-                       parentOffset.top  += jQuery.css( offsetParent[ 0 ], "borderTopWidth", true );
-                       parentOffset.left += jQuery.css( offsetParent[ 0 ], "borderLeftWidth", true );
-               }
-
-               // Subtract parent offsets and element margins
-               // note: when an element has margin: auto the offsetLeft and marginLeft
-               // are the same in Safari causing offset.left to incorrectly be 0
-               return {
-                       top:  offset.top  - parentOffset.top - jQuery.css( elem, "marginTop", true ),
-                       left: offset.left - parentOffset.left - jQuery.css( elem, "marginLeft", true)
-               };
-       },
-
-       offsetParent: function() {
-               return this.map(function() {
-                       var offsetParent = this.offsetParent || docElem;
-                       while ( offsetParent && ( !jQuery.nodeName( offsetParent, "html" ) && jQuery.css( offsetParent, "position") === "static" ) ) {
-                               offsetParent = offsetParent.offsetParent;
-                       }
-                       return offsetParent || docElem;
-               });
-       }
-});
-
-
-// Create scrollLeft and scrollTop methods
-jQuery.each( {scrollLeft: "pageXOffset", scrollTop: "pageYOffset"}, function( method, prop ) {
-       var top = /Y/.test( prop );
-
-       jQuery.fn[ method ] = function( val ) {
-               return jQuery.access( this, function( elem, method, val ) {
-                       var win = getWindow( elem );
-
-                       if ( val === undefined ) {
-                               return win ? (prop in win) ? win[ prop ] :
-                                       win.document.documentElement[ method ] :
-                                       elem[ method ];
-                       }
-
-                       if ( win ) {
-                               win.scrollTo(
-                                       !top ? val : jQuery( win ).scrollLeft(),
-                                       top ? val : jQuery( win ).scrollTop()
-                               );
-
-                       } else {
-                               elem[ method ] = val;
-                       }
-               }, method, val, arguments.length, null );
-       };
-});
-
-function getWindow( elem ) {
-       return jQuery.isWindow( elem ) ?
-               elem :
-               elem.nodeType === 9 ?
-                       elem.defaultView || elem.parentWindow :
-                       false;
-}
-// Create innerHeight, innerWidth, height, width, outerHeight and outerWidth methods
-jQuery.each( { Height: "height", Width: "width" }, function( name, type ) {
-       jQuery.each( { padding: "inner" + name, content: type, "": "outer" + name }, function( defaultExtra, funcName ) {
-               // margin is only for outerHeight, outerWidth
-               jQuery.fn[ funcName ] = function( margin, value ) {
-                       var chainable = arguments.length && ( defaultExtra || typeof margin !== "boolean" ),
-                               extra = defaultExtra || ( margin === true || value === true ? "margin" : "border" );
-
-                       return jQuery.access( this, function( elem, type, value ) {
-                               var doc;
-
-                               if ( jQuery.isWindow( elem ) ) {
-                                       // As of 5/8/2012 this will yield incorrect results for Mobile Safari, but there
-                                       // isn't a whole lot we can do. See pull request at this URL for discussion:
-                                       // https://github.com/jquery/jquery/pull/764
-                                       return elem.document.documentElement[ "client" + name ];
-                               }
-
-                               // Get document width or height
-                               if ( elem.nodeType === 9 ) {
-                                       doc = elem.documentElement;
-
-                                       // Either scroll[Width/Height] or offset[Width/Height] or client[Width/Height], whichever is greatest
-                                       // unfortunately, this causes bug #3838 in IE6/8 only, but there is currently no good, small way to fix it.
-                                       return Math.max(
-                                               elem.body[ "scroll" + name ], doc[ "scroll" + name ],
-                                               elem.body[ "offset" + name ], doc[ "offset" + name ],
-                                               doc[ "client" + name ]
-                                       );
-                               }
-
-                               return value === undefined ?
-                                       // Get width or height on the element, requesting but not forcing parseFloat
-                                       jQuery.css( elem, type, extra ) :
-
-                                       // Set width or height on the element
-                                       jQuery.style( elem, type, value, extra );
-                       }, type, chainable ? margin : undefined, chainable, null );
-               };
-       });
-});
-// Limit scope pollution from any deprecated API
-// (function() {
-
-// The number of elements contained in the matched element set
-jQuery.fn.size = function() {
-       return this.length;
-};
-
-jQuery.fn.andSelf = jQuery.fn.addBack;
-
-// })();
-if ( typeof module === "object" && module && typeof module.exports === "object" ) {
-       // Expose jQuery as module.exports in loaders that implement the Node
-       // module pattern (including browserify). Do not create the global, since
-       // the user will be storing it themselves locally, and globals are frowned
-       // upon in the Node module world.
-       module.exports = jQuery;
-} else {
-       // Otherwise expose jQuery to the global object as usual
-       window.jQuery = window.$ = jQuery;
-
-       // Register as a named AMD module, since jQuery can be concatenated with other
-       // files that may use define, but not via a proper concatenation script that
-       // understands anonymous AMD modules. A named AMD is safest and most robust
-       // way to register. Lowercase jquery is used because AMD module names are
-       // derived from file names, and jQuery is normally delivered in a lowercase
-       // file name. Do this after creating the global so that if an AMD module wants
-       // to call noConflict to hide this version of jQuery, it will work.
-       if ( typeof define === "function" && define.amd ) {
-               define( "jquery", [], function () { return jQuery; } );
-       }
-}
-
-})( window );
diff --git a/src/main/resources/META-INF/resources/designer/lib/jquery-ui-1.11.3/images/ui-icons_444444_256x240.png b/src/main/resources/META-INF/resources/designer/lib/jquery-ui-1.11.3/images/ui-icons_444444_256x240.png
deleted file mode 100644 (file)
index 1df0745..0000000
Binary files a/src/main/resources/META-INF/resources/designer/lib/jquery-ui-1.11.3/images/ui-icons_444444_256x240.png and /dev/null differ
diff --git a/src/main/resources/META-INF/resources/designer/lib/jquery-ui-1.11.3/images/ui-icons_555555_256x240.png b/src/main/resources/META-INF/resources/designer/lib/jquery-ui-1.11.3/images/ui-icons_555555_256x240.png
deleted file mode 100644 (file)
index 0b55938..0000000
Binary files a/src/main/resources/META-INF/resources/designer/lib/jquery-ui-1.11.3/images/ui-icons_555555_256x240.png and /dev/null differ
diff --git a/src/main/resources/META-INF/resources/designer/lib/jquery-ui-1.11.3/images/ui-icons_777620_256x240.png b/src/main/resources/META-INF/resources/designer/lib/jquery-ui-1.11.3/images/ui-icons_777620_256x240.png
deleted file mode 100644 (file)
index 57da2a1..0000000
Binary files a/src/main/resources/META-INF/resources/designer/lib/jquery-ui-1.11.3/images/ui-icons_777620_256x240.png and /dev/null differ
diff --git a/src/main/resources/META-INF/resources/designer/lib/jquery-ui-1.11.3/images/ui-icons_777777_256x240.png b/src/main/resources/META-INF/resources/designer/lib/jquery-ui-1.11.3/images/ui-icons_777777_256x240.png
deleted file mode 100644 (file)
index b5f6ac8..0000000
Binary files a/src/main/resources/META-INF/resources/designer/lib/jquery-ui-1.11.3/images/ui-icons_777777_256x240.png and /dev/null differ
diff --git a/src/main/resources/META-INF/resources/designer/lib/jquery-ui-1.11.3/images/ui-icons_cc0000_256x240.png b/src/main/resources/META-INF/resources/designer/lib/jquery-ui-1.11.3/images/ui-icons_cc0000_256x240.png
deleted file mode 100644 (file)
index d0fa9b7..0000000
Binary files a/src/main/resources/META-INF/resources/designer/lib/jquery-ui-1.11.3/images/ui-icons_cc0000_256x240.png and /dev/null differ
diff --git a/src/main/resources/META-INF/resources/designer/lib/jquery-ui-1.11.3/images/ui-icons_ffffff_256x240.png b/src/main/resources/META-INF/resources/designer/lib/jquery-ui-1.11.3/images/ui-icons_ffffff_256x240.png
deleted file mode 100644 (file)
index c964d9a..0000000
Binary files a/src/main/resources/META-INF/resources/designer/lib/jquery-ui-1.11.3/images/ui-icons_ffffff_256x240.png and /dev/null differ
diff --git a/src/main/resources/META-INF/resources/designer/lib/jquery-ui-1.11.3/index.html b/src/main/resources/META-INF/resources/designer/lib/jquery-ui-1.11.3/index.html
deleted file mode 100644 (file)
index b878272..0000000
+++ /dev/null
@@ -1,513 +0,0 @@
-<!doctype html>
-<html lang="us">
-<head>
-       <meta charset="utf-8">
-       <title>jQuery UI Example Page</title>
-       <link href="jquery-ui.css" rel="stylesheet">
-       <style>
-       body{
-               font: 62.5% "Trebuchet MS", sans-serif;
-               margin: 50px;
-       }
-       .demoHeaders {
-               margin-top: 2em;
-       }
-       #dialog-link {
-               padding: .4em 1em .4em 20px;
-               text-decoration: none;
-               position: relative;
-       }
-       #dialog-link span.ui-icon {
-               margin: 0 5px 0 0;
-               position: absolute;
-               left: .2em;
-               top: 50%;
-               margin-top: -8px;
-       }
-       #icons {
-               margin: 0;
-               padding: 0;
-       }
-       #icons li {
-               margin: 2px;
-               position: relative;
-               padding: 4px 0;
-               cursor: pointer;
-               float: left;
-               list-style: none;
-       }
-       #icons span.ui-icon {
-               float: left;
-               margin: 0 4px;
-       }
-       .fakewindowcontain .ui-widget-overlay {
-               position: absolute;
-       }
-       select {
-               width: 200px;
-       }
-       </style>
-</head>
-<body>
-
-<h1>Welcome to jQuery UI!</h1>
-
-<div class="ui-widget">
-       <p>This page demonstrates the widgets and theme you selected in Download Builder. Please make sure you are using them with a compatible jQuery version.</p>
-</div>
-
-<h1>YOUR COMPONENTS:</h1>
-
-
-<!-- Accordion -->
-<h2 class="demoHeaders">Accordion</h2>
-<div id="accordion">
-       <h3>First</h3>
-       <div>Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet.</div>
-       <h3>Second</h3>
-       <div>Phasellus mattis tincidunt nibh.</div>
-       <h3>Third</h3>
-       <div>Nam dui erat, auctor a, dignissim quis.</div>
-</div>
-
-
-
-<!-- Autocomplete -->
-<h2 class="demoHeaders">Autocomplete</h2>
-<div>
-       <input id="autocomplete" title="type &quot;a&quot;">
-</div>
-
-
-
-<!-- Button -->
-<h2 class="demoHeaders">Button</h2>
-<button id="button">A button element</button>
-<form style="margin-top: 1em;">
-       <div id="radioset">
-               <input type="radio" id="radio1" name="radio"><label for="radio1">Choice 1</label>
-               <input type="radio" id="radio2" name="radio" checked="checked"><label for="radio2">Choice 2</label>
-               <input type="radio" id="radio3" name="radio"><label for="radio3">Choice 3</label>
-       </div>
-</form>
-
-
-
-<!-- Tabs -->
-<h2 class="demoHeaders">Tabs</h2>
-<div id="tabs">
-       <ul>
-               <li><a href="#tabs-1">First</a></li>
-               <li><a href="#tabs-2">Second</a></li>
-               <li><a href="#tabs-3">Third</a></li>
-       </ul>
-       <div id="tabs-1">Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.</div>
-       <div id="tabs-2">Phasellus mattis tincidunt nibh. Cras orci urna, blandit id, pretium vel, aliquet ornare, felis. Maecenas scelerisque sem non nisl. Fusce sed lorem in enim dictum bibendum.</div>
-       <div id="tabs-3">Nam dui erat, auctor a, dignissim quis, sollicitudin eu, felis. Pellentesque nisi urna, interdum eget, sagittis et, consequat vestibulum, lacus. Mauris porttitor ullamcorper augue.</div>
-</div>
-
-
-
-<!-- Dialog NOTE: Dialog is not generated by UI in this demo so it can be visually styled in themeroller-->
-<h2 class="demoHeaders">Dialog</h2>
-<p><a href="#" id="dialog-link" class="ui-state-default ui-corner-all"><span class="ui-icon ui-icon-newwin"></span>Open Dialog</a></p>
-
-<h2 class="demoHeaders">Overlay and Shadow Classes <em>(not currently used in UI widgets)</em></h2>
-<div style="position: relative; width: 96%; height: 200px; padding:1% 2%; overflow:hidden;" class="fakewindowcontain">
-       <p>Lorem ipsum dolor sit amet,  Nulla nec tortor. Donec id elit quis purus consectetur consequat. </p><p>Nam congue semper tellus. Sed erat dolor, dapibus sit amet, venenatis ornare, ultrices ut, nisi. Aliquam ante. Suspendisse scelerisque dui nec velit. Duis augue augue, gravida euismod, vulputate ac, facilisis id, sem. Morbi in orci. </p><p>Nulla purus lacus, pulvinar vel, malesuada ac, mattis nec, quam. Nam molestie scelerisque quam. Nullam feugiat cursus lacus.orem ipsum dolor sit amet, consectetur adipiscing elit. Donec libero risus, commodo vitae, pharetra mollis, posuere eu, pede. Nulla nec tortor. Donec id elit quis purus consectetur consequat. </p><p>Nam congue semper tellus. Sed erat dolor, dapibus sit amet, venenatis ornare, ultrices ut, nisi. Aliquam ante. Suspendisse scelerisque dui nec velit. Duis augue augue, gravida euismod, vulputate ac, facilisis id, sem. Morbi in orci. Nulla purus lacus, pulvinar vel, malesuada ac, mattis nec, quam. Nam molestie scelerisque quam. </p><p>Nullam feugiat cursus lacus.orem ipsum dolor sit amet, consectetur adipiscing elit. Donec libero risus, commodo vitae, pharetra mollis, posuere eu, pede. Nulla nec tortor. Donec id elit quis purus consectetur consequat. Nam congue semper tellus. Sed erat dolor, dapibus sit amet, venenatis ornare, ultrices ut, nisi. Aliquam ante. </p><p>Suspendisse scelerisque dui nec velit. Duis augue augue, gravida euismod, vulputate ac, facilisis id, sem. Morbi in orci. Nulla purus lacus, pulvinar vel, malesuada ac, mattis nec, quam. Nam molestie scelerisque quam. Nullam feugiat cursus lacus.orem ipsum dolor sit amet, consectetur adipiscing elit. Donec libero risus, commodo vitae, pharetra mollis, posuere eu, pede. Nulla nec tortor. Donec id elit quis purus consectetur consequat. Nam congue semper tellus. Sed erat dolor, dapibus sit amet, venenatis ornare, ultrices ut, nisi. </p>
-
-       <!-- ui-dialog -->
-       <div class="ui-overlay"><div class="ui-widget-overlay"></div><div class="ui-widget-shadow ui-corner-all" style="width: 302px; height: 152px; position: absolute; left: 50px; top: 30px;"></div></div>
-       <div style="position: absolute; width: 280px; height: 130px;left: 50px; top: 30px; padding: 10px;" class="ui-widget ui-widget-content ui-corner-all">
-               <div class="ui-dialog-content ui-widget-content" style="background: none; border: 0;">
-                       <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.</p>
-               </div>
-       </div>
-
-</div>
-
-<!-- ui-dialog -->
-<div id="dialog" title="Dialog Title">
-       <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.</p>
-</div>
-
-
-
-<h2 class="demoHeaders">Framework Icons (content color preview)</h2>
-<ul id="icons" class="ui-widget ui-helper-clearfix">
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-carat-1-n"><span class="ui-icon ui-icon-carat-1-n"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-carat-1-ne"><span class="ui-icon ui-icon-carat-1-ne"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-carat-1-e"><span class="ui-icon ui-icon-carat-1-e"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-carat-1-se"><span class="ui-icon ui-icon-carat-1-se"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-carat-1-s"><span class="ui-icon ui-icon-carat-1-s"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-carat-1-sw"><span class="ui-icon ui-icon-carat-1-sw"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-carat-1-w"><span class="ui-icon ui-icon-carat-1-w"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-carat-1-nw"><span class="ui-icon ui-icon-carat-1-nw"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-carat-2-n-s"><span class="ui-icon ui-icon-carat-2-n-s"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-carat-2-e-w"><span class="ui-icon ui-icon-carat-2-e-w"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-triangle-1-n"><span class="ui-icon ui-icon-triangle-1-n"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-triangle-1-ne"><span class="ui-icon ui-icon-triangle-1-ne"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-triangle-1-e"><span class="ui-icon ui-icon-triangle-1-e"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-triangle-1-se"><span class="ui-icon ui-icon-triangle-1-se"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-triangle-1-s"><span class="ui-icon ui-icon-triangle-1-s"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-triangle-1-sw"><span class="ui-icon ui-icon-triangle-1-sw"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-triangle-1-w"><span class="ui-icon ui-icon-triangle-1-w"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-triangle-1-nw"><span class="ui-icon ui-icon-triangle-1-nw"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-triangle-2-n-s"><span class="ui-icon ui-icon-triangle-2-n-s"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-triangle-2-e-w"><span class="ui-icon ui-icon-triangle-2-e-w"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-arrow-1-n"><span class="ui-icon ui-icon-arrow-1-n"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-arrow-1-ne"><span class="ui-icon ui-icon-arrow-1-ne"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-arrow-1-e"><span class="ui-icon ui-icon-arrow-1-e"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-arrow-1-se"><span class="ui-icon ui-icon-arrow-1-se"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-arrow-1-s"><span class="ui-icon ui-icon-arrow-1-s"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-arrow-1-sw"><span class="ui-icon ui-icon-arrow-1-sw"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-arrow-1-w"><span class="ui-icon ui-icon-arrow-1-w"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-arrow-1-nw"><span class="ui-icon ui-icon-arrow-1-nw"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-arrow-2-n-s"><span class="ui-icon ui-icon-arrow-2-n-s"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-arrow-2-ne-sw"><span class="ui-icon ui-icon-arrow-2-ne-sw"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-arrow-2-e-w"><span class="ui-icon ui-icon-arrow-2-e-w"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-arrow-2-se-nw"><span class="ui-icon ui-icon-arrow-2-se-nw"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-arrowstop-1-n"><span class="ui-icon ui-icon-arrowstop-1-n"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-arrowstop-1-e"><span class="ui-icon ui-icon-arrowstop-1-e"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-arrowstop-1-s"><span class="ui-icon ui-icon-arrowstop-1-s"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-arrowstop-1-w"><span class="ui-icon ui-icon-arrowstop-1-w"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-arrowthick-1-n"><span class="ui-icon ui-icon-arrowthick-1-n"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-arrowthick-1-ne"><span class="ui-icon ui-icon-arrowthick-1-ne"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-arrowthick-1-e"><span class="ui-icon ui-icon-arrowthick-1-e"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-arrowthick-1-se"><span class="ui-icon ui-icon-arrowthick-1-se"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-arrowthick-1-s"><span class="ui-icon ui-icon-arrowthick-1-s"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-arrowthick-1-sw"><span class="ui-icon ui-icon-arrowthick-1-sw"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-arrowthick-1-w"><span class="ui-icon ui-icon-arrowthick-1-w"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-arrowthick-1-nw"><span class="ui-icon ui-icon-arrowthick-1-nw"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-arrowthick-2-n-s"><span class="ui-icon ui-icon-arrowthick-2-n-s"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-arrowthick-2-ne-sw"><span class="ui-icon ui-icon-arrowthick-2-ne-sw"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-arrowthick-2-e-w"><span class="ui-icon ui-icon-arrowthick-2-e-w"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-arrowthick-2-se-nw"><span class="ui-icon ui-icon-arrowthick-2-se-nw"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-arrowthickstop-1-n"><span class="ui-icon ui-icon-arrowthickstop-1-n"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-arrowthickstop-1-e"><span class="ui-icon ui-icon-arrowthickstop-1-e"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-arrowthickstop-1-s"><span class="ui-icon ui-icon-arrowthickstop-1-s"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-arrowthickstop-1-w"><span class="ui-icon ui-icon-arrowthickstop-1-w"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-arrowreturnthick-1-w"><span class="ui-icon ui-icon-arrowreturnthick-1-w"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-arrowreturnthick-1-n"><span class="ui-icon ui-icon-arrowreturnthick-1-n"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-arrowreturnthick-1-e"><span class="ui-icon ui-icon-arrowreturnthick-1-e"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-arrowreturnthick-1-s"><span class="ui-icon ui-icon-arrowreturnthick-1-s"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-arrowreturn-1-w"><span class="ui-icon ui-icon-arrowreturn-1-w"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-arrowreturn-1-n"><span class="ui-icon ui-icon-arrowreturn-1-n"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-arrowreturn-1-e"><span class="ui-icon ui-icon-arrowreturn-1-e"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-arrowreturn-1-s"><span class="ui-icon ui-icon-arrowreturn-1-s"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-arrowrefresh-1-w"><span class="ui-icon ui-icon-arrowrefresh-1-w"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-arrowrefresh-1-n"><span class="ui-icon ui-icon-arrowrefresh-1-n"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-arrowrefresh-1-e"><span class="ui-icon ui-icon-arrowrefresh-1-e"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-arrowrefresh-1-s"><span class="ui-icon ui-icon-arrowrefresh-1-s"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-arrow-4"><span class="ui-icon ui-icon-arrow-4"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-arrow-4-diag"><span class="ui-icon ui-icon-arrow-4-diag"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-extlink"><span class="ui-icon ui-icon-extlink"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-newwin"><span class="ui-icon ui-icon-newwin"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-refresh"><span class="ui-icon ui-icon-refresh"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-shuffle"><span class="ui-icon ui-icon-shuffle"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-transfer-e-w"><span class="ui-icon ui-icon-transfer-e-w"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-transferthick-e-w"><span class="ui-icon ui-icon-transferthick-e-w"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-folder-collapsed"><span class="ui-icon ui-icon-folder-collapsed"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-folder-open"><span class="ui-icon ui-icon-folder-open"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-document"><span class="ui-icon ui-icon-document"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-document-b"><span class="ui-icon ui-icon-document-b"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-note"><span class="ui-icon ui-icon-note"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-mail-closed"><span class="ui-icon ui-icon-mail-closed"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-mail-open"><span class="ui-icon ui-icon-mail-open"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-suitcase"><span class="ui-icon ui-icon-suitcase"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-comment"><span class="ui-icon ui-icon-comment"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-person"><span class="ui-icon ui-icon-person"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-print"><span class="ui-icon ui-icon-print"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-trash"><span class="ui-icon ui-icon-trash"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-locked"><span class="ui-icon ui-icon-locked"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-unlocked"><span class="ui-icon ui-icon-unlocked"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-bookmark"><span class="ui-icon ui-icon-bookmark"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-tag"><span class="ui-icon ui-icon-tag"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-home"><span class="ui-icon ui-icon-home"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-flag"><span class="ui-icon ui-icon-flag"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-calculator"><span class="ui-icon ui-icon-calculator"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-cart"><span class="ui-icon ui-icon-cart"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-pencil"><span class="ui-icon ui-icon-pencil"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-clock"><span class="ui-icon ui-icon-clock"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-disk"><span class="ui-icon ui-icon-disk"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-calendar"><span class="ui-icon ui-icon-calendar"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-zoomin"><span class="ui-icon ui-icon-zoomin"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-zoomout"><span class="ui-icon ui-icon-zoomout"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-search"><span class="ui-icon ui-icon-search"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-wrench"><span class="ui-icon ui-icon-wrench"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-gear"><span class="ui-icon ui-icon-gear"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-heart"><span class="ui-icon ui-icon-heart"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-star"><span class="ui-icon ui-icon-star"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-link"><span class="ui-icon ui-icon-link"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-cancel"><span class="ui-icon ui-icon-cancel"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-plus"><span class="ui-icon ui-icon-plus"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-plusthick"><span class="ui-icon ui-icon-plusthick"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-minus"><span class="ui-icon ui-icon-minus"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-minusthick"><span class="ui-icon ui-icon-minusthick"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-close"><span class="ui-icon ui-icon-close"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-closethick"><span class="ui-icon ui-icon-closethick"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-key"><span class="ui-icon ui-icon-key"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-lightbulb"><span class="ui-icon ui-icon-lightbulb"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-scissors"><span class="ui-icon ui-icon-scissors"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-clipboard"><span class="ui-icon ui-icon-clipboard"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-copy"><span class="ui-icon ui-icon-copy"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-contact"><span class="ui-icon ui-icon-contact"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-image"><span class="ui-icon ui-icon-image"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-video"><span class="ui-icon ui-icon-video"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-script"><span class="ui-icon ui-icon-script"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-alert"><span class="ui-icon ui-icon-alert"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-info"><span class="ui-icon ui-icon-info"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-notice"><span class="ui-icon ui-icon-notice"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-help"><span class="ui-icon ui-icon-help"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-check"><span class="ui-icon ui-icon-check"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-bullet"><span class="ui-icon ui-icon-bullet"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-radio-off"><span class="ui-icon ui-icon-radio-off"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-radio-on"><span class="ui-icon ui-icon-radio-on"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-pin-w"><span class="ui-icon ui-icon-pin-w"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-pin-s"><span class="ui-icon ui-icon-pin-s"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-play"><span class="ui-icon ui-icon-play"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-pause"><span class="ui-icon ui-icon-pause"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-seek-next"><span class="ui-icon ui-icon-seek-next"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-seek-prev"><span class="ui-icon ui-icon-seek-prev"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-seek-end"><span class="ui-icon ui-icon-seek-end"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-seek-first"><span class="ui-icon ui-icon-seek-first"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-stop"><span class="ui-icon ui-icon-stop"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-eject"><span class="ui-icon ui-icon-eject"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-volume-off"><span class="ui-icon ui-icon-volume-off"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-volume-on"><span class="ui-icon ui-icon-volume-on"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-power"><span class="ui-icon ui-icon-power"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-signal-diag"><span class="ui-icon ui-icon-signal-diag"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-signal"><span class="ui-icon ui-icon-signal"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-battery-0"><span class="ui-icon ui-icon-battery-0"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-battery-1"><span class="ui-icon ui-icon-battery-1"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-battery-2"><span class="ui-icon ui-icon-battery-2"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-battery-3"><span class="ui-icon ui-icon-battery-3"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-circle-plus"><span class="ui-icon ui-icon-circle-plus"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-circle-minus"><span class="ui-icon ui-icon-circle-minus"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-circle-close"><span class="ui-icon ui-icon-circle-close"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-circle-triangle-e"><span class="ui-icon ui-icon-circle-triangle-e"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-circle-triangle-s"><span class="ui-icon ui-icon-circle-triangle-s"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-circle-triangle-w"><span class="ui-icon ui-icon-circle-triangle-w"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-circle-triangle-n"><span class="ui-icon ui-icon-circle-triangle-n"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-circle-arrow-e"><span class="ui-icon ui-icon-circle-arrow-e"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-circle-arrow-s"><span class="ui-icon ui-icon-circle-arrow-s"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-circle-arrow-w"><span class="ui-icon ui-icon-circle-arrow-w"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-circle-arrow-n"><span class="ui-icon ui-icon-circle-arrow-n"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-circle-zoomin"><span class="ui-icon ui-icon-circle-zoomin"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-circle-zoomout"><span class="ui-icon ui-icon-circle-zoomout"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-circle-check"><span class="ui-icon ui-icon-circle-check"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-circlesmall-plus"><span class="ui-icon ui-icon-circlesmall-plus"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-circlesmall-minus"><span class="ui-icon ui-icon-circlesmall-minus"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-circlesmall-close"><span class="ui-icon ui-icon-circlesmall-close"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-squaresmall-plus"><span class="ui-icon ui-icon-squaresmall-plus"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-squaresmall-minus"><span class="ui-icon ui-icon-squaresmall-minus"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-squaresmall-close"><span class="ui-icon ui-icon-squaresmall-close"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-grip-dotted-vertical"><span class="ui-icon ui-icon-grip-dotted-vertical"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-grip-dotted-horizontal"><span class="ui-icon ui-icon-grip-dotted-horizontal"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-grip-solid-vertical"><span class="ui-icon ui-icon-grip-solid-vertical"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-grip-solid-horizontal"><span class="ui-icon ui-icon-grip-solid-horizontal"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-gripsmall-diagonal-se"><span class="ui-icon ui-icon-gripsmall-diagonal-se"></span></li>
-       <li class="ui-state-default ui-corner-all" title=".ui-icon-grip-diagonal-se"><span class="ui-icon ui-icon-grip-diagonal-se"></span></li>
-</ul>
-
-
-<!-- Slider -->
-<h2 class="demoHeaders">Slider</h2>
-<div id="slider"></div>
-
-
-
-<!-- Datepicker -->
-<h2 class="demoHeaders">Datepicker</h2>
-<div id="datepicker"></div>
-
-
-
-<!-- Progressbar -->
-<h2 class="demoHeaders">Progressbar</h2>
-<div id="progressbar"></div>
-
-
-
-<!-- Progressbar -->
-<h2 class="demoHeaders">Selectmenu</h2>
-<select id="selectmenu">
-       <option>Slower</option>
-       <option>Slow</option>
-       <option selected="selected">Medium</option>
-       <option>Fast</option>
-       <option>Faster</option>
-</select>
-
-
-
-<!-- Spinner -->
-<h2 class="demoHeaders">Spinner</h2>
-<input id="spinner">
-
-
-
-<!-- Menu -->
-<h2 class="demoHeaders">Menu</h2>
-<ul style="width:100px;" id="menu">
-       <li>Item 1</li>
-       <li>Item 2</li>
-       <li>Item 3
-               <ul>
-                       <li>Item 3-1</li>
-                       <li>Item 3-2</li>
-                       <li>Item 3-3</li>
-                       <li>Item 3-4</li>
-                       <li>Item 3-5</li>
-               </ul>
-       </li>
-       <li>Item 4</li>
-       <li>Item 5</li>
-</ul>
-
-
-
-<!-- Tooltip -->
-<h2 class="demoHeaders">Tooltip</h2>
-<p id="tooltip">
-       <a href="#" title="That&apos;s what this widget is">Tooltips</a> can be attached to any element. When you hover
-the element with your mouse, the title attribute is displayed in a little box next to the element, just like a native tooltip.
-</p>
-
-
-<!-- Highlight / Error -->
-<h2 class="demoHeaders">Highlight / Error</h2>
-<div class="ui-widget">
-       <div class="ui-state-highlight ui-corner-all" style="margin-top: 20px; padding: 0 .7em;">
-               <p><span class="ui-icon ui-icon-info" style="float: left; margin-right: .3em;"></span>
-               <strong>Hey!</strong> Sample ui-state-highlight style.</p>
-       </div>
-</div>
-<br>
-<div class="ui-widget">
-       <div class="ui-state-error ui-corner-all" style="padding: 0 .7em;">
-               <p><span class="ui-icon ui-icon-alert" style="float: left; margin-right: .3em;"></span>
-               <strong>Alert:</strong> Sample ui-state-error style.</p>
-       </div>
-</div>
-
-<script src="external/jquery/jquery.js"></script>
-<script src="jquery-ui.js"></script>
-<script>
-
-$( "#accordion" ).accordion();
-
-
-
-var availableTags = [
-       "ActionScript",
-       "AppleScript",
-       "Asp",
-       "BASIC",
-       "C",
-       "C++",
-       "Clojure",
-       "COBOL",
-       "ColdFusion",
-       "Erlang",
-       "Fortran",
-       "Groovy",
-       "Haskell",
-       "Java",
-       "JavaScript",
-       "Lisp",
-       "Perl",
-       "PHP",
-       "Python",
-       "Ruby",
-       "Scala",
-       "Scheme"
-];
-$( "#autocomplete" ).autocomplete({
-       source: availableTags
-});
-
-
-
-$( "#button" ).button();
-$( "#radioset" ).buttonset();
-
-
-
-$( "#tabs" ).tabs();
-
-
-
-$( "#dialog" ).dialog({
-       autoOpen: false,
-       width: 400,
-       buttons: [
-               {
-                       text: "Ok",
-                       click: function() {
-                               $( this ).dialog( "close" );
-                       }
-               },
-               {
-                       text: "Cancel",
-                       click: function() {
-                               $( this ).dialog( "close" );
-                       }
-               }
-       ]
-});
-
-// Link to open the dialog
-$( "#dialog-link" ).click(function( event ) {
-       $( "#dialog" ).dialog( "open" );
-       event.preventDefault();
-});
-
-
-
-$( "#datepicker" ).datepicker({
-       inline: true
-});
-
-
-
-$( "#slider" ).slider({
-       range: true,
-       values: [ 17, 67 ]
-});
-
-
-
-$( "#progressbar" ).progressbar({
-       value: 20
-});
-
-
-
-$( "#spinner" ).spinner();
-
-
-
-$( "#menu" ).menu();
-
-
-
-$( "#tooltip" ).tooltip();
-
-
-
-$( "#selectmenu" ).selectmenu();
-
-
-// Hover states on the static widgets
-$( "#dialog-link, #icons li" ).hover(
-       function() {
-               $( this ).addClass( "ui-state-hover" );
-       },
-       function() {
-               $( this ).removeClass( "ui-state-hover" );
-       }
-);
-</script>
-</body>
-</html>
diff --git a/src/main/resources/META-INF/resources/designer/lib/jquery-ui-1.11.3/jquery-ui.css b/src/main/resources/META-INF/resources/designer/lib/jquery-ui-1.11.3/jquery-ui.css
deleted file mode 100644 (file)
index 975aa1b..0000000
+++ /dev/null
@@ -1,1225 +0,0 @@
-/*! jQuery UI - v1.11.3 - 2015-02-12
-* http://jqueryui.com
-* Includes: core.css, accordion.css, autocomplete.css, button.css, datepicker.css, dialog.css, draggable.css, menu.css, progressbar.css, resizable.css, selectable.css, selectmenu.css, slider.css, sortable.css, spinner.css, tabs.css, tooltip.css, theme.css
-* To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Arial%2CHelvetica%2Csans-serif&fsDefault=1em&fwDefault=normal&cornerRadius=3px&bgColorHeader=e9e9e9&bgTextureHeader=flat&borderColorHeader=dddddd&fcHeader=333333&iconColorHeader=444444&bgColorContent=ffffff&bgTextureContent=flat&borderColorContent=dddddd&fcContent=333333&iconColorContent=444444&bgColorDefault=f6f6f6&bgTextureDefault=flat&borderColorDefault=c5c5c5&fcDefault=454545&iconColorDefault=777777&bgColorHover=ededed&bgTextureHover=flat&borderColorHover=cccccc&fcHover=2b2b2b&iconColorHover=555555&bgColorActive=007fff&bgTextureActive=flat&borderColorActive=003eff&fcActive=ffffff&iconColorActive=ffffff&bgColorHighlight=fffa90&bgTextureHighlight=flat&borderColorHighlight=dad55e&fcHighlight=777620&iconColorHighlight=777620&bgColorError=fddfdf&bgTextureError=flat&borderColorError=f1a899&fcError=5f3f3f&iconColorError=cc0000&bgColorOverlay=aaaaaa&bgTextureOverlay=flat&bgImgOpacityOverlay=0&opacityOverlay=30&bgColorShadow=666666&bgTextureShadow=flat&bgImgOpacityShadow=0&opacityShadow=30&thicknessShadow=5px&offsetTopShadow=0px&offsetLeftShadow=0px&cornerRadiusShadow=8px
-* Copyright jQuery Foundation and other contributors; Licensed MIT */
-
-/* Layout helpers
-----------------------------------*/
-.ui-helper-hidden {
-       display: none;
-}
-.ui-helper-hidden-accessible {
-       border: 0;
-       clip: rect(0 0 0 0);
-       height: 1px;
-       margin: -1px;
-       overflow: hidden;
-       padding: 0;
-       position: absolute;
-       width: 1px;
-}
-.ui-helper-reset {
-       margin: 0;
-       padding: 0;
-       border: 0;
-       outline: 0;
-       line-height: 1.3;
-       text-decoration: none;
-       font-size: 100%;
-       list-style: none;
-}
-.ui-helper-clearfix:before,
-.ui-helper-clearfix:after {
-       content: "";
-       display: table;
-       border-collapse: collapse;
-}
-.ui-helper-clearfix:after {
-       clear: both;
-}
-.ui-helper-clearfix {
-       min-height: 0; /* support: IE7 */
-}
-.ui-helper-zfix {
-       width: 100%;
-       height: 100%;
-       top: 0;
-       left: 0;
-       position: absolute;
-       opacity: 0;
-       filter:Alpha(Opacity=0); /* support: IE8 */
-}
-
-.ui-front {
-       z-index: 100;
-}
-
-
-/* Interaction Cues
-----------------------------------*/
-.ui-state-disabled {
-       cursor: default !important;
-}
-
-
-/* Icons
-----------------------------------*/
-
-/* states and images */
-.ui-icon {
-       display: block;
-       text-indent: -99999px;
-       overflow: hidden;
-       background-repeat: no-repeat;
-}
-
-
-/* Misc visuals
-----------------------------------*/
-
-/* Overlays */
-.ui-widget-overlay {
-       position: fixed;
-       top: 0;
-       left: 0;
-       width: 100%;
-       height: 100%;
-}
-.ui-accordion .ui-accordion-header {
-       display: block;
-       cursor: pointer;
-       position: relative;
-       margin: 2px 0 0 0;
-       padding: .5em .5em .5em .7em;
-       min-height: 0; /* support: IE7 */
-       font-size: 100%;
-}
-.ui-accordion .ui-accordion-icons {
-       padding-left: 2.2em;
-}
-.ui-accordion .ui-accordion-icons .ui-accordion-icons {
-       padding-left: 2.2em;
-}
-.ui-accordion .ui-accordion-header .ui-accordion-header-icon {
-       position: absolute;
-       left: .5em;
-       top: 50%;
-       margin-top: -8px;
-}
-.ui-accordion .ui-accordion-content {
-       padding: 1em 2.2em;
-       border-top: 0;
-       overflow: auto;
-}
-.ui-autocomplete {
-       position: absolute;
-       top: 0;
-       left: 0;
-       cursor: default;
-}
-.ui-button {
-       display: inline-block;
-       position: relative;
-       padding: 0;
-       line-height: normal;
-       margin-right: .1em;
-       cursor: pointer;
-       vertical-align: middle;
-       text-align: center;
-       overflow: visible; /* removes extra width in IE */
-}
-.ui-button,
-.ui-button:link,
-.ui-button:visited,
-.ui-button:hover,
-.ui-button:active {
-       text-decoration: none;
-}
-/* to make room for the icon, a width needs to be set here */
-.ui-button-icon-only {
-       width: 2.2em;
-}
-/* button elements seem to need a little more width */
-button.ui-button-icon-only {
-       width: 2.4em;
-}
-.ui-button-icons-only {
-       width: 3.4em;
-}
-button.ui-button-icons-only {
-       width: 3.7em;
-}
-
-/* button text element */
-.ui-button .ui-button-text {
-       display: block;
-       line-height: normal;
-}
-.ui-button-text-only .ui-button-text {
-       padding: .4em 1em;
-}
-.ui-button-icon-only .ui-button-text,
-.ui-button-icons-only .ui-button-text {
-       padding: .4em;
-       text-indent: -9999999px;
-}
-.ui-button-text-icon-primary .ui-button-text,
-.ui-button-text-icons .ui-button-text {
-       padding: .4em 1em .4em 2.1em;
-}
-.ui-button-text-icon-secondary .ui-button-text,
-.ui-button-text-icons .ui-button-text {
-       padding: .4em 2.1em .4em 1em;
-}
-.ui-button-text-icons .ui-button-text {
-       padding-left: 2.1em;
-       padding-right: 2.1em;
-}
-/* no icon support for input elements, provide padding by default */
-input.ui-button {
-       padding: .4em 1em;
-}
-
-/* button icon element(s) */
-.ui-button-icon-only .ui-icon,
-.ui-button-text-icon-primary .ui-icon,
-.ui-button-text-icon-secondary .ui-icon,
-.ui-button-text-icons .ui-icon,
-.ui-button-icons-only .ui-icon {
-       position: absolute;
-       top: 50%;
-       margin-top: -8px;
-}
-.ui-button-icon-only .ui-icon {
-       left: 50%;
-       margin-left: -8px;
-}
-.ui-button-text-icon-primary .ui-button-icon-primary,
-.ui-button-text-icons .ui-button-icon-primary,
-.ui-button-icons-only .ui-button-icon-primary {
-       left: .5em;
-}
-.ui-button-text-icon-secondary .ui-button-icon-secondary,
-.ui-button-text-icons .ui-button-icon-secondary,
-.ui-button-icons-only .ui-button-icon-secondary {
-       right: .5em;
-}
-
-/* button sets */
-.ui-buttonset {
-       margin-right: 7px;
-}
-.ui-buttonset .ui-button {
-       margin-left: 0;
-       margin-right: -.3em;
-}
-
-/* workarounds */
-/* reset extra padding in Firefox, see h5bp.com/l */
-input.ui-button::-moz-focus-inner,
-button.ui-button::-moz-focus-inner {
-       border: 0;
-       padding: 0;
-}
-.ui-datepicker {
-       width: 17em;
-       padding: .2em .2em 0;
-       display: none;
-}
-.ui-datepicker .ui-datepicker-header {
-       position: relative;
-       padding: .2em 0;
-}
-.ui-datepicker .ui-datepicker-prev,
-.ui-datepicker .ui-datepicker-next {
-       position: absolute;
-       top: 2px;
-       width: 1.8em;
-       height: 1.8em;
-}
-.ui-datepicker .ui-datepicker-prev-hover,
-.ui-datepicker .ui-datepicker-next-hover {
-       top: 1px;
-}
-.ui-datepicker .ui-datepicker-prev {
-       left: 2px;
-}
-.ui-datepicker .ui-datepicker-next {
-       right: 2px;
-}
-.ui-datepicker .ui-datepicker-prev-hover {
-       left: 1px;
-}
-.ui-datepicker .ui-datepicker-next-hover {
-       right: 1px;
-}
-.ui-datepicker .ui-datepicker-prev span,
-.ui-datepicker .ui-datepicker-next span {
-       display: block;
-       position: absolute;
-       left: 50%;
-       margin-left: -8px;
-       top: 50%;
-       margin-top: -8px;
-}
-.ui-datepicker .ui-datepicker-title {
-       margin: 0 2.3em;
-       line-height: 1.8em;
-       text-align: center;
-}
-.ui-datepicker .ui-datepicker-title select {
-       font-size: 1em;
-       margin: 1px 0;
-}
-.ui-datepicker select.ui-datepicker-month,
-.ui-datepicker select.ui-datepicker-year {
-       width: 45%;
-}
-.ui-datepicker table {
-       width: 100%;
-       font-size: .9em;
-       border-collapse: collapse;
-       margin: 0 0 .4em;
-}
-.ui-datepicker th {
-       padding: .7em .3em;
-       text-align: center;
-       font-weight: bold;
-       border: 0;
-}
-.ui-datepicker td {
-       border: 0;
-       padding: 1px;
-}
-.ui-datepicker td span,
-.ui-datepicker td a {
-       display: block;
-       padding: .2em;
-       text-align: right;
-       text-decoration: none;
-}
-.ui-datepicker .ui-datepicker-buttonpane {
-       background-image: none;
-       margin: .7em 0 0 0;
-       padding: 0 .2em;
-       border-left: 0;
-       border-right: 0;
-       border-bottom: 0;
-}
-.ui-datepicker .ui-datepicker-buttonpane button {
-       float: right;
-       margin: .5em .2em .4em;
-       cursor: pointer;
-       padding: .2em .6em .3em .6em;
-       width: auto;
-       overflow: visible;
-}
-.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current {
-       float: left;
-}
-
-/* with multiple calendars */
-.ui-datepicker.ui-datepicker-multi {
-       width: auto;
-}
-.ui-datepicker-multi .ui-datepicker-group {
-       float: left;
-}
-.ui-datepicker-multi .ui-datepicker-group table {
-       width: 95%;
-       margin: 0 auto .4em;
-}
-.ui-datepicker-multi-2 .ui-datepicker-group {
-       width: 50%;
-}
-.ui-datepicker-multi-3 .ui-datepicker-group {
-       width: 33.3%;
-}
-.ui-datepicker-multi-4 .ui-datepicker-group {
-       width: 25%;
-}
-.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header,
-.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header {
-       border-left-width: 0;
-}
-.ui-datepicker-multi .ui-datepicker-buttonpane {
-       clear: left;
-}
-.ui-datepicker-row-break {
-       clear: both;
-       width: 100%;
-       font-size: 0;
-}
-
-/* RTL support */
-.ui-datepicker-rtl {
-       direction: rtl;
-}
-.ui-datepicker-rtl .ui-datepicker-prev {
-       right: 2px;
-       left: auto;
-}
-.ui-datepicker-rtl .ui-datepicker-next {
-       left: 2px;
-       right: auto;
-}
-.ui-datepicker-rtl .ui-datepicker-prev:hover {
-       right: 1px;
-       left: auto;
-}
-.ui-datepicker-rtl .ui-datepicker-next:hover {
-       left: 1px;
-       right: auto;
-}
-.ui-datepicker-rtl .ui-datepicker-buttonpane {
-       clear: right;
-}
-.ui-datepicker-rtl .ui-datepicker-buttonpane button {
-       float: left;
-}
-.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current,
-.ui-datepicker-rtl .ui-datepicker-group {
-       float: right;
-}
-.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header,
-.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header {
-       border-right-width: 0;
-       border-left-width: 1px;
-}
-.ui-dialog {
-       overflow: hidden;
-       position: absolute;
-       top: 0;
-       left: 0;
-       padding: .2em;
-       outline: 0;
-}
-.ui-dialog .ui-dialog-titlebar {
-       padding: .4em 1em;
-       position: relative;
-}
-.ui-dialog .ui-dialog-title {
-       float: left;
-       margin: .1em 0;
-       white-space: nowrap;
-       width: 90%;
-       overflow: hidden;
-       text-overflow: ellipsis;
-}
-.ui-dialog .ui-dialog-titlebar-close {
-       position: absolute;
-       right: .3em;
-       top: 50%;
-       width: 20px;
-       margin: -10px 0 0 0;
-       padding: 1px;
-       height: 20px;
-}
-.ui-dialog .ui-dialog-content {
-       position: relative;
-       border: 0;
-       padding: .5em 1em;
-       background: none;
-       overflow: auto;
-}
-.ui-dialog .ui-dialog-buttonpane {
-       text-align: left;
-       border-width: 1px 0 0 0;
-       background-image: none;
-       margin-top: .5em;
-       padding: .3em 1em .5em .4em;
-}
-.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset {
-       float: right;
-}
-.ui-dialog .ui-dialog-buttonpane button {
-       margin: .5em .4em .5em 0;
-       cursor: pointer;
-}
-.ui-dialog .ui-resizable-se {
-       width: 12px;
-       height: 12px;
-       right: -5px;
-       bottom: -5px;
-       background-position: 16px 16px;
-}
-.ui-draggable .ui-dialog-titlebar {
-       cursor: move;
-}
-.ui-draggable-handle {
-       -ms-touch-action: none;
-       touch-action: none;
-}
-.ui-menu {
-       list-style: none;
-       padding: 0;
-       margin: 0;
-       display: block;
-       outline: none;
-}
-.ui-menu .ui-menu {
-       position: absolute;
-}
-.ui-menu .ui-menu-item {
-       position: relative;
-       margin: 0;
-       padding: 3px 1em 3px .4em;
-       cursor: pointer;
-       min-height: 0; /* support: IE7 */
-       /* support: IE10, see #8844 */
-       list-style-image: url("data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7");
-}
-.ui-menu .ui-menu-divider {
-       margin: 5px 0;
-       height: 0;
-       font-size: 0;
-       line-height: 0;
-       border-width: 1px 0 0 0;
-}
-.ui-menu .ui-state-focus,
-.ui-menu .ui-state-active {
-       margin: -1px;
-}
-
-/* icon support */
-.ui-menu-icons {
-       position: relative;
-}
-.ui-menu-icons .ui-menu-item {
-       padding-left: 2em;
-}
-
-/* left-aligned */
-.ui-menu .ui-icon {
-       position: absolute;
-       top: 0;
-       bottom: 0;
-       left: .2em;
-       margin: auto 0;
-}
-
-/* right-aligned */
-.ui-menu .ui-menu-icon {
-       left: auto;
-       right: 0;
-}
-.ui-progressbar {
-       height: 2em;
-       text-align: left;
-       overflow: hidden;
-}
-.ui-progressbar .ui-progressbar-value {
-       margin: -1px;
-       height: 100%;
-}
-.ui-progressbar .ui-progressbar-overlay {
-       background: url("data:image/gif;base64,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");
-       height: 100%;
-       filter: alpha(opacity=25); /* support: IE8 */
-       opacity: 0.25;
-}
-.ui-progressbar-indeterminate .ui-progressbar-value {
-       background-image: none;
-}
-.ui-resizable {
-       position: relative;
-}
-.ui-resizable-handle {
-       position: absolute;
-       font-size: 0.1px;
-       display: block;
-       -ms-touch-action: none;
-       touch-action: none;
-}
-.ui-resizable-disabled .ui-resizable-handle,
-.ui-resizable-autohide .ui-resizable-handle {
-       display: none;
-}
-.ui-resizable-n {
-       cursor: n-resize;
-       height: 7px;
-       width: 100%;
-       top: -5px;
-       left: 0;
-}
-.ui-resizable-s {
-       cursor: s-resize;
-       height: 7px;
-       width: 100%;
-       bottom: -5px;
-       left: 0;
-}
-.ui-resizable-e {
-       cursor: e-resize;
-       width: 7px;
-       right: -5px;
-       top: 0;
-       height: 100%;
-}
-.ui-resizable-w {
-       cursor: w-resize;
-       width: 7px;
-       left: -5px;
-       top: 0;
-       height: 100%;
-}
-.ui-resizable-se {
-       cursor: se-resize;
-       width: 12px;
-       height: 12px;
-       right: 1px;
-       bottom: 1px;
-}
-.ui-resizable-sw {
-       cursor: sw-resize;
-       width: 9px;
-       height: 9px;
-       left: -5px;
-       bottom: -5px;
-}
-.ui-resizable-nw {
-       cursor: nw-resize;
-       width: 9px;
-       height: 9px;
-       left: -5px;
-       top: -5px;
-}
-.ui-resizable-ne {
-       cursor: ne-resize;
-       width: 9px;
-       height: 9px;
-       right: -5px;
-       top: -5px;
-}
-.ui-selectable {
-       -ms-touch-action: none;
-       touch-action: none;
-}
-.ui-selectable-helper {
-       position: absolute;
-       z-index: 100;
-       border: 1px dotted black;
-}
-.ui-selectmenu-menu {
-       padding: 0;
-       margin: 0;
-       position: absolute;
-       top: 0;
-       left: 0;
-       display: none;
-}
-.ui-selectmenu-menu .ui-menu {
-       overflow: auto;
-       /* Support: IE7 */
-       overflow-x: hidden;
-       padding-bottom: 1px;
-}
-.ui-selectmenu-menu .ui-menu .ui-selectmenu-optgroup {
-       font-size: 1em;
-       font-weight: bold;
-       line-height: 1.5;
-       padding: 2px 0.4em;
-       margin: 0.5em 0 0 0;
-       height: auto;
-       border: 0;
-}
-.ui-selectmenu-open {
-       display: block;
-}
-.ui-selectmenu-button {
-       display: inline-block;
-       overflow: hidden;
-       position: relative;
-       text-decoration: none;
-       cursor: pointer;
-}
-.ui-selectmenu-button span.ui-icon {
-       right: 0.5em;
-       left: auto;
-       margin-top: -8px;
-       position: absolute;
-       top: 50%;
-}
-.ui-selectmenu-button span.ui-selectmenu-text {
-       text-align: left;
-       padding: 0.4em 2.1em 0.4em 1em;
-       display: block;
-       line-height: 1.4;
-       overflow: hidden;
-       text-overflow: ellipsis;
-       white-space: nowrap;
-}
-.ui-slider {
-       position: relative;
-       text-align: left;
-}
-.ui-slider .ui-slider-handle {
-       position: absolute;
-       z-index: 2;
-       width: 1.2em;
-       height: 1.2em;
-       cursor: default;
-       -ms-touch-action: none;
-       touch-action: none;
-}
-.ui-slider .ui-slider-range {
-       position: absolute;
-       z-index: 1;
-       font-size: .7em;
-       display: block;
-       border: 0;
-       background-position: 0 0;
-}
-
-/* support: IE8 - See #6727 */
-.ui-slider.ui-state-disabled .ui-slider-handle,
-.ui-slider.ui-state-disabled .ui-slider-range {
-       filter: inherit;
-}
-
-.ui-slider-horizontal {
-       height: .8em;
-}
-.ui-slider-horizontal .ui-slider-handle {
-       top: -.3em;
-       margin-left: -.6em;
-}
-.ui-slider-horizontal .ui-slider-range {
-       top: 0;
-       height: 100%;
-}
-.ui-slider-horizontal .ui-slider-range-min {
-       left: 0;
-}
-.ui-slider-horizontal .ui-slider-range-max {
-       right: 0;
-}
-
-.ui-slider-vertical {
-       width: .8em;
-       height: 100px;
-}
-.ui-slider-vertical .ui-slider-handle {
-       left: -.3em;
-       margin-left: 0;
-       margin-bottom: -.6em;
-}
-.ui-slider-vertical .ui-slider-range {
-       left: 0;
-       width: 100%;
-}
-.ui-slider-vertical .ui-slider-range-min {
-       bottom: 0;
-}
-.ui-slider-vertical .ui-slider-range-max {
-       top: 0;
-}
-.ui-sortable-handle {
-       -ms-touch-action: none;
-       touch-action: none;
-}
-.ui-spinner {
-       position: relative;
-       display: inline-block;
-       overflow: hidden;
-       padding: 0;
-       vertical-align: middle;
-}
-.ui-spinner-input {
-       border: none;
-       background: none;
-       color: inherit;
-       padding: 0;
-       margin: .2em 0;
-       vertical-align: middle;
-       margin-left: .4em;
-       margin-right: 22px;
-}
-.ui-spinner-button {
-       width: 16px;
-       height: 50%;
-       font-size: .5em;
-       padding: 0;
-       margin: 0;
-       text-align: center;
-       position: absolute;
-       cursor: default;
-       display: block;
-       overflow: hidden;
-       right: 0;
-}
-/* more specificity required here to override default borders */
-.ui-spinner a.ui-spinner-button {
-       border-top: none;
-       border-bottom: none;
-       border-right: none;
-}
-/* vertically center icon */
-.ui-spinner .ui-icon {
-       position: absolute;
-       margin-top: -8px;
-       top: 50%;
-       left: 0;
-}
-.ui-spinner-up {
-       top: 0;
-}
-.ui-spinner-down {
-       bottom: 0;
-}
-
-/* TR overrides */
-.ui-spinner .ui-icon-triangle-1-s {
-       /* need to fix icons sprite */
-       background-position: -65px -16px;
-}
-.ui-tabs {
-       position: relative;/* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as "fixed") */
-       padding: .2em;
-}
-.ui-tabs .ui-tabs-nav {
-       margin: 0;
-       padding: .2em .2em 0;
-}
-.ui-tabs .ui-tabs-nav li {
-       list-style: none;
-       float: left;
-       position: relative;
-       top: 0;
-       margin: 1px .2em 0 0;
-       border-bottom-width: 0;
-       padding: 0;
-       white-space: nowrap;
-}
-.ui-tabs .ui-tabs-nav .ui-tabs-anchor {
-       float: left;
-       padding: .5em 1em;
-       text-decoration: none;
-}
-.ui-tabs .ui-tabs-nav li.ui-tabs-active {
-       margin-bottom: -1px;
-       padding-bottom: 1px;
-}
-.ui-tabs .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor,
-.ui-tabs .ui-tabs-nav li.ui-state-disabled .ui-tabs-anchor,
-.ui-tabs .ui-tabs-nav li.ui-tabs-loading .ui-tabs-anchor {
-       cursor: text;
-}
-.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor {
-       cursor: pointer;
-}
-.ui-tabs .ui-tabs-panel {
-       display: block;
-       border-width: 0;
-       padding: 1em 1.4em;
-       background: none;
-}
-.ui-tooltip {
-       padding: 8px;
-       position: absolute;
-       z-index: 9999;
-       max-width: 300px;
-       -webkit-box-shadow: 0 0 5px #aaa;
-       box-shadow: 0 0 5px #aaa;
-}
-body .ui-tooltip {
-       border-width: 2px;
-}
-
-/* Component containers
-----------------------------------*/
-.ui-widget {
-       font-family: Arial,Helvetica,sans-serif;
-       font-size: 1em;
-}
-.ui-widget .ui-widget {
-       font-size: 1em;
-}
-.ui-widget input,
-.ui-widget select,
-.ui-widget textarea,
-.ui-widget button {
-       font-family: Arial,Helvetica,sans-serif;
-       font-size: 1em;
-}
-.ui-widget-content {
-       border: 1px solid #dddddd;
-       background: #ffffff;
-       color: #333333;
-}
-.ui-widget-content a {
-       color: #333333;
-}
-.ui-widget-header {
-       border: 1px solid #dddddd;
-       background: #e9e9e9;
-       color: #333333;
-       font-weight: bold;
-}
-.ui-widget-header a {
-       color: #333333;
-}
-
-/* Interaction states
-----------------------------------*/
-.ui-state-default,
-.ui-widget-content .ui-state-default,
-.ui-widget-header .ui-state-default {
-       border: 1px solid #c5c5c5;
-       background: #f6f6f6;
-       font-weight: normal;
-       color: #454545;
-}
-.ui-state-default a,
-.ui-state-default a:link,
-.ui-state-default a:visited {
-       color: #454545;
-       text-decoration: none;
-}
-.ui-state-hover,
-.ui-widget-content .ui-state-hover,
-.ui-widget-header .ui-state-hover,
-.ui-state-focus,
-.ui-widget-content .ui-state-focus,
-.ui-widget-header .ui-state-focus {
-       border: 1px solid #cccccc;
-       background: #ededed;
-       font-weight: normal;
-       color: #2b2b2b;
-}
-.ui-state-hover a,
-.ui-state-hover a:hover,
-.ui-state-hover a:link,
-.ui-state-hover a:visited,
-.ui-state-focus a,
-.ui-state-focus a:hover,
-.ui-state-focus a:link,
-.ui-state-focus a:visited {
-       color: #2b2b2b;
-       text-decoration: none;
-}
-.ui-state-active,
-.ui-widget-content .ui-state-active,
-.ui-widget-header .ui-state-active {
-       border: 1px solid #003eff;
-       background: #007fff;
-       font-weight: normal;
-       color: #ffffff;
-}
-.ui-state-active a,
-.ui-state-active a:link,
-.ui-state-active a:visited {
-       color: #ffffff;
-       text-decoration: none;
-}
-
-/* Interaction Cues
-----------------------------------*/
-.ui-state-highlight,
-.ui-widget-content .ui-state-highlight,
-.ui-widget-header .ui-state-highlight {
-       border: 1px solid #dad55e;
-       background: #fffa90;
-       color: #777620;
-}
-.ui-state-highlight a,
-.ui-widget-content .ui-state-highlight a,
-.ui-widget-header .ui-state-highlight a {
-       color: #777620;
-}
-.ui-state-error,
-.ui-widget-content .ui-state-error,
-.ui-widget-header .ui-state-error {
-       border: 1px solid #f1a899;
-       background: #fddfdf;
-       color: #5f3f3f;
-}
-.ui-state-error a,
-.ui-widget-content .ui-state-error a,
-.ui-widget-header .ui-state-error a {
-       color: #5f3f3f;
-}
-.ui-state-error-text,
-.ui-widget-content .ui-state-error-text,
-.ui-widget-header .ui-state-error-text {
-       color: #5f3f3f;
-}
-.ui-priority-primary,
-.ui-widget-content .ui-priority-primary,
-.ui-widget-header .ui-priority-primary {
-       font-weight: bold;
-}
-.ui-priority-secondary,
-.ui-widget-content .ui-priority-secondary,
-.ui-widget-header .ui-priority-secondary {
-       opacity: .7;
-       filter:Alpha(Opacity=70); /* support: IE8 */
-       font-weight: normal;
-}
-.ui-state-disabled,
-.ui-widget-content .ui-state-disabled,
-.ui-widget-header .ui-state-disabled {
-       opacity: .35;
-       filter:Alpha(Opacity=35); /* support: IE8 */
-       background-image: none;
-}
-.ui-state-disabled .ui-icon {
-       filter:Alpha(Opacity=35); /* support: IE8 - See #6059 */
-}
-
-/* Icons
-----------------------------------*/
-
-/* states and images */
-.ui-icon {
-       width: 16px;
-       height: 16px;
-}
-.ui-icon,
-.ui-widget-content .ui-icon {
-       background-image: url("images/ui-icons_444444_256x240.png");
-}
-.ui-widget-header .ui-icon {
-       background-image: url("images/ui-icons_444444_256x240.png");
-}
-.ui-state-default .ui-icon {
-       background-image: url("images/ui-icons_777777_256x240.png");
-}
-.ui-state-hover .ui-icon,
-.ui-state-focus .ui-icon {
-       background-image: url("images/ui-icons_555555_256x240.png");
-}
-.ui-state-active .ui-icon {
-       background-image: url("images/ui-icons_ffffff_256x240.png");
-}
-.ui-state-highlight .ui-icon {
-       background-image: url("images/ui-icons_777620_256x240.png");
-}
-.ui-state-error .ui-icon,
-.ui-state-error-text .ui-icon {
-       background-image: url("images/ui-icons_cc0000_256x240.png");
-}
-
-/* positioning */
-.ui-icon-blank { background-position: 16px 16px; }
-.ui-icon-carat-1-n { background-position: 0 0; }
-.ui-icon-carat-1-ne { background-position: -16px 0; }
-.ui-icon-carat-1-e { background-position: -32px 0; }
-.ui-icon-carat-1-se { background-position: -48px 0; }
-.ui-icon-carat-1-s { background-position: -64px 0; }
-.ui-icon-carat-1-sw { background-position: -80px 0; }
-.ui-icon-carat-1-w { background-position: -96px 0; }
-.ui-icon-carat-1-nw { background-position: -112px 0; }
-.ui-icon-carat-2-n-s { background-position: -128px 0; }
-.ui-icon-carat-2-e-w { background-position: -144px 0; }
-.ui-icon-triangle-1-n { background-position: 0 -16px; }
-.ui-icon-triangle-1-ne { background-position: -16px -16px; }
-.ui-icon-triangle-1-e { background-position: -32px -16px; }
-.ui-icon-triangle-1-se { background-position: -48px -16px; }
-.ui-icon-triangle-1-s { background-position: -64px -16px; }
-.ui-icon-triangle-1-sw { background-position: -80px -16px; }
-.ui-icon-triangle-1-w { background-position: -96px -16px; }
-.ui-icon-triangle-1-nw { background-position: -112px -16px; }
-.ui-icon-triangle-2-n-s { background-position: -128px -16px; }
-.ui-icon-triangle-2-e-w { background-position: -144px -16px; }
-.ui-icon-arrow-1-n { background-position: 0 -32px; }
-.ui-icon-arrow-1-ne { background-position: -16px -32px; }
-.ui-icon-arrow-1-e { background-position: -32px -32px; }
-.ui-icon-arrow-1-se { background-position: -48px -32px; }
-.ui-icon-arrow-1-s { background-position: -64px -32px; }
-.ui-icon-arrow-1-sw { background-position: -80px -32px; }
-.ui-icon-arrow-1-w { background-position: -96px -32px; }
-.ui-icon-arrow-1-nw { background-position: -112px -32px; }
-.ui-icon-arrow-2-n-s { background-position: -128px -32px; }
-.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }
-.ui-icon-arrow-2-e-w { background-position: -160px -32px; }
-.ui-icon-arrow-2-se-nw { background-position: -176px -32px; }
-.ui-icon-arrowstop-1-n { background-position: -192px -32px; }
-.ui-icon-arrowstop-1-e { background-position: -208px -32px; }
-.ui-icon-arrowstop-1-s { background-position: -224px -32px; }
-.ui-icon-arrowstop-1-w { background-position: -240px -32px; }
-.ui-icon-arrowthick-1-n { background-position: 0 -48px; }
-.ui-icon-arrowthick-1-ne { background-position: -16px -48px; }
-.ui-icon-arrowthick-1-e { background-position: -32px -48px; }
-.ui-icon-arrowthick-1-se { background-position: -48px -48px; }
-.ui-icon-arrowthick-1-s { background-position: -64px -48px; }
-.ui-icon-arrowthick-1-sw { background-position: -80px -48px; }
-.ui-icon-arrowthick-1-w { background-position: -96px -48px; }
-.ui-icon-arrowthick-1-nw { background-position: -112px -48px; }
-.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }
-.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }
-.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }
-.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }
-.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }
-.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }
-.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }
-.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }
-.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }
-.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }
-.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }
-.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }
-.ui-icon-arrowreturn-1-w { background-position: -64px -64px; }
-.ui-icon-arrowreturn-1-n { background-position: -80px -64px; }
-.ui-icon-arrowreturn-1-e { background-position: -96px -64px; }
-.ui-icon-arrowreturn-1-s { background-position: -112px -64px; }
-.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }
-.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }
-.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }
-.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }
-.ui-icon-arrow-4 { background-position: 0 -80px; }
-.ui-icon-arrow-4-diag { background-position: -16px -80px; }
-.ui-icon-extlink { background-position: -32px -80px; }
-.ui-icon-newwin { background-position: -48px -80px; }
-.ui-icon-refresh { background-position: -64px -80px; }
-.ui-icon-shuffle { background-position: -80px -80px; }
-.ui-icon-transfer-e-w { background-position: -96px -80px; }
-.ui-icon-transferthick-e-w { background-position: -112px -80px; }
-.ui-icon-folder-collapsed { background-position: 0 -96px; }
-.ui-icon-folder-open { background-position: -16px -96px; }
-.ui-icon-document { background-position: -32px -96px; }
-.ui-icon-document-b { background-position: -48px -96px; }
-.ui-icon-note { background-position: -64px -96px; }
-.ui-icon-mail-closed { background-position: -80px -96px; }
-.ui-icon-mail-open { background-position: -96px -96px; }
-.ui-icon-suitcase { background-position: -112px -96px; }
-.ui-icon-comment { background-position: -128px -96px; }
-.ui-icon-person { background-position: -144px -96px; }
-.ui-icon-print { background-position: -160px -96px; }
-.ui-icon-trash { background-position: -176px -96px; }
-.ui-icon-locked { background-position: -192px -96px; }
-.ui-icon-unlocked { background-position: -208px -96px; }
-.ui-icon-bookmark { background-position: -224px -96px; }
-.ui-icon-tag { background-position: -240px -96px; }
-.ui-icon-home { background-position: 0 -112px; }
-.ui-icon-flag { background-position: -16px -112px; }
-.ui-icon-calendar { background-position: -32px -112px; }
-.ui-icon-cart { background-position: -48px -112px; }
-.ui-icon-pencil { background-position: -64px -112px; }
-.ui-icon-clock { background-position: -80px -112px; }
-.ui-icon-disk { background-position: -96px -112px; }
-.ui-icon-calculator { background-position: -112px -112px; }
-.ui-icon-zoomin { background-position: -128px -112px; }
-.ui-icon-zoomout { background-position: -144px -112px; }
-.ui-icon-search { background-position: -160px -112px; }
-.ui-icon-wrench { background-position: -176px -112px; }
-.ui-icon-gear { background-position: -192px -112px; }
-.ui-icon-heart { background-position: -208px -112px; }
-.ui-icon-star { background-position: -224px -112px; }
-.ui-icon-link { background-position: -240px -112px; }
-.ui-icon-cancel { background-position: 0 -128px; }
-.ui-icon-plus { background-position: -16px -128px; }
-.ui-icon-plusthick { background-position: -32px -128px; }
-.ui-icon-minus { background-position: -48px -128px; }
-.ui-icon-minusthick { background-position: -64px -128px; }
-.ui-icon-close { background-position: -80px -128px; }
-.ui-icon-closethick { background-position: -96px -128px; }
-.ui-icon-key { background-position: -112px -128px; }
-.ui-icon-lightbulb { background-position: -128px -128px; }
-.ui-icon-scissors { background-position: -144px -128px; }
-.ui-icon-clipboard { background-position: -160px -128px; }
-.ui-icon-copy { background-position: -176px -128px; }
-.ui-icon-contact { background-position: -192px -128px; }
-.ui-icon-image { background-position: -208px -128px; }
-.ui-icon-video { background-position: -224px -128px; }
-.ui-icon-script { background-position: -240px -128px; }
-.ui-icon-alert { background-position: 0 -144px; }
-.ui-icon-info { background-position: -16px -144px; }
-.ui-icon-notice { background-position: -32px -144px; }
-.ui-icon-help { background-position: -48px -144px; }
-.ui-icon-check { background-position: -64px -144px; }
-.ui-icon-bullet { background-position: -80px -144px; }
-.ui-icon-radio-on { background-position: -96px -144px; }
-.ui-icon-radio-off { background-position: -112px -144px; }
-.ui-icon-pin-w { background-position: -128px -144px; }
-.ui-icon-pin-s { background-position: -144px -144px; }
-.ui-icon-play { background-position: 0 -160px; }
-.ui-icon-pause { background-position: -16px -160px; }
-.ui-icon-seek-next { background-position: -32px -160px; }
-.ui-icon-seek-prev { background-position: -48px -160px; }
-.ui-icon-seek-end { background-position: -64px -160px; }
-.ui-icon-seek-start { background-position: -80px -160px; }
-/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */
-.ui-icon-seek-first { background-position: -80px -160px; }
-.ui-icon-stop { background-position: -96px -160px; }
-.ui-icon-eject { background-position: -112px -160px; }
-.ui-icon-volume-off { background-position: -128px -160px; }
-.ui-icon-volume-on { background-position: -144px -160px; }
-.ui-icon-power { background-position: 0 -176px; }
-.ui-icon-signal-diag { background-position: -16px -176px; }
-.ui-icon-signal { background-position: -32px -176px; }
-.ui-icon-battery-0 { background-position: -48px -176px; }
-.ui-icon-battery-1 { background-position: -64px -176px; }
-.ui-icon-battery-2 { background-position: -80px -176px; }
-.ui-icon-battery-3 { background-position: -96px -176px; }
-.ui-icon-circle-plus { background-position: 0 -192px; }
-.ui-icon-circle-minus { background-position: -16px -192px; }
-.ui-icon-circle-close { background-position: -32px -192px; }
-.ui-icon-circle-triangle-e { background-position: -48px -192px; }
-.ui-icon-circle-triangle-s { background-position: -64px -192px; }
-.ui-icon-circle-triangle-w { background-position: -80px -192px; }
-.ui-icon-circle-triangle-n { background-position: -96px -192px; }
-.ui-icon-circle-arrow-e { background-position: -112px -192px; }
-.ui-icon-circle-arrow-s { background-position: -128px -192px; }
-.ui-icon-circle-arrow-w { background-position: -144px -192px; }
-.ui-icon-circle-arrow-n { background-position: -160px -192px; }
-.ui-icon-circle-zoomin { background-position: -176px -192px; }
-.ui-icon-circle-zoomout { background-position: -192px -192px; }
-.ui-icon-circle-check { background-position: -208px -192px; }
-.ui-icon-circlesmall-plus { background-position: 0 -208px; }
-.ui-icon-circlesmall-minus { background-position: -16px -208px; }
-.ui-icon-circlesmall-close { background-position: -32px -208px; }
-.ui-icon-squaresmall-plus { background-position: -48px -208px; }
-.ui-icon-squaresmall-minus { background-position: -64px -208px; }
-.ui-icon-squaresmall-close { background-position: -80px -208px; }
-.ui-icon-grip-dotted-vertical { background-position: 0 -224px; }
-.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }
-.ui-icon-grip-solid-vertical { background-position: -32px -224px; }
-.ui-icon-grip-solid-horizontal { background-position: -48px -224px; }
-.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }
-.ui-icon-grip-diagonal-se { background-position: -80px -224px; }
-
-
-/* Misc visuals
-----------------------------------*/
-
-/* Corner radius */
-.ui-corner-all,
-.ui-corner-top,
-.ui-corner-left,
-.ui-corner-tl {
-       border-top-left-radius: 3px;
-}
-.ui-corner-all,
-.ui-corner-top,
-.ui-corner-right,
-.ui-corner-tr {
-       border-top-right-radius: 3px;
-}
-.ui-corner-all,
-.ui-corner-bottom,
-.ui-corner-left,
-.ui-corner-bl {
-       border-bottom-left-radius: 3px;
-}
-.ui-corner-all,
-.ui-corner-bottom,
-.ui-corner-right,
-.ui-corner-br {
-       border-bottom-right-radius: 3px;
-}
-
-/* Overlays */
-.ui-widget-overlay {
-       background: #aaaaaa;
-       opacity: .3;
-       filter: Alpha(Opacity=30); /* support: IE8 */
-}
-.ui-widget-shadow {
-       margin: 0px 0 0 0px;
-       padding: 5px;
-       background: #666666;
-       opacity: .3;
-       filter: Alpha(Opacity=30); /* support: IE8 */
-       border-radius: 8px;
-}
diff --git a/src/main/resources/META-INF/resources/designer/lib/jquery-ui-1.11.3/jquery-ui.js b/src/main/resources/META-INF/resources/designer/lib/jquery-ui-1.11.3/jquery-ui.js
deleted file mode 100644 (file)
index b3c719c..0000000
+++ /dev/null
@@ -1,16608 +0,0 @@
-/*! jQuery UI - v1.11.3 - 2015-02-12
-* http://jqueryui.com
-* Includes: core.js, widget.js, mouse.js, position.js, accordion.js, autocomplete.js, button.js, datepicker.js, dialog.js, draggable.js, droppable.js, effect.js, effect-blind.js, effect-bounce.js, effect-clip.js, effect-drop.js, effect-explode.js, effect-fade.js, effect-fold.js, effect-highlight.js, effect-puff.js, effect-pulsate.js, effect-scale.js, effect-shake.js, effect-size.js, effect-slide.js, effect-transfer.js, menu.js, progressbar.js, resizable.js, selectable.js, selectmenu.js, slider.js, sortable.js, spinner.js, tabs.js, tooltip.js
-* Copyright jQuery Foundation and other contributors; Licensed MIT */
-
-(function( factory ) {
-       if ( typeof define === "function" && define.amd ) {
-
-               // AMD. Register as an anonymous module.
-               define([ "jquery" ], factory );
-       } else {
-
-               // Browser globals
-               factory( jQuery );
-       }
-}(function( $ ) {
-/*!
- * jQuery UI Core 1.11.3
- * http://jqueryui.com
- *
- * Copyright jQuery Foundation and other contributors
- * Released under the MIT license.
- * http://jquery.org/license
- *
- * http://api.jqueryui.com/category/ui-core/
- */
-
-
-// $.ui might exist from components with no dependencies, e.g., $.ui.position
-$.ui = $.ui || {};
-
-$.extend( $.ui, {
-       version: "1.11.3",
-
-       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
-       }
-});
-
-// plugins
-$.fn.extend({
-       scrollParent: function( includeHidden ) {
-               var position = this.css( "position" ),
-                       excludeStaticParent = position === "absolute",
-                       overflowRegex = includeHidden ? /(auto|scroll|hidden)/ : /(auto|scroll)/,
-                       scrollParent = this.parents().filter( function() {
-                               var parent = $( this );
-                               if ( excludeStaticParent && parent.css( "position" ) === "static" ) {
-                                       return false;
-                               }
-                               return overflowRegex.test( parent.css( "overflow" ) + parent.css( "overflow-y" ) + parent.css( "overflow-x" ) );
-                       }).eq( 0 );
-
-               return position === "fixed" || !scrollParent.length ? $( this[ 0 ].ownerDocument || document ) : scrollParent;
-       },
-
-       uniqueId: (function() {
-               var uuid = 0;
-
-               return function() {
-                       return this.each(function() {
-                               if ( !this.id ) {
-                                       this.id = "ui-id-" + ( ++uuid );
-                               }
-                       });
-               };
-       })(),
-
-       removeUniqueId: function() {
-               return this.each(function() {
-                       if ( /^ui-id-\d+$/.test( this.id ) ) {
-                               $( this ).removeAttr( "id" );
-                       }
-               });
-       }
-});
-
-// selectors
-function focusable( element, isTabIndexNotNaN ) {
-       var map, mapName, img,
-               nodeName = element.nodeName.toLowerCase();
-       if ( "area" === nodeName ) {
-               map = element.parentNode;
-               mapName = map.name;
-               if ( !element.href || !mapName || map.nodeName.toLowerCase() !== "map" ) {
-                       return false;
-               }
-               img = $( "img[usemap='#" + mapName + "']" )[ 0 ];
-               return !!img && visible( img );
-       }
-       return ( /^(input|select|textarea|button|object)$/.test( nodeName ) ?
-               !element.disabled :
-               "a" === nodeName ?
-                       element.href || isTabIndexNotNaN :
-                       isTabIndexNotNaN) &&
-               // the element and all of its ancestors must be visible
-               visible( element );
-}
-
-function visible( element ) {
-       return $.expr.filters.visible( element ) &&
-               !$( element ).parents().addBack().filter(function() {
-                       return $.css( this, "visibility" ) === "hidden";
-               }).length;
-}
-
-$.extend( $.expr[ ":" ], {
-       data: $.expr.createPseudo ?
-               $.expr.createPseudo(function( dataName ) {
-                       return function( elem ) {
-                               return !!$.data( elem, dataName );
-                       };
-               }) :
-               // support: jQuery <1.8
-               function( elem, i, match ) {
-                       return !!$.data( elem, match[ 3 ] );
-               },
-
-       focusable: function( element ) {
-               return focusable( element, !isNaN( $.attr( element, "tabindex" ) ) );
-       },
-
-       tabbable: function( element ) {
-               var tabIndex = $.attr( element, "tabindex" ),
-                       isTabIndexNaN = isNaN( tabIndex );
-               return ( isTabIndexNaN || tabIndex >= 0 ) && focusable( element, !isTabIndexNaN );
-       }
-});
-
-// support: jQuery <1.8
-if ( !$( "<a>" ).outerWidth( 1 ).jquery ) {
-       $.each( [ "Width", "Height" ], function( i, name ) {
-               var side = name === "Width" ? [ "Left", "Right" ] : [ "Top", "Bottom" ],
-                       type = name.toLowerCase(),
-                       orig = {
-                               innerWidth: $.fn.innerWidth,
-                               innerHeight: $.fn.innerHeight,
-                               outerWidth: $.fn.outerWidth,
-                               outerHeight: $.fn.outerHeight
-                       };
-
-               function reduce( elem, size, border, margin ) {
-                       $.each( side, function() {
-                               size -= parseFloat( $.css( elem, "padding" + this ) ) || 0;
-                               if ( border ) {
-                                       size -= parseFloat( $.css( elem, "border" + this + "Width" ) ) || 0;
-                               }
-                               if ( margin ) {
-                                       size -= parseFloat( $.css( elem, "margin" + this ) ) || 0;
-                               }
-                       });
-                       return size;
-               }
-
-               $.fn[ "inner" + name ] = function( size ) {
-                       if ( size === undefined ) {
-                               return orig[ "inner" + name ].call( this );
-                       }
-
-                       return this.each(function() {
-                               $( this ).css( type, reduce( this, size ) + "px" );
-                       });
-               };
-
-               $.fn[ "outer" + name] = function( size, margin ) {
-                       if ( typeof size !== "number" ) {
-                               return orig[ "outer" + name ].call( this, size );
-                       }
-
-                       return this.each(function() {
-                               $( this).css( type, reduce( this, size, true, margin ) + "px" );
-                       });
-               };
-       });
-}
-
-// support: jQuery <1.8
-if ( !$.fn.addBack ) {
-       $.fn.addBack = function( selector ) {
-               return this.add( selector == null ?
-                       this.prevObject : this.prevObject.filter( selector )
-               );
-       };
-}
-
-// support: jQuery 1.6.1, 1.6.2 (http://bugs.jquery.com/ticket/9413)
-if ( $( "<a>" ).data( "a-b", "a" ).removeData( "a-b" ).data( "a-b" ) ) {
-       $.fn.removeData = (function( removeData ) {
-               return function( key ) {
-                       if ( arguments.length ) {
-                               return removeData.call( this, $.camelCase( key ) );
-                       } else {
-                               return removeData.call( this );
-                       }
-               };
-       })( $.fn.removeData );
-}
-
-// deprecated
-$.ui.ie = !!/msie [\w.]+/.exec( navigator.userAgent.toLowerCase() );
-
-$.fn.extend({
-       focus: (function( orig ) {
-               return function( delay, fn ) {
-                       return typeof delay === "number" ?
-                               this.each(function() {
-                                       var elem = this;
-                                       setTimeout(function() {
-                                               $( elem ).focus();
-                                               if ( fn ) {
-                                                       fn.call( elem );
-                                               }
-                                       }, delay );
-                               }) :
-                               orig.apply( this, arguments );
-               };
-       })( $.fn.focus ),
-
-       disableSelection: (function() {
-               var eventType = "onselectstart" in document.createElement( "div" ) ?
-                       "selectstart" :
-                       "mousedown";
-
-               return function() {
-                       return this.bind( eventType + ".ui-disableSelection", function( event ) {
-                               event.preventDefault();
-                       });
-               };
-       })(),
-
-       enableSelection: function() {
-               return this.unbind( ".ui-disableSelection" );
-       },
-
-       zIndex: function( zIndex ) {
-               if ( zIndex !== undefined ) {
-                       return this.css( "zIndex", zIndex );
-               }
-
-               if ( this.length ) {
-                       var elem = $( this[ 0 ] ), position, value;
-                       while ( elem.length && elem[ 0 ] !== document ) {
-                               // Ignore z-index if position is set to a value where z-index is ignored by the browser
-                               // This makes behavior of this function consistent across browsers
-                               // WebKit always returns auto if the element is positioned
-                               position = elem.css( "position" );
-                               if ( position === "absolute" || position === "relative" || position === "fixed" ) {
-                                       // IE returns 0 when zIndex is not specified
-                                       // other browsers return a string
-                                       // we ignore the case of nested elements with an explicit value of 0
-                                       // <div style="z-index: -10;"><div style="z-index: 0;"></div></div>
-                                       value = parseInt( elem.css( "zIndex" ), 10 );
-                                       if ( !isNaN( value ) && value !== 0 ) {
-                                               return value;
-                                       }
-                               }
-                               elem = elem.parent();
-                       }
-               }
-
-               return 0;
-       }
-});
-
-// $.ui.plugin is deprecated. Use $.widget() extensions instead.
-$.ui.plugin = {
-       add: function( module, option, set ) {
-               var i,
-                       proto = $.ui[ module ].prototype;
-               for ( i in set ) {
-                       proto.plugins[ i ] = proto.plugins[ i ] || [];
-                       proto.plugins[ i ].push( [ option, set[ i ] ] );
-               }
-       },
-       call: function( instance, name, args, allowDisconnected ) {
-               var i,
-                       set = instance.plugins[ name ];
-
-               if ( !set ) {
-                       return;
-               }
-
-               if ( !allowDisconnected && ( !instance.element[ 0 ].parentNode || instance.element[ 0 ].parentNode.nodeType === 11 ) ) {
-                       return;
-               }
-
-               for ( i = 0; i < set.length; i++ ) {
-                       if ( instance.options[ set[ i ][ 0 ] ] ) {
-                               set[ i ][ 1 ].apply( instance.element, args );
-                       }
-               }
-       }
-};
-
-
-/*!
- * jQuery UI Widget 1.11.3
- * http://jqueryui.com
- *
- * Copyright jQuery Foundation and other contributors
- * Released under the MIT license.
- * http://jquery.org/license
- *
- * http://api.jqueryui.com/jQuery.widget/
- */
-
-
-var widget_uuid = 0,
-       widget_slice = Array.prototype.slice;
-
-$.cleanData = (function( orig ) {
-       return function( elems ) {
-               var events, elem, i;
-               for ( i = 0; (elem = elems[i]) != null; i++ ) {
-                       try {
-
-                               // Only trigger remove when necessary to save time
-                               events = $._data( elem, "events" );
-                               if ( events && events.remove ) {
-                                       $( elem ).triggerHandler( "remove" );
-                               }
-
-                       // http://bugs.jquery.com/ticket/8235
-                       } catch ( e ) {}
-               }
-               orig( elems );
-       };
-})( $.cleanData );
-
-$.widget = function( name, base, prototype ) {
-       var fullName, existingConstructor, constructor, basePrototype,
-               // proxiedPrototype allows the provided prototype to remain unmodified
-               // so that it can be used as a mixin for multiple widgets (#8876)
-               proxiedPrototype = {},
-               namespace = name.split( "." )[ 0 ];
-
-       name = name.split( "." )[ 1 ];
-       fullName = namespace + "-" + name;
-
-       if ( !prototype ) {
-               prototype = base;
-               base = $.Widget;
-       }
-
-       // create selector for plugin
-       $.expr[ ":" ][ fullName.toLowerCase() ] = function( elem ) {
-               return !!$.data( elem, fullName );
-       };
-
-       $[ namespace ] = $[ namespace ] || {};
-       existingConstructor = $[ namespace ][ name ];
-       constructor = $[ namespace ][ name ] = function( options, element ) {
-               // allow instantiation without "new" keyword
-               if ( !this._createWidget ) {
-                       return new constructor( options, element );
-               }
-
-               // allow instantiation without initializing for simple inheritance
-               // must use "new" keyword (the code above always passes args)
-               if ( arguments.length ) {
-                       this._createWidget( options, element );
-               }
-       };
-       // extend with the existing constructor to carry over any static properties
-       $.extend( constructor, existingConstructor, {
-               version: prototype.version,
-               // copy the object used to create the prototype in case we need to
-               // redefine the widget later
-               _proto: $.extend( {}, prototype ),
-               // track widgets that inherit from this widget in case this widget is
-               // redefined after a widget inherits from it
-               _childConstructors: []
-       });
-
-       basePrototype = new base();
-       // we need to make the options hash a property directly on the new instance
-       // otherwise we'll modify the options hash on the prototype that we're
-       // inheriting from
-       basePrototype.options = $.widget.extend( {}, basePrototype.options );
-       $.each( prototype, function( prop, value ) {
-               if ( !$.isFunction( value ) ) {
-                       proxiedPrototype[ prop ] = value;
-                       return;
-               }
-               proxiedPrototype[ prop ] = (function() {
-                       var _super = function() {
-                                       return base.prototype[ prop ].apply( this, arguments );
-                               },
-                               _superApply = function( args ) {
-                                       return base.prototype[ prop ].apply( this, args );
-                               };
-                       return function() {
-                               var __super = this._super,
-                                       __superApply = this._superApply,
-                                       returnValue;
-
-                               this._super = _super;
-                               this._superApply = _superApply;
-
-                               returnValue = value.apply( this, arguments );
-
-                               this._super = __super;
-                               this._superApply = __superApply;
-
-                               return returnValue;
-                       };
-               })();
-       });
-       constructor.prototype = $.widget.extend( basePrototype, {
-               // TODO: remove support for widgetEventPrefix
-               // always use the name + a colon as the prefix, e.g., draggable:start
-               // don't prefix for widgets that aren't DOM-based
-               widgetEventPrefix: existingConstructor ? (basePrototype.widgetEventPrefix || name) : name
-       }, proxiedPrototype, {
-               constructor: constructor,
-               namespace: namespace,
-               widgetName: name,
-               widgetFullName: fullName
-       });
-
-       // If this widget is being redefined then we need to find all widgets that
-       // are inheriting from it and redefine all of them so that they inherit from
-       // the new version of this widget. We're essentially trying to replace one
-       // level in the prototype chain.
-       if ( existingConstructor ) {
-               $.each( existingConstructor._childConstructors, function( i, child ) {
-                       var childPrototype = child.prototype;
-
-                       // redefine the child widget using the same prototype that was
-                       // originally used, but inherit from the new version of the base
-                       $.widget( childPrototype.namespace + "." + childPrototype.widgetName, constructor, child._proto );
-               });
-               // remove the list of existing child constructors from the old constructor
-               // so the old child constructors can be garbage collected
-               delete existingConstructor._childConstructors;
-       } else {
-               base._childConstructors.push( constructor );
-       }
-
-       $.widget.bridge( name, constructor );
-
-       return constructor;
-};
-
-$.widget.extend = function( target ) {
-       var input = widget_slice.call( arguments, 1 ),
-               inputIndex = 0,
-               inputLength = input.length,
-               key,
-               value;
-       for ( ; inputIndex < inputLength; inputIndex++ ) {
-               for ( key in input[ inputIndex ] ) {
-                       value = input[ inputIndex ][ key ];
-                       if ( input[ inputIndex ].hasOwnProperty( key ) && value !== undefined ) {
-                               // Clone objects
-                               if ( $.isPlainObject( value ) ) {
-                                       target[ key ] = $.isPlainObject( target[ key ] ) ?
-                                               $.widget.extend( {}, target[ key ], value ) :
-                                               // Don't extend strings, arrays, etc. with objects
-                                               $.widget.extend( {}, value );
-                               // Copy everything else by reference
-                               } else {
-                                       target[ key ] = value;
-                               }
-                       }
-               }
-       }
-       return target;
-};
-
-$.widget.bridge = function( name, object ) {
-       var fullName = object.prototype.widgetFullName || name;
-       $.fn[ name ] = function( options ) {
-               var isMethodCall = typeof options === "string",
-                       args = widget_slice.call( arguments, 1 ),
-                       returnValue = this;
-
-               if ( isMethodCall ) {
-                       this.each(function() {
-                               var methodValue,
-                                       instance = $.data( this, fullName );
-                               if ( options === "instance" ) {
-                                       returnValue = instance;
-                                       return false;
-                               }
-                               if ( !instance ) {
-                                       return $.error( "cannot call methods on " + name + " prior to initialization; " +
-                                               "attempted to call method '" + options + "'" );
-                               }
-                               if ( !$.isFunction( instance[options] ) || options.charAt( 0 ) === "_" ) {
-                                       return $.error( "no such method '" + options + "' for " + name + " widget instance" );
-                               }
-                               methodValue = instance[ options ].apply( instance, args );
-                               if ( methodValue !== instance && methodValue !== undefined ) {
-                                       returnValue = methodValue && methodValue.jquery ?
-                                               returnValue.pushStack( methodValue.get() ) :
-                                               methodValue;
-                                       return false;
-                               }
-                       });
-               } else {
-
-                       // Allow multiple hashes to be passed on init
-                       if ( args.length ) {
-                               options = $.widget.extend.apply( null, [ options ].concat(args) );
-                       }
-
-                       this.each(function() {
-                               var instance = $.data( this, fullName );
-                               if ( instance ) {
-                                       instance.option( options || {} );
-                                       if ( instance._init ) {
-                                               instance._init();
-                                       }
-                               } else {
-                                       $.data( this, fullName, new object( options, this ) );
-                               }
-                       });
-               }
-
-               return returnValue;
-       };
-};
-
-$.Widget = function( /* options, element */ ) {};
-$.Widget._childConstructors = [];
-
-$.Widget.prototype = {
-       widgetName: "widget",
-       widgetEventPrefix: "",
-       defaultElement: "<div>",
-       options: {
-               disabled: false,
-
-               // callbacks
-               create: null
-       },
-       _createWidget: function( options, element ) {
-               element = $( element || this.defaultElement || this )[ 0 ];
-               this.element = $( element );
-               this.uuid = widget_uuid++;
-               this.eventNamespace = "." + this.widgetName + this.uuid;
-
-               this.bindings = $();
-               this.hoverable = $();
-               this.focusable = $();
-
-               if ( element !== this ) {
-                       $.data( element, this.widgetFullName, this );
-                       this._on( true, this.element, {
-                               remove: function( event ) {
-                                       if ( event.target === element ) {
-                                               this.destroy();
-                                       }
-                               }
-                       });
-                       this.document = $( element.style ?
-                               // element within the document
-                               element.ownerDocument :
-                               // element is window or document
-                               element.document || element );
-                       this.window = $( this.document[0].defaultView || this.document[0].parentWindow );
-               }
-
-               this.options = $.widget.extend( {},
-                       this.options,
-                       this._getCreateOptions(),
-                       options );
-
-               this._create();
-               this._trigger( "create", null, this._getCreateEventData() );
-               this._init();
-       },
-       _getCreateOptions: $.noop,
-       _getCreateEventData: $.noop,
-       _create: $.noop,
-       _init: $.noop,
-
-       destroy: function() {
-               this._destroy();
-               // we can probably remove the unbind calls in 2.0
-               // all event bindings should go through this._on()
-               this.element
-                       .unbind( this.eventNamespace )
-                       .removeData( this.widgetFullName )
-                       // support: jquery <1.6.3
-                       // http://bugs.jquery.com/ticket/9413
-                       .removeData( $.camelCase( this.widgetFullName ) );
-               this.widget()
-                       .unbind( this.eventNamespace )
-                       .removeAttr( "aria-disabled" )
-                       .removeClass(
-                               this.widgetFullName + "-disabled " +
-                               "ui-state-disabled" );
-
-               // clean up events and states
-               this.bindings.unbind( this.eventNamespace );
-               this.hoverable.removeClass( "ui-state-hover" );
-               this.focusable.removeClass( "ui-state-focus" );
-       },
-       _destroy: $.noop,
-
-       widget: function() {
-               return this.element;
-       },
-
-       option: function( key, value ) {
-               var options = key,
-                       parts,
-                       curOption,
-                       i;
-
-               if ( arguments.length === 0 ) {
-                       // don't return a reference to the internal hash
-                       return $.widget.extend( {}, this.options );
-               }
-
-               if ( typeof key === "string" ) {
-                       // handle nested keys, e.g., "foo.bar" => { foo: { bar: ___ } }
-                       options = {};
-                       parts = key.split( "." );
-                       key = parts.shift();
-                       if ( parts.length ) {
-                               curOption = options[ key ] = $.widget.extend( {}, this.options[ key ] );
-                               for ( i = 0; i < parts.length - 1; i++ ) {
-                                       curOption[ parts[ i ] ] = curOption[ parts[ i ] ] || {};
-                                       curOption = curOption[ parts[ i ] ];
-                               }
-                               key = parts.pop();
-                               if ( arguments.length === 1 ) {
-                                       return curOption[ key ] === undefined ? null : curOption[ key ];
-                               }
-                               curOption[ key ] = value;
-                       } else {
-                               if ( arguments.length === 1 ) {
-                                       return this.options[ key ] === undefined ? null : this.options[ key ];
-                               }
-                               options[ key ] = value;
-                       }
-               }
-
-               this._setOptions( options );
-
-               return this;
-       },
-       _setOptions: function( options ) {
-               var key;
-
-               for ( key in options ) {
-                       this._setOption( key, options[ key ] );
-               }
-
-               return this;
-       },
-       _setOption: function( key, value ) {
-               this.options[ key ] = value;
-
-               if ( key === "disabled" ) {
-                       this.widget()
-                               .toggleClass( this.widgetFullName + "-disabled", !!value );
-
-                       // If the widget is becoming disabled, then nothing is interactive
-                       if ( value ) {
-                               this.hoverable.removeClass( "ui-state-hover" );
-                               this.focusable.removeClass( "ui-state-focus" );
-                       }
-               }
-
-               return this;
-       },
-
-       enable: function() {
-               return this._setOptions({ disabled: false });
-       },
-       disable: function() {
-               return this._setOptions({ disabled: true });
-       },
-
-       _on: function( suppressDisabledCheck, element, handlers ) {
-               var delegateElement,
-                       instance = this;
-
-               // no suppressDisabledCheck flag, shuffle arguments
-               if ( typeof suppressDisabledCheck !== "boolean" ) {
-                       handlers = element;
-                       element = suppressDisabledCheck;
-                       suppressDisabledCheck = false;
-               }
-
-               // no element argument, shuffle and use this.element
-               if ( !handlers ) {
-                       handlers = element;
-                       element = this.element;
-                       delegateElement = this.widget();
-               } else {
-                       element = delegateElement = $( element );
-                       this.bindings = this.bindings.add( element );
-               }
-
-               $.each( handlers, function( event, handler ) {
-                       function handlerProxy() {
-                               // allow widgets to customize the disabled handling
-                               // - disabled as an array instead of boolean
-                               // - disabled class as method for disabling individual parts
-                               if ( !suppressDisabledCheck &&
-                                               ( instance.options.disabled === true ||
-                                                       $( this ).hasClass( "ui-state-disabled" ) ) ) {
-                                       return;
-                               }
-                               return ( typeof handler === "string" ? instance[ handler ] : handler )
-                                       .apply( instance, arguments );
-                       }
-
-                       // copy the guid so direct unbinding works
-                       if ( typeof handler !== "string" ) {
-                               handlerProxy.guid = handler.guid =
-                                       handler.guid || handlerProxy.guid || $.guid++;
-                       }
-
-                       var match = event.match( /^([\w:-]*)\s*(.*)$/ ),
-                               eventName = match[1] + instance.eventNamespace,
-                               selector = match[2];
-                       if ( selector ) {
-                               delegateElement.delegate( selector, eventName, handlerProxy );
-                       } else {
-                               element.bind( eventName, handlerProxy );
-                       }
-               });
-       },
-
-       _off: function( element, eventName ) {
-               eventName = (eventName || "").split( " " ).join( this.eventNamespace + " " ) +
-                       this.eventNamespace;
-               element.unbind( eventName ).undelegate( eventName );
-
-               // Clear the stack to avoid memory leaks (#10056)
-               this.bindings = $( this.bindings.not( element ).get() );
-               this.focusable = $( this.focusable.not( element ).get() );
-               this.hoverable = $( this.hoverable.not( element ).get() );
-       },
-
-       _delay: function( handler, delay ) {
-               function handlerProxy() {
-                       return ( typeof handler === "string" ? instance[ handler ] : handler )
-                               .apply( instance, arguments );
-               }
-               var instance = this;
-               return setTimeout( handlerProxy, delay || 0 );
-       },
-
-       _hoverable: function( element ) {
-               this.hoverable = this.hoverable.add( element );
-               this._on( element, {
-                       mouseenter: function( event ) {
-                               $( event.currentTarget ).addClass( "ui-state-hover" );
-                       },
-                       mouseleave: function( event ) {
-                               $( event.currentTarget ).removeClass( "ui-state-hover" );
-                       }
-               });
-       },
-
-       _focusable: function( element ) {
-               this.focusable = this.focusable.add( element );
-               this._on( element, {
-                       focusin: function( event ) {
-                               $( event.currentTarget ).addClass( "ui-state-focus" );
-                       },
-                       focusout: function( event ) {
-                               $( event.currentTarget ).removeClass( "ui-state-focus" );
-                       }
-               });
-       },
-
-       _trigger: function( type, event, data ) {
-               var prop, orig,
-                       callback = this.options[ type ];
-
-               data = data || {};
-               event = $.Event( event );
-               event.type = ( type === this.widgetEventPrefix ?
-                       type :
-                       this.widgetEventPrefix + type ).toLowerCase();
-               // the original event may come from any element
-               // so we need to reset the target on the new event
-               event.target = this.element[ 0 ];
-
-               // copy original event properties over to the new event
-               orig = event.originalEvent;
-               if ( orig ) {
-                       for ( prop in orig ) {
-                               if ( !( prop in event ) ) {
-                                       event[ prop ] = orig[ prop ];
-                               }
-                       }
-               }
-
-               this.element.trigger( event, data );
-               return !( $.isFunction( callback ) &&
-                       callback.apply( this.element[0], [ event ].concat( data ) ) === false ||
-                       event.isDefaultPrevented() );
-       }
-};
-
-$.each( { show: "fadeIn", hide: "fadeOut" }, function( method, defaultEffect ) {
-       $.Widget.prototype[ "_" + method ] = function( element, options, callback ) {
-               if ( typeof options === "string" ) {
-                       options = { effect: options };
-               }
-               var hasOptions,
-                       effectName = !options ?
-                               method :
-                               options === true || typeof options === "number" ?
-                                       defaultEffect :
-                                       options.effect || defaultEffect;
-               options = options || {};
-               if ( typeof options === "number" ) {
-                       options = { duration: options };
-               }
-               hasOptions = !$.isEmptyObject( options );
-               options.complete = callback;
-               if ( options.delay ) {
-                       element.delay( options.delay );
-               }
-               if ( hasOptions && $.effects && $.effects.effect[ effectName ] ) {
-                       element[ method ]( options );
-               } else if ( effectName !== method && element[ effectName ] ) {
-                       element[ effectName ]( options.duration, options.easing, callback );
-               } else {
-                       element.queue(function( next ) {
-                               $( this )[ method ]();
-                               if ( callback ) {
-                                       callback.call( element[ 0 ] );
-                               }
-                               next();
-                       });
-               }
-       };
-});
-
-var widget = $.widget;
-
-
-/*!
- * jQuery UI Mouse 1.11.3
- * http://jqueryui.com
- *
- * Copyright jQuery Foundation and other contributors
- * Released under the MIT license.
- * http://jquery.org/license
- *
- * http://api.jqueryui.com/mouse/
- */
-
-
-var mouseHandled = false;
-$( document ).mouseup( function() {
-       mouseHandled = false;
-});
-
-var mouse = $.widget("ui.mouse", {
-       version: "1.11.3",
-       options: {
-               cancel: "input,textarea,button,select,option",
-               distance: 1,
-               delay: 0
-       },
-       _mouseInit: function() {
-               var that = this;
-
-               this.element
-                       .bind("mousedown." + this.widgetName, function(event) {
-                               return that._mouseDown(event);
-                       })
-                       .bind("click." + this.widgetName, function(event) {
-                               if (true === $.data(event.target, that.widgetName + ".preventClickEvent")) {
-                                       $.removeData(event.target, that.widgetName + ".preventClickEvent");
-                                       event.stopImmediatePropagation();
-                                       return false;
-                               }
-                       });
-
-               this.started = false;
-       },
-
-       // TODO: make sure destroying one instance of mouse doesn't mess with
-       // other instances of mouse
-       _mouseDestroy: function() {
-               this.element.unbind("." + this.widgetName);
-               if ( this._mouseMoveDelegate ) {
-                       this.document
-                               .unbind("mousemove." + this.widgetName, this._mouseMoveDelegate)
-                               .unbind("mouseup." + this.widgetName, this._mouseUpDelegate);
-               }
-       },
-
-       _mouseDown: function(event) {
-               // don't let more than one widget handle mouseStart
-               if ( mouseHandled ) {
-                       return;
-               }
-
-               this._mouseMoved = false;
-
-               // we may have missed mouseup (out of window)
-               (this._mouseStarted && this._mouseUp(event));
-
-               this._mouseDownEvent = event;
-
-               var that = this,
-                       btnIsLeft = (event.which === 1),
-                       // event.target.nodeName works around a bug in IE 8 with
-                       // disabled inputs (#7620)
-                       elIsCancel = (typeof this.options.cancel === "string" && event.target.nodeName ? $(event.target).closest(this.options.cancel).length : false);
-               if (!btnIsLeft || elIsCancel || !this._mouseCapture(event)) {
-                       return true;
-               }
-
-               this.mouseDelayMet = !this.options.delay;
-               if (!this.mouseDelayMet) {
-                       this._mouseDelayTimer = setTimeout(function() {
-                               that.mouseDelayMet = true;
-                       }, this.options.delay);
-               }
-
-               if (this._mouseDistanceMet(event) && this._mouseDelayMet(event)) {
-                       this._mouseStarted = (this._mouseStart(event) !== false);
-                       if (!this._mouseStarted) {
-                               event.preventDefault();
-                               return true;
-                       }
-               }
-
-               // Click event may never have fired (Gecko & Opera)
-               if (true === $.data(event.target, this.widgetName + ".preventClickEvent")) {
-                       $.removeData(event.target, this.widgetName + ".preventClickEvent");
-               }
-
-               // these delegates are required to keep context
-               this._mouseMoveDelegate = function(event) {
-                       return that._mouseMove(event);
-               };
-               this._mouseUpDelegate = function(event) {
-                       return that._mouseUp(event);
-               };
-
-               this.document
-                       .bind( "mousemove." + this.widgetName, this._mouseMoveDelegate )
-                       .bind( "mouseup." + this.widgetName, this._mouseUpDelegate );
-
-               event.preventDefault();
-
-               mouseHandled = true;
-               return true;
-       },
-
-       _mouseMove: function(event) {
-               // Only check for mouseups outside the document if you've moved inside the document
-               // at least once. This prevents the firing of mouseup in the case of IE<9, which will
-               // fire a mousemove event if content is placed under the cursor. See #7778
-               // Support: IE <9
-               if ( this._mouseMoved ) {
-                       // IE mouseup check - mouseup happened when mouse was out of window
-                       if ($.ui.ie && ( !document.documentMode || document.documentMode < 9 ) && !event.button) {
-                               return this._mouseUp(event);
-
-                       // Iframe mouseup check - mouseup occurred in another document
-                       } else if ( !event.which ) {
-                               return this._mouseUp( event );
-                       }
-               }
-
-               if ( event.which || event.button ) {
-                       this._mouseMoved = true;
-               }
-
-               if (this._mouseStarted) {
-                       this._mouseDrag(event);
-                       return event.preventDefault();
-               }
-
-               if (this._mouseDistanceMet(event) && this._mouseDelayMet(event)) {
-                       this._mouseStarted =
-                               (this._mouseStart(this._mouseDownEvent, event) !== false);
-                       (this._mouseStarted ? this._mouseDrag(event) : this._mouseUp(event));
-               }
-
-               return !this._mouseStarted;
-       },
-
-       _mouseUp: function(event) {
-               this.document
-                       .unbind( "mousemove." + this.widgetName, this._mouseMoveDelegate )
-                       .unbind( "mouseup." + this.widgetName, this._mouseUpDelegate );
-
-               if (this._mouseStarted) {
-                       this._mouseStarted = false;
-
-                       if (event.target === this._mouseDownEvent.target) {
-                               $.data(event.target, this.widgetName + ".preventClickEvent", true);
-                       }
-
-                       this._mouseStop(event);
-               }
-
-               mouseHandled = false;
-               return false;
-       },
-
-       _mouseDistanceMet: function(event) {
-               return (Math.max(
-                               Math.abs(this._mouseDownEvent.pageX - event.pageX),
-                               Math.abs(this._mouseDownEvent.pageY - event.pageY)
-                       ) >= this.options.distance
-               );
-       },
-
-       _mouseDelayMet: function(/* event */) {
-               return this.mouseDelayMet;
-       },
-
-       // These are placeholder methods, to be overriden by extending plugin
-       _mouseStart: function(/* event */) {},
-       _mouseDrag: function(/* event */) {},
-       _mouseStop: function(/* event */) {},
-       _mouseCapture: function(/* event */) { return true; }
-});
-
-
-/*!
- * jQuery UI Position 1.11.3
- * http://jqueryui.com
- *
- * Copyright jQuery Foundation and other contributors
- * Released under the MIT license.
- * http://jquery.org/license
- *
- * http://api.jqueryui.com/position/
- */
-
-(function() {
-
-$.ui = $.ui || {};
-
-var cachedScrollbarWidth, supportsOffsetFractions,
-       max = Math.max,
-       abs = Math.abs,
-       round = Math.round,
-       rhorizontal = /left|center|right/,
-       rvertical = /top|center|bottom/,
-       roffset = /[\+\-]\d+(\.[\d]+)?%?/,
-       rposition = /^\w+/,
-       rpercent = /%$/,
-       _position = $.fn.position;
-
-function getOffsets( offsets, width, height ) {
-       return [
-               parseFloat( offsets[ 0 ] ) * ( rpercent.test( offsets[ 0 ] ) ? width / 100 : 1 ),
-               parseFloat( offsets[ 1 ] ) * ( rpercent.test( offsets[ 1 ] ) ? height / 100 : 1 )
-       ];
-}
-
-function parseCss( element, property ) {
-       return parseInt( $.css( element, property ), 10 ) || 0;
-}
-
-function getDimensions( elem ) {
-       var raw = elem[0];
-       if ( raw.nodeType === 9 ) {
-               return {
-                       width: elem.width(),
-                       height: elem.height(),
-                       offset: { top: 0, left: 0 }
-               };
-       }
-       if ( $.isWindow( raw ) ) {
-               return {
-                       width: elem.width(),
-                       height: elem.height(),
-                       offset: { top: elem.scrollTop(), left: elem.scrollLeft() }
-               };
-       }
-       if ( raw.preventDefault ) {
-               return {
-                       width: 0,
-                       height: 0,
-                       offset: { top: raw.pageY, left: raw.pageX }
-               };
-       }
-       return {
-               width: elem.outerWidth(),
-               height: elem.outerHeight(),
-               offset: elem.offset()
-       };
-}
-
-$.position = {
-       scrollbarWidth: function() {
-               if ( cachedScrollbarWidth !== undefined ) {
-                       return cachedScrollbarWidth;
-               }
-               var w1, w2,
-                       div = $( "<div style='display:block;position:absolute;width:50px;height:50px;overflow:hidden;'><div style='height:100px;width:auto;'></div></div>" ),
-                       innerDiv = div.children()[0];
-
-               $( "body" ).append( div );
-               w1 = innerDiv.offsetWidth;
-               div.css( "overflow", "scroll" );
-
-               w2 = innerDiv.offsetWidth;
-
-               if ( w1 === w2 ) {
-                       w2 = div[0].clientWidth;
-               }
-
-               div.remove();
-
-               return (cachedScrollbarWidth = w1 - w2);
-       },
-       getScrollInfo: function( within ) {
-               var overflowX = within.isWindow || within.isDocument ? "" :
-                               within.element.css( "overflow-x" ),
-                       overflowY = within.isWindow || within.isDocument ? "" :
-                               within.element.css( "overflow-y" ),
-                       hasOverflowX = overflowX === "scroll" ||
-                               ( overflowX === "auto" && within.width < within.element[0].scrollWidth ),
-                       hasOverflowY = overflowY === "scroll" ||
-                               ( overflowY === "auto" && within.height < within.element[0].scrollHeight );
-               return {
-                       width: hasOverflowY ? $.position.scrollbarWidth() : 0,
-                       height: hasOverflowX ? $.position.scrollbarWidth() : 0
-               };
-       },
-       getWithinInfo: function( element ) {
-               var withinElement = $( element || window ),
-                       isWindow = $.isWindow( withinElement[0] ),
-                       isDocument = !!withinElement[ 0 ] && withinElement[ 0 ].nodeType === 9;
-               return {
-                       element: withinElement,
-                       isWindow: isWindow,
-                       isDocument: isDocument,
-                       offset: withinElement.offset() || { left: 0, top: 0 },
-                       scrollLeft: withinElement.scrollLeft(),
-                       scrollTop: withinElement.scrollTop(),
-
-                       // support: jQuery 1.6.x
-                       // jQuery 1.6 doesn't support .outerWidth/Height() on documents or windows
-                       width: isWindow || isDocument ? withinElement.width() : withinElement.outerWidth(),
-                       height: isWindow || isDocument ? withinElement.height() : withinElement.outerHeight()
-               };
-       }
-};
-
-$.fn.position = function( options ) {
-       if ( !options || !options.of ) {
-               return _position.apply( this, arguments );
-       }
-
-       // make a copy, we don't want to modify arguments
-       options = $.extend( {}, options );
-
-       var atOffset, targetWidth, targetHeight, targetOffset, basePosition, dimensions,
-               target = $( options.of ),
-               within = $.position.getWithinInfo( options.within ),
-               scrollInfo = $.position.getScrollInfo( within ),
-               collision = ( options.collision || "flip" ).split( " " ),
-               offsets = {};
-
-       dimensions = getDimensions( target );
-       if ( target[0].preventDefault ) {
-               // force left top to allow flipping
-               options.at = "left top";
-       }
-       targetWidth = dimensions.width;
-       targetHeight = dimensions.height;
-       targetOffset = dimensions.offset;
-       // clone to reuse original targetOffset later
-       basePosition = $.extend( {}, targetOffset );
-
-       // force my and at to have valid horizontal and vertical positions
-       // if a value is missing or invalid, it will be converted to center
-       $.each( [ "my", "at" ], function() {
-               var pos = ( options[ this ] || "" ).split( " " ),
-                       horizontalOffset,
-                       verticalOffset;
-
-               if ( pos.length === 1) {
-                       pos = rhorizontal.test( pos[ 0 ] ) ?
-                               pos.concat( [ "center" ] ) :
-                               rvertical.test( pos[ 0 ] ) ?
-                                       [ "center" ].concat( pos ) :
-                                       [ "center", "center" ];
-               }
-               pos[ 0 ] = rhorizontal.test( pos[ 0 ] ) ? pos[ 0 ] : "center";
-               pos[ 1 ] = rvertical.test( pos[ 1 ] ) ? pos[ 1 ] : "center";
-
-               // calculate offsets
-               horizontalOffset = roffset.exec( pos[ 0 ] );
-               verticalOffset = roffset.exec( pos[ 1 ] );
-               offsets[ this ] = [
-                       horizontalOffset ? horizontalOffset[ 0 ] : 0,
-                       verticalOffset ? verticalOffset[ 0 ] : 0
-               ];
-
-               // reduce to just the positions without the offsets
-               options[ this ] = [
-                       rposition.exec( pos[ 0 ] )[ 0 ],
-                       rposition.exec( pos[ 1 ] )[ 0 ]
-               ];
-       });
-
-       // normalize collision option
-       if ( collision.length === 1 ) {
-               collision[ 1 ] = collision[ 0 ];
-       }
-
-       if ( options.at[ 0 ] === "right" ) {
-               basePosition.left += targetWidth;
-       } else if ( options.at[ 0 ] === "center" ) {
-               basePosition.left += targetWidth / 2;
-       }
-
-       if ( options.at[ 1 ] === "bottom" ) {
-               basePosition.top += targetHeight;
-       } else if ( options.at[ 1 ] === "center" ) {
-               basePosition.top += targetHeight / 2;
-       }
-
-       atOffset = getOffsets( offsets.at, targetWidth, targetHeight );
-       basePosition.left += atOffset[ 0 ];
-       basePosition.top += atOffset[ 1 ];
-
-       return this.each(function() {
-               var collisionPosition, using,
-                       elem = $( this ),
-                       elemWidth = elem.outerWidth(),
-                       elemHeight = elem.outerHeight(),
-                       marginLeft = parseCss( this, "marginLeft" ),
-                       marginTop = parseCss( this, "marginTop" ),
-                       collisionWidth = elemWidth + marginLeft + parseCss( this, "marginRight" ) + scrollInfo.width,
-                       collisionHeight = elemHeight + marginTop + parseCss( this, "marginBottom" ) + scrollInfo.height,
-                       position = $.extend( {}, basePosition ),
-                       myOffset = getOffsets( offsets.my, elem.outerWidth(), elem.outerHeight() );
-
-               if ( options.my[ 0 ] === "right" ) {
-                       position.left -= elemWidth;
-               } else if ( options.my[ 0 ] === "center" ) {
-                       position.left -= elemWidth / 2;
-               }
-
-               if ( options.my[ 1 ] === "bottom" ) {
-                       position.top -= elemHeight;
-               } else if ( options.my[ 1 ] === "center" ) {
-                       position.top -= elemHeight / 2;
-               }
-
-               position.left += myOffset[ 0 ];
-               position.top += myOffset[ 1 ];
-
-               // if the browser doesn't support fractions, then round for consistent results
-               if ( !supportsOffsetFractions ) {
-                       position.left = round( position.left );
-                       position.top = round( position.top );
-               }
-
-               collisionPosition = {
-                       marginLeft: marginLeft,
-                       marginTop: marginTop
-               };
-
-               $.each( [ "left", "top" ], function( i, dir ) {
-                       if ( $.ui.position[ collision[ i ] ] ) {
-                               $.ui.position[ collision[ i ] ][ dir ]( position, {
-                                       targetWidth: targetWidth,
-                                       targetHeight: targetHeight,
-                                       elemWidth: elemWidth,
-                                       elemHeight: elemHeight,
-                                       collisionPosition: collisionPosition,
-                                       collisionWidth: collisionWidth,
-                                       collisionHeight: collisionHeight,
-                                       offset: [ atOffset[ 0 ] + myOffset[ 0 ], atOffset [ 1 ] + myOffset[ 1 ] ],
-                                       my: options.my,
-                                       at: options.at,
-                                       within: within,
-                                       elem: elem
-                               });
-                       }
-               });
-
-               if ( options.using ) {
-                       // adds feedback as second argument to using callback, if present
-                       using = function( props ) {
-                               var left = targetOffset.left - position.left,
-                                       right = left + targetWidth - elemWidth,
-                                       top = targetOffset.top - position.top,
-                                       bottom = top + targetHeight - elemHeight,
-                                       feedback = {
-                                               target: {
-                                                       element: target,
-                                                       left: targetOffset.left,
-                                                       top: targetOffset.top,
-                                                       width: targetWidth,
-                                                       height: targetHeight
-                                               },
-                                               element: {
-                                                       element: elem,
-                                                       left: position.left,
-                                                       top: position.top,
-                                                       width: elemWidth,
-                                                       height: elemHeight
-                                               },
-                                               horizontal: right < 0 ? "left" : left > 0 ? "right" : "center",
-                                               vertical: bottom < 0 ? "top" : top > 0 ? "bottom" : "middle"
-                                       };
-                               if ( targetWidth < elemWidth && abs( left + right ) < targetWidth ) {
-                                       feedback.horizontal = "center";
-                               }
-                               if ( targetHeight < elemHeight && abs( top + bottom ) < targetHeight ) {
-                                       feedback.vertical = "middle";
-                               }
-                               if ( max( abs( left ), abs( right ) ) > max( abs( top ), abs( bottom ) ) ) {
-                                       feedback.important = "horizontal";
-                               } else {
-                                       feedback.important = "vertical";
-                               }
-                               options.using.call( this, props, feedback );
-                       };
-               }
-
-               elem.offset( $.extend( position, { using: using } ) );
-       });
-};
-
-$.ui.position = {
-       fit: {
-               left: function( position, data ) {
-                       var within = data.within,
-                               withinOffset = within.isWindow ? within.scrollLeft : within.offset.left,
-                               outerWidth = within.width,
-                               collisionPosLeft = position.left - data.collisionPosition.marginLeft,
-                               overLeft = withinOffset - collisionPosLeft,
-                               overRight = collisionPosLeft + data.collisionWidth - outerWidth - withinOffset,
-                               newOverRight;
-
-                       // element is wider than within
-                       if ( data.collisionWidth > outerWidth ) {
-                               // element is initially over the left side of within
-                               if ( overLeft > 0 && overRight <= 0 ) {
-                                       newOverRight = position.left + overLeft + data.collisionWidth - outerWidth - withinOffset;
-                                       position.left += overLeft - newOverRight;
-                               // element is initially over right side of within
-                               } else if ( overRight > 0 && overLeft <= 0 ) {
-                                       position.left = withinOffset;
-                               // element is initially over both left and right sides of within
-                               } else {
-                                       if ( overLeft > overRight ) {
-                                               position.left = withinOffset + outerWidth - data.collisionWidth;
-                                       } else {
-                                               position.left = withinOffset;
-                                       }
-                               }
-                       // too far left -> align with left edge
-                       } else if ( overLeft > 0 ) {
-                               position.left += overLeft;
-                       // too far right -> align with right edge
-                       } else if ( overRight > 0 ) {
-                               position.left -= overRight;
-                       // adjust based on position and margin
-                       } else {
-                               position.left = max( position.left - collisionPosLeft, position.left );
-                       }
-               },
-               top: function( position, data ) {
-                       var within = data.within,
-                               withinOffset = within.isWindow ? within.scrollTop : within.offset.top,
-                               outerHeight = data.within.height,
-                               collisionPosTop = position.top - data.collisionPosition.marginTop,
-                               overTop = withinOffset - collisionPosTop,
-                               overBottom = collisionPosTop + data.collisionHeight - outerHeight - withinOffset,
-                               newOverBottom;
-
-                       // element is taller than within
-                       if ( data.collisionHeight > outerHeight ) {
-                               // element is initially over the top of within
-                               if ( overTop > 0 && overBottom <= 0 ) {
-                                       newOverBottom = position.top + overTop + data.collisionHeight - outerHeight - withinOffset;
-                                       position.top += overTop - newOverBottom;
-                               // element is initially over bottom of within
-                               } else if ( overBottom > 0 && overTop <= 0 ) {
-                                       position.top = withinOffset;
-                               // element is initially over both top and bottom of within
-                               } else {
-                                       if ( overTop > overBottom ) {
-                                               position.top = withinOffset + outerHeight - data.collisionHeight;
-                                       } else {
-                                               position.top = withinOffset;
-                                       }
-                               }
-                       // too far up -> align with top
-                       } else if ( overTop > 0 ) {
-                               position.top += overTop;
-                       // too far down -> align with bottom edge
-                       } else if ( overBottom > 0 ) {
-                               position.top -= overBottom;
-                       // adjust based on position and margin
-                       } else {
-                               position.top = max( position.top - collisionPosTop, position.top );
-                       }
-               }
-       },
-       flip: {
-               left: function( position, data ) {
-                       var within = data.within,
-                               withinOffset = within.offset.left + within.scrollLeft,
-                               outerWidth = within.width,
-                               offsetLeft = within.isWindow ? within.scrollLeft : within.offset.left,
-                               collisionPosLeft = position.left - data.collisionPosition.marginLeft,
-                               overLeft = collisionPosLeft - offsetLeft,
-                               overRight = collisionPosLeft + data.collisionWidth - outerWidth - offsetLeft,
-                               myOffset = data.my[ 0 ] === "left" ?
-                                       -data.elemWidth :
-                                       data.my[ 0 ] === "right" ?
-                                               data.elemWidth :
-                                               0,
-                               atOffset = data.at[ 0 ] === "left" ?
-                                       data.targetWidth :
-                                       data.at[ 0 ] === "right" ?
-                                               -data.targetWidth :
-                                               0,
-                               offset = -2 * data.offset[ 0 ],
-                               newOverRight,
-                               newOverLeft;
-
-                       if ( overLeft < 0 ) {
-                               newOverRight = position.left + myOffset + atOffset + offset + data.collisionWidth - outerWidth - withinOffset;
-                               if ( newOverRight < 0 || newOverRight < abs( overLeft ) ) {
-                                       position.left += myOffset + atOffset + offset;
-                               }
-                       } else if ( overRight > 0 ) {
-                               newOverLeft = position.left - data.collisionPosition.marginLeft + myOffset + atOffset + offset - offsetLeft;
-                               if ( newOverLeft > 0 || abs( newOverLeft ) < overRight ) {
-                                       position.left += myOffset + atOffset + offset;
-                               }
-                       }
-               },
-               top: function( position, data ) {
-                       var within = data.within,
-                               withinOffset = within.offset.top + within.scrollTop,
-                               outerHeight = within.height,
-                               offsetTop = within.isWindow ? within.scrollTop : within.offset.top,
-                               collisionPosTop = position.top - data.collisionPosition.marginTop,
-                               overTop = collisionPosTop - offsetTop,
-                               overBottom = collisionPosTop + data.collisionHeight - outerHeight - offsetTop,
-                               top = data.my[ 1 ] === "top",
-                               myOffset = top ?
-                                       -data.elemHeight :
-                                       data.my[ 1 ] === "bottom" ?
-                                               data.elemHeight :
-                                               0,
-                               atOffset = data.at[ 1 ] === "top" ?
-                                       data.targetHeight :
-                                       data.at[ 1 ] === "bottom" ?
-                                               -data.targetHeight :
-                                               0,
-                               offset = -2 * data.offset[ 1 ],
-                               newOverTop,
-                               newOverBottom;
-                       if ( overTop < 0 ) {
-                               newOverBottom = position.top + myOffset + atOffset + offset + data.collisionHeight - outerHeight - withinOffset;
-                               if ( newOverBottom < 0 || newOverBottom < abs( overTop ) ) {
-                                       position.top += myOffset + atOffset + offset;
-                               }
-                       } else if ( overBottom > 0 ) {
-                               newOverTop = position.top - data.collisionPosition.marginTop + myOffset + atOffset + offset - offsetTop;
-                               if ( newOverTop > 0 || abs( newOverTop ) < overBottom ) {
-                                       position.top += myOffset + atOffset + offset;
-                               }
-                       }
-               }
-       },
-       flipfit: {
-               left: function() {
-                       $.ui.position.flip.left.apply( this, arguments );
-                       $.ui.position.fit.left.apply( this, arguments );
-               },
-               top: function() {
-                       $.ui.position.flip.top.apply( this, arguments );
-                       $.ui.position.fit.top.apply( this, arguments );
-               }
-       }
-};
-
-// fraction support test
-(function() {
-       var testElement, testElementParent, testElementStyle, offsetLeft, i,
-               body = document.getElementsByTagName( "body" )[ 0 ],
-               div = document.createElement( "div" );
-
-       //Create a "fake body" for testing based on method used in jQuery.support
-       testElement = document.createElement( body ? "div" : "body" );
-       testElementStyle = {
-               visibility: "hidden",
-               width: 0,
-               height: 0,
-               border: 0,
-               margin: 0,
-               background: "none"
-       };
-       if ( body ) {
-               $.extend( testElementStyle, {
-                       position: "absolute",
-                       left: "-1000px",
-                       top: "-1000px"
-               });
-       }
-       for ( i in testElementStyle ) {
-               testElement.style[ i ] = testElementStyle[ i ];
-       }
-       testElement.appendChild( div );
-       testElementParent = body || document.documentElement;
-       testElementParent.insertBefore( testElement, testElementParent.firstChild );
-
-       div.style.cssText = "position: absolute; left: 10.7432222px;";
-
-       offsetLeft = $( div ).offset().left;
-       supportsOffsetFractions = offsetLeft > 10 && offsetLeft < 11;
-
-       testElement.innerHTML = "";
-       testElementParent.removeChild( testElement );
-})();
-
-})();
-
-var position = $.ui.position;
-
-
-/*!
- * jQuery UI Accordion 1.11.3
- * http://jqueryui.com
- *
- * Copyright jQuery Foundation and other contributors
- * Released under the MIT license.
- * http://jquery.org/license
- *
- * http://api.jqueryui.com/accordion/
- */
-
-
-var accordion = $.widget( "ui.accordion", {
-       version: "1.11.3",
-       options: {
-               active: 0,
-               animate: {},
-               collapsible: false,
-               event: "click",
-               header: "> li > :first-child,> :not(li):even",
-               heightStyle: "auto",
-               icons: {
-                       activeHeader: "ui-icon-triangle-1-s",
-                       header: "ui-icon-triangle-1-e"
-               },
-
-               // callbacks
-               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 options = this.options;
-               this.prevShow = this.prevHide = $();
-               this.element.addClass( "ui-accordion ui-widget ui-helper-reset" )
-                       // ARIA
-                       .attr( "role", "tablist" );
-
-               // don't allow collapsible: false and active: false / null
-               if ( !options.collapsible && (options.active === false || options.active == null) ) {
-                       options.active = 0;
-               }
-
-               this._processPanels();
-               // handle negative values
-               if ( options.active < 0 ) {
-                       options.active += this.headers.length;
-               }
-               this._refresh();
-       },
-
-       _getCreateEventData: function() {
-               return {
-                       header: this.active,
-                       panel: !this.active.length ? $() : this.active.next()
-               };
-       },
-
-       _createIcons: function() {
-               var icons = this.options.icons;
-               if ( icons ) {
-                       $( "<span>" )
-                               .addClass( "ui-accordion-header-icon ui-icon " + icons.header )
-                               .prependTo( this.headers );
-                       this.active.children( ".ui-accordion-header-icon" )
-                               .removeClass( icons.header )
-                               .addClass( icons.activeHeader );
-                       this.headers.addClass( "ui-accordion-icons" );
-               }
-       },
-
-       _destroyIcons: function() {
-               this.headers
-                       .removeClass( "ui-accordion-icons" )
-                       .children( ".ui-accordion-header-icon" )
-                               .remove();
-       },
-
-       _destroy: function() {
-               var contents;
-
-               // clean up main element
-               this.element
-                       .removeClass( "ui-accordion ui-widget ui-helper-reset" )
-                       .removeAttr( "role" );
-
-               // clean up headers
-               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();
-
-               // clean up content panels
-               contents = 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();
-
-               if ( this.options.heightStyle !== "content" ) {
-                       contents.css( "height", "" );
-               }
-       },
-
-       _setOption: function( key, value ) {
-               if ( key === "active" ) {
-                       // _activate() will handle invalid values and update this.options
-                       this._activate( value );
-                       return;
-               }
-
-               if ( key === "event" ) {
-                       if ( this.options.event ) {
-                               this._off( this.headers, this.options.event );
-                       }
-                       this._setupEvents( value );
-               }
-
-               this._super( key, value );
-
-               // setting collapsible: false while collapsed; open first panel
-               if ( key === "collapsible" && !value && this.options.active === false ) {
-                       this._activate( 0 );
-               }
-
-               if ( key === "icons" ) {
-                       this._destroyIcons();
-                       if ( value ) {
-                               this._createIcons();
-                       }
-               }
-
-               // #5332 - opacity doesn't cascade to positioned elements in IE
-               // so we need to add the disabled class to the headers and panels
-               if ( key === "disabled" ) {
-                       this.element
-                               .toggleClass( "ui-state-disabled", !!value )
-                               .attr( "aria-disabled", value );
-                       this.headers.add( this.headers.next() )
-                               .toggleClass( "ui-state-disabled", !!value );
-               }
-       },
-
-       _keydown: function( event ) {
-               if ( event.altKey || event.ctrlKey ) {
-                       return;
-               }
-
-               var keyCode = $.ui.keyCode,
-                       length = this.headers.length,
-                       currentIndex = this.headers.index( event.target ),
-                       toFocus = false;
-
-               switch ( event.keyCode ) {
-                       case keyCode.RIGHT:
-                       case keyCode.DOWN:
-                               toFocus = this.headers[ ( currentIndex + 1 ) % length ];
-                               break;
-                       case keyCode.LEFT:
-                       case keyCode.UP:
-                               toFocus = this.headers[ ( currentIndex - 1 + length ) % length ];
-                               break;
-                       case keyCode.SPACE:
-                       case keyCode.ENTER:
-                               this._eventHandler( event );
-                               break;
-                       case keyCode.HOME:
-                               toFocus = this.headers[ 0 ];
-                               break;
-                       case keyCode.END:
-                               toFocus = this.headers[ length - 1 ];
-                               break;
-               }
-
-               if ( toFocus ) {
-                       $( event.target ).attr( "tabIndex", -1 );
-                       $( toFocus ).attr( "tabIndex", 0 );
-                       toFocus.focus();
-                       event.preventDefault();
-               }
-       },
-
-       _panelKeyDown: function( event ) {
-               if ( event.keyCode === $.ui.keyCode.UP && event.ctrlKey ) {
-                       $( event.currentTarget ).prev().focus();
-               }
-       },
-
-       refresh: function() {
-               var options = this.options;
-               this._processPanels();
-
-               // was collapsed or no panel
-               if ( ( options.active === false && options.collapsible === true ) || !this.headers.length ) {
-                       options.active = false;
-                       this.active = $();
-               // active false only when collapsible is true
-               } else if ( options.active === false ) {
-                       this._activate( 0 );
-               // was active, but active panel is gone
-               } else if ( this.active.length && !$.contains( this.element[ 0 ], this.active[ 0 ] ) ) {
-                       // all remaining panel are disabled
-                       if ( this.headers.length === this.headers.find(".ui-state-disabled").length ) {
-                               options.active = false;
-                               this.active = $();
-                       // activate previous panel
-                       } else {
-                               this._activate( Math.max( 0, options.active - 1 ) );
-                       }
-               // was active, active panel still exists
-               } else {
-                       // make sure active index is correct
-                       options.active = this.headers.index( this.active );
-               }
-
-               this._destroyIcons();
-
-               this._refresh();
-       },
-
-       _processPanels: function() {
-               var prevHeaders = this.headers,
-                       prevPanels = 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();
-
-               // Avoid memory leaks (#10056)
-               if ( prevPanels ) {
-                       this._off( prevHeaders.not( this.headers ) );
-                       this._off( prevPanels.not( this.panels ) );
-               }
-       },
-
-       _refresh: function() {
-               var maxHeight,
-                       options = this.options,
-                       heightStyle = options.heightStyle,
-                       parent = this.element.parent();
-
-               this.active = this._findActive( options.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 header = $( this ),
-                                       headerId = header.uniqueId().attr( "id" ),
-                                       panel = header.next(),
-                                       panelId = panel.uniqueId().attr( "id" );
-                               header.attr( "aria-controls", panelId );
-                               panel.attr( "aria-labelledby", headerId );
-                       })
-                       .next()
-                               .attr( "role", "tabpanel" );
-
-               this.headers
-                       .not( this.active )
-                       .attr({
-                               "aria-selected": "false",
-                               "aria-expanded": "false",
-                               tabIndex: -1
-                       })
-                       .next()
-                               .attr({
-                                       "aria-hidden": "true"
-                               })
-                               .hide();
-
-               // make sure at least one header is in the tab order
-               if ( !this.active.length ) {
-                       this.headers.eq( 0 ).attr( "tabIndex", 0 );
-               } else {
-                       this.active.attr({
-                               "aria-selected": "true",
-                               "aria-expanded": "true",
-                               tabIndex: 0
-                       })
-                       .next()
-                               .attr({
-                                       "aria-hidden": "false"
-                               });
-               }
-
-               this._createIcons();
-
-               this._setupEvents( options.event );
-
-               if ( heightStyle === "fill" ) {
-                       maxHeight = parent.height();
-                       this.element.siblings( ":visible" ).each(function() {
-                               var elem = $( this ),
-                                       position = elem.css( "position" );
-
-                               if ( position === "absolute" || position === "fixed" ) {
-                                       return;
-                               }
-                               maxHeight -= elem.outerHeight( true );
-                       });
-
-                       this.headers.each(function() {
-                               maxHeight -= $( this ).outerHeight( true );
-                       });
-
-                       this.headers.next()
-                               .each(function() {
-                                       $( this ).height( Math.max( 0, maxHeight -
-                                               $( this ).innerHeight() + $( this ).height() ) );
-                               })
-                               .css( "overflow", "auto" );
-               } else if ( heightStyle === "auto" ) {
-                       maxHeight = 0;
-                       this.headers.next()
-                               .each(function() {
-                                       maxHeight = Math.max( maxHeight, $( this ).css( "height", "" ).height() );
-                               })
-                               .height( maxHeight );
-               }
-       },
-
-       _activate: function( index ) {
-               var active = this._findActive( index )[ 0 ];
-
-               // trying to activate the already active panel
-               if ( active === this.active[ 0 ] ) {
-                       return;
-               }
-
-               // trying to collapse, simulate a click on the currently active header
-               active = active || this.active[ 0 ];
-
-               this._eventHandler({
-                       target: active,
-                       currentTarget: active,
-                       preventDefault: $.noop
-               });
-       },
-
-       _findActive: function( selector ) {
-               return typeof selector === "number" ? this.headers.eq( selector ) : $();
-       },
-
-       _setupEvents: function( event ) {
-               var events = {
-                       keydown: "_keydown"
-               };
-               if ( event ) {
-                       $.each( event.split( " " ), function( index, eventName ) {
-                               events[ eventName ] = "_eventHandler";
-                       });
-               }
-
-               this._off( this.headers.add( this.headers.next() ) );
-               this._on( this.headers, events );
-               this._on( this.headers.next(), { keydown: "_panelKeyDown" });
-               this._hoverable( this.headers );
-               this._focusable( this.headers );
-       },
-
-       _eventHandler: function( event ) {
-               var options = this.options,
-                       active = this.active,
-                       clicked = $( event.currentTarget ),
-                       clickedIsActive = clicked[ 0 ] === active[ 0 ],
-                       collapsing = clickedIsActive && options.collapsible,
-                       toShow = collapsing ? $() : clicked.next(),
-                       toHide = active.next(),
-                       eventData = {
-                               oldHeader: active,
-                               oldPanel: toHide,
-                               newHeader: collapsing ? $() : clicked,
-                               newPanel: toShow
-                       };
-
-               event.preventDefault();
-
-               if (
-                               // click on active header, but not collapsible
-                               ( clickedIsActive && !options.collapsible ) ||
-                               // allow canceling activation
-                               ( this._trigger( "beforeActivate", event, eventData ) === false ) ) {
-                       return;
-               }
-
-               options.active = collapsing ? false : this.headers.index( clicked );
-
-               // when the call to ._toggle() comes after the class changes
-               // it causes a very odd bug in IE 8 (see #6720)
-               this.active = clickedIsActive ? $() : clicked;
-               this._toggle( eventData );
-
-               // switch classes
-               // corner classes on the previously active header stay after the animation
-               active.removeClass( "ui-accordion-header-active ui-state-active" );
-               if ( options.icons ) {
-                       active.children( ".ui-accordion-header-icon" )
-                               .removeClass( options.icons.activeHeader )
-                               .addClass( options.icons.header );
-               }
-
-               if ( !clickedIsActive ) {
-                       clicked
-                               .removeClass( "ui-corner-all" )
-                               .addClass( "ui-accordion-header-active ui-state-active ui-corner-top" );
-                       if ( options.icons ) {
-                               clicked.children( ".ui-accordion-header-icon" )
-                                       .removeClass( options.icons.header )
-                                       .addClass( options.icons.activeHeader );
-                       }
-
-                       clicked
-                               .next()
-                               .addClass( "ui-accordion-content-active" );
-               }
-       },
-
-       _toggle: function( data ) {
-               var toShow = data.newPanel,
-                       toHide = this.prevShow.length ? this.prevShow : data.oldPanel;
-
-               // handle activating a panel during the animation for another activation
-               this.prevShow.add( this.prevHide ).stop( true, true );
-               this.prevShow = toShow;
-               this.prevHide = toHide;
-
-               if ( this.options.animate ) {
-                       this._animate( toShow, toHide, data );
-               } else {
-                       toHide.hide();
-                       toShow.show();
-                       this._toggleComplete( data );
-               }
-
-               toHide.attr({
-                       "aria-hidden": "true"
-               });
-               toHide.prev().attr({
-                       "aria-selected": "false",
-                       "aria-expanded": "false"
-               });
-               // if we're switching panels, remove the old header from the tab order
-               // if we're opening from collapsed state, remove the previous header from the tab order
-               // if we're collapsing, then keep the collapsing header in the tab order
-               if ( toShow.length && toHide.length ) {
-                       toHide.prev().attr({
-                               "tabIndex": -1,
-                               "aria-expanded": "false"
-                       });
-               } else if ( toShow.length ) {
-                       this.headers.filter(function() {
-                               return parseInt( $( this ).attr( "tabIndex" ), 10 ) === 0;
-                       })
-                       .attr( "tabIndex", -1 );
-               }
-
-               toShow
-                       .attr( "aria-hidden", "false" )
-                       .prev()
-                               .attr({
-                                       "aria-selected": "true",
-                                       "aria-expanded": "true",
-                                       tabIndex: 0
-                               });
-       },
-
-       _animate: function( toShow, toHide, data ) {
-               var total, easing, duration,
-                       that = this,
-                       adjust = 0,
-                       down = toShow.length &&
-                               ( !toHide.length || ( toShow.index() < toHide.index() ) ),
-                       animate = this.options.animate || {},
-                       options = down && animate.down || animate,
-                       complete = function() {
-                               that._toggleComplete( data );
-                       };
-
-               if ( typeof options === "number" ) {
-                       duration = options;
-               }
-               if ( typeof options === "string" ) {
-                       easing = options;
-               }
-               // fall back from options to animation in case of partial down settings
-               easing = easing || options.easing || animate.easing;
-               duration = duration || options.duration || animate.duration;
-
-               if ( !toHide.length ) {
-                       return toShow.animate( this.showProps, duration, easing, complete );
-               }
-               if ( !toShow.length ) {
-                       return toHide.animate( this.hideProps, duration, easing, complete );
-               }
-
-               total = toShow.show().outerHeight();
-               toHide.animate( this.hideProps, {
-                       duration: duration,
-                       easing: easing,
-                       step: function( now, fx ) {
-                               fx.now = Math.round( now );
-                       }
-               });
-               toShow
-                       .hide()
-                       .animate( this.showProps, {
-                               duration: duration,
-                               easing: easing,
-                               complete: complete,
-                               step: function( now, fx ) {
-                                       fx.now = Math.round( now );
-                                       if ( fx.prop !== "height" ) {
-                                               adjust += fx.now;
-                                       } else if ( that.options.heightStyle !== "content" ) {
-                                               fx.now = Math.round( total - toHide.outerHeight() - adjust );
-                                               adjust = 0;
-                                       }
-                               }
-                       });
-       },
-
-       _toggleComplete: function( data ) {
-               var toHide = data.oldPanel;
-
-               toHide
-                       .removeClass( "ui-accordion-content-active" )
-                       .prev()
-                               .removeClass( "ui-corner-top" )
-                               .addClass( "ui-corner-all" );
-
-               // Work around for rendering bug in IE (#5421)
-               if ( toHide.length ) {
-                       toHide.parent()[ 0 ].className = toHide.parent()[ 0 ].className;
-               }
-               this._trigger( "activate", null, data );
-       }
-});
-
-
-/*!
- * jQuery UI Menu 1.11.3
- * http://jqueryui.com
- *
- * Copyright jQuery Foundation and other contributors
- * Released under the MIT license.
- * http://jquery.org/license
- *
- * http://api.jqueryui.com/menu/
- */
-
-
-var menu = $.widget( "ui.menu", {
-       version: "1.11.3",
-       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",
-
-               // callbacks
-               blur: null,
-               focus: null,
-               select: null
-       },
-
-       _create: function() {
-               this.activeMenu = this.element;
-
-               // Flag used to prevent firing of the click handler
-               // as the event bubbles up through nested menus
-               this.mouseHandled = false;
-               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
-                       });
-
-               if ( this.options.disabled ) {
-                       this.element
-                               .addClass( "ui-state-disabled" )
-                               .attr( "aria-disabled", "true" );
-               }
-
-               this._on({
-                       // Prevent focus from sticking to links inside menu after clicking
-                       // them (focus should always stay on UL during navigation).
-                       "mousedown .ui-menu-item": function( event ) {
-                               event.preventDefault();
-                       },
-                       "click .ui-menu-item": function( event ) {
-                               var target = $( event.target );
-                               if ( !this.mouseHandled && target.not( ".ui-state-disabled" ).length ) {
-                                       this.select( event );
-
-                                       // Only set the mouseHandled flag if the event will bubble, see #9469.
-                                       if ( !event.isPropagationStopped() ) {
-                                               this.mouseHandled = true;
-                                       }
-
-                                       // Open submenu on click
-                                       if ( target.has( ".ui-menu" ).length ) {
-                                               this.expand( event );
-                                       } else if ( !this.element.is( ":focus" ) && $( this.document[ 0 ].activeElement ).closest( ".ui-menu" ).length ) {
-
-                                               // Redirect focus to the menu
-                                               this.element.trigger( "focus", [ true ] );
-
-                                               // If the active item is on the top level, let it stay active.
-                                               // Otherwise, blur the active item since it is no longer visible.
-                                               if ( this.active && this.active.parents( ".ui-menu" ).length === 1 ) {
-                                                       clearTimeout( this.timer );
-                                               }
-                                       }
-                               }
-                       },
-                       "mouseenter .ui-menu-item": function( event ) {
-                               // Ignore mouse events while typeahead is active, see #10458.
-                               // Prevents focusing the wrong item when typeahead causes a scroll while the mouse
-                               // is over an item in the menu
-                               if ( this.previousFilter ) {
-                                       return;
-                               }
-                               var target = $( event.currentTarget );
-                               // Remove ui-state-active class from siblings of the newly focused menu item
-                               // to avoid a jump caused by adjacent elements both having a class with a border
-                               target.siblings( ".ui-state-active" ).removeClass( "ui-state-active" );
-                               this.focus( event, target );
-                       },
-                       mouseleave: "collapseAll",
-                       "mouseleave .ui-menu": "collapseAll",
-                       focus: function( event, keepActiveItem ) {
-                               // If there's already an active item, keep it active
-                               // If not, activate the first item
-                               var item = this.active || this.element.find( this.options.items ).eq( 0 );
-
-                               if ( !keepActiveItem ) {
-                                       this.focus( event, item );
-                               }
-                       },
-                       blur: function( event ) {
-                               this._delay(function() {
-                                       if ( !$.contains( this.element[0], this.document[0].activeElement ) ) {
-                                               this.collapseAll( event );
-                                       }
-                               });
-                       },
-                       keydown: "_keydown"
-               });
-
-               this.refresh();
-
-               // Clicks outside of a menu collapse any open menus
-               this._on( this.document, {
-                       click: function( event ) {
-                               if ( this._closeOnDocumentClick( event ) ) {
-                                       this.collapseAll( event );
-                               }
-
-                               // Reset the mouseHandled flag
-                               this.mouseHandled = false;
-                       }
-               });
-       },
-
-       _destroy: function() {
-               // Destroy (sub)menus
-               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();
-
-               // Destroy menu items
-               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 elem = $( this );
-                               if ( elem.data( "ui-menu-submenu-carat" ) ) {
-                                       elem.remove();
-                               }
-                       });
-
-               // Destroy menu dividers
-               this.element.find( ".ui-menu-divider" ).removeClass( "ui-menu-divider ui-widget-content" );
-       },
-
-       _keydown: function( event ) {
-               var match, prev, character, skip,
-                       preventDefault = true;
-
-               switch ( event.keyCode ) {
-               case $.ui.keyCode.PAGE_UP:
-                       this.previousPage( event );
-                       break;
-               case $.ui.keyCode.PAGE_DOWN:
-                       this.nextPage( event );
-                       break;
-               case $.ui.keyCode.HOME:
-                       this._move( "first", "first", event );
-                       break;
-               case $.ui.keyCode.END:
-                       this._move( "last", "last", event );
-                       break;
-               case $.ui.keyCode.UP:
-                       this.previous( event );
-                       break;
-               case $.ui.keyCode.DOWN:
-                       this.next( event );
-                       break;
-               case $.ui.keyCode.LEFT:
-                       this.collapse( event );
-                       break;
-               case $.ui.keyCode.RIGHT:
-                       if ( this.active && !this.active.is( ".ui-state-disabled" ) ) {
-                               this.expand( event );
-                       }
-                       break;
-               case $.ui.keyCode.ENTER:
-               case $.ui.keyCode.SPACE:
-                       this._activate( event );
-                       break;
-               case $.ui.keyCode.ESCAPE:
-                       this.collapse( event );
-                       break;
-               default:
-                       preventDefault = false;
-                       prev = this.previousFilter || "";
-                       character = String.fromCharCode( event.keyCode );
-                       skip = false;
-
-                       clearTimeout( this.filterTimer );
-
-                       if ( character === prev ) {
-                               skip = true;
-                       } else {
-                               character = prev + character;
-                       }
-
-                       match = this._filterMenuItems( character );
-                       match = skip && match.index( this.active.next() ) !== -1 ?
-                               this.active.nextAll( ".ui-menu-item" ) :
-                               match;
-
-                       // If no matches on the current filter, reset to the last character pressed
-                       // to move down the menu to the first item that starts with that character
-                       if ( !match.length ) {
-                               character = String.fromCharCode( event.keyCode );
-                               match = this._filterMenuItems( character );
-                       }
-
-                       if ( match.length ) {
-                               this.focus( event, match );
-                               this.previousFilter = character;
-                               this.filterTimer = this._delay(function() {
-                                       delete this.previousFilter;
-                               }, 1000 );
-                       } else {
-                               delete this.previousFilter;
-                       }
-               }
-
-               if ( preventDefault ) {
-                       event.preventDefault();
-               }
-       },
-
-       _activate: function( event ) {
-               if ( !this.active.is( ".ui-state-disabled" ) ) {
-                       if ( this.active.is( "[aria-haspopup='true']" ) ) {
-                               this.expand( event );
-                       } else {
-                               this.select( event );
-                       }
-               }
-       },
-
-       refresh: function() {
-               var menus, items,
-                       that = this,
-                       icon = this.options.icons.submenu,
-                       submenus = this.element.find( this.options.menus );
-
-               this.element.toggleClass( "ui-menu-icons", !!this.element.find( ".ui-icon" ).length );
-
-               // Initialize nested menus
-               submenus.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 menu = $( this ),
-                                       item = menu.parent(),
-                                       submenuCarat = $( "<span>" )
-                                               .addClass( "ui-menu-icon ui-icon " + icon )
-                                               .data( "ui-menu-submenu-carat", true );
-
-                               item
-                                       .attr( "aria-haspopup", "true" )
-                                       .prepend( submenuCarat );
-                               menu.attr( "aria-labelledby", item.attr( "id" ) );
-                       });
-
-               menus = submenus.add( this.element );
-               items = menus.find( this.options.items );
-
-               // Initialize menu-items containing spaces and/or dashes only as dividers
-               items.not( ".ui-menu-item" ).each(function() {
-                       var item = $( this );
-                       if ( that._isDivider( item ) ) {
-                               item.addClass( "ui-widget-content ui-menu-divider" );
-                       }
-               });
-
-               // Don't refresh list items that are already adapted
-               items.not( ".ui-menu-item, .ui-menu-divider" )
-                       .addClass( "ui-menu-item" )
-                       .uniqueId()
-                       .attr({
-                               tabIndex: -1,
-                               role: this._itemRole()
-                       });
-
-               // Add aria-disabled attribute to any disabled menu item
-               items.filter( ".ui-state-disabled" ).attr( "aria-disabled", "true" );
-
-               // If the active item has been removed, blur the menu
-               if ( this.active && !$.contains( this.element[ 0 ], this.active[ 0 ] ) ) {
-                       this.blur();
-               }
-       },
-
-       _itemRole: function() {
-               return {
-                       menu: "menuitem",
-                       listbox: "option"
-               }[ this.options.role ];
-       },
-
-       _setOption: function( key, value ) {
-               if ( key === "icons" ) {
-                       this.element.find( ".ui-menu-icon" )
-                               .removeClass( this.options.icons.submenu )
-                               .addClass( value.submenu );
-               }
-               if ( key === "disabled" ) {
-                       this.element
-                               .toggleClass( "ui-state-disabled", !!value )
-                               .attr( "aria-disabled", value );
-               }
-               this._super( key, value );
-       },
-
-       focus: function( event, item ) {
-               var nested, focused;
-               this.blur( event, event && event.type === "focus" );
-
-               this._scrollIntoView( item );
-
-               this.active = item.first();
-               focused = this.active.addClass( "ui-state-focus" ).removeClass( "ui-state-active" );
-               // Only update aria-activedescendant if there's a role
-               // otherwise we assume focus is managed elsewhere
-               if ( this.options.role ) {
-                       this.element.attr( "aria-activedescendant", focused.attr( "id" ) );
-               }
-
-               // Highlight active parent menu item, if any
-               this.active
-                       .parent()
-                       .closest( ".ui-menu-item" )
-                       .addClass( "ui-state-active" );
-
-               if ( event && event.type === "keydown" ) {
-                       this._close();
-               } else {
-                       this.timer = this._delay(function() {
-                               this._close();
-                       }, this.delay );
-               }
-
-               nested = item.children( ".ui-menu" );
-               if ( nested.length && event && ( /^mouse/.test( event.type ) ) ) {
-                       this._startOpening(nested);
-               }
-               this.activeMenu = item.parent();
-
-               this._trigger( "focus", event, { item: item } );
-       },
-
-       _scrollIntoView: function( item ) {
-               var borderTop, paddingTop, offset, scroll, elementHeight, itemHeight;
-               if ( this._hasScroll() ) {
-                       borderTop = parseFloat( $.css( this.activeMenu[0], "borderTopWidth" ) ) || 0;
-                       paddingTop = parseFloat( $.css( this.activeMenu[0], "paddingTop" ) ) || 0;
-                       offset = item.offset().top - this.activeMenu.offset().top - borderTop - paddingTop;
-                       scroll = this.activeMenu.scrollTop();
-                       elementHeight = this.activeMenu.height();
-                       itemHeight = item.outerHeight();
-
-                       if ( offset < 0 ) {
-                               this.activeMenu.scrollTop( scroll + offset );
-                       } else if ( offset + itemHeight > elementHeight ) {
-                               this.activeMenu.scrollTop( scroll + offset - elementHeight + itemHeight );
-                       }
-               }
-       },
-
-       blur: function( event, fromFocus ) {
-               if ( !fromFocus ) {
-                       clearTimeout( this.timer );
-               }
-
-               if ( !this.active ) {
-                       return;
-               }
-
-               this.active.removeClass( "ui-state-focus" );
-               this.active = null;
-
-               this._trigger( "blur", event, { item: this.active } );
-       },
-
-       _startOpening: function( submenu ) {
-               clearTimeout( this.timer );
-
-               // Don't open if already open fixes a Firefox bug that caused a .5 pixel
-               // shift in the submenu position when mousing over the carat icon
-               if ( submenu.attr( "aria-hidden" ) !== "true" ) {
-                       return;
-               }
-
-               this.timer = this._delay(function() {
-                       this._close();
-                       this._open( submenu );
-               }, this.delay );
-       },
-
-       _open: function( submenu ) {
-               var position = $.extend({
-                       of: this.active
-               }, this.options.position );
-
-               clearTimeout( this.timer );
-               this.element.find( ".ui-menu" ).not( submenu.parents( ".ui-menu" ) )
-                       .hide()
-                       .attr( "aria-hidden", "true" );
-
-               submenu
-                       .show()
-                       .removeAttr( "aria-hidden" )
-                       .attr( "aria-expanded", "true" )
-                       .position( position );
-       },
-
-       collapseAll: function( event, all ) {
-               clearTimeout( this.timer );
-               this.timer = this._delay(function() {
-                       // If we were passed an event, look for the submenu that contains the event
-                       var currentMenu = all ? this.element :
-                               $( event && event.target ).closest( this.element.find( ".ui-menu" ) );
-
-                       // If we found no valid submenu ancestor, use the main menu to close all sub menus anyway
-                       if ( !currentMenu.length ) {
-                               currentMenu = this.element;
-                       }
-
-                       this._close( currentMenu );
-
-                       this.blur( event );
-                       this.activeMenu = currentMenu;
-               }, this.delay );
-       },
-
-       // With no arguments, closes the currently active menu - if nothing is active
-       // it closes all menus.  If passed an argument, it will search for menus BELOW
-       _close: function( startMenu ) {
-               if ( !startMenu ) {
-                       startMenu = this.active ? this.active.parent() : this.element;
-               }
-
-               startMenu
-                       .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( event ) {
-               return !$( event.target ).closest( ".ui-menu" ).length;
-       },
-
-       _isDivider: function( item ) {
-
-               // Match hyphen, em dash, en dash
-               return !/[^\-\u2014\u2013\s]/.test( item.text() );
-       },
-
-       collapse: function( event ) {
-               var newItem = this.active &&
-                       this.active.parent().closest( ".ui-menu-item", this.element );
-               if ( newItem && newItem.length ) {
-                       this._close();
-                       this.focus( event, newItem );
-               }
-       },
-
-       expand: function( event ) {
-               var newItem = this.active &&
-                       this.active
-                               .children( ".ui-menu " )
-                               .find( this.options.items )
-                               .first();
-
-               if ( newItem && newItem.length ) {
-                       this._open( newItem.parent() );
-
-                       // Delay so Firefox will not hide activedescendant change in expanding submenu from AT
-                       this._delay(function() {
-                               this.focus( event, newItem );
-                       });
-               }
-       },
-
-       next: function( event ) {
-               this._move( "next", "first", event );
-       },
-
-       previous: function( event ) {
-               this._move( "prev", "last", event );
-       },
-
-       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( direction, filter, event ) {
-               var next;
-               if ( this.active ) {
-                       if ( direction === "first" || direction === "last" ) {
-                               next = this.active
-                                       [ direction === "first" ? "prevAll" : "nextAll" ]( ".ui-menu-item" )
-                                       .eq( -1 );
-                       } else {
-                               next = this.active
-                                       [ direction + "All" ]( ".ui-menu-item" )
-                                       .eq( 0 );
-                       }
-               }
-               if ( !next || !next.length || !this.active ) {
-                       next = this.activeMenu.find( this.options.items )[ filter ]();
-               }
-
-               this.focus( event, next );
-       },
-
-       nextPage: function( event ) {
-               var item, base, height;
-
-               if ( !this.active ) {
-                       this.next( event );
-                       return;
-               }
-               if ( this.isLastItem() ) {
-                       return;
-               }
-               if ( this._hasScroll() ) {
-                       base = this.active.offset().top;
-                       height = this.element.height();
-                       this.active.nextAll( ".ui-menu-item" ).each(function() {
-                               item = $( this );
-                               return item.offset().top - base - height < 0;
-                       });
-
-                       this.focus( event, item );
-               } else {
-                       this.focus( event, this.activeMenu.find( this.options.items )
-                               [ !this.active ? "first" : "last" ]() );
-               }
-       },
-
-       previousPage: function( event ) {
-               var item, base, height;
-               if ( !this.active ) {
-                       this.next( event );
-                       return;
-               }
-               if ( this.isFirstItem() ) {
-                       return;
-               }
-               if ( this._hasScroll() ) {
-                       base = this.active.offset().top;
-                       height = this.element.height();
-                       this.active.prevAll( ".ui-menu-item" ).each(function() {
-                               item = $( this );
-                               return item.offset().top - base + height > 0;
-                       });
-
-                       this.focus( event, item );
-               } else {
-                       this.focus( event, this.activeMenu.find( this.options.items ).first() );
-               }
-       },
-
-       _hasScroll: function() {
-               return this.element.outerHeight() < this.element.prop( "scrollHeight" );
-       },
-
-       select: function( event ) {
-               // TODO: It should never be possible to not have an active item at this
-               // point, but the tests don't trigger mouseenter before click.
-               this.active = this.active || $( event.target ).closest( ".ui-menu-item" );
-               var ui = { item: this.active };
-               if ( !this.active.has( ".ui-menu" ).length ) {
-                       this.collapseAll( event, true );
-               }
-               this._trigger( "select", event, ui );
-       },
-
-       _filterMenuItems: function(character) {
-               var escapedCharacter = character.replace( /[\-\[\]{}()*+?.,\\\^$|#\s]/g, "\\$&" ),
-                       regex = new RegExp( "^" + escapedCharacter, "i" );
-
-               return this.activeMenu
-                       .find( this.options.items )
-
-                       // Only match on items, not dividers or other content (#10571)
-                       .filter( ".ui-menu-item" )
-                       .filter(function() {
-                               return regex.test( $.trim( $( this ).text() ) );
-                       });
-       }
-});
-
-
-/*!
- * jQuery UI Autocomplete 1.11.3
- * http://jqueryui.com
- *
- * Copyright jQuery Foundation and other contributors
- * Released under the MIT license.
- * http://jquery.org/license
- *
- * http://api.jqueryui.com/autocomplete/
- */
-
-
-$.widget( "ui.autocomplete", {
-       version: "1.11.3",
-       defaultElement: "<input>",
-       options: {
-               appendTo: null,
-               autoFocus: false,
-               delay: 300,
-               minLength: 1,
-               position: {
-                       my: "left top",
-                       at: "left bottom",
-                       collision: "none"
-               },
-               source: null,
-
-               // callbacks
-               change: null,
-               close: null,
-               focus: null,
-               open: null,
-               response: null,
-               search: null,
-               select: null
-       },
-
-       requestIndex: 0,
-       pending: 0,
-
-       _create: function() {
-               // Some browsers only repeat keydown events, not keypress events,
-               // so we use the suppressKeyPress flag to determine if we've already
-               // handled the keydown event. #7269
-               // Unfortunately the code for & in keypress is the same as the up arrow,
-               // so we use the suppressKeyPressRepeat flag to avoid handling keypress
-               // events when we know the keydown event was used to modify the
-               // search term. #7799
-               var suppressKeyPress, suppressKeyPressRepeat, suppressInput,
-                       nodeName = this.element[ 0 ].nodeName.toLowerCase(),
-                       isTextarea = nodeName === "textarea",
-                       isInput = nodeName === "input";
-
-               this.isMultiLine =
-                       // Textareas are always multi-line
-                       isTextarea ? true :
-                       // Inputs are always single-line, even if inside a contentEditable element
-                       // IE also treats inputs as contentEditable
-                       isInput ? false :
-                       // All other element types are determined by whether or not they're contentEditable
-                       this.element.prop( "isContentEditable" );
-
-               this.valueMethod = this.element[ isTextarea || isInput ? "val" : "text" ];
-               this.isNewMenu = true;
-
-               this.element
-                       .addClass( "ui-autocomplete-input" )
-                       .attr( "autocomplete", "off" );
-
-               this._on( this.element, {
-                       keydown: function( event ) {
-                               if ( this.element.prop( "readOnly" ) ) {
-                                       suppressKeyPress = true;
-                                       suppressInput = true;
-                                       suppressKeyPressRepeat = true;
-                                       return;
-                               }
-
-                               suppressKeyPress = false;
-                               suppressInput = false;
-                               suppressKeyPressRepeat = false;
-                               var keyCode = $.ui.keyCode;
-                               switch ( event.keyCode ) {
-                               case keyCode.PAGE_UP:
-                                       suppressKeyPress = true;
-                                       this._move( "previousPage", event );
-                                       break;
-                               case keyCode.PAGE_DOWN:
-                                       suppressKeyPress = true;
-                                       this._move( "nextPage", event );
-                                       break;
-                               case keyCode.UP:
-                                       suppressKeyPress = true;
-                                       this._keyEvent( "previous", event );
-                                       break;
-                               case keyCode.DOWN:
-                                       suppressKeyPress = true;
-                                       this._keyEvent( "next", event );
-                                       break;
-                               case keyCode.ENTER:
-                                       // when menu is open and has focus
-                                       if ( this.menu.active ) {
-                                               // #6055 - Opera still allows the keypress to occur
-                                               // which causes forms to submit
-                                               suppressKeyPress = true;
-                                               event.preventDefault();
-                                               this.menu.select( event );
-                                       }
-                                       break;
-                               case keyCode.TAB:
-                                       if ( this.menu.active ) {
-                                               this.menu.select( event );
-                                       }
-                                       break;
-                               case keyCode.ESCAPE:
-                                       if ( this.menu.element.is( ":visible" ) ) {
-                                               if ( !this.isMultiLine ) {
-                                                       this._value( this.term );
-                                               }
-                                               this.close( event );
-                                               // Different browsers have different default behavior for escape
-                                               // Single press can mean undo or clear
-                                               // Double press in IE means clear the whole form
-                                               event.preventDefault();
-                                       }
-                                       break;
-                               default:
-                                       suppressKeyPressRepeat = true;
-                                       // search timeout should be triggered before the input value is changed
-                                       this._searchTimeout( event );
-                                       break;
-                               }
-                       },
-                       keypress: function( event ) {
-                               if ( suppressKeyPress ) {
-                                       suppressKeyPress = false;
-                                       if ( !this.isMultiLine || this.menu.element.is( ":visible" ) ) {
-                                               event.preventDefault();
-                                       }
-                                       return;
-                               }
-                               if ( suppressKeyPressRepeat ) {
-                                       return;
-                               }
-
-                               // replicate some key handlers to allow them to repeat in Firefox and Opera
-                               var keyCode = $.ui.keyCode;
-                               switch ( event.keyCode ) {
-                               case keyCode.PAGE_UP:
-                                       this._move( "previousPage", event );
-                                       break;
-                               case keyCode.PAGE_DOWN:
-                                       this._move( "nextPage", event );
-                                       break;
-                               case keyCode.UP:
-                                       this._keyEvent( "previous", event );
-                                       break;
-                               case keyCode.DOWN:
-                                       this._keyEvent( "next", event );
-                                       break;
-                               }
-                       },
-                       input: function( event ) {
-                               if ( suppressInput ) {
-                                       suppressInput = false;
-                                       event.preventDefault();
-                                       return;
-                               }
-                               this._searchTimeout( event );
-                       },
-                       focus: function() {
-                               this.selectedItem = null;
-                               this.previous = this._value();
-                       },
-                       blur: function( event ) {
-                               if ( this.cancelBlur ) {
-                                       delete this.cancelBlur;
-                                       return;
-                               }
-
-                               clearTimeout( this.searching );
-                               this.close( event );
-                               this._change( event );
-                       }
-               });
-
-               this._initSource();
-               this.menu = $( "<ul>" )
-                       .addClass( "ui-autocomplete ui-front" )
-                       .appendTo( this._appendTo() )
-                       .menu({
-                               // disable ARIA support, the live region takes care of that
-                               role: null
-                       })
-                       .hide()
-                       .menu( "instance" );
-
-               this._on( this.menu.element, {
-                       mousedown: function( event ) {
-                               // prevent moving focus out of the text field
-                               event.preventDefault();
-
-                               // IE doesn't prevent moving focus even with event.preventDefault()
-                               // so we set a flag to know when we should ignore the blur event
-                               this.cancelBlur = true;
-                               this._delay(function() {
-                                       delete this.cancelBlur;
-                               });
-
-                               // clicking on the scrollbar causes focus to shift to the body
-                               // but we can't detect a mouseup or a click immediately afterward
-                               // so we have to track the next mousedown and close the menu if
-                               // the user clicks somewhere outside of the autocomplete
-                               var menuElement = this.menu.element[ 0 ];
-                               if ( !$( event.target ).closest( ".ui-menu-item" ).length ) {
-                                       this._delay(function() {
-                                               var that = this;
-                                               this.document.one( "mousedown", function( event ) {
-                                                       if ( event.target !== that.element[ 0 ] &&
-                                                                       event.target !== menuElement &&
-                                                                       !$.contains( menuElement, event.target ) ) {
-                                                               that.close();
-                                                       }
-                                               });
-                                       });
-                               }
-                       },
-                       menufocus: function( event, ui ) {
-                               var label, item;
-                               // support: Firefox
-                               // Prevent accidental activation of menu items in Firefox (#7024 #9118)
-                               if ( this.isNewMenu ) {
-                                       this.isNewMenu = false;
-                                       if ( event.originalEvent && /^mouse/.test( event.originalEvent.type ) ) {
-                                               this.menu.blur();
-
-                                               this.document.one( "mousemove", function() {
-                                                       $( event.target ).trigger( event.originalEvent );
-                                               });
-
-                                               return;
-                                       }
-                               }
-
-                               item = ui.item.data( "ui-autocomplete-item" );
-                               if ( false !== this._trigger( "focus", event, { item: item } ) ) {
-                                       // use value to match what will end up in the input, if it was a key event
-                                       if ( event.originalEvent && /^key/.test( event.originalEvent.type ) ) {
-                                               this._value( item.value );
-                                       }
-                               }
-
-                               // Announce the value in the liveRegion
-                               label = ui.item.attr( "aria-label" ) || item.value;
-                               if ( label && $.trim( label ).length ) {
-                                       this.liveRegion.children().hide();
-                                       $( "<div>" ).text( label ).appendTo( this.liveRegion );
-                               }
-                       },
-                       menuselect: function( event, ui ) {
-                               var item = ui.item.data( "ui-autocomplete-item" ),
-                                       previous = this.previous;
-
-                               // only trigger when focus was lost (click on menu)
-                               if ( this.element[ 0 ] !== this.document[ 0 ].activeElement ) {
-                                       this.element.focus();
-                                       this.previous = previous;
-                                       // #6109 - IE triggers two focus events and the second
-                                       // is asynchronous, so we need to reset the previous
-                                       // term synchronously and asynchronously :-(
-                                       this._delay(function() {
-                                               this.previous = previous;
-                                               this.selectedItem = item;
-                                       });
-                               }
-
-                               if ( false !== this._trigger( "select", event, { item: item } ) ) {
-                                       this._value( item.value );
-                               }
-                               // reset the term after the select event
-                               // this allows custom select handling to work properly
-                               this.term = this._value();
-
-                               this.close( event );
-                               this.selectedItem = item;
-                       }
-               });
-
-               this.liveRegion = $( "<span>", {
-                               role: "status",
-                               "aria-live": "assertive",
-                               "aria-relevant": "additions"
-                       })
-                       .addClass( "ui-helper-hidden-accessible" )
-                       .appendTo( this.document[ 0 ].body );
-
-               // turning off autocomplete prevents the browser from remembering the
-               // value when navigating through history, so we re-enable autocomplete
-               // if the page is unloaded before the widget is destroyed. #7790
-               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( key, value ) {
-               this._super( key, value );
-               if ( key === "source" ) {
-                       this._initSource();
-               }
-               if ( key === "appendTo" ) {
-                       this.menu.element.appendTo( this._appendTo() );
-               }
-               if ( key === "disabled" && value && this.xhr ) {
-                       this.xhr.abort();
-               }
-       },
-
-       _appendTo: function() {
-               var element = this.options.appendTo;
-
-               if ( element ) {
-                       element = element.jquery || element.nodeType ?
-                               $( element ) :
-                               this.document.find( element ).eq( 0 );
-               }
-
-               if ( !element || !element[ 0 ] ) {
-                       element = this.element.closest( ".ui-front" );
-               }
-
-               if ( !element.length ) {
-                       element = this.document[ 0 ].body;
-               }
-
-               return element;
-       },
-
-       _initSource: function() {
-               var array, url,
-                       that = this;
-               if ( $.isArray( this.options.source ) ) {
-                       array = this.options.source;
-                       this.source = function( request, response ) {
-                               response( $.ui.autocomplete.filter( array, request.term ) );
-                       };
-               } else if ( typeof this.options.source === "string" ) {
-                       url = this.options.source;
-                       this.source = function( request, response ) {
-                               if ( that.xhr ) {
-                                       that.xhr.abort();
-                               }
-                               that.xhr = $.ajax({
-                                       url: url,
-                                       data: request,
-                                       dataType: "json",
-                                       success: function( data ) {
-                                               response( data );
-                                       },
-                                       error: function() {
-                                               response([]);
-                                       }
-                               });
-                       };
-               } else {
-                       this.source = this.options.source;
-               }
-       },
-
-       _searchTimeout: function( event ) {
-               clearTimeout( this.searching );
-               this.searching = this._delay(function() {
-
-                       // Search if the value has changed, or if the user retypes the same value (see #7434)
-                       var equalValues = this.term === this._value(),
-                               menuVisible = this.menu.element.is( ":visible" ),
-                               modifierKey = event.altKey || event.ctrlKey || event.metaKey || event.shiftKey;
-
-                       if ( !equalValues || ( equalValues && !menuVisible && !modifierKey ) ) {
-                               this.selectedItem = null;
-                               this.search( null, event );
-                       }
-               }, this.options.delay );
-       },
-
-       search: function( value, event ) {
-               value = value != null ? value : this._value();
-
-               // always save the actual value, not the one passed as an argument
-               this.term = this._value();
-
-               if ( value.length < this.options.minLength ) {
-                       return this.close( event );
-               }
-
-               if ( this._trigger( "search", event ) === false ) {
-                       return;
-               }
-
-               return this._search( value );
-       },
-
-       _search: function( value ) {
-               this.pending++;
-               this.element.addClass( "ui-autocomplete-loading" );
-               this.cancelSearch = false;
-
-               this.source( { term: value }, this._response() );
-       },
-
-       _response: function() {
-               var index = ++this.requestIndex;
-
-               return $.proxy(function( content ) {
-                       if ( index === this.requestIndex ) {
-                               this.__response( content );
-                       }
-
-                       this.pending--;
-                       if ( !this.pending ) {
-                               this.element.removeClass( "ui-autocomplete-loading" );
-                       }
-               }, this );
-       },
-
-       __response: function( content ) {
-               if ( content ) {
-                       content = this._normalize( content );
-               }
-               this._trigger( "response", null, { content: content } );
-               if ( !this.options.disabled && content && content.length && !this.cancelSearch ) {
-                       this._suggest( content );
-                       this._trigger( "open" );
-               } else {
-                       // use ._close() instead of .close() so we don't cancel future searches
-                       this._close();
-               }
-       },
-
-       close: function( event ) {
-               this.cancelSearch = true;
-               this._close( event );
-       },
-
-       _close: function( event ) {
-               if ( this.menu.element.is( ":visible" ) ) {
-                       this.menu.element.hide();
-                       this.menu.blur();
-                       this.isNewMenu = true;
-                       this._trigger( "close", event );
-               }
-       },
-
-       _change: function( event ) {
-               if ( this.previous !== this._value() ) {
-                       this._trigger( "change", event, { item: this.selectedItem } );
-               }
-       },
-
-       _normalize: function( items ) {
-               // assume all items have the right format when the first item is complete
-               if ( items.length && items[ 0 ].label && items[ 0 ].value ) {
-                       return items;
-               }
-               return $.map( items, function( item ) {
-                       if ( typeof item === "string" ) {
-                               return {
-                                       label: item,
-                                       value: item
-                               };
-                       }
-                       return $.extend( {}, item, {
-                               label: item.label || item.value,
-                               value: item.value || item.label
-                       });
-               });
-       },
-
-       _suggest: function( items ) {
-               var ul = this.menu.element.empty();
-               this._renderMenu( ul, items );
-               this.isNewMenu = true;
-               this.menu.refresh();
-
-               // size and position menu
-               ul.show();
-               this._resizeMenu();
-               ul.position( $.extend({
-                       of: this.element
-               }, this.options.position ) );
-
-               if ( this.options.autoFocus ) {
-                       this.menu.next();
-               }
-       },
-
-       _resizeMenu: function() {
-               var ul = this.menu.element;
-               ul.outerWidth( Math.max(
-                       // Firefox wraps long text (possibly a rounding bug)
-                       // so we add 1px to avoid the wrapping (#7513)
-                       ul.width( "" ).outerWidth() + 1,
-                       this.element.outerWidth()
-               ) );
-       },
-
-       _renderMenu: function( ul, items ) {
-               var that = this;
-               $.each( items, function( index, item ) {
-                       that._renderItemData( ul, item );
-               });
-       },
-
-       _renderItemData: function( ul, item ) {
-               return this._renderItem( ul, item ).data( "ui-autocomplete-item", item );
-       },
-
-       _renderItem: function( ul, item ) {
-               return $( "<li>" ).text( item.label ).appendTo( ul );
-       },
-
-       _move: function( direction, event ) {
-               if ( !this.menu.element.is( ":visible" ) ) {
-                       this.search( null, event );
-                       return;
-               }
-               if ( this.menu.isFirstItem() && /^previous/.test( direction ) ||
-                               this.menu.isLastItem() && /^next/.test( direction ) ) {
-
-                       if ( !this.isMultiLine ) {
-                               this._value( this.term );
-                       }
-
-                       this.menu.blur();
-                       return;
-               }
-               this.menu[ direction ]( event );
-       },
-
-       widget: function() {
-               return this.menu.element;
-       },
-
-       _value: function() {
-               return this.valueMethod.apply( this.element, arguments );
-       },
-
-       _keyEvent: function( keyEvent, event ) {
-               if ( !this.isMultiLine || this.menu.element.is( ":visible" ) ) {
-                       this._move( keyEvent, event );
-
-                       // prevents moving cursor to beginning/end of the text field in some browsers
-                       event.preventDefault();
-               }
-       }
-});
-
-$.extend( $.ui.autocomplete, {
-       escapeRegex: function( value ) {
-               return value.replace( /[\-\[\]{}()*+?.,\\\^$|#\s]/g, "\\$&" );
-       },
-       filter: function( array, term ) {
-               var matcher = new RegExp( $.ui.autocomplete.escapeRegex( term ), "i" );
-               return $.grep( array, function( value ) {
-                       return matcher.test( value.label || value.value || value );
-               });
-       }
-});
-
-// live region extension, adding a `messages` option
-// NOTE: This is an experimental API. We are still investigating
-// a full solution for string manipulation and internationalization.
-$.widget( "ui.autocomplete", $.ui.autocomplete, {
-       options: {
-               messages: {
-                       noResults: "No search results.",
-                       results: function( amount ) {
-                               return amount + ( amount > 1 ? " results are" : " result is" ) +
-                                       " available, use up and down arrow keys to navigate.";
-                       }
-               }
-       },
-
-       __response: function( content ) {
-               var message;
-               this._superApply( arguments );
-               if ( this.options.disabled || this.cancelSearch ) {
-                       return;
-               }
-               if ( content && content.length ) {
-                       message = this.options.messages.results( content.length );
-               } else {
-                       message = this.options.messages.noResults;
-               }
-               this.liveRegion.children().hide();
-               $( "<div>" ).text( message ).appendTo( this.liveRegion );
-       }
-});
-
-var autocomplete = $.ui.autocomplete;
-
-
-/*!
- * jQuery UI Button 1.11.3
- * http://jqueryui.com
- *
- * Copyright jQuery Foundation and other contributors
- * Released under the MIT license.
- * http://jquery.org/license
- *
- * http://api.jqueryui.com/button/
- */
-
-
-var lastActive,
-       baseClasses = "ui-button ui-widget ui-state-default ui-corner-all",
-       typeClasses = "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",
-       formResetHandler = function() {
-               var form = $( this );
-               setTimeout(function() {
-                       form.find( ":ui-button" ).button( "refresh" );
-               }, 1 );
-       },
-       radioGroup = function( radio ) {
-               var name = radio.name,
-                       form = radio.form,
-                       radios = $( [] );
-               if ( name ) {
-                       name = name.replace( /'/g, "\\'" );
-                       if ( form ) {
-                               radios = $( form ).find( "[name='" + name + "'][type=radio]" );
-                       } else {
-                               radios = $( "[name='" + name + "'][type=radio]", radio.ownerDocument )
-                                       .filter(function() {
-                                               return !this.form;
-                                       });
-                       }
-               }
-               return radios;
-       };
-
-$.widget( "ui.button", {
-       version: "1.11.3",
-       defaultElement: "<button>",
-       options: {
-               disabled: null,
-               text: true,
-               label: null,
-               icons: {
-                       primary: null,
-                       secondary: null
-               }
-       },
-       _create: function() {
-               this.element.closest( "form" )
-                       .unbind( "reset" + this.eventNamespace )
-                       .bind( "reset" + this.eventNamespace, formResetHandler );
-
-               if ( typeof this.options.disabled !== "boolean" ) {
-                       this.options.disabled = !!this.element.prop( "disabled" );
-               } else {
-                       this.element.prop( "disabled", this.options.disabled );
-               }
-
-               this._determineButtonType();
-               this.hasTitle = !!this.buttonElement.attr( "title" );
-
-               var that = this,
-                       options = this.options,
-                       toggleButton = this.type === "checkbox" || this.type === "radio",
-                       activeClass = !toggleButton ? "ui-state-active" : "";
-
-               if ( options.label === null ) {
-                       options.label = (this.type === "input" ? this.buttonElement.val() : this.buttonElement.html());
-               }
-
-               this._hoverable( this.buttonElement );
-
-               this.buttonElement
-                       .addClass( baseClasses )
-                       .attr( "role", "button" )
-                       .bind( "mouseenter" + this.eventNamespace, function() {
-                               if ( options.disabled ) {
-                                       return;
-                               }
-                               if ( this === lastActive ) {
-                                       $( this ).addClass( "ui-state-active" );
-                               }
-                       })
-                       .bind( "mouseleave" + this.eventNamespace, function() {
-                               if ( options.disabled ) {
-                                       return;
-                               }
-                               $( this ).removeClass( activeClass );
-                       })
-                       .bind( "click" + this.eventNamespace, function( event ) {
-                               if ( options.disabled ) {
-                                       event.preventDefault();
-                                       event.stopImmediatePropagation();
-                               }
-                       });
-
-               // Can't use _focusable() because the element that receives focus
-               // and the element that gets the ui-state-focus class are different
-               this._on({
-                       focus: function() {
-                               this.buttonElement.addClass( "ui-state-focus" );
-                       },
-                       blur: function() {
-                               this.buttonElement.removeClass( "ui-state-focus" );
-                       }
-               });
-
-               if ( toggleButton ) {
-                       this.element.bind( "change" + this.eventNamespace, function() {
-                               that.refresh();
-                       });
-               }
-
-               if ( this.type === "checkbox" ) {
-                       this.buttonElement.bind( "click" + this.eventNamespace, function() {
-                               if ( options.disabled ) {
-                                       return false;
-                               }
-                       });
-               } else if ( this.type === "radio" ) {
-                       this.buttonElement.bind( "click" + this.eventNamespace, function() {
-                               if ( options.disabled ) {
-                                       return false;
-                               }
-                               $( this ).addClass( "ui-state-active" );
-                               that.buttonElement.attr( "aria-pressed", "true" );
-
-                               var radio = that.element[ 0 ];
-                               radioGroup( radio )
-                                       .not( radio )
-                                       .map(function() {
-                                               return $( this ).button( "widget" )[ 0 ];
-                                       })
-                                       .removeClass( "ui-state-active" )
-                                       .attr( "aria-pressed", "false" );
-                       });
-               } else {
-                       this.buttonElement
-                               .bind( "mousedown" + this.eventNamespace, function() {
-                                       if ( options.disabled ) {
-                                               return false;
-                                       }
-                                       $( this ).addClass( "ui-state-active" );
-                                       lastActive = this;
-                                       that.document.one( "mouseup", function() {
-                                               lastActive = null;
-                                       });
-                               })
-                               .bind( "mouseup" + this.eventNamespace, function() {
-                                       if ( options.disabled ) {
-                                               return false;
-                                       }
-                                       $( this ).removeClass( "ui-state-active" );
-                               })
-                               .bind( "keydown" + this.eventNamespace, function(event) {
-                                       if ( options.disabled ) {
-                                               return false;
-                                       }
-                                       if ( event.keyCode === $.ui.keyCode.SPACE || event.keyCode === $.ui.keyCode.ENTER ) {
-                                               $( this ).addClass( "ui-state-active" );
-                                       }
-                               })
-                               // see #8559, we bind to blur here in case the button element loses
-                               // focus between keydown and keyup, it would be left in an "active" state
-                               .bind( "keyup" + this.eventNamespace + " blur" + this.eventNamespace, function() {
-                                       $( this ).removeClass( "ui-state-active" );
-                               });
-
-                       if ( this.buttonElement.is("a") ) {
-                               this.buttonElement.keyup(function(event) {
-                                       if ( event.keyCode === $.ui.keyCode.SPACE ) {
-                                               // TODO pass through original event correctly (just as 2nd argument doesn't work)
-                                               $( this ).click();
-                                       }
-                               });
-                       }
-               }
-
-               this._setOption( "disabled", options.disabled );
-               this._resetButton();
-       },
-
-       _determineButtonType: function() {
-               var ancestor, labelSelector, checked;
-
-               if ( this.element.is("[type=checkbox]") ) {
-                       this.type = "checkbox";
-               } else if ( this.element.is("[type=radio]") ) {
-                       this.type = "radio";
-               } else if ( this.element.is("input") ) {
-                       this.type = "input";
-               } else {
-                       this.type = "button";
-               }
-
-               if ( this.type === "checkbox" || this.type === "radio" ) {
-                       // we don't search against the document in case the element
-                       // is disconnected from the DOM
-                       ancestor = this.element.parents().last();
-                       labelSelector = "label[for='" + this.element.attr("id") + "']";
-                       this.buttonElement = ancestor.find( labelSelector );
-                       if ( !this.buttonElement.length ) {
-                               ancestor = ancestor.length ? ancestor.siblings() : this.element.siblings();
-                               this.buttonElement = ancestor.filter( labelSelector );
-                               if ( !this.buttonElement.length ) {
-                                       this.buttonElement = ancestor.find( labelSelector );
-                               }
-                       }
-                       this.element.addClass( "ui-helper-hidden-accessible" );
-
-                       checked = this.element.is( ":checked" );
-                       if ( checked ) {
-                               this.buttonElement.addClass( "ui-state-active" );
-                       }
-                       this.buttonElement.prop( "aria-pressed", checked );
-               } else {
-                       this.buttonElement = this.element;
-               }
-       },
-
-       widget: function() {
-               return this.buttonElement;
-       },
-
-       _destroy: function() {
-               this.element
-                       .removeClass( "ui-helper-hidden-accessible" );
-               this.buttonElement
-                       .removeClass( baseClasses + " ui-state-active " + typeClasses )
-                       .removeAttr( "role" )
-                       .removeAttr( "aria-pressed" )
-                       .html( this.buttonElement.find(".ui-button-text").html() );
-
-               if ( !this.hasTitle ) {
-                       this.buttonElement.removeAttr( "title" );
-               }
-       },
-
-       _setOption: function( key, value ) {
-               this._super( key, value );
-               if ( key === "disabled" ) {
-                       this.widget().toggleClass( "ui-state-disabled", !!value );
-                       this.element.prop( "disabled", !!value );
-                       if ( value ) {
-                               if ( this.type === "checkbox" || this.type === "radio" ) {
-                                       this.buttonElement.removeClass( "ui-state-focus" );
-                               } else {
-                                       this.buttonElement.removeClass( "ui-state-focus ui-state-active" );
-                               }
-                       }
-                       return;
-               }
-               this._resetButton();
-       },
-
-       refresh: function() {
-               //See #8237 & #8828
-               var isDisabled = this.element.is( "input, button" ) ? this.element.is( ":disabled" ) : this.element.hasClass( "ui-button-disabled" );
-
-               if ( isDisabled !== this.options.disabled ) {
-                       this._setOption( "disabled", isDisabled );
-               }
-               if ( this.type === "radio" ) {
-                       radioGroup( this.element[0] ).each(function() {
-                               if ( $( this ).is( ":checked" ) ) {
-                                       $( this ).button( "widget" )
-                                               .addClass( "ui-state-active" )
-                                               .attr( "aria-pressed", "true" );
-                               } else {
-                                       $( this ).button( "widget" )
-                                               .removeClass( "ui-state-active" )
-                                               .attr( "aria-pressed", "false" );
-                               }
-                       });
-               } else if ( this.type === "checkbox" ) {
-                       if ( this.element.is( ":checked" ) ) {
-                               this.buttonElement
-                                       .addClass( "ui-state-active" )
-                                       .attr( "aria-pressed", "true" );
-                       } else {
-                               this.buttonElement
-                                       .removeClass( "ui-state-active" )
-                                       .attr( "aria-pressed", "false" );
-                       }
-               }
-       },
-
-       _resetButton: function() {
-               if ( this.type === "input" ) {
-                       if ( this.options.label ) {
-                               this.element.val( this.options.label );
-                       }
-                       return;
-               }
-               var buttonElement = this.buttonElement.removeClass( typeClasses ),
-                       buttonText = $( "<span></span>", this.document[0] )
-                               .addClass( "ui-button-text" )
-                               .html( this.options.label )
-                               .appendTo( buttonElement.empty() )
-                               .text(),
-                       icons = this.options.icons,
-                       multipleIcons = icons.primary && icons.secondary,
-                       buttonClasses = [];
-
-               if ( icons.primary || icons.secondary ) {
-                       if ( this.options.text ) {
-                               buttonClasses.push( "ui-button-text-icon" + ( multipleIcons ? "s" : ( icons.primary ? "-primary" : "-secondary" ) ) );
-                       }
-
-                       if ( icons.primary ) {
-                               buttonElement.prepend( "<span class='ui-button-icon-primary ui-icon " + icons.primary + "'></span>" );
-                       }
-
-                       if ( icons.secondary ) {
-                               buttonElement.append( "<span class='ui-button-icon-secondary ui-icon " + icons.secondary + "'></span>" );
-                       }
-
-                       if ( !this.options.text ) {
-                               buttonClasses.push( multipleIcons ? "ui-button-icons-only" : "ui-button-icon-only" );
-
-                               if ( !this.hasTitle ) {
-                                       buttonElement.attr( "title", $.trim( buttonText ) );
-                               }
-                       }
-               } else {
-                       buttonClasses.push( "ui-button-text-only" );
-               }
-               buttonElement.addClass( buttonClasses.join( " " ) );
-       }
-});
-
-$.widget( "ui.buttonset", {
-       version: "1.11.3",
-       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( key, value ) {
-               if ( key === "disabled" ) {
-                       this.buttons.button( "option", key, value );
-               }
-
-               this._super( key, value );
-       },
-
-       refresh: function() {
-               var rtl = this.element.css( "direction" ) === "rtl",
-                       allButtons = this.element.find( this.options.items ),
-                       existingButtons = allButtons.filter( ":ui-button" );
-
-               // Initialize new buttons
-               allButtons.not( ":ui-button" ).button();
-
-               // Refresh existing buttons
-               existingButtons.button( "refresh" );
-
-               this.buttons = allButtons
-                       .map(function() {
-                               return $( this ).button( "widget" )[ 0 ];
-                       })
-                               .removeClass( "ui-corner-all ui-corner-left ui-corner-right" )
-                               .filter( ":first" )
-                                       .addClass( rtl ? "ui-corner-right" : "ui-corner-left" )
-                               .end()
-                               .filter( ":last" )
-                                       .addClass( rtl ? "ui-corner-left" : "ui-corner-right" )
-                               .end()
-                       .end();
-       },
-
-       _destroy: function() {
-               this.element.removeClass( "ui-buttonset" );
-               this.buttons
-                       .map(function() {
-                               return $( this ).button( "widget" )[ 0 ];
-                       })
-                               .removeClass( "ui-corner-left ui-corner-right" )
-                       .end()
-                       .button( "destroy" );
-       }
-});
-
-var button = $.ui.button;
-
-
-/*!
- * jQuery UI Datepicker 1.11.3
- * http://jqueryui.com
- *
- * Copyright jQuery Foundation and other contributors
- * Released under the MIT license.
- * http://jquery.org/license
- *
- * http://api.jqueryui.com/datepicker/
- */
-
-
-$.extend($.ui, { datepicker: { version: "1.11.3" } });
-
-var datepicker_instActive;
-
-function datepicker_getZindex( elem ) {
-       var position, value;
-       while ( elem.length && elem[ 0 ] !== document ) {
-               // Ignore z-index if position is set to a value where z-index is ignored by the browser
-               // This makes behavior of this function consistent across browsers
-               // WebKit always returns auto if the element is positioned
-               position = elem.css( "position" );
-               if ( position === "absolute" || position === "relative" || position === "fixed" ) {
-                       // IE returns 0 when zIndex is not specified
-                       // other browsers return a string
-                       // we ignore the case of nested elements with an explicit value of 0
-                       // <div style="z-index: -10;"><div style="z-index: 0;"></div></div>
-                       value = parseInt( elem.css( "zIndex" ), 10 );
-                       if ( !isNaN( value ) && value !== 0 ) {
-                               return value;
-                       }
-               }
-               elem = elem.parent();
-       }
-
-       return 0;
-}
-/* Date picker manager.
-   Use the singleton instance of this class, $.datepicker, to interact with the date picker.
-   Settings for (groups of) date pickers are maintained in an instance object,
-   allowing multiple different settings on the same page. */
-
-function Datepicker() {
-       this._curInst = null; // The current instance in use
-       this._keyEvent = false; // If the last event was a key event
-       this._disabledInputs = []; // List of date picker inputs that have been disabled
-       this._datepickerShowing = false; // True if the popup picker is showing , false if not
-       this._inDialog = false; // True if showing within a "dialog", false if not
-       this._mainDivId = "ui-datepicker-div"; // The ID of the main datepicker division
-       this._inlineClass = "ui-datepicker-inline"; // The name of the inline marker class
-       this._appendClass = "ui-datepicker-append"; // The name of the append marker class
-       this._triggerClass = "ui-datepicker-trigger"; // The name of the trigger marker class
-       this._dialogClass = "ui-datepicker-dialog"; // The name of the dialog marker class
-       this._disableClass = "ui-datepicker-disabled"; // The name of the disabled covering marker class
-       this._unselectableClass = "ui-datepicker-unselectable"; // The name of the unselectable cell marker class
-       this._currentClass = "ui-datepicker-current-day"; // The name of the current day marker class
-       this._dayOverClass = "ui-datepicker-days-cell-over"; // The name of the day hover marker class
-       this.regional = []; // Available regional settings, indexed by language code
-       this.regional[""] = { // Default regional settings
-               closeText: "Done", // Display text for close link
-               prevText: "Prev", // Display text for previous month link
-               nextText: "Next", // Display text for next month link
-               currentText: "Today", // Display text for current month link
-               monthNames: ["January","February","March","April","May","June",
-                       "July","August","September","October","November","December"], // Names of months for drop-down and formatting
-               monthNamesShort: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"], // For formatting
-               dayNames: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"], // For formatting
-               dayNamesShort: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"], // For formatting
-               dayNamesMin: ["Su","Mo","Tu","We","Th","Fr","Sa"], // Column headings for days starting at Sunday
-               weekHeader: "Wk", // Column header for week of the year
-               dateFormat: "mm/dd/yy", // See format options on parseDate
-               firstDay: 0, // The first day of the week, Sun = 0, Mon = 1, ...
-               isRTL: false, // True if right-to-left language, false if left-to-right
-               showMonthAfterYear: false, // True if the year select precedes month, false for month then year
-               yearSuffix: "" // Additional text to append to the year in the month headers
-       };
-       this._defaults = { // Global defaults for all the date picker instances
-               showOn: "focus", // "focus" for popup on focus,
-                       // "button" for trigger button, or "both" for either
-               showAnim: "fadeIn", // Name of jQuery animation for popup
-               showOptions: {}, // Options for enhanced animations
-               defaultDate: null, // Used when field is blank: actual date,
-                       // +/-number for offset from today, null for today
-               appendText: "", // Display text following the input box, e.g. showing the format
-               buttonText: "...", // Text for trigger button
-               buttonImage: "", // URL for trigger button image
-               buttonImageOnly: false, // True if the image appears alone, false if it appears on a button
-               hideIfNoPrevNext: false, // True to hide next/previous month links
-                       // if not applicable, false to just disable them
-               navigationAsDateFormat: false, // True if date formatting applied to prev/today/next links
-               gotoCurrent: false, // True if today link goes back to current selection instead
-               changeMonth: false, // True if month can be selected directly, false if only prev/next
-               changeYear: false, // True if year can be selected directly, false if only prev/next
-               yearRange: "c-10:c+10", // Range of years to display in drop-down,
-                       // either relative to today's year (-nn:+nn), relative to currently displayed year
-                       // (c-nn:c+nn), absolute (nnnn:nnnn), or a combination of the above (nnnn:-n)
-               showOtherMonths: false, // True to show dates in other months, false to leave blank
-               selectOtherMonths: false, // True to allow selection of dates in other months, false for unselectable
-               showWeek: false, // True to show week of the year, false to not show it
-               calculateWeek: this.iso8601Week, // How to calculate the week of the year,
-                       // takes a Date and returns the number of the week for it
-               shortYearCutoff: "+10", // Short year values < this are in the current century,
-                       // > this are in the previous century,
-                       // string value starting with "+" for current year + value
-               minDate: null, // The earliest selectable date, or null for no limit
-               maxDate: null, // The latest selectable date, or null for no limit
-               duration: "fast", // Duration of display/closure
-               beforeShowDay: null, // Function that takes a date and returns an array with
-                       // [0] = true if selectable, false if not, [1] = custom CSS class name(s) or "",
-                       // [2] = cell title (optional), e.g. $.datepicker.noWeekends
-               beforeShow: null, // Function that takes an input field and
-                       // returns a set of custom settings for the date picker
-               onSelect: null, // Define a callback function when a date is selected
-               onChangeMonthYear: null, // Define a callback function when the month or year is changed
-               onClose: null, // Define a callback function when the datepicker is closed
-               numberOfMonths: 1, // Number of months to show at a time
-               showCurrentAtPos: 0, // The position in multipe months at which to show the current month (starting at 0)
-               stepMonths: 1, // Number of months to step back/forward
-               stepBigMonths: 12, // Number of months to step back/forward for the big links
-               altField: "", // Selector for an alternate field to store selected dates into
-               altFormat: "", // The date format to use for the alternate field
-               constrainInput: true, // The input is constrained by the current date format
-               showButtonPanel: false, // True to show button panel, false to not show it
-               autoSize: false, // True to size the input for the date format, false to leave as is
-               disabled: false // The initial disabled state
-       };
-       $.extend(this._defaults, this.regional[""]);
-       this.regional.en = $.extend( true, {}, this.regional[ "" ]);
-       this.regional[ "en-US" ] = $.extend( true, {}, this.regional.en );
-       this.dpDiv = datepicker_bindHover($("<div id='" + this._mainDivId + "' class='ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all'></div>"));
-}
-
-$.extend(Datepicker.prototype, {
-       /* Class name added to elements to indicate already configured with a date picker. */
-       markerClassName: "hasDatepicker",
-
-       //Keep track of the maximum number of rows displayed (see #7043)
-       maxRows: 4,
-
-       // TODO rename to "widget" when switching to widget factory
-       _widgetDatepicker: function() {
-               return this.dpDiv;
-       },
-
-       /* Override the default settings for all instances of the date picker.
-        * @param  settings  object - the new settings to use as defaults (anonymous object)
-        * @return the manager object
-        */
-       setDefaults: function(settings) {
-               datepicker_extendRemove(this._defaults, settings || {});
-               return this;
-       },
-
-       /* Attach the date picker to a jQuery selection.
-        * @param  target       element - the target input field or division or span
-        * @param  settings  object - the new settings to use for this date picker instance (anonymous)
-        */
-       _attachDatepicker: function(target, settings) {
-               var nodeName, inline, inst;
-               nodeName = target.nodeName.toLowerCase();
-               inline = (nodeName === "div" || nodeName === "span");
-               if (!target.id) {
-                       this.uuid += 1;
-                       target.id = "dp" + this.uuid;
-               }
-               inst = this._newInst($(target), inline);
-               inst.settings = $.extend({}, settings || {});
-               if (nodeName === "input") {
-                       this._connectDatepicker(target, inst);
-               } else if (inline) {
-                       this._inlineDatepicker(target, inst);
-               }
-       },
-
-       /* Create a new instance object. */
-       _newInst: function(target, inline) {
-               var id = target[0].id.replace(/([^A-Za-z0-9_\-])/g, "\\\\$1"); // escape jQuery meta chars
-               return {id: id, input: target, // associated target
-                       selectedDay: 0, selectedMonth: 0, selectedYear: 0, // current selection
-                       drawMonth: 0, drawYear: 0, // month being drawn
-                       inline: inline, // is datepicker inline or not
-                       dpDiv: (!inline ? this.dpDiv : // presentation div
-                       datepicker_bindHover($("<div class='" + this._inlineClass + " ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all'></div>")))};
-       },
-
-       /* Attach the date picker to an input field. */
-       _connectDatepicker: function(target, inst) {
-               var input = $(target);
-               inst.append = $([]);
-               inst.trigger = $([]);
-               if (input.hasClass(this.markerClassName)) {
-                       return;
-               }
-               this._attachments(input, inst);
-               input.addClass(this.markerClassName).keydown(this._doKeyDown).
-                       keypress(this._doKeyPress).keyup(this._doKeyUp);
-               this._autoSize(inst);
-               $.data(target, "datepicker", inst);
-               //If disabled option is true, disable the datepicker once it has been attached to the input (see ticket #5665)
-               if( inst.settings.disabled ) {
-                       this._disableDatepicker( target );
-               }
-       },
-
-       /* Make attachments based on settings. */
-       _attachments: function(input, inst) {
-               var showOn, buttonText, buttonImage,
-                       appendText = this._get(inst, "appendText"),
-                       isRTL = this._get(inst, "isRTL");
-
-               if (inst.append) {
-                       inst.append.remove();
-               }
-               if (appendText) {
-                       inst.append = $("<span class='" + this._appendClass + "'>" + appendText + "</span>");
-                       input[isRTL ? "before" : "after"](inst.append);
-               }
-
-               input.unbind("focus", this._showDatepicker);
-
-               if (inst.trigger) {
-                       inst.trigger.remove();
-               }
-
-               showOn = this._get(inst, "showOn");
-               if (showOn === "focus" || showOn === "both") { // pop-up date picker when in the marked field
-                       input.focus(this._showDatepicker);
-               }
-               if (showOn === "button" || showOn === "both") { // pop-up date picker when button clicked
-                       buttonText = this._get(inst, "buttonText");
-                       buttonImage = this._get(inst, "buttonImage");
-                       inst.trigger = $(this._get(inst, "buttonImageOnly") ?
-                               $("<img/>").addClass(this._triggerClass).
-                                       attr({ src: buttonImage, alt: buttonText, title: buttonText }) :
-                               $("<button type='button'></button>").addClass(this._triggerClass).
-                                       html(!buttonImage ? buttonText : $("<img/>").attr(
-                                       { src:buttonImage, alt:buttonText, title:buttonText })));
-                       input[isRTL ? "before" : "after"](inst.trigger);
-                       inst.trigger.click(function() {
-                               if ($.datepicker._datepickerShowing && $.datepicker._lastInput === input[0]) {
-                                       $.datepicker._hideDatepicker();
-                               } else if ($.datepicker._datepickerShowing && $.datepicker._lastInput !== input[0]) {
-                                       $.datepicker._hideDatepicker();
-                                       $.datepicker._showDatepicker(input[0]);
-                               } else {
-                                       $.datepicker._showDatepicker(input[0]);
-                               }
-                               return false;
-                       });
-               }
-       },
-
-       /* Apply the maximum length for the date format. */
-       _autoSize: function(inst) {
-               if (this._get(inst, "autoSize") && !inst.inline) {
-                       var findMax, max, maxI, i,
-                               date = new Date(2009, 12 - 1, 20), // Ensure double digits
-                               dateFormat = this._get(inst, "dateFormat");
-
-                       if (dateFormat.match(/[DM]/)) {
-                               findMax = function(names) {
-                                       max = 0;
-                                       maxI = 0;
-                                       for (i = 0; i < names.length; i++) {
-                                               if (names[i].length > max) {
-                                                       max = names[i].length;
-                                                       maxI = i;
-                                               }
-                                       }
-                                       return maxI;
-                               };
-                               date.setMonth(findMax(this._get(inst, (dateFormat.match(/MM/) ?
-                                       "monthNames" : "monthNamesShort"))));
-                               date.setDate(findMax(this._get(inst, (dateFormat.match(/DD/) ?
-                                       "dayNames" : "dayNamesShort"))) + 20 - date.getDay());
-                       }
-                       inst.input.attr("size", this._formatDate(inst, date).length);
-               }
-       },
-
-       /* Attach an inline date picker to a div. */
-       _inlineDatepicker: function(target, inst) {
-               var divSpan = $(target);
-               if (divSpan.hasClass(this.markerClassName)) {
-                       return;
-               }
-               divSpan.addClass(this.markerClassName).append(inst.dpDiv);
-               $.data(target, "datepicker", inst);
-               this._setDate(inst, this._getDefaultDate(inst), true);
-               this._updateDatepicker(inst);
-               this._updateAlternate(inst);
-               //If disabled option is true, disable the datepicker before showing it (see ticket #5665)
-               if( inst.settings.disabled ) {
-                       this._disableDatepicker( target );
-               }
-               // Set display:block in place of inst.dpDiv.show() which won't work on disconnected elements
-               // http://bugs.jqueryui.com/ticket/7552 - A Datepicker created on a detached div has zero height
-               inst.dpDiv.css( "display", "block" );
-       },
-
-       /* Pop-up the date picker in a "dialog" box.
-        * @param  input element - ignored
-        * @param  date string or Date - the initial date to display
-        * @param  onSelect  function - the function to call when a date is selected
-        * @param  settings  object - update the dialog date picker instance's settings (anonymous object)
-        * @param  pos int[2] - coordinates for the dialog's position within the screen or
-        *                                      event - with x/y coordinates or
-        *                                      leave empty for default (screen centre)
-        * @return the manager object
-        */
-       _dialogDatepicker: function(input, date, onSelect, settings, pos) {
-               var id, browserWidth, browserHeight, scrollX, scrollY,
-                       inst = this._dialogInst; // internal instance
-
-               if (!inst) {
-                       this.uuid += 1;
-                       id = "dp" + this.uuid;
-                       this._dialogInput = $("<input type='text' id='" + id +
-                               "' style='position: absolute; top: -100px; width: 0px;'/>");
-                       this._dialogInput.keydown(this._doKeyDown);
-                       $("body").append(this._dialogInput);
-                       inst = this._dialogInst = this._newInst(this._dialogInput, false);
-                       inst.settings = {};
-                       $.data(this._dialogInput[0], "datepicker", inst);
-               }
-               datepicker_extendRemove(inst.settings, settings || {});
-               date = (date && date.constructor === Date ? this._formatDate(inst, date) : date);
-               this._dialogInput.val(date);
-
-               this._pos = (pos ? (pos.length ? pos : [pos.pageX, pos.pageY]) : null);
-               if (!this._pos) {
-                       browserWidth = document.documentElement.clientWidth;
-                       browserHeight = document.documentElement.clientHeight;
-                       scrollX = document.documentElement.scrollLeft || document.body.scrollLeft;
-                       scrollY = document.documentElement.scrollTop || document.body.scrollTop;
-                       this._pos = // should use actual width/height below
-                               [(browserWidth / 2) - 100 + scrollX, (browserHeight / 2) - 150 + scrollY];
-               }
-
-               // move input on screen for focus, but hidden behind dialog
-               this._dialogInput.css("left", (this._pos[0] + 20) + "px").css("top", this._pos[1] + "px");
-               inst.settings.onSelect = onSelect;
-               this._inDialog = true;
-               this.dpDiv.addClass(this._dialogClass);
-               this._showDatepicker(this._dialogInput[0]);
-               if ($.blockUI) {
-                       $.blockUI(this.dpDiv);
-               }
-               $.data(this._dialogInput[0], "datepicker", inst);
-               return this;
-       },
-
-       /* Detach a datepicker from its control.
-        * @param  target       element - the target input field or division or span
-        */
-       _destroyDatepicker: function(target) {
-               var nodeName,
-                       $target = $(target),
-                       inst = $.data(target, "datepicker");
-
-               if (!$target.hasClass(this.markerClassName)) {
-                       return;
-               }
-
-               nodeName = target.nodeName.toLowerCase();
-               $.removeData(target, "datepicker");
-               if (nodeName === "input") {
-                       inst.append.remove();
-                       inst.trigger.remove();
-                       $target.removeClass(this.markerClassName).
-                               unbind("focus", this._showDatepicker).
-                               unbind("keydown", this._doKeyDown).
-                               unbind("keypress", this._doKeyPress).
-                               unbind("keyup", this._doKeyUp);
-               } else if (nodeName === "div" || nodeName === "span") {
-                       $target.removeClass(this.markerClassName).empty();
-               }
-
-               if ( datepicker_instActive === inst ) {
-                       datepicker_instActive = null;
-               }
-       },
-
-       /* Enable the date picker to a jQuery selection.
-        * @param  target       element - the target input field or division or span
-        */
-       _enableDatepicker: function(target) {
-               var nodeName, inline,
-                       $target = $(target),
-                       inst = $.data(target, "datepicker");
-
-               if (!$target.hasClass(this.markerClassName)) {
-                       return;
-               }
-
-               nodeName = target.nodeName.toLowerCase();
-               if (nodeName === "input") {
-                       target.disabled = false;
-                       inst.trigger.filter("button").
-                               each(function() { this.disabled = false; }).end().
-                               filter("img").css({opacity: "1.0", cursor: ""});
-               } else if (nodeName === "div" || nodeName === "span") {
-                       inline = $target.children("." + this._inlineClass);
-                       inline.children().removeClass("ui-state-disabled");
-                       inline.find("select.ui-datepicker-month, select.ui-datepicker-year").
-                               prop("disabled", false);
-               }
-               this._disabledInputs = $.map(this._disabledInputs,
-                       function(value) { return (value === target ? null : value); }); // delete entry
-       },
-
-       /* Disable the date picker to a jQuery selection.
-        * @param  target       element - the target input field or division or span
-        */
-       _disableDatepicker: function(target) {
-               var nodeName, inline,
-                       $target = $(target),
-                       inst = $.data(target, "datepicker");
-
-               if (!$target.hasClass(this.markerClassName)) {
-                       return;
-               }
-
-               nodeName = target.nodeName.toLowerCase();
-               if (nodeName === "input") {
-                       target.disabled = true;
-                       inst.trigger.filter("button").
-                               each(function() { this.disabled = true; }).end().
-                               filter("img").css({opacity: "0.5", cursor: "default"});
-               } else if (nodeName === "div" || nodeName === "span") {
-                       inline = $target.children("." + this._inlineClass);
-                       inline.children().addClass("ui-state-disabled");
-                       inline.find("select.ui-datepicker-month, select.ui-datepicker-year").
-                               prop("disabled", true);
-               }
-               this._disabledInputs = $.map(this._disabledInputs,
-                       function(value) { return (value === target ? null : value); }); // delete entry
-               this._disabledInputs[this._disabledInputs.length] = target;
-       },
-
-       /* Is the first field in a jQuery collection disabled as a datepicker?
-        * @param  target       element - the target input field or division or span
-        * @return boolean - true if disabled, false if enabled
-        */
-       _isDisabledDatepicker: function(target) {
-               if (!target) {
-                       return false;
-               }
-               for (var i = 0; i < this._disabledInputs.length; i++) {
-                       if (this._disabledInputs[i] === target) {
-                               return true;
-                       }
-               }
-               return false;
-       },
-
-       /* Retrieve the instance data for the target control.
-        * @param  target  element - the target input field or division or span
-        * @return  object - the associated instance data
-        * @throws  error if a jQuery problem getting data
-        */
-       _getInst: function(target) {
-               try {
-                       return $.data(target, "datepicker");
-               }
-               catch (err) {
-                       throw "Missing instance data for this datepicker";
-               }
-       },
-
-       /* Update or retrieve the settings for a date picker attached to an input field or division.
-        * @param  target  element - the target input field or division or span
-        * @param  name object - the new settings to update or
-        *                              string - the name of the setting to change or retrieve,
-        *                              when retrieving also "all" for all instance settings or
-        *                              "defaults" for all global defaults
-        * @param  value   any - the new value for the setting
-        *                              (omit if above is an object or to retrieve a value)
-        */
-       _optionDatepicker: function(target, name, value) {
-               var settings, date, minDate, maxDate,
-                       inst = this._getInst(target);
-
-               if (arguments.length === 2 && typeof name === "string") {
-                       return (name === "defaults" ? $.extend({}, $.datepicker._defaults) :
-                               (inst ? (name === "all" ? $.extend({}, inst.settings) :
-                               this._get(inst, name)) : null));
-               }
-
-               settings = name || {};
-               if (typeof name === "string") {
-                       settings = {};
-                       settings[name] = value;
-               }
-
-               if (inst) {
-                       if (this._curInst === inst) {
-                               this._hideDatepicker();
-                       }
-
-                       date = this._getDateDatepicker(target, true);
-                       minDate = this._getMinMaxDate(inst, "min");
-                       maxDate = this._getMinMaxDate(inst, "max");
-                       datepicker_extendRemove(inst.settings, settings);
-                       // reformat the old minDate/maxDate values if dateFormat changes and a new minDate/maxDate isn't provided
-                       if (minDate !== null && settings.dateFormat !== undefined && settings.minDate === undefined) {
-                               inst.settings.minDate = this._formatDate(inst, minDate);
-                       }
-                       if (maxDate !== null && settings.dateFormat !== undefined && settings.maxDate === undefined) {
-                               inst.settings.maxDate = this._formatDate(inst, maxDate);
-                       }
-                       if ( "disabled" in settings ) {
-                               if ( settings.disabled ) {
-                                       this._disableDatepicker(target);
-                               } else {
-                                       this._enableDatepicker(target);
-                               }
-                       }
-                       this._attachments($(target), inst);
-                       this._autoSize(inst);
-                       this._setDate(inst, date);
-                       this._updateAlternate(inst);
-                       this._updateDatepicker(inst);
-               }
-       },
-
-       // change method deprecated
-       _changeDatepicker: function(target, name, value) {
-               this._optionDatepicker(target, name, value);
-       },
-
-       /* Redraw the date picker attached to an input field or division.
-        * @param  target  element - the target input field or division or span
-        */
-       _refreshDatepicker: function(target) {
-               var inst = this._getInst(target);
-               if (inst) {
-                       this._updateDatepicker(inst);
-               }
-       },
-
-       /* Set the dates for a jQuery selection.
-        * @param  target element - the target input field or division or span
-        * @param  date Date - the new date
-        */
-       _setDateDatepicker: function(target, date) {
-               var inst = this._getInst(target);
-               if (inst) {
-                       this._setDate(inst, date);
-                       this._updateDatepicker(inst);
-                       this._updateAlternate(inst);
-               }
-       },
-
-       /* Get the date(s) for the first entry in a jQuery selection.
-        * @param  target element - the target input field or division or span
-        * @param  noDefault boolean - true if no default date is to be used
-        * @return Date - the current date
-        */
-       _getDateDatepicker: function(target, noDefault) {
-               var inst = this._getInst(target);
-               if (inst && !inst.inline) {
-                       this._setDateFromField(inst, noDefault);
-               }
-               return (inst ? this._getDate(inst) : null);
-       },
-
-       /* Handle keystrokes. */
-       _doKeyDown: function(event) {
-               var onSelect, dateStr, sel,
-                       inst = $.datepicker._getInst(event.target),
-                       handled = true,
-                       isRTL = inst.dpDiv.is(".ui-datepicker-rtl");
-
-               inst._keyEvent = true;
-               if ($.datepicker._datepickerShowing) {
-                       switch (event.keyCode) {
-                               case 9: $.datepicker._hideDatepicker();
-                                               handled = false;
-                                               break; // hide on tab out
-                               case 13: sel = $("td." + $.datepicker._dayOverClass + ":not(." +
-                                                                       $.datepicker._currentClass + ")", inst.dpDiv);
-                                               if (sel[0]) {
-                                                       $.datepicker._selectDay(event.target, inst.selectedMonth, inst.selectedYear, sel[0]);
-                                               }
-
-                                               onSelect = $.datepicker._get(inst, "onSelect");
-                                               if (onSelect) {
-                                                       dateStr = $.datepicker._formatDate(inst);
-
-                                                       // trigger custom callback
-                                                       onSelect.apply((inst.input ? inst.input[0] : null), [dateStr, inst]);
-                                               } else {
-                                                       $.datepicker._hideDatepicker();
-                                               }
-
-                                               return false; // don't submit the form
-                               case 27: $.datepicker._hideDatepicker();
-                                               break; // hide on escape
-                               case 33: $.datepicker._adjustDate(event.target, (event.ctrlKey ?
-                                                       -$.datepicker._get(inst, "stepBigMonths") :
-                                                       -$.datepicker._get(inst, "stepMonths")), "M");
-                                               break; // previous month/year on page up/+ ctrl
-                               case 34: $.datepicker._adjustDate(event.target, (event.ctrlKey ?
-                                                       +$.datepicker._get(inst, "stepBigMonths") :
-                                                       +$.datepicker._get(inst, "stepMonths")), "M");
-                                               break; // next month/year on page down/+ ctrl
-                               case 35: if (event.ctrlKey || event.metaKey) {
-                                                       $.datepicker._clearDate(event.target);
-                                               }
-                                               handled = event.ctrlKey || event.metaKey;
-                                               break; // clear on ctrl or command +end
-                               case 36: if (event.ctrlKey || event.metaKey) {
-                                                       $.datepicker._gotoToday(event.target);
-                                               }
-                                               handled = event.ctrlKey || event.metaKey;
-                                               break; // current on ctrl or command +home
-                               case 37: if (event.ctrlKey || event.metaKey) {
-                                                       $.datepicker._adjustDate(event.target, (isRTL ? +1 : -1), "D");
-                                               }
-                                               handled = event.ctrlKey || event.metaKey;
-                                               // -1 day on ctrl or command +left
-                                               if (event.originalEvent.altKey) {
-                                                       $.datepicker._adjustDate(event.target, (event.ctrlKey ?
-                                                               -$.datepicker._get(inst, "stepBigMonths") :
-                                                               -$.datepicker._get(inst, "stepMonths")), "M");
-                                               }
-                                               // next month/year on alt +left on Mac
-                                               break;
-                               case 38: if (event.ctrlKey || event.metaKey) {
-                                                       $.datepicker._adjustDate(event.target, -7, "D");
-                                               }
-                                               handled = event.ctrlKey || event.metaKey;
-                                               break; // -1 week on ctrl or command +up
-                               case 39: if (event.ctrlKey || event.metaKey) {
-                                                       $.datepicker._adjustDate(event.target, (isRTL ? -1 : +1), "D");
-                                               }
-                                               handled = event.ctrlKey || event.metaKey;
-                                               // +1 day on ctrl or command +right
-                                               if (event.originalEvent.altKey) {
-                                                       $.datepicker._adjustDate(event.target, (event.ctrlKey ?
-                                                               +$.datepicker._get(inst, "stepBigMonths") :
-                                                               +$.datepicker._get(inst, "stepMonths")), "M");
-                                               }
-                                               // next month/year on alt +right
-                                               break;
-                               case 40: if (event.ctrlKey || event.metaKey) {
-                                                       $.datepicker._adjustDate(event.target, +7, "D");
-                                               }
-                                               handled = event.ctrlKey || event.metaKey;
-                                               break; // +1 week on ctrl or command +down
-                               default: handled = false;
-                       }
-               } else if (event.keyCode === 36 && event.ctrlKey) { // display the date picker on ctrl+home
-                       $.datepicker._showDatepicker(this);
-               } else {
-                       handled = false;
-               }
-
-               if (handled) {
-                       event.preventDefault();
-                       event.stopPropagation();
-               }
-       },
-
-       /* Filter entered characters - based on date format. */
-       _doKeyPress: function(event) {
-               var chars, chr,
-                       inst = $.datepicker._getInst(event.target);
-
-               if ($.datepicker._get(inst, "constrainInput")) {
-                       chars = $.datepicker._possibleChars($.datepicker._get(inst, "dateFormat"));
-                       chr = String.fromCharCode(event.charCode == null ? event.keyCode : event.charCode);
-                       return event.ctrlKey || event.metaKey || (chr < " " || !chars || chars.indexOf(chr) > -1);
-               }
-       },
-
-       /* Synchronise manual entry and field/alternate field. */
-       _doKeyUp: function(event) {
-               var date,
-                       inst = $.datepicker._getInst(event.target);
-
-               if (inst.input.val() !== inst.lastVal) {
-                       try {
-                               date = $.datepicker.parseDate($.datepicker._get(inst, "dateFormat"),
-                                       (inst.input ? inst.input.val() : null),
-                                       $.datepicker._getFormatConfig(inst));
-
-                               if (date) { // only if valid
-                                       $.datepicker._setDateFromField(inst);
-                                       $.datepicker._updateAlternate(inst);
-                                       $.datepicker._updateDatepicker(inst);
-                               }
-                       }
-                       catch (err) {
-                       }
-               }
-               return true;
-       },
-
-       /* Pop-up the date picker for a given input field.
-        * If false returned from beforeShow event handler do not show.
-        * @param  input  element - the input field attached to the date picker or
-        *                                      event - if triggered by focus
-        */
-       _showDatepicker: function(input) {
-               input = input.target || input;
-               if (input.nodeName.toLowerCase() !== "input") { // find from button/image trigger
-                       input = $("input", input.parentNode)[0];
-               }
-
-               if ($.datepicker._isDisabledDatepicker(input) || $.datepicker._lastInput === input) { // already here
-                       return;
-               }
-
-               var inst, beforeShow, beforeShowSettings, isFixed,
-                       offset, showAnim, duration;
-
-               inst = $.datepicker._getInst(input);
-               if ($.datepicker._curInst && $.datepicker._curInst !== inst) {
-                       $.datepicker._curInst.dpDiv.stop(true, true);
-                       if ( inst && $.datepicker._datepickerShowing ) {
-                               $.datepicker._hideDatepicker( $.datepicker._curInst.input[0] );
-                       }
-               }
-
-               beforeShow = $.datepicker._get(inst, "beforeShow");
-               beforeShowSettings = beforeShow ? beforeShow.apply(input, [input, inst]) : {};
-               if(beforeShowSettings === false){
-                       return;
-               }
-               datepicker_extendRemove(inst.settings, beforeShowSettings);
-
-               inst.lastVal = null;
-               $.datepicker._lastInput = input;
-               $.datepicker._setDateFromField(inst);
-
-               if ($.datepicker._inDialog) { // hide cursor
-                       input.value = "";
-               }
-               if (!$.datepicker._pos) { // position below input
-                       $.datepicker._pos = $.datepicker._findPos(input);
-                       $.datepicker._pos[1] += input.offsetHeight; // add the height
-               }
-
-               isFixed = false;
-               $(input).parents().each(function() {
-                       isFixed |= $(this).css("position") === "fixed";
-                       return !isFixed;
-               });
-
-               offset = {left: $.datepicker._pos[0], top: $.datepicker._pos[1]};
-               $.datepicker._pos = null;
-               //to avoid flashes on Firefox
-               inst.dpDiv.empty();
-               // determine sizing offscreen
-               inst.dpDiv.css({position: "absolute", display: "block", top: "-1000px"});
-               $.datepicker._updateDatepicker(inst);
-               // fix width for dynamic number of date pickers
-               // and adjust position before showing
-               offset = $.datepicker._checkOffset(inst, offset, isFixed);
-               inst.dpDiv.css({position: ($.datepicker._inDialog && $.blockUI ?
-                       "static" : (isFixed ? "fixed" : "absolute")), display: "none",
-                       left: offset.left + "px", top: offset.top + "px"});
-
-               if (!inst.inline) {
-                       showAnim = $.datepicker._get(inst, "showAnim");
-                       duration = $.datepicker._get(inst, "duration");
-                       inst.dpDiv.css( "z-index", datepicker_getZindex( $( input ) ) + 1 );
-                       $.datepicker._datepickerShowing = true;
-
-                       if ( $.effects && $.effects.effect[ showAnim ] ) {
-                               inst.dpDiv.show(showAnim, $.datepicker._get(inst, "showOptions"), duration);
-                       } else {
-                               inst.dpDiv[showAnim || "show"](showAnim ? duration : null);
-                       }
-
-                       if ( $.datepicker._shouldFocusInput( inst ) ) {
-                               inst.input.focus();
-                       }
-
-                       $.datepicker._curInst = inst;
-               }
-       },
-
-       /* Generate the date picker content. */
-       _updateDatepicker: function(inst) {
-               this.maxRows = 4; //Reset the max number of rows being displayed (see #7043)
-               datepicker_instActive = inst; // for delegate hover events
-               inst.dpDiv.empty().append(this._generateHTML(inst));
-               this._attachHandlers(inst);
-
-               var origyearshtml,
-                       numMonths = this._getNumberOfMonths(inst),
-                       cols = numMonths[1],
-                       width = 17,
-                       activeCell = inst.dpDiv.find( "." + this._dayOverClass + " a" );
-
-               if ( activeCell.length > 0 ) {
-                       datepicker_handleMouseover.apply( activeCell.get( 0 ) );
-               }
-
-               inst.dpDiv.removeClass("ui-datepicker-multi-2 ui-datepicker-multi-3 ui-datepicker-multi-4").width("");
-               if (cols > 1) {
-                       inst.dpDiv.addClass("ui-datepicker-multi-" + cols).css("width", (width * cols) + "em");
-               }
-               inst.dpDiv[(numMonths[0] !== 1 || numMonths[1] !== 1 ? "add" : "remove") +
-                       "Class"]("ui-datepicker-multi");
-               inst.dpDiv[(this._get(inst, "isRTL") ? "add" : "remove") +
-                       "Class"]("ui-datepicker-rtl");
-
-               if (inst === $.datepicker._curInst && $.datepicker._datepickerShowing && $.datepicker._shouldFocusInput( inst ) ) {
-                       inst.input.focus();
-               }
-
-               // deffered render of the years select (to avoid flashes on Firefox)
-               if( inst.yearshtml ){
-                       origyearshtml = inst.yearshtml;
-                       setTimeout(function(){
-                               //assure that inst.yearshtml didn't change.
-                               if( origyearshtml === inst.yearshtml && inst.yearshtml ){
-                                       inst.dpDiv.find("select.ui-datepicker-year:first").replaceWith(inst.yearshtml);
-                               }
-                               origyearshtml = inst.yearshtml = null;
-                       }, 0);
-               }
-       },
-
-       // #6694 - don't focus the input if it's already focused
-       // this breaks the change event in IE
-       // Support: IE and jQuery <1.9
-       _shouldFocusInput: function( inst ) {
-               return inst.input && inst.input.is( ":visible" ) && !inst.input.is( ":disabled" ) && !inst.input.is( ":focus" );
-       },
-
-       /* Check positioning to remain on screen. */
-       _checkOffset: function(inst, offset, isFixed) {
-               var dpWidth = inst.dpDiv.outerWidth(),
-                       dpHeight = inst.dpDiv.outerHeight(),
-                       inputWidth = inst.input ? inst.input.outerWidth() : 0,
-                       inputHeight = inst.input ? inst.input.outerHeight() : 0,
-                       viewWidth = document.documentElement.clientWidth + (isFixed ? 0 : $(document).scrollLeft()),
-                       viewHeight = document.documentElement.clientHeight + (isFixed ? 0 : $(document).scrollTop());
-
-               offset.left -= (this._get(inst, "isRTL") ? (dpWidth - inputWidth) : 0);
-               offset.left -= (isFixed && offset.left === inst.input.offset().left) ? $(document).scrollLeft() : 0;
-               offset.top -= (isFixed && offset.top === (inst.input.offset().top + inputHeight)) ? $(document).scrollTop() : 0;
-
-               // now check if datepicker is showing outside window viewport - move to a better place if so.
-               offset.left -= Math.min(offset.left, (offset.left + dpWidth > viewWidth && viewWidth > dpWidth) ?
-                       Math.abs(offset.left + dpWidth - viewWidth) : 0);
-               offset.top -= Math.min(offset.top, (offset.top + dpHeight > viewHeight && viewHeight > dpHeight) ?
-                       Math.abs(dpHeight + inputHeight) : 0);
-
-               return offset;
-       },
-
-       /* Find an object's position on the screen. */
-       _findPos: function(obj) {
-               var position,
-                       inst = this._getInst(obj),
-                       isRTL = this._get(inst, "isRTL");
-
-               while (obj && (obj.type === "hidden" || obj.nodeType !== 1 || $.expr.filters.hidden(obj))) {
-                       obj = obj[isRTL ? "previousSibling" : "nextSibling"];
-               }
-
-               position = $(obj).offset();
-               return [position.left, position.top];
-       },
-
-       /* Hide the date picker from view.
-        * @param  input  element - the input field attached to the date picker
-        */
-       _hideDatepicker: function(input) {
-               var showAnim, duration, postProcess, onClose,
-                       inst = this._curInst;
-
-               if (!inst || (input && inst !== $.data(input, "datepicker"))) {
-                       return;
-               }
-
-               if (this._datepickerShowing) {
-                       showAnim = this._get(inst, "showAnim");
-                       duration = this._get(inst, "duration");
-                       postProcess = function() {
-                               $.datepicker._tidyDialog(inst);
-                       };
-
-                       // DEPRECATED: after BC for 1.8.x $.effects[ showAnim ] is not needed
-                       if ( $.effects && ( $.effects.effect[ showAnim ] || $.effects[ showAnim ] ) ) {
-                               inst.dpDiv.hide(showAnim, $.datepicker._get(inst, "showOptions"), duration, postProcess);
-                       } else {
-                               inst.dpDiv[(showAnim === "slideDown" ? "slideUp" :
-                                       (showAnim === "fadeIn" ? "fadeOut" : "hide"))]((showAnim ? duration : null), postProcess);
-                       }
-
-                       if (!showAnim) {
-                               postProcess();
-                       }
-                       this._datepickerShowing = false;
-
-                       onClose = this._get(inst, "onClose");
-                       if (onClose) {
-                               onClose.apply((inst.input ? inst.input[0] : null), [(inst.input ? inst.input.val() : ""), inst]);
-                       }
-
-                       this._lastInput = null;
-                       if (this._inDialog) {
-                               this._dialogInput.css({ position: "absolute", left: "0", top: "-100px" });
-                               if ($.blockUI) {
-                                       $.unblockUI();
-                                       $("body").append(this.dpDiv);
-                               }
-                       }
-                       this._inDialog = false;
-               }
-       },
-
-       /* Tidy up after a dialog display. */
-       _tidyDialog: function(inst) {
-               inst.dpDiv.removeClass(this._dialogClass).unbind(".ui-datepicker-calendar");
-       },
-
-       /* Close date picker if clicked elsewhere. */
-       _checkExternalClick: function(event) {
-               if (!$.datepicker._curInst) {
-                       return;
-               }
-
-               var $target = $(event.target),
-                       inst = $.datepicker._getInst($target[0]);
-
-               if ( ( ( $target[0].id !== $.datepicker._mainDivId &&
-                               $target.parents("#" + $.datepicker._mainDivId).length === 0 &&
-                               !$target.hasClass($.datepicker.markerClassName) &&
-                               !$target.closest("." + $.datepicker._triggerClass).length &&
-                               $.datepicker._datepickerShowing && !($.datepicker._inDialog && $.blockUI) ) ) ||
-                       ( $target.hasClass($.datepicker.markerClassName) && $.datepicker._curInst !== inst ) ) {
-                               $.datepicker._hideDatepicker();
-               }
-       },
-
-       /* Adjust one of the date sub-fields. */
-       _adjustDate: function(id, offset, period) {
-               var target = $(id),
-                       inst = this._getInst(target[0]);
-
-               if (this._isDisabledDatepicker(target[0])) {
-                       return;
-               }
-               this._adjustInstDate(inst, offset +
-                       (period === "M" ? this._get(inst, "showCurrentAtPos") : 0), // undo positioning
-                       period);
-               this._updateDatepicker(inst);
-       },
-
-       /* Action for current link. */
-       _gotoToday: function(id) {
-               var date,
-                       target = $(id),
-                       inst = this._getInst(target[0]);
-
-               if (this._get(inst, "gotoCurrent") && inst.currentDay) {
-                       inst.selectedDay = inst.currentDay;
-                       inst.drawMonth = inst.selectedMonth = inst.currentMonth;
-                       inst.drawYear = inst.selectedYear = inst.currentYear;
-               } else {
-                       date = new Date();
-                       inst.selectedDay = date.getDate();
-                       inst.drawMonth = inst.selectedMonth = date.getMonth();
-                       inst.drawYear = inst.selectedYear = date.getFullYear();
-               }
-               this._notifyChange(inst);
-               this._adjustDate(target);
-       },
-
-       /* Action for selecting a new month/year. */
-       _selectMonthYear: function(id, select, period) {
-               var target = $(id),
-                       inst = this._getInst(target[0]);
-
-               inst["selected" + (period === "M" ? "Month" : "Year")] =
-               inst["draw" + (period === "M" ? "Month" : "Year")] =
-                       parseInt(select.options[select.selectedIndex].value,10);
-
-               this._notifyChange(inst);
-               this._adjustDate(target);
-       },
-
-       /* Action for selecting a day. */
-       _selectDay: function(id, month, year, td) {
-               var inst,
-                       target = $(id);
-
-               if ($(td).hasClass(this._unselectableClass) || this._isDisabledDatepicker(target[0])) {
-                       return;
-               }
-
-               inst = this._getInst(target[0]);
-               inst.selectedDay = inst.currentDay = $("a", td).html();
-               inst.selectedMonth = inst.currentMonth = month;
-               inst.selectedYear = inst.currentYear = year;
-               this._selectDate(id, this._formatDate(inst,
-                       inst.currentDay, inst.currentMonth, inst.currentYear));
-       },
-
-       /* Erase the input field and hide the date picker. */
-       _clearDate: function(id) {
-               var target = $(id);
-               this._selectDate(target, "");
-       },
-
-       /* Update the input field with the selected date. */
-       _selectDate: function(id, dateStr) {
-               var onSelect,
-                       target = $(id),
-                       inst = this._getInst(target[0]);
-
-               dateStr = (dateStr != null ? dateStr : this._formatDate(inst));
-               if (inst.input) {
-                       inst.input.val(dateStr);
-               }
-               this._updateAlternate(inst);
-
-               onSelect = this._get(inst, "onSelect");
-               if (onSelect) {
-                       onSelect.apply((inst.input ? inst.input[0] : null), [dateStr, inst]);  // trigger custom callback
-               } else if (inst.input) {
-                       inst.input.trigger("change"); // fire the change event
-               }
-
-               if (inst.inline){
-                       this._updateDatepicker(inst);
-               } else {
-                       this._hideDatepicker();
-                       this._lastInput = inst.input[0];
-                       if (typeof(inst.input[0]) !== "object") {
-                               inst.input.focus(); // restore focus
-                       }
-                       this._lastInput = null;
-               }
-       },
-
-       /* Update any alternate field to synchronise with the main field. */
-       _updateAlternate: function(inst) {
-               var altFormat, date, dateStr,
-                       altField = this._get(inst, "altField");
-
-               if (altField) { // update alternate field too
-                       altFormat = this._get(inst, "altFormat") || this._get(inst, "dateFormat");
-                       date = this._getDate(inst);
-                       dateStr = this.formatDate(altFormat, date, this._getFormatConfig(inst));
-                       $(altField).each(function() { $(this).val(dateStr); });
-               }
-       },
-
-       /* Set as beforeShowDay function to prevent selection of weekends.
-        * @param  date  Date - the date to customise
-        * @return [boolean, string] - is this date selectable?, what is its CSS class?
-        */
-       noWeekends: function(date) {
-               var day = date.getDay();
-               return [(day > 0 && day < 6), ""];
-       },
-
-       /* Set as calculateWeek to determine the week of the year based on the ISO 8601 definition.
-        * @param  date  Date - the date to get the week for
-        * @return  number - the number of the week within the year that contains this date
-        */
-       iso8601Week: function(date) {
-               var time,
-                       checkDate = new Date(date.getTime());
-
-               // Find Thursday of this week starting on Monday
-               checkDate.setDate(checkDate.getDate() + 4 - (checkDate.getDay() || 7));
-
-               time = checkDate.getTime();
-               checkDate.setMonth(0); // Compare with Jan 1
-               checkDate.setDate(1);
-               return Math.floor(Math.round((time - checkDate) / 86400000) / 7) + 1;
-       },
-
-       /* Parse a string value into a date object.
-        * See formatDate below for the possible formats.
-        *
-        * @param  format string - the expected format of the date
-        * @param  value string - the date in the above format
-        * @param  settings Object - attributes include:
-        *                                      shortYearCutoff  number - the cutoff year for determining the century (optional)
-        *                                      dayNamesShort   string[7] - abbreviated names of the days from Sunday (optional)
-        *                                      dayNames                string[7] - names of the days from Sunday (optional)
-        *                                      monthNamesShort string[12] - abbreviated names of the months (optional)
-        *                                      monthNames              string[12] - names of the months (optional)
-        * @return  Date - the extracted date value or null if value is blank
-        */
-       parseDate: function (format, value, settings) {
-               if (format == null || value == null) {
-                       throw "Invalid arguments";
-               }
-
-               value = (typeof value === "object" ? value.toString() : value + "");
-               if (value === "") {
-                       return null;
-               }
-
-               var iFormat, dim, extra,
-                       iValue = 0,
-                       shortYearCutoffTemp = (settings ? settings.shortYearCutoff : null) || this._defaults.shortYearCutoff,
-                       shortYearCutoff = (typeof shortYearCutoffTemp !== "string" ? shortYearCutoffTemp :
-                               new Date().getFullYear() % 100 + parseInt(shortYearCutoffTemp, 10)),
-                       dayNamesShort = (settings ? settings.dayNamesShort : null) || this._defaults.dayNamesShort,
-                       dayNames = (settings ? settings.dayNames : null) || this._defaults.dayNames,
-                       monthNamesShort = (settings ? settings.monthNamesShort : null) || this._defaults.monthNamesShort,
-                       monthNames = (settings ? settings.monthNames : null) || this._defaults.monthNames,
-                       year = -1,
-                       month = -1,
-                       day = -1,
-                       doy = -1,
-                       literal = false,
-                       date,
-                       // Check whether a format character is doubled
-                       lookAhead = function(match) {
-                               var matches = (iFormat + 1 < format.length && format.charAt(iFormat + 1) === match);
-                               if (matches) {
-                                       iFormat++;
-                               }
-                               return matches;
-                       },
-                       // Extract a number from the string value
-                       getNumber = function(match) {
-                               var isDoubled = lookAhead(match),
-                                       size = (match === "@" ? 14 : (match === "!" ? 20 :
-                                       (match === "y" && isDoubled ? 4 : (match === "o" ? 3 : 2)))),
-                                       minSize = (match === "y" ? size : 1),
-                                       digits = new RegExp("^\\d{" + minSize + "," + size + "}"),
-                                       num = value.substring(iValue).match(digits);
-                               if (!num) {
-                                       throw "Missing number at position " + iValue;
-                               }
-                               iValue += num[0].length;
-                               return parseInt(num[0], 10);
-                       },
-                       // Extract a name from the string value and convert to an index
-                       getName = function(match, shortNames, longNames) {
-                               var index = -1,
-                                       names = $.map(lookAhead(match) ? longNames : shortNames, function (v, k) {
-                                               return [ [k, v] ];
-                                       }).sort(function (a, b) {
-                                               return -(a[1].length - b[1].length);
-                                       });
-
-                               $.each(names, function (i, pair) {
-                                       var name = pair[1];
-                                       if (value.substr(iValue, name.length).toLowerCase() === name.toLowerCase()) {
-                                               index = pair[0];
-                                               iValue += name.length;
-                                               return false;
-                                       }
-                               });
-                               if (index !== -1) {
-                                       return index + 1;
-                               } else {
-                                       throw "Unknown name at position " + iValue;
-                               }
-                       },
-                       // Confirm that a literal character matches the string value
-                       checkLiteral = function() {
-                               if (value.charAt(iValue) !== format.charAt(iFormat)) {
-                                       throw "Unexpected literal at position " + iValue;
-                               }
-                               iValue++;
-                       };
-
-               for (iFormat = 0; iFormat < format.length; iFormat++) {
-                       if (literal) {
-                               if (format.charAt(iFormat) === "'" && !lookAhead("'")) {
-                                       literal = false;
-                               } else {
-                                       checkLiteral();
-                               }
-                       } else {
-                               switch (format.charAt(iFormat)) {
-                                       case "d":
-                                               day = getNumber("d");
-                                               break;
-                                       case "D":
-                                               getName("D", dayNamesShort, dayNames);
-                                               break;
-                                       case "o":
-                                               doy = getNumber("o");
-                                               break;
-                                       case "m":
-                                               month = getNumber("m");
-                                               break;
-                                       case "M":
-                                               month = getName("M", monthNamesShort, monthNames);
-                                               break;
-                                       case "y":
-                                               year = getNumber("y");
-                                               break;
-                                       case "@":
-                                               date = new Date(getNumber("@"));
-                                               year = date.getFullYear();
-                                               month = date.getMonth() + 1;
-                                               day = date.getDate();
-                                               break;
-                                       case "!":
-                                               date = new Date((getNumber("!") - this._ticksTo1970) / 10000);
-                                               year = date.getFullYear();
-                                               month = date.getMonth() + 1;
-                                               day = date.getDate();
-                                               break;
-                                       case "'":
-                                               if (lookAhead("'")){
-                                                       checkLiteral();
-                                               } else {
-                                                       literal = true;
-                                               }
-                                               break;
-                                       default:
-                                               checkLiteral();
-                               }
-                       }
-               }
-
-               if (iValue < value.length){
-                       extra = value.substr(iValue);
-                       if (!/^\s+/.test(extra)) {
-                               throw "Extra/unparsed characters found in date: " + extra;
-                       }
-               }
-
-               if (year === -1) {
-                       year = new Date().getFullYear();
-               } else if (year < 100) {
-                       year += new Date().getFullYear() - new Date().getFullYear() % 100 +
-                               (year <= shortYearCutoff ? 0 : -100);
-               }
-
-               if (doy > -1) {
-                       month = 1;
-                       day = doy;
-                       do {
-                               dim = this._getDaysInMonth(year, month - 1);
-                               if (day <= dim) {
-                                       break;
-                               }
-                               month++;
-                               day -= dim;
-                       } while (true);
-               }
-
-               date = this._daylightSavingAdjust(new Date(year, month - 1, day));
-               if (date.getFullYear() !== year || date.getMonth() + 1 !== month || date.getDate() !== day) {
-                       throw "Invalid date"; // E.g. 31/02/00
-               }
-               return date;
-       },
-
-       /* Standard date formats. */
-       ATOM: "yy-mm-dd", // RFC 3339 (ISO 8601)
-       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", // RFC 822
-       TICKS: "!",
-       TIMESTAMP: "@",
-       W3C: "yy-mm-dd", // ISO 8601
-
-       _ticksTo1970: (((1970 - 1) * 365 + Math.floor(1970 / 4) - Math.floor(1970 / 100) +
-               Math.floor(1970 / 400)) * 24 * 60 * 60 * 10000000),
-
-       /* Format a date object into a string value.
-        * The format can be combinations of the following:
-        * d  - day of month (no leading zero)
-        * dd - day of month (two digit)
-        * o  - day of year (no leading zeros)
-        * oo - day of year (three digit)
-        * D  - day name short
-        * DD - day name long
-        * m  - month of year (no leading zero)
-        * mm - month of year (two digit)
-        * M  - month name short
-        * MM - month name long
-        * y  - year (two digit)
-        * yy - year (four digit)
-        * @ - Unix timestamp (ms since 01/01/1970)
-        * ! - Windows ticks (100ns since 01/01/0001)
-        * "..." - literal text
-        * '' - single quote
-        *
-        * @param  format string - the desired format of the date
-        * @param  date Date - the date value to format
-        * @param  settings Object - attributes include:
-        *                                      dayNamesShort   string[7] - abbreviated names of the days from Sunday (optional)
-        *                                      dayNames                string[7] - names of the days from Sunday (optional)
-        *                                      monthNamesShort string[12] - abbreviated names of the months (optional)
-        *                                      monthNames              string[12] - names of the months (optional)
-        * @return  string - the date in the above format
-        */
-       formatDate: function (format, date, settings) {
-               if (!date) {
-                       return "";
-               }
-
-               var iFormat,
-                       dayNamesShort = (settings ? settings.dayNamesShort : null) || this._defaults.dayNamesShort,
-                       dayNames = (settings ? settings.dayNames : null) || this._defaults.dayNames,
-                       monthNamesShort = (settings ? settings.monthNamesShort : null) || this._defaults.monthNamesShort,
-                       monthNames = (settings ? settings.monthNames : null) || this._defaults.monthNames,
-                       // Check whether a format character is doubled
-                       lookAhead = function(match) {
-                               var matches = (iFormat + 1 < format.length && format.charAt(iFormat + 1) === match);
-                               if (matches) {
-                                       iFormat++;
-                               }
-                               return matches;
-                       },
-                       // Format a number, with leading zero if necessary
-                       formatNumber = function(match, value, len) {
-                               var num = "" + value;
-                               if (lookAhead(match)) {
-                                       while (num.length < len) {
-                                               num = "0" + num;
-                                       }
-                               }
-                               return num;
-                       },
-                       // Format a name, short or long as requested
-                       formatName = function(match, value, shortNames, longNames) {
-                               return (lookAhead(match) ? longNames[value] : shortNames[value]);
-                       },
-                       output = "",
-                       literal = false;
-
-               if (date) {
-                       for (iFormat = 0; iFormat < format.length; iFormat++) {
-                               if (literal) {
-                                       if (format.charAt(iFormat) === "'" && !lookAhead("'")) {
-                                               literal = false;
-                                       } else {
-                                               output += format.charAt(iFormat);
-                                       }
-                               } else {
-                                       switch (format.charAt(iFormat)) {
-                                               case "d":
-                                                       output += formatNumber("d", date.getDate(), 2);
-                                                       break;
-                                               case "D":
-                                                       output += formatName("D", date.getDay(), dayNamesShort, dayNames);
-                                                       break;
-                                               case "o":
-                                                       output += formatNumber("o",
-                                                               Math.round((new Date(date.getFullYear(), date.getMonth(), date.getDate()).getTime() - new Date(date.getFullYear(), 0, 0).getTime()) / 86400000), 3);
-                                                       break;
-                                               case "m":
-                                                       output += formatNumber("m", date.getMonth() + 1, 2);
-                                                       break;
-                                               case "M":
-                                                       output += formatName("M", date.getMonth(), monthNamesShort, monthNames);
-                                                       break;
-                                               case "y":
-                                                       output += (lookAhead("y") ? date.getFullYear() :
-                                                               (date.getYear() % 100 < 10 ? "0" : "") + date.getYear() % 100);
-                                                       break;
-                                               case "@":
-                                                       output += date.getTime();
-                                                       break;
-                                               case "!":
-                                                       output += date.getTime() * 10000 + this._ticksTo1970;
-                                                       break;
-                                               case "'":
-                                                       if (lookAhead("'")) {
-                                                               output += "'";
-                                                       } else {
-                                                               literal = true;
-                                                       }
-                                                       break;
-                                               default:
-                                                       output += format.charAt(iFormat);
-                                       }
-                               }
-                       }
-               }
-               return output;
-       },
-
-       /* Extract all possible characters from the date format. */
-       _possibleChars: function (format) {
-               var iFormat,
-                       chars = "",
-                       literal = false,
-                       // Check whether a format character is doubled
-                       lookAhead = function(match) {
-                               var matches = (iFormat + 1 < format.length && format.charAt(iFormat + 1) === match);
-                               if (matches) {
-                                       iFormat++;
-                               }
-                               return matches;
-                       };
-
-               for (iFormat = 0; iFormat < format.length; iFormat++) {
-                       if (literal) {
-                               if (format.charAt(iFormat) === "'" && !lookAhead("'")) {
-                                       literal = false;
-                               } else {
-                                       chars += format.charAt(iFormat);
-                               }
-                       } else {
-                               switch (format.charAt(iFormat)) {
-                                       case "d": case "m": case "y": case "@":
-                                               chars += "0123456789";
-                                               break;
-                                       case "D": case "M":
-                                               return null; // Accept anything
-                                       case "'":
-                                               if (lookAhead("'")) {
-                                                       chars += "'";
-                                               } else {
-                                                       literal = true;
-                                               }
-                                               break;
-                                       default:
-                                               chars += format.charAt(iFormat);
-                               }
-                       }
-               }
-               return chars;
-       },
-
-       /* Get a setting value, defaulting if necessary. */
-       _get: function(inst, name) {
-               return inst.settings[name] !== undefined ?
-                       inst.settings[name] : this._defaults[name];
-       },
-
-       /* Parse existing date and initialise date picker. */
-       _setDateFromField: function(inst, noDefault) {
-               if (inst.input.val() === inst.lastVal) {
-                       return;
-               }
-
-               var dateFormat = this._get(inst, "dateFormat"),
-                       dates = inst.lastVal = inst.input ? inst.input.val() : null,
-                       defaultDate = this._getDefaultDate(inst),
-                       date = defaultDate,
-                       settings = this._getFormatConfig(inst);
-
-               try {
-                       date = this.parseDate(dateFormat, dates, settings) || defaultDate;
-               } catch (event) {
-                       dates = (noDefault ? "" : dates);
-               }
-               inst.selectedDay = date.getDate();
-               inst.drawMonth = inst.selectedMonth = date.getMonth();
-               inst.drawYear = inst.selectedYear = date.getFullYear();
-               inst.currentDay = (dates ? date.getDate() : 0);
-               inst.currentMonth = (dates ? date.getMonth() : 0);
-               inst.currentYear = (dates ? date.getFullYear() : 0);
-               this._adjustInstDate(inst);
-       },
-
-       /* Retrieve the default date shown on opening. */
-       _getDefaultDate: function(inst) {
-               return this._restrictMinMax(inst,
-                       this._determineDate(inst, this._get(inst, "defaultDate"), new Date()));
-       },
-
-       /* A date may be specified as an exact value or a relative one. */
-       _determineDate: function(inst, date, defaultDate) {
-               var offsetNumeric = function(offset) {
-                               var date = new Date();
-                               date.setDate(date.getDate() + offset);
-                               return date;
-                       },
-                       offsetString = function(offset) {
-                               try {
-                                       return $.datepicker.parseDate($.datepicker._get(inst, "dateFormat"),
-                                               offset, $.datepicker._getFormatConfig(inst));
-                               }
-                               catch (e) {
-                                       // Ignore
-                               }
-
-                               var date = (offset.toLowerCase().match(/^c/) ?
-                                       $.datepicker._getDate(inst) : null) || new Date(),
-                                       year = date.getFullYear(),
-                                       month = date.getMonth(),
-                                       day = date.getDate(),
-                                       pattern = /([+\-]?[0-9]+)\s*(d|D|w|W|m|M|y|Y)?/g,
-                                       matches = pattern.exec(offset);
-
-                               while (matches) {
-                                       switch (matches[2] || "d") {
-                                               case "d" : case "D" :
-                                                       day += parseInt(matches[1],10); break;
-                                               case "w" : case "W" :
-                                                       day += parseInt(matches[1],10) * 7; break;
-                                               case "m" : case "M" :
-                                                       month += parseInt(matches[1],10);
-                                                       day = Math.min(day, $.datepicker._getDaysInMonth(year, month));
-                                                       break;
-                                               case "y": case "Y" :
-                                                       year += parseInt(matches[1],10);
-                                                       day = Math.min(day, $.datepicker._getDaysInMonth(year, month));
-                                                       break;
-                                       }
-                                       matches = pattern.exec(offset);
-                               }
-                               return new Date(year, month, day);
-                       },
-                       newDate = (date == null || date === "" ? defaultDate : (typeof date === "string" ? offsetString(date) :
-                               (typeof date === "number" ? (isNaN(date) ? defaultDate : offsetNumeric(date)) : new Date(date.getTime()))));
-
-               newDate = (newDate && newDate.toString() === "Invalid Date" ? defaultDate : newDate);
-               if (newDate) {
-                       newDate.setHours(0);
-                       newDate.setMinutes(0);
-                       newDate.setSeconds(0);
-                       newDate.setMilliseconds(0);
-               }
-               return this._daylightSavingAdjust(newDate);
-       },
-
-       /* Handle switch to/from daylight saving.
-        * Hours may be non-zero on daylight saving cut-over:
-        * > 12 when midnight changeover, but then cannot generate
-        * midnight datetime, so jump to 1AM, otherwise reset.
-        * @param  date  (Date) the date to check
-        * @return  (Date) the corrected date
-        */
-       _daylightSavingAdjust: function(date) {
-               if (!date) {
-                       return null;
-               }
-               date.setHours(date.getHours() > 12 ? date.getHours() + 2 : 0);
-               return date;
-       },
-
-       /* Set the date(s) directly. */
-       _setDate: function(inst, date, noChange) {
-               var clear = !date,
-                       origMonth = inst.selectedMonth,
-                       origYear = inst.selectedYear,
-                       newDate = this._restrictMinMax(inst, this._determineDate(inst, date, new Date()));
-
-               inst.selectedDay = inst.currentDay = newDate.getDate();
-               inst.drawMonth = inst.selectedMonth = inst.currentMonth = newDate.getMonth();
-               inst.drawYear = inst.selectedYear = inst.currentYear = newDate.getFullYear();
-               if ((origMonth !== inst.selectedMonth || origYear !== inst.selectedYear) && !noChange) {
-                       this._notifyChange(inst);
-               }
-               this._adjustInstDate(inst);
-               if (inst.input) {
-                       inst.input.val(clear ? "" : this._formatDate(inst));
-               }
-       },
-
-       /* Retrieve the date(s) directly. */
-       _getDate: function(inst) {
-               var startDate = (!inst.currentYear || (inst.input && inst.input.val() === "") ? null :
-                       this._daylightSavingAdjust(new Date(
-                       inst.currentYear, inst.currentMonth, inst.currentDay)));
-                       return startDate;
-       },
-
-       /* Attach the onxxx handlers.  These are declared statically so
-        * they work with static code transformers like Caja.
-        */
-       _attachHandlers: function(inst) {
-               var stepMonths = this._get(inst, "stepMonths"),
-                       id = "#" + inst.id.replace( /\\\\/g, "\\" );
-               inst.dpDiv.find("[data-handler]").map(function () {
-                       var handler = {
-                               prev: function () {
-                                       $.datepicker._adjustDate(id, -stepMonths, "M");
-                               },
-                               next: function () {
-                                       $.datepicker._adjustDate(id, +stepMonths, "M");
-                               },
-                               hide: function () {
-                                       $.datepicker._hideDatepicker();
-                               },
-                               today: function () {
-                                       $.datepicker._gotoToday(id);
-                               },
-                               selectDay: function () {
-                                       $.datepicker._selectDay(id, +this.getAttribute("data-month"), +this.getAttribute("data-year"), this);
-                                       return false;
-                               },
-                               selectMonth: function () {
-                                       $.datepicker._selectMonthYear(id, this, "M");
-                                       return false;
-                               },
-                               selectYear: function () {
-                                       $.datepicker._selectMonthYear(id, this, "Y");
-                                       return false;
-                               }
-                       };
-                       $(this).bind(this.getAttribute("data-event"), handler[this.getAttribute("data-handler")]);
-               });
-       },
-
-       /* Generate the HTML for the current state of the date picker. */
-       _generateHTML: function(inst) {
-               var maxDraw, prevText, prev, nextText, next, currentText, gotoDate,
-                       controls, buttonPanel, firstDay, showWeek, dayNames, dayNamesMin,
-                       monthNames, monthNamesShort, beforeShowDay, showOtherMonths,
-                       selectOtherMonths, defaultDate, html, dow, row, group, col, selectedDate,
-                       cornerClass, calender, thead, day, daysInMonth, leadDays, curRows, numRows,
-                       printDate, dRow, tbody, daySettings, otherMonth, unselectable,
-                       tempDate = new Date(),
-                       today = this._daylightSavingAdjust(
-                               new Date(tempDate.getFullYear(), tempDate.getMonth(), tempDate.getDate())), // clear time
-                       isRTL = this._get(inst, "isRTL"),
-                       showButtonPanel = this._get(inst, "showButtonPanel"),
-                       hideIfNoPrevNext = this._get(inst, "hideIfNoPrevNext"),
-                       navigationAsDateFormat = this._get(inst, "navigationAsDateFormat"),
-                       numMonths = this._getNumberOfMonths(inst),
-                       showCurrentAtPos = this._get(inst, "showCurrentAtPos"),
-                       stepMonths = this._get(inst, "stepMonths"),
-                       isMultiMonth = (numMonths[0] !== 1 || numMonths[1] !== 1),
-                       currentDate = this._daylightSavingAdjust((!inst.currentDay ? new Date(9999, 9, 9) :
-                               new Date(inst.currentYear, inst.currentMonth, inst.currentDay))),
-                       minDate = this._getMinMaxDate(inst, "min"),
-                       maxDate = this._getMinMaxDate(inst, "max"),
-                       drawMonth = inst.drawMonth - showCurrentAtPos,
-                       drawYear = inst.drawYear;
-
-               if (drawMonth < 0) {
-                       drawMonth += 12;
-                       drawYear--;
-               }
-               if (maxDate) {
-                       maxDraw = this._daylightSavingAdjust(new Date(maxDate.getFullYear(),
-                               maxDate.getMonth() - (numMonths[0] * numMonths[1]) + 1, maxDate.getDate()));
-                       maxDraw = (minDate && maxDraw < minDate ? minDate : maxDraw);
-                       while (this._daylightSavingAdjust(new Date(drawYear, drawMonth, 1)) > maxDraw) {
-                               drawMonth--;
-                               if (drawMonth < 0) {
-                                       drawMonth = 11;
-                                       drawYear--;
-                               }
-                       }
-               }
-               inst.drawMonth = drawMonth;
-               inst.drawYear = drawYear;
-
-               prevText = this._get(inst, "prevText");
-               prevText = (!navigationAsDateFormat ? prevText : this.formatDate(prevText,
-                       this._daylightSavingAdjust(new Date(drawYear, drawMonth - stepMonths, 1)),
-                       this._getFormatConfig(inst)));
-
-               prev = (this._canAdjustMonth(inst, -1, drawYear, drawMonth) ?
-                       "<a class='ui-datepicker-prev ui-corner-all' data-handler='prev' data-event='click'" +
-                       " title='" + prevText + "'><span class='ui-icon ui-icon-circle-triangle-" + ( isRTL ? "e" : "w") + "'>" + prevText + "</span></a>" :
-                       (hideIfNoPrevNext ? "" : "<a class='ui-datepicker-prev ui-corner-all ui-state-disabled' title='"+ prevText +"'><span class='ui-icon ui-icon-circle-triangle-" + ( isRTL ? "e" : "w") + "'>" + prevText + "</span></a>"));
-
-               nextText = this._get(inst, "nextText");
-               nextText = (!navigationAsDateFormat ? nextText : this.formatDate(nextText,
-                       this._daylightSavingAdjust(new Date(drawYear, drawMonth + stepMonths, 1)),
-                       this._getFormatConfig(inst)));
-
-               next = (this._canAdjustMonth(inst, +1, drawYear, drawMonth) ?
-                       "<a class='ui-datepicker-next ui-corner-all' data-handler='next' data-event='click'" +
-                       " title='" + nextText + "'><span class='ui-icon ui-icon-circle-triangle-" + ( isRTL ? "w" : "e") + "'>" + nextText + "</span></a>" :
-                       (hideIfNoPrevNext ? "" : "<a class='ui-datepicker-next ui-corner-all ui-state-disabled' title='"+ nextText + "'><span class='ui-icon ui-icon-circle-triangle-" + ( isRTL ? "w" : "e") + "'>" + nextText + "</span></a>"));
-
-               currentText = this._get(inst, "currentText");
-               gotoDate = (this._get(inst, "gotoCurrent") && inst.currentDay ? currentDate : today);
-               currentText = (!navigationAsDateFormat ? currentText :
-                       this.formatDate(currentText, gotoDate, this._getFormatConfig(inst)));
-
-               controls = (!inst.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(inst, "closeText") + "</button>" : "");
-
-               buttonPanel = (showButtonPanel) ? "<div class='ui-datepicker-buttonpane ui-widget-content'>" + (isRTL ? controls : "") +
-                       (this._isInRange(inst, gotoDate) ? "<button type='button' class='ui-datepicker-current ui-state-default ui-priority-secondary ui-corner-all' data-handler='today' data-event='click'" +
-                       ">" + currentText + "</button>" : "") + (isRTL ? "" : controls) + "</div>" : "";
-
-               firstDay = parseInt(this._get(inst, "firstDay"),10);
-               firstDay = (isNaN(firstDay) ? 0 : firstDay);
-
-               showWeek = this._get(inst, "showWeek");
-               dayNames = this._get(inst, "dayNames");
-               dayNamesMin = this._get(inst, "dayNamesMin");
-               monthNames = this._get(inst, "monthNames");
-               monthNamesShort = this._get(inst, "monthNamesShort");
-               beforeShowDay = this._get(inst, "beforeShowDay");
-               showOtherMonths = this._get(inst, "showOtherMonths");
-               selectOtherMonths = this._get(inst, "selectOtherMonths");
-               defaultDate = this._getDefaultDate(inst);
-               html = "";
-               dow;
-               for (row = 0; row < numMonths[0]; row++) {
-                       group = "";
-                       this.maxRows = 4;
-                       for (col = 0; col < numMonths[1]; col++) {
-                               selectedDate = this._daylightSavingAdjust(new Date(drawYear, drawMonth, inst.selectedDay));
-                               cornerClass = " ui-corner-all";
-                               calender = "";
-                               if (isMultiMonth) {
-                                       calender += "<div class='ui-datepicker-group";
-                                       if (numMonths[1] > 1) {
-                                               switch (col) {
-                                                       case 0: calender += " ui-datepicker-group-first";
-                                                               cornerClass = " ui-corner-" + (isRTL ? "right" : "left"); break;
-                                                       case numMonths[1]-1: calender += " ui-datepicker-group-last";
-                                                               cornerClass = " ui-corner-" + (isRTL ? "left" : "right"); break;
-                                                       default: calender += " ui-datepicker-group-middle"; cornerClass = ""; break;
-                                               }
-                                       }
-                                       calender += "'>";
-                               }
-                               calender += "<div class='ui-datepicker-header ui-widget-header ui-helper-clearfix" + cornerClass + "'>" +
-                                       (/all|left/.test(cornerClass) && row === 0 ? (isRTL ? next : prev) : "") +
-                                       (/all|right/.test(cornerClass) && row === 0 ? (isRTL ? prev : next) : "") +
-                                       this._generateMonthYearHeader(inst, drawMonth, drawYear, minDate, maxDate,
-                                       row > 0 || col > 0, monthNames, monthNamesShort) + // draw month headers
-                                       "</div><table class='ui-datepicker-calendar'><thead>" +
-                                       "<tr>";
-                               thead = (showWeek ? "<th class='ui-datepicker-week-col'>" + this._get(inst, "weekHeader") + "</th>" : "");
-                               for (dow = 0; dow < 7; dow++) { // days of the week
-                                       day = (dow + firstDay) % 7;
-                                       thead += "<th scope='col'" + ((dow + firstDay + 6) % 7 >= 5 ? " class='ui-datepicker-week-end'" : "") + ">" +
-                                               "<span title='" + dayNames[day] + "'>" + dayNamesMin[day] + "</span></th>";
-                               }
-                               calender += thead + "</tr></thead><tbody>";
-                               daysInMonth = this._getDaysInMonth(drawYear, drawMonth);
-                               if (drawYear === inst.selectedYear && drawMonth === inst.selectedMonth) {
-                                       inst.selectedDay = Math.min(inst.selectedDay, daysInMonth);
-                               }
-                               leadDays = (this._getFirstDayOfMonth(drawYear, drawMonth) - firstDay + 7) % 7;
-                               curRows = Math.ceil((leadDays + daysInMonth) / 7); // calculate the number of rows to generate
-                               numRows = (isMultiMonth ? this.maxRows > curRows ? this.maxRows : curRows : curRows); //If multiple months, use the higher number of rows (see #7043)
-                               this.maxRows = numRows;
-                               printDate = this._daylightSavingAdjust(new Date(drawYear, drawMonth, 1 - leadDays));
-                               for (dRow = 0; dRow < numRows; dRow++) { // create date picker rows
-                                       calender += "<tr>";
-                                       tbody = (!showWeek ? "" : "<td class='ui-datepicker-week-col'>" +
-                                               this._get(inst, "calculateWeek")(printDate) + "</td>");
-                                       for (dow = 0; dow < 7; dow++) { // create date picker days
-                                               daySettings = (beforeShowDay ?
-                                                       beforeShowDay.apply((inst.input ? inst.input[0] : null), [printDate]) : [true, ""]);
-                                               otherMonth = (printDate.getMonth() !== drawMonth);
-                                               unselectable = (otherMonth && !selectOtherMonths) || !daySettings[0] ||
-                                                       (minDate && printDate < minDate) || (maxDate && printDate > maxDate);
-                                               tbody += "<td class='" +
-                                                       ((dow + firstDay + 6) % 7 >= 5 ? " ui-datepicker-week-end" : "") + // highlight weekends
-                                                       (otherMonth ? " ui-datepicker-other-month" : "") + // highlight days from other months
-                                                       ((printDate.getTime() === selectedDate.getTime() && drawMonth === inst.selectedMonth && inst._keyEvent) || // user pressed key
-                                                       (defaultDate.getTime() === printDate.getTime() && defaultDate.getTime() === selectedDate.getTime()) ?
-                                                       // or defaultDate is current printedDate and defaultDate is selectedDate
-                                                       " " + this._dayOverClass : "") + // highlight selected day
-                                                       (unselectable ? " " + this._unselectableClass + " ui-state-disabled": "") +  // highlight unselectable days
-                                                       (otherMonth && !showOtherMonths ? "" : " " + daySettings[1] + // highlight custom dates
-                                                       (printDate.getTime() === currentDate.getTime() ? " " + this._currentClass : "") + // highlight selected day
-                                                       (printDate.getTime() === today.getTime() ? " ui-datepicker-today" : "")) + "'" + // highlight today (if different)
-                                                       ((!otherMonth || showOtherMonths) && daySettings[2] ? " title='" + daySettings[2].replace(/'/g, "&#39;") + "'" : "") + // cell title
-                                                       (unselectable ? "" : " data-handler='selectDay' data-event='click' data-month='" + printDate.getMonth() + "' data-year='" + printDate.getFullYear() + "'") + ">" + // actions
-                                                       (otherMonth && !showOtherMonths ? "&#xa0;" : // display for other months
-                                                       (unselectable ? "<span class='ui-state-default'>" + printDate.getDate() + "</span>" : "<a class='ui-state-default" +
-                                                       (printDate.getTime() === today.getTime() ? " ui-state-highlight" : "") +
-                                                       (printDate.getTime() === currentDate.getTime() ? " ui-state-active" : "") + // highlight selected day
-                                                       (otherMonth ? " ui-priority-secondary" : "") + // distinguish dates from other months
-                                                       "' href='#'>" + printDate.getDate() + "</a>")) + "</td>"; // display selectable date
-                                               printDate.setDate(printDate.getDate() + 1);
-                                               printDate = this._daylightSavingAdjust(printDate);
-                                       }
-                                       calender += tbody + "</tr>";
-                               }
-                               drawMonth++;
-                               if (drawMonth > 11) {
-                                       drawMonth = 0;
-                                       drawYear++;
-                               }
-                               calender += "</tbody></table>" + (isMultiMonth ? "</div>" +
-                                                       ((numMonths[0] > 0 && col === numMonths[1]-1) ? "<div class='ui-datepicker-row-break'></div>" : "") : "");
-                               group += calender;
-                       }
-                       html += group;
-               }
-               html += buttonPanel;
-               inst._keyEvent = false;
-               return html;
-       },
-
-       /* Generate the month and year header. */
-       _generateMonthYearHeader: function(inst, drawMonth, drawYear, minDate, maxDate,
-                       secondary, monthNames, monthNamesShort) {
-
-               var inMinYear, inMaxYear, month, years, thisYear, determineYear, year, endYear,
-                       changeMonth = this._get(inst, "changeMonth"),
-                       changeYear = this._get(inst, "changeYear"),
-                       showMonthAfterYear = this._get(inst, "showMonthAfterYear"),
-                       html = "<div class='ui-datepicker-title'>",
-                       monthHtml = "";
-
-               // month selection
-               if (secondary || !changeMonth) {
-                       monthHtml += "<span class='ui-datepicker-month'>" + monthNames[drawMonth] + "</span>";
-               } else {
-                       inMinYear = (minDate && minDate.getFullYear() === drawYear);
-                       inMaxYear = (maxDate && maxDate.getFullYear() === drawYear);
-                       monthHtml += "<select class='ui-datepicker-month' data-handler='selectMonth' data-event='change'>";
-                       for ( month = 0; month < 12; month++) {
-                               if ((!inMinYear || month >= minDate.getMonth()) && (!inMaxYear || month <= maxDate.getMonth())) {
-                                       monthHtml += "<option value='" + month + "'" +
-                                               (month === drawMonth ? " selected='selected'" : "") +
-                                               ">" + monthNamesShort[month] + "</option>";
-                               }
-                       }
-                       monthHtml += "</select>";
-               }
-
-               if (!showMonthAfterYear) {
-                       html += monthHtml + (secondary || !(changeMonth && changeYear) ? "&#xa0;" : "");
-               }
-
-               // year selection
-               if ( !inst.yearshtml ) {
-                       inst.yearshtml = "";
-                       if (secondary || !changeYear) {
-                               html += "<span class='ui-datepicker-year'>" + drawYear + "</span>";
-                       } else {
-                               // determine range of years to display
-                               years = this._get(inst, "yearRange").split(":");
-                               thisYear = new Date().getFullYear();
-                               determineYear = function(value) {
-                                       var year = (value.match(/c[+\-].*/) ? drawYear + parseInt(value.substring(1), 10) :
-                                               (value.match(/[+\-].*/) ? thisYear + parseInt(value, 10) :
-                                               parseInt(value, 10)));
-                                       return (isNaN(year) ? thisYear : year);
-                               };
-                               year = determineYear(years[0]);
-                               endYear = Math.max(year, determineYear(years[1] || ""));
-                               year = (minDate ? Math.max(year, minDate.getFullYear()) : year);
-                               endYear = (maxDate ? Math.min(endYear, maxDate.getFullYear()) : endYear);
-                               inst.yearshtml += "<select class='ui-datepicker-year' data-handler='selectYear' data-event='change'>";
-                               for (; year <= endYear; year++) {
-                                       inst.yearshtml += "<option value='" + year + "'" +
-                                               (year === drawYear ? " selected='selected'" : "") +
-                                               ">" + year + "</option>";
-                               }
-                               inst.yearshtml += "</select>";
-
-                               html += inst.yearshtml;
-                               inst.yearshtml = null;
-                       }
-               }
-
-               html += this._get(inst, "yearSuffix");
-               if (showMonthAfterYear) {
-                       html += (secondary || !(changeMonth && changeYear) ? "&#xa0;" : "") + monthHtml;
-               }
-               html += "</div>"; // Close datepicker_header
-               return html;
-       },
-
-       /* Adjust one of the date sub-fields. */
-       _adjustInstDate: function(inst, offset, period) {
-               var year = inst.drawYear + (period === "Y" ? offset : 0),
-                       month = inst.drawMonth + (period === "M" ? offset : 0),
-                       day = Math.min(inst.selectedDay, this._getDaysInMonth(year, month)) + (period === "D" ? offset : 0),
-                       date = this._restrictMinMax(inst, this._daylightSavingAdjust(new Date(year, month, day)));
-
-               inst.selectedDay = date.getDate();
-               inst.drawMonth = inst.selectedMonth = date.getMonth();
-               inst.drawYear = inst.selectedYear = date.getFullYear();
-               if (period === "M" || period === "Y") {
-                       this._notifyChange(inst);
-               }
-       },
-
-       /* Ensure a date is within any min/max bounds. */
-       _restrictMinMax: function(inst, date) {
-               var minDate = this._getMinMaxDate(inst, "min"),
-                       maxDate = this._getMinMaxDate(inst, "max"),
-                       newDate = (minDate && date < minDate ? minDate : date);
-               return (maxDate && newDate > maxDate ? maxDate : newDate);
-       },
-
-       /* Notify change of month/year. */
-       _notifyChange: function(inst) {
-               var onChange = this._get(inst, "onChangeMonthYear");
-               if (onChange) {
-                       onChange.apply((inst.input ? inst.input[0] : null),
-                               [inst.selectedYear, inst.selectedMonth + 1, inst]);
-               }
-       },
-
-       /* Determine the number of months to show. */
-       _getNumberOfMonths: function(inst) {
-               var numMonths = this._get(inst, "numberOfMonths");
-               return (numMonths == null ? [1, 1] : (typeof numMonths === "number" ? [1, numMonths] : numMonths));
-       },
-
-       /* Determine the current maximum date - ensure no time components are set. */
-       _getMinMaxDate: function(inst, minMax) {
-               return this._determineDate(inst, this._get(inst, minMax + "Date"), null);
-       },
-
-       /* Find the number of days in a given month. */
-       _getDaysInMonth: function(year, month) {
-               return 32 - this._daylightSavingAdjust(new Date(year, month, 32)).getDate();
-       },
-
-       /* Find the day of the week of the first of a month. */
-       _getFirstDayOfMonth: function(year, month) {
-               return new Date(year, month, 1).getDay();
-       },
-
-       /* Determines if we should allow a "next/prev" month display change. */
-       _canAdjustMonth: function(inst, offset, curYear, curMonth) {
-               var numMonths = this._getNumberOfMonths(inst),
-                       date = this._daylightSavingAdjust(new Date(curYear,
-                       curMonth + (offset < 0 ? offset : numMonths[0] * numMonths[1]), 1));
-
-               if (offset < 0) {
-                       date.setDate(this._getDaysInMonth(date.getFullYear(), date.getMonth()));
-               }
-               return this._isInRange(inst, date);
-       },
-
-       /* Is the given date in the accepted range? */
-       _isInRange: function(inst, date) {
-               var yearSplit, currentYear,
-                       minDate = this._getMinMaxDate(inst, "min"),
-                       maxDate = this._getMinMaxDate(inst, "max"),
-                       minYear = null,
-                       maxYear = null,
-                       years = this._get(inst, "yearRange");
-                       if (years){
-                               yearSplit = years.split(":");
-                               currentYear = new Date().getFullYear();
-                               minYear = parseInt(yearSplit[0], 10);
-                               maxYear = parseInt(yearSplit[1], 10);
-                               if ( yearSplit[0].match(/[+\-].*/) ) {
-                                       minYear += currentYear;
-                               }
-                               if ( yearSplit[1].match(/[+\-].*/) ) {
-                                       maxYear += currentYear;
-                               }
-                       }
-
-               return ((!minDate || date.getTime() >= minDate.getTime()) &&
-                       (!maxDate || date.getTime() <= maxDate.getTime()) &&
-                       (!minYear || date.getFullYear() >= minYear) &&
-                       (!maxYear || date.getFullYear() <= maxYear));
-       },
-
-       /* Provide the configuration settings for formatting/parsing. */
-       _getFormatConfig: function(inst) {
-               var shortYearCutoff = this._get(inst, "shortYearCutoff");
-               shortYearCutoff = (typeof shortYearCutoff !== "string" ? shortYearCutoff :
-                       new Date().getFullYear() % 100 + parseInt(shortYearCutoff, 10));
-               return {shortYearCutoff: shortYearCutoff,
-                       dayNamesShort: this._get(inst, "dayNamesShort"), dayNames: this._get(inst, "dayNames"),
-                       monthNamesShort: this._get(inst, "monthNamesShort"), monthNames: this._get(inst, "monthNames")};
-       },
-
-       /* Format the given date for display. */
-       _formatDate: function(inst, day, month, year) {
-               if (!day) {
-                       inst.currentDay = inst.selectedDay;
-                       inst.currentMonth = inst.selectedMonth;
-                       inst.currentYear = inst.selectedYear;
-               }
-               var date = (day ? (typeof day === "object" ? day :
-                       this._daylightSavingAdjust(new Date(year, month, day))) :
-                       this._daylightSavingAdjust(new Date(inst.currentYear, inst.currentMonth, inst.currentDay)));
-               return this.formatDate(this._get(inst, "dateFormat"), date, this._getFormatConfig(inst));
-       }
-});
-
-/*
- * Bind hover events for datepicker elements.
- * Done via delegate so the binding only occurs once in the lifetime of the parent div.
- * Global datepicker_instActive, set by _updateDatepicker allows the handlers to find their way back to the active picker.
- */
-function datepicker_bindHover(dpDiv) {
-       var selector = "button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a";
-       return dpDiv.delegate(selector, "mouseout", function() {
-                       $(this).removeClass("ui-state-hover");
-                       if (this.className.indexOf("ui-datepicker-prev") !== -1) {
-                               $(this).removeClass("ui-datepicker-prev-hover");
-                       }
-                       if (this.className.indexOf("ui-datepicker-next") !== -1) {
-                               $(this).removeClass("ui-datepicker-next-hover");
-                       }
-               })
-               .delegate( selector, "mouseover", datepicker_handleMouseover );
-}
-
-function datepicker_handleMouseover() {
-       if (!$.datepicker._isDisabledDatepicker( datepicker_instActive.inline? datepicker_instActive.dpDiv.parent()[0] : datepicker_instActive.input[0])) {
-               $(this).parents(".ui-datepicker-calendar").find("a").removeClass("ui-state-hover");
-               $(this).addClass("ui-state-hover");
-               if (this.className.indexOf("ui-datepicker-prev") !== -1) {
-                       $(this).addClass("ui-datepicker-prev-hover");
-               }
-               if (this.className.indexOf("ui-datepicker-next") !== -1) {
-                       $(this).addClass("ui-datepicker-next-hover");
-               }
-       }
-}
-
-/* jQuery extend now ignores nulls! */
-function datepicker_extendRemove(target, props) {
-       $.extend(target, props);
-       for (var name in props) {
-               if (props[name] == null) {
-                       target[name] = props[name];
-               }
-       }
-       return target;
-}
-
-/* Invoke the datepicker functionality.
-   @param  options  string - a command, optionally followed by additional parameters or
-                                       Object - settings for attaching new datepicker functionality
-   @return  jQuery object */
-$.fn.datepicker = function(options){
-
-       /* Verify an empty collection wasn't passed - Fixes #6976 */
-       if ( !this.length ) {
-               return this;
-       }
-
-       /* Initialise the date picker. */
-       if (!$.datepicker.initialized) {
-               $(document).mousedown($.datepicker._checkExternalClick);
-               $.datepicker.initialized = true;
-       }
-
-       /* Append datepicker main container to body if not exist. */
-       if ($("#"+$.datepicker._mainDivId).length === 0) {
-               $("body").append($.datepicker.dpDiv);
-       }
-
-       var otherArgs = Array.prototype.slice.call(arguments, 1);
-       if (typeof options === "string" && (options === "isDisabled" || options === "getDate" || options === "widget")) {
-               return $.datepicker["_" + options + "Datepicker"].
-                       apply($.datepicker, [this[0]].concat(otherArgs));
-       }
-       if (options === "option" && arguments.length === 2 && typeof arguments[1] === "string") {
-               return $.datepicker["_" + options + "Datepicker"].
-                       apply($.datepicker, [this[0]].concat(otherArgs));
-       }
-       return this.each(function() {
-               typeof options === "string" ?
-                       $.datepicker["_" + options + "Datepicker"].
-                               apply($.datepicker, [this].concat(otherArgs)) :
-                       $.datepicker._attachDatepicker(this, options);
-       });
-};
-
-$.datepicker = new Datepicker(); // singleton instance
-$.datepicker.initialized = false;
-$.datepicker.uuid = new Date().getTime();
-$.datepicker.version = "1.11.3";
-
-var datepicker = $.datepicker;
-
-
-/*!
- * jQuery UI Draggable 1.11.3
- * http://jqueryui.com
- *
- * Copyright jQuery Foundation and other contributors
- * Released under the MIT license.
- * http://jquery.org/license
- *
- * http://api.jqueryui.com/draggable/
- */
-
-
-$.widget("ui.draggable", $.ui.mouse, {
-       version: "1.11.3",
-       widgetEventPrefix: "drag",
-       options: {
-               addClasses: true,
-               appendTo: "parent",
-               axis: false,
-               connectToSortable: false,
-               containment: false,
-               cursor: "auto",
-               cursorAt: false,
-               grid: false,
-               handle: false,
-               helper: "original",
-               iframeFix: false,
-               opacity: false,
-               refreshPositions: false,
-               revert: false,
-               revertDuration: 500,
-               scope: "default",
-               scroll: true,
-               scrollSensitivity: 20,
-               scrollSpeed: 20,
-               snap: false,
-               snapMode: "both",
-               snapTolerance: 20,
-               stack: false,
-               zIndex: false,
-
-               // callbacks
-               drag: null,
-               start: null,
-               stop: null
-       },
-       _create: function() {
-
-               if ( this.options.helper === "original" ) {
-                       this._setPositionRelative();
-               }
-               if (this.options.addClasses){
-                       this.element.addClass("ui-draggable");
-               }
-               if (this.options.disabled){
-                       this.element.addClass("ui-draggable-disabled");
-               }
-               this._setHandleClassName();
-
-               this._mouseInit();
-       },
-
-       _setOption: function( key, value ) {
-               this._super( key, value );
-               if ( key === "handle" ) {
-                       this._removeHandleClassName();
-                       this._setHandleClassName();
-               }
-       },
-
-       _destroy: function() {
-               if ( ( this.helper || this.element ).is( ".ui-draggable-dragging" ) ) {
-                       this.destroyOnClear = true;
-                       return;
-               }
-               this.element.removeClass( "ui-draggable ui-draggable-dragging ui-draggable-disabled" );
-               this._removeHandleClassName();
-               this._mouseDestroy();
-       },
-
-       _mouseCapture: function(event) {
-               var o = this.options;
-
-               this._blurActiveElement( event );
-
-               // among others, prevent a drag on a resizable-handle
-               if (this.helper || o.disabled || $(event.target).closest(".ui-resizable-handle").length > 0) {
-                       return false;
-               }
-
-               //Quit if we're not on a valid handle
-               this.handle = this._getHandle(event);
-               if (!this.handle) {
-                       return false;
-               }
-
-               this._blockFrames( o.iframeFix === true ? "iframe" : o.iframeFix );
-
-               return true;
-
-       },
-
-       _blockFrames: function( selector ) {
-               this.iframeBlocks = this.document.find( selector ).map(function() {
-                       var iframe = $( this );
-
-                       return $( "<div>" )
-                               .css( "position", "absolute" )
-                               .appendTo( iframe.parent() )
-                               .outerWidth( iframe.outerWidth() )
-                               .outerHeight( iframe.outerHeight() )
-                               .offset( iframe.offset() )[ 0 ];
-               });
-       },
-
-       _unblockFrames: function() {
-               if ( this.iframeBlocks ) {
-                       this.iframeBlocks.remove();
-                       delete this.iframeBlocks;
-               }
-       },
-
-       _blurActiveElement: function( event ) {
-               var document = this.document[ 0 ];
-
-               // Only need to blur if the event occurred on the draggable itself, see #10527
-               if ( !this.handleElement.is( event.target ) ) {
-                       return;
-               }
-
-               // support: IE9
-               // IE9 throws an "Unspecified error" accessing document.activeElement from an <iframe>
-               try {
-
-                       // Support: IE9, IE10
-                       // If the <body> is blurred, IE will switch windows, see #9520
-                       if ( document.activeElement && document.activeElement.nodeName.toLowerCase() !== "body" ) {
-
-                               // Blur any element that currently has focus, see #4261
-                               $( document.activeElement ).blur();
-                       }
-               } catch ( error ) {}
-       },
-
-       _mouseStart: function(event) {
-
-               var o = this.options;
-
-               //Create and append the visible helper
-               this.helper = this._createHelper(event);
-
-               this.helper.addClass("ui-draggable-dragging");
-
-               //Cache the helper size
-               this._cacheHelperProportions();
-
-               //If ddmanager is used for droppables, set the global draggable
-               if ($.ui.ddmanager) {
-                       $.ui.ddmanager.current = this;
-               }
-
-               /*
-                * - Position generation -
-                * This block generates everything position related - it's the core of draggables.
-                */
-
-               //Cache the margins of the original element
-               this._cacheMargins();
-
-               //Store the helper's css position
-               this.cssPosition = this.helper.css( "position" );
-               this.scrollParent = this.helper.scrollParent( true );
-               this.offsetParent = this.helper.offsetParent();
-               this.hasFixedAncestor = this.helper.parents().filter(function() {
-                               return $( this ).css( "position" ) === "fixed";
-                       }).length > 0;
-
-               //The element's absolute position on the page minus margins
-               this.positionAbs = this.element.offset();
-               this._refreshOffsets( event );
-
-               //Generate the original position
-               this.originalPosition = this.position = this._generatePosition( event, false );
-               this.originalPageX = event.pageX;
-               this.originalPageY = event.pageY;
-
-               //Adjust the mouse offset relative to the helper if "cursorAt" is supplied
-               (o.cursorAt && this._adjustOffsetFromHelper(o.cursorAt));
-
-               //Set a containment if given in the options
-               this._setContainment();
-
-               //Trigger event + callbacks
-               if (this._trigger("start", event) === false) {
-                       this._clear();
-                       return false;
-               }
-
-               //Recache the helper size
-               this._cacheHelperProportions();
-
-               //Prepare the droppable offsets
-               if ($.ui.ddmanager && !o.dropBehaviour) {
-                       $.ui.ddmanager.prepareOffsets(this, event);
-               }
-
-               // Reset helper's right/bottom css if they're set and set explicit width/height instead
-               // as this prevents resizing of elements with right/bottom set (see #7772)
-               this._normalizeRightBottom();
-
-               this._mouseDrag(event, true); //Execute the drag once - this causes the helper not to be visible before getting its correct position
-
-               //If the ddmanager is used for droppables, inform the manager that dragging has started (see #5003)
-               if ( $.ui.ddmanager ) {
-                       $.ui.ddmanager.dragStart(this, event);
-               }
-
-               return true;
-       },
-
-       _refreshOffsets: function( event ) {
-               this.offset = {
-                       top: this.positionAbs.top - this.margins.top,
-                       left: this.positionAbs.left - this.margins.left,
-                       scroll: false,
-                       parent: this._getParentOffset(),
-                       relative: this._getRelativeOffset()
-               };
-
-               this.offset.click = {
-                       left: event.pageX - this.offset.left,
-                       top: event.pageY - this.offset.top
-               };
-       },
-
-       _mouseDrag: function(event, noPropagation) {
-               // reset any necessary cached properties (see #5009)
-               if ( this.hasFixedAncestor ) {
-                       this.offset.parent = this._getParentOffset();
-               }
-
-               //Compute the helpers position
-               this.position = this._generatePosition( event, true );
-               this.positionAbs = this._convertPositionTo("absolute");
-
-               //Call plugins and callbacks and use the resulting position if something is returned
-               if (!noPropagation) {
-                       var ui = this._uiHash();
-                       if (this._trigger("drag", event, ui) === false) {
-                               this._mouseUp({});
-                               return false;
-                       }
-                       this.position = ui.position;
-               }
-
-               this.helper[ 0 ].style.left = this.position.left + "px";
-               this.helper[ 0 ].style.top = this.position.top + "px";
-
-               if ($.ui.ddmanager) {
-                       $.ui.ddmanager.drag(this, event);
-               }
-
-               return false;
-       },
-
-       _mouseStop: function(event) {
-
-               //If we are using droppables, inform the manager about the drop
-               var that = this,
-                       dropped = false;
-               if ($.ui.ddmanager && !this.options.dropBehaviour) {
-                       dropped = $.ui.ddmanager.drop(this, event);
-               }
-
-               //if a drop comes from outside (a sortable)
-               if (this.dropped) {
-                       dropped = this.dropped;
-                       this.dropped = false;
-               }
-
-               if ((this.options.revert === "invalid" && !dropped) || (this.options.revert === "valid" && dropped) || this.options.revert === true || ($.isFunction(this.options.revert) && this.options.revert.call(this.element, dropped))) {
-                       $(this.helper).animate(this.originalPosition, parseInt(this.options.revertDuration, 10), function() {
-                               if (that._trigger("stop", event) !== false) {
-                                       that._clear();
-                               }
-                       });
-               } else {
-                       if (this._trigger("stop", event) !== false) {
-                               this._clear();
-                       }
-               }
-
-               return false;
-       },
-
-       _mouseUp: function( event ) {
-               this._unblockFrames();
-
-               //If the ddmanager is used for droppables, inform the manager that dragging has stopped (see #5003)
-               if ( $.ui.ddmanager ) {
-                       $.ui.ddmanager.dragStop(this, event);
-               }
-
-               // Only need to focus if the event occurred on the draggable itself, see #10527
-               if ( this.handleElement.is( event.target ) ) {
-                       // The interaction is over; whether or not the click resulted in a drag, focus the element
-                       this.element.focus();
-               }
-
-               return $.ui.mouse.prototype._mouseUp.call(this, event);
-       },
-
-       cancel: function() {
-
-               if (this.helper.is(".ui-draggable-dragging")) {
-                       this._mouseUp({});
-               } else {
-                       this._clear();
-               }
-
-               return this;
-
-       },
-
-       _getHandle: function(event) {
-               return this.options.handle ?
-                       !!$( event.target ).closest( this.element.find( this.options.handle ) ).length :
-                       true;
-       },
-
-       _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(event) {
-
-               var o = this.options,
-                       helperIsFunction = $.isFunction( o.helper ),
-                       helper = helperIsFunction ?
-                               $( o.helper.apply( this.element[ 0 ], [ event ] ) ) :
-                               ( o.helper === "clone" ?
-                                       this.element.clone().removeAttr( "id" ) :
-                                       this.element );
-
-               if (!helper.parents("body").length) {
-                       helper.appendTo((o.appendTo === "parent" ? this.element[0].parentNode : o.appendTo));
-               }
-
-               // http://bugs.jqueryui.com/ticket/9446
-               // a helper function can return the original element
-               // which wouldn't have been set to relative in _create
-               if ( helperIsFunction && helper[ 0 ] === this.element[ 0 ] ) {
-                       this._setPositionRelative();
-               }
-
-               if (helper[0] !== this.element[0] && !(/(fixed|absolute)/).test(helper.css("position"))) {
-                       helper.css("position", "absolute");
-               }
-
-               return helper;
-
-       },
-
-       _setPositionRelative: function() {
-               if ( !( /^(?:r|a|f)/ ).test( this.element.css( "position" ) ) ) {
-                       this.element[ 0 ].style.position = "relative";
-               }
-       },
-
-       _adjustOffsetFromHelper: function(obj) {
-               if (typeof obj === "string") {
-                       obj = obj.split(" ");
-               }
-               if ($.isArray(obj)) {
-                       obj = { left: +obj[0], top: +obj[1] || 0 };
-               }
-               if ("left" in obj) {
-                       this.offset.click.left = obj.left + this.margins.left;
-               }
-               if ("right" in obj) {
-                       this.offset.click.left = this.helperProportions.width - obj.right + this.margins.left;
-               }
-               if ("top" in obj) {
-                       this.offset.click.top = obj.top + this.margins.top;
-               }
-               if ("bottom" in obj) {
-                       this.offset.click.top = this.helperProportions.height - obj.bottom + this.margins.top;
-               }
-       },
-
-       _isRootNode: function( element ) {
-               return ( /(html|body)/i ).test( element.tagName ) || element === this.document[ 0 ];
-       },
-
-       _getParentOffset: function() {
-
-               //Get the offsetParent and cache its position
-               var po = this.offsetParent.offset(),
-                       document = this.document[ 0 ];
-
-               // This is a special case where we need to modify a offset calculated on start, since the following happened:
-               // 1. The position of the helper is absolute, so it's position is calculated based on the next positioned parent
-               // 2. The actual offset parent is a child of the scroll parent, and the scroll parent isn't the document, which means that
-               //    the scroll is included in the initial calculation of the offset of the parent, and never recalculated upon drag
-               if (this.cssPosition === "absolute" && this.scrollParent[0] !== document && $.contains(this.scrollParent[0], this.offsetParent[0])) {
-                       po.left += this.scrollParent.scrollLeft();
-                       po.top += this.scrollParent.scrollTop();
-               }
-
-               if ( this._isRootNode( this.offsetParent[ 0 ] ) ) {
-                       po = { top: 0, left: 0 };
-               }
-
-               return {
-                       top: po.top + (parseInt(this.offsetParent.css("borderTopWidth"), 10) || 0),
-                       left: po.left + (parseInt(this.offsetParent.css("borderLeftWidth"), 10) || 0)
-               };
-
-       },
-
-       _getRelativeOffset: function() {
-               if ( this.cssPosition !== "relative" ) {
-                       return { top: 0, left: 0 };
-               }
-
-               var p = this.element.position(),
-                       scrollIsRootNode = this._isRootNode( this.scrollParent[ 0 ] );
-
-               return {
-                       top: p.top - ( parseInt(this.helper.css( "top" ), 10) || 0 ) + ( !scrollIsRootNode ? this.scrollParent.scrollTop() : 0 ),
-                       left: p.left - ( parseInt(this.helper.css( "left" ), 10) || 0 ) + ( !scrollIsRootNode ? this.scrollParent.scrollLeft() : 0 )
-               };
-
-       },
-
-       _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 isUserScrollable, c, ce,
-                       o = this.options,
-                       document = this.document[ 0 ];
-
-               this.relativeContainer = null;
-
-               if ( !o.containment ) {
-                       this.containment = null;
-                       return;
-               }
-
-               if ( o.containment === "window" ) {
-                       this.containment = [
-                               $( window ).scrollLeft() - this.offset.relative.left - this.offset.parent.left,
-                               $( window ).scrollTop() - this.offset.relative.top - this.offset.parent.top,
-                               $( window ).scrollLeft() + $( window ).width() - this.helperProportions.width - this.margins.left,
-                               $( window ).scrollTop() + ( $( window ).height() || document.body.parentNode.scrollHeight ) - this.helperProportions.height - this.margins.top
-                       ];
-                       return;
-               }
-
-               if ( o.containment === "document") {
-                       this.containment = [
-                               0,
-                               0,
-                               $( document ).width() - this.helperProportions.width - this.margins.left,
-                               ( $( document ).height() || document.body.parentNode.scrollHeight ) - this.helperProportions.height - this.margins.top
-                       ];
-                       return;
-               }
-
-               if ( o.containment.constructor === Array ) {
-                       this.containment = o.containment;
-                       return;
-               }
-
-               if ( o.containment === "parent" ) {
-                       o.containment = this.helper[ 0 ].parentNode;
-               }
-
-               c = $( o.containment );
-               ce = c[ 0 ];
-
-               if ( !ce ) {
-                       return;
-               }
-
-               isUserScrollable = /(scroll|auto)/.test( c.css( "overflow" ) );
-
-               this.containment = [
-                       ( parseInt( c.css( "borderLeftWidth" ), 10 ) || 0 ) + ( parseInt( c.css( "paddingLeft" ), 10 ) || 0 ),
-                       ( parseInt( c.css( "borderTopWidth" ), 10 ) || 0 ) + ( parseInt( c.css( "paddingTop" ), 10 ) || 0 ),
-                       ( isUserScrollable ? Math.max( ce.scrollWidth, ce.offsetWidth ) : ce.offsetWidth ) -
-                               ( parseInt( c.css( "borderRightWidth" ), 10 ) || 0 ) -
-                               ( parseInt( c.css( "paddingRight" ), 10 ) || 0 ) -
-                               this.helperProportions.width -
-                               this.margins.left -
-                               this.margins.right,
-                       ( isUserScrollable ? Math.max( ce.scrollHeight, ce.offsetHeight ) : ce.offsetHeight ) -
-                               ( parseInt( c.css( "borderBottomWidth" ), 10 ) || 0 ) -
-                               ( parseInt( c.css( "paddingBottom" ), 10 ) || 0 ) -
-                               this.helperProportions.height -
-                               this.margins.top -
-                               this.margins.bottom
-               ];
-               this.relativeContainer = c;
-       },
-
-       _convertPositionTo: function(d, pos) {
-
-               if (!pos) {
-                       pos = this.position;
-               }
-
-               var mod = d === "absolute" ? 1 : -1,
-                       scrollIsRootNode = this._isRootNode( this.scrollParent[ 0 ] );
-
-               return {
-                       top: (
-                               pos.top +                                                                                                                               // The absolute mouse position
-                               this.offset.relative.top * mod +                                                                                // Only for relative positioned nodes: Relative offset from element to offset parent
-                               this.offset.parent.top * mod -                                                                          // The offsetParent's offset without borders (offset + border)
-                               ( ( this.cssPosition === "fixed" ? -this.offset.scroll.top : ( scrollIsRootNode ? 0 : this.offset.scroll.top ) ) * mod)
-                       ),
-                       left: (
-                               pos.left +                                                                                                                              // The absolute mouse position
-                               this.offset.relative.left * mod +                                                                               // Only for relative positioned nodes: Relative offset from element to offset parent
-                               this.offset.parent.left * mod   -                                                                               // The offsetParent's offset without borders (offset + border)
-                               ( ( this.cssPosition === "fixed" ? -this.offset.scroll.left : ( scrollIsRootNode ? 0 : this.offset.scroll.left ) ) * mod)
-                       )
-               };
-
-       },
-
-       _generatePosition: function( event, constrainPosition ) {
-
-               var containment, co, top, left,
-                       o = this.options,
-                       scrollIsRootNode = this._isRootNode( this.scrollParent[ 0 ] ),
-                       pageX = event.pageX,
-                       pageY = event.pageY;
-
-               // Cache the scroll
-               if ( !scrollIsRootNode || !this.offset.scroll ) {
-                       this.offset.scroll = {
-                               top: this.scrollParent.scrollTop(),
-                               left: this.scrollParent.scrollLeft()
-                       };
-               }
-
-               /*
-                * - Position constraining -
-                * Constrain the position to a mix of grid, containment.
-                */
-
-               // If we are not dragging yet, we won't check for options
-               if ( constrainPosition ) {
-                       if ( this.containment ) {
-                               if ( this.relativeContainer ){
-                                       co = this.relativeContainer.offset();
-                                       containment = [
-                                               this.containment[ 0 ] + co.left,
-                                               this.containment[ 1 ] + co.top,
-                                               this.containment[ 2 ] + co.left,
-                                               this.containment[ 3 ] + co.top
-                                       ];
-                               } else {
-                                       containment = this.containment;
-                               }
-
-                               if (event.pageX - this.offset.click.left < containment[0]) {
-                                       pageX = containment[0] + this.offset.click.left;
-                               }
-                               if (event.pageY - this.offset.click.top < containment[1]) {
-                                       pageY = containment[1] + this.offset.click.top;
-                               }
-                               if (event.pageX - this.offset.click.left > containment[2]) {
-                                       pageX = containment[2] + this.offset.click.left;
-                               }
-                               if (event.pageY - this.offset.click.top > containment[3]) {
-                                       pageY = containment[3] + this.offset.click.top;
-                               }
-                       }
-
-                       if (o.grid) {
-                               //Check for grid elements set to 0 to prevent divide by 0 error causing invalid argument errors in IE (see ticket #6950)
-                               top = o.grid[1] ? this.originalPageY + Math.round((pageY - this.originalPageY) / o.grid[1]) * o.grid[1] : this.originalPageY;
-                               pageY = containment ? ((top - this.offset.click.top >= containment[1] || top - this.offset.click.top > containment[3]) ? top : ((top - this.offset.click.top >= containment[1]) ? top - o.grid[1] : top + o.grid[1])) : top;
-
-                               left = o.grid[0] ? this.originalPageX + Math.round((pageX - this.originalPageX) / o.grid[0]) * o.grid[0] : this.originalPageX;
-                               pageX = containment ? ((left - this.offset.click.left >= containment[0] || left - this.offset.click.left > containment[2]) ? left : ((left - this.offset.click.left >= containment[0]) ? left - o.grid[0] : left + o.grid[0])) : left;
-                       }
-
-                       if ( o.axis === "y" ) {
-                               pageX = this.originalPageX;
-                       }
-
-                       if ( o.axis === "x" ) {
-                               pageY = this.originalPageY;
-                       }
-               }
-
-               return {
-                       top: (
-                               pageY -                                                                                                                                 // The absolute mouse position
-                               this.offset.click.top   -                                                                                               // Click offset (relative to the element)
-                               this.offset.relative.top -                                                                                              // Only for relative positioned nodes: Relative offset from element to offset parent
-                               this.offset.parent.top +                                                                                                // The offsetParent's offset without borders (offset + border)
-                               ( this.cssPosition === "fixed" ? -this.offset.scroll.top : ( scrollIsRootNode ? 0 : this.offset.scroll.top ) )
-                       ),
-                       left: (
-                               pageX -                                                                                                                                 // The absolute mouse position
-                               this.offset.click.left -                                                                                                // Click offset (relative to the element)
-                               this.offset.relative.left -                                                                                             // Only for relative positioned nodes: Relative offset from element to offset parent
-                               this.offset.parent.left +                                                                                               // The offsetParent's offset without borders (offset + border)
-                               ( this.cssPosition === "fixed" ? -this.offset.scroll.left : ( scrollIsRootNode ? 0 : this.offset.scroll.left ) )
-                       )
-               };
-
-       },
-
-       _clear: function() {
-               this.helper.removeClass("ui-draggable-dragging");
-               if (this.helper[0] !== this.element[0] && !this.cancelHelperRemoval) {
-                       this.helper.remove();
-               }
-               this.helper = null;
-               this.cancelHelperRemoval = false;
-               if ( this.destroyOnClear ) {
-                       this.destroy();
-               }
-       },
-
-       _normalizeRightBottom: function() {
-               if ( this.options.axis !== "y" && this.helper.css( "right" ) !== "auto" ) {
-                       this.helper.width( this.helper.width() );
-                       this.helper.css( "right", "auto" );
-               }
-               if ( this.options.axis !== "x" && this.helper.css( "bottom" ) !== "auto" ) {
-                       this.helper.height( this.helper.height() );
-                       this.helper.css( "bottom", "auto" );
-               }
-       },
-
-       // From now on bulk stuff - mainly helpers
-
-       _trigger: function( type, event, ui ) {
-               ui = ui || this._uiHash();
-               $.ui.plugin.call( this, type, [ event, ui, this ], true );
-
-               // Absolute position and offset (see #6884 ) have to be recalculated after plugins
-               if ( /^(drag|start|stop)/.test( type ) ) {
-                       this.positionAbs = this._convertPositionTo( "absolute" );
-                       ui.offset = this.positionAbs;
-               }
-               return $.Widget.prototype._trigger.call( this, type, event, ui );
-       },
-
-       plugins: {},
-
-       _uiHash: function() {
-               return {
-                       helper: this.helper,
-                       position: this.position,
-                       originalPosition: this.originalPosition,
-                       offset: this.positionAbs
-               };
-       }
-
-});
-
-$.ui.plugin.add( "draggable", "connectToSortable", {
-       start: function( event, ui, draggable ) {
-               var uiSortable = $.extend( {}, ui, {
-                       item: draggable.element
-               });
-
-               draggable.sortables = [];
-               $( draggable.options.connectToSortable ).each(function() {
-                       var sortable = $( this ).sortable( "instance" );
-
-                       if ( sortable && !sortable.options.disabled ) {
-                               draggable.sortables.push( sortable );
-
-                               // refreshPositions is called at drag start to refresh the containerCache
-                               // which is used in drag. This ensures it's initialized and synchronized
-                               // with any changes that might have happened on the page since initialization.
-                               sortable.refreshPositions();
-                               sortable._trigger("activate", event, uiSortable);
-                       }
-               });
-       },
-       stop: function( event, ui, draggable ) {
-               var uiSortable = $.extend( {}, ui, {
-                       item: draggable.element
-               });
-
-               draggable.cancelHelperRemoval = false;
-
-               $.each( draggable.sortables, function() {
-                       var sortable = this;
-
-                       if ( sortable.isOver ) {
-                               sortable.isOver = 0;
-
-                               // Allow this sortable to handle removing the helper
-                               draggable.cancelHelperRemoval = true;
-                               sortable.cancelHelperRemoval = false;
-
-                               // Use _storedCSS To restore properties in the sortable,
-                               // as this also handles revert (#9675) since the draggable
-                               // may have modified them in unexpected ways (#8809)
-                               sortable._storedCSS = {
-                                       position: sortable.placeholder.css( "position" ),
-                                       top: sortable.placeholder.css( "top" ),
-                                       left: sortable.placeholder.css( "left" )
-                               };
-
-                               sortable._mouseStop(event);
-
-                               // Once drag has ended, the sortable should return to using
-                               // its original helper, not the shared helper from draggable
-                               sortable.options.helper = sortable.options._helper;
-                       } else {
-                               // Prevent this Sortable from removing the helper.
-                               // However, don't set the draggable to remove the helper
-                               // either as another connected Sortable may yet handle the removal.
-                               sortable.cancelHelperRemoval = true;
-
-                               sortable._trigger( "deactivate", event, uiSortable );
-                       }
-               });
-       },
-       drag: function( event, ui, draggable ) {
-               $.each( draggable.sortables, function() {
-                       var innermostIntersecting = false,
-                               sortable = this;
-
-                       // Copy over variables that sortable's _intersectsWith uses
-                       sortable.positionAbs = draggable.positionAbs;
-                       sortable.helperProportions = draggable.helperProportions;
-                       sortable.offset.click = draggable.offset.click;
-
-                       if ( sortable._intersectsWith( sortable.containerCache ) ) {
-                               innermostIntersecting = true;
-
-                               $.each( draggable.sortables, function() {
-                                       // Copy over variables that sortable's _intersectsWith uses
-                                       this.positionAbs = draggable.positionAbs;
-                                       this.helperProportions = draggable.helperProportions;
-                                       this.offset.click = draggable.offset.click;
-
-                                       if ( this !== sortable &&
-                                                       this._intersectsWith( this.containerCache ) &&
-                                                       $.contains( sortable.element[ 0 ], this.element[ 0 ] ) ) {
-                                               innermostIntersecting = false;
-                                       }
-
-                                       return innermostIntersecting;
-                               });
-                       }
-
-                       if ( innermostIntersecting ) {
-                               // If it intersects, we use a little isOver variable and set it once,
-                               // so that the move-in stuff gets fired only once.
-                               if ( !sortable.isOver ) {
-                                       sortable.isOver = 1;
-
-                                       sortable.currentItem = ui.helper
-                                               .appendTo( sortable.element )
-                                               .data( "ui-sortable-item", true );
-
-                                       // Store helper option to later restore it
-                                       sortable.options._helper = sortable.options.helper;
-
-                                       sortable.options.helper = function() {
-                                               return ui.helper[ 0 ];
-                                       };
-
-                                       // Fire the start events of the sortable with our passed browser event,
-                                       // and our own helper (so it doesn't create a new one)
-                                       event.target = sortable.currentItem[ 0 ];
-                                       sortable._mouseCapture( event, true );
-                                       sortable._mouseStart( event, true, true );
-
-                                       // Because the browser event is way off the new appended portlet,
-                                       // modify necessary variables to reflect the changes
-                                       sortable.offset.click.top = draggable.offset.click.top;
-                                       sortable.offset.click.left = draggable.offset.click.left;
-                                       sortable.offset.parent.left -= draggable.offset.parent.left -
-                                               sortable.offset.parent.left;
-                                       sortable.offset.parent.top -= draggable.offset.parent.top -
-                                               sortable.offset.parent.top;
-
-                                       draggable._trigger( "toSortable", event );
-
-                                       // Inform draggable that the helper is in a valid drop zone,
-                                       // used solely in the revert option to handle "valid/invalid".
-                                       draggable.dropped = sortable.element;
-
-                                       // Need to refreshPositions of all sortables in the case that
-                                       // adding to one sortable changes the location of the other sortables (#9675)
-                                       $.each( draggable.sortables, function() {
-                                               this.refreshPositions();
-                                       });
-
-                                       // hack so receive/update callbacks work (mostly)
-                                       draggable.currentItem = draggable.element;
-                                       sortable.fromOutside = draggable;
-                               }
-
-                               if ( sortable.currentItem ) {
-                                       sortable._mouseDrag( event );
-                                       // Copy the sortable's position because the draggable's can potentially reflect
-                                       // a relative position, while sortable is always absolute, which the dragged
-                                       // element has now become. (#8809)
-                                       ui.position = sortable.position;
-                               }
-                       } else {
-                               // If it doesn't intersect with the sortable, and it intersected before,
-                               // we fake the drag stop of the sortable, but make sure it doesn't remove
-                               // the helper by using cancelHelperRemoval.
-                               if ( sortable.isOver ) {
-
-                                       sortable.isOver = 0;
-                                       sortable.cancelHelperRemoval = true;
-
-                                       // Calling sortable's mouseStop would trigger a revert,
-                                       // so revert must be temporarily false until after mouseStop is called.
-                                       sortable.options._revert = sortable.options.revert;
-                                       sortable.options.revert = false;
-
-                                       sortable._trigger( "out", event, sortable._uiHash( sortable ) );
-                                       sortable._mouseStop( event, true );
-
-                                       // restore sortable behaviors that were modfied
-                                       // when the draggable entered the sortable area (#9481)
-                                       sortable.options.revert = sortable.options._revert;
-                                       sortable.options.helper = sortable.options._helper;
-
-                                       if ( sortable.placeholder ) {
-                                               sortable.placeholder.remove();
-                                       }
-
-                                       // Recalculate the draggable's offset considering the sortable
-                                       // may have modified them in unexpected ways (#8809)
-                                       draggable._refreshOffsets( event );
-                                       ui.position = draggable._generatePosition( event, true );
-
-                                       draggable._trigger( "fromSortable", event );
-
-                                       // Inform draggable that the helper is no longer in a valid drop zone
-                                       draggable.dropped = false;
-
-                                       // Need to refreshPositions of all sortables just in case removing
-                                       // from one sortable changes the location of other sortables (#9675)
-                                       $.each( draggable.sortables, function() {
-                                               this.refreshPositions();
-                                       });
-                               }
-                       }
-               });
-       }
-});
-
-$.ui.plugin.add("draggable", "cursor", {
-       start: function( event, ui, instance ) {
-               var t = $( "body" ),
-                       o = instance.options;
-
-               if (t.css("cursor")) {
-                       o._cursor = t.css("cursor");
-               }
-               t.css("cursor", o.cursor);
-       },
-       stop: function( event, ui, instance ) {
-               var o = instance.options;
-               if (o._cursor) {
-                       $("body").css("cursor", o._cursor);
-               }
-       }
-});
-
-$.ui.plugin.add("draggable", "opacity", {
-       start: function( event, ui, instance ) {
-               var t = $( ui.helper ),
-                       o = instance.options;
-               if (t.css("opacity")) {
-                       o._opacity = t.css("opacity");
-               }
-               t.css("opacity", o.opacity);
-       },
-       stop: function( event, ui, instance ) {
-               var o = instance.options;
-               if (o._opacity) {
-                       $(ui.helper).css("opacity", o._opacity);
-               }
-       }
-});
-
-$.ui.plugin.add("draggable", "scroll", {
-       start: function( event, ui, i ) {
-               if ( !i.scrollParentNotHidden ) {
-                       i.scrollParentNotHidden = i.helper.scrollParent( false );
-               }
-
-               if ( i.scrollParentNotHidden[ 0 ] !== i.document[ 0 ] && i.scrollParentNotHidden[ 0 ].tagName !== "HTML" ) {
-                       i.overflowOffset = i.scrollParentNotHidden.offset();
-               }
-       },
-       drag: function( event, ui, i  ) {
-
-               var o = i.options,
-                       scrolled = false,
-                       scrollParent = i.scrollParentNotHidden[ 0 ],
-                       document = i.document[ 0 ];
-
-               if ( scrollParent !== document && scrollParent.tagName !== "HTML" ) {
-                       if ( !o.axis || o.axis !== "x" ) {
-                               if ( ( i.overflowOffset.top + scrollParent.offsetHeight ) - event.pageY < o.scrollSensitivity ) {
-                                       scrollParent.scrollTop = scrolled = scrollParent.scrollTop + o.scrollSpeed;
-                               } else if ( event.pageY - i.overflowOffset.top < o.scrollSensitivity ) {
-                                       scrollParent.scrollTop = scrolled = scrollParent.scrollTop - o.scrollSpeed;
-                               }
-                       }
-
-                       if ( !o.axis || o.axis !== "y" ) {
-                               if ( ( i.overflowOffset.left + scrollParent.offsetWidth ) - event.pageX < o.scrollSensitivity ) {
-                                       scrollParent.scrollLeft = scrolled = scrollParent.scrollLeft + o.scrollSpeed;
-                               } else if ( event.pageX - i.overflowOffset.left < o.scrollSensitivity ) {
-                                       scrollParent.scrollLeft = scrolled = scrollParent.scrollLeft - o.scrollSpeed;
-                               }
-                       }
-
-               } else {
-
-                       if (!o.axis || o.axis !== "x") {
-                               if (event.pageY - $(document).scrollTop() < o.scrollSensitivity) {
-                                       scrolled = $(document).scrollTop($(document).scrollTop() - o.scrollSpeed);
-                               } else if ($(window).height() - (event.pageY - $(document).scrollTop()) < o.scrollSensitivity) {
-                                       scrolled = $(document).scrollTop($(document).scrollTop() + o.scrollSpeed);
-                               }
-                       }
-
-                       if (!o.axis || o.axis !== "y") {
-                               if (event.pageX - $(document).scrollLeft() < o.scrollSensitivity) {
-                                       scrolled = $(document).scrollLeft($(document).scrollLeft() - o.scrollSpeed);
-                               } else if ($(window).width() - (event.pageX - $(document).scrollLeft()) < o.scrollSensitivity) {
-                                       scrolled = $(document).scrollLeft($(document).scrollLeft() + o.scrollSpeed);
-                               }
-                       }
-
-               }
-
-               if (scrolled !== false && $.ui.ddmanager && !o.dropBehaviour) {
-                       $.ui.ddmanager.prepareOffsets(i, event);
-               }
-
-       }
-});
-
-$.ui.plugin.add("draggable", "snap", {
-       start: function( event, ui, i ) {
-
-               var o = i.options;
-
-               i.snapElements = [];
-
-               $(o.snap.constructor !== String ? ( o.snap.items || ":data(ui-draggable)" ) : o.snap).each(function() {
-                       var $t = $(this),
-                               $o = $t.offset();
-                       if (this !== i.element[0]) {
-                               i.snapElements.push({
-                                       item: this,
-                                       width: $t.outerWidth(), height: $t.outerHeight(),
-                                       top: $o.top, left: $o.left
-                               });
-                       }
-               });
-
-       },
-       drag: function( event, ui, inst ) {
-
-               var ts, bs, ls, rs, l, r, t, b, i, first,
-                       o = inst.options,
-                       d = o.snapTolerance,
-                       x1 = ui.offset.left, x2 = x1 + inst.helperProportions.width,
-                       y1 = ui.offset.top, y2 = y1 + inst.helperProportions.height;
-
-               for (i = inst.snapElements.length - 1; i >= 0; i--){
-
-                       l = inst.snapElements[i].left - inst.margins.left;
-                       r = l + inst.snapElements[i].width;
-                       t = inst.snapElements[i].top - inst.margins.top;
-                       b = t + inst.snapElements[i].height;
-
-                       if ( x2 < l - d || x1 > r + d || y2 < t - d || y1 > b + d || !$.contains( inst.snapElements[ i ].item.ownerDocument, inst.snapElements[ i ].item ) ) {
-                               if (inst.snapElements[i].snapping) {
-                                       (inst.options.snap.release && inst.options.snap.release.call(inst.element, event, $.extend(inst._uiHash(), { snapItem: inst.snapElements[i].item })));
-                               }
-                               inst.snapElements[i].snapping = false;
-                               continue;
-                       }
-
-                       if (o.snapMode !== "inner") {
-                               ts = Math.abs(t - y2) <= d;
-                               bs = Math.abs(b - y1) <= d;
-                               ls = Math.abs(l - x2) <= d;
-                               rs = Math.abs(r - x1) <= d;
-                               if (ts) {
-                                       ui.position.top = inst._convertPositionTo("relative", { top: t - inst.helperProportions.height, left: 0 }).top;
-                               }
-                               if (bs) {
-                                       ui.position.top = inst._convertPositionTo("relative", { top: b, left: 0 }).top;
-                               }
-                               if (ls) {
-                                       ui.position.left = inst._convertPositionTo("relative", { top: 0, left: l - inst.helperProportions.width }).left;
-                               }
-                               if (rs) {
-                                       ui.position.left = inst._convertPositionTo("relative", { top: 0, left: r }).left;
-                               }
-                       }
-
-                       first = (ts || bs || ls || rs);
-
-                       if (o.snapMode !== "outer") {
-                               ts = Math.abs(t - y1) <= d;
-                               bs = Math.abs(b - y2) <= d;
-                               ls = Math.abs(l - x1) <= d;
-                               rs = Math.abs(r - x2) <= d;
-                               if (ts) {
-                                       ui.position.top = inst._convertPositionTo("relative", { top: t, left: 0 }).top;
-                               }
-                               if (bs) {
-                                       ui.position.top = inst._convertPositionTo("relative", { top: b - inst.helperProportions.height, left: 0 }).top;
-                               }
-                               if (ls) {
-                                       ui.position.left = inst._convertPositionTo("relative", { top: 0, left: l }).left;
-                               }
-                               if (rs) {
-                                       ui.position.left = inst._convertPositionTo("relative", { top: 0, left: r - inst.helperProportions.width }).left;
-                               }
-                       }
-
-                       if (!inst.snapElements[i].snapping && (ts || bs || ls || rs || first)) {
-                               (inst.options.snap.snap && inst.options.snap.snap.call(inst.element, event, $.extend(inst._uiHash(), { snapItem: inst.snapElements[i].item })));
-                       }
-                       inst.snapElements[i].snapping = (ts || bs || ls || rs || first);
-
-               }
-
-       }
-});
-
-$.ui.plugin.add("draggable", "stack", {
-       start: function( event, ui, instance ) {
-               var min,
-                       o = instance.options,
-                       group = $.makeArray($(o.stack)).sort(function(a, b) {
-                               return (parseInt($(a).css("zIndex"), 10) || 0) - (parseInt($(b).css("zIndex"), 10) || 0);
-                       });
-
-               if (!group.length) { return; }
-
-               min = parseInt($(group[0]).css("zIndex"), 10) || 0;
-               $(group).each(function(i) {
-                       $(this).css("zIndex", min + i);
-               });
-               this.css("zIndex", (min + group.length));
-       }
-});
-
-$.ui.plugin.add("draggable", "zIndex", {
-       start: function( event, ui, instance ) {
-               var t = $( ui.helper ),
-                       o = instance.options;
-
-               if (t.css("zIndex")) {
-                       o._zIndex = t.css("zIndex");
-               }
-               t.css("zIndex", o.zIndex);
-       },
-       stop: function( event, ui, instance ) {
-               var o = instance.options;
-
-               if (o._zIndex) {
-                       $(ui.helper).css("zIndex", o._zIndex);
-               }
-       }
-});
-
-var draggable = $.ui.draggable;
-
-
-/*!
- * jQuery UI Resizable 1.11.3
- * http://jqueryui.com
- *
- * Copyright jQuery Foundation and other contributors
- * Released under the MIT license.
- * http://jquery.org/license
- *
- * http://api.jqueryui.com/resizable/
- */
-
-
-$.widget("ui.resizable", $.ui.mouse, {
-       version: "1.11.3",
-       widgetEventPrefix: "resize",
-       options: {
-               alsoResize: false,
-               animate: false,
-               animateDuration: "slow",
-               animateEasing: "swing",
-               aspectRatio: false,
-               autoHide: false,
-               containment: false,
-               ghost: false,
-               grid: false,
-               handles: "e,s,se",
-               helper: false,
-               maxHeight: null,
-               maxWidth: null,
-               minHeight: 10,
-               minWidth: 10,
-               // See #7960
-               zIndex: 90,
-
-               // callbacks
-               resize: null,
-               start: null,
-               stop: null
-       },
-
-       _num: function( value ) {
-               return parseInt( value, 10 ) || 0;
-       },
-
-       _isNumber: function( value ) {
-               return !isNaN( parseInt( value, 10 ) );
-       },
-
-       _hasScroll: function( el, a ) {
-
-               if ( $( el ).css( "overflow" ) === "hidden") {
-                       return false;
-               }
-
-               var scroll = ( a && a === "left" ) ? "scrollLeft" : "scrollTop",
-                       has = false;
-
-               if ( el[ scroll ] > 0 ) {
-                       return true;
-               }
-
-               // TODO: determine which cases actually cause this to happen
-               // if the element doesn't have the scroll set, see if it's possible to
-               // set the scroll
-               el[ scroll ] = 1;
-               has = ( el[ scroll ] > 0 );
-               el[ scroll ] = 0;
-               return has;
-       },
-
-       _create: function() {
-
-               var n, i, handle, axis, hname,
-                       that = this,
-                       o = this.options;
-               this.element.addClass("ui-resizable");
-
-               $.extend(this, {
-                       _aspectRatio: !!(o.aspectRatio),
-                       aspectRatio: o.aspectRatio,
-                       originalElement: this.element,
-                       _proportionallyResizeElements: [],
-                       _helper: o.helper || o.ghost || o.animate ? o.helper || "ui-resizable-helper" : null
-               });
-
-               // Wrap the element if it cannot hold child nodes
-               if (this.element[0].nodeName.match(/^(canvas|textarea|input|select|button|img)$/i)) {
-
-                       this.element.wrap(
-                               $("<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 = true;
-
-                       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
-                       });
-                       // support: Safari
-                       // Prevent Safari textarea resize
-                       this.originalResizeStyle = this.originalElement.css("resize");
-                       this.originalElement.css("resize", "none");
-
-                       this._proportionallyResizeElements.push( this.originalElement.css({
-                               position: "static",
-                               zoom: 1,
-                               display: "block"
-                       }) );
-
-                       // support: IE9
-                       // avoid IE jump (hard set the margin)
-                       this.originalElement.css({ margin: this.originalElement.css("margin") });
-
-                       this._proportionallyResize();
-               }
-
-               this.handles = o.handles ||
-                       ( !$(".ui-resizable-handle", this.element).length ?
-                               "e,s,se" : {
-                                       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"
-                               } );
-
-               if (this.handles.constructor === String) {
-
-                       if ( this.handles === "all") {
-                               this.handles = "n,e,s,w,se,sw,ne,nw";
-                       }
-
-                       n = this.handles.split(",");
-                       this.handles = {};
-
-                       for (i = 0; i < n.length; i++) {
-
-                               handle = $.trim(n[i]);
-                               hname = "ui-resizable-" + handle;
-                               axis = $("<div class='ui-resizable-handle " + hname + "'></div>");
-
-                               axis.css({ zIndex: o.zIndex });
-
-                               // TODO : What's going on here?
-                               if ("se" === handle) {
-                                       axis.addClass("ui-icon ui-icon-gripsmall-diagonal-se");
-                               }
-
-                               this.handles[handle] = ".ui-resizable-" + handle;
-                               this.element.append(axis);
-                       }
-
-               }
-
-               this._renderAxis = function(target) {
-
-                       var i, axis, padPos, padWrapper;
-
-                       target = target || this.element;
-
-                       for (i in this.handles) {
-
-                               if (this.handles[i].constructor === String) {
-                                       this.handles[i] = this.element.children( this.handles[ i ] ).first().show();
-                               }
-
-                               if (this.elementIsWrapper && this.originalElement[0].nodeName.match(/^(textarea|input|select|button)$/i)) {
-
-                                       axis = $(this.handles[i], this.element);
-
-                                       padWrapper = /sw|ne|nw|se|n|s/.test(i) ? axis.outerHeight() : axis.outerWidth();
-
-                                       padPos = [ "padding",
-                                               /ne|nw|n/.test(i) ? "Top" :
-                                               /se|sw|s/.test(i) ? "Bottom" :
-                                               /^e$/.test(i) ? "Right" : "Left" ].join("");
-
-                                       target.css(padPos, padWrapper);
-
-                                       this._proportionallyResize();
-
-                               }
-
-                               // TODO: What's that good for? There's not anything to be executed left
-                               if (!$(this.handles[i]).length) {
-                                       continue;
-                               }
-                       }
-               };
-
-               // TODO: make renderAxis a prototype function
-               this._renderAxis(this.element);
-
-               this._handles = $(".ui-resizable-handle", this.element)
-                       .disableSelection();
-
-               this._handles.mouseover(function() {
-                       if (!that.resizing) {
-                               if (this.className) {
-                                       axis = this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i);
-                               }
-                               that.axis = axis && axis[1] ? axis[1] : "se";
-                       }
-               });
-
-               if (o.autoHide) {
-                       this._handles.hide();
-                       $(this.element)
-                               .addClass("ui-resizable-autohide")
-                               .mouseenter(function() {
-                                       if (o.disabled) {
-                                               return;
-                                       }
-                                       $(this).removeClass("ui-resizable-autohide");
-                                       that._handles.show();
-                               })
-                               .mouseleave(function() {
-                                       if (o.disabled) {
-                                               return;
-                                       }
-                                       if (!that.resizing) {
-                                               $(this).addClass("ui-resizable-autohide");
-                                               that._handles.hide();
-                                       }
-                               });
-               }
-
-               this._mouseInit();
-
-       },
-
-       _destroy: function() {
-
-               this._mouseDestroy();
-
-               var wrapper,
-                       _destroy = function(exp) {
-                               $(exp)
-                                       .removeClass("ui-resizable ui-resizable-disabled ui-resizable-resizing")
-                                       .removeData("resizable")
-                                       .removeData("ui-resizable")
-                                       .unbind(".resizable")
-                                       .find(".ui-resizable-handle")
-                                               .remove();
-                       };
-
-               // TODO: Unwrap at same DOM position
-               if (this.elementIsWrapper) {
-                       _destroy(this.element);
-                       wrapper = this.element;
-                       this.originalElement.css({
-                               position: wrapper.css("position"),
-                               width: wrapper.outerWidth(),
-                               height: wrapper.outerHeight(),
-                               top: wrapper.css("top"),
-                               left: wrapper.css("left")
-                       }).insertAfter( wrapper );
-                       wrapper.remove();
-               }
-
-               this.originalElement.css("resize", this.originalResizeStyle);
-               _destroy(this.originalElement);
-
-               return this;
-       },
-
-       _mouseCapture: function(event) {
-               var i, handle,
-                       capture = false;
-
-               for (i in this.handles) {
-                       handle = $(this.handles[i])[0];
-                       if (handle === event.target || $.contains(handle, event.target)) {
-                               capture = true;
-                       }
-               }
-
-               return !this.options.disabled && capture;
-       },
-
-       _mouseStart: function(event) {
-
-               var curleft, curtop, cursor,
-                       o = this.options,
-                       el = this.element;
-
-               this.resizing = true;
-
-               this._renderProxy();
-
-               curleft = this._num(this.helper.css("left"));
-               curtop = this._num(this.helper.css("top"));
-
-               if (o.containment) {
-                       curleft += $(o.containment).scrollLeft() || 0;
-                       curtop += $(o.containment).scrollTop() || 0;
-               }
-
-               this.offset = this.helper.offset();
-               this.position = { left: curleft, top: curtop };
-
-               this.size = this._helper ? {
-                               width: this.helper.width(),
-                               height: this.helper.height()
-                       } : {
-                               width: el.width(),
-                               height: el.height()
-                       };
-
-               this.originalSize = this._helper ? {
-                               width: el.outerWidth(),
-                               height: el.outerHeight()
-                       } : {
-                               width: el.width(),
-                               height: el.height()
-                       };
-
-               this.sizeDiff = {
-                       width: el.outerWidth() - el.width(),
-                       height: el.outerHeight() - el.height()
-               };
-
-               this.originalPosition = { left: curleft, top: curtop };
-               this.originalMousePosition = { left: event.pageX, top: event.pageY };
-
-               this.aspectRatio = (typeof o.aspectRatio === "number") ?
-                       o.aspectRatio :
-                       ((this.originalSize.width / this.originalSize.height) || 1);
-
-               cursor = $(".ui-resizable-" + this.axis).css("cursor");
-               $("body").css("cursor", cursor === "auto" ? this.axis + "-resize" : cursor);
-
-               el.addClass("ui-resizable-resizing");
-               this._propagate("start", event);
-               return true;
-       },
-
-       _mouseDrag: function(event) {
-
-               var data, props,
-                       smp = this.originalMousePosition,
-                       a = this.axis,
-                       dx = (event.pageX - smp.left) || 0,
-                       dy = (event.pageY - smp.top) || 0,
-                       trigger = this._change[a];
-
-               this._updatePrevProperties();
-
-               if (!trigger) {
-                       return false;
-               }
-
-               data = trigger.apply(this, [ event, dx, dy ]);
-
-               this._updateVirtualBoundaries(event.shiftKey);
-               if (this._aspectRatio || event.shiftKey) {
-                       data = this._updateRatio(data, event);
-               }
-
-               data = this._respectSize(data, event);
-
-               this._updateCache(data);
-
-               this._propagate("resize", event);
-
-               props = this._applyChanges();
-
-               if ( !this._helper && this._proportionallyResizeElements.length ) {
-                       this._proportionallyResize();
-               }
-
-               if ( !$.isEmptyObject( props ) ) {
-                       this._updatePrevProperties();
-                       this._trigger( "resize", event, this.ui() );
-                       this._applyChanges();
-               }
-
-               return false;
-       },
-
-       _mouseStop: function(event) {
-
-               this.resizing = false;
-               var pr, ista, soffseth, soffsetw, s, left, top,
-                       o = this.options, that = this;
-
-               if (this._helper) {
-
-                       pr = this._proportionallyResizeElements;
-                       ista = pr.length && (/textarea/i).test(pr[0].nodeName);
-                       soffseth = ista && this._hasScroll(pr[0], "left") ? 0 : that.sizeDiff.height;
-                       soffsetw = ista ? 0 : that.sizeDiff.width;
-
-                       s = {
-                               width: (that.helper.width()  - soffsetw),
-                               height: (that.helper.height() - soffseth)
-                       };
-                       left = (parseInt(that.element.css("left"), 10) +
-                               (that.position.left - that.originalPosition.left)) || null;
-                       top = (parseInt(that.element.css("top"), 10) +
-                               (that.position.top - that.originalPosition.top)) || null;
-
-                       if (!o.animate) {
-                               this.element.css($.extend(s, { top: top, left: left }));
-                       }
-
-                       that.helper.height(that.size.height);
-                       that.helper.width(that.size.width);
-
-                       if (this._helper && !o.animate) {
-                               this._proportionallyResize();
-                       }
-               }
-
-               $("body").css("cursor", "auto");
-
-               this.element.removeClass("ui-resizable-resizing");
-
-               this._propagate("stop", event);
-
-               if (this._helper) {
-                       this.helper.remove();
-               }
-
-               return false;
-
-       },
-
-       _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 props = {};
-
-               if ( this.position.top !== this.prevPosition.top ) {
-                       props.top = this.position.top + "px";
-               }
-               if ( this.position.left !== this.prevPosition.left ) {
-                       props.left = this.position.left + "px";
-               }
-               if ( this.size.width !== this.prevSize.width ) {
-                       props.width = this.size.width + "px";
-               }
-               if ( this.size.height !== this.prevSize.height ) {
-                       props.height = this.size.height + "px";
-               }
-
-               this.helper.css( props );
-
-               return props;
-       },
-
-       _updateVirtualBoundaries: function(forceAspectRatio) {
-               var pMinWidth, pMaxWidth, pMinHeight, pMaxHeight, b,
-                       o = this.options;
-
-               b = {
-                       minWidth: this._isNumber(o.minWidth) ? o.minWidth : 0,
-                       maxWidth: this._isNumber(o.maxWidth) ? o.maxWidth : Infinity,
-                       minHeight: this._isNumber(o.minHeight) ? o.minHeight : 0,
-                       maxHeight: this._isNumber(o.maxHeight) ? o.maxHeight : Infinity
-               };
-
-               if (this._aspectRatio || forceAspectRatio) {
-                       pMinWidth = b.minHeight * this.aspectRatio;
-                       pMinHeight = b.minWidth / this.aspectRatio;
-                       pMaxWidth = b.maxHeight * this.aspectRatio;
-                       pMaxHeight = b.maxWidth / this.aspectRatio;
-
-                       if (pMinWidth > b.minWidth) {
-                               b.minWidth = pMinWidth;
-                       }
-                       if (pMinHeight > b.minHeight) {
-                               b.minHeight = pMinHeight;
-                       }
-                       if (pMaxWidth < b.maxWidth) {
-                               b.maxWidth = pMaxWidth;
-                       }
-                       if (pMaxHeight < b.maxHeight) {
-                               b.maxHeight = pMaxHeight;
-                       }
-               }
-               this._vBoundaries = b;
-       },
-
-       _updateCache: function(data) {
-               this.offset = this.helper.offset();
-               if (this._isNumber(data.left)) {
-                       this.position.left = data.left;
-               }
-               if (this._isNumber(data.top)) {
-                       this.position.top = data.top;
-               }
-               if (this._isNumber(data.height)) {
-                       this.size.height = data.height;
-               }
-               if (this._isNumber(data.width)) {
-                       this.size.width = data.width;
-               }
-       },
-
-       _updateRatio: function( data ) {
-
-               var cpos = this.position,
-                       csize = this.size,
-                       a = this.axis;
-
-               if (this._isNumber(data.height)) {
-                       data.width = (data.height * this.aspectRatio);
-               } else if (this._isNumber(data.width)) {
-                       data.height = (data.width / this.aspectRatio);
-               }
-
-               if (a === "sw") {
-                       data.left = cpos.left + (csize.width - data.width);
-                       data.top = null;
-               }
-               if (a === "nw") {
-                       data.top = cpos.top + (csize.height - data.height);
-                       data.left = cpos.left + (csize.width - data.width);
-               }
-
-               return data;
-       },
-
-       _respectSize: function( data ) {
-
-               var o = this._vBoundaries,
-                       a = this.axis,
-                       ismaxw = this._isNumber(data.width) && o.maxWidth && (o.maxWidth < data.width),
-                       ismaxh = this._isNumber(data.height) && o.maxHeight && (o.maxHeight < data.height),
-                       isminw = this._isNumber(data.width) && o.minWidth && (o.minWidth > data.width),
-                       isminh = this._isNumber(data.height) && o.minHeight && (o.minHeight > data.height),
-                       dw = this.originalPosition.left + this.originalSize.width,
-                       dh = this.position.top + this.size.height,
-                       cw = /sw|nw|w/.test(a), ch = /nw|ne|n/.test(a);
-               if (isminw) {
-                       data.width = o.minWidth;
-               }
-               if (isminh) {
-                       data.height = o.minHeight;
-               }
-               if (ismaxw) {
-                       data.width = o.maxWidth;
-               }
-               if (ismaxh) {
-                       data.height = o.maxHeight;
-               }
-
-               if (isminw && cw) {
-                       data.left = dw - o.minWidth;
-               }
-               if (ismaxw && cw) {
-                       data.left = dw - o.maxWidth;
-               }
-               if (isminh && ch) {
-                       data.top = dh - o.minHeight;
-               }
-               if (ismaxh && ch) {
-                       data.top = dh - o.maxHeight;
-               }
-
-               // Fixing jump error on top/left - bug #2330
-               if (!data.width && !data.height && !data.left && data.top) {
-                       data.top = null;
-               } else if (!data.width && !data.height && !data.top && data.left) {
-                       data.left = null;
-               }
-
-               return data;
-       },
-
-       _getPaddingPlusBorderDimensions: function( element ) {
-               var i = 0,
-                       widths = [],
-                       borders = [
-                               element.css( "borderTopWidth" ),
-                               element.css( "borderRightWidth" ),
-                               element.css( "borderBottomWidth" ),
-                               element.css( "borderLeftWidth" )
-                       ],
-                       paddings = [
-                               element.css( "paddingTop" ),
-                               element.css( "paddingRight" ),
-                               element.css( "paddingBottom" ),
-                               element.css( "paddingLeft" )
-                       ];
-
-               for ( ; i < 4; i++ ) {
-                       widths[ i ] = ( parseInt( borders[ i ], 10 ) || 0 );
-                       widths[ i ] += ( parseInt( paddings[ i ], 10 ) || 0 );
-               }
-
-               return {
-                       height: widths[ 0 ] + widths[ 2 ],
-                       width: widths[ 1 ] + widths[ 3 ]
-               };
-       },
-
-       _proportionallyResize: function() {
-
-               if (!this._proportionallyResizeElements.length) {
-                       return;
-               }
-
-               var prel,
-                       i = 0,
-                       element = this.helper || this.element;
-
-               for ( ; i < this._proportionallyResizeElements.length; i++) {
-
-                       prel = this._proportionallyResizeElements[i];
-
-                       // TODO: Seems like a bug to cache this.outerDimensions
-                       // considering that we are in a loop.
-                       if (!this.outerDimensions) {
-                               this.outerDimensions = this._getPaddingPlusBorderDimensions( prel );
-                       }
-
-                       prel.css({
-                               height: (element.height() - this.outerDimensions.height) || 0,
-                               width: (element.width() - this.outerDimensions.width) || 0
-                       });
-
-               }
-
-       },
-
-       _renderProxy: function() {
-
-               var el = this.element, o = this.options;
-               this.elementOffset = el.offset();
-
-               if (this._helper) {
-
-                       this.helper = this.helper || $("<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 //TODO: Don't modify option
-                       });
-
-                       this.helper
-                               .appendTo("body")
-                               .disableSelection();
-
-               } else {
-                       this.helper = this.element;
-               }
-
-       },
-
-       _change: {
-               e: function(event, dx) {
-                       return { width: this.originalSize.width + dx };
-               },
-               w: function(event, dx) {
-                       var cs = this.originalSize, sp = this.originalPosition;
-                       return { left: sp.left + dx, width: cs.width - dx };
-               },
-               n: function(event, dx, dy) {
-                       var cs = this.originalSize, sp = this.originalPosition;
-                       return { top: sp.top + dy, height: cs.height - dy };
-               },
-               s: function(event, dx, dy) {
-                       return { height: this.originalSize.height + dy };
-               },
-               se: function(event, dx, dy) {
-                       return $.extend(this._change.s.apply(this, arguments),
-                               this._change.e.apply(this, [ event, dx, dy ]));
-               },
-               sw: function(event, dx, dy) {
-                       return $.extend(this._change.s.apply(this, arguments),
-                               this._change.w.apply(this, [ event, dx, dy ]));
-               },
-               ne: function(event, dx, dy) {
-                       return $.extend(this._change.n.apply(this, arguments),
-                               this._change.e.apply(this, [ event, dx, dy ]));
-               },
-               nw: function(event, dx, dy) {
-                       return $.extend(this._change.n.apply(this, arguments),
-                               this._change.w.apply(this, [ event, dx, dy ]));
-               }
-       },
-
-       _propagate: function(n, event) {
-               $.ui.plugin.call(this, n, [ event, this.ui() ]);
-               (n !== "resize" && this._trigger(n, event, 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
-               };
-       }
-
-});
-
-/*
- * Resizable Extensions
- */
-
-$.ui.plugin.add("resizable", "animate", {
-
-       stop: function( event ) {
-               var that = $(this).resizable( "instance" ),
-                       o = that.options,
-                       pr = that._proportionallyResizeElements,
-                       ista = pr.length && (/textarea/i).test(pr[0].nodeName),
-                       soffseth = ista && that._hasScroll(pr[0], "left") ? 0 : that.sizeDiff.height,
-                       soffsetw = ista ? 0 : that.sizeDiff.width,
-                       style = { width: (that.size.width - soffsetw), height: (that.size.height - soffseth) },
-                       left = (parseInt(that.element.css("left"), 10) +
-                               (that.position.left - that.originalPosition.left)) || null,
-                       top = (parseInt(that.element.css("top"), 10) +
-                               (that.position.top - that.originalPosition.top)) || null;
-
-               that.element.animate(
-                       $.extend(style, top && left ? { top: top, left: left } : {}), {
-                               duration: o.animateDuration,
-                               easing: o.animateEasing,
-                               step: function() {
-
-                                       var data = {
-                                               width: parseInt(that.element.css("width"), 10),
-                                               height: parseInt(that.element.css("height"), 10),
-                                               top: parseInt(that.element.css("top"), 10),
-                                               left: parseInt(that.element.css("left"), 10)
-                                       };
-
-                                       if (pr && pr.length) {
-                                               $(pr[0]).css({ width: data.width, height: data.height });
-                                       }
-
-                                       // propagating resize, and updating values for each animation step
-                                       that._updateCache(data);
-                                       that._propagate("resize", event);
-
-                               }
-                       }
-               );
-       }
-
-});
-
-$.ui.plugin.add( "resizable", "containment", {
-
-       start: function() {
-               var element, p, co, ch, cw, width, height,
-                       that = $( this ).resizable( "instance" ),
-                       o = that.options,
-                       el = that.element,
-                       oc = o.containment,
-                       ce = ( oc instanceof $ ) ? oc.get( 0 ) : ( /parent/.test( oc ) ) ? el.parent().get( 0 ) : oc;
-
-               if ( !ce ) {
-                       return;
-               }
-
-               that.containerElement = $( ce );
-
-               if ( /document/.test( oc ) || oc === document ) {
-                       that.containerOffset = {
-                               left: 0,
-                               top: 0
-                       };
-                       that.containerPosition = {
-                               left: 0,
-                               top: 0
-                       };
-
-                       that.parentData = {
-                               element: $( document ),
-                               left: 0,
-                               top: 0,
-                               width: $( document ).width(),
-                               height: $( document ).height() || document.body.parentNode.scrollHeight
-                       };
-               } else {
-                       element = $( ce );
-                       p = [];
-                       $([ "Top", "Right", "Left", "Bottom" ]).each(function( i, name ) {
-                               p[ i ] = that._num( element.css( "padding" + name ) );
-                       });
-
-                       that.containerOffset = element.offset();
-                       that.containerPosition = element.position();
-                       that.containerSize = {
-                               height: ( element.innerHeight() - p[ 3 ] ),
-                               width: ( element.innerWidth() - p[ 1 ] )
-                       };
-
-                       co = that.containerOffset;
-                       ch = that.containerSize.height;
-                       cw = that.containerSize.width;
-                       width = ( that._hasScroll ( ce, "left" ) ? ce.scrollWidth : cw );
-                       height = ( that._hasScroll ( ce ) ? ce.scrollHeight : ch ) ;
-
-                       that.parentData = {
-                               element: ce,
-                               left: co.left,
-                               top: co.top,
-                               width: width,
-                               height: height
-                       };
-               }
-       },
-
-       resize: function( event ) {
-               var woset, hoset, isParent, isOffsetRelative,
-                       that = $( this ).resizable( "instance" ),
-                       o = that.options,
-                       co = that.containerOffset,
-                       cp = that.position,
-                       pRatio = that._aspectRatio || event.shiftKey,
-                       cop = {
-                               top: 0,
-                               left: 0
-                       },
-                       ce = that.containerElement,
-                       continueResize = true;
-
-               if ( ce[ 0 ] !== document && ( /static/ ).test( ce.css( "position" ) ) ) {
-                       cop = co;
-               }
-
-               if ( cp.left < ( that._helper ? co.left : 0 ) ) {
-                       that.size.width = that.size.width +
-                               ( that._helper ?
-                                       ( that.position.left - co.left ) :
-                                       ( that.position.left - cop.left ) );
-
-                       if ( pRatio ) {
-                               that.size.height = that.size.width / that.aspectRatio;
-                               continueResize = false;
-                       }
-                       that.position.left = o.helper ? co.left : 0;
-               }
-
-               if ( cp.top < ( that._helper ? co.top : 0 ) ) {
-                       that.size.height = that.size.height +
-                               ( that._helper ?
-                                       ( that.position.top - co.top ) :
-                                       that.position.top );
-
-                       if ( pRatio ) {
-                               that.size.width = that.size.height * that.aspectRatio;
-                               continueResize = false;
-                       }
-                       that.position.top = that._helper ? co.top : 0;
-               }
-
-               isParent = that.containerElement.get( 0 ) === that.element.parent().get( 0 );
-               isOffsetRelative = /relative|absolute/.test( that.containerElement.css( "position" ) );
-
-               if ( isParent && isOffsetRelative ) {
-                       that.offset.left = that.parentData.left + that.position.left;
-                       that.offset.top = that.parentData.top + that.position.top;
-               } else {
-                       that.offset.left = that.element.offset().left;
-                       that.offset.top = that.element.offset().top;
-               }
-
-               woset = Math.abs( that.sizeDiff.width +
-                       (that._helper ?
-                               that.offset.left - cop.left :
-                               (that.offset.left - co.left)) );
-
-               hoset = Math.abs( that.sizeDiff.height +
-                       (that._helper ?
-                               that.offset.top - cop.top :
-                               (that.offset.top - co.top)) );
-
-               if ( woset + that.size.width >= that.parentData.width ) {
-                       that.size.width = that.parentData.width - woset;
-                       if ( pRatio ) {
-                               that.size.height = that.size.width / that.aspectRatio;
-                               continueResize = false;
-                       }
-               }
-
-               if ( hoset + that.size.height >= that.parentData.height ) {
-                       that.size.height = that.parentData.height - hoset;
-                       if ( pRatio ) {
-                               that.size.width = that.size.height * that.aspectRatio;
-                               continueResize = false;
-                       }
-               }
-
-               if ( !continueResize ) {
-                       that.position.left = that.prevPosition.left;
-                       that.position.top = that.prevPosition.top;
-                       that.size.width = that.prevSize.width;
-                       that.size.height = that.prevSize.height;
-               }
-       },
-
-       stop: function() {
-               var that = $( this ).resizable( "instance" ),
-                       o = that.options,
-                       co = that.containerOffset,
-                       cop = that.containerPosition,
-                       ce = that.containerElement,
-                       helper = $( that.helper ),
-                       ho = helper.offset(),
-                       w = helper.outerWidth() - that.sizeDiff.width,
-                       h = helper.outerHeight() - that.sizeDiff.height;
-
-               if ( that._helper && !o.animate && ( /relative/ ).test( ce.css( "position" ) ) ) {
-                       $( this ).css({
-                               left: ho.left - cop.left - co.left,
-                               width: w,
-                               height: h
-                       });
-               }
-
-               if ( that._helper && !o.animate && ( /static/ ).test( ce.css( "position" ) ) ) {
-                       $( this ).css({
-                               left: ho.left - cop.left - co.left,
-                               width: w,
-                               height: h
-                       });
-               }
-       }
-});
-
-$.ui.plugin.add("resizable", "alsoResize", {
-
-       start: function() {
-               var that = $(this).resizable( "instance" ),
-                       o = that.options,
-                       _store = function(exp) {
-                               $(exp).each(function() {
-                                       var el = $(this);
-                                       el.data("ui-resizable-alsoresize", {
-                                               width: parseInt(el.width(), 10), height: parseInt(el.height(), 10),
-                                               left: parseInt(el.css("left"), 10), top: parseInt(el.css("top"), 10)
-                                       });
-                               });
-                       };
-
-               if (typeof(o.alsoResize) === "object" && !o.alsoResize.parentNode) {
-                       if (o.alsoResize.length) {
-                               o.alsoResize = o.alsoResize[0];
-                               _store(o.alsoResize);
-                       } else {
-                               $.each(o.alsoResize, function(exp) {
-                                       _store(exp);
-                               });
-                       }
-               } else {
-                       _store(o.alsoResize);
-               }
-       },
-
-       resize: function(event, ui) {
-               var that = $(this).resizable( "instance" ),
-                       o = that.options,
-                       os = that.originalSize,
-                       op = that.originalPosition,
-                       delta = {
-                               height: (that.size.height - os.height) || 0,
-                               width: (that.size.width - os.width) || 0,
-                               top: (that.position.top - op.top) || 0,
-                               left: (that.position.left - op.left) || 0
-                       },
-
-                       _alsoResize = function(exp, c) {
-                               $(exp).each(function() {
-                                       var el = $(this), start = $(this).data("ui-resizable-alsoresize"), style = {},
-                                               css = c && c.length ?
-                                                       c :
-                                                       el.parents(ui.originalElement[0]).length ?
-                                                               [ "width", "height" ] :
-                                                               [ "width", "height", "top", "left" ];
-
-                                       $.each(css, function(i, prop) {
-                                               var sum = (start[prop] || 0) + (delta[prop] || 0);
-                                               if (sum && sum >= 0) {
-                                                       style[prop] = sum || null;
-                                               }
-                                       });
-
-                                       el.css(style);
-                               });
-                       };
-
-               if (typeof(o.alsoResize) === "object" && !o.alsoResize.nodeType) {
-                       $.each(o.alsoResize, function(exp, c) {
-                               _alsoResize(exp, c);
-                       });
-               } else {
-                       _alsoResize(o.alsoResize);
-               }
-       },
-
-       stop: function() {
-               $(this).removeData("resizable-alsoresize");
-       }
-});
-
-$.ui.plugin.add("resizable", "ghost", {
-
-       start: function() {
-
-               var that = $(this).resizable( "instance" ), o = that.options, cs = that.size;
-
-               that.ghost = that.originalElement.clone();
-               that.ghost
-                       .css({
-                               opacity: 0.25,
-                               display: "block",
-                               position: "relative",
-                               height: cs.height,
-                               width: cs.width,
-                               margin: 0,
-                               left: 0,
-                               top: 0
-                       })
-                       .addClass("ui-resizable-ghost")
-                       .addClass(typeof o.ghost === "string" ? o.ghost : "");
-
-               that.ghost.appendTo(that.helper);
-
-       },
-
-       resize: function() {
-               var that = $(this).resizable( "instance" );
-               if (that.ghost) {
-                       that.ghost.css({
-                               position: "relative",
-                               height: that.size.height,
-                               width: that.size.width
-                       });
-               }
-       },
-
-       stop: function() {
-               var that = $(this).resizable( "instance" );
-               if (that.ghost && that.helper) {
-                       that.helper.get(0).removeChild(that.ghost.get(0));
-               }
-       }
-
-});
-
-$.ui.plugin.add("resizable", "grid", {
-
-       resize: function() {
-               var outerDimensions,
-                       that = $(this).resizable( "instance" ),
-                       o = that.options,
-                       cs = that.size,
-                       os = that.originalSize,
-                       op = that.originalPosition,
-                       a = that.axis,
-                       grid = typeof o.grid === "number" ? [ o.grid, o.grid ] : o.grid,
-                       gridX = (grid[0] || 1),
-                       gridY = (grid[1] || 1),
-                       ox = Math.round((cs.width - os.width) / gridX) * gridX,
-                       oy = Math.round((cs.height - os.height) / gridY) * gridY,
-                       newWidth = os.width + ox,
-                       newHeight = os.height + oy,
-                       isMaxWidth = o.maxWidth && (o.maxWidth < newWidth),
-                       isMaxHeight = o.maxHeight && (o.maxHeight < newHeight),
-                       isMinWidth = o.minWidth && (o.minWidth > newWidth),
-                       isMinHeight = o.minHeight && (o.minHeight > newHeight);
-
-               o.grid = grid;
-
-               if (isMinWidth) {
-                       newWidth += gridX;
-               }
-               if (isMinHeight) {
-                       newHeight += gridY;
-               }
-               if (isMaxWidth) {
-                       newWidth -= gridX;
-               }
-               if (isMaxHeight) {
-                       newHeight -= gridY;
-               }
-
-               if (/^(se|s|e)$/.test(a)) {
-                       that.size.width = newWidth;
-                       that.size.height = newHeight;
-               } else if (/^(ne)$/.test(a)) {
-                       that.size.width = newWidth;
-                       that.size.height = newHeight;
-                       that.position.top = op.top - oy;
-               } else if (/^(sw)$/.test(a)) {
-                       that.size.width = newWidth;
-                       that.size.height = newHeight;
-                       that.position.left = op.left - ox;
-               } else {
-                       if ( newHeight - gridY <= 0 || newWidth - gridX <= 0) {
-                               outerDimensions = that._getPaddingPlusBorderDimensions( this );
-                       }
-
-                       if ( newHeight - gridY > 0 ) {
-                               that.size.height = newHeight;
-                               that.position.top = op.top - oy;
-                       } else {
-                               newHeight = gridY - outerDimensions.height;
-                               that.size.height = newHeight;
-                               that.position.top = op.top + os.height - newHeight;
-                       }
-                       if ( newWidth - gridX > 0 ) {
-                               that.size.width = newWidth;
-                               that.position.left = op.left - ox;
-                       } else {
-                               newWidth = gridX - outerDimensions.width;
-                               that.size.width = newWidth;
-                               that.position.left = op.left + os.width - newWidth;
-                       }
-               }
-       }
-
-});
-
-var resizable = $.ui.resizable;
-
-
-/*!
- * jQuery UI Dialog 1.11.3
- * http://jqueryui.com
- *
- * Copyright jQuery Foundation and other contributors
- * Released under the MIT license.
- * http://jquery.org/license
- *
- * http://api.jqueryui.com/dialog/
- */
-
-
-var dialog = $.widget( "ui.dialog", {
-       version: "1.11.3",
-       options: {
-               appendTo: "body",
-               autoOpen: true,
-               buttons: [],
-               closeOnEscape: true,
-               closeText: "Close",
-               dialogClass: "",
-               draggable: true,
-               hide: null,
-               height: "auto",
-               maxHeight: null,
-               maxWidth: null,
-               minHeight: 150,
-               minWidth: 150,
-               modal: false,
-               position: {
-                       my: "center",
-                       at: "center",
-                       of: window,
-                       collision: "fit",
-                       // Ensure the titlebar is always visible
-                       using: function( pos ) {
-                               var topOffset = $( this ).css( pos ).offset().top;
-                               if ( topOffset < 0 ) {
-                                       $( this ).css( "top", pos.top - topOffset );
-                               }
-                       }
-               },
-               resizable: true,
-               show: null,
-               title: null,
-               width: 300,
-
-               // callbacks
-               beforeClose: null,
-               close: null,
-               drag: null,
-               dragStart: null,
-               dragStop: null,
-               focus: null,
-               open: null,
-               resize: null,
-               resizeStart: null,
-               resizeStop: null
-       },
-
-       sizeRelatedOptions: {
-               buttons: true,
-               height: true,
-               maxHeight: true,
-               maxWidth: true,
-               minHeight: true,
-               minWidth: true,
-               width: true
-       },
-
-       resizableRelatedOptions: {
-               maxHeight: true,
-               maxWidth: true,
-               minHeight: true,
-               minWidth: true
-       },
-
-       _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();
-
-               if ( this.options.draggable && $.fn.draggable ) {
-                       this._makeDraggable();
-               }
-               if ( this.options.resizable && $.fn.resizable ) {
-                       this._makeResizable();
-               }
-
-               this._isOpen = false;
-
-               this._trackFocus();
-       },
-
-       _init: function() {
-               if ( this.options.autoOpen ) {
-                       this.open();
-               }
-       },
-
-       _appendTo: function() {
-               var element = this.options.appendTo;
-               if ( element && (element.jquery || element.nodeType) ) {
-                       return $( element );
-               }
-               return this.document.find( element || "body" ).eq( 0 );
-       },
-
-       _destroy: function() {
-               var next,
-                       originalPosition = this.originalPosition;
-
-               this._destroyOverlay();
-
-               this.element
-                       .removeUniqueId()
-                       .removeClass( "ui-dialog-content ui-widget-content" )
-                       .css( this.originalCss )
-                       // Without detaching first, the following becomes really slow
-                       .detach();
-
-               this.uiDialog.stop( true, true ).remove();
-
-               if ( this.originalTitle ) {
-                       this.element.attr( "title", this.originalTitle );
-               }
-
-               next = originalPosition.parent.children().eq( originalPosition.index );
-               // Don't try to place the dialog next to itself (#8613)
-               if ( next.length && next[ 0 ] !== this.element[ 0 ] ) {
-                       next.before( this.element );
-               } else {
-                       originalPosition.parent.append( this.element );
-               }
-       },
-
-       widget: function() {
-               return this.uiDialog;
-       },
-
-       disable: $.noop,
-       enable: $.noop,
-
-       close: function( event ) {
-               var activeElement,
-                       that = this;
-
-               if ( !this._isOpen || this._trigger( "beforeClose", event ) === false ) {
-                       return;
-               }
-
-               this._isOpen = false;
-               this._focusedElement = null;
-               this._destroyOverlay();
-               this._untrackInstance();
-
-               if ( !this.opener.filter( ":focusable" ).focus().length ) {
-
-                       // support: IE9
-                       // IE9 throws an "Unspecified error" accessing document.activeElement from an <iframe>
-                       try {
-                               activeElement = this.document[ 0 ].activeElement;
-
-                               // Support: IE9, IE10
-                               // If the <body> is blurred, IE will switch windows, see #4520
-                               if ( activeElement && activeElement.nodeName.toLowerCase() !== "body" ) {
-
-                                       // Hiding a focused element doesn't trigger blur in WebKit
-                                       // so in case we have nothing to focus on, explicitly blur the active element
-                                       // https://bugs.webkit.org/show_bug.cgi?id=47182
-                                       $( activeElement ).blur();
-                               }
-                       } catch ( error ) {}
-               }
-
-               this._hide( this.uiDialog, this.options.hide, function() {
-                       that._trigger( "close", event );
-               });
-       },
-
-       isOpen: function() {
-               return this._isOpen;
-       },
-
-       moveToTop: function() {
-               this._moveToTop();
-       },
-
-       _moveToTop: function( event, silent ) {
-               var moved = false,
-                       zIndicies = this.uiDialog.siblings( ".ui-front:visible" ).map(function() {
-                               return +$( this ).css( "z-index" );
-                       }).get(),
-                       zIndexMax = Math.max.apply( null, zIndicies );
-
-               if ( zIndexMax >= +this.uiDialog.css( "z-index" ) ) {
-                       this.uiDialog.css( "z-index", zIndexMax + 1 );
-                       moved = true;
-               }
-
-               if ( moved && !silent ) {
-                       this._trigger( "focus", event );
-               }
-               return moved;
-       },
-
-       open: function() {
-               var that = this;
-               if ( this._isOpen ) {
-                       if ( this._moveToTop() ) {
-                               this._focusTabbable();
-                       }
-                       return;
-               }
-
-               this._isOpen = true;
-               this.opener = $( this.document[ 0 ].activeElement );
-
-               this._size();
-               this._position();
-               this._createOverlay();
-               this._moveToTop( null, true );
-
-               // Ensure the overlay is moved to the top with the dialog, but only when
-               // opening. The overlay shouldn't move after the dialog is open so that
-               // modeless dialogs opened after the modal dialog stack properly.
-               if ( this.overlay ) {
-                       this.overlay.css( "z-index", this.uiDialog.css( "z-index" ) - 1 );
-               }
-
-               this._show( this.uiDialog, this.options.show, function() {
-                       that._focusTabbable();
-                       that._trigger( "focus" );
-               });
-
-               // Track the dialog immediately upon openening in case a focus event
-               // somehow occurs outside of the dialog before an element inside the
-               // dialog is focused (#10152)
-               this._makeFocusTarget();
-
-               this._trigger( "open" );
-       },
-
-       _focusTabbable: function() {
-               // Set focus to the first match:
-               // 1. An element that was focused previously
-               // 2. First element inside the dialog matching [autofocus]
-               // 3. Tabbable element inside the content element
-               // 4. Tabbable element inside the buttonpane
-               // 5. The close button
-               // 6. The dialog itself
-               var hasFocus = this._focusedElement;
-               if ( !hasFocus ) {
-                       hasFocus = this.element.find( "[autofocus]" );
-               }
-               if ( !hasFocus.length ) {
-                       hasFocus = this.element.find( ":tabbable" );
-               }
-               if ( !hasFocus.length ) {
-                       hasFocus = this.uiDialogButtonPane.find( ":tabbable" );
-               }
-               if ( !hasFocus.length ) {
-                       hasFocus = this.uiDialogTitlebarClose.filter( ":tabbable" );
-               }
-               if ( !hasFocus.length ) {
-                       hasFocus = this.uiDialog;
-               }
-               hasFocus.eq( 0 ).focus();
-       },
-
-       _keepFocus: function( event ) {
-               function checkFocus() {
-                       var activeElement = this.document[0].activeElement,
-                               isActive = this.uiDialog[0] === activeElement ||
-                                       $.contains( this.uiDialog[0], activeElement );
-                       if ( !isActive ) {
-                               this._focusTabbable();
-                       }
-               }
-               event.preventDefault();
-               checkFocus.call( this );
-               // support: IE
-               // IE <= 8 doesn't prevent moving focus even with event.preventDefault()
-               // so we check again later
-               this._delay( checkFocus );
-       },
-
-       _createWrapper: function() {
-               this.uiDialog = $("<div>")
-                       .addClass( "ui-dialog ui-widget ui-widget-content ui-corner-all ui-front " +
-                               this.options.dialogClass )
-                       .hide()
-                       .attr({
-                               // Setting tabIndex makes the div focusable
-                               tabIndex: -1,
-                               role: "dialog"
-                       })
-                       .appendTo( this._appendTo() );
-
-               this._on( this.uiDialog, {
-                       keydown: function( event ) {
-                               if ( this.options.closeOnEscape && !event.isDefaultPrevented() && event.keyCode &&
-                                               event.keyCode === $.ui.keyCode.ESCAPE ) {
-                                       event.preventDefault();
-                                       this.close( event );
-                                       return;
-                               }
-
-                               // prevent tabbing out of dialogs
-                               if ( event.keyCode !== $.ui.keyCode.TAB || event.isDefaultPrevented() ) {
-                                       return;
-                               }
-                               var tabbables = this.uiDialog.find( ":tabbable" ),
-                                       first = tabbables.filter( ":first" ),
-                                       last = tabbables.filter( ":last" );
-
-                               if ( ( event.target === last[0] || event.target === this.uiDialog[0] ) && !event.shiftKey ) {
-                                       this._delay(function() {
-                                               first.focus();
-                                       });
-                                       event.preventDefault();
-                               } else if ( ( event.target === first[0] || event.target === this.uiDialog[0] ) && event.shiftKey ) {
-                                       this._delay(function() {
-                                               last.focus();
-                                       });
-                                       event.preventDefault();
-                               }
-                       },
-                       mousedown: function( event ) {
-                               if ( this._moveToTop( event ) ) {
-                                       this._focusTabbable();
-                               }
-                       }
-               });
-
-               // We assume that any existing aria-describedby attribute means
-               // that the dialog content is marked up properly
-               // otherwise we brute force the content as the description
-               if ( !this.element.find( "[aria-describedby]" ).length ) {
-                       this.uiDialog.attr({
-                               "aria-describedby": this.element.uniqueId().attr( "id" )
-                       });
-               }
-       },
-
-       _createTitlebar: function() {
-               var uiDialogTitle;
-
-               this.uiDialogTitlebar = $( "<div>" )
-                       .addClass( "ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix" )
-                       .prependTo( this.uiDialog );
-               this._on( this.uiDialogTitlebar, {
-                       mousedown: function( event ) {
-                               // Don't prevent click on close button (#8838)
-                               // Focusing a dialog that is partially scrolled out of view
-                               // causes the browser to scroll it into view, preventing the click event
-                               if ( !$( event.target ).closest( ".ui-dialog-titlebar-close" ) ) {
-                                       // Dialog isn't getting focus when dragging (#8063)
-                                       this.uiDialog.focus();
-                               }
-                       }
-               });
-
-               // support: IE
-               // Use type="button" to prevent enter keypresses in textboxes from closing the
-               // dialog in IE (#9312)
-               this.uiDialogTitlebarClose = $( "<button type='button'></button>" )
-                       .button({
-                               label: this.options.closeText,
-                               icons: {
-                                       primary: "ui-icon-closethick"
-                               },
-                               text: false
-                       })
-                       .addClass( "ui-dialog-titlebar-close" )
-                       .appendTo( this.uiDialogTitlebar );
-               this._on( this.uiDialogTitlebarClose, {
-                       click: function( event ) {
-                               event.preventDefault();
-                               this.close( event );
-                       }
-               });
-
-               uiDialogTitle = $( "<span>" )
-                       .uniqueId()
-                       .addClass( "ui-dialog-title" )
-                       .prependTo( this.uiDialogTitlebar );
-               this._title( uiDialogTitle );
-
-               this.uiDialog.attr({
-                       "aria-labelledby": uiDialogTitle.attr( "id" )
-               });
-       },
-
-       _title: function( title ) {
-               if ( !this.options.title ) {
-                       title.html( "&#160;" );
-               }
-               title.text( this.options.title );
-       },
-
-       _createButtonPane: function() {
-               this.uiDialogButtonPane = $( "<div>" )
-                       .addClass( "ui-dialog-buttonpane ui-widget-content ui-helper-clearfix" );
-
-               this.uiButtonSet = $( "<div>" )
-                       .addClass( "ui-dialog-buttonset" )
-                       .appendTo( this.uiDialogButtonPane );
-
-               this._createButtons();
-       },
-
-       _createButtons: function() {
-               var that = this,
-                       buttons = this.options.buttons;
-
-               // if we already have a button pane, remove it
-               this.uiDialogButtonPane.remove();
-               this.uiButtonSet.empty();
-
-               if ( $.isEmptyObject( buttons ) || ($.isArray( buttons ) && !buttons.length) ) {
-                       this.uiDialog.removeClass( "ui-dialog-buttons" );
-                       return;
-               }
-
-               $.each( buttons, function( name, props ) {
-                       var click, buttonOptions;
-                       props = $.isFunction( props ) ?
-                               { click: props, text: name } :
-                               props;
-                       // Default to a non-submitting button
-                       props = $.extend( { type: "button" }, props );
-                       // Change the context for the click callback to be the main element
-                       click = props.click;
-                       props.click = function() {
-                               click.apply( that.element[ 0 ], arguments );
-                       };
-                       buttonOptions = {
-                               icons: props.icons,
-                               text: props.showText
-                       };
-                       delete props.icons;
-                       delete props.showText;
-                       $( "<button></button>", props )
-                               .button( buttonOptions )
-                               .appendTo( that.uiButtonSet );
-               });
-               this.uiDialog.addClass( "ui-dialog-buttons" );
-               this.uiDialogButtonPane.appendTo( this.uiDialog );
-       },
-
-       _makeDraggable: function() {
-               var that = this,
-                       options = this.options;
-
-               function filteredUi( ui ) {
-                       return {
-                               position: ui.position,
-                               offset: ui.offset
-                       };
-               }
-
-               this.uiDialog.draggable({
-                       cancel: ".ui-dialog-content, .ui-dialog-titlebar-close",
-                       handle: ".ui-dialog-titlebar",
-                       containment: "document",
-                       start: function( event, ui ) {
-                               $( this ).addClass( "ui-dialog-dragging" );
-                               that._blockFrames();
-                               that._trigger( "dragStart", event, filteredUi( ui ) );
-                       },
-                       drag: function( event, ui ) {
-                               that._trigger( "drag", event, filteredUi( ui ) );
-                       },
-                       stop: function( event, ui ) {
-                               var left = ui.offset.left - that.document.scrollLeft(),
-                                       top = ui.offset.top - that.document.scrollTop();
-
-                               options.position = {
-                                       my: "left top",
-                                       at: "left" + (left >= 0 ? "+" : "") + left + " " +
-                                               "top" + (top >= 0 ? "+" : "") + top,
-                                       of: that.window
-                               };
-                               $( this ).removeClass( "ui-dialog-dragging" );
-                               that._unblockFrames();
-                               that._trigger( "dragStop", event, filteredUi( ui ) );
-                       }
-               });
-       },
-
-       _makeResizable: function() {
-               var that = this,
-                       options = this.options,
-                       handles = options.resizable,
-                       // .ui-resizable has position: relative defined in the stylesheet
-                       // but dialogs have to use absolute or fixed positioning
-                       position = this.uiDialog.css("position"),
-                       resizeHandles = typeof handles === "string" ?
-                               handles :
-                               "n,e,s,w,se,sw,ne,nw";
-
-               function filteredUi( ui ) {
-                       return {
-                               originalPosition: ui.originalPosition,
-                               originalSize: ui.originalSize,
-                               position: ui.position,
-                               size: ui.size
-                       };
-               }
-
-               this.uiDialog.resizable({
-                       cancel: ".ui-dialog-content",
-                       containment: "document",
-                       alsoResize: this.element,
-                       maxWidth: options.maxWidth,
-                       maxHeight: options.maxHeight,
-                       minWidth: options.minWidth,
-                       minHeight: this._minHeight(),
-                       handles: resizeHandles,
-                       start: function( event, ui ) {
-                               $( this ).addClass( "ui-dialog-resizing" );
-                               that._blockFrames();
-                               that._trigger( "resizeStart", event, filteredUi( ui ) );
-                       },
-                       resize: function( event, ui ) {
-                               that._trigger( "resize", event, filteredUi( ui ) );
-                       },
-                       stop: function( event, ui ) {
-                               var offset = that.uiDialog.offset(),
-                                       left = offset.left - that.document.scrollLeft(),
-                                       top = offset.top - that.document.scrollTop();
-
-                               options.height = that.uiDialog.height();
-                               options.width = that.uiDialog.width();
-                               options.position = {
-                                       my: "left top",
-                                       at: "left" + (left >= 0 ? "+" : "") + left + " " +
-                                               "top" + (top >= 0 ? "+" : "") + top,
-                                       of: that.window
-                               };
-                               $( this ).removeClass( "ui-dialog-resizing" );
-                               that._unblockFrames();
-                               that._trigger( "resizeStop", event, filteredUi( ui ) );
-                       }
-               })
-               .css( "position", position );
-       },
-
-       _trackFocus: function() {
-               this._on( this.widget(), {
-                       focusin: function( event ) {
-                               this._makeFocusTarget();
-                               this._focusedElement = $( event.target );
-                       }
-               });
-       },
-
-       _makeFocusTarget: function() {
-               this._untrackInstance();
-               this._trackingInstances().unshift( this );
-       },
-
-       _untrackInstance: function() {
-               var instances = this._trackingInstances(),
-                       exists = $.inArray( this, instances );
-               if ( exists !== -1 ) {
-                       instances.splice( exists, 1 );
-               }
-       },
-
-       _trackingInstances: function() {
-               var instances = this.document.data( "ui-dialog-instances" );
-               if ( !instances ) {
-                       instances = [];
-                       this.document.data( "ui-dialog-instances", instances );
-               }
-               return instances;
-       },
-
-       _minHeight: function() {
-               var options = this.options;
-
-               return options.height === "auto" ?
-                       options.minHeight :
-                       Math.min( options.minHeight, options.height );
-       },
-
-       _position: function() {
-               // Need to show the dialog to get the actual offset in the position plugin
-               var isVisible = this.uiDialog.is( ":visible" );
-               if ( !isVisible ) {
-                       this.uiDialog.show();
-               }
-               this.uiDialog.position( this.options.position );
-               if ( !isVisible ) {
-                       this.uiDialog.hide();
-               }
-       },
-
-       _setOptions: function( options ) {
-               var that = this,
-                       resize = false,
-                       resizableOptions = {};
-
-               $.each( options, function( key, value ) {
-                       that._setOption( key, value );
-
-                       if ( key in that.sizeRelatedOptions ) {
-                               resize = true;
-                       }
-                       if ( key in that.resizableRelatedOptions ) {
-                               resizableOptions[ key ] = value;
-                       }
-               });
-
-               if ( resize ) {
-                       this._size();
-                       this._position();
-               }
-               if ( this.uiDialog.is( ":data(ui-resizable)" ) ) {
-                       this.uiDialog.resizable( "option", resizableOptions );
-               }
-       },
-
-       _setOption: function( key, value ) {
-               var isDraggable, isResizable,
-                       uiDialog = this.uiDialog;
-
-               if ( key === "dialogClass" ) {
-                       uiDialog
-                               .removeClass( this.options.dialogClass )
-                               .addClass( value );
-               }
-
-               if ( key === "disabled" ) {
-                       return;
-               }
-
-               this._super( key, value );
-
-               if ( key === "appendTo" ) {
-                       this.uiDialog.appendTo( this._appendTo() );
-               }
-
-               if ( key === "buttons" ) {
-                       this._createButtons();
-               }
-
-               if ( key === "closeText" ) {
-                       this.uiDialogTitlebarClose.button({
-                               // Ensure that we always pass a string
-                               label: "" + value
-                       });
-               }
-
-               if ( key === "draggable" ) {
-                       isDraggable = uiDialog.is( ":data(ui-draggable)" );
-                       if ( isDraggable && !value ) {
-                               uiDialog.draggable( "destroy" );
-                       }
-
-                       if ( !isDraggable && value ) {
-                               this._makeDraggable();
-                       }
-               }
-
-               if ( key === "position" ) {
-                       this._position();
-               }
-
-               if ( key === "resizable" ) {
-                       // currently resizable, becoming non-resizable
-                       isResizable = uiDialog.is( ":data(ui-resizable)" );
-                       if ( isResizable && !value ) {
-                               uiDialog.resizable( "destroy" );
-                       }
-
-                       // currently resizable, changing handles
-                       if ( isResizable && typeof value === "string" ) {
-                               uiDialog.resizable( "option", "handles", value );
-                       }
-
-                       // currently non-resizable, becoming resizable
-                       if ( !isResizable && value !== false ) {
-                               this._makeResizable();
-                       }
-               }
-
-               if ( key === "title" ) {
-                       this._title( this.uiDialogTitlebar.find( ".ui-dialog-title" ) );
-               }
-       },
-
-       _size: function() {
-               // If the user has resized the dialog, the .ui-dialog and .ui-dialog-content
-               // divs will both have width and height set, so we need to reset them
-               var nonContentHeight, minContentHeight, maxContentHeight,
-                       options = this.options;
-
-               // Reset content sizing
-               this.element.show().css({
-                       width: "auto",
-                       minHeight: 0,
-                       maxHeight: "none",
-                       height: 0
-               });
-
-               if ( options.minWidth > options.width ) {
-                       options.width = options.minWidth;
-               }
-
-               // reset wrapper sizing
-               // determine the height of all the non-content elements
-               nonContentHeight = this.uiDialog.css({
-                               height: "auto",
-                               width: options.width
-                       })
-                       .outerHeight();
-               minContentHeight = Math.max( 0, options.minHeight - nonContentHeight );
-               maxContentHeight = typeof options.maxHeight === "number" ?
-                       Math.max( 0, options.maxHeight - nonContentHeight ) :
-                       "none";
-
-               if ( options.height === "auto" ) {
-                       this.element.css({
-                               minHeight: minContentHeight,
-                               maxHeight: maxContentHeight,
-                               height: "auto"
-                       });
-               } else {
-                       this.element.height( Math.max( 0, options.height - nonContentHeight ) );
-               }
-
-               if ( this.uiDialog.is( ":data(ui-resizable)" ) ) {
-                       this.uiDialog.resizable( "option", "minHeight", this._minHeight() );
-               }
-       },
-
-       _blockFrames: function() {
-               this.iframeBlocks = this.document.find( "iframe" ).map(function() {
-                       var iframe = $( this );
-
-                       return $( "<div>" )
-                               .css({
-                                       position: "absolute",
-                                       width: iframe.outerWidth(),
-                                       height: iframe.outerHeight()
-                               })
-                               .appendTo( iframe.parent() )
-                               .offset( iframe.offset() )[0];
-               });
-       },
-
-       _unblockFrames: function() {
-               if ( this.iframeBlocks ) {
-                       this.iframeBlocks.remove();
-                       delete this.iframeBlocks;
-               }
-       },
-
-       _allowInteraction: function( event ) {
-               if ( $( event.target ).closest( ".ui-dialog" ).length ) {
-                       return true;
-               }
-
-               // TODO: Remove hack when datepicker implements
-               // the .ui-front logic (#8989)
-               return !!$( event.target ).closest( ".ui-datepicker" ).length;
-       },
-
-       _createOverlay: function() {
-               if ( !this.options.modal ) {
-                       return;
-               }
-
-               // We use a delay in case the overlay is created from an
-               // event that we're going to be cancelling (#2804)
-               var isOpening = true;
-               this._delay(function() {
-                       isOpening = false;
-               });
-
-               if ( !this.document.data( "ui-dialog-overlays" ) ) {
-
-                       // Prevent use of anchors and inputs
-                       // Using _on() for an event handler shared across many instances is
-                       // safe because the dialogs stack and must be closed in reverse order
-                       this._on( this.document, {
-                               focusin: function( event ) {
-                                       if ( isOpening ) {
-                                               return;
-                                       }
-
-                                       if ( !this._allowInteraction( event ) ) {
-                                               event.preventDefault();
-                                               this._trackingInstances()[ 0 ]._focusTabbable();
-                                       }
-                               }
-                       });
-               }
-
-               this.overlay = $( "<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 ) {
-                       return;
-               }
-
-               if ( this.overlay ) {
-                       var overlays = this.document.data( "ui-dialog-overlays" ) - 1;
-
-                       if ( !overlays ) {
-                               this.document
-                                       .unbind( "focusin" )
-                                       .removeData( "ui-dialog-overlays" );
-                       } else {
-                               this.document.data( "ui-dialog-overlays", overlays );
-                       }
-
-                       this.overlay.remove();
-                       this.overlay = null;
-               }
-       }
-});
-
-
-/*!
- * jQuery UI Droppable 1.11.3
- * http://jqueryui.com
- *
- * Copyright jQuery Foundation and other contributors
- * Released under the MIT license.
- * http://jquery.org/license
- *
- * http://api.jqueryui.com/droppable/
- */
-
-
-$.widget( "ui.droppable", {
-       version: "1.11.3",
-       widgetEventPrefix: "drop",
-       options: {
-               accept: "*",
-               activeClass: false,
-               addClasses: true,
-               greedy: false,
-               hoverClass: false,
-               scope: "default",
-               tolerance: "intersect",
-
-               // callbacks
-               activate: null,
-               deactivate: null,
-               drop: null,
-               out: null,
-               over: null
-       },
-       _create: function() {
-
-               var proportions,
-                       o = this.options,
-                       accept = o.accept;
-
-               this.isover = false;
-               this.isout = true;
-
-               this.accept = $.isFunction( accept ) ? accept : function( d ) {
-                       return d.is( accept );
-               };
-
-               this.proportions = function( /* valueToWrite */ ) {
-                       if ( arguments.length ) {
-                               // Store the droppable's proportions
-                               proportions = arguments[ 0 ];
-                       } else {
-                               // Retrieve or derive the droppable's proportions
-                               return proportions ?
-                                       proportions :
-                                       proportions = {
-                                               width: this.element[ 0 ].offsetWidth,
-                                               height: this.element[ 0 ].offsetHeight
-                                       };
-                       }
-               };
-
-               this._addToManager( o.scope );
-
-               o.addClasses && this.element.addClass( "ui-droppable" );
-
-       },
-
-       _addToManager: function( scope ) {
-               // Add the reference and positions to the manager
-               $.ui.ddmanager.droppables[ scope ] = $.ui.ddmanager.droppables[ scope ] || [];
-               $.ui.ddmanager.droppables[ scope ].push( this );
-       },
-
-       _splice: function( drop ) {
-               var i = 0;
-               for ( ; i < drop.length; i++ ) {
-                       if ( drop[ i ] === this ) {
-                               drop.splice( i, 1 );
-                       }
-               }
-       },
-
-       _destroy: function() {
-               var drop = $.ui.ddmanager.droppables[ this.options.scope ];
-
-               this._splice( drop );
-
-               this.element.removeClass( "ui-droppable ui-droppable-disabled" );
-       },
-
-       _setOption: function( key, value ) {
-
-               if ( key === "accept" ) {
-                       this.accept = $.isFunction( value ) ? value : function( d ) {
-                               return d.is( value );
-                       };
-               } else if ( key === "scope" ) {
-                       var drop = $.ui.ddmanager.droppables[ this.options.scope ];
-
-                       this._splice( drop );
-                       this._addToManager( value );
-               }
-
-               this._super( key, value );
-       },
-
-       _activate: function( event ) {
-               var draggable = $.ui.ddmanager.current;
-               if ( this.options.activeClass ) {
-                       this.element.addClass( this.options.activeClass );
-               }
-               if ( draggable ){
-                       this._trigger( "activate", event, this.ui( draggable ) );
-               }
-       },
-
-       _deactivate: function( event ) {
-               var draggable = $.ui.ddmanager.current;
-               if ( this.options.activeClass ) {
-                       this.element.removeClass( this.options.activeClass );
-               }
-               if ( draggable ){
-                       this._trigger( "deactivate", event, this.ui( draggable ) );
-               }
-       },
-
-       _over: function( event ) {
-
-               var draggable = $.ui.ddmanager.current;
-
-               // Bail if draggable and droppable are same element
-               if ( !draggable || ( draggable.currentItem || draggable.element )[ 0 ] === this.element[ 0 ] ) {
-                       return;
-               }
-
-               if ( this.accept.call( this.element[ 0 ], ( draggable.currentItem || draggable.element ) ) ) {
-                       if ( this.options.hoverClass ) {
-                               this.element.addClass( this.options.hoverClass );
-                       }
-                       this._trigger( "over", event, this.ui( draggable ) );
-               }
-
-       },
-
-       _out: function( event ) {
-
-               var draggable = $.ui.ddmanager.current;
-
-               // Bail if draggable and droppable are same element
-               if ( !draggable || ( draggable.currentItem || draggable.element )[ 0 ] === this.element[ 0 ] ) {
-                       return;
-               }
-
-               if ( this.accept.call( this.element[ 0 ], ( draggable.currentItem || draggable.element ) ) ) {
-                       if ( this.options.hoverClass ) {
-                               this.element.removeClass( this.options.hoverClass );
-                       }
-                       this._trigger( "out", event, this.ui( draggable ) );
-               }
-
-       },
-
-       _drop: function( event, custom ) {
-
-               var draggable = custom || $.ui.ddmanager.current,
-                       childrenIntersection = false;
-
-               // Bail if draggable and droppable are same element
-               if ( !draggable || ( draggable.currentItem || draggable.element )[ 0 ] === this.element[ 0 ] ) {
-                       return false;
-               }
-
-               this.element.find( ":data(ui-droppable)" ).not( ".ui-draggable-dragging" ).each(function() {
-                       var inst = $( this ).droppable( "instance" );
-                       if (
-                               inst.options.greedy &&
-                               !inst.options.disabled &&
-                               inst.options.scope === draggable.options.scope &&
-                               inst.accept.call( inst.element[ 0 ], ( draggable.currentItem || draggable.element ) ) &&
-                               $.ui.intersect( draggable, $.extend( inst, { offset: inst.element.offset() } ), inst.options.tolerance, event )
-                       ) { childrenIntersection = true; return false; }
-               });
-               if ( childrenIntersection ) {
-                       return false;
-               }
-
-               if ( this.accept.call( this.element[ 0 ], ( draggable.currentItem || draggable.element ) ) ) {
-                       if ( this.options.activeClass ) {
-                               this.element.removeClass( this.options.activeClass );
-                       }
-                       if ( this.options.hoverClass ) {
-                               this.element.removeClass( this.options.hoverClass );
-                       }
-                       this._trigger( "drop", event, this.ui( draggable ) );
-                       return this.element;
-               }
-
-               return false;
-
-       },
-
-       ui: function( c ) {
-               return {
-                       draggable: ( c.currentItem || c.element ),
-                       helper: c.helper,
-                       position: c.position,
-                       offset: c.positionAbs
-               };
-       }
-
-});
-
-$.ui.intersect = (function() {
-       function isOverAxis( x, reference, size ) {
-               return ( x >= reference ) && ( x < ( reference + size ) );
-       }
-
-       return function( draggable, droppable, toleranceMode, event ) {
-
-               if ( !droppable.offset ) {
-                       return false;
-               }
-
-               var x1 = ( draggable.positionAbs || draggable.position.absolute ).left + draggable.margins.left,
-                       y1 = ( draggable.positionAbs || draggable.position.absolute ).top + draggable.margins.top,
-                       x2 = x1 + draggable.helperProportions.width,
-                       y2 = y1 + draggable.helperProportions.height,
-                       l = droppable.offset.left,
-                       t = droppable.offset.top,
-                       r = l + droppable.proportions().width,
-                       b = t + droppable.proportions().height;
-
-               switch ( toleranceMode ) {
-               case "fit":
-                       return ( l <= x1 && x2 <= r && t <= y1 && y2 <= b );
-               case "intersect":
-                       return ( l < x1 + ( draggable.helperProportions.width / 2 ) && // Right Half
-                               x2 - ( draggable.helperProportions.width / 2 ) < r && // Left Half
-                               t < y1 + ( draggable.helperProportions.height / 2 ) && // Bottom Half
-                               y2 - ( draggable.helperProportions.height / 2 ) < b ); // Top Half
-               case "pointer":
-                       return isOverAxis( event.pageY, t, droppable.proportions().height ) && isOverAxis( event.pageX, l, droppable.proportions().width );
-               case "touch":
-                       return (
-                               ( y1 >= t && y1 <= b ) || // Top edge touching
-                               ( y2 >= t && y2 <= b ) || // Bottom edge touching
-                               ( y1 < t && y2 > b ) // Surrounded vertically
-                       ) && (
-                               ( x1 >= l && x1 <= r ) || // Left edge touching
-                               ( x2 >= l && x2 <= r ) || // Right edge touching
-                               ( x1 < l && x2 > r ) // Surrounded horizontally
-                       );
-               default:
-                       return false;
-               }
-       };
-})();
-
-/*
-       This manager tracks offsets of draggables and droppables
-*/
-$.ui.ddmanager = {
-       current: null,
-       droppables: { "default": [] },
-       prepareOffsets: function( t, event ) {
-
-               var i, j,
-                       m = $.ui.ddmanager.droppables[ t.options.scope ] || [],
-                       type = event ? event.type : null, // workaround for #2317
-                       list = ( t.currentItem || t.element ).find( ":data(ui-droppable)" ).addBack();
-
-               droppablesLoop: for ( i = 0; i < m.length; i++ ) {
-
-                       // No disabled and non-accepted
-                       if ( m[ i ].options.disabled || ( t && !m[ i ].accept.call( m[ i ].element[ 0 ], ( t.currentItem || t.element ) ) ) ) {
-                               continue;
-                       }
-
-                       // Filter out elements in the current dragged item
-                       for ( j = 0; j < list.length; j++ ) {
-                               if ( list[ j ] === m[ i ].element[ 0 ] ) {
-                                       m[ i ].proportions().height = 0;
-                                       continue droppablesLoop;
-                               }
-                       }
-
-                       m[ i ].visible = m[ i ].element.css( "display" ) !== "none";
-                       if ( !m[ i ].visible ) {
-                               continue;
-                       }
-
-                       // Activate the droppable if used directly from draggables
-                       if ( type === "mousedown" ) {
-                               m[ i ]._activate.call( m[ i ], event );
-                       }
-
-                       m[ i ].offset = m[ i ].element.offset();
-                       m[ i ].proportions({ width: m[ i ].element[ 0 ].offsetWidth, height: m[ i ].element[ 0 ].offsetHeight });
-
-               }
-
-       },
-       drop: function( draggable, event ) {
-
-               var dropped = false;
-               // Create a copy of the droppables in case the list changes during the drop (#9116)
-               $.each( ( $.ui.ddmanager.droppables[ draggable.options.scope ] || [] ).slice(), function() {
-
-                       if ( !this.options ) {
-                               return;
-                       }
-                       if ( !this.options.disabled && this.visible && $.ui.intersect( draggable, this, this.options.tolerance, event ) ) {
-                               dropped = this._drop.call( this, event ) || dropped;
-                       }
-
-                       if ( !this.options.disabled && this.visible && this.accept.call( this.element[ 0 ], ( draggable.currentItem || draggable.element ) ) ) {
-                               this.isout = true;
-                               this.isover = false;
-                               this._deactivate.call( this, event );
-                       }
-
-               });
-               return dropped;
-
-       },
-       dragStart: function( draggable, event ) {
-               // Listen for scrolling so that if the dragging causes scrolling the position of the droppables can be recalculated (see #5003)
-               draggable.element.parentsUntil( "body" ).bind( "scroll.droppable", function() {
-                       if ( !draggable.options.refreshPositions ) {
-                               $.ui.ddmanager.prepareOffsets( draggable, event );
-                       }
-               });
-       },
-       drag: function( draggable, event ) {
-
-               // If you have a highly dynamic page, you might try this option. It renders positions every time you move the mouse.
-               if ( draggable.options.refreshPositions ) {
-                       $.ui.ddmanager.prepareOffsets( draggable, event );
-               }
-
-               // Run through all droppables and check their positions based on specific tolerance options
-               $.each( $.ui.ddmanager.droppables[ draggable.options.scope ] || [], function() {
-
-                       if ( this.options.disabled || this.greedyChild || !this.visible ) {
-                               return;
-                       }
-
-                       var parentInstance, scope, parent,
-                               intersects = $.ui.intersect( draggable, this, this.options.tolerance, event ),
-                               c = !intersects && this.isover ? "isout" : ( intersects && !this.isover ? "isover" : null );
-                       if ( !c ) {
-                               return;
-                       }
-
-                       if ( this.options.greedy ) {
-                               // find droppable parents with same scope
-                               scope = this.options.scope;
-                               parent = this.element.parents( ":data(ui-droppable)" ).filter(function() {
-                                       return $( this ).droppable( "instance" ).options.scope === scope;
-                               });
-
-                               if ( parent.length ) {
-                                       parentInstance = $( parent[ 0 ] ).droppable( "instance" );
-                                       parentInstance.greedyChild = ( c === "isover" );
-                               }
-                       }
-
-                       // we just moved into a greedy child
-                       if ( parentInstance && c === "isover" ) {
-                               parentInstance.isover = false;
-                               parentInstance.isout = true;
-                               parentInstance._out.call( parentInstance, event );
-                       }
-
-                       this[ c ] = true;
-                       this[c === "isout" ? "isover" : "isout"] = false;
-                       this[c === "isover" ? "_over" : "_out"].call( this, event );
-
-                       // we just moved out of a greedy child
-                       if ( parentInstance && c === "isout" ) {
-                               parentInstance.isout = false;
-                               parentInstance.isover = true;
-                               parentInstance._over.call( parentInstance, event );
-                       }
-               });
-
-       },
-       dragStop: function( draggable, event ) {
-               draggable.element.parentsUntil( "body" ).unbind( "scroll.droppable" );
-               // Call prepareOffsets one final time since IE does not fire return scroll events when overflow was caused by drag (see #5003)
-               if ( !draggable.options.refreshPositions ) {
-                       $.ui.ddmanager.prepareOffsets( draggable, event );
-               }
-       }
-};
-
-var droppable = $.ui.droppable;
-
-
-/*!
- * jQuery UI Effects 1.11.3
- * http://jqueryui.com
- *
- * Copyright jQuery Foundation and other contributors
- * Released under the MIT license.
- * http://jquery.org/license
- *
- * http://api.jqueryui.com/category/effects-core/
- */
-
-
-var dataSpace = "ui-effects-",
-
-       // Create a local jQuery because jQuery Color relies on it and the
-       // global may not exist with AMD and a custom build (#10199)
-       jQuery = $;
-
-$.effects = {
-       effect: {}
-};
-
-/*!
- * jQuery Color Animations v2.1.2
- * https://github.com/jquery/jquery-color
- *
- * Copyright 2014 jQuery Foundation and other contributors
- * Released under the MIT license.
- * http://jquery.org/license
- *
- * Date: Wed Jan 16 08:47:09 2013 -0600
- */
-(function( jQuery, undefined ) {
-
-       var stepHooks = "backgroundColor borderBottomColor borderLeftColor borderRightColor borderTopColor color columnRuleColor outlineColor textDecorationColor textEmphasisColor",
-
-       // plusequals test for += 100 -= 100
-       rplusequals = /^([\-+])=\s*(\d+\.?\d*)/,
-       // a set of RE's that can match strings and generate color tuples.
-       stringParsers = [ {
-                       re: /rgba?\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,
-                       parse: function( execResult ) {
-                               return [
-                                       execResult[ 1 ],
-                                       execResult[ 2 ],
-                                       execResult[ 3 ],
-                                       execResult[ 4 ]
-                               ];
-                       }
-               }, {
-                       re: /rgba?\(\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,
-                       parse: function( execResult ) {
-                               return [
-                                       execResult[ 1 ] * 2.55,
-                                       execResult[ 2 ] * 2.55,
-                                       execResult[ 3 ] * 2.55,
-                                       execResult[ 4 ]
-                               ];
-                       }
-               }, {
-                       // this regex ignores A-F because it's compared against an already lowercased string
-                       re: /#([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})/,
-                       parse: function( execResult ) {
-                               return [
-                                       parseInt( execResult[ 1 ], 16 ),
-                                       parseInt( execResult[ 2 ], 16 ),
-                                       parseInt( execResult[ 3 ], 16 )
-                               ];
-                       }
-               }, {
-                       // this regex ignores A-F because it's compared against an already lowercased string
-                       re: /#([a-f0-9])([a-f0-9])([a-f0-9])/,
-                       parse: function( execResult ) {
-                               return [
-                                       parseInt( execResult[ 1 ] + execResult[ 1 ], 16 ),
-                                       parseInt( execResult[ 2 ] + execResult[ 2 ], 16 ),
-                                       parseInt( execResult[ 3 ] + execResult[ 3 ], 16 )
-                               ];
-                       }
-               }, {
-                       re: /hsla?\(\s*(\d+(?:\.\d+)?)\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,
-                       space: "hsla",
-                       parse: function( execResult ) {
-                               return [
-                                       execResult[ 1 ],
-                                       execResult[ 2 ] / 100,
-                                       execResult[ 3 ] / 100,
-                                       execResult[ 4 ]
-                               ];
-                       }
-               } ],
-
-       // jQuery.Color( )
-       color = jQuery.Color = function( color, green, blue, alpha ) {
-               return new jQuery.Color.fn.parse( color, green, blue, alpha );
-       },
-       spaces = {
-               rgba: {
-                       props: {
-                               red: {
-                                       idx: 0,
-                                       type: "byte"
-                               },
-                               green: {
-                                       idx: 1,
-                                       type: "byte"
-                               },
-                               blue: {
-                                       idx: 2,
-                                       type: "byte"
-                               }
-                       }
-               },
-
-               hsla: {
-                       props: {
-                               hue: {
-                                       idx: 0,
-                                       type: "degrees"
-                               },
-                               saturation: {
-                                       idx: 1,
-                                       type: "percent"
-                               },
-                               lightness: {
-                                       idx: 2,
-                                       type: "percent"
-                               }
-                       }
-               }
-       },
-       propTypes = {
-               "byte": {
-                       floor: true,
-                       max: 255
-               },
-               "percent": {
-                       max: 1
-               },
-               "degrees": {
-                       mod: 360,
-                       floor: true
-               }
-       },
-       support = color.support = {},
-
-       // element for support tests
-       supportElem = jQuery( "<p>" )[ 0 ],
-
-       // colors = jQuery.Color.names
-       colors,
-
-       // local aliases of functions called often
-       each = jQuery.each;
-
-// determine rgba support immediately
-supportElem.style.cssText = "background-color:rgba(1,1,1,.5)";
-support.rgba = supportElem.style.backgroundColor.indexOf( "rgba" ) > -1;
-
-// define cache name and alpha properties
-// for rgba and hsla spaces
-each( spaces, function( spaceName, space ) {
-       space.cache = "_" + spaceName;
-       space.props.alpha = {
-               idx: 3,
-               type: "percent",
-               def: 1
-       };
-});
-
-function clamp( value, prop, allowEmpty ) {
-       var type = propTypes[ prop.type ] || {};
-
-       if ( value == null ) {
-               return (allowEmpty || !prop.def) ? null : prop.def;
-       }
-
-       // ~~ is an short way of doing floor for positive numbers
-       value = type.floor ? ~~value : parseFloat( value );
-
-       // IE will pass in empty strings as value for alpha,
-       // which will hit this case
-       if ( isNaN( value ) ) {
-               return prop.def;
-       }
-
-       if ( type.mod ) {
-               // we add mod before modding to make sure that negatives values
-               // get converted properly: -10 -> 350
-               return (value + type.mod) % type.mod;
-       }
-
-       // for now all property types without mod have min and max
-       return 0 > value ? 0 : type.max < value ? type.max : value;
-}
-
-function stringParse( string ) {
-       var inst = color(),
-               rgba = inst._rgba = [];
-
-       string = string.toLowerCase();
-
-       each( stringParsers, function( i, parser ) {
-               var parsed,
-                       match = parser.re.exec( string ),
-                       values = match && parser.parse( match ),
-                       spaceName = parser.space || "rgba";
-
-               if ( values ) {
-                       parsed = inst[ spaceName ]( values );
-
-                       // if this was an rgba parse the assignment might happen twice
-                       // oh well....
-                       inst[ spaces[ spaceName ].cache ] = parsed[ spaces[ spaceName ].cache ];
-                       rgba = inst._rgba = parsed._rgba;
-
-                       // exit each( stringParsers ) here because we matched
-                       return false;
-               }
-       });
-
-       // Found a stringParser that handled it
-       if ( rgba.length ) {
-
-               // if this came from a parsed string, force "transparent" when alpha is 0
-               // chrome, (and maybe others) return "transparent" as rgba(0,0,0,0)
-               if ( rgba.join() === "0,0,0,0" ) {
-                       jQuery.extend( rgba, colors.transparent );
-               }
-               return inst;
-       }
-
-       // named colors
-       return colors[ string ];
-}
-
-color.fn = jQuery.extend( color.prototype, {
-       parse: function( red, green, blue, alpha ) {
-               if ( red === undefined ) {
-                       this._rgba = [ null, null, null, null ];
-                       return this;
-               }
-               if ( red.jquery || red.nodeType ) {
-                       red = jQuery( red ).css( green );
-                       green = undefined;
-               }
-
-               var inst = this,
-                       type = jQuery.type( red ),
-                       rgba = this._rgba = [];
-
-               // more than 1 argument specified - assume ( red, green, blue, alpha )
-               if ( green !== undefined ) {
-                       red = [ red, green, blue, alpha ];
-                       type = "array";
-               }
-
-               if ( type === "string" ) {
-                       return this.parse( stringParse( red ) || colors._default );
-               }
-
-               if ( type === "array" ) {
-                       each( spaces.rgba.props, function( key, prop ) {
-                               rgba[ prop.idx ] = clamp( red[ prop.idx ], prop );
-                       });
-                       return this;
-               }
-
-               if ( type === "object" ) {
-                       if ( red instanceof color ) {
-                               each( spaces, function( spaceName, space ) {
-                                       if ( red[ space.cache ] ) {
-                                               inst[ space.cache ] = red[ space.cache ].slice();
-                                       }
-                               });
-                       } else {
-                               each( spaces, function( spaceName, space ) {
-                                       var cache = space.cache;
-                                       each( space.props, function( key, prop ) {
-
-                                               // if the cache doesn't exist, and we know how to convert
-                                               if ( !inst[ cache ] && space.to ) {
-
-                                                       // if the value was null, we don't need to copy it
-                                                       // if the key was alpha, we don't need to copy it either
-                                                       if ( key === "alpha" || red[ key ] == null ) {
-                                                               return;
-                                                       }
-                                                       inst[ cache ] = space.to( inst._rgba );
-                                               }
-
-                                               // this is the only case where we allow nulls for ALL properties.
-                                               // call clamp with alwaysAllowEmpty
-                                               inst[ cache ][ prop.idx ] = clamp( red[ key ], prop, true );
-                                       });
-
-                                       // everything defined but alpha?
-                                       if ( inst[ cache ] && jQuery.inArray( null, inst[ cache ].slice( 0, 3 ) ) < 0 ) {
-                                               // use the default of 1
-                                               inst[ cache ][ 3 ] = 1;
-                                               if ( space.from ) {
-                                                       inst._rgba = space.from( inst[ cache ] );
-                                               }
-                                       }
-                               });
-                       }
-                       return this;
-               }
-       },
-       is: function( compare ) {
-               var is = color( compare ),
-                       same = true,
-                       inst = this;
-
-               each( spaces, function( _, space ) {
-                       var localCache,
-                               isCache = is[ space.cache ];
-                       if (isCache) {
-                               localCache = inst[ space.cache ] || space.to && space.to( inst._rgba ) || [];
-                               each( space.props, function( _, prop ) {
-                                       if ( isCache[ prop.idx ] != null ) {
-                                               same = ( isCache[ prop.idx ] === localCache[ prop.idx ] );
-                                               return same;
-                                       }
-                               });
-                       }
-                       return same;
-               });
-               return same;
-       },
-       _space: function() {
-               var used = [],
-                       inst = this;
-               each( spaces, function( spaceName, space ) {
-                       if ( inst[ space.cache ] ) {
-                               used.push( spaceName );
-                       }
-               });
-               return used.pop();
-       },
-       transition: function( other, distance ) {
-               var end = color( other ),
-                       spaceName = end._space(),
-                       space = spaces[ spaceName ],
-                       startColor = this.alpha() === 0 ? color( "transparent" ) : this,
-                       start = startColor[ space.cache ] || space.to( startColor._rgba ),
-                       result = start.slice();
-
-               end = end[ space.cache ];
-               each( space.props, function( key, prop ) {
-                       var index = prop.idx,
-                               startValue = start[ index ],
-                               endValue = end[ index ],
-                               type = propTypes[ prop.type ] || {};
-
-                       // if null, don't override start value
-                       if ( endValue === null ) {
-                               return;
-                       }
-                       // if null - use end
-                       if ( startValue === null ) {
-                               result[ index ] = endValue;
-                       } else {
-                               if ( type.mod ) {
-                                       if ( endValue - startValue > type.mod / 2 ) {
-                                               startValue += type.mod;
-                                       } else if ( startValue - endValue > type.mod / 2 ) {
-                                               startValue -= type.mod;
-                                       }
-                               }
-                               result[ index ] = clamp( ( endValue - startValue ) * distance + startValue, prop );
-                       }
-               });
-               return this[ spaceName ]( result );
-       },
-       blend: function( opaque ) {
-               // if we are already opaque - return ourself
-               if ( this._rgba[ 3 ] === 1 ) {
-                       return this;
-               }
-
-               var rgb = this._rgba.slice(),
-                       a = rgb.pop(),
-                       blend = color( opaque )._rgba;
-
-               return color( jQuery.map( rgb, function( v, i ) {
-                       return ( 1 - a ) * blend[ i ] + a * v;
-               }));
-       },
-       toRgbaString: function() {
-               var prefix = "rgba(",
-                       rgba = jQuery.map( this._rgba, function( v, i ) {
-                               return v == null ? ( i > 2 ? 1 : 0 ) : v;
-                       });
-
-               if ( rgba[ 3 ] === 1 ) {
-                       rgba.pop();
-                       prefix = "rgb(";
-               }
-
-               return prefix + rgba.join() + ")";
-       },
-       toHslaString: function() {
-               var prefix = "hsla(",
-                       hsla = jQuery.map( this.hsla(), function( v, i ) {
-                               if ( v == null ) {
-                                       v = i > 2 ? 1 : 0;
-                               }
-
-                               // catch 1 and 2
-                               if ( i && i < 3 ) {
-                                       v = Math.round( v * 100 ) + "%";
-                               }
-                               return v;
-                       });
-
-               if ( hsla[ 3 ] === 1 ) {
-                       hsla.pop();
-                       prefix = "hsl(";
-               }
-               return prefix + hsla.join() + ")";
-       },
-       toHexString: function( includeAlpha ) {
-               var rgba = this._rgba.slice(),
-                       alpha = rgba.pop();
-
-               if ( includeAlpha ) {
-                       rgba.push( ~~( alpha * 255 ) );
-               }
-
-               return "#" + jQuery.map( rgba, function( v ) {
-
-                       // default to 0 when nulls exist
-                       v = ( v || 0 ).toString( 16 );
-                       return v.length === 1 ? "0" + v : v;
-               }).join("");
-       },
-       toString: function() {
-               return this._rgba[ 3 ] === 0 ? "transparent" : this.toRgbaString();
-       }
-});
-color.fn.parse.prototype = color.fn;
-
-// hsla conversions adapted from:
-// https://code.google.com/p/maashaack/source/browse/packages/graphics/trunk/src/graphics/colors/HUE2RGB.as?r=5021
-
-function hue2rgb( p, q, h ) {
-       h = ( h + 1 ) % 1;
-       if ( h * 6 < 1 ) {
-               return p + ( q - p ) * h * 6;
-       }
-       if ( h * 2 < 1) {
-               return q;
-       }
-       if ( h * 3 < 2 ) {
-               return p + ( q - p ) * ( ( 2 / 3 ) - h ) * 6;
-       }
-       return p;
-}
-
-spaces.hsla.to = function( rgba ) {
-       if ( rgba[ 0 ] == null || rgba[ 1 ] == null || rgba[ 2 ] == null ) {
-               return [ null, null, null, rgba[ 3 ] ];
-       }
-       var r = rgba[ 0 ] / 255,
-               g = rgba[ 1 ] / 255,
-               b = rgba[ 2 ] / 255,
-               a = rgba[ 3 ],
-               max = Math.max( r, g, b ),
-               min = Math.min( r, g, b ),
-               diff = max - min,
-               add = max + min,
-               l = add * 0.5,
-               h, s;
-
-       if ( min === max ) {
-               h = 0;
-       } else if ( r === max ) {
-               h = ( 60 * ( g - b ) / diff ) + 360;
-       } else if ( g === max ) {
-               h = ( 60 * ( b - r ) / diff ) + 120;
-       } else {
-               h = ( 60 * ( r - g ) / diff ) + 240;
-       }
-
-       // chroma (diff) == 0 means greyscale which, by definition, saturation = 0%
-       // otherwise, saturation is based on the ratio of chroma (diff) to lightness (add)
-       if ( diff === 0 ) {
-               s = 0;
-       } else if ( l <= 0.5 ) {
-               s = diff / add;
-       } else {
-               s = diff / ( 2 - add );
-       }
-       return [ Math.round(h) % 360, s, l, a == null ? 1 : a ];
-};
-
-spaces.hsla.from = function( hsla ) {
-       if ( hsla[ 0 ] == null || hsla[ 1 ] == null || hsla[ 2 ] == null ) {
-               return [ null, null, null, hsla[ 3 ] ];
-       }
-       var h = hsla[ 0 ] / 360,
-               s = hsla[ 1 ],
-               l = hsla[ 2 ],
-               a = hsla[ 3 ],
-               q = l <= 0.5 ? l * ( 1 + s ) : l + s - l * s,
-               p = 2 * l - q;
-
-       return [
-               Math.round( hue2rgb( p, q, h + ( 1 / 3 ) ) * 255 ),
-               Math.round( hue2rgb( p, q, h ) * 255 ),
-               Math.round( hue2rgb( p, q, h - ( 1 / 3 ) ) * 255 ),
-               a
-       ];
-};
-
-each( spaces, function( spaceName, space ) {
-       var props = space.props,
-               cache = space.cache,
-               to = space.to,
-               from = space.from;
-
-       // makes rgba() and hsla()
-       color.fn[ spaceName ] = function( value ) {
-
-               // generate a cache for this space if it doesn't exist
-               if ( to && !this[ cache ] ) {
-                       this[ cache ] = to( this._rgba );
-               }
-               if ( value === undefined ) {
-                       return this[ cache ].slice();
-               }
-
-               var ret,
-                       type = jQuery.type( value ),
-                       arr = ( type === "array" || type === "object" ) ? value : arguments,
-                       local = this[ cache ].slice();
-
-               each( props, function( key, prop ) {
-                       var val = arr[ type === "object" ? key : prop.idx ];
-                       if ( val == null ) {
-                               val = local[ prop.idx ];
-                       }
-                       local[ prop.idx ] = clamp( val, prop );
-               });
-
-               if ( from ) {
-                       ret = color( from( local ) );
-                       ret[ cache ] = local;
-                       return ret;
-               } else {
-                       return color( local );
-               }
-       };
-
-       // makes red() green() blue() alpha() hue() saturation() lightness()
-       each( props, function( key, prop ) {
-               // alpha is included in more than one space
-               if ( color.fn[ key ] ) {
-                       return;
-               }
-               color.fn[ key ] = function( value ) {
-                       var vtype = jQuery.type( value ),
-                               fn = ( key === "alpha" ? ( this._hsla ? "hsla" : "rgba" ) : spaceName ),
-                               local = this[ fn ](),
-                               cur = local[ prop.idx ],
-                               match;
-
-                       if ( vtype === "undefined" ) {
-                               return cur;
-                       }
-
-                       if ( vtype === "function" ) {
-                               value = value.call( this, cur );
-                               vtype = jQuery.type( value );
-                       }
-                       if ( value == null && prop.empty ) {
-                               return this;
-                       }
-                       if ( vtype === "string" ) {
-                               match = rplusequals.exec( value );
-                               if ( match ) {
-                                       value = cur + parseFloat( match[ 2 ] ) * ( match[ 1 ] === "+" ? 1 : -1 );
-                               }
-                       }
-                       local[ prop.idx ] = value;
-                       return this[ fn ]( local );
-               };
-       });
-});
-
-// add cssHook and .fx.step function for each named hook.
-// accept a space separated string of properties
-color.hook = function( hook ) {
-       var hooks = hook.split( " " );
-       each( hooks, function( i, hook ) {
-               jQuery.cssHooks[ hook ] = {
-                       set: function( elem, value ) {
-                               var parsed, curElem,
-                                       backgroundColor = "";
-
-                               if ( value !== "transparent" && ( jQuery.type( value ) !== "string" || ( parsed = stringParse( value ) ) ) ) {
-                                       value = color( parsed || value );
-                                       if ( !support.rgba && value._rgba[ 3 ] !== 1 ) {
-                                               curElem = hook === "backgroundColor" ? elem.parentNode : elem;
-                                               while (
-                                                       (backgroundColor === "" || backgroundColor === "transparent") &&
-                                                       curElem && curElem.style
-                                               ) {
-                                                       try {
-                                                               backgroundColor = jQuery.css( curElem, "backgroundColor" );
-                                                               curElem = curElem.parentNode;
-                                                       } catch ( e ) {
-                                                       }
-                                               }
-
-                                               value = value.blend( backgroundColor && backgroundColor !== "transparent" ?
-                                                       backgroundColor :
-                                                       "_default" );
-                                       }
-
-                                       value = value.toRgbaString();
-                               }
-                               try {
-                                       elem.style[ hook ] = value;
-                               } catch ( e ) {
-                                       // wrapped to prevent IE from throwing errors on "invalid" values like 'auto' or 'inherit'
-                               }
-                       }
-               };
-               jQuery.fx.step[ hook ] = function( fx ) {
-                       if ( !fx.colorInit ) {
-                               fx.start = color( fx.elem, hook );
-                               fx.end = color( fx.end );
-                               fx.colorInit = true;
-                       }
-                       jQuery.cssHooks[ hook ].set( fx.elem, fx.start.transition( fx.end, fx.pos ) );
-               };
-       });
-
-};
-
-color.hook( stepHooks );
-
-jQuery.cssHooks.borderColor = {
-       expand: function( value ) {
-               var expanded = {};
-
-               each( [ "Top", "Right", "Bottom", "Left" ], function( i, part ) {
-                       expanded[ "border" + part + "Color" ] = value;
-               });
-               return expanded;
-       }
-};
-
-// Basic color names only.
-// Usage of any of the other color names requires adding yourself or including
-// jquery.color.svg-names.js.
-colors = jQuery.Color.names = {
-       // 4.1. Basic color keywords
-       aqua: "#00ffff",
-       black: "#000000",
-       blue: "#0000ff",
-       fuchsia: "#ff00ff",
-       gray: "#808080",
-       green: "#008000",
-       lime: "#00ff00",
-       maroon: "#800000",
-       navy: "#000080",
-       olive: "#808000",
-       purple: "#800080",
-       red: "#ff0000",
-       silver: "#c0c0c0",
-       teal: "#008080",
-       white: "#ffffff",
-       yellow: "#ffff00",
-
-       // 4.2.3. "transparent" color keyword
-       transparent: [ null, null, null, 0 ],
-
-       _default: "#ffffff"
-};
-
-})( jQuery );
-
-/******************************************************************************/
-/****************************** CLASS ANIMATIONS ******************************/
-/******************************************************************************/
-(function() {
-
-var classAnimationActions = [ "add", "remove", "toggle" ],
-       shorthandStyles = {
-               border: 1,
-               borderBottom: 1,
-               borderColor: 1,
-               borderLeft: 1,
-               borderRight: 1,
-               borderTop: 1,
-               borderWidth: 1,
-               margin: 1,
-               padding: 1
-       };
-
-$.each([ "borderLeftStyle", "borderRightStyle", "borderBottomStyle", "borderTopStyle" ], function( _, prop ) {
-       $.fx.step[ prop ] = function( fx ) {
-               if ( fx.end !== "none" && !fx.setAttr || fx.pos === 1 && !fx.setAttr ) {
-                       jQuery.style( fx.elem, prop, fx.end );
-                       fx.setAttr = true;
-               }
-       };
-});
-
-function getElementStyles( elem ) {
-       var key, len,
-               style = elem.ownerDocument.defaultView ?
-                       elem.ownerDocument.defaultView.getComputedStyle( elem, null ) :
-                       elem.currentStyle,
-               styles = {};
-
-       if ( style && style.length && style[ 0 ] && style[ style[ 0 ] ] ) {
-               len = style.length;
-               while ( len-- ) {
-                       key = style[ len ];
-                       if ( typeof style[ key ] === "string" ) {
-                               styles[ $.camelCase( key ) ] = style[ key ];
-                       }
-               }
-       // support: Opera, IE <9
-       } else {
-               for ( key in style ) {
-                       if ( typeof style[ key ] === "string" ) {
-                               styles[ key ] = style[ key ];
-                       }
-               }
-       }
-
-       return styles;
-}
-
-function styleDifference( oldStyle, newStyle ) {
-       var diff = {},
-               name, value;
-
-       for ( name in newStyle ) {
-               value = newStyle[ name ];
-               if ( oldStyle[ name ] !== value ) {
-                       if ( !shorthandStyles[ name ] ) {
-                               if ( $.fx.step[ name ] || !isNaN( parseFloat( value ) ) ) {
-                                       diff[ name ] = value;
-                               }
-                       }
-               }
-       }
-
-       return diff;
-}
-
-// support: jQuery <1.8
-if ( !$.fn.addBack ) {
-       $.fn.addBack = function( selector ) {
-               return this.add( selector == null ?
-                       this.prevObject : this.prevObject.filter( selector )
-               );
-       };
-}
-
-$.effects.animateClass = function( value, duration, easing, callback ) {
-       var o = $.speed( duration, easing, callback );
-
-       return this.queue( function() {
-               var animated = $( this ),
-                       baseClass = animated.attr( "class" ) || "",
-                       applyClassChange,
-                       allAnimations = o.children ? animated.find( "*" ).addBack() : animated;
-
-               // map the animated objects to store the original styles.
-               allAnimations = allAnimations.map(function() {
-                       var el = $( this );
-                       return {
-                               el: el,
-                               start: getElementStyles( this )
-                       };
-               });
-
-               // apply class change
-               applyClassChange = function() {
-                       $.each( classAnimationActions, function(i, action) {
-                               if ( value[ action ] ) {
-                                       animated[ action + "Class" ]( value[ action ] );
-                               }
-                       });
-               };
-               applyClassChange();
-
-               // map all animated objects again - calculate new styles and diff
-               allAnimations = allAnimations.map(function() {
-                       this.end = getElementStyles( this.el[ 0 ] );
-                       this.diff = styleDifference( this.start, this.end );
-                       return this;
-               });
-
-               // apply original class
-               animated.attr( "class", baseClass );
-
-               // map all animated objects again - this time collecting a promise
-               allAnimations = allAnimations.map(function() {
-                       var styleInfo = this,
-                               dfd = $.Deferred(),
-                               opts = $.extend({}, o, {
-                                       queue: false,
-                                       complete: function() {
-                                               dfd.resolve( styleInfo );
-                                       }
-                               });
-
-                       this.el.animate( this.diff, opts );
-                       return dfd.promise();
-               });
-
-               // once all animations have completed:
-               $.when.apply( $, allAnimations.get() ).done(function() {
-
-                       // set the final class
-                       applyClassChange();
-
-                       // for each animated element,
-                       // clear all css properties that were animated
-                       $.each( arguments, function() {
-                               var el = this.el;
-                               $.each( this.diff, function(key) {
-                                       el.css( key, "" );
-                               });
-                       });
-
-                       // this is guarnteed to be there if you use jQuery.speed()
-                       // it also handles dequeuing the next anim...
-                       o.complete.call( animated[ 0 ] );
-               });
-       });
-};
-
-$.fn.extend({
-       addClass: (function( orig ) {
-               return function( classNames, speed, easing, callback ) {
-                       return speed ?
-                               $.effects.animateClass.call( this,
-                                       { add: classNames }, speed, easing, callback ) :
-                               orig.apply( this, arguments );
-               };
-       })( $.fn.addClass ),
-
-       removeClass: (function( orig ) {
-               return function( classNames, speed, easing, callback ) {
-                       return arguments.length > 1 ?
-                               $.effects.animateClass.call( this,
-                                       { remove: classNames }, speed, easing, callback ) :
-                               orig.apply( this, arguments );
-               };
-       })( $.fn.removeClass ),
-
-       toggleClass: (function( orig ) {
-               return function( classNames, force, speed, easing, callback ) {
-                       if ( typeof force === "boolean" || force === undefined ) {
-                               if ( !speed ) {
-                                       // without speed parameter
-                                       return orig.apply( this, arguments );
-                               } else {
-                                       return $.effects.animateClass.call( this,
-                                               (force ? { add: classNames } : { remove: classNames }),
-                                               speed, easing, callback );
-                               }
-                       } else {
-                               // without force parameter
-                               return $.effects.animateClass.call( this,
-                                       { toggle: classNames }, force, speed, easing );
-                       }
-               };
-       })( $.fn.toggleClass ),
-
-       switchClass: function( remove, add, speed, easing, callback) {
-               return $.effects.animateClass.call( this, {
-                       add: add,
-                       remove: remove
-               }, speed, easing, callback );
-       }
-});
-
-})();
-
-/******************************************************************************/
-/*********************************** EFFECTS **********************************/
-/******************************************************************************/
-
-(function() {
-
-$.extend( $.effects, {
-       version: "1.11.3",
-
-       // Saves a set of properties in a data storage
-       save: function( element, set ) {
-               for ( var i = 0; i < set.length; i++ ) {
-                       if ( set[ i ] !== null ) {
-                               element.data( dataSpace + set[ i ], element[ 0 ].style[ set[ i ] ] );
-                       }
-               }
-       },
-
-       // Restores a set of previously saved properties from a data storage
-       restore: function( element, set ) {
-               var val, i;
-               for ( i = 0; i < set.length; i++ ) {
-                       if ( set[ i ] !== null ) {
-                               val = element.data( dataSpace + set[ i ] );
-                               // support: jQuery 1.6.2
-                               // http://bugs.jquery.com/ticket/9917
-                               // jQuery 1.6.2 incorrectly returns undefined for any falsy value.
-                               // We can't differentiate between "" and 0 here, so we just assume
-                               // empty string since it's likely to be a more common value...
-                               if ( val === undefined ) {
-                                       val = "";
-                               }
-                               element.css( set[ i ], val );
-                       }
-               }
-       },
-
-       setMode: function( el, mode ) {
-               if (mode === "toggle") {
-                       mode = el.is( ":hidden" ) ? "show" : "hide";
-               }
-               return mode;
-       },
-
-       // Translates a [top,left] array into a baseline value
-       // this should be a little more flexible in the future to handle a string & hash
-       getBaseline: function( origin, original ) {
-               var y, x;
-               switch ( origin[ 0 ] ) {
-                       case "top": y = 0; break;
-                       case "middle": y = 0.5; break;
-                       case "bottom": y = 1; break;
-                       default: y = origin[ 0 ] / original.height;
-               }
-               switch ( origin[ 1 ] ) {
-                       case "left": x = 0; break;
-                       case "center": x = 0.5; break;
-                       case "right": x = 1; break;
-                       default: x = origin[ 1 ] / original.width;
-               }
-               return {
-                       x: x,
-                       y: y
-               };
-       },
-
-       // Wraps the element around a wrapper that copies position properties
-       createWrapper: function( element ) {
-
-               // if the element is already wrapped, return it
-               if ( element.parent().is( ".ui-effects-wrapper" )) {
-                       return element.parent();
-               }
-
-               // wrap the element
-               var props = {
-                               width: element.outerWidth(true),
-                               height: element.outerHeight(true),
-                               "float": element.css( "float" )
-                       },
-                       wrapper = $( "<div></div>" )
-                               .addClass( "ui-effects-wrapper" )
-                               .css({
-                                       fontSize: "100%",
-                                       background: "transparent",
-                                       border: "none",
-                                       margin: 0,
-                                       padding: 0
-                               }),
-                       // Store the size in case width/height are defined in % - Fixes #5245
-                       size = {
-                               width: element.width(),
-                               height: element.height()
-                       },
-                       active = document.activeElement;
-
-               // support: Firefox
-               // Firefox incorrectly exposes anonymous content
-               // https://bugzilla.mozilla.org/show_bug.cgi?id=561664
-               try {
-                       active.id;
-               } catch ( e ) {
-                       active = document.body;
-               }
-
-               element.wrap( wrapper );
-
-               // Fixes #7595 - Elements lose focus when wrapped.
-               if ( element[ 0 ] === active || $.contains( element[ 0 ], active ) ) {
-                       $( active ).focus();
-               }
-
-               wrapper = element.parent(); //Hotfix for jQuery 1.4 since some change in wrap() seems to actually lose the reference to the wrapped element
-
-               // transfer positioning properties to the wrapper
-               if ( element.css( "position" ) === "static" ) {
-                       wrapper.css({ position: "relative" });
-                       element.css({ position: "relative" });
-               } else {
-                       $.extend( props, {
-                               position: element.css( "position" ),
-                               zIndex: element.css( "z-index" )
-                       });
-                       $.each([ "top", "left", "bottom", "right" ], function(i, pos) {
-                               props[ pos ] = element.css( pos );
-                               if ( isNaN( parseInt( props[ pos ], 10 ) ) ) {
-                                       props[ pos ] = "auto";
-                               }
-                       });
-                       element.css({
-                               position: "relative",
-                               top: 0,
-                               left: 0,
-                               right: "auto",
-                               bottom: "auto"
-                       });
-               }
-               element.css(size);
-
-               return wrapper.css( props ).show();
-       },
-
-       removeWrapper: function( element ) {
-               var active = document.activeElement;
-
-               if ( element.parent().is( ".ui-effects-wrapper" ) ) {
-                       element.parent().replaceWith( element );
-
-                       // Fixes #7595 - Elements lose focus when wrapped.
-                       if ( element[ 0 ] === active || $.contains( element[ 0 ], active ) ) {
-                               $( active ).focus();
-                       }
-               }
-
-               return element;
-       },
-
-       setTransition: function( element, list, factor, value ) {
-               value = value || {};
-               $.each( list, function( i, x ) {
-                       var unit = element.cssUnit( x );
-                       if ( unit[ 0 ] > 0 ) {
-                               value[ x ] = unit[ 0 ] * factor + unit[ 1 ];
-                       }
-               });
-               return value;
-       }
-});
-
-// return an effect options object for the given parameters:
-function _normalizeArguments( effect, options, speed, callback ) {
-
-       // allow passing all options as the first parameter
-       if ( $.isPlainObject( effect ) ) {
-               options = effect;
-               effect = effect.effect;
-       }
-
-       // convert to an object
-       effect = { effect: effect };
-
-       // catch (effect, null, ...)
-       if ( options == null ) {
-               options = {};
-       }
-
-       // catch (effect, callback)
-       if ( $.isFunction( options ) ) {
-               callback = options;
-               speed = null;
-               options = {};
-       }
-
-       // catch (effect, speed, ?)
-       if ( typeof options === "number" || $.fx.speeds[ options ] ) {
-               callback = speed;
-               speed = options;
-               options = {};
-       }
-
-       // catch (effect, options, callback)
-       if ( $.isFunction( speed ) ) {
-               callback = speed;
-               speed = null;
-       }
-
-       // add options to effect
-       if ( options ) {
-               $.extend( effect, options );
-       }
-
-       speed = speed || options.duration;
-       effect.duration = $.fx.off ? 0 :
-               typeof speed === "number" ? speed :
-               speed in $.fx.speeds ? $.fx.speeds[ speed ] :
-               $.fx.speeds._default;
-
-       effect.complete = callback || options.complete;
-
-       return effect;
-}
-
-function standardAnimationOption( option ) {
-       // Valid standard speeds (nothing, number, named speed)
-       if ( !option || typeof option === "number" || $.fx.speeds[ option ] ) {
-               return true;
-       }
-
-       // Invalid strings - treat as "normal" speed
-       if ( typeof option === "string" && !$.effects.effect[ option ] ) {
-               return true;
-       }
-
-       // Complete callback
-       if ( $.isFunction( option ) ) {
-               return true;
-       }
-
-       // Options hash (but not naming an effect)
-       if ( typeof option === "object" && !option.effect ) {
-               return true;
-       }
-
-       // Didn't match any standard API
-       return false;
-}
-
-$.fn.extend({
-       effect: function( /* effect, options, speed, callback */ ) {
-               var args = _normalizeArguments.apply( this, arguments ),
-                       mode = args.mode,
-                       queue = args.queue,
-                       effectMethod = $.effects.effect[ args.effect ];
-
-               if ( $.fx.off || !effectMethod ) {
-                       // delegate to the original method (e.g., .show()) if possible
-                       if ( mode ) {
-                               return this[ mode ]( args.duration, args.complete );
-                       } else {
-                               return this.each( function() {
-                                       if ( args.complete ) {
-                                               args.complete.call( this );
-                                       }
-                               });
-                       }
-               }
-
-               function run( next ) {
-                       var elem = $( this ),
-                               complete = args.complete,
-                               mode = args.mode;
-
-                       function done() {
-                               if ( $.isFunction( complete ) ) {
-                                       complete.call( elem[0] );
-                               }
-                               if ( $.isFunction( next ) ) {
-                                       next();
-                               }
-                       }
-
-                       // If the element already has the correct final state, delegate to
-                       // the core methods so the internal tracking of "olddisplay" works.
-                       if ( elem.is( ":hidden" ) ? mode === "hide" : mode === "show" ) {
-                               elem[ mode ]();
-                               done();
-                       } else {
-                               effectMethod.call( elem[0], args, done );
-                       }
-               }
-
-               return queue === false ? this.each( run ) : this.queue( queue || "fx", run );
-       },
-
-       show: (function( orig ) {
-               return function( option ) {
-                       if ( standardAnimationOption( option ) ) {
-                               return orig.apply( this, arguments );
-                       } else {
-                               var args = _normalizeArguments.apply( this, arguments );
-                               args.mode = "show";
-                               return this.effect.call( this, args );
-                       }
-               };
-       })( $.fn.show ),
-
-       hide: (function( orig ) {
-               return function( option ) {
-                       if ( standardAnimationOption( option ) ) {
-                               return orig.apply( this, arguments );
-                       } else {
-                               var args = _normalizeArguments.apply( this, arguments );
-                               args.mode = "hide";
-                               return this.effect.call( this, args );
-                       }
-               };
-       })( $.fn.hide ),
-
-       toggle: (function( orig ) {
-               return function( option ) {
-                       if ( standardAnimationOption( option ) || typeof option === "boolean" ) {
-                               return orig.apply( this, arguments );
-                       } else {
-                               var args = _normalizeArguments.apply( this, arguments );
-                               args.mode = "toggle";
-                               return this.effect.call( this, args );
-                       }
-               };
-       })( $.fn.toggle ),
-
-       // helper functions
-       cssUnit: function(key) {
-               var style = this.css( key ),
-                       val = [];
-
-               $.each( [ "em", "px", "%", "pt" ], function( i, unit ) {
-                       if ( style.indexOf( unit ) > 0 ) {
-                               val = [ parseFloat( style ), unit ];
-                       }
-               });
-               return val;
-       }
-});
-
-})();
-
-/******************************************************************************/
-/*********************************** EASING ***********************************/
-/******************************************************************************/
-
-(function() {
-
-// based on easing equations from Robert Penner (http://www.robertpenner.com/easing)
-
-var baseEasings = {};
-
-$.each( [ "Quad", "Cubic", "Quart", "Quint", "Expo" ], function( i, name ) {
-       baseEasings[ name ] = function( p ) {
-               return Math.pow( p, i + 2 );
-       };
-});
-
-$.extend( baseEasings, {
-       Sine: function( p ) {
-               return 1 - Math.cos( p * Math.PI / 2 );
-       },
-       Circ: function( p ) {
-               return 1 - Math.sqrt( 1 - p * p );
-       },
-       Elastic: function( p ) {
-               return p === 0 || p === 1 ? p :
-                       -Math.pow( 2, 8 * (p - 1) ) * Math.sin( ( (p - 1) * 80 - 7.5 ) * Math.PI / 15 );
-       },
-       Back: function( p ) {
-               return p * p * ( 3 * p - 2 );
-       },
-       Bounce: function( p ) {
-               var pow2,
-                       bounce = 4;
-
-               while ( p < ( ( pow2 = Math.pow( 2, --bounce ) ) - 1 ) / 11 ) {}
-               return 1 / Math.pow( 4, 3 - bounce ) - 7.5625 * Math.pow( ( pow2 * 3 - 2 ) / 22 - p, 2 );
-       }
-});
-
-$.each( baseEasings, function( name, easeIn ) {
-       $.easing[ "easeIn" + name ] = easeIn;
-       $.easing[ "easeOut" + name ] = function( p ) {
-               return 1 - easeIn( 1 - p );
-       };
-       $.easing[ "easeInOut" + name ] = function( p ) {
-               return p < 0.5 ?
-                       easeIn( p * 2 ) / 2 :
-                       1 - easeIn( p * -2 + 2 ) / 2;
-       };
-});
-
-})();
-
-var effect = $.effects;
-
-
-/*!
- * jQuery UI Effects Blind 1.11.3
- * http://jqueryui.com
- *
- * Copyright jQuery Foundation and other contributors
- * Released under the MIT license.
- * http://jquery.org/license
- *
- * http://api.jqueryui.com/blind-effect/
- */
-
-
-var effectBlind = $.effects.effect.blind = function( o, done ) {
-       // Create element
-       var el = $( this ),
-               rvertical = /up|down|vertical/,
-               rpositivemotion = /up|left|vertical|horizontal/,
-               props = [ "position", "top", "bottom", "left", "right", "height", "width" ],
-               mode = $.effects.setMode( el, o.mode || "hide" ),
-               direction = o.direction || "up",
-               vertical = rvertical.test( direction ),
-               ref = vertical ? "height" : "width",
-               ref2 = vertical ? "top" : "left",
-               motion = rpositivemotion.test( direction ),
-               animation = {},
-               show = mode === "show",
-               wrapper, distance, margin;
-
-       // if already wrapped, the wrapper's properties are my property. #6245
-       if ( el.parent().is( ".ui-effects-wrapper" ) ) {
-               $.effects.save( el.parent(), props );
-       } else {
-               $.effects.save( el, props );
-       }
-       el.show();
-       wrapper = $.effects.createWrapper( el ).css({
-               overflow: "hidden"
-       });
-
-       distance = wrapper[ ref ]();
-       margin = parseFloat( wrapper.css( ref2 ) ) || 0;
-
-       animation[ ref ] = show ? distance : 0;
-       if ( !motion ) {
-               el
-                       .css( vertical ? "bottom" : "right", 0 )
-                       .css( vertical ? "top" : "left", "auto" )
-                       .css({ position: "absolute" });
-
-               animation[ ref2 ] = show ? margin : distance + margin;
-       }
-
-       // start at 0 if we are showing
-       if ( show ) {
-               wrapper.css( ref, 0 );
-               if ( !motion ) {
-                       wrapper.css( ref2, margin + distance );
-               }
-       }
-
-       // Animate
-       wrapper.animate( animation, {
-               duration: o.duration,
-               easing: o.easing,
-               queue: false,
-               complete: function() {
-                       if ( mode === "hide" ) {
-                               el.hide();
-                       }
-                       $.effects.restore( el, props );
-                       $.effects.removeWrapper( el );
-                       done();
-               }
-       });
-};
-
-
-/*!
- * jQuery UI Effects Bounce 1.11.3
- * http://jqueryui.com
- *
- * Copyright jQuery Foundation and other contributors
- * Released under the MIT license.
- * http://jquery.org/license
- *
- * http://api.jqueryui.com/bounce-effect/
- */
-
-
-var effectBounce = $.effects.effect.bounce = function( o, done ) {
-       var el = $( this ),
-               props = [ "position", "top", "bottom", "left", "right", "height", "width" ],
-
-               // defaults:
-               mode = $.effects.setMode( el, o.mode || "effect" ),
-               hide = mode === "hide",
-               show = mode === "show",
-               direction = o.direction || "up",
-               distance = o.distance,
-               times = o.times || 5,
-
-               // number of internal animations
-               anims = times * 2 + ( show || hide ? 1 : 0 ),
-               speed = o.duration / anims,
-               easing = o.easing,
-
-               // utility:
-               ref = ( direction === "up" || direction === "down" ) ? "top" : "left",
-               motion = ( direction === "up" || direction === "left" ),
-               i,
-               upAnim,
-               downAnim,
-
-               // we will need to re-assemble the queue to stack our animations in place
-               queue = el.queue(),
-               queuelen = queue.length;
-
-       // Avoid touching opacity to prevent clearType and PNG issues in IE
-       if ( show || hide ) {
-               props.push( "opacity" );
-       }
-
-       $.effects.save( el, props );
-       el.show();
-       $.effects.createWrapper( el ); // Create Wrapper
-
-       // default distance for the BIGGEST bounce is the outer Distance / 3
-       if ( !distance ) {
-               distance = el[ ref === "top" ? "outerHeight" : "outerWidth" ]() / 3;
-       }
-
-       if ( show ) {
-               downAnim = { opacity: 1 };
-               downAnim[ ref ] = 0;
-
-               // if we are showing, force opacity 0 and set the initial position
-               // then do the "first" animation
-               el.css( "opacity", 0 )
-                       .css( ref, motion ? -distance * 2 : distance * 2 )
-                       .animate( downAnim, speed, easing );
-       }
-
-       // start at the smallest distance if we are hiding
-       if ( hide ) {
-               distance = distance / Math.pow( 2, times - 1 );
-       }
-
-       downAnim = {};
-       downAnim[ ref ] = 0;
-       // Bounces up/down/left/right then back to 0 -- times * 2 animations happen here
-       for ( i = 0; i < times; i++ ) {
-               upAnim = {};
-               upAnim[ ref ] = ( motion ? "-=" : "+=" ) + distance;
-
-               el.animate( upAnim, speed, easing )
-                       .animate( downAnim, speed, easing );
-
-               distance = hide ? distance * 2 : distance / 2;
-       }
-
-       // Last Bounce when Hiding
-       if ( hide ) {
-               upAnim = { opacity: 0 };
-               upAnim[ ref ] = ( motion ? "-=" : "+=" ) + distance;
-
-               el.animate( upAnim, speed, easing );
-       }
-
-       el.queue(function() {
-               if ( hide ) {
-                       el.hide();
-               }
-               $.effects.restore( el, props );
-               $.effects.removeWrapper( el );
-               done();
-       });
-
-       // inject all the animations we just queued to be first in line (after "inprogress")
-       if ( queuelen > 1) {
-               queue.splice.apply( queue,
-                       [ 1, 0 ].concat( queue.splice( queuelen, anims + 1 ) ) );
-       }
-       el.dequeue();
-
-};
-
-
-/*!
- * jQuery UI Effects Clip 1.11.3
- * http://jqueryui.com
- *
- * Copyright jQuery Foundation and other contributors
- * Released under the MIT license.
- * http://jquery.org/license
- *
- * http://api.jqueryui.com/clip-effect/
- */
-
-
-var effectClip = $.effects.effect.clip = function( o, done ) {
-       // Create element
-       var el = $( this ),
-               props = [ "position", "top", "bottom", "left", "right", "height", "width" ],
-               mode = $.effects.setMode( el, o.mode || "hide" ),
-               show = mode === "show",
-               direction = o.direction || "vertical",
-               vert = direction === "vertical",
-               size = vert ? "height" : "width",
-               position = vert ? "top" : "left",
-               animation = {},
-               wrapper, animate, distance;
-
-       // Save & Show
-       $.effects.save( el, props );
-       el.show();
-
-       // Create Wrapper
-       wrapper = $.effects.createWrapper( el ).css({
-               overflow: "hidden"
-       });
-       animate = ( el[0].tagName === "IMG" ) ? wrapper : el;
-       distance = animate[ size ]();
-
-       // Shift
-       if ( show ) {
-               animate.css( size, 0 );
-               animate.css( position, distance / 2 );
-       }
-
-       // Create Animation Object:
-       animation[ size ] = show ? distance : 0;
-       animation[ position ] = show ? 0 : distance / 2;
-
-       // Animate
-       animate.animate( animation, {
-               queue: false,
-               duration: o.duration,
-               easing: o.easing,
-               complete: function() {
-                       if ( !show ) {
-                               el.hide();
-                       }
-                       $.effects.restore( el, props );
-                       $.effects.removeWrapper( el );
-                       done();
-               }
-       });
-
-};
-
-
-/*!
- * jQuery UI Effects Drop 1.11.3
- * http://jqueryui.com
- *
- * Copyright jQuery Foundation and other contributors
- * Released under the MIT license.
- * http://jquery.org/license
- *
- * http://api.jqueryui.com/drop-effect/
- */
-
-
-var effectDrop = $.effects.effect.drop = function( o, done ) {
-
-       var el = $( this ),
-               props = [ "position", "top", "bottom", "left", "right", "opacity", "height", "width" ],
-               mode = $.effects.setMode( el, o.mode || "hide" ),
-               show = mode === "show",
-               direction = o.direction || "left",
-               ref = ( direction === "up" || direction === "down" ) ? "top" : "left",
-               motion = ( direction === "up" || direction === "left" ) ? "pos" : "neg",
-               animation = {
-                       opacity: show ? 1 : 0
-               },
-               distance;
-
-       // Adjust
-       $.effects.save( el, props );
-       el.show();
-       $.effects.createWrapper( el );
-
-       distance = o.distance || el[ ref === "top" ? "outerHeight" : "outerWidth" ]( true ) / 2;
-
-       if ( show ) {
-               el
-                       .css( "opacity", 0 )
-                       .css( ref, motion === "pos" ? -distance : distance );
-       }
-
-       // Animation
-       animation[ ref ] = ( show ?
-               ( motion === "pos" ? "+=" : "-=" ) :
-               ( motion === "pos" ? "-=" : "+=" ) ) +
-               distance;
-
-       // Animate
-       el.animate( animation, {
-               queue: false,
-               duration: o.duration,
-               easing: o.easing,
-               complete: function() {
-                       if ( mode === "hide" ) {
-                               el.hide();
-                       }
-                       $.effects.restore( el, props );
-                       $.effects.removeWrapper( el );
-                       done();
-               }
-       });
-};
-
-
-/*!
- * jQuery UI Effects Explode 1.11.3
- * http://jqueryui.com
- *
- * Copyright jQuery Foundation and other contributors
- * Released under the MIT license.
- * http://jquery.org/license
- *
- * http://api.jqueryui.com/explode-effect/
- */
-
-
-var effectExplode = $.effects.effect.explode = function( o, done ) {
-
-       var rows = o.pieces ? Math.round( Math.sqrt( o.pieces ) ) : 3,
-               cells = rows,
-               el = $( this ),
-               mode = $.effects.setMode( el, o.mode || "hide" ),
-               show = mode === "show",
-
-               // show and then visibility:hidden the element before calculating offset
-               offset = el.show().css( "visibility", "hidden" ).offset(),
-
-               // width and height of a piece
-               width = Math.ceil( el.outerWidth() / cells ),
-               height = Math.ceil( el.outerHeight() / rows ),
-               pieces = [],
-
-               // loop
-               i, j, left, top, mx, my;
-
-       // children animate complete:
-       function childComplete() {
-               pieces.push( this );
-               if ( pieces.length === rows * cells ) {
-                       animComplete();
-               }
-       }
-
-       // clone the element for each row and cell.
-       for ( i = 0; i < rows ; i++ ) { // ===>
-               top = offset.top + i * height;
-               my = i - ( rows - 1 ) / 2 ;
-
-               for ( j = 0; j < cells ; j++ ) { // |||
-                       left = offset.left + j * width;
-                       mx = j - ( cells - 1 ) / 2 ;
-
-                       // Create a clone of the now hidden main element that will be absolute positioned
-                       // within a wrapper div off the -left and -top equal to size of our pieces
-                       el
-                               .clone()
-                               .appendTo( "body" )
-                               .wrap( "<div></div>" )
-                               .css({
-                                       position: "absolute",
-                                       visibility: "visible",
-                                       left: -j * width,
-                                       top: -i * height
-                               })
-
-                       // select the wrapper - make it overflow: hidden and absolute positioned based on
-                       // where the original was located +left and +top equal to the size of pieces
-                               .parent()
-                               .addClass( "ui-effects-explode" )
-                               .css({
-                                       position: "absolute",
-                                       overflow: "hidden",
-                                       width: width,
-                                       height: height,
-                                       left: left + ( show ? mx * width : 0 ),
-                                       top: top + ( show ? my * height : 0 ),
-                                       opacity: show ? 0 : 1
-                               }).animate({
-                                       left: left + ( show ? 0 : mx * width ),
-                                       top: top + ( show ? 0 : my * height ),
-                                       opacity: show ? 1 : 0
-                               }, o.duration || 500, o.easing, childComplete );
-               }
-       }
-
-       function animComplete() {
-               el.css({
-                       visibility: "visible"
-               });
-               $( pieces ).remove();
-               if ( !show ) {
-                       el.hide();
-               }
-               done();
-       }
-};
-
-
-/*!
- * jQuery UI Effects Fade 1.11.3
- * http://jqueryui.com
- *
- * Copyright jQuery Foundation and other contributors
- * Released under the MIT license.
- * http://jquery.org/license
- *
- * http://api.jqueryui.com/fade-effect/
- */
-
-
-var effectFade = $.effects.effect.fade = function( o, done ) {
-       var el = $( this ),
-               mode = $.effects.setMode( el, o.mode || "toggle" );
-
-       el.animate({
-               opacity: mode
-       }, {
-               queue: false,
-               duration: o.duration,
-               easing: o.easing,
-               complete: done
-       });
-};
-
-
-/*!
- * jQuery UI Effects Fold 1.11.3
- * http://jqueryui.com
- *
- * Copyright jQuery Foundation and other contributors
- * Released under the MIT license.
- * http://jquery.org/license
- *
- * http://api.jqueryui.com/fold-effect/
- */
-
-
-var effectFold = $.effects.effect.fold = function( o, done ) {
-
-       // Create element
-       var el = $( this ),
-               props = [ "position", "top", "bottom", "left", "right", "height", "width" ],
-               mode = $.effects.setMode( el, o.mode || "hide" ),
-               show = mode === "show",
-               hide = mode === "hide",
-               size = o.size || 15,
-               percent = /([0-9]+)%/.exec( size ),
-               horizFirst = !!o.horizFirst,
-               widthFirst = show !== horizFirst,
-               ref = widthFirst ? [ "width", "height" ] : [ "height", "width" ],
-               duration = o.duration / 2,
-               wrapper, distance,
-               animation1 = {},
-               animation2 = {};
-
-       $.effects.save( el, props );
-       el.show();
-
-       // Create Wrapper
-       wrapper = $.effects.createWrapper( el ).css({
-               overflow: "hidden"
-       });
-       distance = widthFirst ?
-               [ wrapper.width(), wrapper.height() ] :
-               [ wrapper.height(), wrapper.width() ];
-
-       if ( percent ) {
-               size = parseInt( percent[ 1 ], 10 ) / 100 * distance[ hide ? 0 : 1 ];
-       }
-       if ( show ) {
-               wrapper.css( horizFirst ? {
-                       height: 0,
-                       width: size
-               } : {
-                       height: size,
-                       width: 0
-               });
-       }
-
-       // Animation
-       animation1[ ref[ 0 ] ] = show ? distance[ 0 ] : size;
-       animation2[ ref[ 1 ] ] = show ? distance[ 1 ] : 0;
-
-       // Animate
-       wrapper
-               .animate( animation1, duration, o.easing )
-               .animate( animation2, duration, o.easing, function() {
-                       if ( hide ) {
-                               el.hide();
-                       }
-                       $.effects.restore( el, props );
-                       $.effects.removeWrapper( el );
-                       done();
-               });
-
-};
-
-
-/*!
- * jQuery UI Effects Highlight 1.11.3
- * http://jqueryui.com
- *
- * Copyright jQuery Foundation and other contributors
- * Released under the MIT license.
- * http://jquery.org/license
- *
- * http://api.jqueryui.com/highlight-effect/
- */
-
-
-var effectHighlight = $.effects.effect.highlight = function( o, done ) {
-       var elem = $( this ),
-               props = [ "backgroundImage", "backgroundColor", "opacity" ],
-               mode = $.effects.setMode( elem, o.mode || "show" ),
-               animation = {
-                       backgroundColor: elem.css( "backgroundColor" )
-               };
-
-       if (mode === "hide") {
-               animation.opacity = 0;
-       }
-
-       $.effects.save( elem, props );
-
-       elem
-               .show()
-               .css({
-                       backgroundImage: "none",
-                       backgroundColor: o.color || "#ffff99"
-               })
-               .animate( animation, {
-                       queue: false,
-                       duration: o.duration,
-                       easing: o.easing,
-                       complete: function() {
-                               if ( mode === "hide" ) {
-                                       elem.hide();
-                               }
-                               $.effects.restore( elem, props );
-                               done();
-                       }
-               });
-};
-
-
-/*!
- * jQuery UI Effects Size 1.11.3
- * http://jqueryui.com
- *
- * Copyright jQuery Foundation and other contributors
- * Released under the MIT license.
- * http://jquery.org/license
- *
- * http://api.jqueryui.com/size-effect/
- */
-
-
-var effectSize = $.effects.effect.size = function( o, done ) {
-
-       // Create element
-       var original, baseline, factor,
-               el = $( this ),
-               props0 = [ "position", "top", "bottom", "left", "right", "width", "height", "overflow", "opacity" ],
-
-               // Always restore
-               props1 = [ "position", "top", "bottom", "left", "right", "overflow", "opacity" ],
-
-               // Copy for children
-               props2 = [ "width", "height", "overflow" ],
-               cProps = [ "fontSize" ],
-               vProps = [ "borderTopWidth", "borderBottomWidth", "paddingTop", "paddingBottom" ],
-               hProps = [ "borderLeftWidth", "borderRightWidth", "paddingLeft", "paddingRight" ],
-
-               // Set options
-               mode = $.effects.setMode( el, o.mode || "effect" ),
-               restore = o.restore || mode !== "effect",
-               scale = o.scale || "both",
-               origin = o.origin || [ "middle", "center" ],
-               position = el.css( "position" ),
-               props = restore ? props0 : props1,
-               zero = {
-                       height: 0,
-                       width: 0,
-                       outerHeight: 0,
-                       outerWidth: 0
-               };
-
-       if ( mode === "show" ) {
-               el.show();
-       }
-       original = {
-               height: el.height(),
-               width: el.width(),
-               outerHeight: el.outerHeight(),
-               outerWidth: el.outerWidth()
-       };
-
-       if ( o.mode === "toggle" && mode === "show" ) {
-               el.from = o.to || zero;
-               el.to = o.from || original;
-       } else {
-               el.from = o.from || ( mode === "show" ? zero : original );
-               el.to = o.to || ( mode === "hide" ? zero : original );
-       }
-
-       // Set scaling factor
-       factor = {
-               from: {
-                       y: el.from.height / original.height,
-                       x: el.from.width / original.width
-               },
-               to: {
-                       y: el.to.height / original.height,
-                       x: el.to.width / original.width
-               }
-       };
-
-       // Scale the css box
-       if ( scale === "box" || scale === "both" ) {
-
-               // Vertical props scaling
-               if ( factor.from.y !== factor.to.y ) {
-                       props = props.concat( vProps );
-                       el.from = $.effects.setTransition( el, vProps, factor.from.y, el.from );
-                       el.to = $.effects.setTransition( el, vProps, factor.to.y, el.to );
-               }
-
-               // Horizontal props scaling
-               if ( factor.from.x !== factor.to.x ) {
-                       props = props.concat( hProps );
-                       el.from = $.effects.setTransition( el, hProps, factor.from.x, el.from );
-                       el.to = $.effects.setTransition( el, hProps, factor.to.x, el.to );
-               }
-       }
-
-       // Scale the content
-       if ( scale === "content" || scale === "both" ) {
-
-               // Vertical props scaling
-               if ( factor.from.y !== factor.to.y ) {
-                       props = props.concat( cProps ).concat( props2 );
-                       el.from = $.effects.setTransition( el, cProps, factor.from.y, el.from );
-                       el.to = $.effects.setTransition( el, cProps, factor.to.y, el.to );
-               }
-       }
-
-       $.effects.save( el, props );
-       el.show();
-       $.effects.createWrapper( el );
-       el.css( "overflow", "hidden" ).css( el.from );
-
-       // Adjust
-       if (origin) { // Calculate baseline shifts
-               baseline = $.effects.getBaseline( origin, original );
-               el.from.top = ( original.outerHeight - el.outerHeight() ) * baseline.y;
-               el.from.left = ( original.outerWidth - el.outerWidth() ) * baseline.x;
-               el.to.top = ( original.outerHeight - el.to.outerHeight ) * baseline.y;
-               el.to.left = ( original.outerWidth - el.to.outerWidth ) * baseline.x;
-       }
-       el.css( el.from ); // set top & left
-
-       // Animate
-       if ( scale === "content" || scale === "both" ) { // Scale the children
-
-               // Add margins/font-size
-               vProps = vProps.concat([ "marginTop", "marginBottom" ]).concat(cProps);
-               hProps = hProps.concat([ "marginLeft", "marginRight" ]);
-               props2 = props0.concat(vProps).concat(hProps);
-
-               el.find( "*[width]" ).each( function() {
-                       var child = $( this ),
-                               c_original = {
-                                       height: child.height(),
-                                       width: child.width(),
-                                       outerHeight: child.outerHeight(),
-                                       outerWidth: child.outerWidth()
-                               };
-                       if (restore) {
-                               $.effects.save(child, props2);
-                       }
-
-                       child.from = {
-                               height: c_original.height * factor.from.y,
-                               width: c_original.width * factor.from.x,
-                               outerHeight: c_original.outerHeight * factor.from.y,
-                               outerWidth: c_original.outerWidth * factor.from.x
-                       };
-                       child.to = {
-                               height: c_original.height * factor.to.y,
-                               width: c_original.width * factor.to.x,
-                               outerHeight: c_original.height * factor.to.y,
-                               outerWidth: c_original.width * factor.to.x
-                       };
-
-                       // Vertical props scaling
-                       if ( factor.from.y !== factor.to.y ) {
-                               child.from = $.effects.setTransition( child, vProps, factor.from.y, child.from );
-                               child.to = $.effects.setTransition( child, vProps, factor.to.y, child.to );
-                       }
-
-                       // Horizontal props scaling
-                       if ( factor.from.x !== factor.to.x ) {
-                               child.from = $.effects.setTransition( child, hProps, factor.from.x, child.from );
-                               child.to = $.effects.setTransition( child, hProps, factor.to.x, child.to );
-                       }
-
-                       // Animate children
-                       child.css( child.from );
-                       child.animate( child.to, o.duration, o.easing, function() {
-
-                               // Restore children
-                               if ( restore ) {
-                                       $.effects.restore( child, props2 );
-                               }
-                       });
-               });
-       }
-
-       // Animate
-       el.animate( el.to, {
-               queue: false,
-               duration: o.duration,
-               easing: o.easing,
-               complete: function() {
-                       if ( el.to.opacity === 0 ) {
-                               el.css( "opacity", el.from.opacity );
-                       }
-                       if ( mode === "hide" ) {
-                               el.hide();
-                       }
-                       $.effects.restore( el, props );
-                       if ( !restore ) {
-
-                               // we need to calculate our new positioning based on the scaling
-                               if ( position === "static" ) {
-                                       el.css({
-                                               position: "relative",
-                                               top: el.to.top,
-                                               left: el.to.left
-                                       });
-                               } else {
-                                       $.each([ "top", "left" ], function( idx, pos ) {
-                                               el.css( pos, function( _, str ) {
-                                                       var val = parseInt( str, 10 ),
-                                                               toRef = idx ? el.to.left : el.to.top;
-
-                                                       // if original was "auto", recalculate the new value from wrapper
-                                                       if ( str === "auto" ) {
-                                                               return toRef + "px";
-                                                       }
-
-                                                       return val + toRef + "px";
-                                               });
-                                       });
-                               }
-                       }
-
-                       $.effects.removeWrapper( el );
-                       done();
-               }
-       });
-
-};
-
-
-/*!
- * jQuery UI Effects Scale 1.11.3
- * http://jqueryui.com
- *
- * Copyright jQuery Foundation and other contributors
- * Released under the MIT license.
- * http://jquery.org/license
- *
- * http://api.jqueryui.com/scale-effect/
- */
-
-
-var effectScale = $.effects.effect.scale = function( o, done ) {
-
-       // Create element
-       var el = $( this ),
-               options = $.extend( true, {}, o ),
-               mode = $.effects.setMode( el, o.mode || "effect" ),
-               percent = parseInt( o.percent, 10 ) ||
-                       ( parseInt( o.percent, 10 ) === 0 ? 0 : ( mode === "hide" ? 0 : 100 ) ),
-               direction = o.direction || "both",
-               origin = o.origin,
-               original = {
-                       height: el.height(),
-                       width: el.width(),
-                       outerHeight: el.outerHeight(),
-                       outerWidth: el.outerWidth()
-               },
-               factor = {
-                       y: direction !== "horizontal" ? (percent / 100) : 1,
-                       x: direction !== "vertical" ? (percent / 100) : 1
-               };
-
-       // We are going to pass this effect to the size effect:
-       options.effect = "size";
-       options.queue = false;
-       options.complete = done;
-
-       // Set default origin and restore for show/hide
-       if ( mode !== "effect" ) {
-               options.origin = origin || [ "middle", "center" ];
-               options.restore = true;
-       }
-
-       options.from = o.from || ( mode === "show" ? {
-               height: 0,
-               width: 0,
-               outerHeight: 0,
-               outerWidth: 0
-       } : original );
-       options.to = {
-               height: original.height * factor.y,
-               width: original.width * factor.x,
-               outerHeight: original.outerHeight * factor.y,
-               outerWidth: original.outerWidth * factor.x
-       };
-
-       // Fade option to support puff
-       if ( options.fade ) {
-               if ( mode === "show" ) {
-                       options.from.opacity = 0;
-                       options.to.opacity = 1;
-               }
-               if ( mode === "hide" ) {
-                       options.from.opacity = 1;
-                       options.to.opacity = 0;
-               }
-       }
-
-       // Animate
-       el.effect( options );
-
-};
-
-
-/*!
- * jQuery UI Effects Puff 1.11.3
- * http://jqueryui.com
- *
- * Copyright jQuery Foundation and other contributors
- * Released under the MIT license.
- * http://jquery.org/license
- *
- * http://api.jqueryui.com/puff-effect/
- */
-
-
-var effectPuff = $.effects.effect.puff = function( o, done ) {
-       var elem = $( this ),
-               mode = $.effects.setMode( elem, o.mode || "hide" ),
-               hide = mode === "hide",
-               percent = parseInt( o.percent, 10 ) || 150,
-               factor = percent / 100,
-               original = {
-                       height: elem.height(),
-                       width: elem.width(),
-                       outerHeight: elem.outerHeight(),
-                       outerWidth: elem.outerWidth()
-               };
-
-       $.extend( o, {
-               effect: "scale",
-               queue: false,
-               fade: true,
-               mode: mode,
-               complete: done,
-               percent: hide ? percent : 100,
-               from: hide ?
-                       original :
-                       {
-                               height: original.height * factor,
-                               width: original.width * factor,
-                               outerHeight: original.outerHeight * factor,
-                               outerWidth: original.outerWidth * factor
-                       }
-       });
-
-       elem.effect( o );
-};
-
-
-/*!
- * jQuery UI Effects Pulsate 1.11.3
- * http://jqueryui.com
- *
- * Copyright jQuery Foundation and other contributors
- * Released under the MIT license.
- * http://jquery.org/license
- *
- * http://api.jqueryui.com/pulsate-effect/
- */
-
-
-var effectPulsate = $.effects.effect.pulsate = function( o, done ) {
-       var elem = $( this ),
-               mode = $.effects.setMode( elem, o.mode || "show" ),
-               show = mode === "show",
-               hide = mode === "hide",
-               showhide = ( show || mode === "hide" ),
-
-               // showing or hiding leaves of the "last" animation
-               anims = ( ( o.times || 5 ) * 2 ) + ( showhide ? 1 : 0 ),
-               duration = o.duration / anims,
-               animateTo = 0,
-               queue = elem.queue(),
-               queuelen = queue.length,
-               i;
-
-       if ( show || !elem.is(":visible")) {
-               elem.css( "opacity", 0 ).show();
-               animateTo = 1;
-       }
-
-       // anims - 1 opacity "toggles"
-       for ( i = 1; i < anims; i++ ) {
-               elem.animate({
-                       opacity: animateTo
-               }, duration, o.easing );
-               animateTo = 1 - animateTo;
-       }
-
-       elem.animate({
-               opacity: animateTo
-       }, duration, o.easing);
-
-       elem.queue(function() {
-               if ( hide ) {
-                       elem.hide();
-               }
-               done();
-       });
-
-       // We just queued up "anims" animations, we need to put them next in the queue
-       if ( queuelen > 1 ) {
-               queue.splice.apply( queue,
-                       [ 1, 0 ].concat( queue.splice( queuelen, anims + 1 ) ) );
-       }
-       elem.dequeue();
-};
-
-
-/*!
- * jQuery UI Effects Shake 1.11.3
- * http://jqueryui.com
- *
- * Copyright jQuery Foundation and other contributors
- * Released under the MIT license.
- * http://jquery.org/license
- *
- * http://api.jqueryui.com/shake-effect/
- */
-
-
-var effectShake = $.effects.effect.shake = function( o, done ) {
-
-       var el = $( this ),
-               props = [ "position", "top", "bottom", "left", "right", "height", "width" ],
-               mode = $.effects.setMode( el, o.mode || "effect" ),
-               direction = o.direction || "left",
-               distance = o.distance || 20,
-               times = o.times || 3,
-               anims = times * 2 + 1,
-               speed = Math.round( o.duration / anims ),
-               ref = (direction === "up" || direction === "down") ? "top" : "left",
-               positiveMotion = (direction === "up" || direction === "left"),
-               animation = {},
-               animation1 = {},
-               animation2 = {},
-               i,
-
-               // we will need to re-assemble the queue to stack our animations in place
-               queue = el.queue(),
-               queuelen = queue.length;
-
-       $.effects.save( el, props );
-       el.show();
-       $.effects.createWrapper( el );
-
-       // Animation
-       animation[ ref ] = ( positiveMotion ? "-=" : "+=" ) + distance;
-       animation1[ ref ] = ( positiveMotion ? "+=" : "-=" ) + distance * 2;
-       animation2[ ref ] = ( positiveMotion ? "-=" : "+=" ) + distance * 2;
-
-       // Animate
-       el.animate( animation, speed, o.easing );
-
-       // Shakes
-       for ( i = 1; i < times; i++ ) {
-               el.animate( animation1, speed, o.easing ).animate( animation2, speed, o.easing );
-       }
-       el
-               .animate( animation1, speed, o.easing )
-               .animate( animation, speed / 2, o.easing )
-               .queue(function() {
-                       if ( mode === "hide" ) {
-                               el.hide();
-                       }
-                       $.effects.restore( el, props );
-                       $.effects.removeWrapper( el );
-                       done();
-               });
-
-       // inject all the animations we just queued to be first in line (after "inprogress")
-       if ( queuelen > 1) {
-               queue.splice.apply( queue,
-                       [ 1, 0 ].concat( queue.splice( queuelen, anims + 1 ) ) );
-       }
-       el.dequeue();
-
-};
-
-
-/*!
- * jQuery UI Effects Slide 1.11.3
- * http://jqueryui.com
- *
- * Copyright jQuery Foundation and other contributors
- * Released under the MIT license.
- * http://jquery.org/license
- *
- * http://api.jqueryui.com/slide-effect/
- */
-
-
-var effectSlide = $.effects.effect.slide = function( o, done ) {
-
-       // Create element
-       var el = $( this ),
-               props = [ "position", "top", "bottom", "left", "right", "width", "height" ],
-               mode = $.effects.setMode( el, o.mode || "show" ),
-               show = mode === "show",
-               direction = o.direction || "left",
-               ref = (direction === "up" || direction === "down") ? "top" : "left",
-               positiveMotion = (direction === "up" || direction === "left"),
-               distance,
-               animation = {};
-
-       // Adjust
-       $.effects.save( el, props );
-       el.show();
-       distance = o.distance || el[ ref === "top" ? "outerHeight" : "outerWidth" ]( true );
-
-       $.effects.createWrapper( el ).css({
-               overflow: "hidden"
-       });
-
-       if ( show ) {
-               el.css( ref, positiveMotion ? (isNaN(distance) ? "-" + distance : -distance) : distance );
-       }
-
-       // Animation
-       animation[ ref ] = ( show ?
-               ( positiveMotion ? "+=" : "-=") :
-               ( positiveMotion ? "-=" : "+=")) +
-               distance;
-
-       // Animate
-       el.animate( animation, {
-               queue: false,
-               duration: o.duration,
-               easing: o.easing,
-               complete: function() {
-                       if ( mode === "hide" ) {
-                               el.hide();
-                       }
-                       $.effects.restore( el, props );
-                       $.effects.removeWrapper( el );
-                       done();
-               }
-       });
-};
-
-
-/*!
- * jQuery UI Effects Transfer 1.11.3
- * http://jqueryui.com
- *
- * Copyright jQuery Foundation and other contributors
- * Released under the MIT license.
- * http://jquery.org/license
- *
- * http://api.jqueryui.com/transfer-effect/
- */
-
-
-var effectTransfer = $.effects.effect.transfer = function( o, done ) {
-       var elem = $( this ),
-               target = $( o.to ),
-               targetFixed = target.css( "position" ) === "fixed",
-               body = $("body"),
-               fixTop = targetFixed ? body.scrollTop() : 0,
-               fixLeft = targetFixed ? body.scrollLeft() : 0,
-               endPosition = target.offset(),
-               animation = {
-                       top: endPosition.top - fixTop,
-                       left: endPosition.left - fixLeft,
-                       height: target.innerHeight(),
-                       width: target.innerWidth()
-               },
-               startPosition = elem.offset(),
-               transfer = $( "<div class='ui-effects-transfer'></div>" )
-                       .appendTo( document.body )
-                       .addClass( o.className )
-                       .css({
-                               top: startPosition.top - fixTop,
-                               left: startPosition.left - fixLeft,
-                               height: elem.innerHeight(),
-                               width: elem.innerWidth(),
-                               position: targetFixed ? "fixed" : "absolute"
-                       })
-                       .animate( animation, o.duration, o.easing, function() {
-                               transfer.remove();
-                               done();
-                       });
-};
-
-
-/*!
- * jQuery UI Progressbar 1.11.3
- * http://jqueryui.com
- *
- * Copyright jQuery Foundation and other contributors
- * Released under the MIT license.
- * http://jquery.org/license
- *
- * http://api.jqueryui.com/progressbar/
- */
-
-
-var progressbar = $.widget( "ui.progressbar", {
-       version: "1.11.3",
-       options: {
-               max: 100,
-               value: 0,
-
-               change: null,
-               complete: null
-       },
-
-       min: 0,
-
-       _create: function() {
-               // Constrain initial value
-               this.oldValue = this.options.value = this._constrainedValue();
-
-               this.element
-                       .addClass( "ui-progressbar ui-widget ui-widget-content ui-corner-all" )
-                       .attr({
-                               // Only set static values, aria-valuenow and aria-valuemax are
-                               // set inside _refreshValue()
-                               role: "progressbar",
-                               "aria-valuemin": this.min
-                       });
-
-               this.valueDiv = $( "<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( newValue ) {
-               if ( newValue === undefined ) {
-                       return this.options.value;
-               }
-
-               this.options.value = this._constrainedValue( newValue );
-               this._refreshValue();
-       },
-
-       _constrainedValue: function( newValue ) {
-               if ( newValue === undefined ) {
-                       newValue = this.options.value;
-               }
-
-               this.indeterminate = newValue === false;
-
-               // sanitize value
-               if ( typeof newValue !== "number" ) {
-                       newValue = 0;
-               }
-
-               return this.indeterminate ? false :
-                       Math.min( this.options.max, Math.max( this.min, newValue ) );
-       },
-
-       _setOptions: function( options ) {
-               // Ensure "value" option is set after other values (like max)
-               var value = options.value;
-               delete options.value;
-
-               this._super( options );
-
-               this.options.value = this._constrainedValue( value );
-               this._refreshValue();
-       },
-
-       _setOption: function( key, value ) {
-               if ( key === "max" ) {
-                       // Don't allow a max less than min
-                       value = Math.max( this.min, value );
-               }
-               if ( key === "disabled" ) {
-                       this.element
-                               .toggleClass( "ui-state-disabled", !!value )
-                               .attr( "aria-disabled", value );
-               }
-               this._super( key, value );
-       },
-
-       _percentage: function() {
-               return this.indeterminate ? 100 : 100 * ( this.options.value - this.min ) / ( this.options.max - this.min );
-       },
-
-       _refreshValue: function() {
-               var value = this.options.value,
-                       percentage = this._percentage();
-
-               this.valueDiv
-                       .toggle( this.indeterminate || value > this.min )
-                       .toggleClass( "ui-corner-right", value === this.options.max )
-                       .width( percentage.toFixed(0) + "%" );
-
-               this.element.toggleClass( "ui-progressbar-indeterminate", this.indeterminate );
-
-               if ( this.indeterminate ) {
-                       this.element.removeAttr( "aria-valuenow" );
-                       if ( !this.overlayDiv ) {
-                               this.overlayDiv = $( "<div class='ui-progressbar-overlay'></div>" ).appendTo( this.valueDiv );
-                       }
-               } else {
-                       this.element.attr({
-                               "aria-valuemax": this.options.max,
-                               "aria-valuenow": value
-                       });
-                       if ( this.overlayDiv ) {
-                               this.overlayDiv.remove();
-                               this.overlayDiv = null;
-                       }
-               }
-
-               if ( this.oldValue !== value ) {
-                       this.oldValue = value;
-                       this._trigger( "change" );
-               }
-               if ( value === this.options.max ) {
-                       this._trigger( "complete" );
-               }
-       }
-});
-
-
-/*!
- * jQuery UI Selectable 1.11.3
- * http://jqueryui.com
- *
- * Copyright jQuery Foundation and other contributors
- * Released under the MIT license.
- * http://jquery.org/license
- *
- * http://api.jqueryui.com/selectable/
- */
-
-
-var selectable = $.widget("ui.selectable", $.ui.mouse, {
-       version: "1.11.3",
-       options: {
-               appendTo: "body",
-               autoRefresh: true,
-               distance: 0,
-               filter: "*",
-               tolerance: "touch",
-
-               // callbacks
-               selected: null,
-               selecting: null,
-               start: null,
-               stop: null,
-               unselected: null,
-               unselecting: null
-       },
-       _create: function() {
-               var selectees,
-                       that = this;
-
-               this.element.addClass("ui-selectable");
-
-               this.dragged = false;
-
-               // cache selectee children based on filter
-               this.refresh = function() {
-                       selectees = $(that.options.filter, that.element[0]);
-                       selectees.addClass("ui-selectee");
-                       selectees.each(function() {
-                               var $this = $(this),
-                                       pos = $this.offset();
-                               $.data(this, "selectable-item", {
-                                       element: this,
-                                       $element: $this,
-                                       left: pos.left,
-                                       top: pos.top,
-                                       right: pos.left + $this.outerWidth(),
-                                       bottom: pos.top + $this.outerHeight(),
-                                       startselected: false,
-                                       selected: $this.hasClass("ui-selected"),
-                                       selecting: $this.hasClass("ui-selecting"),
-                                       unselecting: $this.hasClass("ui-unselecting")
-                               });
-                       });
-               };
-               this.refresh();
-
-               this.selectees = selectees.addClass("ui-selectee");
-
-               this._mouseInit();
-
-               this.helper = $("<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(event) {
-               var that = this,
-                       options = this.options;
-
-               this.opos = [ event.pageX, event.pageY ];
-
-               if (this.options.disabled) {
-                       return;
-               }
-
-               this.selectees = $(options.filter, this.element[0]);
-
-               this._trigger("start", event);
-
-               $(options.appendTo).append(this.helper);
-               // position helper (lasso)
-               this.helper.css({
-                       "left": event.pageX,
-                       "top": event.pageY,
-                       "width": 0,
-                       "height": 0
-               });
-
-               if (options.autoRefresh) {
-                       this.refresh();
-               }
-
-               this.selectees.filter(".ui-selected").each(function() {
-                       var selectee = $.data(this, "selectable-item");
-                       selectee.startselected = true;
-                       if (!event.metaKey && !event.ctrlKey) {
-                               selectee.$element.removeClass("ui-selected");
-                               selectee.selected = false;
-                               selectee.$element.addClass("ui-unselecting");
-                               selectee.unselecting = true;
-                               // selectable UNSELECTING callback
-                               that._trigger("unselecting", event, {
-                                       unselecting: selectee.element
-                               });
-                       }
-               });
-
-               $(event.target).parents().addBack().each(function() {
-                       var doSelect,
-                               selectee = $.data(this, "selectable-item");
-                       if (selectee) {
-                               doSelect = (!event.metaKey && !event.ctrlKey) || !selectee.$element.hasClass("ui-selected");
-                               selectee.$element
-                                       .removeClass(doSelect ? "ui-unselecting" : "ui-selected")
-                                       .addClass(doSelect ? "ui-selecting" : "ui-unselecting");
-                               selectee.unselecting = !doSelect;
-                               selectee.selecting = doSelect;
-                               selectee.selected = doSelect;
-                               // selectable (UN)SELECTING callback
-                               if (doSelect) {
-                                       that._trigger("selecting", event, {
-                                               selecting: selectee.element
-                                       });
-                               } else {
-                                       that._trigger("unselecting", event, {
-                                               unselecting: selectee.element
-                                       });
-                               }
-                               return false;
-                       }
-               });
-
-       },
-
-       _mouseDrag: function(event) {
-
-               this.dragged = true;
-
-               if (this.options.disabled) {
-                       return;
-               }
-
-               var tmp,
-                       that = this,
-                       options = this.options,
-                       x1 = this.opos[0],
-                       y1 = this.opos[1],
-                       x2 = event.pageX,
-                       y2 = event.pageY;
-
-               if (x1 > x2) { tmp = x2; x2 = x1; x1 = tmp; }
-               if (y1 > y2) { tmp = y2; y2 = y1; y1 = tmp; }
-               this.helper.css({ left: x1, top: y1, width: x2 - x1, height: y2 - y1 });
-
-               this.selectees.each(function() {
-                       var selectee = $.data(this, "selectable-item"),
-                               hit = false;
-
-                       //prevent helper from being selected if appendTo: selectable
-                       if (!selectee || selectee.element === that.element[0]) {
-                               return;
-                       }
-
-                       if (options.tolerance === "touch") {
-                               hit = ( !(selectee.left > x2 || selectee.right < x1 || selectee.top > y2 || selectee.bottom < y1) );
-                       } else if (options.tolerance === "fit") {
-                               hit = (selectee.left > x1 && selectee.right < x2 && selectee.top > y1 && selectee.bottom < y2);
-                       }
-
-                       if (hit) {
-                               // SELECT
-                               if (selectee.selected) {
-                                       selectee.$element.removeClass("ui-selected");
-                                       selectee.selected = false;
-                               }
-                               if (selectee.unselecting) {
-                                       selectee.$element.removeClass("ui-unselecting");
-                                       selectee.unselecting = false;
-                               }
-                               if (!selectee.selecting) {
-                                       selectee.$element.addClass("ui-selecting");
-                                       selectee.selecting = true;
-                                       // selectable SELECTING callback
-                                       that._trigger("selecting", event, {
-                                               selecting: selectee.element
-                                       });
-                               }
-                       } else {
-                               // UNSELECT
-                               if (selectee.selecting) {
-                                       if ((event.metaKey || event.ctrlKey) && selectee.startselected) {
-                                               selectee.$element.removeClass("ui-selecting");
-                                               selectee.selecting = false;
-                                               selectee.$element.addClass("ui-selected");
-                                               selectee.selected = true;
-                                       } else {
-                                               selectee.$element.removeClass("ui-selecting");
-                                               selectee.selecting = false;
-                                               if (selectee.startselected) {
-                                                       selectee.$element.addClass("ui-unselecting");
-                                                       selectee.unselecting = true;
-                                               }
-                                               // selectable UNSELECTING callback
-                                               that._trigger("unselecting", event, {
-                                                       unselecting: selectee.element
-                                               });
-                                       }
-                               }
-                               if (selectee.selected) {
-                                       if (!event.metaKey && !event.ctrlKey && !selectee.startselected) {
-                                               selectee.$element.removeClass("ui-selected");
-                                               selectee.selected = false;
-
-                                               selectee.$element.addClass("ui-unselecting");
-                                               selectee.unselecting = true;
-                                               // selectable UNSELECTING callback
-                                               that._trigger("unselecting", event, {
-                                                       unselecting: selectee.element
-                                               });
-                                       }
-                               }
-                       }
-               });
-
-               return false;
-       },
-
-       _mouseStop: function(event) {
-               var that = this;
-
-               this.dragged = false;
-
-               $(".ui-unselecting", this.element[0]).each(function() {
-                       var selectee = $.data(this, "selectable-item");
-                       selectee.$element.removeClass("ui-unselecting");
-                       selectee.unselecting = false;
-                       selectee.startselected = false;
-                       that._trigger("unselected", event, {
-                               unselected: selectee.element
-                       });
-               });
-               $(".ui-selecting", this.element[0]).each(function() {
-                       var selectee = $.data(this, "selectable-item");
-                       selectee.$element.removeClass("ui-selecting").addClass("ui-selected");
-                       selectee.selecting = false;
-                       selectee.selected = true;
-                       selectee.startselected = true;
-                       that._trigger("selected", event, {
-                               selected: selectee.element
-                       });
-               });
-               this._trigger("stop", event);
-
-               this.helper.remove();
-
-               return false;
-       }
-
-});
-
-
-/*!
- * jQuery UI Selectmenu 1.11.3
- * http://jqueryui.com
- *
- * Copyright jQuery Foundation and other contributors
- * Released under the MIT license.
- * http://jquery.org/license
- *
- * http://api.jqueryui.com/selectmenu
- */
-
-
-var selectmenu = $.widget( "ui.selectmenu", {
-       version: "1.11.3",
-       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,
-
-               // callbacks
-               change: null,
-               close: null,
-               focus: null,
-               open: null,
-               select: null
-       },
-
-       _create: function() {
-               var selectmenuId = this.element.uniqueId().attr( "id" );
-               this.ids = {
-                       element: selectmenuId,
-                       button: selectmenuId + "-button",
-                       menu: selectmenuId + "-menu"
-               };
-
-               this._drawButton();
-               this._drawMenu();
-
-               if ( this.options.disabled ) {
-                       this.disable();
-               }
-       },
-
-       _drawButton: function() {
-               var that = this;
-
-               // Associate existing label with the new button
-               this.label = $( "label[for='" + this.ids.element + "']" ).attr( "for", this.ids.button );
-               this._on( this.label, {
-                       click: function( event ) {
-                               this.button.focus();
-                               event.preventDefault();
-                       }
-               });
-
-               // Hide original select element
-               this.element.hide();
-
-               // Create button
-               this.button = $( "<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 );
-
-               $( "<span>", {
-                       "class": "ui-icon " + this.options.icons.button
-               })
-                       .prependTo( this.button );
-
-               this.buttonText = $( "<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() {
-
-                       // Delay rendering the menu items until the button receives focus.
-                       // The menu may have already been rendered via a programmatic open.
-                       if ( !that.menuItems ) {
-                               that._refreshMenu();
-                       }
-               });
-               this._hoverable( this.button );
-               this._focusable( this.button );
-       },
-
-       _drawMenu: function() {
-               var that = this;
-
-               // Create menu
-               this.menu = $( "<ul>", {
-                       "aria-hidden": "true",
-                       "aria-labelledby": this.ids.button,
-                       id: this.ids.menu
-               });
-
-               // Wrap menu
-               this.menuWrap = $( "<div>", {
-                       "class": "ui-selectmenu-menu ui-front"
-               })
-                       .append( this.menu )
-                       .appendTo( this._appendTo() );
-
-               // Initialize menu widget
-               this.menuInstance = this.menu
-                       .menu({
-                               role: "listbox",
-                               select: function( event, ui ) {
-                                       event.preventDefault();
-
-                                       // support: IE8
-                                       // If the item was selected via a click, the text selection
-                                       // will be destroyed in IE
-                                       that._setSelection();
-
-                                       that._select( ui.item.data( "ui-selectmenu-item" ), event );
-                               },
-                               focus: function( event, ui ) {
-                                       var item = ui.item.data( "ui-selectmenu-item" );
-
-                                       // Prevent inital focus from firing and check if its a newly focused item
-                                       if ( that.focusIndex != null && item.index !== that.focusIndex ) {
-                                               that._trigger( "focus", event, { item: item } );
-                                               if ( !that.isOpen ) {
-                                                       that._select( item, event );
-                                               }
-                                       }
-                                       that.focusIndex = item.index;
-
-                                       that.button.attr( "aria-activedescendant",
-                                               that.menuItems.eq( item.index ).attr( "id" ) );
-                               }
-                       })
-                       .menu( "instance" );
-
-               // Adjust menu styles to dropdown
-               this.menu
-                       .addClass( "ui-corner-bottom" )
-                       .removeClass( "ui-corner-all" );
-
-               // Don't close the menu on mouseleave
-               this.menuInstance._off( this.menu, "mouseleave" );
-
-               // Cancel the menu's collapseAll on document click
-               this.menuInstance._closeOnDocumentClick = function() {
-                       return false;
-               };
-
-               // Selects often contain empty items, but never contain dividers
-               this.menuInstance._isDivider = function() {
-                       return false;
-               };
-       },
-
-       refresh: function() {
-               this._refreshMenu();
-               this._setText( this.buttonText, this._getSelectedItem().text() );
-               if ( !this.options.width ) {
-                       this._resizeButton();
-               }
-       },
-
-       _refreshMenu: function() {
-               this.menu.empty();
-
-               var item,
-                       options = this.element.find( "option" );
-
-               if ( !options.length ) {
-                       return;
-               }
-
-               this._parseOptions( options );
-               this._renderMenu( this.menu, this.items );
-
-               this.menuInstance.refresh();
-               this.menuItems = this.menu.find( "li" ).not( ".ui-selectmenu-optgroup" );
-
-               item = this._getSelectedItem();
-
-               // Update the menu to have the correct item focused
-               this.menuInstance.focus( null, item );
-               this._setAria( item.data( "ui-selectmenu-item" ) );
-
-               // Set disabled state
-               this._setOption( "disabled", this.element.prop( "disabled" ) );
-       },
-
-       open: function( event ) {
-               if ( this.options.disabled ) {
-                       return;
-               }
-
-               // If this is the first time the menu is being opened, render the items
-               if ( !this.menuItems ) {
-                       this._refreshMenu();
-               } else {
-
-                       // Menu clears focus on close, reset focus to selected item
-                       this.menu.find( ".ui-state-focus" ).removeClass( "ui-state-focus" );
-                       this.menuInstance.focus( null, this._getSelectedItem() );
-               }
-
-               this.isOpen = true;
-               this._toggleAttr();
-               this._resizeMenu();
-               this._position();
-
-               this._on( this.document, this._documentClick );
-
-               this._trigger( "open", event );
-       },
-
-       _position: function() {
-               this.menuWrap.position( $.extend( { of: this.button }, this.options.position ) );
-       },
-
-       close: function( event ) {
-               if ( !this.isOpen ) {
-                       return;
-               }
-
-               this.isOpen = false;
-               this._toggleAttr();
-
-               this.range = null;
-               this._off( this.document );
-
-               this._trigger( "close", event );
-       },
-
-       widget: function() {
-               return this.button;
-       },
-
-       menuWidget: function() {
-               return this.menu;
-       },
-
-       _renderMenu: function( ul, items ) {
-               var that = this,
-                       currentOptgroup = "";
-
-               $.each( items, function( index, item ) {
-                       if ( item.optgroup !== currentOptgroup ) {
-                               $( "<li>", {
-                                       "class": "ui-selectmenu-optgroup ui-menu-divider" +
-                                               ( item.element.parent( "optgroup" ).prop( "disabled" ) ?
-                                                       " ui-state-disabled" :
-                                                       "" ),
-                                       text: item.optgroup
-                               })
-                                       .appendTo( ul );
-
-                               currentOptgroup = item.optgroup;
-                       }
-
-                       that._renderItemData( ul, item );
-               });
-       },
-
-       _renderItemData: function( ul, item ) {
-               return this._renderItem( ul, item ).data( "ui-selectmenu-item", item );
-       },
-
-       _renderItem: function( ul, item ) {
-               var li = $( "<li>" );
-
-               if ( item.disabled ) {
-                       li.addClass( "ui-state-disabled" );
-               }
-               this._setText( li, item.label );
-
-               return li.appendTo( ul );
-       },
-
-       _setText: function( element, value ) {
-               if ( value ) {
-                       element.text( value );
-               } else {
-                       element.html( "&#160;" );
-               }
-       },
-
-       _move: function( direction, event ) {
-               var item, next,
-                       filter = ".ui-menu-item";
-
-               if ( this.isOpen ) {
-                       item = this.menuItems.eq( this.focusIndex );
-               } else {
-                       item = this.menuItems.eq( this.element[ 0 ].selectedIndex );
-                       filter += ":not(.ui-state-disabled)";
-               }
-
-               if ( direction === "first" || direction === "last" ) {
-                       next = item[ direction === "first" ? "prevAll" : "nextAll" ]( filter ).eq( -1 );
-               } else {
-                       next = item[ direction + "All" ]( filter ).eq( 0 );
-               }
-
-               if ( next.length ) {
-                       this.menuInstance.focus( event, next );
-               }
-       },
-
-       _getSelectedItem: function() {
-               return this.menuItems.eq( this.element[ 0 ].selectedIndex );
-       },
-
-       _toggle: function( event ) {
-               this[ this.isOpen ? "close" : "open" ]( event );
-       },
-
-       _setSelection: function() {
-               var selection;
-
-               if ( !this.range ) {
-                       return;
-               }
-
-               if ( window.getSelection ) {
-                       selection = window.getSelection();
-                       selection.removeAllRanges();
-                       selection.addRange( this.range );
-
-               // support: IE8
-               } else {
-                       this.range.select();
-               }
-
-               // support: IE
-               // Setting the text selection kills the button focus in IE, but
-               // restoring the focus doesn't kill the selection.
-               this.button.focus();
-       },
-
-       _documentClick: {
-               mousedown: function( event ) {
-                       if ( !this.isOpen ) {
-                               return;
-                       }
-
-                       if ( !$( event.target ).closest( ".ui-selectmenu-menu, #" + this.ids.button ).length ) {
-                               this.close( event );
-                       }
-               }
-       },
-
-       _buttonEvents: {
-
-               // Prevent text selection from being reset when interacting with the selectmenu (#10144)
-               mousedown: function() {
-                       var selection;
-
-                       if ( window.getSelection ) {
-                               selection = window.getSelection();
-                               if ( selection.rangeCount ) {
-                                       this.range = selection.getRangeAt( 0 );
-                               }
-
-                       // support: IE8
-                       } else {
-                               this.range = document.selection.createRange();
-                       }
-               },
-
-               click: function( event ) {
-                       this._setSelection();
-                       this._toggle( event );
-               },
-
-               keydown: function( event ) {
-                       var preventDefault = true;
-                       switch ( event.keyCode ) {
-                               case $.ui.keyCode.TAB:
-                               case $.ui.keyCode.ESCAPE:
-                                       this.close( event );
-                                       preventDefault = false;
-                                       break;
-                               case $.ui.keyCode.ENTER:
-                                       if ( this.isOpen ) {
-                                               this._selectFocusedItem( event );
-                                       }
-                                       break;
-                               case $.ui.keyCode.UP:
-                                       if ( event.altKey ) {
-                                               this._toggle( event );
-                                       } else {
-                                               this._move( "prev", event );
-                                       }
-                                       break;
-                               case $.ui.keyCode.DOWN:
-                                       if ( event.altKey ) {
-                                               this._toggle( event );
-                                       } else {
-                                               this._move( "next", event );
-                                       }
-                                       break;
-                               case $.ui.keyCode.SPACE:
-                                       if ( this.isOpen ) {
-                                               this._selectFocusedItem( event );
-                                       } else {
-                                               this._toggle( event );
-                                       }
-                                       break;
-                               case $.ui.keyCode.LEFT:
-                                       this._move( "prev", event );
-                                       break;
-                               case $.ui.keyCode.RIGHT:
-                                       this._move( "next", event );
-                                       break;
-                               case $.ui.keyCode.HOME:
-                               case $.ui.keyCode.PAGE_UP:
-                                       this._move( "first", event );
-                                       break;
-                               case $.ui.keyCode.END:
-                               case $.ui.keyCode.PAGE_DOWN:
-                                       this._move( "last", event );
-                                       break;
-                               default:
-                                       this.menu.trigger( event );
-                                       preventDefault = false;
-                       }
-
-                       if ( preventDefault ) {
-                               event.preventDefault();
-                       }
-               }
-       },
-
-       _selectFocusedItem: function( event ) {
-               var item = this.menuItems.eq( this.focusIndex );
-               if ( !item.hasClass( "ui-state-disabled" ) ) {
-                       this._select( item.data( "ui-selectmenu-item" ), event );
-               }
-       },
-
-       _select: function( item, event ) {
-               var oldIndex = this.element[ 0 ].selectedIndex;
-
-               // Change native select element
-               this.element[ 0 ].selectedIndex = item.index;
-               this._setText( this.buttonText, item.label );
-               this._setAria( item );
-               this._trigger( "select", event, { item: item } );
-
-               if ( item.index !== oldIndex ) {
-                       this._trigger( "change", event, { item: item } );
-               }
-
-               this.close( event );
-       },
-
-       _setAria: function( item ) {
-               var id = this.menuItems.eq( item.index ).attr( "id" );
-
-               this.button.attr({
-                       "aria-labelledby": id,
-                       "aria-activedescendant": id
-               });
-               this.menu.attr( "aria-activedescendant", id );
-       },
-
-       _setOption: function( key, value ) {
-               if ( key === "icons" ) {
-                       this.button.find( "span.ui-icon" )
-                               .removeClass( this.options.icons.button )
-                               .addClass( value.button );
-               }
-
-               this._super( key, value );
-
-               if ( key === "appendTo" ) {
-                       this.menuWrap.appendTo( this._appendTo() );
-               }
-
-               if ( key === "disabled" ) {
-                       this.menuInstance.option( "disabled", value );
-                       this.button
-                               .toggleClass( "ui-state-disabled", value )
-                               .attr( "aria-disabled", value );
-
-                       this.element.prop( "disabled", value );
-                       if ( value ) {
-                               this.button.attr( "tabindex", -1 );
-                               this.close();
-                       } else {
-                               this.button.attr( "tabindex", 0 );
-                       }
-               }
-
-               if ( key === "width" ) {
-                       this._resizeButton();
-               }
-       },
-
-       _appendTo: function() {
-               var element = this.options.appendTo;
-
-               if ( element ) {
-                       element = element.jquery || element.nodeType ?
-                               $( element ) :
-                               this.document.find( element ).eq( 0 );
-               }
-
-               if ( !element || !element[ 0 ] ) {
-                       element = this.element.closest( ".ui-front" );
-               }
-
-               if ( !element.length ) {
-                       element = this.document[ 0 ].body;
-               }
-
-               return element;
-       },
-
-       _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 width = this.options.width;
-
-               if ( !width ) {
-                       width = this.element.show().outerWidth();
-                       this.element.hide();
-               }
-
-               this.button.outerWidth( width );
-       },
-
-       _resizeMenu: function() {
-               this.menu.outerWidth( Math.max(
-                       this.button.outerWidth(),
-
-                       // support: IE10
-                       // IE10 wraps long text (possibly a rounding bug)
-                       // so we add 1px to avoid the wrapping
-                       this.menu.width( "" ).outerWidth() + 1
-               ) );
-       },
-
-       _getCreateOptions: function() {
-               return { disabled: this.element.prop( "disabled" ) };
-       },
-
-       _parseOptions: function( options ) {
-               var data = [];
-               options.each(function( index, item ) {
-                       var option = $( item ),
-                               optgroup = option.parent( "optgroup" );
-                       data.push({
-                               element: option,
-                               index: index,
-                               value: option.val(),
-                               label: option.text(),
-                               optgroup: optgroup.attr( "label" ) || "",
-                               disabled: optgroup.prop( "disabled" ) || option.prop( "disabled" )
-                       });
-               });
-               this.items = data;
-       },
-
-       _destroy: function() {
-               this.menuWrap.remove();
-               this.button.remove();
-               this.element.show();
-               this.element.removeUniqueId();
-               this.label.attr( "for", this.ids.element );
-       }
-});
-
-
-/*!
- * jQuery UI Slider 1.11.3
- * http://jqueryui.com
- *
- * Copyright jQuery Foundation and other contributors
- * Released under the MIT license.
- * http://jquery.org/license
- *
- * http://api.jqueryui.com/slider/
- */
-
-
-var slider = $.widget( "ui.slider", $.ui.mouse, {
-       version: "1.11.3",
-       widgetEventPrefix: "slide",
-
-       options: {
-               animate: false,
-               distance: 0,
-               max: 100,
-               min: 0,
-               orientation: "horizontal",
-               range: false,
-               step: 1,
-               value: 0,
-               values: null,
-
-               // callbacks
-               change: null,
-               slide: null,
-               start: null,
-               stop: null
-       },
-
-       // number of pages in a slider
-       // (how many times can you page up/down to go through the whole range)
-       numPages: 5,
-
-       _create: function() {
-               this._keySliding = false;
-               this._mouseSliding = false;
-               this._animateOff = true;
-               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 = false;
-       },
-
-       _refresh: function() {
-               this._createRange();
-               this._createHandles();
-               this._setupEvents();
-               this._refreshValue();
-       },
-
-       _createHandles: function() {
-               var i, handleCount,
-                       options = this.options,
-                       existingHandles = this.element.find( ".ui-slider-handle" ).addClass( "ui-state-default ui-corner-all" ),
-                       handle = "<span class='ui-slider-handle ui-state-default ui-corner-all' tabindex='0'></span>",
-                       handles = [];
-
-               handleCount = ( options.values && options.values.length ) || 1;
-
-               if ( existingHandles.length > handleCount ) {
-                       existingHandles.slice( handleCount ).remove();
-                       existingHandles = existingHandles.slice( 0, handleCount );
-               }
-
-               for ( i = existingHandles.length; i < handleCount; i++ ) {
-                       handles.push( handle );
-               }
-
-               this.handles = existingHandles.add( $( handles.join( "" ) ).appendTo( this.element ) );
-
-               this.handle = this.handles.eq( 0 );
-
-               this.handles.each(function( i ) {
-                       $( this ).data( "ui-slider-handle-index", i );
-               });
-       },
-
-       _createRange: function() {
-               var options = this.options,
-                       classes = "";
-
-               if ( options.range ) {
-                       if ( options.range === true ) {
-                               if ( !options.values ) {
-                                       options.values = [ this._valueMin(), this._valueMin() ];
-                               } else if ( options.values.length && options.values.length !== 2 ) {
-                                       options.values = [ options.values[0], options.values[0] ];
-                               } else if ( $.isArray( options.values ) ) {
-                                       options.values = options.values.slice(0);
-                               }
-                       }
-
-                       if ( !this.range || !this.range.length ) {
-                               this.range = $( "<div></div>" )
-                                       .appendTo( this.element );
-
-                               classes = "ui-slider-range" +
-                               // note: this isn't the most fittingly semantic framework class for this element,
-                               // but worked best visually with a variety of themes
-                               " ui-widget-header ui-corner-all";
-                       } else {
-                               this.range.removeClass( "ui-slider-range-min ui-slider-range-max" )
-                                       // Handle range switching from true to min/max
-                                       .css({
-                                               "left": "",
-                                               "bottom": ""
-                                       });
-                       }
-
-                       this.range.addClass( classes +
-                               ( ( options.range === "min" || options.range === "max" ) ? " ui-slider-range-" + options.range : "" ) );
-               } else {
-                       if ( 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();
-               if ( 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( event ) {
-               var position, normValue, distance, closestHandle, index, allowed, offset, mouseOverHandle,
-                       that = this,
-                       o = this.options;
-
-               if ( o.disabled ) {
-                       return false;
-               }
-
-               this.elementSize = {
-                       width: this.element.outerWidth(),
-                       height: this.element.outerHeight()
-               };
-               this.elementOffset = this.element.offset();
-
-               position = { x: event.pageX, y: event.pageY };
-               normValue = this._normValueFromMouse( position );
-               distance = this._valueMax() - this._valueMin() + 1;
-               this.handles.each(function( i ) {
-                       var thisDistance = Math.abs( normValue - that.values(i) );
-                       if (( distance > thisDistance ) ||
-                               ( distance === thisDistance &&
-                                       (i === that._lastChangedValue || that.values(i) === o.min ))) {
-                               distance = thisDistance;
-                               closestHandle = $( this );
-                               index = i;
-                       }
-               });
-
-               allowed = this._start( event, index );
-               if ( allowed === false ) {
-                       return false;
-               }
-               this._mouseSliding = true;
-
-               this._handleIndex = index;
-
-               closestHandle
-                       .addClass( "ui-state-active" )
-                       .focus();
-
-               offset = closestHandle.offset();
-               mouseOverHandle = !$( event.target ).parents().addBack().is( ".ui-slider-handle" );
-               this._clickOffset = mouseOverHandle ? { left: 0, top: 0 } : {
-                       left: event.pageX - offset.left - ( closestHandle.width() / 2 ),
-                       top: event.pageY - offset.top -
-                               ( closestHandle.height() / 2 ) -
-                               ( parseInt( closestHandle.css("borderTopWidth"), 10 ) || 0 ) -
-                               ( parseInt( closestHandle.css("borderBottomWidth"), 10 ) || 0) +
-                               ( parseInt( closestHandle.css("marginTop"), 10 ) || 0)
-               };
-
-               if ( !this.handles.hasClass( "ui-state-hover" ) ) {
-                       this._slide( event, index, normValue );
-               }
-               this._animateOff = true;
-               return true;
-       },
-
-       _mouseStart: function() {
-               return true;
-       },
-
-       _mouseDrag: function( event ) {
-               var position = { x: event.pageX, y: event.pageY },
-                       normValue = this._normValueFromMouse( position );
-
-               this._slide( event, this._handleIndex, normValue );
-
-               return false;
-       },
-
-       _mouseStop: function( event ) {
-               this.handles.removeClass( "ui-state-active" );
-               this._mouseSliding = false;
-
-               this._stop( event, this._handleIndex );
-               this._change( event, this._handleIndex );
-
-               this._handleIndex = null;
-               this._clickOffset = null;
-               this._animateOff = false;
-
-               return false;
-       },
-
-       _detectOrientation: function() {
-               this.orientation = ( this.options.orientation === "vertical" ) ? "vertical" : "horizontal";
-       },
-
-       _normValueFromMouse: function( position ) {
-               var pixelTotal,
-                       pixelMouse,
-                       percentMouse,
-                       valueTotal,
-                       valueMouse;
-
-               if ( this.orientation === "horizontal" ) {
-                       pixelTotal = this.elementSize.width;
-                       pixelMouse = position.x - this.elementOffset.left - ( this._clickOffset ? this._clickOffset.left : 0 );
-               } else {
-                       pixelTotal = this.elementSize.height;
-                       pixelMouse = position.y - this.elementOffset.top - ( this._clickOffset ? this._clickOffset.top : 0 );
-               }
-
-               percentMouse = ( pixelMouse / pixelTotal );
-               if ( percentMouse > 1 ) {
-                       percentMouse = 1;
-               }
-               if ( percentMouse < 0 ) {
-                       percentMouse = 0;
-               }
-               if ( this.orientation === "vertical" ) {
-                       percentMouse = 1 - percentMouse;
-               }
-
-               valueTotal = this._valueMax() - this._valueMin();
-               valueMouse = this._valueMin() + percentMouse * valueTotal;
-
-               return this._trimAlignValue( valueMouse );
-       },
-
-       _start: function( event, index ) {
-               var uiHash = {
-                       handle: this.handles[ index ],
-                       value: this.value()
-               };
-               if ( this.options.values && this.options.values.length ) {
-                       uiHash.value = this.values( index );
-                       uiHash.values = this.values();
-               }
-               return this._trigger( "start", event, uiHash );
-       },
-
-       _slide: function( event, index, newVal ) {
-               var otherVal,
-                       newValues,
-                       allowed;
-
-               if ( this.options.values && this.options.values.length ) {
-                       otherVal = this.values( index ? 0 : 1 );
-
-                       if ( ( this.options.values.length === 2 && this.options.range === true ) &&
-                                       ( ( index === 0 && newVal > otherVal) || ( index === 1 && newVal < otherVal ) )
-                               ) {
-                               newVal = otherVal;
-                       }
-
-                       if ( newVal !== this.values( index ) ) {
-                               newValues = this.values();
-                               newValues[ index ] = newVal;
-                               // A slide can be canceled by returning false from the slide callback
-                               allowed = this._trigger( "slide", event, {
-                                       handle: this.handles[ index ],
-                                       value: newVal,
-                                       values: newValues
-                               } );
-                               otherVal = this.values( index ? 0 : 1 );
-                               if ( allowed !== false ) {
-                                       this.values( index, newVal );
-                               }
-                       }
-               } else {
-                       if ( newVal !== this.value() ) {
-                               // A slide can be canceled by returning false from the slide callback
-                               allowed = this._trigger( "slide", event, {
-                                       handle: this.handles[ index ],
-                                       value: newVal
-                               } );
-                               if ( allowed !== false ) {
-                                       this.value( newVal );
-                               }
-                       }
-               }
-       },
-
-       _stop: function( event, index ) {
-               var uiHash = {
-                       handle: this.handles[ index ],
-                       value: this.value()
-               };
-               if ( this.options.values && this.options.values.length ) {
-                       uiHash.value = this.values( index );
-                       uiHash.values = this.values();
-               }
-
-               this._trigger( "stop", event, uiHash );
-       },
-
-       _change: function( event, index ) {
-               if ( !this._keySliding && !this._mouseSliding ) {
-                       var uiHash = {
-                               handle: this.handles[ index ],
-                               value: this.value()
-                       };
-                       if ( this.options.values && this.options.values.length ) {
-                               uiHash.value = this.values( index );
-                               uiHash.values = this.values();
-                       }
-
-                       //store the last changed value index for reference when handles overlap
-                       this._lastChangedValue = index;
-
-                       this._trigger( "change", event, uiHash );
-               }
-       },
-
-       value: function( newValue ) {
-               if ( arguments.length ) {
-                       this.options.value = this._trimAlignValue( newValue );
-                       this._refreshValue();
-                       this._change( null, 0 );
-                       return;
-               }
-
-               return this._value();
-       },
-
-       values: function( index, newValue ) {
-               var vals,
-                       newValues,
-                       i;
-
-               if ( arguments.length > 1 ) {
-                       this.options.values[ index ] = this._trimAlignValue( newValue );
-                       this._refreshValue();
-                       this._change( null, index );
-                       return;
-               }
-
-               if ( arguments.length ) {
-                       if ( $.isArray( arguments[ 0 ] ) ) {
-                               vals = this.options.values;
-                               newValues = arguments[ 0 ];
-                               for ( i = 0; i < vals.length; i += 1 ) {
-                                       vals[ i ] = this._trimAlignValue( newValues[ i ] );
-                                       this._change( null, i );
-                               }
-                               this._refreshValue();
-                       } else {
-                               if ( this.options.values && this.options.values.length ) {
-                                       return this._values( index );
-                               } else {
-                                       return this.value();
-                               }
-                       }
-               } else {
-                       return this._values();
-               }
-       },
-
-       _setOption: function( key, value ) {
-               var i,
-                       valsLength = 0;
-
-               if ( key === "range" && this.options.range === true ) {
-                       if ( value === "min" ) {
-                               this.options.value = this._values( 0 );
-                               this.options.values = null;
-                       } else if ( value === "max" ) {
-                               this.options.value = this._values( this.options.values.length - 1 );
-                               this.options.values = null;
-                       }
-               }
-
-               if ( $.isArray( this.options.values ) ) {
-                       valsLength = this.options.values.length;
-               }
-
-               if ( key === "disabled" ) {
-                       this.element.toggleClass( "ui-state-disabled", !!value );
-               }
-
-               this._super( key, value );
-
-               switch ( key ) {
-                       case "orientation":
-                               this._detectOrientation();
-                               this.element
-                                       .removeClass( "ui-slider-horizontal ui-slider-vertical" )
-                                       .addClass( "ui-slider-" + this.orientation );
-                               this._refreshValue();
-
-                               // Reset positioning from previous orientation
-                               this.handles.css( value === "horizontal" ? "bottom" : "left", "" );
-                               break;
-                       case "value":
-                               this._animateOff = true;
-                               this._refreshValue();
-                               this._change( null, 0 );
-                               this._animateOff = false;
-                               break;
-                       case "values":
-                               this._animateOff = true;
-                               this._refreshValue();
-                               for ( i = 0; i < valsLength; i += 1 ) {
-                                       this._change( null, i );
-                               }
-                               this._animateOff = false;
-                               break;
-                       case "step":
-                       case "min":
-                       case "max":
-                               this._animateOff = true;
-                               this._calculateNewMax();
-                               this._refreshValue();
-                               this._animateOff = false;
-                               break;
-                       case "range":
-                               this._animateOff = true;
-                               this._refresh();
-                               this._animateOff = false;
-                               break;
-               }
-       },
-
-       //internal value getter
-       // _value() returns value trimmed by min and max, aligned by step
-       _value: function() {
-               var val = this.options.value;
-               val = this._trimAlignValue( val );
-
-               return val;
-       },
-
-       //internal values getter
-       // _values() returns array of values trimmed by min and max, aligned by step
-       // _values( index ) returns single value trimmed by min and max, aligned by step
-       _values: function( index ) {
-               var val,
-                       vals,
-                       i;
-
-               if ( arguments.length ) {
-                       val = this.options.values[ index ];
-                       val = this._trimAlignValue( val );
-
-                       return val;
-               } else if ( this.options.values && this.options.values.length ) {
-                       // .slice() creates a copy of the array
-                       // this copy gets trimmed by min and max and then returned
-                       vals = this.options.values.slice();
-                       for ( i = 0; i < vals.length; i += 1) {
-                               vals[ i ] = this._trimAlignValue( vals[ i ] );
-                       }
-
-                       return vals;
-               } else {
-                       return [];
-               }
-       },
-
-       // returns the step-aligned value that val is closest to, between (inclusive) min and max
-       _trimAlignValue: function( val ) {
-               if ( val <= this._valueMin() ) {
-                       return this._valueMin();
-               }
-               if ( val >= this._valueMax() ) {
-                       return this._valueMax();
-               }
-               var step = ( this.options.step > 0 ) ? this.options.step : 1,
-                       valModStep = (val - this._valueMin()) % step,
-                       alignValue = val - valModStep;
-
-               if ( Math.abs(valModStep) * 2 >= step ) {
-                       alignValue += ( valModStep > 0 ) ? step : ( -step );
-               }
-
-               // Since JavaScript has problems with large floats, round
-               // the final value to 5 digits after the decimal point (see #4124)
-               return parseFloat( alignValue.toFixed(5) );
-       },
-
-       _calculateNewMax: function() {
-               var max = this.options.max,
-                       min = this._valueMin(),
-                       step = this.options.step,
-                       aboveMin = Math.floor( ( max - min ) / step ) * step;
-               max = aboveMin + min;
-               this.max = parseFloat( max.toFixed( this._precision() ) );
-       },
-
-       _precision: function() {
-               var precision = this._precisionOf( this.options.step );
-               if ( this.options.min !== null ) {
-                       precision = Math.max( precision, this._precisionOf( this.options.min ) );
-               }
-               return precision;
-       },
-
-       _precisionOf: function( num ) {
-               var str = num.toString(),
-                       decimal = str.indexOf( "." );
-               return decimal === -1 ? 0 : str.length - decimal - 1;
-       },
-
-       _valueMin: function() {
-               return this.options.min;
-       },
-
-       _valueMax: function() {
-               return this.max;
-       },
-
-       _refreshValue: function() {
-               var lastValPercent, valPercent, value, valueMin, valueMax,
-                       oRange = this.options.range,
-                       o = this.options,
-                       that = this,
-                       animate = ( !this._animateOff ) ? o.animate : false,
-                       _set = {};
-
-               if ( this.options.values && this.options.values.length ) {
-                       this.handles.each(function( i ) {
-                               valPercent = ( that.values(i) - that._valueMin() ) / ( that._valueMax() - that._valueMin() ) * 100;
-                               _set[ that.orientation === "horizontal" ? "left" : "bottom" ] = valPercent + "%";
-                               $( this ).stop( 1, 1 )[ animate ? "animate" : "css" ]( _set, o.animate );
-                               if ( that.options.range === true ) {
-                                       if ( that.orientation === "horizontal" ) {
-                                               if ( i === 0 ) {
-                                                       that.range.stop( 1, 1 )[ animate ? "animate" : "css" ]( { left: valPercent + "%" }, o.animate );
-                                               }
-                                               if ( i === 1 ) {
-                                                       that.range[ animate ? "animate" : "css" ]( { width: ( valPercent - lastValPercent ) + "%" }, { queue: false, duration: o.animate } );
-                                               }
-                                       } else {
-                                               if ( i === 0 ) {
-                                                       that.range.stop( 1, 1 )[ animate ? "animate" : "css" ]( { bottom: ( valPercent ) + "%" }, o.animate );
-                                               }
-                                               if ( i === 1 ) {
-                                                       that.range[ animate ? "animate" : "css" ]( { height: ( valPercent - lastValPercent ) + "%" }, { queue: false, duration: o.animate } );
-                                               }
-                                       }
-                               }
-                               lastValPercent = valPercent;
-                       });
-               } else {
-                       value = this.value();
-                       valueMin = this._valueMin();
-                       valueMax = this._valueMax();
-                       valPercent = ( valueMax !== valueMin ) ?
-                                       ( value - valueMin ) / ( valueMax - valueMin ) * 100 :
-                                       0;
-                       _set[ this.orientation === "horizontal" ? "left" : "bottom" ] = valPercent + "%";
-                       this.handle.stop( 1, 1 )[ animate ? "animate" : "css" ]( _set, o.animate );
-
-                       if ( oRange === "min" && this.orientation === "horizontal" ) {
-                               this.range.stop( 1, 1 )[ animate ? "animate" : "css" ]( { width: valPercent + "%" }, o.animate );
-                       }
-                       if ( oRange === "max" && this.orientation === "horizontal" ) {
-                               this.range[ animate ? "animate" : "css" ]( { width: ( 100 - valPercent ) + "%" }, { queue: false, duration: o.animate } );
-                       }
-                       if ( oRange === "min" && this.orientation === "vertical" ) {
-                               this.range.stop( 1, 1 )[ animate ? "animate" : "css" ]( { height: valPercent + "%" }, o.animate );
-                       }
-                       if ( oRange === "max" && this.orientation === "vertical" ) {
-                               this.range[ animate ? "animate" : "css" ]( { height: ( 100 - valPercent ) + "%" }, { queue: false, duration: o.animate } );
-                       }
-               }
-       },
-
-       _handleEvents: {
-               keydown: function( event ) {
-                       var allowed, curVal, newVal, step,
-                               index = $( event.target ).data( "ui-slider-handle-index" );
-
-                       switch ( event.keyCode ) {
-                               case $.ui.keyCode.HOME:
-                               case $.ui.keyCode.END:
-                               case $.ui.keyCode.PAGE_UP:
-                               case $.ui.keyCode.PAGE_DOWN:
-                               case $.ui.keyCode.UP:
-                               case $.ui.keyCode.RIGHT:
-                               case $.ui.keyCode.DOWN:
-                               case $.ui.keyCode.LEFT:
-                                       event.preventDefault();
-                                       if ( !this._keySliding ) {
-                                               this._keySliding = true;
-                                               $( event.target ).addClass( "ui-state-active" );
-                                               allowed = this._start( event, index );
-                                               if ( allowed === false ) {
-                                                       return;
-                                               }
-                                       }
-                                       break;
-                       }
-
-                       step = this.options.step;
-                       if ( this.options.values && this.options.values.length ) {
-                               curVal = newVal = this.values( index );
-                       } else {
-                               curVal = newVal = this.value();
-                       }
-
-                       switch ( event.keyCode ) {
-                               case $.ui.keyCode.HOME:
-                                       newVal = this._valueMin();
-                                       break;
-                               case $.ui.keyCode.END:
-                                       newVal = this._valueMax();
-                                       break;
-                               case $.ui.keyCode.PAGE_UP:
-                                       newVal = this._trimAlignValue(
-                                               curVal + ( ( this._valueMax() - this._valueMin() ) / this.numPages )
-                                       );
-                                       break;
-                               case $.ui.keyCode.PAGE_DOWN:
-                                       newVal = this._trimAlignValue(
-                                               curVal - ( (this._valueMax() - this._valueMin()) / this.numPages ) );
-                                       break;
-                               case $.ui.keyCode.UP:
-                               case $.ui.keyCode.RIGHT:
-                                       if ( curVal === this._valueMax() ) {
-                                               return;
-                                       }
-                                       newVal = this._trimAlignValue( curVal + step );
-                                       break;
-                               case $.ui.keyCode.DOWN:
-                               case $.ui.keyCode.LEFT:
-                                       if ( curVal === this._valueMin() ) {
-                                               return;
-                                       }
-                                       newVal = this._trimAlignValue( curVal - step );
-                                       break;
-                       }
-
-                       this._slide( event, index, newVal );
-               },
-               keyup: function( event ) {
-                       var index = $( event.target ).data( "ui-slider-handle-index" );
-
-                       if ( this._keySliding ) {
-                               this._keySliding = false;
-                               this._stop( event, index );
-                               this._change( event, index );
-                               $( event.target ).removeClass( "ui-state-active" );
-                       }
-               }
-       }
-});
-
-
-/*!
- * jQuery UI Sortable 1.11.3
- * http://jqueryui.com
- *
- * Copyright jQuery Foundation and other contributors
- * Released under the MIT license.
- * http://jquery.org/license
- *
- * http://api.jqueryui.com/sortable/
- */
-
-
-var sortable = $.widget("ui.sortable", $.ui.mouse, {
-       version: "1.11.3",
-       widgetEventPrefix: "sort",
-       ready: false,
-       options: {
-               appendTo: "parent",
-               axis: false,
-               connectWith: false,
-               containment: false,
-               cursor: "auto",
-               cursorAt: false,
-               dropOnEmpty: true,
-               forcePlaceholderSize: false,
-               forceHelperSize: false,
-               grid: false,
-               handle: false,
-               helper: "original",
-               items: "> *",
-               opacity: false,
-               placeholder: false,
-               revert: false,
-               scroll: true,
-               scrollSensitivity: 20,
-               scrollSpeed: 20,
-               scope: "default",
-               tolerance: "intersect",
-               zIndex: 1000,
-
-               // callbacks
-               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( x, reference, size ) {
-               return ( x >= reference ) && ( x < ( reference + size ) );
-       },
-
-       _isFloating: function( item ) {
-               return (/left|right/).test(item.css("float")) || (/inline|table-cell/).test(item.css("display"));
-       },
-
-       _create: function() {
-
-               var o = this.options;
-               this.containerCache = {};
-               this.element.addClass("ui-sortable");
-
-               //Get the items
-               this.refresh();
-
-               //Let's determine if the items are being displayed horizontally
-               this.floating = this.items.length ? o.axis === "x" || this._isFloating(this.items[0].item) : false;
-
-               //Let's determine the parent's offset
-               this.offset = this.element.offset();
-
-               //Initialize mouse events for interaction
-               this._mouseInit();
-
-               this._setHandleClassName();
-
-               //We're ready to go
-               this.ready = true;
-
-       },
-
-       _setOption: function( key, value ) {
-               this._super( key, value );
-
-               if ( key === "handle" ) {
-                       this._setHandleClassName();
-               }
-       },
-
-       _setHandleClassName: function() {
-               this.element.find( ".ui-sortable-handle" ).removeClass( "ui-sortable-handle" );
-               $.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 i = this.items.length - 1; i >= 0; i-- ) {
-                       this.items[i].item.removeData(this.widgetName + "-item");
-               }
-
-               return this;
-       },
-
-       _mouseCapture: function(event, overrideHandle) {
-               var currentItem = null,
-                       validHandle = false,
-                       that = this;
-
-               if (this.reverting) {
-                       return false;
-               }
-
-               if(this.options.disabled || this.options.type === "static") {
-                       return false;
-               }
-
-               //We have to refresh the items data once first
-               this._refreshItems(event);
-
-               //Find out if the clicked node (or one of its parents) is a actual item in this.items
-               $(event.target).parents().each(function() {
-                       if($.data(this, that.widgetName + "-item") === that) {
-                               currentItem = $(this);
-                               return false;
-                       }
-               });
-               if($.data(event.target, that.widgetName + "-item") === that) {
-                       currentItem = $(event.target);
-               }
-
-               if(!currentItem) {
-                       return false;
-               }
-               if(this.options.handle && !overrideHandle) {
-                       $(this.options.handle, currentItem).find("*").addBack().each(function() {
-                               if(this === event.target) {
-                                       validHandle = true;
-                               }
-                       });
-                       if(!validHandle) {
-                               return false;
-                       }
-               }
-
-               this.currentItem = currentItem;
-               this._removeCurrentsFromItems();
-               return true;
-
-       },
-
-       _mouseStart: function(event, overrideHandle, noActivation) {
-
-               var i, body,
-                       o = this.options;
-
-               this.currentContainer = this;
-
-               //We only need to call refreshPositions, because the refreshItems call has been moved to mouseCapture
-               this.refreshPositions();
-
-               //Create and append the visible helper
-               this.helper = this._createHelper(event);
-
-               //Cache the helper size
-               this._cacheHelperProportions();
-
-               /*
-                * - Position generation -
-                * This block generates everything position related - it's the core of draggables.
-                */
-
-               //Cache the margins of the original element
-               this._cacheMargins();
-
-               //Get the next scrolling parent
-               this.scrollParent = this.helper.scrollParent();
-
-               //The element's absolute position on the page minus margins
-               this.offset = this.currentItem.offset();
-               this.offset = {
-                       top: this.offset.top - this.margins.top,
-                       left: this.offset.left - this.margins.left
-               };
-
-               $.extend(this.offset, {
-                       click: { //Where the click happened, relative to the element
-                               left: event.pageX - this.offset.left,
-                               top: event.pageY - this.offset.top
-                       },
-                       parent: this._getParentOffset(),
-                       relative: this._getRelativeOffset() //This is a relative to absolute position minus the actual position calculation - only used for relative positioned helper
-               });
-
-               // Only after we got the offset, we can change the helper's position to absolute
-               // TODO: Still need to figure out a way to make relative sorting possible
-               this.helper.css("position", "absolute");
-               this.cssPosition = this.helper.css("position");
-
-               //Generate the original position
-               this.originalPosition = this._generatePosition(event);
-               this.originalPageX = event.pageX;
-               this.originalPageY = event.pageY;
-
-               //Adjust the mouse offset relative to the helper if "cursorAt" is supplied
-               (o.cursorAt && this._adjustOffsetFromHelper(o.cursorAt));
-
-               //Cache the former DOM position
-               this.domPosition = { prev: this.currentItem.prev()[0], parent: this.currentItem.parent()[0] };
-
-               //If the helper is not the original, hide the original so it's not playing any role during the drag, won't cause anything bad this way
-               if(this.helper[0] !== this.currentItem[0]) {
-                       this.currentItem.hide();
-               }
-
-               //Create the placeholder
-               this._createPlaceholder();
-
-               //Set a containment if given in the options
-               if(o.containment) {
-                       this._setContainment();
-               }
-
-               if( o.cursor && o.cursor !== "auto" ) { // cursor option
-                       body = this.document.find( "body" );
-
-                       // support: IE
-                       this.storedCursor = body.css( "cursor" );
-                       body.css( "cursor", o.cursor );
-
-                       this.storedStylesheet = $( "<style>*{ cursor: "+o.cursor+" !important; }</style>" ).appendTo( body );
-               }
-
-               if(o.opacity) { // opacity option
-                       if (this.helper.css("opacity")) {
-                               this._storedOpacity = this.helper.css("opacity");
-                       }
-                       this.helper.css("opacity", o.opacity);
-               }
-
-               if(o.zIndex) { // zIndex option
-                       if (this.helper.css("zIndex")) {
-                               this._storedZIndex = this.helper.css("zIndex");
-                       }
-                       this.helper.css("zIndex", o.zIndex);
-               }
-
-               //Prepare scrolling
-               if(this.scrollParent[0] !== this.document[0] && this.scrollParent[0].tagName !== "HTML") {
-                       this.overflowOffset = this.scrollParent.offset();
-               }
-
-               //Call callbacks
-               this._trigger("start", event, this._uiHash());
-
-               //Recache the helper size
-               if(!this._preserveHelperProportions) {
-                       this._cacheHelperProportions();
-               }
-
-
-               //Post "activate" events to possible containers
-               if( !noActivation ) {
-                       for ( i = this.containers.length - 1; i >= 0; i-- ) {
-                               this.containers[ i ]._trigger( "activate", event, this._uiHash( this ) );
-                       }
-               }
-
-               //Prepare possible droppables
-               if($.ui.ddmanager) {
-                       $.ui.ddmanager.current = this;
-               }
-
-               if ($.ui.ddmanager && !o.dropBehaviour) {
-                       $.ui.ddmanager.prepareOffsets(this, event);
-               }
-
-               this.dragging = true;
-
-               this.helper.addClass("ui-sortable-helper");
-               this._mouseDrag(event); //Execute the drag once - this causes the helper not to be visible before getting its correct position
-               return true;
-
-       },
-
-       _mouseDrag: function(event) {
-               var i, item, itemElement, intersection,
-                       o = this.options,
-                       scrolled = false;
-
-               //Compute the helpers position
-               this.position = this._generatePosition(event);
-               this.positionAbs = this._convertPositionTo("absolute");
-
-               if (!this.lastPositionAbs) {
-                       this.lastPositionAbs = this.positionAbs;
-               }
-
-               //Do scrolling
-               if(this.options.scroll) {
-                       if(this.scrollParent[0] !== this.document[0] && this.scrollParent[0].tagName !== "HTML") {
-
-                               if((this.overflowOffset.top + this.scrollParent[0].offsetHeight) - event.pageY < o.scrollSensitivity) {
-                                       this.scrollParent[0].scrollTop = scrolled = this.scrollParent[0].scrollTop + o.scrollSpeed;
-                               } else if(event.pageY - this.overflowOffset.top < o.scrollSensitivity) {
-                                       this.scrollParent[0].scrollTop = scrolled = this.scrollParent[0].scrollTop - o.scrollSpeed;
-                               }
-
-                               if((this.overflowOffset.left + this.scrollParent[0].offsetWidth) - event.pageX < o.scrollSensitivity) {
-                                       this.scrollParent[0].scrollLeft = scrolled = this.scrollParent[0].scrollLeft + o.scrollSpeed;
-                               } else if(event.pageX - this.overflowOffset.left < o.scrollSensitivity) {
-                                       this.scrollParent[0].scrollLeft = scrolled = this.scrollParent[0].scrollLeft - o.scrollSpeed;
-                               }
-
-                       } else {
-
-                               if(event.pageY - this.document.scrollTop() < o.scrollSensitivity) {
-                                       scrolled = this.document.scrollTop(this.document.scrollTop() - o.scrollSpeed);
-                               } else if(this.window.height() - (event.pageY - this.document.scrollTop()) < o.scrollSensitivity) {
-                                       scrolled = this.document.scrollTop(this.document.scrollTop() + o.scrollSpeed);
-                               }
-
-                               if(event.pageX - this.document.scrollLeft() < o.scrollSensitivity) {
-                                       scrolled = this.document.scrollLeft(this.document.scrollLeft() - o.scrollSpeed);
-                               } else if(this.window.width() - (event.pageX - this.document.scrollLeft()) < o.scrollSensitivity) {
-                                       scrolled = this.document.scrollLeft(this.document.scrollLeft() + o.scrollSpeed);
-                               }
-
-                       }
-
-                       if(scrolled !== false && $.ui.ddmanager && !o.dropBehaviour) {
-                               $.ui.ddmanager.prepareOffsets(this, event);
-                       }
-               }
-
-               //Regenerate the absolute position used for position checks
-               this.positionAbs = this._convertPositionTo("absolute");
-
-               //Set the helper position
-               if(!this.options.axis || this.options.axis !== "y") {
-                       this.helper[0].style.left = this.position.left+"px";
-               }
-               if(!this.options.axis || this.options.axis !== "x") {
-                       this.helper[0].style.top = this.position.top+"px";
-               }
-
-               //Rearrange
-               for (i = this.items.length - 1; i >= 0; i--) {
-
-                       //Cache variables and intersection, continue if no intersection
-                       item = this.items[i];
-                       itemElement = item.item[0];
-                       intersection = this._intersectsWithPointer(item);
-                       if (!intersection) {
-                               continue;
-                       }
-
-                       // Only put the placeholder inside the current Container, skip all
-                       // items from other containers. This works because when moving
-                       // an item from one container to another the
-                       // currentContainer is switched before the placeholder is moved.
-                       //
-                       // Without this, moving items in "sub-sortables" can cause
-                       // the placeholder to jitter between the outer and inner container.
-                       if (item.instance !== this.currentContainer) {
-                               continue;
-                       }
-
-                       // cannot intersect with itself
-                       // no useless actions that have been done before
-                       // no action if the item moved is the parent of the item checked
-                       if (itemElement !== this.currentItem[0] &&
-                               this.placeholder[intersection === 1 ? "next" : "prev"]()[0] !== itemElement &&
-                               !$.contains(this.placeholder[0], itemElement) &&
-                               (this.options.type === "semi-dynamic" ? !$.contains(this.element[0], itemElement) : true)
-                       ) {
-
-                               this.direction = intersection === 1 ? "down" : "up";
-
-                               if (this.options.tolerance === "pointer" || this._intersectsWithSides(item)) {
-                                       this._rearrange(event, item);
-                               } else {
-                                       break;
-                               }
-
-                               this._trigger("change", event, this._uiHash());
-                               break;
-                       }
-               }
-
-               //Post events to containers
-               this._contactContainers(event);
-
-               //Interconnect with droppables
-               if($.ui.ddmanager) {
-                       $.ui.ddmanager.drag(this, event);
-               }
-
-               //Call callbacks
-               this._trigger("sort", event, this._uiHash());
-
-               this.lastPositionAbs = this.positionAbs;
-               return false;
-
-       },
-
-       _mouseStop: function(event, noPropagation) {
-
-               if(!event) {
-                       return;
-               }
-
-               //If we are using droppables, inform the manager about the drop
-               if ($.ui.ddmanager && !this.options.dropBehaviour) {
-                       $.ui.ddmanager.drop(this, event);
-               }
-
-               if(this.options.revert) {
-                       var that = this,
-                               cur = this.placeholder.offset(),
-                               axis = this.options.axis,
-                               animation = {};
-
-                       if ( !axis || axis === "x" ) {
-                               animation.left = cur.left - this.offset.parent.left - this.margins.left + (this.offsetParent[0] === this.document[0].body ? 0 : this.offsetParent[0].scrollLeft);
-                       }
-                       if ( !axis || axis === "y" ) {
-                               animation.top = cur.top - this.offset.parent.top - this.margins.top + (this.offsetParent[0] === this.document[0].body ? 0 : this.offsetParent[0].scrollTop);
-                       }
-                       this.reverting = true;
-                       $(this.helper).animate( animation, parseInt(this.options.revert, 10) || 500, function() {
-                               that._clear(event);
-                       });
-               } else {
-                       this._clear(event, noPropagation);
-               }
-
-               return false;
-
-       },
-
-       cancel: function() {
-
-               if(this.dragging) {
-
-                       this._mouseUp({ target: null });
-
-                       if(this.options.helper === "original") {
-                               this.currentItem.css(this._storedCSS).removeClass("ui-sortable-helper");
-                       } else {
-                               this.currentItem.show();
-                       }
-
-                       //Post deactivating events to containers
-                       for (var i = this.containers.length - 1; i >= 0; i--){
-                               this.containers[i]._trigger("deactivate", null, this._uiHash(this));
-                               if(this.containers[i].containerCache.over) {
-                                       this.containers[i]._trigger("out", null, this._uiHash(this));
-                                       this.containers[i].containerCache.over = 0;
-                               }
-                       }
-
-               }
-
-               if (this.placeholder) {
-                       //$(this.placeholder[0]).remove(); would have been the jQuery way - unfortunately, it unbinds ALL events from the original node!
-                       if(this.placeholder[0].parentNode) {
-                               this.placeholder[0].parentNode.removeChild(this.placeholder[0]);
-                       }
-                       if(this.options.helper !== "original" && this.helper && this.helper[0].parentNode) {
-                               this.helper.remove();
-                       }
-
-                       $.extend(this, {
-                               helper: null,
-                               dragging: false,
-                               reverting: false,
-                               _noFinalSort: null
-                       });
-
-                       if(this.domPosition.prev) {
-                               $(this.domPosition.prev).after(this.currentItem);
-                       } else {
-                               $(this.domPosition.parent).prepend(this.currentItem);
-                       }
-               }
-
-               return this;
-
-       },
-
-       serialize: function(o) {
-
-               var items = this._getItemsAsjQuery(o && o.connected),
-                       str = [];
-               o = o || {};
-
-               $(items).each(function() {
-                       var res = ($(o.item || this).attr(o.attribute || "id") || "").match(o.expression || (/(.+)[\-=_](.+)/));
-                       if (res) {
-                               str.push((o.key || res[1]+"[]")+"="+(o.key && o.expression ? res[1] : res[2]));
-                       }
-               });
-
-               if(!str.length && o.key) {
-                       str.push(o.key + "=");
-               }
-
-               return str.join("&");
-
-       },
-
-       toArray: function(o) {
-
-               var items = this._getItemsAsjQuery(o && o.connected),
-                       ret = [];
-
-               o = o || {};
-
-               items.each(function() { ret.push($(o.item || this).attr(o.attribute || "id") || ""); });
-               return ret;
-
-       },
-
-       /* Be careful with the following core functions */
-       _intersectsWith: function(item) {
-
-               var x1 = this.positionAbs.left,
-                       x2 = x1 + this.helperProportions.width,
-                       y1 = this.positionAbs.top,
-                       y2 = y1 + this.helperProportions.height,
-                       l = item.left,
-                       r = l + item.width,
-                       t = item.top,
-                       b = t + item.height,
-                       dyClick = this.offset.click.top,
-                       dxClick = this.offset.click.left,
-                       isOverElementHeight = ( this.options.axis === "x" ) || ( ( y1 + dyClick ) > t && ( y1 + dyClick ) < b ),
-                       isOverElementWidth = ( this.options.axis === "y" ) || ( ( x1 + dxClick ) > l && ( x1 + dxClick ) < r ),
-                       isOverElement = isOverElementHeight && isOverElementWidth;
-
-               if ( this.options.tolerance === "pointer" ||
-                       this.options.forcePointerForContainers ||
-                       (this.options.tolerance !== "pointer" && this.helperProportions[this.floating ? "width" : "height"] > item[this.floating ? "width" : "height"])
-               ) {
-                       return isOverElement;
-               } else {
-
-                       return (l < x1 + (this.helperProportions.width / 2) && // Right Half
-                               x2 - (this.helperProportions.width / 2) < r && // Left Half
-                               t < y1 + (this.helperProportions.height / 2) && // Bottom Half
-                               y2 - (this.helperProportions.height / 2) < b ); // Top Half
-
-               }
-       },
-
-       _intersectsWithPointer: function(item) {
-
-               var isOverElementHeight = (this.options.axis === "x") || this._isOverAxis(this.positionAbs.top + this.offset.click.top, item.top, item.height),
-                       isOverElementWidth = (this.options.axis === "y") || this._isOverAxis(this.positionAbs.left + this.offset.click.left, item.left, item.width),
-                       isOverElement = isOverElementHeight && isOverElementWidth,
-                       verticalDirection = this._getDragVerticalDirection(),
-                       horizontalDirection = this._getDragHorizontalDirection();
-
-               if (!isOverElement) {
-                       return false;
-               }
-
-               return this.floating ?
-                       ( ((horizontalDirection && horizontalDirection === "right") || verticalDirection === "down") ? 2 : 1 )
-                       : ( verticalDirection && (verticalDirection === "down" ? 2 : 1) );
-
-       },
-
-       _intersectsWithSides: function(item) {
-
-               var isOverBottomHalf = this._isOverAxis(this.positionAbs.top + this.offset.click.top, item.top + (item.height/2), item.height),
-                       isOverRightHalf = this._isOverAxis(this.positionAbs.left + this.offset.click.left, item.left + (item.width/2), item.width),
-                       verticalDirection = this._getDragVerticalDirection(),
-                       horizontalDirection = this._getDragHorizontalDirection();
-
-               if (this.floating && horizontalDirection) {
-                       return ((horizontalDirection === "right" && isOverRightHalf) || (horizontalDirection === "left" && !isOverRightHalf));
-               } else {
-                       return verticalDirection && ((verticalDirection === "down" && isOverBottomHalf) || (verticalDirection === "up" && !isOverBottomHalf));
-               }
-
-       },
-
-       _getDragVerticalDirection: function() {
-               var delta = this.positionAbs.top - this.lastPositionAbs.top;
-               return delta !== 0 && (delta > 0 ? "down" : "up");
-       },
-
-       _getDragHorizontalDirection: function() {
-               var delta = this.positionAbs.left - this.lastPositionAbs.left;
-               return delta !== 0 && (delta > 0 ? "right" : "left");
-       },
-
-       refresh: function(event) {
-               this._refreshItems(event);
-               this._setHandleClassName();
-               this.refreshPositions();
-               return this;
-       },
-
-       _connectWith: function() {
-               var options = this.options;
-               return options.connectWith.constructor === String ? [options.connectWith] : options.connectWith;
-       },
-
-       _getItemsAsjQuery: function(connected) {
-
-               var i, j, cur, inst,
-                       items = [],
-                       queries = [],
-                       connectWith = this._connectWith();
-
-               if(connectWith && connected) {
-                       for (i = connectWith.length - 1; i >= 0; i--){
-                               cur = $(connectWith[i], this.document[0]);
-                               for ( j = cur.length - 1; j >= 0; j--){
-                                       inst = $.data(cur[j], this.widgetFullName);
-                                       if(inst && inst !== this && !inst.options.disabled) {
-                                               queries.push([$.isFunction(inst.options.items) ? inst.options.items.call(inst.element) : $(inst.options.items, inst.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"), inst]);
-                                       }
-                               }
-                       }
-               }
-
-               queries.push([$.isFunction(this.options.items) ? this.options.items.call(this.element, null, { options: this.options, item: this.currentItem }) : $(this.options.items, this.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"), this]);
-
-               function addItems() {
-                       items.push( this );
-               }
-               for (i = queries.length - 1; i >= 0; i--){
-                       queries[i][0].each( addItems );
-               }
-
-               return $(items);
-
-       },
-
-       _removeCurrentsFromItems: function() {
-
-               var list = this.currentItem.find(":data(" + this.widgetName + "-item)");
-
-               this.items = $.grep(this.items, function (item) {
-                       for (var j=0; j < list.length; j++) {
-                               if(list[j] === item.item[0]) {
-                                       return false;
-                               }
-                       }
-                       return true;
-               });
-
-       },
-
-       _refreshItems: function(event) {
-
-               this.items = [];
-               this.containers = [this];
-
-               var i, j, cur, inst, targetData, _queries, item, queriesLength,
-                       items = this.items,
-                       queries = [[$.isFunction(this.options.items) ? this.options.items.call(this.element[0], event, { item: this.currentItem }) : $(this.options.items, this.element), this]],
-                       connectWith = this._connectWith();
-
-               if(connectWith && this.ready) { //Shouldn't be run the first time through due to massive slow-down
-                       for (i = connectWith.length - 1; i >= 0; i--){
-                               cur = $(connectWith[i], this.document[0]);
-                               for (j = cur.length - 1; j >= 0; j--){
-                                       inst = $.data(cur[j], this.widgetFullName);
-                                       if(inst && inst !== this && !inst.options.disabled) {
-                                               queries.push([$.isFunction(inst.options.items) ? inst.options.items.call(inst.element[0], event, { item: this.currentItem }) : $(inst.options.items, inst.element), inst]);
-                                               this.containers.push(inst);
-                                       }
-                               }
-                       }
-               }
-
-               for (i = queries.length - 1; i >= 0; i--) {
-                       targetData = queries[i][1];
-                       _queries = queries[i][0];
-
-                       for (j=0, queriesLength = _queries.length; j < queriesLength; j++) {
-                               item = $(_queries[j]);
-
-                               item.data(this.widgetName + "-item", targetData); // Data for target checking (mouse manager)
-
-                               items.push({
-                                       item: item,
-                                       instance: targetData,
-                                       width: 0, height: 0,
-                                       left: 0, top: 0
-                               });
-                       }
-               }
-
-       },
-
-       refreshPositions: function(fast) {
-
-               //This has to be redone because due to the item being moved out/into the offsetParent, the offsetParent's position will change
-               if(this.offsetParent && this.helper) {
-                       this.offset.parent = this._getParentOffset();
-               }
-
-               var i, item, t, p;
-
-               for (i = this.items.length - 1; i >= 0; i--){
-                       item = this.items[i];
-
-                       //We ignore calculating positions of all connected containers when we're not over them
-                       if(item.instance !== this.currentContainer && this.currentContainer && item.item[0] !== this.currentItem[0]) {
-                               continue;
-                       }
-
-                       t = this.options.toleranceElement ? $(this.options.toleranceElement, item.item) : item.item;
-
-                       if (!fast) {
-                               item.width = t.outerWidth();
-                               item.height = t.outerHeight();
-                       }
-
-                       p = t.offset();
-                       item.left = p.left;
-                       item.top = p.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--){
-                               p = this.containers[i].element.offset();
-                               this.containers[i].containerCache.left = p.left;
-                               this.containers[i].containerCache.top = p.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(that) {
-               that = that || this;
-               var className,
-                       o = that.options;
-
-               if(!o.placeholder || o.placeholder.constructor === String) {
-                       className = o.placeholder;
-                       o.placeholder = {
-                               element: function() {
-
-                                       var nodeName = that.currentItem[0].nodeName.toLowerCase(),
-                                               element = $( "<" + nodeName + ">", that.document[0] )
-                                                       .addClass(className || that.currentItem[0].className+" ui-sortable-placeholder")
-                                                       .removeClass("ui-sortable-helper");
-
-                                       if ( nodeName === "tr" ) {
-                                               that.currentItem.children().each(function() {
-                                                       $( "<td>&#160;</td>", that.document[0] )
-                                                               .attr( "colspan", $( this ).attr( "colspan" ) || 1 )
-                                                               .appendTo( element );
-                                               });
-                                       } else if ( nodeName === "img" ) {
-                                               element.attr( "src", that.currentItem.attr( "src" ) );
-                                       }
-
-                                       if ( !className ) {
-                                               element.css( "visibility", "hidden" );
-                                       }
-
-                                       return element;
-                               },
-                               update: function(container, p) {
-
-                                       // 1. If a className is set as 'placeholder option, we don't force sizes - the class is responsible for that
-                                       // 2. The option 'forcePlaceholderSize can be enabled to force it even if a class name is specified
-                                       if(className && !o.forcePlaceholderSize) {
-                                               return;
-                                       }
-
-                                       //If the element doesn't have a actual height by itself (without styles coming from a stylesheet), it receives the inline height from the dragged item
-                                       if(!p.height()) { p.height(that.currentItem.innerHeight() - parseInt(that.currentItem.css("paddingTop")||0, 10) - parseInt(that.currentItem.css("paddingBottom")||0, 10)); }
-                                       if(!p.width()) { p.width(that.currentItem.innerWidth() - parseInt(that.currentItem.css("paddingLeft")||0, 10) - parseInt(that.currentItem.css("paddingRight")||0, 10)); }
-                               }
-                       };
-               }
-
-               //Create the placeholder
-               that.placeholder = $(o.placeholder.element.call(that.element, that.currentItem));
-
-               //Append it after the actual current item
-               that.currentItem.after(that.placeholder);
-
-               //Update the size of the placeholder (TODO: Logic to fuzzy, see line 316/317)
-               o.placeholder.update(that, that.placeholder);
-
-       },
-
-       _contactContainers: function(event) {
-               var i, j, dist, itemWithLeastDistance, posProperty, sizeProperty, cur, nearBottom, floating, axis,
-                       innermostContainer = null,
-                       innermostIndex = null;
-
-               // get innermost container that intersects with item
-               for (i = this.containers.length - 1; i >= 0; i--) {
-
-                       // never consider a container that's located within the item itself
-                       if($.contains(this.currentItem[0], this.containers[i].element[0])) {
-                               continue;
-                       }
-
-                       if(this._intersectsWith(this.containers[i].containerCache)) {
-
-                               // if we've already found a container and it's more "inner" than this, then continue
-                               if(innermostContainer && $.contains(this.containers[i].element[0], innermostContainer.element[0])) {
-                                       continue;
-                               }
-
-                               innermostContainer = this.containers[i];
-                               innermostIndex = i;
-
-                       } else {
-                               // container doesn't intersect. trigger "out" event if necessary
-                               if(this.containers[i].containerCache.over) {
-                                       this.containers[i]._trigger("out", event, this._uiHash(this));
-                                       this.containers[i].containerCache.over = 0;
-                               }
-                       }
-
-               }
-
-               // if no intersecting containers found, return
-               if(!innermostContainer) {
-                       return;
-               }
-
-               // move the item into the container if it's not there already
-               if(this.containers.length === 1) {
-                       if (!this.containers[innermostIndex].containerCache.over) {
-                               this.containers[innermostIndex]._trigger("over", event, this._uiHash(this));
-                               this.containers[innermostIndex].containerCache.over = 1;
-                       }
-               } else {
-
-                       //When entering a new container, we will find the item with the least distance and append our item near it
-                       dist = 10000;
-                       itemWithLeastDistance = null;
-                       floating = innermostContainer.floating || this._isFloating(this.currentItem);
-                       posProperty = floating ? "left" : "top";
-                       sizeProperty = floating ? "width" : "height";
-                       axis = floating ? "clientX" : "clientY";
-
-                       for (j = this.items.length - 1; j >= 0; j--) {
-                               if(!$.contains(this.containers[innermostIndex].element[0], this.items[j].item[0])) {
-                                       continue;
-                               }
-                               if(this.items[j].item[0] === this.currentItem[0]) {
-                                       continue;
-                               }
-
-                               cur = this.items[j].item.offset()[posProperty];
-                               nearBottom = false;
-                               if ( event[ axis ] - cur > this.items[ j ][ sizeProperty ] / 2 ) {
-                                       nearBottom = true;
-                               }
-
-                               if ( Math.abs( event[ axis ] - cur ) < dist ) {
-                                       dist = Math.abs( event[ axis ] - cur );
-                                       itemWithLeastDistance = this.items[ j ];
-                                       this.direction = nearBottom ? "up": "down";
-                               }
-                       }
-
-                       //Check if dropOnEmpty is enabled
-                       if(!itemWithLeastDistance && !this.options.dropOnEmpty) {
-                               return;
-                       }
-
-                       if(this.currentContainer === this.containers[innermostIndex]) {
-                               if ( !this.currentContainer.containerCache.over ) {
-                                       this.containers[ innermostIndex ]._trigger( "over", event, this._uiHash() );
-                                       this.currentContainer.containerCache.over = 1;
-                               }
-                               return;
-                       }
-
-                       itemWithLeastDistance ? this._rearrange(event, itemWithLeastDistance, null, true) : this._rearrange(event, null, this.containers[innermostIndex].element, true);
-                       this._trigger("change", event, this._uiHash());
-                       this.containers[innermostIndex]._trigger("change", event, this._uiHash(this));
-                       this.currentContainer = this.containers[innermostIndex];
-
-                       //Update the placeholder
-                       this.options.placeholder.update(this.currentContainer, this.placeholder);
-
-                       this.containers[innermostIndex]._trigger("over", event, this._uiHash(this));
-                       this.containers[innermostIndex].containerCache.over = 1;
-               }
-
-
-       },
-
-       _createHelper: function(event) {
-
-               var o = this.options,
-                       helper = $.isFunction(o.helper) ? $(o.helper.apply(this.element[0], [event, this.currentItem])) : (o.helper === "clone" ? this.currentItem.clone() : this.currentItem);
-
-               //Add the helper to the DOM if that didn't happen already
-               if(!helper.parents("body").length) {
-                       $(o.appendTo !== "parent" ? o.appendTo : this.currentItem[0].parentNode)[0].appendChild(helper[0]);
-               }
-
-               if(helper[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") };
-               }
-
-               if(!helper[0].style.width || o.forceHelperSize) {
-                       helper.width(this.currentItem.width());
-               }
-               if(!helper[0].style.height || o.forceHelperSize) {
-                       helper.height(this.currentItem.height());
-               }
-
-               return helper;
-
-       },
-
-       _adjustOffsetFromHelper: function(obj) {
-               if (typeof obj === "string") {
-                       obj = obj.split(" ");
-               }
-               if ($.isArray(obj)) {
-                       obj = {left: +obj[0], top: +obj[1] || 0};
-               }
-               if ("left" in obj) {
-                       this.offset.click.left = obj.left + this.margins.left;
-               }
-               if ("right" in obj) {
-                       this.offset.click.left = this.helperProportions.width - obj.right + this.margins.left;
-               }
-               if ("top" in obj) {
-                       this.offset.click.top = obj.top + this.margins.top;
-               }
-               if ("bottom" in obj) {
-                       this.offset.click.top = this.helperProportions.height - obj.bottom + this.margins.top;
-               }
-       },
-
-       _getParentOffset: function() {
-
-
-               //Get the offsetParent and cache its position
-               this.offsetParent = this.helper.offsetParent();
-               var po = this.offsetParent.offset();
-
-               // This is a special case where we need to modify a offset calculated on start, since the following happened:
-               // 1. The position of the helper is absolute, so it's position is calculated based on the next positioned parent
-               // 2. The actual offset parent is a child of the scroll parent, and the scroll parent isn't the document, which means that
-               //    the scroll is included in the initial calculation of the offset of the parent, and never recalculated upon drag
-               if(this.cssPosition === "absolute" && this.scrollParent[0] !== this.document[0] && $.contains(this.scrollParent[0], this.offsetParent[0])) {
-                       po.left += this.scrollParent.scrollLeft();
-                       po.top += this.scrollParent.scrollTop();
-               }
-
-               // This needs to be actually done for all browsers, since pageX/pageY includes this information
-               // with an ugly IE fix
-               if( this.offsetParent[0] === this.document[0].body || (this.offsetParent[0].tagName && this.offsetParent[0].tagName.toLowerCase() === "html" && $.ui.ie)) {
-                       po = { top: 0, left: 0 };
-               }
-
-               return {
-                       top: po.top + (parseInt(this.offsetParent.css("borderTopWidth"),10) || 0),
-                       left: po.left + (parseInt(this.offsetParent.css("borderLeftWidth"),10) || 0)
-               };
-
-       },
-
-       _getRelativeOffset: function() {
-
-               if(this.cssPosition === "relative") {
-                       var p = this.currentItem.position();
-                       return {
-                               top: p.top - (parseInt(this.helper.css("top"),10) || 0) + this.scrollParent.scrollTop(),
-                               left: p.left - (parseInt(this.helper.css("left"),10) || 0) + this.scrollParent.scrollLeft()
-                       };
-               } else {
-                       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 ce, co, over,
-                       o = this.options;
-               if(o.containment === "parent") {
-                       o.containment = this.helper[0].parentNode;
-               }
-               if(o.containment === "document" || o.containment === "window") {
-                       this.containment = [
-                               0 - this.offset.relative.left - this.offset.parent.left,
-                               0 - this.offset.relative.top - this.offset.parent.top,
-                               o.containment === "document" ? this.document.width() : this.window.width() - this.helperProportions.width - this.margins.left,
-                               (o.containment === "document" ? this.document.width() : this.window.height() || this.document[0].body.parentNode.scrollHeight) - this.helperProportions.height - this.margins.top
-                       ];
-               }
-
-               if(!(/^(document|window|parent)$/).test(o.containment)) {
-                       ce = $(o.containment)[0];
-                       co = $(o.containment).offset();
-                       over = ($(ce).css("overflow") !== "hidden");
-
-                       this.containment = [
-                               co.left + (parseInt($(ce).css("borderLeftWidth"),10) || 0) + (parseInt($(ce).css("paddingLeft"),10) || 0) - this.margins.left,
-                               co.top + (parseInt($(ce).css("borderTopWidth"),10) || 0) + (parseInt($(ce).css("paddingTop"),10) || 0) - this.margins.top,
-                               co.left+(over ? Math.max(ce.scrollWidth,ce.offsetWidth) : ce.offsetWidth) - (parseInt($(ce).css("borderLeftWidth"),10) || 0) - (parseInt($(ce).css("paddingRight"),10) || 0) - this.helperProportions.width - this.margins.left,
-                               co.top+(over ? Math.max(ce.scrollHeight,ce.offsetHeight) : ce.offsetHeight) - (parseInt($(ce).css("borderTopWidth"),10) || 0) - (parseInt($(ce).css("paddingBottom"),10) || 0) - this.helperProportions.height - this.margins.top
-                       ];
-               }
-
-       },
-
-       _convertPositionTo: function(d, pos) {
-
-               if(!pos) {
-                       pos = this.position;
-               }
-               var mod = d === "absolute" ? 1 : -1,
-                       scroll = this.cssPosition === "absolute" && !(this.scrollParent[0] !== this.document[0] && $.contains(this.scrollParent[0], this.offsetParent[0])) ? this.offsetParent : this.scrollParent,
-                       scrollIsRootNode = (/(html|body)/i).test(scroll[0].tagName);
-
-               return {
-                       top: (
-                               pos.top +                                                                                                                               // The absolute mouse position
-                               this.offset.relative.top * mod +                                                                                // Only for relative positioned nodes: Relative offset from element to offset parent
-                               this.offset.parent.top * mod -                                                                                  // The offsetParent's offset without borders (offset + border)
-                               ( ( this.cssPosition === "fixed" ? -this.scrollParent.scrollTop() : ( scrollIsRootNode ? 0 : scroll.scrollTop() ) ) * mod)
-                       ),
-                       left: (
-                               pos.left +                                                                                                                              // The absolute mouse position
-                               this.offset.relative.left * mod +                                                                               // Only for relative positioned nodes: Relative offset from element to offset parent
-                               this.offset.parent.left * mod   -                                                                               // The offsetParent's offset without borders (offset + border)
-                               ( ( this.cssPosition === "fixed" ? -this.scrollParent.scrollLeft() : scrollIsRootNode ? 0 : scroll.scrollLeft() ) * mod)
-                       )
-               };
-
-       },
-
-       _generatePosition: function(event) {
-
-               var top, left,
-                       o = this.options,
-                       pageX = event.pageX,
-                       pageY = event.pageY,
-                       scroll = this.cssPosition === "absolute" && !(this.scrollParent[0] !== this.document[0] && $.contains(this.scrollParent[0], this.offsetParent[0])) ? this.offsetParent : this.scrollParent, scrollIsRootNode = (/(html|body)/i).test(scroll[0].tagName);
-
-               // This is another very weird special case that only happens for relative elements:
-               // 1. If the css position is relative
-               // 2. and the scroll parent is the document or similar to the offset parent
-               // we have to refresh the relative offset during the scroll so there are no jumps
-               if(this.cssPosition === "relative" && !(this.scrollParent[0] !== this.document[0] && this.scrollParent[0] !== this.offsetParent[0])) {
-                       this.offset.relative = this._getRelativeOffset();
-               }
-
-               /*
-                * - Position constraining -
-                * Constrain the position to a mix of grid, containment.
-                */
-
-               if(this.originalPosition) { //If we are not dragging yet, we won't check for options
-
-                       if(this.containment) {
-                               if(event.pageX - this.offset.click.left < this.containment[0]) {
-                                       pageX = this.containment[0] + this.offset.click.left;
-                               }
-                               if(event.pageY - this.offset.click.top < this.containment[1]) {
-                                       pageY = this.containment[1] + this.offset.click.top;
-                               }
-                               if(event.pageX - this.offset.click.left > this.containment[2]) {
-                                       pageX = this.containment[2] + this.offset.click.left;
-                               }
-                               if(event.pageY - this.offset.click.top > this.containment[3]) {
-                                       pageY = this.containment[3] + this.offset.click.top;
-                               }
-                       }
-
-                       if(o.grid) {
-                               top = this.originalPageY + Math.round((pageY - this.originalPageY) / o.grid[1]) * o.grid[1];
-                               pageY = this.containment ? ( (top - this.offset.click.top >= this.containment[1] && top - this.offset.click.top <= this.containment[3]) ? top : ((top - this.offset.click.top >= this.containment[1]) ? top - o.grid[1] : top + o.grid[1])) : top;
-
-                               left = this.originalPageX + Math.round((pageX - this.originalPageX) / o.grid[0]) * o.grid[0];
-                               pageX = this.containment ? ( (left - this.offset.click.left >= this.containment[0] && left - this.offset.click.left <= this.containment[2]) ? left : ((left - this.offset.click.left >= this.containment[0]) ? left - o.grid[0] : left + o.grid[0])) : left;
-                       }
-
-               }
-
-               return {
-                       top: (
-                               pageY -                                                                                                                         // The absolute mouse position
-                               this.offset.click.top -                                                                                                 // Click offset (relative to the element)
-                               this.offset.relative.top        -                                                                                       // Only for relative positioned nodes: Relative offset from element to offset parent
-                               this.offset.parent.top +                                                                                                // The offsetParent's offset without borders (offset + border)
-                               ( ( this.cssPosition === "fixed" ? -this.scrollParent.scrollTop() : ( scrollIsRootNode ? 0 : scroll.scrollTop() ) ))
-                       ),
-                       left: (
-                               pageX -                                                                                                                         // The absolute mouse position
-                               this.offset.click.left -                                                                                                // Click offset (relative to the element)
-                               this.offset.relative.left       -                                                                                       // Only for relative positioned nodes: Relative offset from element to offset parent
-                               this.offset.parent.left +                                                                                               // The offsetParent's offset without borders (offset + border)
-                               ( ( this.cssPosition === "fixed" ? -this.scrollParent.scrollLeft() : scrollIsRootNode ? 0 : scroll.scrollLeft() ))
-                       )
-               };
-
-       },
-
-       _rearrange: function(event, i, a, hardRefresh) {
-
-               a ? a[0].appendChild(this.placeholder[0]) : i.item[0].parentNode.insertBefore(this.placeholder[0], (this.direction === "down" ? i.item[0] : i.item[0].nextSibling));
-
-               //Various things done here to improve the performance:
-               // 1. we create a setTimeout, that calls refreshPositions
-               // 2. on the instance, we have a counter variable, that get's higher after every append
-               // 3. on the local scope, we copy the counter variable, and check in the timeout, if it's still the same
-               // 4. this lets only the last addition to the timeout stack through
-               this.counter = this.counter ? ++this.counter : 1;
-               var counter = this.counter;
-
-               this._delay(function() {
-                       if(counter === this.counter) {
-                               this.refreshPositions(!hardRefresh); //Precompute after each DOM insertion, NOT on mousemove
-                       }
-               });
-
-       },
-
-       _clear: function(event, noPropagation) {
-
-               this.reverting = false;
-               // We delay all events that have to be triggered to after the point where the placeholder has been removed and
-               // everything else normalized again
-               var i,
-                       delayedTriggers = [];
-
-               // We first have to update the dom position of the actual currentItem
-               // Note: don't do it if the current item is already removed (by a user), or it gets reappended (see #4088)
-               if(!this._noFinalSort && this.currentItem.parent().length) {
-                       this.placeholder.before(this.currentItem);
-               }
-               this._noFinalSort = null;
-
-               if(this.helper[0] === this.currentItem[0]) {
-                       for(i in this._storedCSS) {
-                               if(this._storedCSS[i] === "auto" || this._storedCSS[i] === "static") {
-                                       this._storedCSS[i] = "";
-                               }
-                       }
-                       this.currentItem.css(this._storedCSS).removeClass("ui-sortable-helper");
-               } else {
-                       this.currentItem.show();
-               }
-
-               if(this.fromOutside && !noPropagation) {
-                       delayedTriggers.push(function(event) { this._trigger("receive", event, this._uiHash(this.fromOutside)); });
-               }
-               if((this.fromOutside || this.domPosition.prev !== this.currentItem.prev().not(".ui-sortable-helper")[0] || this.domPosition.parent !== this.currentItem.parent()[0]) && !noPropagation) {
-                       delayedTriggers.push(function(event) { this._trigger("update", event, this._uiHash()); }); //Trigger update callback if the DOM position has changed
-               }
-
-               // Check if the items Container has Changed and trigger appropriate
-               // events.
-               if (this !== this.currentContainer) {
-                       if(!noPropagation) {
-                               delayedTriggers.push(function(event) { this._trigger("remove", event, this._uiHash()); });
-                               delayedTriggers.push((function(c) { return function(event) { c._trigger("receive", event, this._uiHash(this)); };  }).call(this, this.currentContainer));
-                               delayedTriggers.push((function(c) { return function(event) { c._trigger("update", event, this._uiHash(this));  }; }).call(this, this.currentContainer));
-                       }
-               }
-
-
-               //Post events to containers
-               function delayEvent( type, instance, container ) {
-                       return function( event ) {
-                               container._trigger( type, event, instance._uiHash( instance ) );
-                       };
-               }
-               for (i = this.containers.length - 1; i >= 0; i--){
-                       if (!noPropagation) {
-                               delayedTriggers.push( delayEvent( "deactivate", this, this.containers[ i ] ) );
-                       }
-                       if(this.containers[i].containerCache.over) {
-                               delayedTriggers.push( delayEvent( "out", this, this.containers[ i ] ) );
-                               this.containers[i].containerCache.over = 0;
-                       }
-               }
-
-               //Do what was originally in plugins
-               if ( this.storedCursor ) {
-                       this.document.find( "body" ).css( "cursor", this.storedCursor );
-                       this.storedStylesheet.remove();
-               }
-               if(this._storedOpacity) {
-                       this.helper.css("opacity", this._storedOpacity);
-               }
-               if(this._storedZIndex) {
-                       this.helper.css("zIndex", this._storedZIndex === "auto" ? "" : this._storedZIndex);
-               }
-
-               this.dragging = false;
-
-               if(!noPropagation) {
-                       this._trigger("beforeStop", event, this._uiHash());
-               }
-
-               //$(this.placeholder[0]).remove(); would have been the jQuery way - unfortunately, it unbinds ALL events from the original node!
-               this.placeholder[0].parentNode.removeChild(this.placeholder[0]);
-
-               if ( !this.cancelHelperRemoval ) {
-                       if ( this.helper[ 0 ] !== this.currentItem[ 0 ] ) {
-                               this.helper.remove();
-                       }
-                       this.helper = null;
-               }
-
-               if(!noPropagation) {
-                       for (i=0; i < delayedTriggers.length; i++) {
-                               delayedTriggers[i].call(this, event);
-                       } //Trigger all delayed events
-                       this._trigger("stop", event, this._uiHash());
-               }
-
-               this.fromOutside = false;
-               return !this.cancelHelperRemoval;
-
-       },
-
-       _trigger: function() {
-               if ($.Widget.prototype._trigger.apply(this, arguments) === false) {
-                       this.cancel();
-               }
-       },
-
-       _uiHash: function(_inst) {
-               var inst = _inst || this;
-               return {
-                       helper: inst.helper,
-                       placeholder: inst.placeholder || $([]),
-                       position: inst.position,
-                       originalPosition: inst.originalPosition,
-                       offset: inst.positionAbs,
-                       item: inst.currentItem,
-                       sender: _inst ? _inst.element : null
-               };
-       }
-
-});
-
-
-/*!
- * jQuery UI Spinner 1.11.3
- * http://jqueryui.com
- *
- * Copyright jQuery Foundation and other contributors
- * Released under the MIT license.
- * http://jquery.org/license
- *
- * http://api.jqueryui.com/spinner/
- */
-
-
-function spinner_modifier( fn ) {
-       return function() {
-               var previous = this.element.val();
-               fn.apply( this, arguments );
-               this._refresh();
-               if ( previous !== this.element.val() ) {
-                       this._trigger( "change" );
-               }
-       };
-}
-
-var spinner = $.widget( "ui.spinner", {
-       version: "1.11.3",
-       defaultElement: "<input>",
-       widgetEventPrefix: "spin",
-       options: {
-               culture: null,
-               icons: {
-                       down: "ui-icon-triangle-1-s",
-                       up: "ui-icon-triangle-1-n"
-               },
-               incremental: true,
-               max: null,
-               min: null,
-               numberFormat: null,
-               page: 10,
-               step: 1,
-
-               change: null,
-               spin: null,
-               start: null,
-               stop: null
-       },
-
-       _create: function() {
-               // handle string values that need to be parsed
-               this._setOption( "max", this.options.max );
-               this._setOption( "min", this.options.min );
-               this._setOption( "step", this.options.step );
-
-               // Only format if there is a value, prevents the field from being marked
-               // as invalid in Firefox, see #9573.
-               if ( this.value() !== "" ) {
-                       // Format the value, but don't constrain.
-                       this._value( this.element.val(), true );
-               }
-
-               this._draw();
-               this._on( this._events );
-               this._refresh();
-
-               // turning off autocomplete prevents the browser from remembering the
-               // value when navigating through history, so we re-enable autocomplete
-               // if the page is unloaded before the widget is destroyed. #7790
-               this._on( this.window, {
-                       beforeunload: function() {
-                               this.element.removeAttr( "autocomplete" );
-                       }
-               });
-       },
-
-       _getCreateOptions: function() {
-               var options = {},
-                       element = this.element;
-
-               $.each( [ "min", "max", "step" ], function( i, option ) {
-                       var value = element.attr( option );
-                       if ( value !== undefined && value.length ) {
-                               options[ option ] = value;
-                       }
-               });
-
-               return options;
-       },
-
-       _events: {
-               keydown: function( event ) {
-                       if ( this._start( event ) && this._keydown( event ) ) {
-                               event.preventDefault();
-                       }
-               },
-               keyup: "_stop",
-               focus: function() {
-                       this.previous = this.element.val();
-               },
-               blur: function( event ) {
-                       if ( this.cancelBlur ) {
-                               delete this.cancelBlur;
-                               return;
-                       }
-
-                       this._stop();
-                       this._refresh();
-                       if ( this.previous !== this.element.val() ) {
-                               this._trigger( "change", event );
-                       }
-               },
-               mousewheel: function( event, delta ) {
-                       if ( !delta ) {
-                               return;
-                       }
-                       if ( !this.spinning && !this._start( event ) ) {
-                               return false;
-                       }
-
-                       this._spin( (delta > 0 ? 1 : -1) * this.options.step, event );
-                       clearTimeout( this.mousewheelTimer );
-                       this.mousewheelTimer = this._delay(function() {
-                               if ( this.spinning ) {
-                                       this._stop( event );
-                               }
-                       }, 100 );
-                       event.preventDefault();
-               },
-               "mousedown .ui-spinner-button": function( event ) {
-                       var previous;
-
-                       // We never want the buttons to have focus; whenever the user is
-                       // interacting with the spinner, the focus should be on the input.
-                       // If the input is focused then this.previous is properly set from
-                       // when the input first received focus. If the input is not focused
-                       // then we need to set this.previous based on the value before spinning.
-                       previous = this.element[0] === this.document[0].activeElement ?
-                               this.previous : this.element.val();
-                       function checkFocus() {
-                               var isActive = this.element[0] === this.document[0].activeElement;
-                               if ( !isActive ) {
-                                       this.element.focus();
-                                       this.previous = previous;
-                                       // support: IE
-                                       // IE sets focus asynchronously, so we need to check if focus
-                                       // moved off of the input because the user clicked on the button.
-                                       this._delay(function() {
-                                               this.previous = previous;
-                                       });
-                               }
-                       }
-
-                       // ensure focus is on (or stays on) the text field
-                       event.preventDefault();
-                       checkFocus.call( this );
-
-                       // support: IE
-                       // IE doesn't prevent moving focus even with event.preventDefault()
-                       // so we set a flag to know when we should ignore the blur event
-                       // and check (again) if focus moved off of the input.
-                       this.cancelBlur = true;
-                       this._delay(function() {
-                               delete this.cancelBlur;
-                               checkFocus.call( this );
-                       });
-
-                       if ( this._start( event ) === false ) {
-                               return;
-                       }
-
-                       this._repeat( null, $( event.currentTarget ).hasClass( "ui-spinner-up" ) ? 1 : -1, event );
-               },
-               "mouseup .ui-spinner-button": "_stop",
-               "mouseenter .ui-spinner-button": function( event ) {
-                       // button will add ui-state-active if mouse was down while mouseleave and kept down
-                       if ( !$( event.currentTarget ).hasClass( "ui-state-active" ) ) {
-                               return;
-                       }
-
-                       if ( this._start( event ) === false ) {
-                               return false;
-                       }
-                       this._repeat( null, $( event.currentTarget ).hasClass( "ui-spinner-up" ) ? 1 : -1, event );
-               },
-               // TODO: do we really want to consider this a stop?
-               // shouldn't we just stop the repeater and wait until mouseup before
-               // we trigger the stop event?
-               "mouseleave .ui-spinner-button": "_stop"
-       },
-
-       _draw: function() {
-               var uiSpinner = this.uiSpinner = this.element
-                       .addClass( "ui-spinner-input" )
-                       .attr( "autocomplete", "off" )
-                       .wrap( this._uiSpinnerHtml() )
-                       .parent()
-                               // add buttons
-                               .append( this._buttonHtml() );
-
-               this.element.attr( "role", "spinbutton" );
-
-               // button bindings
-               this.buttons = uiSpinner.find( ".ui-spinner-button" )
-                       .attr( "tabIndex", -1 )
-                       .button()
-                       .removeClass( "ui-corner-all" );
-
-               // IE 6 doesn't understand height: 50% for the buttons
-               // unless the wrapper has an explicit height
-               if ( this.buttons.height() > Math.ceil( uiSpinner.height() * 0.5 ) &&
-                               uiSpinner.height() > 0 ) {
-                       uiSpinner.height( uiSpinner.height() );
-               }
-
-               // disable spinner if element was already disabled
-               if ( this.options.disabled ) {
-                       this.disable();
-               }
-       },
-
-       _keydown: function( event ) {
-               var options = this.options,
-                       keyCode = $.ui.keyCode;
-
-               switch ( event.keyCode ) {
-               case keyCode.UP:
-                       this._repeat( null, 1, event );
-                       return true;
-               case keyCode.DOWN:
-                       this._repeat( null, -1, event );
-                       return true;
-               case keyCode.PAGE_UP:
-                       this._repeat( null, options.page, event );
-                       return true;
-               case keyCode.PAGE_DOWN:
-                       this._repeat( null, -options.page, event );
-                       return true;
-               }
-
-               return false;
-       },
-
-       _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( event ) {
-               if ( !this.spinning && this._trigger( "start", event ) === false ) {
-                       return false;
-               }
-
-               if ( !this.counter ) {
-                       this.counter = 1;
-               }
-               this.spinning = true;
-               return true;
-       },
-
-       _repeat: function( i, steps, event ) {
-               i = i || 500;
-
-               clearTimeout( this.timer );
-               this.timer = this._delay(function() {
-                       this._repeat( 40, steps, event );
-               }, i );
-
-               this._spin( steps * this.options.step, event );
-       },
-
-       _spin: function( step, event ) {
-               var value = this.value() || 0;
-
-               if ( !this.counter ) {
-                       this.counter = 1;
-               }
-
-               value = this._adjustValue( value + step * this._increment( this.counter ) );
-
-               if ( !this.spinning || this._trigger( "spin", event, { value: value } ) !== false) {
-                       this._value( value );
-                       this.counter++;
-               }
-       },
-
-       _increment: function( i ) {
-               var incremental = this.options.incremental;
-
-               if ( incremental ) {
-                       return $.isFunction( incremental ) ?
-                               incremental( i ) :
-                               Math.floor( i * i * i / 50000 - i * i / 500 + 17 * i / 200 + 1 );
-               }
-
-               return 1;
-       },
-
-       _precision: function() {
-               var precision = this._precisionOf( this.options.step );
-               if ( this.options.min !== null ) {
-                       precision = Math.max( precision, this._precisionOf( this.options.min ) );
-               }
-               return precision;
-       },
-
-       _precisionOf: function( num ) {
-               var str = num.toString(),
-                       decimal = str.indexOf( "." );
-               return decimal === -1 ? 0 : str.length - decimal - 1;
-       },
-
-       _adjustValue: function( value ) {
-               var base, aboveMin,
-                       options = this.options;
-
-               // make sure we're at a valid step
-               // - find out where we are relative to the base (min or 0)
-               base = options.min !== null ? options.min : 0;
-               aboveMin = value - base;
-               // - round to the nearest step
-               aboveMin = Math.round(aboveMin / options.step) * options.step;
-               // - rounding is based on 0, so adjust back to our base
-               value = base + aboveMin;
-
-               // fix precision from bad JS floating point math
-               value = parseFloat( value.toFixed( this._precision() ) );
-
-               // clamp the value
-               if ( options.max !== null && value > options.max) {
-                       return options.max;
-               }
-               if ( options.min !== null && value < options.min ) {
-                       return options.min;
-               }
-
-               return value;
-       },
-
-       _stop: function( event ) {
-               if ( !this.spinning ) {
-                       return;
-               }
-
-               clearTimeout( this.timer );
-               clearTimeout( this.mousewheelTimer );
-               this.counter = 0;
-               this.spinning = false;
-               this._trigger( "stop", event );
-       },
-
-       _setOption: function( key, value ) {
-               if ( key === "culture" || key === "numberFormat" ) {
-                       var prevValue = this._parse( this.element.val() );
-                       this.options[ key ] = value;
-                       this.element.val( this._format( prevValue ) );
-                       return;
-               }
-
-               if ( key === "max" || key === "min" || key === "step" ) {
-                       if ( typeof value === "string" ) {
-                               value = this._parse( value );
-                       }
-               }
-               if ( key === "icons" ) {
-                       this.buttons.first().find( ".ui-icon" )
-                               .removeClass( this.options.icons.up )
-                               .addClass( value.up );
-                       this.buttons.last().find( ".ui-icon" )
-                               .removeClass( this.options.icons.down )
-                               .addClass( value.down );
-               }
-
-               this._super( key, value );
-
-               if ( key === "disabled" ) {
-                       this.widget().toggleClass( "ui-state-disabled", !!value );
-                       this.element.prop( "disabled", !!value );
-                       this.buttons.button( value ? "disable" : "enable" );
-               }
-       },
-
-       _setOptions: spinner_modifier(function( options ) {
-               this._super( options );
-       }),
-
-       _parse: function( val ) {
-               if ( typeof val === "string" && val !== "" ) {
-                       val = window.Globalize && this.options.numberFormat ?
-                               Globalize.parseFloat( val, 10, this.options.culture ) : +val;
-               }
-               return val === "" || isNaN( val ) ? null : val;
-       },
-
-       _format: function( value ) {
-               if ( value === "" ) {
-                       return "";
-               }
-               return window.Globalize && this.options.numberFormat ?
-                       Globalize.format( value, this.options.numberFormat, this.options.culture ) :
-                       value;
-       },
-
-       _refresh: function() {
-               this.element.attr({
-                       "aria-valuemin": this.options.min,
-                       "aria-valuemax": this.options.max,
-                       // TODO: what should we do with values that can't be parsed?
-                       "aria-valuenow": this._parse( this.element.val() )
-               });
-       },
-
-       isValid: function() {
-               var value = this.value();
-
-               // null is invalid
-               if ( value === null ) {
-                       return false;
-               }
-
-               // if value gets adjusted, it's invalid
-               return value === this._adjustValue( value );
-       },
-
-       // update the value without triggering change
-       _value: function( value, allowAny ) {
-               var parsed;
-               if ( value !== "" ) {
-                       parsed = this._parse( value );
-                       if ( parsed !== null ) {
-                               if ( !allowAny ) {
-                                       parsed = this._adjustValue( parsed );
-                               }
-                               value = this._format( parsed );
-                       }
-               }
-               this.element.val( value );
-               this._refresh();
-       },
-
-       _destroy: function() {
-               this.element
-                       .removeClass( "ui-spinner-input" )
-                       .prop( "disabled", false )
-                       .removeAttr( "autocomplete" )
-                       .removeAttr( "role" )
-                       .removeAttr( "aria-valuemin" )
-                       .removeAttr( "aria-valuemax" )
-                       .removeAttr( "aria-valuenow" );
-               this.uiSpinner.replaceWith( this.element );
-       },
-
-       stepUp: spinner_modifier(function( steps ) {
-               this._stepUp( steps );
-       }),
-       _stepUp: function( steps ) {
-               if ( this._start() ) {
-                       this._spin( (steps || 1) * this.options.step );
-                       this._stop();
-               }
-       },
-
-       stepDown: spinner_modifier(function( steps ) {
-               this._stepDown( steps );
-       }),
-       _stepDown: function( steps ) {
-               if ( this._start() ) {
-                       this._spin( (steps || 1) * -this.options.step );
-                       this._stop();
-               }
-       },
-
-       pageUp: spinner_modifier(function( pages ) {
-               this._stepUp( (pages || 1) * this.options.page );
-       }),
-
-       pageDown: spinner_modifier(function( pages ) {
-               this._stepDown( (pages || 1) * this.options.page );
-       }),
-
-       value: function( newVal ) {
-               if ( !arguments.length ) {
-                       return this._parse( this.element.val() );
-               }
-               spinner_modifier( this._value ).call( this, newVal );
-       },
-
-       widget: function() {
-               return this.uiSpinner;
-       }
-});
-
-
-/*!
- * jQuery UI Tabs 1.11.3
- * http://jqueryui.com
- *
- * Copyright jQuery Foundation and other contributors
- * Released under the MIT license.
- * http://jquery.org/license
- *
- * http://api.jqueryui.com/tabs/
- */
-
-
-var tabs = $.widget( "ui.tabs", {
-       version: "1.11.3",
-       delay: 300,
-       options: {
-               active: null,
-               collapsible: false,
-               event: "click",
-               heightStyle: "content",
-               hide: null,
-               show: null,
-
-               // callbacks
-               activate: null,
-               beforeActivate: null,
-               beforeLoad: null,
-               load: null
-       },
-
-       _isLocal: (function() {
-               var rhash = /#.*$/;
-
-               return function( anchor ) {
-                       var anchorUrl, locationUrl;
-
-                       // support: IE7
-                       // IE7 doesn't normalize the href property when set via script (#9317)
-                       anchor = anchor.cloneNode( false );
-
-                       anchorUrl = anchor.href.replace( rhash, "" );
-                       locationUrl = location.href.replace( rhash, "" );
-
-                       // decoding may throw an error if the URL isn't UTF-8 (#9518)
-                       try {
-                               anchorUrl = decodeURIComponent( anchorUrl );
-                       } catch ( error ) {}
-                       try {
-                               locationUrl = decodeURIComponent( locationUrl );
-                       } catch ( error ) {}
-
-                       return anchor.hash.length > 1 && anchorUrl === locationUrl;
-               };
-       })(),
-
-       _create: function() {
-               var that = this,
-                       options = this.options;
-
-               this.running = false;
-
-               this.element
-                       .addClass( "ui-tabs ui-widget ui-widget-content ui-corner-all" )
-                       .toggleClass( "ui-tabs-collapsible", options.collapsible );
-
-               this._processTabs();
-               options.active = this._initialActive();
-
-               // Take disabling tabs via class attribute from HTML
-               // into account and update option properly.
-               if ( $.isArray( options.disabled ) ) {
-                       options.disabled = $.unique( options.disabled.concat(
-                               $.map( this.tabs.filter( ".ui-state-disabled" ), function( li ) {
-                                       return that.tabs.index( li );
-                               })
-                       ) ).sort();
-               }
-
-               // check for length avoids error when initializing empty list
-               if ( this.options.active !== false && this.anchors.length ) {
-                       this.active = this._findActive( options.active );
-               } else {
-                       this.active = $();
-               }
-
-               this._refresh();
-
-               if ( this.active.length ) {
-                       this.load( options.active );
-               }
-       },
-
-       _initialActive: function() {
-               var active = this.options.active,
-                       collapsible = this.options.collapsible,
-                       locationHash = location.hash.substring( 1 );
-
-               if ( active === null ) {
-                       // check the fragment identifier in the URL
-                       if ( locationHash ) {
-                               this.tabs.each(function( i, tab ) {
-                                       if ( $( tab ).attr( "aria-controls" ) === locationHash ) {
-                                               active = i;
-                                               return false;
-                                       }
-                               });
-                       }
-
-                       // check for a tab marked active via a class
-                       if ( active === null ) {
-                               active = this.tabs.index( this.tabs.filter( ".ui-tabs-active" ) );
-                       }
-
-                       // no active tab, set to false
-                       if ( active === null || active === -1 ) {
-                               active = this.tabs.length ? 0 : false;
-                       }
-               }
-
-               // handle numbers: negative, out of range
-               if ( active !== false ) {
-                       active = this.tabs.index( this.tabs.eq( active ) );
-                       if ( active === -1 ) {
-                               active = collapsible ? false : 0;
-                       }
-               }
-
-               // don't allow collapsible: false and active: false
-               if ( !collapsible && active === false && this.anchors.length ) {
-                       active = 0;
-               }
-
-               return active;
-       },
-
-       _getCreateEventData: function() {
-               return {
-                       tab: this.active,
-                       panel: !this.active.length ? $() : this._getPanelForTab( this.active )
-               };
-       },
-
-       _tabKeydown: function( event ) {
-               var focusedTab = $( this.document[0].activeElement ).closest( "li" ),
-                       selectedIndex = this.tabs.index( focusedTab ),
-                       goingForward = true;
-
-               if ( this._handlePageNav( event ) ) {
-                       return;
-               }
-
-               switch ( event.keyCode ) {
-                       case $.ui.keyCode.RIGHT:
-                       case $.ui.keyCode.DOWN:
-                               selectedIndex++;
-                               break;
-                       case $.ui.keyCode.UP:
-                       case $.ui.keyCode.LEFT:
-                               goingForward = false;
-                               selectedIndex--;
-                               break;
-                       case $.ui.keyCode.END:
-                               selectedIndex = this.anchors.length - 1;
-                               break;
-                       case $.ui.keyCode.HOME:
-                               selectedIndex = 0;
-                               break;
-                       case $.ui.keyCode.SPACE:
-                               // Activate only, no collapsing
-                               event.preventDefault();
-                               clearTimeout( this.activating );
-                               this._activate( selectedIndex );
-                               return;
-                       case $.ui.keyCode.ENTER:
-                               // Toggle (cancel delayed activation, allow collapsing)
-                               event.preventDefault();
-                               clearTimeout( this.activating );
-                               // Determine if we should collapse or activate
-                               this._activate( selectedIndex === this.options.active ? false : selectedIndex );
-                               return;
-                       default:
-                               return;
-               }
-
-               // Focus the appropriate tab, based on which key was pressed
-               event.preventDefault();
-               clearTimeout( this.activating );
-               selectedIndex = this._focusNextTab( selectedIndex, goingForward );
-
-               // Navigating with control/command key will prevent automatic activation
-               if ( !event.ctrlKey && !event.metaKey ) {
-
-                       // Update aria-selected immediately so that AT think the tab is already selected.
-                       // Otherwise AT may confuse the user by stating that they need to activate the tab,
-                       // but the tab will already be activated by the time the announcement finishes.
-                       focusedTab.attr( "aria-selected", "false" );
-                       this.tabs.eq( selectedIndex ).attr( "aria-selected", "true" );
-
-                       this.activating = this._delay(function() {
-                               this.option( "active", selectedIndex );
-                       }, this.delay );
-               }
-       },
-
-       _panelKeydown: function( event ) {
-               if ( this._handlePageNav( event ) ) {
-                       return;
-               }
-
-               // Ctrl+up moves focus to the current tab
-               if ( event.ctrlKey && event.keyCode === $.ui.keyCode.UP ) {
-                       event.preventDefault();
-                       this.active.focus();
-               }
-       },
-
-       // Alt+page up/down moves focus to the previous/next tab (and activates)
-       _handlePageNav: function( event ) {
-               if ( event.altKey && event.keyCode === $.ui.keyCode.PAGE_UP ) {
-                       this._activate( this._focusNextTab( this.options.active - 1, false ) );
-                       return true;
-               }
-               if ( event.altKey && event.keyCode === $.ui.keyCode.PAGE_DOWN ) {
-                       this._activate( this._focusNextTab( this.options.active + 1, true ) );
-                       return true;
-               }
-       },
-
-       _findNextTab: function( index, goingForward ) {
-               var lastTabIndex = this.tabs.length - 1;
-
-               function constrain() {
-                       if ( index > lastTabIndex ) {
-                               index = 0;
-                       }
-                       if ( index < 0 ) {
-                               index = lastTabIndex;
-                       }
-                       return index;
-               }
-
-               while ( $.inArray( constrain(), this.options.disabled ) !== -1 ) {
-                       index = goingForward ? index + 1 : index - 1;
-               }
-
-               return index;
-       },
-
-       _focusNextTab: function( index, goingForward ) {
-               index = this._findNextTab( index, goingForward );
-               this.tabs.eq( index ).focus();
-               return index;
-       },
-
-       _setOption: function( key, value ) {
-               if ( key === "active" ) {
-                       // _activate() will handle invalid values and update this.options
-                       this._activate( value );
-                       return;
-               }
-
-               if ( key === "disabled" ) {
-                       // don't use the widget factory's disabled handling
-                       this._setupDisabled( value );
-                       return;
-               }
-
-               this._super( key, value);
-
-               if ( key === "collapsible" ) {
-                       this.element.toggleClass( "ui-tabs-collapsible", value );
-                       // Setting collapsible: false while collapsed; open first panel
-                       if ( !value && this.options.active === false ) {
-                               this._activate( 0 );
-                       }
-               }
-
-               if ( key === "event" ) {
-                       this._setupEvents( value );
-               }
-
-               if ( key === "heightStyle" ) {
-                       this._setupHeightStyle( value );
-               }
-       },
-
-       _sanitizeSelector: function( hash ) {
-               return hash ? hash.replace( /[!"$%&'()*+,.\/:;<=>?@\[\]\^`{|}~]/g, "\\$&" ) : "";
-       },
-
-       refresh: function() {
-               var options = this.options,
-                       lis = this.tablist.children( ":has(a[href])" );
-
-               // get disabled tabs from class attribute from HTML
-               // this will get converted to a boolean if needed in _refresh()
-               options.disabled = $.map( lis.filter( ".ui-state-disabled" ), function( tab ) {
-                       return lis.index( tab );
-               });
-
-               this._processTabs();
-
-               // was collapsed or no tabs
-               if ( options.active === false || !this.anchors.length ) {
-                       options.active = false;
-                       this.active = $();
-               // was active, but active tab is gone
-               } else if ( this.active.length && !$.contains( this.tablist[ 0 ], this.active[ 0 ] ) ) {
-                       // all remaining tabs are disabled
-                       if ( this.tabs.length === options.disabled.length ) {
-                               options.active = false;
-                               this.active = $();
-                       // activate previous tab
-                       } else {
-                               this._activate( this._findNextTab( Math.max( 0, options.active - 1 ), false ) );
-                       }
-               // was active, active tab still exists
-               } else {
-                       // make sure active index is correct
-                       options.active = this.tabs.index( this.active );
-               }
-
-               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"
-                       });
-
-               // Make sure one tab is in the tab order
-               if ( !this.active.length ) {
-                       this.tabs.eq( 0 ).attr( "tabIndex", 0 );
-               } else {
-                       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"
-                               });
-               }
-       },
-
-       _processTabs: function() {
-               var that = this,
-                       prevTabs = this.tabs,
-                       prevAnchors = this.anchors,
-                       prevPanels = 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" )
-
-                       // Prevent users from focusing disabled tabs via click
-                       .delegate( "> li", "mousedown" + this.eventNamespace, function( event ) {
-                               if ( $( this ).is( ".ui-state-disabled" ) ) {
-                                       event.preventDefault();
-                               }
-                       })
-
-                       // support: IE <9
-                       // Preventing the default action in mousedown doesn't prevent IE
-                       // from focusing the element, so if the anchor gets focused, blur.
-                       // We don't have to worry about focusing the previously focused
-                       // element since clicking on a non-focusable element should focus
-                       // the body anyway.
-                       .delegate( ".ui-tabs-anchor", "focus" + this.eventNamespace, function() {
-                               if ( $( 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 $( "a", this )[ 0 ];
-                       })
-                       .addClass( "ui-tabs-anchor" )
-                       .attr({
-                               role: "presentation",
-                               tabIndex: -1
-                       });
-
-               this.panels = $();
-
-               this.anchors.each(function( i, anchor ) {
-                       var selector, panel, panelId,
-                               anchorId = $( anchor ).uniqueId().attr( "id" ),
-                               tab = $( anchor ).closest( "li" ),
-                               originalAriaControls = tab.attr( "aria-controls" );
-
-                       // inline tab
-                       if ( that._isLocal( anchor ) ) {
-                               selector = anchor.hash;
-                               panelId = selector.substring( 1 );
-                               panel = that.element.find( that._sanitizeSelector( selector ) );
-                       // remote tab
-                       } else {
-                               // If the tab doesn't already have aria-controls,
-                               // generate an id by using a throw-away element
-                               panelId = tab.attr( "aria-controls" ) || $( {} ).uniqueId()[ 0 ].id;
-                               selector = "#" + panelId;
-                               panel = that.element.find( selector );
-                               if ( !panel.length ) {
-                                       panel = that._createPanel( panelId );
-                                       panel.insertAfter( that.panels[ i - 1 ] || that.tablist );
-                               }
-                               panel.attr( "aria-live", "polite" );
-                       }
-
-                       if ( panel.length) {
-                               that.panels = that.panels.add( panel );
-                       }
-                       if ( originalAriaControls ) {
-                               tab.data( "ui-tabs-aria-controls", originalAriaControls );
-                       }
-                       tab.attr({
-                               "aria-controls": panelId,
-                               "aria-labelledby": anchorId
-                       });
-                       panel.attr( "aria-labelledby", anchorId );
-               });
-
-               this.panels
-                       .addClass( "ui-tabs-panel ui-widget-content ui-corner-bottom" )
-                       .attr( "role", "tabpanel" );
-
-               // Avoid memory leaks (#10056)
-               if ( prevTabs ) {
-                       this._off( prevTabs.not( this.tabs ) );
-                       this._off( prevAnchors.not( this.anchors ) );
-                       this._off( prevPanels.not( this.panels ) );
-               }
-       },
-
-       // allow overriding how to find the list for rare usage scenarios (#7715)
-       _getList: function() {
-               return this.tablist || this.element.find( "ol,ul" ).eq( 0 );
-       },
-
-       _createPanel: function( id ) {
-               return $( "<div>" )
-                       .attr( "id", id )
-                       .addClass( "ui-tabs-panel ui-widget-content ui-corner-bottom" )
-                       .data( "ui-tabs-destroy", true );
-       },
-
-       _setupDisabled: function( disabled ) {
-               if ( $.isArray( disabled ) ) {
-                       if ( !disabled.length ) {
-                               disabled = false;
-                       } else if ( disabled.length === this.anchors.length ) {
-                               disabled = true;
-                       }
-               }
-
-               // disable tabs
-               for ( var i = 0, li; ( li = this.tabs[ i ] ); i++ ) {
-                       if ( disabled === true || $.inArray( i, disabled ) !== -1 ) {
-                               $( li )
-                                       .addClass( "ui-state-disabled" )
-                                       .attr( "aria-disabled", "true" );
-                       } else {
-                               $( li )
-                                       .removeClass( "ui-state-disabled" )
-                                       .removeAttr( "aria-disabled" );
-                       }
-               }
-
-               this.options.disabled = disabled;
-       },
-
-       _setupEvents: function( event ) {
-               var events = {};
-               if ( event ) {
-                       $.each( event.split(" "), function( index, eventName ) {
-                               events[ eventName ] = "_eventHandler";
-                       });
-               }
-
-               this._off( this.anchors.add( this.tabs ).add( this.panels ) );
-               // Always prevent the default action, even when disabled
-               this._on( true, this.anchors, {
-                       click: function( event ) {
-                               event.preventDefault();
-                       }
-               });
-               this._on( this.anchors, events );
-               this._on( this.tabs, { keydown: "_tabKeydown" } );
-               this._on( this.panels, { keydown: "_panelKeydown" } );
-
-               this._focusable( this.tabs );
-               this._hoverable( this.tabs );
-       },
-
-       _setupHeightStyle: function( heightStyle ) {
-               var maxHeight,
-                       parent = this.element.parent();
-
-               if ( heightStyle === "fill" ) {
-                       maxHeight = parent.height();
-                       maxHeight -= this.element.outerHeight() - this.element.height();
-
-                       this.element.siblings( ":visible" ).each(function() {
-                               var elem = $( this ),
-                                       position = elem.css( "position" );
-
-                               if ( position === "absolute" || position === "fixed" ) {
-                                       return;
-                               }
-                               maxHeight -= elem.outerHeight( true );
-                       });
-
-                       this.element.children().not( this.panels ).each(function() {
-                               maxHeight -= $( this ).outerHeight( true );
-                       });
-
-                       this.panels.each(function() {
-                               $( this ).height( Math.max( 0, maxHeight -
-                                       $( this ).innerHeight() + $( this ).height() ) );
-                       })
-                       .css( "overflow", "auto" );
-               } else if ( heightStyle === "auto" ) {
-                       maxHeight = 0;
-                       this.panels.each(function() {
-                               maxHeight = Math.max( maxHeight, $( this ).height( "" ).height() );
-                       }).height( maxHeight );
-               }
-       },
-
-       _eventHandler: function( event ) {
-               var options = this.options,
-                       active = this.active,
-                       anchor = $( event.currentTarget ),
-                       tab = anchor.closest( "li" ),
-                       clickedIsActive = tab[ 0 ] === active[ 0 ],
-                       collapsing = clickedIsActive && options.collapsible,
-                       toShow = collapsing ? $() : this._getPanelForTab( tab ),
-                       toHide = !active.length ? $() : this._getPanelForTab( active ),
-                       eventData = {
-                               oldTab: active,
-                               oldPanel: toHide,
-                               newTab: collapsing ? $() : tab,
-                               newPanel: toShow
-                       };
-
-               event.preventDefault();
-
-               if ( tab.hasClass( "ui-state-disabled" ) ||
-                               // tab is already loading
-                               tab.hasClass( "ui-tabs-loading" ) ||
-                               // can't switch durning an animation
-                               this.running ||
-                               // click on active header, but not collapsible
-                               ( clickedIsActive && !options.collapsible ) ||
-                               // allow canceling activation
-                               ( this._trigger( "beforeActivate", event, eventData ) === false ) ) {
-                       return;
-               }
-
-               options.active = collapsing ? false : this.tabs.index( tab );
-
-               this.active = clickedIsActive ? $() : tab;
-               if ( this.xhr ) {
-                       this.xhr.abort();
-               }
-
-               if ( !toHide.length && !toShow.length ) {
-                       $.error( "jQuery UI Tabs: Mismatching fragment identifier." );
-               }
-
-               if ( toShow.length ) {
-                       this.load( this.tabs.index( tab ), event );
-               }
-               this._toggle( event, eventData );
-       },
-
-       // handles show/hide for selecting tabs
-       _toggle: function( event, eventData ) {
-               var that = this,
-                       toShow = eventData.newPanel,
-                       toHide = eventData.oldPanel;
-
-               this.running = true;
-
-               function complete() {
-                       that.running = false;
-                       that._trigger( "activate", event, eventData );
-               }
-
-               function show() {
-                       eventData.newTab.closest( "li" ).addClass( "ui-tabs-active ui-state-active" );
-
-                       if ( toShow.length && that.options.show ) {
-                               that._show( toShow, that.options.show, complete );
-                       } else {
-                               toShow.show();
-                               complete();
-                       }
-               }
-
-               // start out by hiding, then showing, then completing
-               if ( toHide.length && this.options.hide ) {
-                       this._hide( toHide, this.options.hide, function() {
-                               eventData.oldTab.closest( "li" ).removeClass( "ui-tabs-active ui-state-active" );
-                               show();
-                       });
-               } else {
-                       eventData.oldTab.closest( "li" ).removeClass( "ui-tabs-active ui-state-active" );
-                       toHide.hide();
-                       show();
-               }
-
-               toHide.attr( "aria-hidden", "true" );
-               eventData.oldTab.attr({
-                       "aria-selected": "false",
-                       "aria-expanded": "false"
-               });
-               // If we're switching tabs, remove the old tab from the tab order.
-               // If we're opening from collapsed state, remove the previous tab from the tab order.
-               // If we're collapsing, then keep the collapsing tab in the tab order.
-               if ( toShow.length && toHide.length ) {
-                       eventData.oldTab.attr( "tabIndex", -1 );
-               } else if ( toShow.length ) {
-                       this.tabs.filter(function() {
-                               return $( this ).attr( "tabIndex" ) === 0;
-                       })
-                       .attr( "tabIndex", -1 );
-               }
-
-               toShow.attr( "aria-hidden", "false" );
-               eventData.newTab.attr({
-                       "aria-selected": "true",
-                       "aria-expanded": "true",
-                       tabIndex: 0
-               });
-       },
-
-       _activate: function( index ) {
-               var anchor,
-                       active = this._findActive( index );
-
-               // trying to activate the already active panel
-               if ( active[ 0 ] === this.active[ 0 ] ) {
-                       return;
-               }
-
-               // trying to collapse, simulate a click on the current active header
-               if ( !active.length ) {
-                       active = this.active;
-               }
-
-               anchor = active.find( ".ui-tabs-anchor" )[ 0 ];
-               this._eventHandler({
-                       target: anchor,
-                       currentTarget: anchor,
-                       preventDefault: $.noop
-               });
-       },
-
-       _findActive: function( index ) {
-               return index === false ? $() : this.tabs.eq( index );
-       },
-
-       _getIndex: function( index ) {
-               // meta-function to give users option to provide a href string instead of a numerical index.
-               if ( typeof index === "string" ) {
-                       index = this.anchors.index( this.anchors.filter( "[href$='" + index + "']" ) );
-               }
-
-               return index;
-       },
-
-       _destroy: function() {
-               if ( 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() {
-                       if ( $.data( this, "ui-tabs-destroy" ) ) {
-                               $( this ).remove();
-                       } else {
-                               $( 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 li = $( this ),
-                               prev = li.data( "ui-tabs-aria-controls" );
-                       if ( prev ) {
-                               li
-                                       .attr( "aria-controls", prev )
-                                       .removeData( "ui-tabs-aria-controls" );
-                       } else {
-                               li.removeAttr( "aria-controls" );
-                       }
-               });
-
-               this.panels.show();
-
-               if ( this.options.heightStyle !== "content" ) {
-                       this.panels.css( "height", "" );
-               }
-       },
-
-       enable: function( index ) {
-               var disabled = this.options.disabled;
-               if ( disabled === false ) {
-                       return;
-               }
-
-               if ( index === undefined ) {
-                       disabled = false;
-               } else {
-                       index = this._getIndex( index );
-                       if ( $.isArray( disabled ) ) {
-                               disabled = $.map( disabled, function( num ) {
-                                       return num !== index ? num : null;
-                               });
-                       } else {
-                               disabled = $.map( this.tabs, function( li, num ) {
-                                       return num !== index ? num : null;
-                               });
-                       }
-               }
-               this._setupDisabled( disabled );
-       },
-
-       disable: function( index ) {
-               var disabled = this.options.disabled;
-               if ( disabled === true ) {
-                       return;
-               }
-
-               if ( index === undefined ) {
-                       disabled = true;
-               } else {
-                       index = this._getIndex( index );
-                       if ( $.inArray( index, disabled ) !== -1 ) {
-                               return;
-                       }
-                       if ( $.isArray( disabled ) ) {
-                               disabled = $.merge( [ index ], disabled ).sort();
-                       } else {
-                               disabled = [ index ];
-                       }
-               }
-               this._setupDisabled( disabled );
-       },
-
-       load: function( index, event ) {
-               index = this._getIndex( index );
-               var that = this,
-                       tab = this.tabs.eq( index ),
-                       anchor = tab.find( ".ui-tabs-anchor" ),
-                       panel = this._getPanelForTab( tab ),
-                       eventData = {
-                               tab: tab,
-                               panel: panel
-                       };
-
-               // not remote
-               if ( this._isLocal( anchor[ 0 ] ) ) {
-                       return;
-               }
-
-               this.xhr = $.ajax( this._ajaxSettings( anchor, event, eventData ) );
-
-               // support: jQuery <1.8
-               // jQuery <1.8 returns false if the request is canceled in beforeSend,
-               // but as of 1.8, $.ajax() always returns a jqXHR object.
-               if ( this.xhr && this.xhr.statusText !== "canceled" ) {
-                       tab.addClass( "ui-tabs-loading" );
-                       panel.attr( "aria-busy", "true" );
-
-                       this.xhr
-                               .success(function( response ) {
-                                       // support: jQuery <1.8
-                                       // http://bugs.jquery.com/ticket/11778
-                                       setTimeout(function() {
-                                               panel.html( response );
-                                               that._trigger( "load", event, eventData );
-                                       }, 1 );
-                               })
-                               .complete(function( jqXHR, status ) {
-                                       // support: jQuery <1.8
-                                       // http://bugs.jquery.com/ticket/11778
-                                       setTimeout(function() {
-                                               if ( status === "abort" ) {
-                                                       that.panels.stop( false, true );
-                                               }
-
-                                               tab.removeClass( "ui-tabs-loading" );
-                                               panel.removeAttr( "aria-busy" );
-
-                                               if ( jqXHR === that.xhr ) {
-                                                       delete that.xhr;
-                                               }
-                                       }, 1 );
-                               });
-               }
-       },
-
-       _ajaxSettings: function( anchor, event, eventData ) {
-               var that = this;
-               return {
-                       url: anchor.attr( "href" ),
-                       beforeSend: function( jqXHR, settings ) {
-                               return that._trigger( "beforeLoad", event,
-                                       $.extend( { jqXHR: jqXHR, ajaxSettings: settings }, eventData ) );
-                       }
-               };
-       },
-
-       _getPanelForTab: function( tab ) {
-               var id = $( tab ).attr( "aria-controls" );
-               return this.element.find( this._sanitizeSelector( "#" + id ) );
-       }
-});
-
-
-/*!
- * jQuery UI Tooltip 1.11.3
- * http://jqueryui.com
- *
- * Copyright jQuery Foundation and other contributors
- * Released under the MIT license.
- * http://jquery.org/license
- *
- * http://api.jqueryui.com/tooltip/
- */
-
-
-var tooltip = $.widget( "ui.tooltip", {
-       version: "1.11.3",
-       options: {
-               content: function() {
-                       // support: IE<9, Opera in jQuery <1.7
-                       // .text() can't accept undefined, so coerce to a string
-                       var title = $( this ).attr( "title" ) || "";
-                       // Escape title, since we're going from an attribute to raw HTML
-                       return $( "<a>" ).text( title ).html();
-               },
-               hide: true,
-               // Disabled elements have inconsistent behavior across browsers (#8661)
-               items: "[title]:not([disabled])",
-               position: {
-                       my: "left top+15",
-                       at: "left bottom",
-                       collision: "flipfit flip"
-               },
-               show: true,
-               tooltipClass: null,
-               track: false,
-
-               // callbacks
-               close: null,
-               open: null
-       },
-
-       _addDescribedBy: function( elem, id ) {
-               var describedby = (elem.attr( "aria-describedby" ) || "").split( /\s+/ );
-               describedby.push( id );
-               elem
-                       .data( "ui-tooltip-id", id )
-                       .attr( "aria-describedby", $.trim( describedby.join( " " ) ) );
-       },
-
-       _removeDescribedBy: function( elem ) {
-               var id = elem.data( "ui-tooltip-id" ),
-                       describedby = (elem.attr( "aria-describedby" ) || "").split( /\s+/ ),
-                       index = $.inArray( id, describedby );
-
-               if ( index !== -1 ) {
-                       describedby.splice( index, 1 );
-               }
-
-               elem.removeData( "ui-tooltip-id" );
-               describedby = $.trim( describedby.join( " " ) );
-               if ( describedby ) {
-                       elem.attr( "aria-describedby", describedby );
-               } else {
-                       elem.removeAttr( "aria-describedby" );
-               }
-       },
-
-       _create: function() {
-               this._on({
-                       mouseover: "open",
-                       focusin: "open"
-               });
-
-               // IDs of generated tooltips, needed for destroy
-               this.tooltips = {};
-
-               // IDs of parent tooltips where we removed the title attribute
-               this.parents = {};
-
-               if ( this.options.disabled ) {
-                       this._disable();
-               }
-
-               // Append the aria-live region so tooltips announce correctly
-               this.liveRegion = $( "<div>" )
-                       .attr({
-                               role: "log",
-                               "aria-live": "assertive",
-                               "aria-relevant": "additions"
-                       })
-                       .addClass( "ui-helper-hidden-accessible" )
-                       .appendTo( this.document[ 0 ].body );
-       },
-
-       _setOption: function( key, value ) {
-               var that = this;
-
-               if ( key === "disabled" ) {
-                       this[ value ? "_disable" : "_enable" ]();
-                       this.options[ key ] = value;
-                       // disable element style changes
-                       return;
-               }
-
-               this._super( key, value );
-
-               if ( key === "content" ) {
-                       $.each( this.tooltips, function( id, tooltipData ) {
-                               that._updateContent( tooltipData.element );
-                       });
-               }
-       },
-
-       _disable: function() {
-               var that = this;
-
-               // close open tooltips
-               $.each( this.tooltips, function( id, tooltipData ) {
-                       var event = $.Event( "blur" );
-                       event.target = event.currentTarget = tooltipData.element[ 0 ];
-                       that.close( event, true );
-               });
-
-               // remove title attributes to prevent native tooltips
-               this.element.find( this.options.items ).addBack().each(function() {
-                       var element = $( this );
-                       if ( element.is( "[title]" ) ) {
-                               element
-                                       .data( "ui-tooltip-title", element.attr( "title" ) )
-                                       .removeAttr( "title" );
-                       }
-               });
-       },
-
-       _enable: function() {
-               // restore title attributes
-               this.element.find( this.options.items ).addBack().each(function() {
-                       var element = $( this );
-                       if ( element.data( "ui-tooltip-title" ) ) {
-                               element.attr( "title", element.data( "ui-tooltip-title" ) );
-                       }
-               });
-       },
-
-       open: function( event ) {
-               var that = this,
-                       target = $( event ? event.target : this.element )
-                               // we need closest here due to mouseover bubbling,
-                               // but always pointing at the same event target
-                               .closest( this.options.items );
-
-               // No element to show a tooltip for or the tooltip is already open
-               if ( !target.length || target.data( "ui-tooltip-id" ) ) {
-                       return;
-               }
-
-               if ( target.attr( "title" ) ) {
-                       target.data( "ui-tooltip-title", target.attr( "title" ) );
-               }
-
-               target.data( "ui-tooltip-open", true );
-
-               // kill parent tooltips, custom or native, for hover
-               if ( event && event.type === "mouseover" ) {
-                       target.parents().each(function() {
-                               var parent = $( this ),
-                                       blurEvent;
-                               if ( parent.data( "ui-tooltip-open" ) ) {
-                                       blurEvent = $.Event( "blur" );
-                                       blurEvent.target = blurEvent.currentTarget = this;
-                                       that.close( blurEvent, true );
-                               }
-                               if ( parent.attr( "title" ) ) {
-                                       parent.uniqueId();
-                                       that.parents[ this.id ] = {
-                                               element: this,
-                                               title: parent.attr( "title" )
-                                       };
-                                       parent.attr( "title", "" );
-                               }
-                       });
-               }
-
-               this._updateContent( target, event );
-       },
-
-       _updateContent: function( target, event ) {
-               var content,
-                       contentOption = this.options.content,
-                       that = this,
-                       eventType = event ? event.type : null;
-
-               if ( typeof contentOption === "string" ) {
-                       return this._open( event, target, contentOption );
-               }
-
-               content = contentOption.call( target[0], function( response ) {
-                       // ignore async response if tooltip was closed already
-                       if ( !target.data( "ui-tooltip-open" ) ) {
-                               return;
-                       }
-                       // IE may instantly serve a cached response for ajax requests
-                       // delay this call to _open so the other call to _open runs first
-                       that._delay(function() {
-                               // jQuery creates a special event for focusin when it doesn't
-                               // exist natively. To improve performance, the native event
-                               // object is reused and the type is changed. Therefore, we can't
-                               // rely on the type being correct after the event finished
-                               // bubbling, so we set it back to the previous value. (#8740)
-                               if ( event ) {
-                                       event.type = eventType;
-                               }
-                               this._open( event, target, response );
-                       });
-               });
-               if ( content ) {
-                       this._open( event, target, content );
-               }
-       },
-
-       _open: function( event, target, content ) {
-               var tooltipData, tooltip, events, delayedShow, a11yContent,
-                       positionOption = $.extend( {}, this.options.position );
-
-               if ( !content ) {
-                       return;
-               }
-
-               // Content can be updated multiple times. If the tooltip already
-               // exists, then just update the content and bail.
-               tooltipData = this._find( target );
-               if ( tooltipData ) {
-                       tooltipData.tooltip.find( ".ui-tooltip-content" ).html( content );
-                       return;
-               }
-
-               // if we have a title, clear it to prevent the native tooltip
-               // we have to check first to avoid defining a title if none exists
-               // (we don't want to cause an element to start matching [title])
-               //
-               // We use removeAttr only for key events, to allow IE to export the correct
-               // accessible attributes. For mouse events, set to empty string to avoid
-               // native tooltip showing up (happens only when removing inside mouseover).
-               if ( target.is( "[title]" ) ) {
-                       if ( event && event.type === "mouseover" ) {
-                               target.attr( "title", "" );
-                       } else {
-                               target.removeAttr( "title" );
-                       }
-               }
-
-               tooltipData = this._tooltip( target );
-               tooltip = tooltipData.tooltip;
-               this._addDescribedBy( target, tooltip.attr( "id" ) );
-               tooltip.find( ".ui-tooltip-content" ).html( content );
-
-               // Support: Voiceover on OS X, JAWS on IE <= 9
-               // JAWS announces deletions even when aria-relevant="additions"
-               // Voiceover will sometimes re-read the entire log region's contents from the beginning
-               this.liveRegion.children().hide();
-               if ( content.clone ) {
-                       a11yContent = content.clone();
-                       a11yContent.removeAttr( "id" ).find( "[id]" ).removeAttr( "id" );
-               } else {
-                       a11yContent = content;
-               }
-               $( "<div>" ).html( a11yContent ).appendTo( this.liveRegion );
-
-               function position( event ) {
-                       positionOption.of = event;
-                       if ( tooltip.is( ":hidden" ) ) {
-                               return;
-                       }
-                       tooltip.position( positionOption );
-               }
-               if ( this.options.track && event && /^mouse/.test( event.type ) ) {
-                       this._on( this.document, {
-                               mousemove: position
-                       });
-                       // trigger once to override element-relative positioning
-                       position( event );
-               } else {
-                       tooltip.position( $.extend({
-                               of: target
-                       }, this.options.position ) );
-               }
-
-               tooltip.hide();
-
-               this._show( tooltip, this.options.show );
-               // Handle tracking tooltips that are shown with a delay (#8644). As soon
-               // as the tooltip is visible, position the tooltip using the most recent
-               // event.
-               if ( this.options.show && this.options.show.delay ) {
-                       delayedShow = this.delayedShow = setInterval(function() {
-                               if ( tooltip.is( ":visible" ) ) {
-                                       position( positionOption.of );
-                                       clearInterval( delayedShow );
-                               }
-                       }, $.fx.interval );
-               }
-
-               this._trigger( "open", event, { tooltip: tooltip } );
-
-               events = {
-                       keyup: function( event ) {
-                               if ( event.keyCode === $.ui.keyCode.ESCAPE ) {
-                                       var fakeEvent = $.Event(event);
-                                       fakeEvent.currentTarget = target[0];
-                                       this.close( fakeEvent, true );
-                               }
-                       }
-               };
-
-               // Only bind remove handler for delegated targets. Non-delegated
-               // tooltips will handle this in destroy.
-               if ( target[ 0 ] !== this.element[ 0 ] ) {
-                       events.remove = function() {
-                               this._removeTooltip( tooltip );
-                       };
-               }
-
-               if ( !event || event.type === "mouseover" ) {
-                       events.mouseleave = "close";
-               }
-               if ( !event || event.type === "focusin" ) {
-                       events.focusout = "close";
-               }
-               this._on( true, target, events );
-       },
-
-       close: function( event ) {
-               var tooltip,
-                       that = this,
-                       target = $( event ? event.currentTarget : this.element ),
-                       tooltipData = this._find( target );
-
-               // The tooltip may already be closed
-               if ( !tooltipData ) {
-                       return;
-               }
-
-               tooltip = tooltipData.tooltip;
-
-               // disabling closes the tooltip, so we need to track when we're closing
-               // to avoid an infinite loop in case the tooltip becomes disabled on close
-               if ( tooltipData.closing ) {
-                       return;
-               }
-
-               // Clear the interval for delayed tracking tooltips
-               clearInterval( this.delayedShow );
-
-               // only set title if we had one before (see comment in _open())
-               // If the title attribute has changed since open(), don't restore
-               if ( target.data( "ui-tooltip-title" ) && !target.attr( "title" ) ) {
-                       target.attr( "title", target.data( "ui-tooltip-title" ) );
-               }
-
-               this._removeDescribedBy( target );
-
-               tooltipData.hiding = true;
-               tooltip.stop( true );
-               this._hide( tooltip, this.options.hide, function() {
-                       that._removeTooltip( $( this ) );
-               });
-
-               target.removeData( "ui-tooltip-open" );
-               this._off( target, "mouseleave focusout keyup" );
-
-               // Remove 'remove' binding only on delegated targets
-               if ( target[ 0 ] !== this.element[ 0 ] ) {
-                       this._off( target, "remove" );
-               }
-               this._off( this.document, "mousemove" );
-
-               if ( event && event.type === "mouseleave" ) {
-                       $.each( this.parents, function( id, parent ) {
-                               $( parent.element ).attr( "title", parent.title );
-                               delete that.parents[ id ];
-                       });
-               }
-
-               tooltipData.closing = true;
-               this._trigger( "close", event, { tooltip: tooltip } );
-               if ( !tooltipData.hiding ) {
-                       tooltipData.closing = false;
-               }
-       },
-
-       _tooltip: function( element ) {
-               var tooltip = $( "<div>" )
-                               .attr( "role", "tooltip" )
-                               .addClass( "ui-tooltip ui-widget ui-corner-all ui-widget-content " +
-                                       ( this.options.tooltipClass || "" ) ),
-                       id = tooltip.uniqueId().attr( "id" );
-
-               $( "<div>" )
-                       .addClass( "ui-tooltip-content" )
-                       .appendTo( tooltip );
-
-               tooltip.appendTo( this.document[0].body );
-
-               return this.tooltips[ id ] = {
-                       element: element,
-                       tooltip: tooltip
-               };
-       },
-
-       _find: function( target ) {
-               var id = target.data( "ui-tooltip-id" );
-               return id ? this.tooltips[ id ] : null;
-       },
-
-       _removeTooltip: function( tooltip ) {
-               tooltip.remove();
-               delete this.tooltips[ tooltip.attr( "id" ) ];
-       },
-
-       _destroy: function() {
-               var that = this;
-
-               // close open tooltips
-               $.each( this.tooltips, function( id, tooltipData ) {
-                       // Delegate to close method to handle common cleanup
-                       var event = $.Event( "blur" ),
-                               element = tooltipData.element;
-                       event.target = event.currentTarget = element[ 0 ];
-                       that.close( event, true );
-
-                       // Remove immediately; destroying an open tooltip doesn't use the
-                       // hide animation
-                       $( "#" + id ).remove();
-
-                       // Restore the title
-                       if ( element.data( "ui-tooltip-title" ) ) {
-                               // If the title attribute has changed since open(), don't restore
-                               if ( !element.attr( "title" ) ) {
-                                       element.attr( "title", element.data( "ui-tooltip-title" ) );
-                               }
-                               element.removeData( "ui-tooltip-title" );
-                       }
-               });
-               this.liveRegion.remove();
-       }
-});
-
-
-
-}));
\ No newline at end of file
diff --git a/src/main/resources/META-INF/resources/designer/lib/jquery-ui-1.11.3/jquery-ui.min.css b/src/main/resources/META-INF/resources/designer/lib/jquery-ui-1.11.3/jquery-ui.min.css
deleted file mode 100644 (file)
index 3d024c3..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-/*! jQuery UI - v1.11.3 - 2015-02-12
-* http://jqueryui.com
-* Includes: core.css, accordion.css, autocomplete.css, button.css, datepicker.css, dialog.css, draggable.css, menu.css, progressbar.css, resizable.css, selectable.css, selectmenu.css, slider.css, sortable.css, spinner.css, tabs.css, tooltip.css, theme.css
-* To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Arial%2CHelvetica%2Csans-serif&fsDefault=1em&fwDefault=normal&cornerRadius=3px&bgColorHeader=e9e9e9&bgTextureHeader=flat&borderColorHeader=dddddd&fcHeader=333333&iconColorHeader=444444&bgColorContent=ffffff&bgTextureContent=flat&borderColorContent=dddddd&fcContent=333333&iconColorContent=444444&bgColorDefault=f6f6f6&bgTextureDefault=flat&borderColorDefault=c5c5c5&fcDefault=454545&iconColorDefault=777777&bgColorHover=ededed&bgTextureHover=flat&borderColorHover=cccccc&fcHover=2b2b2b&iconColorHover=555555&bgColorActive=007fff&bgTextureActive=flat&borderColorActive=003eff&fcActive=ffffff&iconColorActive=ffffff&bgColorHighlight=fffa90&bgTextureHighlight=flat&borderColorHighlight=dad55e&fcHighlight=777620&iconColorHighlight=777620&bgColorError=fddfdf&bgTextureError=flat&borderColorError=f1a899&fcError=5f3f3f&iconColorError=cc0000&bgColorOverlay=aaaaaa&bgTextureOverlay=flat&bgImgOpacityOverlay=0&opacityOverlay=30&bgColorShadow=666666&bgTextureShadow=flat&bgImgOpacityShadow=0&opacityShadow=30&thicknessShadow=5px&offsetTopShadow=0px&offsetLeftShadow=0px&cornerRadiusShadow=8px
-* Copyright jQuery Foundation and other contributors; Licensed MIT */
-
-.ui-helper-hidden{display:none}.ui-helper-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.ui-helper-reset{margin:0;padding:0;border:0;outline:0;line-height:1.3;text-decoration:none;font-size:100%;list-style:none}.ui-helper-clearfix:before,.ui-helper-clearfix:after{content:"";display:table;border-collapse:collapse}.ui-helper-clearfix:after{clear:both}.ui-helper-clearfix{min-height:0}.ui-helper-zfix{width:100%;height:100%;top:0;left:0;position:absolute;opacity:0;filter:Alpha(Opacity=0)}.ui-front{z-index:100}.ui-state-disabled{cursor:default!important}.ui-icon{display:block;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat}.ui-widget-overlay{position:fixed;top:0;left:0;width:100%;height:100%}.ui-accordion .ui-accordion-header{display:block;cursor:pointer;position:relative;margin:2px 0 0 0;padding:.5em .5em .5em .7em;min-height:0;font-size:100%}.ui-accordion .ui-accordion-icons{padding-left:2.2em}.ui-accordion .ui-accordion-icons .ui-accordion-icons{padding-left:2.2em}.ui-accordion .ui-accordion-header .ui-accordion-header-icon{position:absolute;left:.5em;top:50%;margin-top:-8px}.ui-accordion .ui-accordion-content{padding:1em 2.2em;border-top:0;overflow:auto}.ui-autocomplete{position:absolute;top:0;left:0;cursor:default}.ui-button{display:inline-block;position:relative;padding:0;line-height:normal;margin-right:.1em;cursor:pointer;vertical-align:middle;text-align:center;overflow:visible}.ui-button,.ui-button:link,.ui-button:visited,.ui-button:hover,.ui-button:active{text-decoration:none}.ui-button-icon-only{width:2.2em}button.ui-button-icon-only{width:2.4em}.ui-button-icons-only{width:3.4em}button.ui-button-icons-only{width:3.7em}.ui-button .ui-button-text{display:block;line-height:normal}.ui-button-text-only .ui-button-text{padding:.4em 1em}.ui-button-icon-only .ui-button-text,.ui-button-icons-only .ui-button-text{padding:.4em;text-indent:-9999999px}.ui-button-text-icon-primary .ui-button-text,.ui-button-text-icons .ui-button-text{padding:.4em 1em .4em 2.1em}.ui-button-text-icon-secondary .ui-button-text,.ui-button-text-icons .ui-button-text{padding:.4em 2.1em .4em 1em}.ui-button-text-icons .ui-button-text{padding-left:2.1em;padding-right:2.1em}input.ui-button{padding:.4em 1em}.ui-button-icon-only .ui-icon,.ui-button-text-icon-primary .ui-icon,.ui-button-text-icon-secondary .ui-icon,.ui-button-text-icons .ui-icon,.ui-button-icons-only .ui-icon{position:absolute;top:50%;margin-top:-8px}.ui-button-icon-only .ui-icon{left:50%;margin-left:-8px}.ui-button-text-icon-primary .ui-button-icon-primary,.ui-button-text-icons .ui-button-icon-primary,.ui-button-icons-only .ui-button-icon-primary{left:.5em}.ui-button-text-icon-secondary .ui-button-icon-secondary,.ui-button-text-icons .ui-button-icon-secondary,.ui-button-icons-only .ui-button-icon-secondary{right:.5em}.ui-buttonset{margin-right:7px}.ui-buttonset .ui-button{margin-left:0;margin-right:-.3em}input.ui-button::-moz-focus-inner,button.ui-button::-moz-focus-inner{border:0;padding:0}.ui-datepicker{width:17em;padding:.2em .2em 0;display:none}.ui-datepicker .ui-datepicker-header{position:relative;padding:.2em 0}.ui-datepicker .ui-datepicker-prev,.ui-datepicker .ui-datepicker-next{position:absolute;top:2px;width:1.8em;height:1.8em}.ui-datepicker .ui-datepicker-prev-hover,.ui-datepicker .ui-datepicker-next-hover{top:1px}.ui-datepicker .ui-datepicker-prev{left:2px}.ui-datepicker .ui-datepicker-next{right:2px}.ui-datepicker .ui-datepicker-prev-hover{left:1px}.ui-datepicker .ui-datepicker-next-hover{right:1px}.ui-datepicker .ui-datepicker-prev span,.ui-datepicker .ui-datepicker-next span{display:block;position:absolute;left:50%;margin-left:-8px;top:50%;margin-top:-8px}.ui-datepicker .ui-datepicker-title{margin:0 2.3em;line-height:1.8em;text-align:center}.ui-datepicker .ui-datepicker-title select{font-size:1em;margin:1px 0}.ui-datepicker select.ui-datepicker-month,.ui-datepicker select.ui-datepicker-year{width:45%}.ui-datepicker table{width:100%;font-size:.9em;border-collapse:collapse;margin:0 0 .4em}.ui-datepicker th{padding:.7em .3em;text-align:center;font-weight:bold;border:0}.ui-datepicker td{border:0;padding:1px}.ui-datepicker td span,.ui-datepicker td a{display:block;padding:.2em;text-align:right;text-decoration:none}.ui-datepicker .ui-datepicker-buttonpane{background-image:none;margin:.7em 0 0 0;padding:0 .2em;border-left:0;border-right:0;border-bottom:0}.ui-datepicker .ui-datepicker-buttonpane button{float:right;margin:.5em .2em .4em;cursor:pointer;padding:.2em .6em .3em .6em;width:auto;overflow:visible}.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current{float:left}.ui-datepicker.ui-datepicker-multi{width:auto}.ui-datepicker-multi .ui-datepicker-group{float:left}.ui-datepicker-multi .ui-datepicker-group table{width:95%;margin:0 auto .4em}.ui-datepicker-multi-2 .ui-datepicker-group{width:50%}.ui-datepicker-multi-3 .ui-datepicker-group{width:33.3%}.ui-datepicker-multi-4 .ui-datepicker-group{width:25%}.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header{border-left-width:0}.ui-datepicker-multi .ui-datepicker-buttonpane{clear:left}.ui-datepicker-row-break{clear:both;width:100%;font-size:0}.ui-datepicker-rtl{direction:rtl}.ui-datepicker-rtl .ui-datepicker-prev{right:2px;left:auto}.ui-datepicker-rtl .ui-datepicker-next{left:2px;right:auto}.ui-datepicker-rtl .ui-datepicker-prev:hover{right:1px;left:auto}.ui-datepicker-rtl .ui-datepicker-next:hover{left:1px;right:auto}.ui-datepicker-rtl .ui-datepicker-buttonpane{clear:right}.ui-datepicker-rtl .ui-datepicker-buttonpane button{float:left}.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current,.ui-datepicker-rtl .ui-datepicker-group{float:right}.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header{border-right-width:0;border-left-width:1px}.ui-dialog{overflow:hidden;position:absolute;top:0;left:0;padding:.2em;outline:0}.ui-dialog .ui-dialog-titlebar{padding:.4em 1em;position:relative}.ui-dialog .ui-dialog-title{float:left;margin:.1em 0;white-space:nowrap;width:90%;overflow:hidden;text-overflow:ellipsis}.ui-dialog .ui-dialog-titlebar-close{position:absolute;right:.3em;top:50%;width:20px;margin:-10px 0 0 0;padding:1px;height:20px}.ui-dialog .ui-dialog-content{position:relative;border:0;padding:.5em 1em;background:none;overflow:auto}.ui-dialog .ui-dialog-buttonpane{text-align:left;border-width:1px 0 0 0;background-image:none;margin-top:.5em;padding:.3em 1em .5em .4em}.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset{float:right}.ui-dialog .ui-dialog-buttonpane button{margin:.5em .4em .5em 0;cursor:pointer}.ui-dialog .ui-resizable-se{width:12px;height:12px;right:-5px;bottom:-5px;background-position:16px 16px}.ui-draggable .ui-dialog-titlebar{cursor:move}.ui-draggable-handle{-ms-touch-action:none;touch-action:none}.ui-menu{list-style:none;padding:0;margin:0;display:block;outline:none}.ui-menu .ui-menu{position:absolute}.ui-menu .ui-menu-item{position:relative;margin:0;padding:3px 1em 3px .4em;cursor:pointer;min-height:0;list-style-image:url("data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7")}.ui-menu .ui-menu-divider{margin:5px 0;height:0;font-size:0;line-height:0;border-width:1px 0 0 0}.ui-menu .ui-state-focus,.ui-menu .ui-state-active{margin:-1px}.ui-menu-icons{position:relative}.ui-menu-icons .ui-menu-item{padding-left:2em}.ui-menu .ui-icon{position:absolute;top:0;bottom:0;left:.2em;margin:auto 0}.ui-menu .ui-menu-icon{left:auto;right:0}.ui-progressbar{height:2em;text-align:left;overflow:hidden}.ui-progressbar .ui-progressbar-value{margin:-1px;height:100%}.ui-progressbar .ui-progressbar-overlay{background:url("data:image/gif;base64,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");height:100%;filter:alpha(opacity=25);opacity:0.25}.ui-progressbar-indeterminate .ui-progressbar-value{background-image:none}.ui-resizable{position:relative}.ui-resizable-handle{position:absolute;font-size:0.1px;display:block;-ms-touch-action:none;touch-action:none}.ui-resizable-disabled .ui-resizable-handle,.ui-resizable-autohide .ui-resizable-handle{display:none}.ui-resizable-n{cursor:n-resize;height:7px;width:100%;top:-5px;left:0}.ui-resizable-s{cursor:s-resize;height:7px;width:100%;bottom:-5px;left:0}.ui-resizable-e{cursor:e-resize;width:7px;right:-5px;top:0;height:100%}.ui-resizable-w{cursor:w-resize;width:7px;left:-5px;top:0;height:100%}.ui-resizable-se{cursor:se-resize;width:12px;height:12px;right:1px;bottom:1px}.ui-resizable-sw{cursor:sw-resize;width:9px;height:9px;left:-5px;bottom:-5px}.ui-resizable-nw{cursor:nw-resize;width:9px;height:9px;left:-5px;top:-5px}.ui-resizable-ne{cursor:ne-resize;width:9px;height:9px;right:-5px;top:-5px}.ui-selectable{-ms-touch-action:none;touch-action:none}.ui-selectable-helper{position:absolute;z-index:100;border:1px dotted black}.ui-selectmenu-menu{padding:0;margin:0;position:absolute;top:0;left:0;display:none}.ui-selectmenu-menu .ui-menu{overflow:auto;overflow-x:hidden;padding-bottom:1px}.ui-selectmenu-menu .ui-menu .ui-selectmenu-optgroup{font-size:1em;font-weight:bold;line-height:1.5;padding:2px 0.4em;margin:0.5em 0 0 0;height:auto;border:0}.ui-selectmenu-open{display:block}.ui-selectmenu-button{display:inline-block;overflow:hidden;position:relative;text-decoration:none;cursor:pointer}.ui-selectmenu-button span.ui-icon{right:0.5em;left:auto;margin-top:-8px;position:absolute;top:50%}.ui-selectmenu-button span.ui-selectmenu-text{text-align:left;padding:0.4em 2.1em 0.4em 1em;display:block;line-height:1.4;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ui-slider{position:relative;text-align:left}.ui-slider .ui-slider-handle{position:absolute;z-index:2;width:1.2em;height:1.2em;cursor:default;-ms-touch-action:none;touch-action:none}.ui-slider .ui-slider-range{position:absolute;z-index:1;font-size:.7em;display:block;border:0;background-position:0 0}.ui-slider.ui-state-disabled .ui-slider-handle,.ui-slider.ui-state-disabled .ui-slider-range{filter:inherit}.ui-slider-horizontal{height:.8em}.ui-slider-horizontal .ui-slider-handle{top:-.3em;margin-left:-.6em}.ui-slider-horizontal .ui-slider-range{top:0;height:100%}.ui-slider-horizontal .ui-slider-range-min{left:0}.ui-slider-horizontal .ui-slider-range-max{right:0}.ui-slider-vertical{width:.8em;height:100px}.ui-slider-vertical .ui-slider-handle{left:-.3em;margin-left:0;margin-bottom:-.6em}.ui-slider-vertical .ui-slider-range{left:0;width:100%}.ui-slider-vertical .ui-slider-range-min{bottom:0}.ui-slider-vertical .ui-slider-range-max{top:0}.ui-sortable-handle{-ms-touch-action:none;touch-action:none}.ui-spinner{position:relative;display:inline-block;overflow:hidden;padding:0;vertical-align:middle}.ui-spinner-input{border:none;background:none;color:inherit;padding:0;margin:.2em 0;vertical-align:middle;margin-left:.4em;margin-right:22px}.ui-spinner-button{width:16px;height:50%;font-size:.5em;padding:0;margin:0;text-align:center;position:absolute;cursor:default;display:block;overflow:hidden;right:0}.ui-spinner a.ui-spinner-button{border-top:none;border-bottom:none;border-right:none}.ui-spinner .ui-icon{position:absolute;margin-top:-8px;top:50%;left:0}.ui-spinner-up{top:0}.ui-spinner-down{bottom:0}.ui-spinner .ui-icon-triangle-1-s{background-position:-65px -16px}.ui-tabs{position:relative;padding:.2em}.ui-tabs .ui-tabs-nav{margin:0;padding:.2em .2em 0}.ui-tabs .ui-tabs-nav li{list-style:none;float:left;position:relative;top:0;margin:1px .2em 0 0;border-bottom-width:0;padding:0;white-space:nowrap}.ui-tabs .ui-tabs-nav .ui-tabs-anchor{float:left;padding:.5em 1em;text-decoration:none}.ui-tabs .ui-tabs-nav li.ui-tabs-active{margin-bottom:-1px;padding-bottom:1px}.ui-tabs .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor,.ui-tabs .ui-tabs-nav li.ui-state-disabled .ui-tabs-anchor,.ui-tabs .ui-tabs-nav li.ui-tabs-loading .ui-tabs-anchor{cursor:text}.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor{cursor:pointer}.ui-tabs .ui-tabs-panel{display:block;border-width:0;padding:1em 1.4em;background:none}.ui-tooltip{padding:8px;position:absolute;z-index:9999;max-width:300px;-webkit-box-shadow:0 0 5px #aaa;box-shadow:0 0 5px #aaa}body .ui-tooltip{border-width:2px}.ui-widget{font-family:Arial,Helvetica,sans-serif;font-size:1em}.ui-widget .ui-widget{font-size:1em}.ui-widget input,.ui-widget select,.ui-widget textarea,.ui-widget button{font-family:Arial,Helvetica,sans-serif;font-size:1em}.ui-widget-content{border:1px solid #ddd;background:#fff;color:#333}.ui-widget-content a{color:#333}.ui-widget-header{border:1px solid #ddd;background:#e9e9e9;color:#333;font-weight:bold}.ui-widget-header a{color:#333}.ui-state-default,.ui-widget-content .ui-state-default,.ui-widget-header .ui-state-default{border:1px solid #c5c5c5;background:#f6f6f6;font-weight:normal;color:#454545}.ui-state-default a,.ui-state-default a:link,.ui-state-default a:visited{color:#454545;text-decoration:none}.ui-state-hover,.ui-widget-content .ui-state-hover,.ui-widget-header .ui-state-hover,.ui-state-focus,.ui-widget-content .ui-state-focus,.ui-widget-header .ui-state-focus{border:1px solid #ccc;background:#ededed;font-weight:normal;color:#2b2b2b}.ui-state-hover a,.ui-state-hover a:hover,.ui-state-hover a:link,.ui-state-hover a:visited,.ui-state-focus a,.ui-state-focus a:hover,.ui-state-focus a:link,.ui-state-focus a:visited{color:#2b2b2b;text-decoration:none}.ui-state-active,.ui-widget-content .ui-state-active,.ui-widget-header .ui-state-active{border:1px solid #003eff;background:#007fff;font-weight:normal;color:#fff}.ui-state-active a,.ui-state-active a:link,.ui-state-active a:visited{color:#fff;text-decoration:none}.ui-state-highlight,.ui-widget-content .ui-state-highlight,.ui-widget-header .ui-state-highlight{border:1px solid #dad55e;background:#fffa90;color:#777620}.ui-state-highlight a,.ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a{color:#777620}.ui-state-error,.ui-widget-content .ui-state-error,.ui-widget-header .ui-state-error{border:1px solid #f1a899;background:#fddfdf;color:#5f3f3f}.ui-state-error a,.ui-widget-content .ui-state-error a,.ui-widget-header .ui-state-error a{color:#5f3f3f}.ui-state-error-text,.ui-widget-content .ui-state-error-text,.ui-widget-header .ui-state-error-text{color:#5f3f3f}.ui-priority-primary,.ui-widget-content .ui-priority-primary,.ui-widget-header .ui-priority-primary{font-weight:bold}.ui-priority-secondary,.ui-widget-content .ui-priority-secondary,.ui-widget-header .ui-priority-secondary{opacity:.7;filter:Alpha(Opacity=70);font-weight:normal}.ui-state-disabled,.ui-widget-content .ui-state-disabled,.ui-widget-header .ui-state-disabled{opacity:.35;filter:Alpha(Opacity=35);background-image:none}.ui-state-disabled .ui-icon{filter:Alpha(Opacity=35)}.ui-icon{width:16px;height:16px}.ui-icon,.ui-widget-content .ui-icon{background-image:url("images/ui-icons_444444_256x240.png")}.ui-widget-header .ui-icon{background-image:url("images/ui-icons_444444_256x240.png")}.ui-state-default .ui-icon{background-image:url("images/ui-icons_777777_256x240.png")}.ui-state-hover .ui-icon,.ui-state-focus .ui-icon{background-image:url("images/ui-icons_555555_256x240.png")}.ui-state-active .ui-icon{background-image:url("images/ui-icons_ffffff_256x240.png")}.ui-state-highlight .ui-icon{background-image:url("images/ui-icons_777620_256x240.png")}.ui-state-error .ui-icon,.ui-state-error-text .ui-icon{background-image:url("images/ui-icons_cc0000_256x240.png")}.ui-icon-blank{background-position:16px 16px}.ui-icon-carat-1-n{background-position:0 0}.ui-icon-carat-1-ne{background-position:-16px 0}.ui-icon-carat-1-e{background-position:-32px 0}.ui-icon-carat-1-se{background-position:-48px 0}.ui-icon-carat-1-s{background-position:-64px 0}.ui-icon-carat-1-sw{background-position:-80px 0}.ui-icon-carat-1-w{background-position:-96px 0}.ui-icon-carat-1-nw{background-position:-112px 0}.ui-icon-carat-2-n-s{background-position:-128px 0}.ui-icon-carat-2-e-w{background-position:-144px 0}.ui-icon-triangle-1-n{background-position:0 -16px}.ui-icon-triangle-1-ne{background-position:-16px -16px}.ui-icon-triangle-1-e{background-position:-32px -16px}.ui-icon-triangle-1-se{background-position:-48px -16px}.ui-icon-triangle-1-s{background-position:-64px -16px}.ui-icon-triangle-1-sw{background-position:-80px -16px}.ui-icon-triangle-1-w{background-position:-96px -16px}.ui-icon-triangle-1-nw{background-position:-112px -16px}.ui-icon-triangle-2-n-s{background-position:-128px -16px}.ui-icon-triangle-2-e-w{background-position:-144px -16px}.ui-icon-arrow-1-n{background-position:0 -32px}.ui-icon-arrow-1-ne{background-position:-16px -32px}.ui-icon-arrow-1-e{background-position:-32px -32px}.ui-icon-arrow-1-se{background-position:-48px -32px}.ui-icon-arrow-1-s{background-position:-64px -32px}.ui-icon-arrow-1-sw{background-position:-80px -32px}.ui-icon-arrow-1-w{background-position:-96px -32px}.ui-icon-arrow-1-nw{background-position:-112px -32px}.ui-icon-arrow-2-n-s{background-position:-128px -32px}.ui-icon-arrow-2-ne-sw{background-position:-144px -32px}.ui-icon-arrow-2-e-w{background-position:-160px -32px}.ui-icon-arrow-2-se-nw{background-position:-176px -32px}.ui-icon-arrowstop-1-n{background-position:-192px -32px}.ui-icon-arrowstop-1-e{background-position:-208px -32px}.ui-icon-arrowstop-1-s{background-position:-224px -32px}.ui-icon-arrowstop-1-w{background-position:-240px -32px}.ui-icon-arrowthick-1-n{background-position:0 -48px}.ui-icon-arrowthick-1-ne{background-position:-16px -48px}.ui-icon-arrowthick-1-e{background-position:-32px -48px}.ui-icon-arrowthick-1-se{background-position:-48px -48px}.ui-icon-arrowthick-1-s{background-position:-64px -48px}.ui-icon-arrowthick-1-sw{background-position:-80px -48px}.ui-icon-arrowthick-1-w{background-position:-96px -48px}.ui-icon-arrowthick-1-nw{background-position:-112px -48px}.ui-icon-arrowthick-2-n-s{background-position:-128px -48px}.ui-icon-arrowthick-2-ne-sw{background-position:-144px -48px}.ui-icon-arrowthick-2-e-w{background-position:-160px -48px}.ui-icon-arrowthick-2-se-nw{background-position:-176px -48px}.ui-icon-arrowthickstop-1-n{background-position:-192px -48px}.ui-icon-arrowthickstop-1-e{background-position:-208px -48px}.ui-icon-arrowthickstop-1-s{background-position:-224px -48px}.ui-icon-arrowthickstop-1-w{background-position:-240px -48px}.ui-icon-arrowreturnthick-1-w{background-position:0 -64px}.ui-icon-arrowreturnthick-1-n{background-position:-16px -64px}.ui-icon-arrowreturnthick-1-e{background-position:-32px -64px}.ui-icon-arrowreturnthick-1-s{background-position:-48px -64px}.ui-icon-arrowreturn-1-w{background-position:-64px -64px}.ui-icon-arrowreturn-1-n{background-position:-80px -64px}.ui-icon-arrowreturn-1-e{background-position:-96px -64px}.ui-icon-arrowreturn-1-s{background-position:-112px -64px}.ui-icon-arrowrefresh-1-w{background-position:-128px -64px}.ui-icon-arrowrefresh-1-n{background-position:-144px -64px}.ui-icon-arrowrefresh-1-e{background-position:-160px -64px}.ui-icon-arrowrefresh-1-s{background-position:-176px -64px}.ui-icon-arrow-4{background-position:0 -80px}.ui-icon-arrow-4-diag{background-position:-16px -80px}.ui-icon-extlink{background-position:-32px -80px}.ui-icon-newwin{background-position:-48px -80px}.ui-icon-refresh{background-position:-64px -80px}.ui-icon-shuffle{background-position:-80px -80px}.ui-icon-transfer-e-w{background-position:-96px -80px}.ui-icon-transferthick-e-w{background-position:-112px -80px}.ui-icon-folder-collapsed{background-position:0 -96px}.ui-icon-folder-open{background-position:-16px -96px}.ui-icon-document{background-position:-32px -96px}.ui-icon-document-b{background-position:-48px -96px}.ui-icon-note{background-position:-64px -96px}.ui-icon-mail-closed{background-position:-80px -96px}.ui-icon-mail-open{background-position:-96px -96px}.ui-icon-suitcase{background-position:-112px -96px}.ui-icon-comment{background-position:-128px -96px}.ui-icon-person{background-position:-144px -96px}.ui-icon-print{background-position:-160px -96px}.ui-icon-trash{background-position:-176px -96px}.ui-icon-locked{background-position:-192px -96px}.ui-icon-unlocked{background-position:-208px -96px}.ui-icon-bookmark{background-position:-224px -96px}.ui-icon-tag{background-position:-240px -96px}.ui-icon-home{background-position:0 -112px}.ui-icon-flag{background-position:-16px -112px}.ui-icon-calendar{background-position:-32px -112px}.ui-icon-cart{background-position:-48px -112px}.ui-icon-pencil{background-position:-64px -112px}.ui-icon-clock{background-position:-80px -112px}.ui-icon-disk{background-position:-96px -112px}.ui-icon-calculator{background-position:-112px -112px}.ui-icon-zoomin{background-position:-128px -112px}.ui-icon-zoomout{background-position:-144px -112px}.ui-icon-search{background-position:-160px -112px}.ui-icon-wrench{background-position:-176px -112px}.ui-icon-gear{background-position:-192px -112px}.ui-icon-heart{background-position:-208px -112px}.ui-icon-star{background-position:-224px -112px}.ui-icon-link{background-position:-240px -112px}.ui-icon-cancel{background-position:0 -128px}.ui-icon-plus{background-position:-16px -128px}.ui-icon-plusthick{background-position:-32px -128px}.ui-icon-minus{background-position:-48px -128px}.ui-icon-minusthick{background-position:-64px -128px}.ui-icon-close{background-position:-80px -128px}.ui-icon-closethick{background-position:-96px -128px}.ui-icon-key{background-position:-112px -128px}.ui-icon-lightbulb{background-position:-128px -128px}.ui-icon-scissors{background-position:-144px -128px}.ui-icon-clipboard{background-position:-160px -128px}.ui-icon-copy{background-position:-176px -128px}.ui-icon-contact{background-position:-192px -128px}.ui-icon-image{background-position:-208px -128px}.ui-icon-video{background-position:-224px -128px}.ui-icon-script{background-position:-240px -128px}.ui-icon-alert{background-position:0 -144px}.ui-icon-info{background-position:-16px -144px}.ui-icon-notice{background-position:-32px -144px}.ui-icon-help{background-position:-48px -144px}.ui-icon-check{background-position:-64px -144px}.ui-icon-bullet{background-position:-80px -144px}.ui-icon-radio-on{background-position:-96px -144px}.ui-icon-radio-off{background-position:-112px -144px}.ui-icon-pin-w{background-position:-128px -144px}.ui-icon-pin-s{background-position:-144px -144px}.ui-icon-play{background-position:0 -160px}.ui-icon-pause{background-position:-16px -160px}.ui-icon-seek-next{background-position:-32px -160px}.ui-icon-seek-prev{background-position:-48px -160px}.ui-icon-seek-end{background-position:-64px -160px}.ui-icon-seek-start{background-position:-80px -160px}.ui-icon-seek-first{background-position:-80px -160px}.ui-icon-stop{background-position:-96px -160px}.ui-icon-eject{background-position:-112px -160px}.ui-icon-volume-off{background-position:-128px -160px}.ui-icon-volume-on{background-position:-144px -160px}.ui-icon-power{background-position:0 -176px}.ui-icon-signal-diag{background-position:-16px -176px}.ui-icon-signal{background-position:-32px -176px}.ui-icon-battery-0{background-position:-48px -176px}.ui-icon-battery-1{background-position:-64px -176px}.ui-icon-battery-2{background-position:-80px -176px}.ui-icon-battery-3{background-position:-96px -176px}.ui-icon-circle-plus{background-position:0 -192px}.ui-icon-circle-minus{background-position:-16px -192px}.ui-icon-circle-close{background-position:-32px -192px}.ui-icon-circle-triangle-e{background-position:-48px -192px}.ui-icon-circle-triangle-s{background-position:-64px -192px}.ui-icon-circle-triangle-w{background-position:-80px -192px}.ui-icon-circle-triangle-n{background-position:-96px -192px}.ui-icon-circle-arrow-e{background-position:-112px -192px}.ui-icon-circle-arrow-s{background-position:-128px -192px}.ui-icon-circle-arrow-w{background-position:-144px -192px}.ui-icon-circle-arrow-n{background-position:-160px -192px}.ui-icon-circle-zoomin{background-position:-176px -192px}.ui-icon-circle-zoomout{background-position:-192px -192px}.ui-icon-circle-check{background-position:-208px -192px}.ui-icon-circlesmall-plus{background-position:0 -208px}.ui-icon-circlesmall-minus{background-position:-16px -208px}.ui-icon-circlesmall-close{background-position:-32px -208px}.ui-icon-squaresmall-plus{background-position:-48px -208px}.ui-icon-squaresmall-minus{background-position:-64px -208px}.ui-icon-squaresmall-close{background-position:-80px -208px}.ui-icon-grip-dotted-vertical{background-position:0 -224px}.ui-icon-grip-dotted-horizontal{background-position:-16px -224px}.ui-icon-grip-solid-vertical{background-position:-32px -224px}.ui-icon-grip-solid-horizontal{background-position:-48px -224px}.ui-icon-gripsmall-diagonal-se{background-position:-64px -224px}.ui-icon-grip-diagonal-se{background-position:-80px -224px}.ui-corner-all,.ui-corner-top,.ui-corner-left,.ui-corner-tl{border-top-left-radius:3px}.ui-corner-all,.ui-corner-top,.ui-corner-right,.ui-corner-tr{border-top-right-radius:3px}.ui-corner-all,.ui-corner-bottom,.ui-corner-left,.ui-corner-bl{border-bottom-left-radius:3px}.ui-corner-all,.ui-corner-bottom,.ui-corner-right,.ui-corner-br{border-bottom-right-radius:3px}.ui-widget-overlay{background:#aaa;opacity:.3;filter:Alpha(Opacity=30)}.ui-widget-shadow{margin:0 0 0 0;padding:5px;background:#666;opacity:.3;filter:Alpha(Opacity=30);border-radius:8px}
\ No newline at end of file
diff --git a/src/main/resources/META-INF/resources/designer/lib/jquery-ui-1.11.3/jquery-ui.min.js b/src/main/resources/META-INF/resources/designer/lib/jquery-ui-1.11.3/jquery-ui.min.js
deleted file mode 100644 (file)
index 760e149..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-/*! jQuery UI - v1.11.3 - 2015-02-12
-* http://jqueryui.com
-* Includes: core.js, widget.js, mouse.js, position.js, accordion.js, autocomplete.js, button.js, datepicker.js, dialog.js, draggable.js, droppable.js, effect.js, effect-blind.js, effect-bounce.js, effect-clip.js, effect-drop.js, effect-explode.js, effect-fade.js, effect-fold.js, effect-highlight.js, effect-puff.js, effect-pulsate.js, effect-scale.js, effect-shake.js, effect-size.js, effect-slide.js, effect-transfer.js, menu.js, progressbar.js, resizable.js, selectable.js, selectmenu.js, slider.js, sortable.js, spinner.js, tabs.js, tooltip.js
-* Copyright jQuery Foundation and other contributors; Licensed MIT */
-
-(function(e){"function"==typeof define&&define.amd?define(["jquery"],e):e(jQuery)})(function(e){function t(t,s){var n,a,o,r=t.nodeName.toLowerCase();return"area"===r?(n=t.parentNode,a=n.name,t.href&&a&&"map"===n.nodeName.toLowerCase()?(o=e("img[usemap='#"+a+"']")[0],!!o&&i(o)):!1):(/^(input|select|textarea|button|object)$/.test(r)?!t.disabled:"a"===r?t.href||s:s)&&i(t)}function i(t){return e.expr.filters.visible(t)&&!e(t).parents().addBack().filter(function(){return"hidden"===e.css(this,"visibility")}).length}function s(e){for(var t,i;e.length&&e[0]!==document;){if(t=e.css("position"),("absolute"===t||"relative"===t||"fixed"===t)&&(i=parseInt(e.css("zIndex"),10),!isNaN(i)&&0!==i))return i;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=a(e("<div id='"+this._mainDivId+"' class='ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all'></div>"))}function a(t){var i="button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a";return t.delegate(i,"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(i,"mouseover",o)}function o(){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 r(t,i){e.extend(t,i);for(var s in i)null==i[s]&&(t[s]=i[s]);return t}function h(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.3",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 i=this.css("position"),s="absolute"===i,n=t?/(auto|scroll|hidden)/:/(auto|scroll)/,a=this.parents().filter(function(){var t=e(this);return s&&"static"===t.css("position")?!1:n.test(t.css("overflow")+t.css("overflow-y")+t.css("overflow-x"))}).eq(0);return"fixed"!==i&&a.length?a: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(i){return!!e.data(i,t)}}):function(t,i,s){return!!e.data(t,s[3])},focusable:function(i){return t(i,!isNaN(e.attr(i,"tabindex")))},tabbable:function(i){var s=e.attr(i,"tabindex"),n=isNaN(s);return(n||s>=0)&&t(i,!n)}}),e("<a>").outerWidth(1).jquery||e.each(["Width","Height"],function(t,i){function s(t,i,s,a){return e.each(n,function(){i-=parseFloat(e.css(t,"padding"+this))||0,s&&(i-=parseFloat(e.css(t,"border"+this+"Width"))||0),a&&(i-=parseFloat(e.css(t,"margin"+this))||0)}),i}var n="Width"===i?["Left","Right"]:["Top","Bottom"],a=i.toLowerCase(),o={innerWidth:e.fn.innerWidth,innerHeight:e.fn.innerHeight,outerWidth:e.fn.outerWidth,outerHeight:e.fn.outerHeight};e.fn["inner"+i]=function(t){return void 0===t?o["inner"+i].call(this):this.each(function(){e(this).css(a,s(this,t)+"px")})},e.fn["outer"+i]=function(t,n){return"number"!=typeof t?o["outer"+i].call(this,t):this.each(function(){e(this).css(a,s(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(i){return arguments.length?t.call(this,e.camelCase(i)):t.call(this)}}(e.fn.removeData)),e.ui.ie=!!/msie [\w.]+/.exec(navigator.userAgent.toLowerCase()),e.fn.extend({focus:function(t){return function(i,s){return"number"==typeof i?this.each(function(){var t=this;setTimeout(function(){e(t).focus(),s&&s.call(t)},i)}):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 i,s,n=e(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}}),e.ui.plugin={add:function(t,i,s){var n,a=e.ui[t].prototype;for(n in s)a.plugins[n]=a.plugins[n]||[],a.plugins[n].push([i,s[n]])},call:function(e,t,i,s){var n,a=e.plugins[t];if(a&&(s||e.element[0].parentNode&&11!==e.element[0].parentNode.nodeType))for(n=0;a.length>n;n++)e.options[a[n][0]]&&a[n][1].apply(e.element,i)}};var l=0,u=Array.prototype.slice;e.cleanData=function(t){return function(i){var s,n,a;for(a=0;null!=(n=i[a]);a++)try{s=e._data(n,"events"),s&&s.remove&&e(n).triggerHandler("remove")}catch(o){}t(i)}}(e.cleanData),e.widget=function(t,i,s){var n,a,o,r,h={},l=t.split(".")[0];return t=t.split(".")[1],n=l+"-"+t,s||(s=i,i=e.Widget),e.expr[":"][n.toLowerCase()]=function(t){return!!e.data(t,n)},e[l]=e[l]||{},a=e[l][t],o=e[l][t]=function(e,t){return this._createWidget?(arguments.length&&this._createWidget(e,t),void 0):new o(e,t)},e.extend(o,a,{version:s.version,_proto:e.extend({},s),_childConstructors:[]}),r=new i,r.options=e.widget.extend({},r.options),e.each(s,function(t,s){return e.isFunction(s)?(h[t]=function(){var e=function(){return i.prototype[t].apply(this,arguments)},n=function(e){return i.prototype[t].apply(this,e)};return function(){var t,i=this._super,a=this._superApply;return this._super=e,this._superApply=n,t=s.apply(this,arguments),this._super=i,this._superApply=a,t}}(),void 0):(h[t]=s,void 0)}),o.prototype=e.widget.extend(r,{widgetEventPrefix:a?r.widgetEventPrefix||t:t},h,{constructor:o,namespace:l,widgetName:t,widgetFullName:n}),a?(e.each(a._childConstructors,function(t,i){var s=i.prototype;e.widget(s.namespace+"."+s.widgetName,o,i._proto)}),delete a._childConstructors):i._childConstructors.push(o),e.widget.bridge(t,o),o},e.widget.extend=function(t){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&&(t[i]=e.isPlainObject(s)?e.isPlainObject(t[i])?e.widget.extend({},t[i],s):e.widget.extend({},s):s);return t},e.widget.bridge=function(t,i){var s=i.prototype.widgetFullName||t;e.fn[t]=function(n){var a="string"==typeof n,o=u.call(arguments,1),r=this;return a?this.each(function(){var i,a=e.data(this,s);return"instance"===n?(r=a,!1):a?e.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):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+"'")}):(o.length&&(n=e.widget.extend.apply(null,[n].concat(o))),this.each(function(){var t=e.data(this,s);t?(t.option(n||{}),t._init&&t._init()):e.data(this,s,new i(n,this))})),r}},e.Widget=function(){},e.Widget._childConstructors=[],e.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",defaultElement:"<div>",options:{disabled:!1,create:null},_createWidget:function(t,i){i=e(i||this.defaultElement||this)[0],this.element=e(i),this.uuid=l++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=e(),this.hoverable=e(),this.focusable=e(),i!==this&&(e.data(i,this.widgetFullName,this),this._on(!0,this.element,{remove:function(e){e.target===i&&this.destroy()}}),this.document=e(i.style?i.ownerDocument:i.document||i),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,i){var s,n,a,o=t;if(0===arguments.length)return e.widget.extend({},this.options);if("string"==typeof t)if(o={},s=t.split("."),t=s.shift(),s.length){for(n=o[t]=e.widget.extend({},this.options[t]),a=0;s.length-1>a;a++)n[s[a]]=n[s[a]]||{},n=n[s[a]];if(t=s.pop(),1===arguments.length)return void 0===n[t]?null:n[t];n[t]=i}else{if(1===arguments.length)return void 0===this.options[t]?null:this.options[t];o[t]=i}return this._setOptions(o),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,i,s){var n,a=this;"boolean"!=typeof t&&(s=i,i=t,t=!1),s?(i=n=e(i),this.bindings=this.bindings.add(i)):(s=i,i=this.element,n=this.widget()),e.each(s,function(s,o){function r(){return t||a.options.disabled!==!0&&!e(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||e.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(t,i){i=(i||"").split(" ").join(this.eventNamespace+" ")+this.eventNamespace,t.unbind(i).undelegate(i),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 i(){return("string"==typeof e?s[e]:e).apply(s,arguments)}var s=this;return setTimeout(i,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,i,s){var n,a,o=this.options[t];if(s=s||{},i=e.Event(i),i.type=(t===this.widgetEventPrefix?t:this.widgetEventPrefix+t).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),!(e.isFunction(o)&&o.apply(this.element[0],[i].concat(s))===!1||i.isDefaultPrevented())}},e.each({show:"fadeIn",hide:"fadeOut"},function(t,i){e.Widget.prototype["_"+t]=function(s,n,a){"string"==typeof n&&(n={effect:n});var o,r=n?n===!0||"number"==typeof n?i:n.effect||i:t;n=n||{},"number"==typeof n&&(n={duration:n}),o=!e.isEmptyObject(n),n.complete=a,n.delay&&s.delay(n.delay),o&&e.effects&&e.effects.effect[r]?s[t](n):r!==t&&s[r]?s[r](n.duration,n.easing,a):s.queue(function(i){e(this)[t](),a&&a.call(s[0]),i()})}}),e.widget;var d=!1;e(document).mouseup(function(){d=!1}),e.widget("ui.mouse",{version:"1.11.3",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(i){return!0===e.data(i.target,t.widgetName+".preventClickEvent")?(e.removeData(i.target,t.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(t){if(!d){this._mouseMoved=!1,this._mouseStarted&&this._mouseUp(t),this._mouseDownEvent=t;var i=this,s=1===t.which,n="string"==typeof this.options.cancel&&t.target.nodeName?e(t.target).closest(this.options.cancel).length:!1;return s&&!n&&this._mouseCapture(t)?(this.mouseDelayMet=!this.options.delay,this.mouseDelayMet||(this._mouseDelayTimer=setTimeout(function(){i.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 i._mouseMove(e)},this._mouseUpDelegate=function(e){return i._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,i){return[parseFloat(e[0])*(p.test(e[0])?t/100:1),parseFloat(e[1])*(p.test(e[1])?i/100:1)]}function i(t,i){return parseInt(e.css(t,i),10)||0}function s(t){var i=t[0];return 9===i.nodeType?{width:t.width(),height:t.height(),offset:{top:0,left:0}}:e.isWindow(i)?{width:t.width(),height:t.height(),offset:{top:t.scrollTop(),left:t.scrollLeft()}}:i.preventDefault?{width:0,height:0,offset:{top:i.pageY,left:i.pageX}}:{width:t.outerWidth(),height:t.outerHeight(),offset:t.offset()}}e.ui=e.ui||{};var n,a,o=Math.max,r=Math.abs,h=Math.round,l=/left|center|right/,u=/top|center|bottom/,d=/[\+\-]\d+(\.[\d]+)?%?/,c=/^\w+/,p=/%$/,f=e.fn.position;e.position={scrollbarWidth:function(){if(void 0!==n)return n;var t,i,s=e("<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 e("body").append(s),t=a.offsetWidth,s.css("overflow","scroll"),i=a.offsetWidth,t===i&&(i=s[0].clientWidth),s.remove(),n=t-i},getScrollInfo:function(t){var i=t.isWindow||t.isDocument?"":t.element.css("overflow-x"),s=t.isWindow||t.isDocument?"":t.element.css("overflow-y"),n="scroll"===i||"auto"===i&&t.width<t.element[0].scrollWidth,a="scroll"===s||"auto"===s&&t.height<t.element[0].scrollHeight;return{width:a?e.position.scrollbarWidth():0,height:n?e.position.scrollbarWidth():0}},getWithinInfo:function(t){var i=e(t||window),s=e.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()}}},e.fn.position=function(n){if(!n||!n.of)return f.apply(this,arguments);n=e.extend({},n);var p,m,g,v,y,b,_=e(n.of),x=e.position.getWithinInfo(n.within),w=e.position.getScrollInfo(x),k=(n.collision||"flip").split(" "),T={};return b=s(_),_[0].preventDefault&&(n.at="left top"),m=b.width,g=b.height,v=b.offset,y=e.extend({},v),e.each(["my","at"],function(){var e,t,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",e=d.exec(i[0]),t=d.exec(i[1]),T[this]=[e?e[0]:0,t?t[0]:0],n[this]=[c.exec(i[0])[0],c.exec(i[1])[0]]}),1===k.length&&(k[1]=k[0]),"right"===n.at[0]?y.left+=m:"center"===n.at[0]&&(y.left+=m/2),"bottom"===n.at[1]?y.top+=g:"center"===n.at[1]&&(y.top+=g/2),p=t(T.at,m,g),y.left+=p[0],y.top+=p[1],this.each(function(){var s,l,u=e(this),d=u.outerWidth(),c=u.outerHeight(),f=i(this,"marginLeft"),b=i(this,"marginTop"),D=d+f+i(this,"marginRight")+w.width,S=c+b+i(this,"marginBottom")+w.height,M=e.extend({},y),C=t(T.my,u.outerWidth(),u.outerHeight());"right"===n.my[0]?M.left-=d:"center"===n.my[0]&&(M.left-=d/2),"bottom"===n.my[1]?M.top-=c:"center"===n.my[1]&&(M.top-=c/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},e.each(["left","top"],function(t,i){e.ui.position[k[t]]&&e.ui.position[k[t]][i](M,{targetWidth:m,targetHeight:g,elemWidth:d,elemHeight:c,collisionPosition:s,collisionWidth:D,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(e){var t=v.left-M.left,i=t+m-d,s=v.top-M.top,a=s+g-c,h={target:{element:_,left:v.left,top:v.top,width:m,height:g},element:{element:u,left:M.left,top:M.top,width:d,height:c},horizontal:0>i?"left":t>0?"right":"center",vertical:0>a?"top":s>0?"bottom":"middle"};d>m&&m>r(t+i)&&(h.horizontal="center"),c>g&&g>r(s+a)&&(h.vertical="middle"),h.important=o(r(t),r(i))>o(r(s),r(a))?"horizontal":"vertical",n.using.call(this,e,h)}),u.offset(e.extend(M,{using:l}))})},e.ui.position={fit:{left:function(e,t){var i,s=t.within,n=s.isWindow?s.scrollLeft:s.offset.left,a=s.width,r=e.left-t.collisionPosition.marginLeft,h=n-r,l=r+t.collisionWidth-a-n;t.collisionWidth>a?h>0&&0>=l?(i=e.left+h+t.collisionWidth-a-n,e.left+=h-i):e.left=l>0&&0>=h?n:h>l?n+a-t.collisionWidth:n:h>0?e.left+=h:l>0?e.left-=l:e.left=o(e.left-r,e.left)},top:function(e,t){var i,s=t.within,n=s.isWindow?s.scrollTop:s.offset.top,a=t.within.height,r=e.top-t.collisionPosition.marginTop,h=n-r,l=r+t.collisionHeight-a-n;t.collisionHeight>a?h>0&&0>=l?(i=e.top+h+t.collisionHeight-a-n,e.top+=h-i):e.top=l>0&&0>=h?n:h>l?n+a-t.collisionHeight:n:h>0?e.top+=h:l>0?e.top-=l:e.top=o(e.top-r,e.top)}},flip:{left:function(e,t){var i,s,n=t.within,a=n.offset.left+n.scrollLeft,o=n.width,h=n.isWindow?n.scrollLeft:n.offset.left,l=e.left-t.collisionPosition.marginLeft,u=l-h,d=l+t.collisionWidth-o-h,c="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?(i=e.left+c+p+f+t.collisionWidth-o-a,(0>i||r(u)>i)&&(e.left+=c+p+f)):d>0&&(s=e.left-t.collisionPosition.marginLeft+c+p+f-h,(s>0||d>r(s))&&(e.left+=c+p+f))},top:function(e,t){var i,s,n=t.within,a=n.offset.top+n.scrollTop,o=n.height,h=n.isWindow?n.scrollTop:n.offset.top,l=e.top-t.collisionPosition.marginTop,u=l-h,d=l+t.collisionHeight-o-h,c="top"===t.my[1],p=c?-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?(s=e.top+p+f+m+t.collisionHeight-o-a,(0>s||r(u)>s)&&(e.top+=p+f+m)):d>0&&(i=e.top-t.collisionPosition.marginTop+p+f+m-h,(i>0||d>r(i))&&(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,i,s,n,o,r=document.getElementsByTagName("body")[0],h=document.createElement("div");t=document.createElement(r?"div":"body"),s={visibility:"hidden",width:0,height:0,border:0,margin:0,background:"none"},r&&e.extend(s,{position:"absolute",left:"-1000px",top:"-1000px"});for(o in s)t.style[o]=s[o];t.appendChild(h),i=r||document.documentElement,i.insertBefore(t,i.firstChild),h.style.cssText="position: absolute; left: 10.7432222px;",n=e(h).offset().left,a=n>10&&11>n,t.innerHTML="",i.removeChild(t)}()}(),e.ui.position,e.widget("ui.accordion",{version:"1.11.3",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?(this._activate(t),void 0):("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()),"disabled"===e&&(this.element.toggleClass("ui-state-disabled",!!t).attr("aria-disabled",t),this.headers.add(this.headers.next()).toggleClass("ui-state-disabled",!!t)),void 0)},_keydown:function(t){if(!t.altKey&&!t.ctrlKey){var i=e.ui.keyCode,s=this.headers.length,n=this.headers.index(t.target),a=!1;switch(t.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(t);break;case i.HOME:a=this.headers[0];break;case i.END:a=this.headers[s-1]}a&&(e(t.target).attr("tabIndex",-1),e(a).attr("tabIndex",0),a.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,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 t=e(this),i=t.uniqueId().attr("id"),s=t.next(),n=s.uniqueId().attr("id");t.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?(t=n.height(),this.element.siblings(":visible").each(function(){var i=e(this),s=i.css("position");"absolute"!==s&&"fixed"!==s&&(t-=i.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"===s&&(t=0,this.headers.next().each(function(){t=Math.max(t,e(this).css("height","").height())}).height(t))},_activate:function(t){var i=this._findActive(t)[0];i!==this.active[0]&&(i=i||this.active[0],this._eventHandler({target:i,currentTarget:i,preventDefault:e.noop}))},_findActive:function(t){return"number"==typeof t?this.headers.eq(t):e()},_setupEvents:function(t){var i={keydown:"_keydown"};t&&e.each(t.split(" "),function(e,t){i[t]="_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(t){var i=this.options,s=this.active,n=e(t.currentTarget),a=n[0]===s[0],o=a&&i.collapsible,r=o?e():n.next(),h=s.next(),l={oldHeader:s,oldPanel:h,newHeader:o?e():n,newPanel:r};t.preventDefault(),a&&!i.collapsible||this._trigger("beforeActivate",t,l)===!1||(i.active=o?!1:this.headers.index(n),this.active=a?e():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(t){var i=t.newPanel,s=this.prevShow.length?this.prevShow:t.oldPanel;this.prevShow.add(this.prevHide).stop(!0,!0),this.prevShow=i,this.prevHide=s,this.options.animate?this._animate(i,s,t):(s.hide(),i.show(),this._toggleComplete(t)),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(e(this).attr("tabIndex"),10)}).attr("tabIndex",-1),i.attr("aria-hidden","false").prev().attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0})},_animate:function(e,t,i){var s,n,a,o=this,r=0,h=e.length&&(!t.length||e.index()<t.index()),l=this.options.animate||{},u=h&&l.down||l,d=function(){o._toggleComplete(i)};return"number"==typeof u&&(a=u),"string"==typeof u&&(n=u),n=n||u.easing||l.easing,a=a||u.duration||l.duration,t.length?e.length?(s=e.show().outerHeight(),t.animate(this.hideProps,{duration:a,easing:n,step:function(e,t){t.now=Math.round(e)}}),e.hide().animate(this.showProps,{duration:a,easing:n,complete:d,step:function(e,i){i.now=Math.round(e),"height"!==i.prop?r+=i.now:"content"!==o.options.heightStyle&&(i.now=Math.round(s-t.outerHeight()-r),r=0)}}),void 0):t.animate(this.hideProps,a,n,d):e.animate(this.showProps,a,n,d)},_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.3",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 i=e(t.target);!this.mouseHandled&&i.not(".ui-state-disabled").length&&(this.select(t),t.isPropagationStopped()||(this.mouseHandled=!0),i.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 i=e(t.currentTarget);i.siblings(".ui-state-active").removeClass("ui-state-active"),this.focus(t,i)
-}},mouseleave:"collapseAll","mouseleave .ui-menu":"collapseAll",focus:function(e,t){var i=this.active||this.element.find(this.options.items).eq(0);t||this.focus(e,i)},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 i,s,n,a,o=!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:o=!1,s=this.previousFilter||"",n=String.fromCharCode(t.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(t.keyCode),i=this._filterMenuItems(n)),i.length?(this.focus(t,i),this.previousFilter=n,this.filterTimer=this._delay(function(){delete this.previousFilter},1e3)):delete this.previousFilter}o&&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,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 t=e(this),i=t.parent(),s=e("<span>").addClass("ui-menu-icon ui-icon "+n).data("ui-menu-submenu-carat",!0);i.attr("aria-haspopup","true").prepend(s),t.attr("aria-labelledby",i.attr("id"))}),t=a.add(this.element),i=t.find(this.options.items),i.not(".ui-menu-item").each(function(){var t=e(this);s._isDivider(t)&&t.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&&!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 i,s;this.blur(e,e&&"focus"===e.type),this._scrollIntoView(t),this.active=t.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"),e&&"keydown"===e.type?this._close():this.timer=this._delay(function(){this._close()},this.delay),i=t.children(".ui-menu"),i.length&&e&&/^mouse/.test(e.type)&&this._startOpening(i),this.activeMenu=t.parent(),this._trigger("focus",e,{item:t})},_scrollIntoView:function(t){var i,s,n,a,o,r;this._hasScroll()&&(i=parseFloat(e.css(this.activeMenu[0],"borderTopWidth"))||0,s=parseFloat(e.css(this.activeMenu[0],"paddingTop"))||0,n=t.offset().top-this.activeMenu.offset().top-i-s,a=this.activeMenu.scrollTop(),o=this.activeMenu.height(),r=t.outerHeight(),0>n?this.activeMenu.scrollTop(a+n):n+r>o&&this.activeMenu.scrollTop(a+n-o+r))},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 i=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(i)},collapseAll:function(t,i){clearTimeout(this.timer),this.timer=this._delay(function(){var s=i?this.element:e(t&&t.target).closest(this.element.find(".ui-menu"));s.length||(s=this.element),this._close(s),this.blur(t),this.activeMenu=s},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,i){var s;this.active&&(s="first"===e||"last"===e?this.active["first"===e?"prevAll":"nextAll"](".ui-menu-item").eq(-1):this.active[e+"All"](".ui-menu-item").eq(0)),s&&s.length&&this.active||(s=this.activeMenu.find(this.options.items)[t]()),this.focus(i,s)},nextPage:function(t){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=e(this),0>i.offset().top-s-n}),this.focus(t,i)):this.focus(t,this.activeMenu.find(this.options.items)[this.active?"last":"first"]())),void 0):(this.next(t),void 0)},previousPage:function(t){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=e(this),i.offset().top-s+n>0}),this.focus(t,i)):this.focus(t,this.activeMenu.find(this.options.items).first())),void 0):(this.next(t),void 0)},_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 i={item:this.active};this.active.has(".ui-menu").length||this.collapseAll(t,!0),this._trigger("select",t,i)},_filterMenuItems:function(t){var i=t.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&"),s=RegExp("^"+i,"i");return this.activeMenu.find(this.options.items).filter(".ui-menu-item").filter(function(){return s.test(e.trim(e(this).text()))})}}),e.widget("ui.autocomplete",{version:"1.11.3",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,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 t=!0,s=!0,i=!0,void 0;t=!1,s=!1,i=!1;var a=e.ui.keyCode;switch(n.keyCode){case a.PAGE_UP:t=!0,this._move("previousPage",n);break;case a.PAGE_DOWN:t=!0,this._move("nextPage",n);break;case a.UP:t=!0,this._keyEvent("previous",n);break;case a.DOWN:t=!0,this._keyEvent("next",n);break;case a.ENTER:this.menu.active&&(t=!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(t)return t=!1,(!this.isMultiLine||this.menu.element.is(":visible"))&&s.preventDefault(),void 0;if(!i){var n=e.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(e){return s?(s=!1,e.preventDefault(),void 0):(this._searchTimeout(e),void 0)},focus:function(){this.selectedItem=null,this.previous=this._value()},blur:function(e){return this.cancelBlur?(delete this.cancelBlur,void 0):(clearTimeout(this.searching),this.close(e),this._change(e),void 0)}}),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 i=this.menu.element[0];e(t.target).closest(".ui-menu-item").length||this._delay(function(){var t=this;this.document.one("mousedown",function(s){s.target===t.element[0]||s.target===i||e.contains(i,s.target)||t.close()})})},menufocus:function(t,i){var s,n;return this.isNewMenu&&(this.isNewMenu=!1,t.originalEvent&&/^mouse/.test(t.originalEvent.type))?(this.menu.blur(),this.document.one("mousemove",function(){e(t.target).trigger(t.originalEvent)}),void 0):(n=i.item.data("ui-autocomplete-item"),!1!==this._trigger("focus",t,{item:n})&&t.originalEvent&&/^key/.test(t.originalEvent.type)&&this._value(n.value),s=i.item.attr("aria-label")||n.value,s&&e.trim(s).length&&(this.liveRegion.children().hide(),e("<div>").text(s).appendTo(this.liveRegion)),void 0)},menuselect:function(e,t){var i=t.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",e,{item:i})&&this._value(i.value),this.term=this._value(),this.close(e),this.selectedItem=i}}),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,i,s=this;e.isArray(this.options.source)?(t=this.options.source,this.source=function(i,s){s(e.ui.autocomplete.filter(t,i.term))}):"string"==typeof this.options.source?(i=this.options.source,this.source=function(t,n){s.xhr&&s.xhr.abort(),s.xhr=e.ajax({url:i,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(),i=this.menu.element.is(":visible"),s=e.altKey||e.ctrlKey||e.metaKey||e.shiftKey;(!t||t&&!i&&!s)&&(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 i=this.menu.element.empty();this._renderMenu(i,t),this.isNewMenu=!0,this.menu.refresh(),i.show(),this._resizeMenu(),i.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,i){var s=this;e.each(i,function(e,i){s._renderItemData(t,i)})},_renderItemData:function(e,t){return this._renderItem(e,t).data("ui-autocomplete-item",t)},_renderItem:function(t,i){return e("<li>").text(i.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),this.menu.blur(),void 0):(this.menu[e](t),void 0):(this.search(null,t),void 0)},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,i){var s=RegExp(e.ui.autocomplete.escapeRegex(i),"i");return e.grep(t,function(e){return s.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 i;this._superApply(arguments),this.options.disabled||this.cancelSearch||(i=t&&t.length?this.options.messages.results(t.length):this.options.messages.noResults,this.liveRegion.children().hide(),e("<div>").text(i).appendTo(this.liveRegion))}}),e.ui.autocomplete;var c,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 i=t.name,s=t.form,n=e([]);return i&&(i=i.replace(/'/g,"\\'"),n=s?e(s).find("[name='"+i+"'][type=radio]"):e("[name='"+i+"'][type=radio]",t.ownerDocument).filter(function(){return!this.form})),n};e.widget("ui.button",{version:"1.11.3",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,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===c&&e(this).addClass("ui-state-active")}).bind("mouseleave"+this.eventNamespace,function(){i.disabled||e(this).removeClass(n)}).bind("click"+this.eventNamespace,function(e){i.disabled&&(e.preventDefault(),e.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(){t.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;e(this).addClass("ui-state-active"),t.buttonElement.attr("aria-pressed","true");var s=t.element[0];g(s).not(s).map(function(){return e(this).button("widget")[0]}).removeClass("ui-state-active").attr("aria-pressed","false")}):(this.buttonElement.bind("mousedown"+this.eventNamespace,function(){return i.disabled?!1:(e(this).addClass("ui-state-active"),c=this,t.document.one("mouseup",function(){c=null}),void 0)}).bind("mouseup"+this.eventNamespace,function(){return i.disabled?!1:(e(this).removeClass("ui-state-active"),void 0)}).bind("keydown"+this.eventNamespace,function(t){return i.disabled?!1:((t.keyCode===e.ui.keyCode.SPACE||t.keyCode===e.ui.keyCode.ENTER)&&e(this).addClass("ui-state-active"),void 0)}).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",i.disabled),this._resetButton()},_determineButtonType:function(){var e,t,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?(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"),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(e,t){return this._super(e,t),"disabled"===e?(this.widget().toggleClass("ui-state-disabled",!!t),this.element.prop("disabled",!!t),t&&("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 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 this.options.label&&this.element.val(this.options.label),void 0;var t=this.buttonElement.removeClass(f),i=e("<span></span>",this.document[0]).addClass("ui-button-text").html(this.options.label).appendTo(t.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&&t.prepend("<span class='ui-button-icon-primary ui-icon "+s.primary+"'></span>"),s.secondary&&t.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||t.attr("title",e.trim(i)))):a.push("ui-button-text-only"),t.addClass(a.join(" "))}}),e.widget("ui.buttonset",{version:"1.11.3",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"),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 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.3"}});var v;e.extend(n.prototype,{markerClassName:"hasDatepicker",maxRows:4,_widgetDatepicker:function(){return this.dpDiv},setDefaults:function(e){return r(this._defaults,e||{}),this},_attachDatepicker:function(t,i){var s,n,a;s=t.nodeName.toLowerCase(),n="div"===s||"span"===s,t.id||(this.uuid+=1,t.id="dp"+this.uuid),a=this._newInst(e(t),n),a.settings=e.extend({},i||{}),"input"===s?this._connectDatepicker(t,a):n&&this._inlineDatepicker(t,a)},_newInst:function(t,i){var s=t[0].id.replace(/([^A-Za-z0-9_\-])/g,"\\\\$1");return{id:s,input:t,selectedDay:0,selectedMonth:0,selectedYear:0,drawMonth:0,drawYear:0,inline:i,dpDiv:i?a(e("<div class='"+this._inlineClass+" ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all'></div>")):this.dpDiv}},_connectDatepicker:function(t,i){var s=e(t);i.append=e([]),i.trigger=e([]),s.hasClass(this.markerClassName)||(this._attachments(s,i),s.addClass(this.markerClassName).keydown(this._doKeyDown).keypress(this._doKeyPress).keyup(this._doKeyUp),this._autoSize(i),e.data(t,"datepicker",i),i.settings.disabled&&this._disableDatepicker(t))},_attachments:function(t,i){var s,n,a,o=this._get(i,"appendText"),r=this._get(i,"isRTL");i.append&&i.append.remove(),o&&(i.append=e("<span class='"+this._appendClass+"'>"+o+"</span>"),t[r?"before":"after"](i.append)),t.unbind("focus",this._showDatepicker),i.trigger&&i.trigger.remove(),s=this._get(i,"showOn"),("focus"===s||"both"===s)&&t.focus(this._showDatepicker),("button"===s||"both"===s)&&(n=this._get(i,"buttonText"),a=this._get(i,"buttonImage"),i.trigger=e(this._get(i,"buttonImageOnly")?e("<img/>").addClass(this._triggerClass).attr({src:a,alt:n,title:n}):e("<button type='button'></button>").addClass(this._triggerClass).html(a?e("<img/>").attr({src:a,alt:n,title:n}):n)),t[r?"before":"after"](i.trigger),i.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,i,s,n,a=new Date(2009,11,20),o=this._get(e,"dateFormat");o.match(/[DM]/)&&(t=function(e){for(i=0,s=0,n=0;e.length>n;n++)e[n].length>i&&(i=e[n].length,s=n);return s},a.setMonth(t(this._get(e,o.match(/MM/)?"monthNames":"monthNamesShort"))),a.setDate(t(this._get(e,o.match(/DD/)?"dayNames":"dayNamesShort"))+20-a.getDay())),e.input.attr("size",this._formatDate(e,a).length)}},_inlineDatepicker:function(t,i){var s=e(t);s.hasClass(this.markerClassName)||(s.addClass(this.markerClassName).append(i.dpDiv),e.data(t,"datepicker",i),this._setDate(i,this._getDefaultDate(i),!0),this._updateDatepicker(i),this._updateAlternate(i),i.settings.disabled&&this._disableDatepicker(t),i.dpDiv.css("display","block"))},_dialogDatepicker:function(t,i,s,n,a){var o,h,l,u,d,c=this._dialogInst;return c||(this.uuid+=1,o="dp"+this.uuid,this._dialogInput=e("<input type='text' id='"+o+"' style='position: absolute; top: -100px; width: 0px;'/>"),this._dialogInput.keydown(this._doKeyDown),e("body").append(this._dialogInput),c=this._dialogInst=this._newInst(this._dialogInput,!1),c.settings={},e.data(this._dialogInput[0],"datepicker",c)),r(c.settings,n||{}),i=i&&i.constructor===Date?this._formatDate(c,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,d=document.documentElement.scrollTop||document.body.scrollTop,this._pos=[h/2-100+u,l/2-150+d]),this._dialogInput.css("left",this._pos[0]+20+"px").css("top",this._pos[1]+"px"),c.settings.onSelect=s,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",c),this},_destroyDatepicker:function(t){var i,s=e(t),n=e.data(t,"datepicker");s.hasClass(this.markerClassName)&&(i=t.nodeName.toLowerCase(),e.removeData(t,"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(t){var i,s,n=e(t),a=e.data(t,"datepicker");n.hasClass(this.markerClassName)&&(i=t.nodeName.toLowerCase(),"input"===i?(t.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=e.map(this._disabledInputs,function(e){return e===t?null:e}))},_disableDatepicker:function(t){var i,s,n=e(t),a=e.data(t,"datepicker");n.hasClass(this.markerClassName)&&(i=t.nodeName.toLowerCase(),"input"===i?(t.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=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(i){throw"Missing instance data for this datepicker"}},_optionDatepicker:function(t,i,s){var n,a,o,h,l=this._getInst(t);return 2===arguments.length&&"string"==typeof i?"defaults"===i?e.extend({},e.datepicker._defaults):l?"all"===i?e.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(t,!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(t):this._enableDatepicker(t)),this._attachments(e(t),l),this._autoSize(l),this._setDate(l,a),this._updateAlternate(l),this._updateDatepicker(l)),void 0)},_changeDatepicker:function(e,t,i){this._optionDatepicker(e,t,i)},_refreshDatepicker:function(e){var t=this._getInst(e);t&&this._updateDatepicker(t)},_setDateDatepicker:function(e,t){var i=this._getInst(e);i&&(this._setDate(i,t),this._updateDatepicker(i),this._updateAlternate(i))},_getDateDatepicker:function(e,t){var i=this._getInst(e);return i&&!i.inline&&this._setDateFromField(i,t),i?this._getDate(i):null},_doKeyDown:function(t){var i,s,n,a=e.datepicker._getInst(t.target),o=!0,r=a.dpDiv.is(".ui-datepicker-rtl");if(a._keyEvent=!0,e.datepicker._datepickerShowing)switch(t.keyCode){case 9:e.datepicker._hideDatepicker(),o=!1;break;case 13:return n=e("td."+e.datepicker._dayOverClass+":not(."+e.datepicker._currentClass+")",a.dpDiv),n[0]&&e.datepicker._selectDay(t.target,a.selectedMonth,a.selectedYear,n[0]),i=e.datepicker._get(a,"onSelect"),i?(s=e.datepicker._formatDate(a),i.apply(a.input?a.input[0]:null,[s,a])):e.datepicker._hideDatepicker(),!1;case 27:e.datepicker._hideDatepicker();break;case 33:e.datepicker._adjustDate(t.target,t.ctrlKey?-e.datepicker._get(a,"stepBigMonths"):-e.datepicker._get(a,"stepMonths"),"M");break;case 34:e.datepicker._adjustDate(t.target,t.ctrlKey?+e.datepicker._get(a,"stepBigMonths"):+e.datepicker._get(a,"stepMonths"),"M");break;case 35:(t.ctrlKey||t.metaKey)&&e.datepicker._clearDate(t.target),o=t.ctrlKey||t.metaKey;break;case 36:(t.ctrlKey||t.metaKey)&&e.datepicker._gotoToday(t.target),o=t.ctrlKey||t.metaKey;break;case 37:(t.ctrlKey||t.metaKey)&&e.datepicker._adjustDate(t.target,r?1:-1,"D"),o=t.ctrlKey||t.metaKey,t.originalEvent.altKey&&e.datepicker._adjustDate(t.target,t.ctrlKey?-e.datepicker._get(a,"stepBigMonths"):-e.datepicker._get(a,"stepMonths"),"M");break;case 38:(t.ctrlKey||t.metaKey)&&e.datepicker._adjustDate(t.target,-7,"D"),o=t.ctrlKey||t.metaKey;break;case 39:(t.ctrlKey||t.metaKey)&&e.datepicker._adjustDate(t.target,r?-1:1,"D"),o=t.ctrlKey||t.metaKey,t.originalEvent.altKey&&e.datepicker._adjustDate(t.target,t.ctrlKey?+e.datepicker._get(a,"stepBigMonths"):+e.datepicker._get(a,"stepMonths"),"M");break;case 40:(t.ctrlKey||t.metaKey)&&e.datepicker._adjustDate(t.target,7,"D"),o=t.ctrlKey||t.metaKey;break;default:o=!1}else 36===t.keyCode&&t.ctrlKey?e.datepicker._showDatepicker(this):o=!1;o&&(t.preventDefault(),t.stopPropagation())},_doKeyPress:function(t){var i,s,n=e.datepicker._getInst(t.target);return e.datepicker._get(n,"constrainInput")?(i=e.datepicker._possibleChars(e.datepicker._get(n,"dateFormat")),s=String.fromCharCode(null==t.charCode?t.keyCode:t.charCode),t.ctrlKey||t.metaKey||" ">s||!i||i.indexOf(s)>-1):void 0
-},_doKeyUp:function(t){var i,s=e.datepicker._getInst(t.target);if(s.input.val()!==s.lastVal)try{i=e.datepicker.parseDate(e.datepicker._get(s,"dateFormat"),s.input?s.input.val():null,e.datepicker._getFormatConfig(s)),i&&(e.datepicker._setDateFromField(s),e.datepicker._updateAlternate(s),e.datepicker._updateDatepicker(s))}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 i,n,a,o,h,l,u;i=e.datepicker._getInst(t),e.datepicker._curInst&&e.datepicker._curInst!==i&&(e.datepicker._curInst.dpDiv.stop(!0,!0),i&&e.datepicker._datepickerShowing&&e.datepicker._hideDatepicker(e.datepicker._curInst.input[0])),n=e.datepicker._get(i,"beforeShow"),a=n?n.apply(t,[t,i]):{},a!==!1&&(r(i.settings,a),i.lastVal=null,e.datepicker._lastInput=t,e.datepicker._setDateFromField(i),e.datepicker._inDialog&&(t.value=""),e.datepicker._pos||(e.datepicker._pos=e.datepicker._findPos(t),e.datepicker._pos[1]+=t.offsetHeight),o=!1,e(t).parents().each(function(){return o|="fixed"===e(this).css("position"),!o}),h={left:e.datepicker._pos[0],top:e.datepicker._pos[1]},e.datepicker._pos=null,i.dpDiv.empty(),i.dpDiv.css({position:"absolute",display:"block",top:"-1000px"}),e.datepicker._updateDatepicker(i),h=e.datepicker._checkOffset(i,h,o),i.dpDiv.css({position:e.datepicker._inDialog&&e.blockUI?"static":o?"fixed":"absolute",display:"none",left:h.left+"px",top:h.top+"px"}),i.inline||(l=e.datepicker._get(i,"showAnim"),u=e.datepicker._get(i,"duration"),i.dpDiv.css("z-index",s(e(t))+1),e.datepicker._datepickerShowing=!0,e.effects&&e.effects.effect[l]?i.dpDiv.show(l,e.datepicker._get(i,"showOptions"),u):i.dpDiv[l||"show"](l?u:null),e.datepicker._shouldFocusInput(i)&&i.input.focus(),e.datepicker._curInst=i))}},_updateDatepicker:function(t){this.maxRows=4,v=t,t.dpDiv.empty().append(this._generateHTML(t)),this._attachHandlers(t);var i,s=this._getNumberOfMonths(t),n=s[1],a=17,r=t.dpDiv.find("."+this._dayOverClass+" a");r.length>0&&o.apply(r.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",a*n+"em"),t.dpDiv[(1!==s[0]||1!==s[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&&(i=t.yearshtml,setTimeout(function(){i===t.yearshtml&&t.yearshtml&&t.dpDiv.find("select.ui-datepicker-year:first").replaceWith(t.yearshtml),i=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,i,s){var n=t.dpDiv.outerWidth(),a=t.dpDiv.outerHeight(),o=t.input?t.input.outerWidth():0,r=t.input?t.input.outerHeight():0,h=document.documentElement.clientWidth+(s?0:e(document).scrollLeft()),l=document.documentElement.clientHeight+(s?0:e(document).scrollTop());return i.left-=this._get(t,"isRTL")?n-o:0,i.left-=s&&i.left===t.input.offset().left?e(document).scrollLeft():0,i.top-=s&&i.top===t.input.offset().top+r?e(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(t){for(var i,s=this._getInst(t),n=this._get(s,"isRTL");t&&("hidden"===t.type||1!==t.nodeType||e.expr.filters.hidden(t));)t=t[n?"previousSibling":"nextSibling"];return i=e(t).offset(),[i.left,i.top]},_hideDatepicker:function(t){var i,s,n,a,o=this._curInst;!o||t&&o!==e.data(t,"datepicker")||this._datepickerShowing&&(i=this._get(o,"showAnim"),s=this._get(o,"duration"),n=function(){e.datepicker._tidyDialog(o)},e.effects&&(e.effects.effect[i]||e.effects[i])?o.dpDiv.hide(i,e.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"}),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 i=e(t.target),s=e.datepicker._getInst(i[0]);(i[0].id!==e.datepicker._mainDivId&&0===i.parents("#"+e.datepicker._mainDivId).length&&!i.hasClass(e.datepicker.markerClassName)&&!i.closest("."+e.datepicker._triggerClass).length&&e.datepicker._datepickerShowing&&(!e.datepicker._inDialog||!e.blockUI)||i.hasClass(e.datepicker.markerClassName)&&e.datepicker._curInst!==s)&&e.datepicker._hideDatepicker()}},_adjustDate:function(t,i,s){var n=e(t),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(t){var i,s=e(t),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(t,i,s){var n=e(t),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(t,i,s,n){var a,o=e(t);e(n).hasClass(this._unselectableClass)||this._isDisabledDatepicker(o[0])||(a=this._getInst(o[0]),a.selectedDay=a.currentDay=e("a",n).html(),a.selectedMonth=a.currentMonth=i,a.selectedYear=a.currentYear=s,this._selectDate(t,this._formatDate(a,a.currentDay,a.currentMonth,a.currentYear)))},_clearDate:function(t){var i=e(t);this._selectDate(i,"")},_selectDate:function(t,i){var s,n=e(t),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(t){var i,s,n,a=this._get(t,"altField");a&&(i=this._get(t,"altFormat")||this._get(t,"dateFormat"),s=this._getDate(t),n=this.formatDate(i,s,this._getFormatConfig(t)),e(a).each(function(){e(this).val(n)}))},noWeekends:function(e){var t=e.getDay();return[t>0&&6>t,""]},iso8601Week:function(e){var t,i=new Date(e.getTime());return i.setDate(i.getDate()+4-(i.getDay()||7)),t=i.getTime(),i.setMonth(0),i.setDate(1),Math.floor(Math.round((t-i)/864e5)/7)+1},parseDate:function(t,i,s){if(null==t||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),d=(s?s.dayNamesShort:null)||this._defaults.dayNamesShort,c=(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,y=-1,b=!1,_=function(e){var i=t.length>n+1&&t.charAt(n+1)===e;return i&&n++,i},x=function(e){var t=_(e),s="@"===e?14:"!"===e?20:"y"===e&&t?4:"o"===e?3:2,n="y"===e?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(t,s,n){var a=-1,o=e.map(_(t)?n:s,function(e,t){return[[t,e]]}).sort(function(e,t){return-(e[1].length-t[1].length)});if(e.each(o,function(e,t){var s=t[1];return i.substr(h,s.length).toLowerCase()===s.toLowerCase()?(a=t[0],h+=s.length,!1):void 0}),-1!==a)return a+1;throw"Unknown name at position "+h},k=function(){if(i.charAt(h)!==t.charAt(n))throw"Unexpected literal at position "+h;h++};for(n=0;t.length>n;n++)if(b)"'"!==t.charAt(n)||_("'")?k():b=!1;else switch(t.charAt(n)){case"d":v=x("d");break;case"D":w("D",d,c);break;case"o":y=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"'":_("'")?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)),y>-1)for(g=1,v=y;;){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(e,t,i){if(!t)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(t){var i=e.length>s+1&&e.charAt(s+1)===t;return i&&s++,i},l=function(e,t,i){var s=""+t;if(h(e))for(;i>s.length;)s="0"+s;return s},u=function(e,t,i,s){return h(e)?s[t]:i[t]},d="",c=!1;if(t)for(s=0;e.length>s;s++)if(c)"'"!==e.charAt(s)||h("'")?d+=e.charAt(s):c=!1;else switch(e.charAt(s)){case"d":d+=l("d",t.getDate(),2);break;case"D":d+=u("D",t.getDay(),n,a);break;case"o":d+=l("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+=l("m",t.getMonth()+1,2);break;case"M":d+=u("M",t.getMonth(),o,r);break;case"y":d+=h("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"'":h("'")?d+="'":c=!0;break;default:d+=e.charAt(s)}return d},_possibleChars:function(e){var t,i="",s=!1,n=function(i){var s=e.length>t+1&&e.charAt(t+1)===i;return s&&t++,s};for(t=0;e.length>t;t++)if(s)"'"!==e.charAt(t)||n("'")?i+=e.charAt(t):s=!1;else switch(e.charAt(t)){case"d":case"m":case"y":case"@":i+="0123456789";break;case"D":case"M":return null;case"'":n("'")?i+="'":s=!0;break;default:i+=e.charAt(t)}return i},_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 i=this._get(e,"dateFormat"),s=e.lastVal=e.input?e.input.val():null,n=this._getDefaultDate(e),a=n,o=this._getFormatConfig(e);try{a=this.parseDate(i,s,o)||n}catch(r){s=t?"":s}e.selectedDay=a.getDate(),e.drawMonth=e.selectedMonth=a.getMonth(),e.drawYear=e.selectedYear=a.getFullYear(),e.currentDay=s?a.getDate():0,e.currentMonth=s?a.getMonth():0,e.currentYear=s?a.getFullYear():0,this._adjustInstDate(e)}},_getDefaultDate:function(e){return this._restrictMinMax(e,this._determineDate(e,this._get(e,"defaultDate"),new Date))},_determineDate:function(t,i,s){var n=function(e){var t=new Date;return t.setDate(t.getDate()+e),t},a=function(i){try{return e.datepicker.parseDate(e.datepicker._get(t,"dateFormat"),i,e.datepicker._getFormatConfig(t))}catch(s){}for(var n=(i.toLowerCase().match(/^c/)?e.datepicker._getDate(t):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,e.datepicker._getDaysInMonth(a,o));break;case"y":case"Y":a+=parseInt(l[1],10),r=Math.min(r,e.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(e){return e?(e.setHours(e.getHours()>12?e.getHours()+2:0),e):null},_setDate:function(e,t,i){var s=!t,n=e.selectedMonth,a=e.selectedYear,o=this._restrictMinMax(e,this._determineDate(e,t,new Date));e.selectedDay=e.currentDay=o.getDate(),e.drawMonth=e.selectedMonth=e.currentMonth=o.getMonth(),e.drawYear=e.selectedYear=e.currentYear=o.getFullYear(),n===e.selectedMonth&&a===e.selectedYear||i||this._notifyChange(e),this._adjustInstDate(e),e.input&&e.input.val(s?"":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 i=this._get(t,"stepMonths"),s="#"+t.id.replace(/\\\\/g,"\\");t.dpDiv.find("[data-handler]").map(function(){var t={prev:function(){e.datepicker._adjustDate(s,-i,"M")},next:function(){e.datepicker._adjustDate(s,+i,"M")},hide:function(){e.datepicker._hideDatepicker()},today:function(){e.datepicker._gotoToday(s)},selectDay:function(){return e.datepicker._selectDay(s,+this.getAttribute("data-month"),+this.getAttribute("data-year"),this),!1},selectMonth:function(){return e.datepicker._selectMonthYear(s,this,"M"),!1},selectYear:function(){return e.datepicker._selectMonthYear(s,this,"Y"),!1}};e(this).bind(this.getAttribute("data-event"),t[this.getAttribute("data-handler")])})},_generateHTML:function(e){var t,i,s,n,a,o,r,h,l,u,d,c,p,f,m,g,v,y,b,_,x,w,k,T,D,S,M,C,N,A,I,P,z,H,F,E,O,j,W,L=new Date,R=this._daylightSavingAdjust(new Date(L.getFullYear(),L.getMonth(),L.getDate())),Y=this._get(e,"isRTL"),B=this._get(e,"showButtonPanel"),J=this._get(e,"hideIfNoPrevNext"),q=this._get(e,"navigationAsDateFormat"),K=this._getNumberOfMonths(e),V=this._get(e,"showCurrentAtPos"),U=this._get(e,"stepMonths"),Q=1!==K[0]||1!==K[1],G=this._daylightSavingAdjust(e.currentDay?new Date(e.currentYear,e.currentMonth,e.currentDay):new Date(9999,9,9)),X=this._getMinMaxDate(e,"min"),$=this._getMinMaxDate(e,"max"),Z=e.drawMonth-V,et=e.drawYear;if(0>Z&&(Z+=12,et--),$)for(t=this._daylightSavingAdjust(new Date($.getFullYear(),$.getMonth()-K[0]*K[1]+1,$.getDate())),t=X&&X>t?X:t;this._daylightSavingAdjust(new Date(et,Z,1))>t;)Z--,0>Z&&(Z=11,et--);for(e.drawMonth=Z,e.drawYear=et,i=this._get(e,"prevText"),i=q?this.formatDate(i,this._daylightSavingAdjust(new Date(et,Z-U,1)),this._getFormatConfig(e)):i,s=this._canAdjustMonth(e,-1,et,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(e,"nextText"),n=q?this.formatDate(n,this._daylightSavingAdjust(new Date(et,Z+U,1)),this._getFormatConfig(e)):n,a=this._canAdjustMonth(e,1,et,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(e,"currentText"),r=this._get(e,"gotoCurrent")&&e.currentDay?G:R,o=q?this.formatDate(o,r,this._getFormatConfig(e)):o,h=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>",l=B?"<div class='ui-datepicker-buttonpane ui-widget-content'>"+(Y?h:"")+(this._isInRange(e,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(e,"firstDay"),10),u=isNaN(u)?0:u,d=this._get(e,"showWeek"),c=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"),y=this._get(e,"selectOtherMonths"),b=this._getDefaultDate(e),_="",w=0;K[0]>w;w++){for(k="",this.maxRows=4,T=0;K[1]>T;T++){if(D=this._daylightSavingAdjust(new Date(et,Z,e.selectedDay)),S=" ui-corner-all",M="",Q){if(M+="<div class='ui-datepicker-group",K[1]>1)switch(T){case 0:M+=" ui-datepicker-group-first",S=" ui-corner-"+(Y?"right":"left");break;case K[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(e,Z,et,X,$,w>0||T>0,f,m)+"</div><table class='ui-datepicker-calendar'><thead>"+"<tr>",C=d?"<th class='ui-datepicker-week-col'>"+this._get(e,"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='"+c[N]+"'>"+p[N]+"</span></th>";for(M+=C+"</tr></thead><tbody>",A=this._getDaysInMonth(et,Z),et===e.selectedYear&&Z===e.selectedMonth&&(e.selectedDay=Math.min(e.selectedDay,A)),I=(this._getFirstDayOfMonth(et,Z)-u+7)%7,P=Math.ceil((I+A)/7),z=Q?this.maxRows>P?this.maxRows:P:P,this.maxRows=z,H=this._daylightSavingAdjust(new Date(et,Z,1-I)),F=0;z>F;F++){for(M+="<tr>",E=d?"<td class='ui-datepicker-week-col'>"+this._get(e,"calculateWeek")(H)+"</td>":"",x=0;7>x;x++)O=g?g.apply(e.input?e.input[0]:null,[H]):[!0,""],j=H.getMonth()!==Z,W=j&&!y||!O[0]||X&&X>H||$&&H>$,E+="<td class='"+((x+u+6)%7>=5?" ui-datepicker-week-end":"")+(j?" ui-datepicker-other-month":"")+(H.getTime()===D.getTime()&&Z===e.selectedMonth&&e._keyEvent||b.getTime()===H.getTime()&&b.getTime()===D.getTime()?" "+this._dayOverClass:"")+(W?" "+this._unselectableClass+" ui-state-disabled":"")+(j&&!v?"":" "+O[1]+(H.getTime()===G.getTime()?" "+this._currentClass:"")+(H.getTime()===R.getTime()?" ui-datepicker-today":""))+"'"+(j&&!v||!O[2]?"":" title='"+O[2].replace(/'/g,"&#39;")+"'")+(W?"":" data-handler='selectDay' data-event='click' data-month='"+H.getMonth()+"' data-year='"+H.getFullYear()+"'")+">"+(j&&!v?"&#xa0;":W?"<span class='ui-state-default'>"+H.getDate()+"</span>":"<a class='ui-state-default"+(H.getTime()===R.getTime()?" ui-state-highlight":"")+(H.getTime()===G.getTime()?" ui-state-active":"")+(j?" ui-priority-secondary":"")+"' href='#'>"+H.getDate()+"</a>")+"</td>",H.setDate(H.getDate()+1),H=this._daylightSavingAdjust(H);M+=E+"</tr>"}Z++,Z>11&&(Z=0,et++),M+="</tbody></table>"+(Q?"</div>"+(K[0]>0&&T===K[1]-1?"<div class='ui-datepicker-row-break'></div>":""):""),k+=M}_+=k}return _+=l,e._keyEvent=!1,_},_generateMonthYearHeader:function(e,t,i,s,n,a,o,r){var h,l,u,d,c,p,f,m,g=this._get(e,"changeMonth"),v=this._get(e,"changeYear"),y=this._get(e,"showMonthAfterYear"),b="<div class='ui-datepicker-title'>",_="";if(a||!g)_+="<span class='ui-datepicker-month'>"+o[t]+"</span>";else{for(h=s&&s.getFullYear()===i,l=n&&n.getFullYear()===i,_+="<select class='ui-datepicker-month' data-handler='selectMonth' data-event='change'>",u=0;12>u;u++)(!h||u>=s.getMonth())&&(!l||n.getMonth()>=u)&&(_+="<option value='"+u+"'"+(u===t?" selected='selected'":"")+">"+r[u]+"</option>");_+="</select>"}if(y||(b+=_+(!a&&g&&v?"":"&#xa0;")),!e.yearshtml)if(e.yearshtml="",a||!v)b+="<span class='ui-datepicker-year'>"+i+"</span>";else{for(d=this._get(e,"yearRange").split(":"),c=(new Date).getFullYear(),p=function(e){var t=e.match(/c[+\-].*/)?i+parseInt(e.substring(1),10):e.match(/[+\-].*/)?c+parseInt(e,10):parseInt(e,10);return isNaN(t)?c:t},f=p(d[0]),m=Math.max(f,p(d[1]||"")),f=s?Math.max(f,s.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===i?" selected='selected'":"")+">"+f+"</option>";e.yearshtml+="</select>",b+=e.yearshtml,e.yearshtml=null}return b+=this._get(e,"yearSuffix"),y&&(b+=(!a&&g&&v?"":"&#xa0;")+_),b+="</div>"},_adjustInstDate:function(e,t,i){var s=e.drawYear+("Y"===i?t:0),n=e.drawMonth+("M"===i?t:0),a=Math.min(e.selectedDay,this._getDaysInMonth(s,n))+("D"===i?t:0),o=this._restrictMinMax(e,this._daylightSavingAdjust(new Date(s,n,a)));e.selectedDay=o.getDate(),e.drawMonth=e.selectedMonth=o.getMonth(),e.drawYear=e.selectedYear=o.getFullYear(),("M"===i||"Y"===i)&&this._notifyChange(e)},_restrictMinMax:function(e,t){var i=this._getMinMaxDate(e,"min"),s=this._getMinMaxDate(e,"max"),n=i&&i>t?i:t;return s&&n>s?s: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,i,s){var n=this._getNumberOfMonths(e),a=this._daylightSavingAdjust(new Date(i,s+(0>t?t:n[0]*n[1]),1));return 0>t&&a.setDate(this._getDaysInMonth(a.getFullYear(),a.getMonth())),this._isInRange(e,a)},_isInRange:function(e,t){var i,s,n=this._getMinMaxDate(e,"min"),a=this._getMinMaxDate(e,"max"),o=null,r=null,h=this._get(e,"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||t.getTime()>=n.getTime())&&(!a||t.getTime()<=a.getTime())&&(!o||t.getFullYear()>=o)&&(!r||r>=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,i,s){t||(e.currentDay=e.selectedDay,e.currentMonth=e.selectedMonth,e.currentYear=e.selectedYear);var n=t?"object"==typeof t?t:this._daylightSavingAdjust(new Date(s,i,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 i=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(i)):this.each(function(){"string"==typeof t?e.datepicker["_"+t+"Datepicker"].apply(e.datepicker,[this].concat(i)):e.datepicker._attachDatepicker(this,t)}):e.datepicker["_"+t+"Datepicker"].apply(e.datepicker,[this[0]].concat(i))},e.datepicker=new n,e.datepicker.initialized=!1,e.datepicker.uuid=(new Date).getTime(),e.datepicker.version="1.11.3",e.datepicker,e.widget("ui.draggable",e.ui.mouse,{version:"1.11.3",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")?(this.destroyOnClear=!0,void 0):(this.element.removeClass("ui-draggable ui-draggable-dragging ui-draggable-disabled"),this._removeHandleClassName(),this._mouseDestroy(),void 0)},_mouseCapture:function(t){var i=this.options;return this._blurActiveElement(t),this.helper||i.disabled||e(t.target).closest(".ui-resizable-handle").length>0?!1:(this.handle=this._getHandle(t),this.handle?(this._blockFrames(i.iframeFix===!0?"iframe":i.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 i=this.document[0];if(this.handleElement.is(t.target))try{i.activeElement&&"body"!==i.activeElement.nodeName.toLowerCase()&&e(i.activeElement).blur()}catch(s){}},_mouseStart:function(t){var i=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,i.cursorAt&&this._adjustOffsetFromHelper(i.cursorAt),this._setContainment(),this._trigger("start",t)===!1?(this._clear(),!1):(this._cacheHelperProportions(),e.ui.ddmanager&&!i.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,i){if(this.hasFixedAncestor&&(this.offset.parent=this._getParentOffset()),this.position=this._generatePosition(t,!0),this.positionAbs=this._convertPositionTo("absolute"),!i){var s=this._uiHash();if(this._trigger("drag",t,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",e.ui.ddmanager&&e.ui.ddmanager.drag(this,t),!1},_mouseStop:function(t){var i=this,s=!1;return e.ui.ddmanager&&!this.options.dropBehaviour&&(s=e.ui.ddmanager.drop(this,t)),this.dropped&&(s=this.dropped,this.dropped=!1),"invalid"===this.options.revert&&!s||"valid"===this.options.revert&&s||this.options.revert===!0||e.isFunction(this.options.revert)&&this.options.revert.call(this.element,s)?e(this.helper).animate(this.originalPosition,parseInt(this.options.revertDuration,10),function(){i._trigger("stop",t)!==!1&&i._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 i=this.options,s=e.isFunction(i.helper),n=s?e(i.helper.apply(this.element[0],[t])):"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(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(),i=this.document[0];return"absolute"===this.cssPosition&&this.scrollParent[0]!==i&&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,i,s,n=this.options,a=this.document[0];return this.relativeContainer=null,n.containment?"window"===n.containment?(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()||a.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top],void 0):"document"===n.containment?(this.containment=[0,0,e(a).width()-this.helperProportions.width-this.margins.left,(e(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=e(n.containment),s=i[0],s&&(t=/(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),(t?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,(t?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(e,t){t||(t=this.position);var i="absolute"===e?1:-1,s=this._isRootNode(this.scrollParent[0]);return{top:t.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:t.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(e,t){var i,s,n,a,o=this.options,r=this._isRootNode(this.scrollParent[0]),h=e.pageX,l=e.pageY;return r&&this.offset.scroll||(this.offset.scroll={top:this.scrollParent.scrollTop(),left:this.scrollParent.scrollLeft()}),t&&(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,e.pageX-this.offset.click.left<i[0]&&(h=i[0]+this.offset.click.left),e.pageY-this.offset.click.top<i[1]&&(l=i[1]+this.offset.click.top),e.pageX-this.offset.click.left>i[2]&&(h=i[2]+this.offset.click.left),e.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)}},_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,i,s){return s=s||this._uiHash(),e.ui.plugin.call(this,t,[i,s,this],!0),/^(drag|start|stop)/.test(t)&&(this.positionAbs=this._convertPositionTo("absolute"),s.offset=this.positionAbs),e.Widget.prototype._trigger.call(this,t,i,s)},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,i,s){var n=e.extend({},i,{item:s.element});s.sortables=[],e(s.options.connectToSortable).each(function(){var i=e(this).sortable("instance");i&&!i.options.disabled&&(s.sortables.push(i),i.refreshPositions(),i._trigger("activate",t,n))})},stop:function(t,i,s){var n=e.extend({},i,{item:s.element});s.cancelHelperRemoval=!1,e.each(s.sortables,function(){var e=this;e.isOver?(e.isOver=0,s.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,i,s){e.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,e.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)&&e.contains(a.element[0],this.element[0])&&(n=!1),n})),n?(a.isOver||(a.isOver=1,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]},t.target=a.currentItem[0],a._mouseCapture(t,!0),a._mouseStart(t,!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",t),s.dropped=a.element,e.each(s.sortables,function(){this.refreshPositions()}),s.currentItem=s.element,a.fromOutside=s),a.currentItem&&(a._mouseDrag(t),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",t,a._uiHash(a)),a._mouseStop(t,!0),a.options.revert=a.options._revert,a.options.helper=a.options._helper,a.placeholder&&a.placeholder.remove(),s._refreshOffsets(t),i.position=s._generatePosition(t,!0),s._trigger("fromSortable",t),s.dropped=!1,e.each(s.sortables,function(){this.refreshPositions()}))})}}),e.ui.plugin.add("draggable","cursor",{start:function(t,i,s){var n=e("body"),a=s.options;n.css("cursor")&&(a._cursor=n.css("cursor")),n.css("cursor",a.cursor)},stop:function(t,i,s){var n=s.options;n._cursor&&e("body").css("cursor",n._cursor)}}),e.ui.plugin.add("draggable","opacity",{start:function(t,i,s){var n=e(i.helper),a=s.options;n.css("opacity")&&(a._opacity=n.css("opacity")),n.css("opacity",a.opacity)},stop:function(t,i,s){var n=s.options;n._opacity&&e(i.helper).css("opacity",n._opacity)}}),e.ui.plugin.add("draggable","scroll",{start:function(e,t,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(t,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-t.pageY<n.scrollSensitivity?o.scrollTop=a=o.scrollTop+n.scrollSpeed:t.pageY-s.overflowOffset.top<n.scrollSensitivity&&(o.scrollTop=a=o.scrollTop-n.scrollSpeed)),n.axis&&"y"===n.axis||(s.overflowOffset.left+o.offsetWidth-t.pageX<n.scrollSensitivity?o.scrollLeft=a=o.scrollLeft+n.scrollSpeed:t.pageX-s.overflowOffset.left<n.scrollSensitivity&&(o.scrollLeft=a=o.scrollLeft-n.scrollSpeed))):(n.axis&&"x"===n.axis||(t.pageY-e(r).scrollTop()<n.scrollSensitivity?a=e(r).scrollTop(e(r).scrollTop()-n.scrollSpeed):e(window).height()-(t.pageY-e(r).scrollTop())<n.scrollSensitivity&&(a=e(r).scrollTop(e(r).scrollTop()+n.scrollSpeed))),n.axis&&"y"===n.axis||(t.pageX-e(r).scrollLeft()<n.scrollSensitivity?a=e(r).scrollLeft(e(r).scrollLeft()-n.scrollSpeed):e(window).width()-(t.pageX-e(r).scrollLeft())<n.scrollSensitivity&&(a=e(r).scrollLeft(e(r).scrollLeft()+n.scrollSpeed)))),a!==!1&&e.ui.ddmanager&&!n.dropBehaviour&&e.ui.ddmanager.prepareOffsets(s,t)}}),e.ui.plugin.add("draggable","snap",{start:function(t,i,s){var n=s.options;s.snapElements=[],e(n.snap.constructor!==String?n.snap.items||":data(ui-draggable)":n.snap).each(function(){var t=e(this),i=t.offset();this!==s.element[0]&&s.snapElements.push({item:this,width:t.outerWidth(),height:t.outerHeight(),top:i.top,left:i.left})})},drag:function(t,i,s){var n,a,o,r,h,l,u,d,c,p,f=s.options,m=f.snapTolerance,g=i.offset.left,v=g+s.helperProportions.width,y=i.offset.top,b=y+s.helperProportions.height;for(c=s.snapElements.length-1;c>=0;c--)h=s.snapElements[c].left-s.margins.left,l=h+s.snapElements[c].width,u=s.snapElements[c].top-s.margins.top,d=u+s.snapElements[c].height,h-m>v||g>l+m||u-m>b||y>d+m||!e.contains(s.snapElements[c].item.ownerDocument,s.snapElements[c].item)?(s.snapElements[c].snapping&&s.options.snap.release&&s.options.snap.release.call(s.element,t,e.extend(s._uiHash(),{snapItem:s.snapElements[c].item})),s.snapElements[c].snapping=!1):("inner"!==f.snapMode&&(n=m>=Math.abs(u-b),a=m>=Math.abs(d-y),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:d,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-y),a=m>=Math.abs(d-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:d-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[c].snapping&&(n||a||o||r||p)&&s.options.snap.snap&&s.options.snap.snap.call(s.element,t,e.extend(s._uiHash(),{snapItem:s.snapElements[c].item})),s.snapElements[c].snapping=n||a||o||r||p)}}),e.ui.plugin.add("draggable","stack",{start:function(t,i,s){var n,a=s.options,o=e.makeArray(e(a.stack)).sort(function(t,i){return(parseInt(e(t).css("zIndex"),10)||0)-(parseInt(e(i).css("zIndex"),10)||0)});o.length&&(n=parseInt(e(o[0]).css("zIndex"),10)||0,e(o).each(function(t){e(this).css("zIndex",n+t)}),this.css("zIndex",n+o.length))}}),e.ui.plugin.add("draggable","zIndex",{start:function(t,i,s){var n=e(i.helper),a=s.options;n.css("zIndex")&&(a._zIndex=n.css("zIndex")),n.css("zIndex",a.zIndex)},stop:function(t,i,s){var n=s.options;n._zIndex&&e(i.helper).css("zIndex",n._zIndex)}}),e.ui.draggable,e.widget("ui.resizable",e.ui.mouse,{version:"1.11.3",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,i){if("hidden"===e(t).css("overflow"))return!1;var s=i&&"left"===i?"scrollLeft":"scrollTop",n=!1;return t[s]>0?!0:(t[s]=1,n=t[s]>0,t[s]=0,n)},_create:function(){var t,i,s,n,a,o=this,r=this.options;if(this.element.addClass("ui-resizable"),e.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(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=r.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.constructor===String)for("all"===this.handles&&(this.handles="n,e,s,w,se,sw,ne,nw"),t=this.handles.split(","),this.handles={},i=0;t.length>i;i++)s=e.trim(t[i]),a="ui-resizable-"+s,n=e("<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(t){var i,s,n,a;t=t||this.element;for(i in this.handles)this.handles[i].constructor===String&&(this.handles[i]=this.element.children(this.handles[i]).first().show()),this.elementIsWrapper&&this.originalElement[0].nodeName.match(/^(textarea|input|select|button)$/i)&&(s=e(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(""),t.css(n,a),this._proportionallyResize()),e(this.handles[i]).length},this._renderAxis(this.element),this._handles=e(".ui-resizable-handle",this.element).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(),e(this.element).addClass("ui-resizable-autohide").mouseenter(function(){r.disabled||(e(this).removeClass("ui-resizable-autohide"),o._handles.show())}).mouseleave(function(){r.disabled||o.resizing||(e(this).addClass("ui-resizable-autohide"),o._handles.hide())})),this._mouseInit()},_destroy:function(){this._mouseDestroy();var t,i=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&&(i(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),i(this.originalElement),this},_mouseCapture:function(t){var i,s,n=!1;for(i in this.handles)s=e(this.handles[i])[0],(s===t.target||e.contains(s,t.target))&&(n=!0);return!this.options.disabled&&n},_mouseStart:function(t){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+=e(a.containment).scrollLeft()||0,s+=e(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:t.pageX,top:t.pageY},this.aspectRatio="number"==typeof a.aspectRatio?a.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),o.addClass("ui-resizable-resizing"),this._propagate("start",t),!0},_mouseDrag:function(t){var i,s,n=this.originalMousePosition,a=this.axis,o=t.pageX-n.left||0,r=t.pageY-n.top||0,h=this._change[a];return this._updatePrevProperties(),h?(i=h.apply(this,[t,o,r]),this._updateVirtualBoundaries(t.shiftKey),(this._aspectRatio||t.shiftKey)&&(i=this._updateRatio(i,t)),i=this._respectSize(i,t),this._updateCache(i),this._propagate("resize",t),s=this._applyChanges(),!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize(),e.isEmptyObject(s)||(this._updatePrevProperties(),this._trigger("resize",t,this.ui()),this._applyChanges()),!1):!1},_mouseStop:function(t){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(e.extend(o,{top:h,left:r})),u.helper.height(u.size.height),u.helper.width(u.size.width),this._helper&&!l.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,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||e)&&(t=a.minHeight*this.aspectRatio,s=a.minWidth/this.aspectRatio,i=a.maxHeight*this.aspectRatio,n=a.maxWidth/this.aspectRatio,t>a.minWidth&&(a.minWidth=t),s>a.minHeight&&(a.minHeight=s),a.maxWidth>i&&(a.maxWidth=i),a.maxHeight>n&&(a.maxHeight=n)),this._vBoundaries=a},_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,i=this.size,s=this.axis;return this._isNumber(e.height)?e.width=e.height*this.aspectRatio:this._isNumber(e.width)&&(e.height=e.width/this.aspectRatio),"sw"===s&&(e.left=t.left+(i.width-e.width),e.top=null),"nw"===s&&(e.top=t.top+(i.height-e.height),e.left=t.left+(i.width-e.width)),e},_respectSize:function(e){var t=this._vBoundaries,i=this.axis,s=this._isNumber(e.width)&&t.maxWidth&&t.maxWidth<e.width,n=this._isNumber(e.height)&&t.maxHeight&&t.maxHeight<e.height,a=this._isNumber(e.width)&&t.minWidth&&t.minWidth>e.width,o=this._isNumber(e.height)&&t.minHeight&&t.minHeight>e.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&&(e.width=t.minWidth),o&&(e.height=t.minHeight),s&&(e.width=t.maxWidth),n&&(e.height=t.maxHeight),a&&l&&(e.left=r-t.minWidth),s&&l&&(e.left=r-t.maxWidth),o&&u&&(e.top=h-t.minHeight),n&&u&&(e.top=h-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,i=[],s=[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++)i[t]=parseInt(s[t],10)||0,i[t]+=parseInt(n[t],10)||0;return{height:i[0]+i[2],width:i[1]+i[3]}},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var e,t=0,i=this.helper||this.element;this._proportionallyResizeElements.length>t;t++)e=this._proportionallyResizeElements[t],this.outerDimensions||(this.outerDimensions=this._getPaddingPlusBorderDimensions(e)),e.css({height:i.height()-this.outerDimensions.height||0,width:i.width()-this.outerDimensions.width||0})},_renderProxy:function(){var t=this.element,i=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:++i.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 i=this.originalSize,s=this.originalPosition;return{left:s.left+t,width:i.width-t}},n:function(e,t,i){var s=this.originalSize,n=this.originalPosition;return{top:n.top+i,height:s.height-i}},s:function(e,t,i){return{height:this.originalSize.height+i}},se:function(t,i,s){return e.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[t,i,s]))},sw:function(t,i,s){return e.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[t,i,s]))},ne:function(t,i,s){return e.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[t,i,s]))},nw:function(t,i,s){return e.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[t,i,s]))}},_propagate:function(t,i){e.ui.plugin.call(this,t,[i,this.ui()]),"resize"!==t&&this._trigger(t,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}}}),e.ui.plugin.add("resizable","animate",{stop:function(t){var i=e(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(e.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&&e(n[0]).css({width:s.width,height:s.height}),i._updateCache(s),i._propagate("resize",t)}})}}),e.ui.plugin.add("resizable","containment",{start:function(){var t,i,s,n,a,o,r,h=e(this).resizable("instance"),l=h.options,u=h.element,d=l.containment,c=d instanceof e?d.get(0):/parent/.test(d)?u.parent().get(0):d;c&&(h.containerElement=e(c),/document/.test(d)||d===document?(h.containerOffset={left:0,top:0},h.containerPosition={left:0,top:0},h.parentData={element:e(document),left:0,top:0,width:e(document).width(),height:e(document).height()||document.body.parentNode.scrollHeight}):(t=e(c),i=[],e(["Top","Right","Left","Bottom"]).each(function(e,s){i[e]=h._num(t.css("padding"+s))}),h.containerOffset=t.offset(),h.containerPosition=t.position(),h.containerSize={height:t.innerHeight()-i[3],width:t.innerWidth()-i[1]},s=h.containerOffset,n=h.containerSize.height,a=h.containerSize.width,o=h._hasScroll(c,"left")?c.scrollWidth:a,r=h._hasScroll(c)?c.scrollHeight:n,h.parentData={element:c,left:s.left,top:s.top,width:o,height:r}))},resize:function(t){var i,s,n,a,o=e(this).resizable("instance"),r=o.options,h=o.containerOffset,l=o.position,u=o._aspectRatio||t.shiftKey,d={top:0,left:0},c=o.containerElement,p=!0;c[0]!==document&&/static/.test(c.css("position"))&&(d=h),l.left<(o._helper?h.left:0)&&(o.size.width=o.size.width+(o._helper?o.position.left-h.left:o.position.left-d.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-d.left:o.offset.left-h.left)),s=Math.abs(o.sizeDiff.height+(o._helper?o.offset.top-d.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 t=e(this).resizable("instance"),i=t.options,s=t.containerOffset,n=t.containerPosition,a=t.containerElement,o=e(t.helper),r=o.offset(),h=o.outerWidth()-t.sizeDiff.width,l=o.outerHeight()-t.sizeDiff.height;t._helper&&!i.animate&&/relative/.test(a.css("position"))&&e(this).css({left:r.left-n.left-s.left,width:h,height:l}),t._helper&&!i.animate&&/static/.test(a.css("position"))&&e(this).css({left:r.left-n.left-s.left,width:h,height:l})}}),e.ui.plugin.add("resizable","alsoResize",{start:function(){var t=e(this).resizable("instance"),i=t.options,s=function(t){e(t).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)})})};"object"!=typeof i.alsoResize||i.alsoResize.parentNode?s(i.alsoResize):i.alsoResize.length?(i.alsoResize=i.alsoResize[0],s(i.alsoResize)):e.each(i.alsoResize,function(e){s(e)})},resize:function(t,i){var s=e(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},h=function(t,s){e(t).each(function(){var t=e(this),n=e(this).data("ui-resizable-alsoresize"),a={},o=s&&s.length?s:t.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];e.each(o,function(e,t){var i=(n[t]||0)+(r[t]||0);i&&i>=0&&(a[t]=i||null)}),t.css(a)})};"object"!=typeof n.alsoResize||n.alsoResize.nodeType?h(n.alsoResize):e.each(n.alsoResize,function(e,t){h(e,t)})},stop:function(){e(this).removeData("resizable-alsoresize")}}),e.ui.plugin.add("resizable","ghost",{start:function(){var t=e(this).resizable("instance"),i=t.options,s=t.size;t.ghost=t.originalElement.clone(),t.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:""),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,i=e(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,d=Math.round((n.width-a.width)/l)*l,c=Math.round((n.height-a.height)/u)*u,p=a.width+d,f=a.height+c,m=s.maxWidth&&p>s.maxWidth,g=s.maxHeight&&f>s.maxHeight,v=s.minWidth&&s.minWidth>p,y=s.minHeight&&s.minHeight>f;s.grid=h,v&&(p+=l),y&&(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-c):/^(sw)$/.test(r)?(i.size.width=p,i.size.height=f,i.position.left=o.left-d):((0>=f-u||0>=p-l)&&(t=i._getPaddingPlusBorderDimensions(this)),f-u>0?(i.size.height=f,i.position.top=o.top-c):(f=u-t.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-d):(p=l-t.width,i.size.width=p,i.position.left=o.left+a.width-p))}}),e.ui.resizable,e.widget("ui.dialog",{version:"1.11.3",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 i=e(this).css(t).offset().top;0>i&&e(this).css("top",t.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&&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._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 i,s=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{i=this.document[0].activeElement,i&&"body"!==i.nodeName.toLowerCase()&&e(i).blur()}catch(n){}this._hide(this.uiDialog,this.options.hide,function(){s._trigger("close",t)})}},isOpen:function(){return this._isOpen},moveToTop:function(){this._moveToTop()},_moveToTop:function(t,i){var s=!1,n=this.uiDialog.siblings(".ui-front:visible").map(function(){return+e(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",t),s},open:function(){var t=this;return this._isOpen?(this._moveToTop()&&this._focusTabbable(),void 0):(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(),this._trigger("open"),void 0)},_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 i(){var t=this.document[0].activeElement,i=this.uiDialog[0]===t||e.contains(this.uiDialog[0],t);i||this._focusTabbable()}t.preventDefault(),i.call(this),this._delay(i)},_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(),this.close(t),void 0;
-if(t.keyCode===e.ui.keyCode.TAB&&!t.isDefaultPrevented()){var i=this.uiDialog.find(":tabbable"),s=i.filter(":first"),n=i.filter(":last");t.target!==n[0]&&t.target!==this.uiDialog[0]||t.shiftKey?t.target!==s[0]&&t.target!==this.uiDialog[0]||!t.shiftKey||(this._delay(function(){n.focus()}),t.preventDefault()):(this._delay(function(){s.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,i=this.options.buttons;return this.uiDialogButtonPane.remove(),this.uiButtonSet.empty(),e.isEmptyObject(i)||e.isArray(i)&&!i.length?(this.uiDialog.removeClass("ui-dialog-buttons"),void 0):(e.each(i,function(i,s){var n,a;s=e.isFunction(s)?{click:s,text:i}:s,s=e.extend({type:"button"},s),n=s.click,s.click=function(){n.apply(t.element[0],arguments)},a={icons:s.icons,text:s.showText},delete s.icons,delete s.showText,e("<button></button>",s).button(a).appendTo(t.uiButtonSet)}),this.uiDialog.addClass("ui-dialog-buttons"),this.uiDialogButtonPane.appendTo(this.uiDialog),void 0)},_makeDraggable:function(){function t(e){return{position:e.position,offset:e.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){e(this).addClass("ui-dialog-dragging"),i._blockFrames(),i._trigger("dragStart",s,t(n))},drag:function(e,s){i._trigger("drag",e,t(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},e(this).removeClass("ui-dialog-dragging"),i._unblockFrames(),i._trigger("dragStop",n,t(a))}})},_makeResizable:function(){function t(e){return{originalPosition:e.originalPosition,originalSize:e.originalSize,position:e.position,size:e.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){e(this).addClass("ui-dialog-resizing"),i._blockFrames(),i._trigger("resizeStart",s,t(n))},resize:function(e,s){i._trigger("resize",e,t(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},e(this).removeClass("ui-dialog-resizing"),i._unblockFrames(),i._trigger("resizeStop",n,t(a))}}).css("position",a)},_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(),i=e.inArray(this,t);-1!==i&&t.splice(i,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 i=this,s=!1,n={};e.each(t,function(e,t){i._setOption(e,t),e in i.sizeRelatedOptions&&(s=!0),e in i.resizableRelatedOptions&&(n[e]=t)}),s&&(this._size(),this._position()),this.uiDialog.is(":data(ui-resizable)")&&this.uiDialog.resizable("option",n)},_setOption:function(e,t){var i,s,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&&(i=n.is(":data(ui-draggable)"),i&&!t&&n.draggable("destroy"),!i&&t&&this._makeDraggable()),"position"===e&&this._position(),"resizable"===e&&(s=n.is(":data(ui-resizable)"),s&&!t&&n.resizable("destroy"),s&&"string"==typeof t&&n.resizable("option","handles",t),s||t===!1||this._makeResizable()),"title"===e&&this._title(this.uiDialogTitlebar.find(".ui-dialog-title")))},_size:function(){var e,t,i,s=this.options;this.element.show().css({width:"auto",minHeight:0,maxHeight:"none",height:0}),s.minWidth>s.width&&(s.width=s.minWidth),e=this.uiDialog.css({height:"auto",width:s.width}).outerHeight(),t=Math.max(0,s.minHeight-e),i="number"==typeof s.maxHeight?Math.max(0,s.maxHeight-e):"none","auto"===s.height?this.element.css({minHeight:t,maxHeight:i,height:"auto"}):this.element.height(Math.max(0,s.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.droppable",{version:"1.11.3",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,i=this.options,s=i.accept;this.isover=!1,this.isout=!0,this.accept=e.isFunction(s)?s:function(e){return e.is(s)},this.proportions=function(){return arguments.length?(t=arguments[0],void 0):t?t:t={width:this.element[0].offsetWidth,height:this.element[0].offsetHeight}},this._addToManager(i.scope),i.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,i){if("accept"===t)this.accept=e.isFunction(i)?i:function(e){return e.is(i)};else if("scope"===t){var s=e.ui.ddmanager.droppables[this.options.scope];this._splice(s),this._addToManager(i)}this._super(t,i)},_activate:function(t){var i=e.ui.ddmanager.current;this.options.activeClass&&this.element.addClass(this.options.activeClass),i&&this._trigger("activate",t,this.ui(i))},_deactivate:function(t){var i=e.ui.ddmanager.current;this.options.activeClass&&this.element.removeClass(this.options.activeClass),i&&this._trigger("deactivate",t,this.ui(i))},_over:function(t){var i=e.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",t,this.ui(i)))},_out:function(t){var i=e.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",t,this.ui(i)))},_drop:function(t,i){var s=i||e.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=e(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)&&e.ui.intersect(s,e.extend(i,{offset:i.element.offset()}),i.options.tolerance,t)?(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",t,this.ui(s)),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,i){return e>=t&&t+i>e}return function(t,i,s,n){if(!i.offset)return!1;var a=(t.positionAbs||t.position.absolute).left+t.margins.left,o=(t.positionAbs||t.position.absolute).top+t.margins.top,r=a+t.helperProportions.width,h=o+t.helperProportions.height,l=i.offset.left,u=i.offset.top,d=l+i.proportions().width,c=u+i.proportions().height;switch(s){case"fit":return a>=l&&d>=r&&o>=u&&c>=h;case"intersect":return a+t.helperProportions.width/2>l&&d>r-t.helperProportions.width/2&&o+t.helperProportions.height/2>u&&c>h-t.helperProportions.height/2;case"pointer":return e(n.pageY,u,i.proportions().height)&&e(n.pageX,l,i.proportions().width);case"touch":return(o>=u&&c>=o||h>=u&&c>=h||u>o&&h>c)&&(a>=l&&d>=a||r>=l&&d>=r||l>a&&r>d);default:return!1}}}(),e.ui.ddmanager={current:null,droppables:{"default":[]},prepareOffsets:function(t,i){var s,n,a=e.ui.ddmanager.droppables[t.options.scope]||[],o=i?i.type:null,r=(t.currentItem||t.element).find(":data(ui-droppable)").addBack();e:for(s=0;a.length>s;s++)if(!(a[s].options.disabled||t&&!a[s].accept.call(a[s].element[0],t.currentItem||t.element))){for(n=0;r.length>n;n++)if(r[n]===a[s].element[0]){a[s].proportions().height=0;continue e}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(t,i){var s=!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,i)&&(s=this._drop.call(this,i)||s),!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,i)))}),s},dragStart:function(t,i){t.element.parentsUntil("body").bind("scroll.droppable",function(){t.options.refreshPositions||e.ui.ddmanager.prepareOffsets(t,i)})},drag:function(t,i){t.options.refreshPositions&&e.ui.ddmanager.prepareOffsets(t,i),e.each(e.ui.ddmanager.droppables[t.options.scope]||[],function(){if(!this.options.disabled&&!this.greedyChild&&this.visible){var s,n,a,o=e.ui.intersect(t,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 e(this).droppable("instance").options.scope===n}),a.length&&(s=e(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(t,i){t.element.parentsUntil("body").unbind("scroll.droppable"),t.options.refreshPositions||e.ui.ddmanager.prepareOffsets(t,i)}},e.ui.droppable;var y="ui-effects-",b=e;e.effects={effect:{}},function(e,t){function i(e,t,i){var s=d[t.type]||{};return null==e?i||!t.def?null:t.def:(e=s.floor?~~e:parseFloat(e),isNaN(e)?t.def:s.mod?(e+s.mod)%s.mod:0>e?0:e>s.max?s.max:e)}function s(i){var s=l(),n=s._rgba=[];return i=i.toLowerCase(),f(h,function(e,a){var o,r=a.re.exec(i),h=r&&a.parse(r),l=a.space||"rgba";return h?(o=s[l](h),s[u[l].cache]=o[u[l].cache],n=s._rgba=o._rgba,!1):t}),n.length?("0,0,0,0"===n.join()&&e.extend(n,a.transparent),s):a[i]}function n(e,t,i){return i=(i+1)%1,1>6*i?e+6*(t-e)*i:1>2*i?t:2>3*i?e+6*(t-e)*(2/3-i):e}var a,o="backgroundColor borderBottomColor borderLeftColor borderRightColor borderTopColor color columnRuleColor outlineColor textDecorationColor textEmphasisColor",r=/^([\-+])=\s*(\d+\.?\d*)/,h=[{re:/rgba?\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,parse:function(e){return[e[1],e[2],e[3],e[4]]}},{re:/rgba?\(\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,parse:function(e){return[2.55*e[1],2.55*e[2],2.55*e[3],e[4]]}},{re:/#([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})/,parse:function(e){return[parseInt(e[1],16),parseInt(e[2],16),parseInt(e[3],16)]}},{re:/#([a-f0-9])([a-f0-9])([a-f0-9])/,parse:function(e){return[parseInt(e[1]+e[1],16),parseInt(e[2]+e[2],16),parseInt(e[3]+e[3],16)]}},{re:/hsla?\(\s*(\d+(?:\.\d+)?)\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,space:"hsla",parse:function(e){return[e[1],e[2]/100,e[3]/100,e[4]]}}],l=e.Color=function(t,i,s,n){return new e.Color.fn.parse(t,i,s,n)},u={rgba:{props:{red:{idx:0,type:"byte"},green:{idx:1,type:"byte"},blue:{idx:2,type:"byte"}}},hsla:{props:{hue:{idx:0,type:"degrees"},saturation:{idx:1,type:"percent"},lightness:{idx:2,type:"percent"}}}},d={"byte":{floor:!0,max:255},percent:{max:1},degrees:{mod:360,floor:!0}},c=l.support={},p=e("<p>")[0],f=e.each;p.style.cssText="background-color:rgba(1,1,1,.5)",c.rgba=p.style.backgroundColor.indexOf("rgba")>-1,f(u,function(e,t){t.cache="_"+e,t.props.alpha={idx:3,type:"percent",def:1}}),l.fn=e.extend(l.prototype,{parse:function(n,o,r,h){if(n===t)return this._rgba=[null,null,null,null],this;(n.jquery||n.nodeType)&&(n=e(n).css(o),o=t);var d=this,c=e.type(n),p=this._rgba=[];return o!==t&&(n=[n,o,r,h],c="array"),"string"===c?this.parse(s(n)||a._default):"array"===c?(f(u.rgba.props,function(e,t){p[t.idx]=i(n[t.idx],t)}),this):"object"===c?(n instanceof l?f(u,function(e,t){n[t.cache]&&(d[t.cache]=n[t.cache].slice())}):f(u,function(t,s){var a=s.cache;f(s.props,function(e,t){if(!d[a]&&s.to){if("alpha"===e||null==n[e])return;d[a]=s.to(d._rgba)}d[a][t.idx]=i(n[e],t,!0)}),d[a]&&0>e.inArray(null,d[a].slice(0,3))&&(d[a][3]=1,s.from&&(d._rgba=s.from(d[a])))}),this):t},is:function(e){var i=l(e),s=!0,n=this;return f(u,function(e,a){var o,r=i[a.cache];return r&&(o=n[a.cache]||a.to&&a.to(n._rgba)||[],f(a.props,function(e,i){return null!=r[i.idx]?s=r[i.idx]===o[i.idx]:t})),s}),s},_space:function(){var e=[],t=this;return f(u,function(i,s){t[s.cache]&&e.push(i)}),e.pop()},transition:function(e,t){var s=l(e),n=s._space(),a=u[n],o=0===this.alpha()?l("transparent"):this,r=o[a.cache]||a.to(o._rgba),h=r.slice();return s=s[a.cache],f(a.props,function(e,n){var a=n.idx,o=r[a],l=s[a],u=d[n.type]||{};null!==l&&(null===o?h[a]=l:(u.mod&&(l-o>u.mod/2?o+=u.mod:o-l>u.mod/2&&(o-=u.mod)),h[a]=i((l-o)*t+o,n)))}),this[n](h)},blend:function(t){if(1===this._rgba[3])return this;var i=this._rgba.slice(),s=i.pop(),n=l(t)._rgba;return l(e.map(i,function(e,t){return(1-s)*n[t]+s*e}))},toRgbaString:function(){var t="rgba(",i=e.map(this._rgba,function(e,t){return null==e?t>2?1:0:e});return 1===i[3]&&(i.pop(),t="rgb("),t+i.join()+")"},toHslaString:function(){var t="hsla(",i=e.map(this.hsla(),function(e,t){return null==e&&(e=t>2?1:0),t&&3>t&&(e=Math.round(100*e)+"%"),e});return 1===i[3]&&(i.pop(),t="hsl("),t+i.join()+")"},toHexString:function(t){var i=this._rgba.slice(),s=i.pop();return t&&i.push(~~(255*s)),"#"+e.map(i,function(e){return e=(e||0).toString(16),1===e.length?"0"+e:e}).join("")},toString:function(){return 0===this._rgba[3]?"transparent":this.toRgbaString()}}),l.fn.parse.prototype=l.fn,u.hsla.to=function(e){if(null==e[0]||null==e[1]||null==e[2])return[null,null,null,e[3]];var t,i,s=e[0]/255,n=e[1]/255,a=e[2]/255,o=e[3],r=Math.max(s,n,a),h=Math.min(s,n,a),l=r-h,u=r+h,d=.5*u;return t=h===r?0:s===r?60*(n-a)/l+360:n===r?60*(a-s)/l+120:60*(s-n)/l+240,i=0===l?0:.5>=d?l/u:l/(2-u),[Math.round(t)%360,i,d,null==o?1:o]},u.hsla.from=function(e){if(null==e[0]||null==e[1]||null==e[2])return[null,null,null,e[3]];var t=e[0]/360,i=e[1],s=e[2],a=e[3],o=.5>=s?s*(1+i):s+i-s*i,r=2*s-o;return[Math.round(255*n(r,o,t+1/3)),Math.round(255*n(r,o,t)),Math.round(255*n(r,o,t-1/3)),a]},f(u,function(s,n){var a=n.props,o=n.cache,h=n.to,u=n.from;l.fn[s]=function(s){if(h&&!this[o]&&(this[o]=h(this._rgba)),s===t)return this[o].slice();var n,r=e.type(s),d="array"===r||"object"===r?s:arguments,c=this[o].slice();return f(a,function(e,t){var s=d["object"===r?e:t.idx];null==s&&(s=c[t.idx]),c[t.idx]=i(s,t)}),u?(n=l(u(c)),n[o]=c,n):l(c)},f(a,function(t,i){l.fn[t]||(l.fn[t]=function(n){var a,o=e.type(n),h="alpha"===t?this._hsla?"hsla":"rgba":s,l=this[h](),u=l[i.idx];return"undefined"===o?u:("function"===o&&(n=n.call(this,u),o=e.type(n)),null==n&&i.empty?this:("string"===o&&(a=r.exec(n),a&&(n=u+parseFloat(a[2])*("+"===a[1]?1:-1))),l[i.idx]=n,this[h](l)))})})}),l.hook=function(t){var i=t.split(" ");f(i,function(t,i){e.cssHooks[i]={set:function(t,n){var a,o,r="";if("transparent"!==n&&("string"!==e.type(n)||(a=s(n)))){if(n=l(a||n),!c.rgba&&1!==n._rgba[3]){for(o="backgroundColor"===i?t.parentNode:t;(""===r||"transparent"===r)&&o&&o.style;)try{r=e.css(o,"backgroundColor"),o=o.parentNode}catch(h){}n=n.blend(r&&"transparent"!==r?r:"_default")}n=n.toRgbaString()}try{t.style[i]=n}catch(h){}}},e.fx.step[i]=function(t){t.colorInit||(t.start=l(t.elem,i),t.end=l(t.end),t.colorInit=!0),e.cssHooks[i].set(t.elem,t.start.transition(t.end,t.pos))}})},l.hook(o),e.cssHooks.borderColor={expand:function(e){var t={};return f(["Top","Right","Bottom","Left"],function(i,s){t["border"+s+"Color"]=e}),t}},a=e.Color.names={aqua:"#00ffff",black:"#000000",blue:"#0000ff",fuchsia:"#ff00ff",gray:"#808080",green:"#008000",lime:"#00ff00",maroon:"#800000",navy:"#000080",olive:"#808000",purple:"#800080",red:"#ff0000",silver:"#c0c0c0",teal:"#008080",white:"#ffffff",yellow:"#ffff00",transparent:[null,null,null,0],_default:"#ffffff"}}(b),function(){function t(t){var i,s,n=t.ownerDocument.defaultView?t.ownerDocument.defaultView.getComputedStyle(t,null):t.currentStyle,a={};if(n&&n.length&&n[0]&&n[n[0]])for(s=n.length;s--;)i=n[s],"string"==typeof n[i]&&(a[e.camelCase(i)]=n[i]);else for(i in n)"string"==typeof n[i]&&(a[i]=n[i]);return a}function i(t,i){var s,a,o={};for(s in i)a=i[s],t[s]!==a&&(n[s]||(e.fx.step[s]||!isNaN(parseFloat(a)))&&(o[s]=a));return o}var s=["add","remove","toggle"],n={border:1,borderBottom:1,borderColor:1,borderLeft:1,borderRight:1,borderTop:1,borderWidth:1,margin:1,padding:1};e.each(["borderLeftStyle","borderRightStyle","borderBottomStyle","borderTopStyle"],function(t,i){e.fx.step[i]=function(e){("none"!==e.end&&!e.setAttr||1===e.pos&&!e.setAttr)&&(b.style(e.elem,i,e.end),e.setAttr=!0)}}),e.fn.addBack||(e.fn.addBack=function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}),e.effects.animateClass=function(n,a,o,r){var h=e.speed(a,o,r);return this.queue(function(){var a,o=e(this),r=o.attr("class")||"",l=h.children?o.find("*").addBack():o;l=l.map(function(){var i=e(this);return{el:i,start:t(this)}}),a=function(){e.each(s,function(e,t){n[t]&&o[t+"Class"](n[t])})},a(),l=l.map(function(){return this.end=t(this.el[0]),this.diff=i(this.start,this.end),this}),o.attr("class",r),l=l.map(function(){var t=this,i=e.Deferred(),s=e.extend({},h,{queue:!1,complete:function(){i.resolve(t)}});return this.el.animate(this.diff,s),i.promise()}),e.when.apply(e,l.get()).done(function(){a(),e.each(arguments,function(){var t=this.el;e.each(this.diff,function(e){t.css(e,"")})}),h.complete.call(o[0])})})},e.fn.extend({addClass:function(t){return function(i,s,n,a){return s?e.effects.animateClass.call(this,{add:i},s,n,a):t.apply(this,arguments)}}(e.fn.addClass),removeClass:function(t){return function(i,s,n,a){return arguments.length>1?e.effects.animateClass.call(this,{remove:i},s,n,a):t.apply(this,arguments)}}(e.fn.removeClass),toggleClass:function(t){return function(i,s,n,a,o){return"boolean"==typeof s||void 0===s?n?e.effects.animateClass.call(this,s?{add:i}:{remove:i},n,a,o):t.apply(this,arguments):e.effects.animateClass.call(this,{toggle:i},s,n,a)}}(e.fn.toggleClass),switchClass:function(t,i,s,n,a){return e.effects.animateClass.call(this,{add:i,remove:t},s,n,a)}})}(),function(){function t(t,i,s,n){return e.isPlainObject(t)&&(i=t,t=t.effect),t={effect:t},null==i&&(i={}),e.isFunction(i)&&(n=i,s=null,i={}),("number"==typeof i||e.fx.speeds[i])&&(n=s,s=i,i={}),e.isFunction(s)&&(n=s,s=null),i&&e.extend(t,i),s=s||i.duration,t.duration=e.fx.off?0:"number"==typeof s?s:s in e.fx.speeds?e.fx.speeds[s]:e.fx.speeds._default,t.complete=n||i.complete,t}function i(t){return!t||"number"==typeof t||e.fx.speeds[t]?!0:"string"!=typeof t||e.effects.effect[t]?e.isFunction(t)?!0:"object"!=typeof t||t.effect?!1:!0:!0}e.extend(e.effects,{version:"1.11.3",save:function(e,t){for(var i=0;t.length>i;i++)null!==t[i]&&e.data(y+t[i],e[0].style[t[i]])},restore:function(e,t){var i,s;for(s=0;t.length>s;s++)null!==t[s]&&(i=e.data(y+t[s]),void 0===i&&(i=""),e.css(t[s],i))},setMode:function(e,t){return"toggle"===t&&(t=e.is(":hidden")?"show":"hide"),t},getBaseline:function(e,t){var i,s;switch(e[0]){case"top":i=0;break;case"middle":i=.5;break;case"bottom":i=1;break;default:i=e[0]/t.height}switch(e[1]){case"left":s=0;break;case"center":s=.5;break;case"right":s=1;break;default:s=e[1]/t.width}return{x:s,y:i}},createWrapper:function(t){if(t.parent().is(".ui-effects-wrapper"))return t.parent();var i={width:t.outerWidth(!0),height:t.outerHeight(!0),"float":t.css("float")},s=e("<div></div>").addClass("ui-effects-wrapper").css({fontSize:"100%",background:"transparent",border:"none",margin:0,padding:0}),n={width:t.width(),height:t.height()},a=document.activeElement;try{a.id}catch(o){a=document.body}return t.wrap(s),(t[0]===a||e.contains(t[0],a))&&e(a).focus(),s=t.parent(),"static"===t.css("position")?(s.css({position:"relative"}),t.css({position:"relative"})):(e.extend(i,{position:t.css("position"),zIndex:t.css("z-index")}),e.each(["top","left","bottom","right"],function(e,s){i[s]=t.css(s),isNaN(parseInt(i[s],10))&&(i[s]="auto")}),t.css({position:"relative",top:0,left:0,right:"auto",bottom:"auto"})),t.css(n),s.css(i).show()},removeWrapper:function(t){var i=document.activeElement;return t.parent().is(".ui-effects-wrapper")&&(t.parent().replaceWith(t),(t[0]===i||e.contains(t[0],i))&&e(i).focus()),t},setTransition:function(t,i,s,n){return n=n||{},e.each(i,function(e,i){var a=t.cssUnit(i);a[0]>0&&(n[i]=a[0]*s+a[1])}),n}}),e.fn.extend({effect:function(){function i(t){function i(){e.isFunction(a)&&a.call(n[0]),e.isFunction(t)&&t()}var n=e(this),a=s.complete,r=s.mode;(n.is(":hidden")?"hide"===r:"show"===r)?(n[r](),i()):o.call(n[0],s,i)}var s=t.apply(this,arguments),n=s.mode,a=s.queue,o=e.effects.effect[s.effect];return e.fx.off||!o?n?this[n](s.duration,s.complete):this.each(function(){s.complete&&s.complete.call(this)}):a===!1?this.each(i):this.queue(a||"fx",i)},show:function(e){return function(s){if(i(s))return e.apply(this,arguments);var n=t.apply(this,arguments);return n.mode="show",this.effect.call(this,n)}}(e.fn.show),hide:function(e){return function(s){if(i(s))return e.apply(this,arguments);var n=t.apply(this,arguments);return n.mode="hide",this.effect.call(this,n)}}(e.fn.hide),toggle:function(e){return function(s){if(i(s)||"boolean"==typeof s)return e.apply(this,arguments);var n=t.apply(this,arguments);return n.mode="toggle",this.effect.call(this,n)}}(e.fn.toggle),cssUnit:function(t){var i=this.css(t),s=[];return e.each(["em","px","%","pt"],function(e,t){i.indexOf(t)>0&&(s=[parseFloat(i),t])}),s}})}(),function(){var t={};e.each(["Quad","Cubic","Quart","Quint","Expo"],function(e,i){t[i]=function(t){return Math.pow(t,e+2)}}),e.extend(t,{Sine:function(e){return 1-Math.cos(e*Math.PI/2)},Circ:function(e){return 1-Math.sqrt(1-e*e)},Elastic:function(e){return 0===e||1===e?e:-Math.pow(2,8*(e-1))*Math.sin((80*(e-1)-7.5)*Math.PI/15)},Back:function(e){return e*e*(3*e-2)},Bounce:function(e){for(var t,i=4;((t=Math.pow(2,--i))-1)/11>e;);return 1/Math.pow(4,3-i)-7.5625*Math.pow((3*t-2)/22-e,2)}}),e.each(t,function(t,i){e.easing["easeIn"+t]=i,e.easing["easeOut"+t]=function(e){return 1-i(1-e)},e.easing["easeInOut"+t]=function(e){return.5>e?i(2*e)/2:1-i(-2*e+2)/2}})}(),e.effects,e.effects.effect.blind=function(t,i){var s,n,a,o=e(this),r=/up|down|vertical/,h=/up|left|vertical|horizontal/,l=["position","top","bottom","left","right","height","width"],u=e.effects.setMode(o,t.mode||"hide"),d=t.direction||"up",c=r.test(d),p=c?"height":"width",f=c?"top":"left",m=h.test(d),g={},v="show"===u;o.parent().is(".ui-effects-wrapper")?e.effects.save(o.parent(),l):e.effects.save(o,l),o.show(),s=e.effects.createWrapper(o).css({overflow:"hidden"}),n=s[p](),a=parseFloat(s.css(f))||0,g[p]=v?n:0,m||(o.css(c?"bottom":"right",0).css(c?"top":"left","auto").css({position:"absolute"}),g[f]=v?a:n+a),v&&(s.css(p,0),m||s.css(f,a+n)),s.animate(g,{duration:t.duration,easing:t.easing,queue:!1,complete:function(){"hide"===u&&o.hide(),e.effects.restore(o,l),e.effects.removeWrapper(o),i()}})},e.effects.effect.bounce=function(t,i){var s,n,a,o=e(this),r=["position","top","bottom","left","right","height","width"],h=e.effects.setMode(o,t.mode||"effect"),l="hide"===h,u="show"===h,d=t.direction||"up",c=t.distance,p=t.times||5,f=2*p+(u||l?1:0),m=t.duration/f,g=t.easing,v="up"===d||"down"===d?"top":"left",y="up"===d||"left"===d,b=o.queue(),_=b.length;for((u||l)&&r.push("opacity"),e.effects.save(o,r),o.show(),e.effects.createWrapper(o),c||(c=o["top"===v?"outerHeight":"outerWidth"]()/3),u&&(a={opacity:1},a[v]=0,o.css("opacity",0).css(v,y?2*-c:2*c).animate(a,m,g)),l&&(c/=Math.pow(2,p-1)),a={},a[v]=0,s=0;p>s;s++)n={},n[v]=(y?"-=":"+=")+c,o.animate(n,m,g).animate(a,m,g),c=l?2*c:c/2;l&&(n={opacity:0},n[v]=(y?"-=":"+=")+c,o.animate(n,m,g)),o.queue(function(){l&&o.hide(),e.effects.restore(o,r),e.effects.removeWrapper(o),i()}),_>1&&b.splice.apply(b,[1,0].concat(b.splice(_,f+1))),o.dequeue()},e.effects.effect.clip=function(t,i){var s,n,a,o=e(this),r=["position","top","bottom","left","right","height","width"],h=e.effects.setMode(o,t.mode||"hide"),l="show"===h,u=t.direction||"vertical",d="vertical"===u,c=d?"height":"width",p=d?"top":"left",f={};e.effects.save(o,r),o.show(),s=e.effects.createWrapper(o).css({overflow:"hidden"}),n="IMG"===o[0].tagName?s:o,a=n[c](),l&&(n.css(c,0),n.css(p,a/2)),f[c]=l?a:0,f[p]=l?0:a/2,n.animate(f,{queue:!1,duration:t.duration,easing:t.easing,complete:function(){l||o.hide(),e.effects.restore(o,r),e.effects.removeWrapper(o),i()}})},e.effects.effect.drop=function(t,i){var s,n=e(this),a=["position","top","bottom","left","right","opacity","height","width"],o=e.effects.setMode(n,t.mode||"hide"),r="show"===o,h=t.direction||"left",l="up"===h||"down"===h?"top":"left",u="up"===h||"left"===h?"pos":"neg",d={opacity:r?1:0};e.effects.save(n,a),n.show(),e.effects.createWrapper(n),s=t.distance||n["top"===l?"outerHeight":"outerWidth"](!0)/2,r&&n.css("opacity",0).css(l,"pos"===u?-s:s),d[l]=(r?"pos"===u?"+=":"-=":"pos"===u?"-=":"+=")+s,n.animate(d,{queue:!1,duration:t.duration,easing:t.easing,complete:function(){"hide"===o&&n.hide(),e.effects.restore(n,a),e.effects.removeWrapper(n),i()}})},e.effects.effect.explode=function(t,i){function s(){b.push(this),b.length===d*c&&n()}function n(){p.css({visibility:"visible"}),e(b).remove(),m||p.hide(),i()}var a,o,r,h,l,u,d=t.pieces?Math.round(Math.sqrt(t.pieces)):3,c=d,p=e(this),f=e.effects.setMode(p,t.mode||"hide"),m="show"===f,g=p.show().css("visibility","hidden").offset(),v=Math.ceil(p.outerWidth()/c),y=Math.ceil(p.outerHeight()/d),b=[];for(a=0;d>a;a++)for(h=g.top+a*y,u=a-(d-1)/2,o=0;c>o;o++)r=g.left+o*v,l=o-(c-1)/2,p.clone().appendTo("body").wrap("<div></div>").css({position:"absolute",visibility:"visible",left:-o*v,top:-a*y}).parent().addClass("ui-effects-explode").css({position:"absolute",overflow:"hidden",width:v,height:y,left:r+(m?l*v:0),top:h+(m?u*y:0),opacity:m?0:1}).animate({left:r+(m?0:l*v),top:h+(m?0:u*y),opacity:m?1:0},t.duration||500,t.easing,s)},e.effects.effect.fade=function(t,i){var s=e(this),n=e.effects.setMode(s,t.mode||"toggle");s.animate({opacity:n},{queue:!1,duration:t.duration,easing:t.easing,complete:i})},e.effects.effect.fold=function(t,i){var s,n,a=e(this),o=["position","top","bottom","left","right","height","width"],r=e.effects.setMode(a,t.mode||"hide"),h="show"===r,l="hide"===r,u=t.size||15,d=/([0-9]+)%/.exec(u),c=!!t.horizFirst,p=h!==c,f=p?["width","height"]:["height","width"],m=t.duration/2,g={},v={};e.effects.save(a,o),a.show(),s=e.effects.createWrapper(a).css({overflow:"hidden"}),n=p?[s.width(),s.height()]:[s.height(),s.width()],d&&(u=parseInt(d[1],10)/100*n[l?0:1]),h&&s.css(c?{height:0,width:u}:{height:u,width:0}),g[f[0]]=h?n[0]:u,v[f[1]]=h?n[1]:0,s.animate(g,m,t.easing).animate(v,m,t.easing,function(){l&&a.hide(),e.effects.restore(a,o),e.effects.removeWrapper(a),i()})},e.effects.effect.highlight=function(t,i){var s=e(this),n=["backgroundImage","backgroundColor","opacity"],a=e.effects.setMode(s,t.mode||"show"),o={backgroundColor:s.css("backgroundColor")};"hide"===a&&(o.opacity=0),e.effects.save(s,n),s.show().css({backgroundImage:"none",backgroundColor:t.color||"#ffff99"}).animate(o,{queue:!1,duration:t.duration,easing:t.easing,complete:function(){"hide"===a&&s.hide(),e.effects.restore(s,n),i()}})},e.effects.effect.size=function(t,i){var s,n,a,o=e(this),r=["position","top","bottom","left","right","width","height","overflow","opacity"],h=["position","top","bottom","left","right","overflow","opacity"],l=["width","height","overflow"],u=["fontSize"],d=["borderTopWidth","borderBottomWidth","paddingTop","paddingBottom"],c=["borderLeftWidth","borderRightWidth","paddingLeft","paddingRight"],p=e.effects.setMode(o,t.mode||"effect"),f=t.restore||"effect"!==p,m=t.scale||"both",g=t.origin||["middle","center"],v=o.css("position"),y=f?r:h,b={height:0,width:0,outerHeight:0,outerWidth:0};"show"===p&&o.show(),s={height:o.height(),width:o.width(),outerHeight:o.outerHeight(),outerWidth:o.outerWidth()},"toggle"===t.mode&&"show"===p?(o.from=t.to||b,o.to=t.from||s):(o.from=t.from||("show"===p?b:s),o.to=t.to||("hide"===p?b:s)),a={from:{y:o.from.height/s.height,x:o.from.width/s.width},to:{y:o.to.height/s.height,x:o.to.width/s.width}},("box"===m||"both"===m)&&(a.from.y!==a.to.y&&(y=y.concat(d),o.from=e.effects.setTransition(o,d,a.from.y,o.from),o.to=e.effects.setTransition(o,d,a.to.y,o.to)),a.from.x!==a.to.x&&(y=y.concat(c),o.from=e.effects.setTransition(o,c,a.from.x,o.from),o.to=e.effects.setTransition(o,c,a.to.x,o.to))),("content"===m||"both"===m)&&a.from.y!==a.to.y&&(y=y.concat(u).concat(l),o.from=e.effects.setTransition(o,u,a.from.y,o.from),o.to=e.effects.setTransition(o,u,a.to.y,o.to)),e.effects.save(o,y),o.show(),e.effects.createWrapper(o),o.css("overflow","hidden").css(o.from),g&&(n=e.effects.getBaseline(g,s),o.from.top=(s.outerHeight-o.outerHeight())*n.y,o.from.left=(s.outerWidth-o.outerWidth())*n.x,o.to.top=(s.outerHeight-o.to.outerHeight)*n.y,o.to.left=(s.outerWidth-o.to.outerWidth)*n.x),o.css(o.from),("content"===m||"both"===m)&&(d=d.concat(["marginTop","marginBottom"]).concat(u),c=c.concat(["marginLeft","marginRight"]),l=r.concat(d).concat(c),o.find("*[width]").each(function(){var i=e(this),s={height:i.height(),width:i.width(),outerHeight:i.outerHeight(),outerWidth:i.outerWidth()};
-f&&e.effects.save(i,l),i.from={height:s.height*a.from.y,width:s.width*a.from.x,outerHeight:s.outerHeight*a.from.y,outerWidth:s.outerWidth*a.from.x},i.to={height:s.height*a.to.y,width:s.width*a.to.x,outerHeight:s.height*a.to.y,outerWidth:s.width*a.to.x},a.from.y!==a.to.y&&(i.from=e.effects.setTransition(i,d,a.from.y,i.from),i.to=e.effects.setTransition(i,d,a.to.y,i.to)),a.from.x!==a.to.x&&(i.from=e.effects.setTransition(i,c,a.from.x,i.from),i.to=e.effects.setTransition(i,c,a.to.x,i.to)),i.css(i.from),i.animate(i.to,t.duration,t.easing,function(){f&&e.effects.restore(i,l)})})),o.animate(o.to,{queue:!1,duration:t.duration,easing:t.easing,complete:function(){0===o.to.opacity&&o.css("opacity",o.from.opacity),"hide"===p&&o.hide(),e.effects.restore(o,y),f||("static"===v?o.css({position:"relative",top:o.to.top,left:o.to.left}):e.each(["top","left"],function(e,t){o.css(t,function(t,i){var s=parseInt(i,10),n=e?o.to.left:o.to.top;return"auto"===i?n+"px":s+n+"px"})})),e.effects.removeWrapper(o),i()}})},e.effects.effect.scale=function(t,i){var s=e(this),n=e.extend(!0,{},t),a=e.effects.setMode(s,t.mode||"effect"),o=parseInt(t.percent,10)||(0===parseInt(t.percent,10)?0:"hide"===a?0:100),r=t.direction||"both",h=t.origin,l={height:s.height(),width:s.width(),outerHeight:s.outerHeight(),outerWidth:s.outerWidth()},u={y:"horizontal"!==r?o/100:1,x:"vertical"!==r?o/100:1};n.effect="size",n.queue=!1,n.complete=i,"effect"!==a&&(n.origin=h||["middle","center"],n.restore=!0),n.from=t.from||("show"===a?{height:0,width:0,outerHeight:0,outerWidth:0}:l),n.to={height:l.height*u.y,width:l.width*u.x,outerHeight:l.outerHeight*u.y,outerWidth:l.outerWidth*u.x},n.fade&&("show"===a&&(n.from.opacity=0,n.to.opacity=1),"hide"===a&&(n.from.opacity=1,n.to.opacity=0)),s.effect(n)},e.effects.effect.puff=function(t,i){var s=e(this),n=e.effects.setMode(s,t.mode||"hide"),a="hide"===n,o=parseInt(t.percent,10)||150,r=o/100,h={height:s.height(),width:s.width(),outerHeight:s.outerHeight(),outerWidth:s.outerWidth()};e.extend(t,{effect:"scale",queue:!1,fade:!0,mode:n,complete:i,percent:a?o:100,from:a?h:{height:h.height*r,width:h.width*r,outerHeight:h.outerHeight*r,outerWidth:h.outerWidth*r}}),s.effect(t)},e.effects.effect.pulsate=function(t,i){var s,n=e(this),a=e.effects.setMode(n,t.mode||"show"),o="show"===a,r="hide"===a,h=o||"hide"===a,l=2*(t.times||5)+(h?1:0),u=t.duration/l,d=0,c=n.queue(),p=c.length;for((o||!n.is(":visible"))&&(n.css("opacity",0).show(),d=1),s=1;l>s;s++)n.animate({opacity:d},u,t.easing),d=1-d;n.animate({opacity:d},u,t.easing),n.queue(function(){r&&n.hide(),i()}),p>1&&c.splice.apply(c,[1,0].concat(c.splice(p,l+1))),n.dequeue()},e.effects.effect.shake=function(t,i){var s,n=e(this),a=["position","top","bottom","left","right","height","width"],o=e.effects.setMode(n,t.mode||"effect"),r=t.direction||"left",h=t.distance||20,l=t.times||3,u=2*l+1,d=Math.round(t.duration/u),c="up"===r||"down"===r?"top":"left",p="up"===r||"left"===r,f={},m={},g={},v=n.queue(),y=v.length;for(e.effects.save(n,a),n.show(),e.effects.createWrapper(n),f[c]=(p?"-=":"+=")+h,m[c]=(p?"+=":"-=")+2*h,g[c]=(p?"-=":"+=")+2*h,n.animate(f,d,t.easing),s=1;l>s;s++)n.animate(m,d,t.easing).animate(g,d,t.easing);n.animate(m,d,t.easing).animate(f,d/2,t.easing).queue(function(){"hide"===o&&n.hide(),e.effects.restore(n,a),e.effects.removeWrapper(n),i()}),y>1&&v.splice.apply(v,[1,0].concat(v.splice(y,u+1))),n.dequeue()},e.effects.effect.slide=function(t,i){var s,n=e(this),a=["position","top","bottom","left","right","width","height"],o=e.effects.setMode(n,t.mode||"show"),r="show"===o,h=t.direction||"left",l="up"===h||"down"===h?"top":"left",u="up"===h||"left"===h,d={};e.effects.save(n,a),n.show(),s=t.distance||n["top"===l?"outerHeight":"outerWidth"](!0),e.effects.createWrapper(n).css({overflow:"hidden"}),r&&n.css(l,u?isNaN(s)?"-"+s:-s:s),d[l]=(r?u?"+=":"-=":u?"-=":"+=")+s,n.animate(d,{queue:!1,duration:t.duration,easing:t.easing,complete:function(){"hide"===o&&n.hide(),e.effects.restore(n,a),e.effects.removeWrapper(n),i()}})},e.effects.effect.transfer=function(t,i){var s=e(this),n=e(t.to),a="fixed"===n.css("position"),o=e("body"),r=a?o.scrollTop():0,h=a?o.scrollLeft():0,l=n.offset(),u={top:l.top-r,left:l.left-h,height:n.innerHeight(),width:n.innerWidth()},d=s.offset(),c=e("<div class='ui-effects-transfer'></div>").appendTo(document.body).addClass(t.className).css({top:d.top-r,left:d.left-h,height:s.innerHeight(),width:s.innerWidth(),position:a?"fixed":"absolute"}).animate(u,t.duration,t.easing,function(){c.remove(),i()})},e.widget("ui.progressbar",{version:"1.11.3",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),this._refreshValue(),void 0)},_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,i=this._percentage();this.valueDiv.toggle(this.indeterminate||t>this.min).toggleClass("ui-corner-right",t===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=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.selectable",e.ui.mouse,{version:"1.11.3",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,i=this;this.element.addClass("ui-selectable"),this.dragged=!1,this.refresh=function(){t=e(i.options.filter,i.element[0]),t.addClass("ui-selectee"),t.each(function(){var t=e(this),i=t.offset();e.data(this,"selectable-item",{element:this,$element:t,left:i.left,top:i.top,right:i.left+t.outerWidth(),bottom:i.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 i=this,s=this.options;this.opos=[t.pageX,t.pageY],this.options.disabled||(this.selectees=e(s.filter,this.element[0]),this._trigger("start",t),e(s.appendTo).append(this.helper),this.helper.css({left:t.pageX,top:t.pageY,width:0,height:0}),s.autoRefresh&&this.refresh(),this.selectees.filter(".ui-selected").each(function(){var s=e.data(this,"selectable-item");s.startselected=!0,t.metaKey||t.ctrlKey||(s.$element.removeClass("ui-selected"),s.selected=!1,s.$element.addClass("ui-unselecting"),s.unselecting=!0,i._trigger("unselecting",t,{unselecting:s.element}))}),e(t.target).parents().addBack().each(function(){var s,n=e.data(this,"selectable-item");return n?(s=!t.metaKey&&!t.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",t,{selecting:n.element}):i._trigger("unselecting",t,{unselecting:n.element}),!1):void 0}))},_mouseDrag:function(t){if(this.dragged=!0,!this.options.disabled){var i,s=this,n=this.options,a=this.opos[0],o=this.opos[1],r=t.pageX,h=t.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=e.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",t,{selecting:i.element}))):(i.selecting&&((t.metaKey||t.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",t,{unselecting:i.element}))),i.selected&&(t.metaKey||t.ctrlKey||i.startselected||(i.$element.removeClass("ui-selected"),i.selected=!1,i.$element.addClass("ui-unselecting"),i.unselecting=!0,s._trigger("unselecting",t,{unselecting:i.element})))))}),!1}},_mouseStop:function(t){var i=this;return this.dragged=!1,e(".ui-unselecting",this.element[0]).each(function(){var s=e.data(this,"selectable-item");s.$element.removeClass("ui-unselecting"),s.unselecting=!1,s.startselected=!1,i._trigger("unselected",t,{unselected:s.element})}),e(".ui-selecting",this.element[0]).each(function(){var s=e.data(this,"selectable-item");s.$element.removeClass("ui-selecting").addClass("ui-selected"),s.selecting=!1,s.selected=!0,s.startselected=!0,i._trigger("selected",t,{selected:s.element})}),this._trigger("stop",t),this.helper.remove(),!1}}),e.widget("ui.selectmenu",{version:"1.11.3",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,i){e.preventDefault(),t._setSelection(),t._select(i.item.data("ui-selectmenu-item"),e)},focus:function(e,i){var s=i.item.data("ui-selectmenu-item");null!=t.focusIndex&&s.index!==t.focusIndex&&(t._trigger("focus",e,{item:s}),t.isOpen||t._select(s,e)),t.focusIndex=s.index,t.button.attr("aria-activedescendant",t.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 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,i){var s=this,n="";e.each(i,function(i,a){a.optgroup!==n&&(e("<li>",{"class":"ui-selectmenu-optgroup ui-menu-divider"+(a.element.parent("optgroup").prop("disabled")?" ui-state-disabled":""),text:a.optgroup}).appendTo(t),n=a.optgroup),s._renderItemData(t,a)})},_renderItemData:function(e,t){return this._renderItem(e,t).data("ui-selectmenu-item",t)},_renderItem:function(t,i){var s=e("<li>");return i.disabled&&s.addClass("ui-state-disabled"),this._setText(s,i.label),s.appendTo(t)},_setText:function(e,t){t?e.text(t):e.html("&#160;")},_move:function(e,t){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"===e||"last"===e?i["first"===e?"prevAll":"nextAll"](n).eq(-1):i[e+"All"](n).eq(0),s.length&&this.menuInstance.focus(t,s)},_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 i=!0;switch(t.keyCode){case e.ui.keyCode.TAB:case e.ui.keyCode.ESCAPE:this.close(t),i=!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),i=!1}i&&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 i=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!==i&&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 i=[];t.each(function(t,s){var n=e(s),a=n.parent("optgroup");i.push({element:n,index:t,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)}}),e.widget("ui.slider",e.ui.mouse,{version:"1.11.3",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,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)),t=n.length;i>t;t++)o.push(a);this.handles=n.add(e(o.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,i="";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),i="ui-slider-range ui-widget-header ui-corner-all"),this.range.addClass(i+("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 i,s,n,a,o,r,h,l,u=this,d=this.options;return d.disabled?!1:(this.elementSize={width:this.element.outerWidth(),height:this.element.outerHeight()},this.elementOffset=this.element.offset(),i={x:t.pageX,y:t.pageY},s=this._normValueFromMouse(i),n=this._valueMax()-this._valueMin()+1,this.handles.each(function(t){var i=Math.abs(s-u.values(t));(n>i||n===i&&(t===u._lastChangedValue||u.values(t)===d.min))&&(n=i,a=e(this),o=t)}),r=this._start(t,o),r===!1?!1:(this._mouseSliding=!0,this._handleIndex=o,a.addClass("ui-state-active").focus(),h=a.offset(),l=!e(t.target).parents().addBack().is(".ui-slider-handle"),this._clickOffset=l?{left:0,top:0}:{left:t.pageX-h.left-a.width()/2,top:t.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(t,o,s),this._animateOff=!0,!0))},_mouseStart:function(){return!0},_mouseDrag:function(e){var t={x:e.pageX,y:e.pageY},i=this._normValueFromMouse(t);return this._slide(e,this._handleIndex,i),!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,i,s,n,a;return"horizontal"===this.orientation?(t=this.elementSize.width,i=e.x-this.elementOffset.left-(this._clickOffset?this._clickOffset.left:0)):(t=this.elementSize.height,i=e.y-this.elementOffset.top-(this._clickOffset?this._clickOffset.top:0)),s=i/t,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(e,t){var i={handle:this.handles[t],value:this.value()};return this.options.values&&this.options.values.length&&(i.value=this.values(t),i.values=this.values()),this._trigger("start",e,i)},_slide:function(e,t,i){var s,n,a;this.options.values&&this.options.values.length?(s=this.values(t?0:1),2===this.options.values.length&&this.options.range===!0&&(0===t&&i>s||1===t&&s>i)&&(i=s),i!==this.values(t)&&(n=this.values(),n[t]=i,a=this._trigger("slide",e,{handle:this.handles[t],value:i,values:n}),s=this.values(t?0:1),a!==!1&&this.values(t,i))):i!==this.value()&&(a=this._trigger("slide",e,{handle:this.handles[t],value:i}),a!==!1&&this.value(i))},_stop:function(e,t){var i={handle:this.handles[t],value:this.value()};this.options.values&&this.options.values.length&&(i.value=this.values(t),i.values=this.values()),this._trigger("stop",e,i)},_change:function(e,t){if(!this._keySliding&&!this._mouseSliding){var i={handle:this.handles[t],value:this.value()};this.options.values&&this.options.values.length&&(i.value=this.values(t),i.values=this.values()),this._lastChangedValue=t,this._trigger("change",e,i)}},value:function(e){return arguments.length?(this.options.value=this._trimAlignValue(e),this._refreshValue(),this._change(null,0),void 0):this._value()},values:function(t,i){var s,n,a;if(arguments.length>1)return this.options.values[t]=this._trimAlignValue(i),this._refreshValue(),this._change(null,t),void 0;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(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(t,i){var s,n=0;switch("range"===t&&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)),e.isArray(this.options.values)&&(n=this.options.values.length),"disabled"===t&&this.element.toggleClass("ui-state-disabled",!!i),this._super(t,i),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"===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 e=this.options.value;return e=this._trimAlignValue(e)},_values:function(e){var t,i,s;if(arguments.length)return t=this.options.values[e],t=this._trimAlignValue(t);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(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,i=(e-this._valueMin())%t,s=e-i;return 2*Math.abs(i)>=t&&(s+=i>0?t:-t),parseFloat(s.toFixed(5))},_calculateNewMax:function(){var e=this.options.max,t=this._valueMin(),i=this.options.step,s=Math.floor((e-t)/i)*i;e=s+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,i=t.indexOf(".");return-1===i?0:t.length-i-1},_valueMin:function(){return this.options.min},_valueMax:function(){return this.max},_refreshValue:function(){var t,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+"%",e(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-t+"%"},{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-t+"%"},{queue:!1,duration:r.animate}))),t=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(t){var i,s,n,a,o=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"),i=this._start(t,o),i===!1))return}switch(a=this.options.step,s=n=this.options.values&&this.options.values.length?this.values(o):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(s+(this._valueMax()-this._valueMin())/this.numPages);break;case e.ui.keyCode.PAGE_DOWN:n=this._trimAlignValue(s-(this._valueMax()-this._valueMin())/this.numPages);break;case e.ui.keyCode.UP:case e.ui.keyCode.RIGHT:if(s===this._valueMax())return;n=this._trimAlignValue(s+a);break;case e.ui.keyCode.DOWN:case e.ui.keyCode.LEFT:if(s===this._valueMin())return;n=this._trimAlignValue(s-a)}this._slide(t,o,n)},keyup:function(t){var i=e(t.target).data("ui-slider-handle-index");this._keySliding&&(this._keySliding=!1,this._stop(t,i),this._change(t,i),e(t.target).removeClass("ui-state-active"))}}}),e.widget("ui.sortable",e.ui.mouse,{version:"1.11.3",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,i){return e>=t&&t+i>e},_isFloating:function(e){return/left|right/.test(e.css("float"))||/inline|table-cell/.test(e.css("display"))},_create:function(){var e=this.options;this.containerCache={},this.element.addClass("ui-sortable"),this.refresh(),this.floating=this.items.length?"x"===e.axis||this._isFloating(this.items[0].item):!1,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,i){var s=null,n=!1,a=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,a.widgetName+"-item")===a?(s=e(this),!1):void 0}),e.data(t.target,a.widgetName+"-item")===a&&(s=e(t.target)),s?!this.options.handle||i||(e(this.options.handle,s).find("*").addBack().each(function(){this===t.target&&(n=!0)}),n)?(this.currentItem=s,this._removeCurrentsFromItems(),!0):!1:!1)},_mouseStart:function(t,i,s){var n,a,o=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,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=e("<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",t,this._uiHash()),this._preserveHelperProportions||this._cacheHelperProportions(),!s)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&&!o.dropBehaviour&&e.ui.ddmanager.prepareOffsets(this,t),this.dragging=!0,this.helper.addClass("ui-sortable-helper"),this._mouseDrag(t),!0},_mouseDrag:function(t){var i,s,n,a,o=this.options,r=!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<o.scrollSensitivity?this.scrollParent[0].scrollTop=r=this.scrollParent[0].scrollTop+o.scrollSpeed:t.pageY-this.overflowOffset.top<o.scrollSensitivity&&(this.scrollParent[0].scrollTop=r=this.scrollParent[0].scrollTop-o.scrollSpeed),this.overflowOffset.left+this.scrollParent[0].offsetWidth-t.pageX<o.scrollSensitivity?this.scrollParent[0].scrollLeft=r=this.scrollParent[0].scrollLeft+o.scrollSpeed:t.pageX-this.overflowOffset.left<o.scrollSensitivity&&(this.scrollParent[0].scrollLeft=r=this.scrollParent[0].scrollLeft-o.scrollSpeed)):(t.pageY-this.document.scrollTop()<o.scrollSensitivity?r=this.document.scrollTop(this.document.scrollTop()-o.scrollSpeed):this.window.height()-(t.pageY-this.document.scrollTop())<o.scrollSensitivity&&(r=this.document.scrollTop(this.document.scrollTop()+o.scrollSpeed)),t.pageX-this.document.scrollLeft()<o.scrollSensitivity?r=this.document.scrollLeft(this.document.scrollLeft()-o.scrollSpeed):this.window.width()-(t.pageX-this.document.scrollLeft())<o.scrollSensitivity&&(r=this.document.scrollLeft(this.document.scrollLeft()+o.scrollSpeed))),r!==!1&&e.ui.ddmanager&&!o.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"),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&&!e.contains(this.placeholder[0],n)&&("semi-dynamic"===this.options.type?!e.contains(this.element[0],n):!0)){if(this.direction=1===a?"down":"up","pointer"!==this.options.tolerance&&!this._intersectsWithSides(s))break;this._rearrange(t,s),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,i){if(t){if(e.ui.ddmanager&&!this.options.dropBehaviour&&e.ui.ddmanager.drop(this,t),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,e(this.helper).animate(o,parseInt(this.options.revert,10)||500,function(){s._clear(t)})}else this._clear(t,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 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 i=this._getItemsAsjQuery(t&&t.connected),s=[];return t=t||{},e(i).each(function(){var i=(e(t.item||this).attr(t.attribute||"id")||"").match(t.expression||/(.+)[\-=_](.+)/);i&&s.push((t.key||i[1]+"[]")+"="+(t.key&&t.expression?i[1]:i[2]))}),!s.length&&t.key&&s.push(t.key+"="),s.join("&")},toArray:function(t){var i=this._getItemsAsjQuery(t&&t.connected),s=[];return t=t||{},i.each(function(){s.push(e(t.item||this).attr(t.attribute||"id")||"")}),s},_intersectsWith:function(e){var t=this.positionAbs.left,i=t+this.helperProportions.width,s=this.positionAbs.top,n=s+this.helperProportions.height,a=e.left,o=a+e.width,r=e.top,h=r+e.height,l=this.offset.click.top,u=this.offset.click.left,d="x"===this.options.axis||s+l>r&&h>s+l,c="y"===this.options.axis||t+u>a&&o>t+u,p=d&&c;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>a&&o>i-this.helperProportions.width/2&&s+this.helperProportions.height/2>r&&h>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),i="y"===this.options.axis||this._isOverAxis(this.positionAbs.left+this.offset.click.left,e.left,e.width),s=t&&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(e){var t=this._isOverAxis(this.positionAbs.top+this.offset.click.top,e.top+e.height/2,e.height),i=this._isOverAxis(this.positionAbs.left+this.offset.click.left,e.left+e.width/2,e.width),s=this._getDragVerticalDirection(),n=this._getDragHorizontalDirection();return this.floating&&n?"right"===n&&i||"left"===n&&!i:s&&("down"===s&&t||"up"===s&&!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 i(){r.push(this)}var s,n,a,o,r=[],h=[],l=this._connectWith();if(l&&t)for(s=l.length-1;s>=0;s--)for(a=e(l[s],this.document[0]),n=a.length-1;n>=0;n--)o=e.data(a[n],this.widgetFullName),o&&o!==this&&!o.options.disabled&&h.push([e.isFunction(o.options.items)?o.options.items.call(o.element):e(o.options.items,o.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),o]);for(h.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]),s=h.length-1;s>=0;s--)h[s][0].each(i);return e(r)},_removeCurrentsFromItems:function(){var t=this.currentItem.find(":data("+this.widgetName+"-item)");this.items=e.grep(this.items,function(e){for(var i=0;t.length>i;i++)if(t[i]===e.item[0])return!1;return!0})},_refreshItems:function(t){this.items=[],this.containers=[this];var i,s,n,a,o,r,h,l,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]],c=this._connectWith();if(c&&this.ready)for(i=c.length-1;i>=0;i--)for(n=e(c[i],this.document[0]),s=n.length-1;s>=0;s--)a=e.data(n[s],this.widgetFullName),a&&a!==this&&!a.options.disabled&&(d.push([e.isFunction(a.options.items)?a.options.items.call(a.element[0],t,{item:this.currentItem}):e(a.options.items,a.element),a]),this.containers.push(a));for(i=d.length-1;i>=0;i--)for(o=d[i][1],r=d[i][0],s=0,l=r.length;l>s;s++)h=e(r[s]),h.data(this.widgetName+"-item",o),u.push({item:h,instance:o,width:0,height:0,left:0,top:0})},refreshPositions:function(t){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?e(this.options.toleranceElement,s.item):s.item,t||(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(t){t=t||this;var i,s=t.options;s.placeholder&&s.placeholder.constructor!==String||(i=s.placeholder,s.placeholder={element:function(){var s=t.currentItem[0].nodeName.toLowerCase(),n=e("<"+s+">",t.document[0]).addClass(i||t.currentItem[0].className+" ui-sortable-placeholder").removeClass("ui-sortable-helper");return"tr"===s?t.currentItem.children().each(function(){e("<td>&#160;</td>",t.document[0]).attr("colspan",e(this).attr("colspan")||1).appendTo(n)}):"img"===s&&n.attr("src",t.currentItem.attr("src")),i||n.css("visibility","hidden"),n},update:function(e,n){(!i||s.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(s.placeholder.element.call(t.element,t.currentItem)),t.currentItem.after(t.placeholder),s.placeholder.update(t,t.placeholder)},_contactContainers:function(t){var i,s,n,a,o,r,h,l,u,d,c=null,p=null;for(i=this.containers.length-1;i>=0;i--)if(!e.contains(this.currentItem[0],this.containers[i].element[0]))if(this._intersectsWith(this.containers[i].containerCache)){if(c&&e.contains(this.containers[i].element[0],c.element[0]))continue;c=this.containers[i],p=i}else this.containers[i].containerCache.over&&(this.containers[i]._trigger("out",t,this._uiHash(this)),this.containers[i].containerCache.over=0);if(c)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,a=null,u=c.floating||this._isFloating(this.currentItem),o=u?"left":"top",r=u?"width":"height",d=u?"clientX":"clientY",s=this.items.length-1;s>=0;s--)e.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,t[d]-h>this.items[s][r]/2&&(l=!0),n>Math.abs(t[d]-h)&&(n=Math.abs(t[d]-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",t,this._uiHash()),this.currentContainer.containerCache.over=1),void 0;a?this._rearrange(t,a,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 i=this.options,s=e.isFunction(i.helper)?e(i.helper.apply(this.element[0],[t,this.currentItem])):"clone"===i.helper?this.currentItem.clone():this.currentItem;return s.parents("body").length||e("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(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,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)||(t=e(n.containment)[0],i=e(n.containment).offset(),s="hidden"!==e(t).css("overflow"),this.containment=[i.left+(parseInt(e(t).css("borderLeftWidth"),10)||0)+(parseInt(e(t).css("paddingLeft"),10)||0)-this.margins.left,i.top+(parseInt(e(t).css("borderTopWidth"),10)||0)+(parseInt(e(t).css("paddingTop"),10)||0)-this.margins.top,i.left+(s?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,i.top+(s?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,i){i||(i=this.position);var s="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,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(t){var i,s,n=this.options,a=t.pageX,o=t.pageY,r="absolute"!==this.cssPosition||this.scrollParent[0]!==this.document[0]&&e.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&&(t.pageX-this.offset.click.left<this.containment[0]&&(a=this.containment[0]+this.offset.click.left),t.pageY-this.offset.click.top<this.containment[1]&&(o=this.containment[1]+this.offset.click.top),t.pageX-this.offset.click.left>this.containment[2]&&(a=this.containment[2]+this.offset.click.left),t.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(e,t,i,s){i?i[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(!s)})},_clear:function(e,t){function i(e,t,i){return function(s){i._trigger(e,s,t._uiHash(t))}}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&&!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)))),s=this.containers.length-1;s>=0;s--)t||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,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(s=0;n.length>s;s++)n[s].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 i=t||this;return{helper:i.helper,placeholder:i.placeholder||e([]),position:i.position,originalPosition:i.originalPosition,offset:i.positionAbs,item:i.currentItem,sender:t?t.element:null}}}),e.widget("ui.spinner",{version:"1.11.3",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={},i=this.element;return e.each(["min","max","step"],function(e,s){var n=i.attr(s);void 0!==n&&n.length&&(t[s]=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?(delete this.cancelBlur,void 0):(this._stop(),this._refresh(),this.previous!==this.element.val()&&this._trigger("change",e),void 0)},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 i(){var e=this.element[0]===this.document[0].activeElement;e||(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(),t.preventDefault(),i.call(this),this.cancelBlur=!0,this._delay(function(){delete this.cancelBlur,i.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:(this._repeat(null,e(t.currentTarget).hasClass("ui-spinner-up")?1:-1,t),void 0):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 i=this.options,s=e.ui.keyCode;switch(t.keyCode){case s.UP:return this._repeat(null,1,t),!0;case s.DOWN:return this._repeat(null,-1,t),!0;case s.PAGE_UP:return this._repeat(null,i.page,t),!0;case s.PAGE_DOWN:return this._repeat(null,-i.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,i){e=e||500,clearTimeout(this.timer),this.timer=this._delay(function(){this._repeat(40,t,i)},e),this._spin(t*this.options.step,i)},_spin:function(e,t){var i=this.value()||0;this.counter||(this.counter=1),i=this._adjustValue(i+e*this._increment(this.counter)),this.spinning&&this._trigger("spin",t,{value:i})===!1||(this._value(i),this.counter++)},_increment:function(t){var i=this.options.incremental;return i?e.isFunction(i)?i(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,i=t.indexOf(".");return-1===i?0:t.length-i-1},_adjustValue:function(e){var t,i,s=this.options;return t=null!==s.min?s.min:0,i=e-t,i=Math.round(i/s.step)*s.step,e=t+i,e=parseFloat(e.toFixed(this._precision())),null!==s.max&&e>s.max?s.max:null!==s.min&&s.min>e?s.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 i=this._parse(this.element.val());return this.options[e]=t,this.element.val(this._format(i)),void 0}("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:h(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 i;""!==e&&(i=this._parse(e),null!==i&&(t||(i=this._adjustValue(i)),e=this._format(i))),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:h(function(e){this._stepUp(e)}),_stepUp:function(e){this._start()&&(this._spin((e||1)*this.options.step),this._stop())},stepDown:h(function(e){this._stepDown(e)}),_stepDown:function(e){this._start()&&(this._spin((e||1)*-this.options.step),this._stop())},pageUp:h(function(e){this._stepUp((e||1)*this.options.page)}),pageDown:h(function(e){this._stepDown((e||1)*this.options.page)}),value:function(e){return arguments.length?(h(this._value).call(this,e),void 0):this._parse(this.element.val())},widget:function(){return this.uiSpinner}}),e.widget("ui.tabs",{version:"1.11.3",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 i,s;t=t.cloneNode(!1),i=t.href.replace(e,""),s=location.href.replace(e,"");try{i=decodeURIComponent(i)}catch(n){}try{s=decodeURIComponent(s)}catch(n){}return t.hash.length>1&&i===s}}(),_create:function(){var t=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(),e.isArray(i.disabled)&&(i.disabled=e.unique(i.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(i.active):e(),this._refresh(),this.active.length&&this.load(i.active)},_initialActive:function(){var t=this.options.active,i=this.options.collapsible,s=location.hash.substring(1);return null===t&&(s&&this.tabs.each(function(i,n){return e(n).attr("aria-controls")===s?(t=i,!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=i?!1:0)),!i&&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 i=e(this.document[0].activeElement).closest("li"),s=this.tabs.index(i),n=!0;if(!this._handlePageNav(t)){switch(t.keyCode){case e.ui.keyCode.RIGHT:case e.ui.keyCode.DOWN:s++;break;case e.ui.keyCode.UP:case e.ui.keyCode.LEFT:n=!1,s--;break;case e.ui.keyCode.END:s=this.anchors.length-1;break;case e.ui.keyCode.HOME:s=0;break;case e.ui.keyCode.SPACE:return t.preventDefault(),clearTimeout(this.activating),this._activate(s),void 0;case e.ui.keyCode.ENTER:return t.preventDefault(),clearTimeout(this.activating),this._activate(s===this.options.active?!1:s),void 0;default:return}t.preventDefault(),clearTimeout(this.activating),s=this._focusNextTab(s,n),t.ctrlKey||t.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(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,i){function s(){return t>n&&(t=0),0>t&&(t=n),t}for(var n=this.tabs.length-1;-1!==e.inArray(s(),this.options.disabled);)t=i?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?(this._activate(t),void 0):"disabled"===e?(this._setupDisabled(t),void 0):(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),"heightStyle"===e&&this._setupHeightStyle(t),void 0)},_sanitizeSelector:function(e){return e?e.replace(/[!"$%&'()*+,.\/:;<=>?@\[\]\^`{|}~]/g,"\\$&"):""},refresh:function(){var t=this.options,i=this.tablist.children(":has(a[href])");t.disabled=e.map(i.filter(".ui-state-disabled"),function(e){return i.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,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(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(i,s){var n,a,o,r=e(s).uniqueId().attr("id"),h=e(s).closest("li"),l=h.attr("aria-controls");t._isLocal(s)?(n=s.hash,o=n.substring(1),a=t.element.find(t._sanitizeSelector(n))):(o=h.attr("aria-controls")||e({}).uniqueId()[0].id,n="#"+o,a=t.element.find(n),a.length||(a=t._createPanel(o),a.insertAfter(t.panels[i-1]||t.tablist)),a.attr("aria-live","polite")),a.length&&(t.panels=t.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(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 i,s=0;i=this.tabs[s];s++)t===!0||-1!==e.inArray(s,t)?e(i).addClass("ui-state-disabled").attr("aria-disabled","true"):e(i).removeClass("ui-state-disabled").removeAttr("aria-disabled");this.options.disabled=t},_setupEvents:function(t){var i={};t&&e.each(t.split(" "),function(e,t){i[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,i),this._on(this.tabs,{keydown:"_tabKeydown"}),this._on(this.panels,{keydown:"_panelKeydown"}),this._focusable(this.tabs),this._hoverable(this.tabs)},_setupHeightStyle:function(t){var i,s=this.element.parent();"fill"===t?(i=s.height(),i-=this.element.outerHeight()-this.element.height(),this.element.siblings(":visible").each(function(){var t=e(this),s=t.css("position");"absolute"!==s&&"fixed"!==s&&(i-=t.outerHeight(!0))}),this.element.children().not(this.panels).each(function(){i-=e(this).outerHeight(!0)}),this.panels.each(function(){e(this).height(Math.max(0,i-e(this).innerHeight()+e(this).height()))}).css("overflow","auto")):"auto"===t&&(i=0,this.panels.each(function(){i=Math.max(i,e(this).height("").height())}).height(i))},_eventHandler:function(t){var i=this.options,s=this.active,n=e(t.currentTarget),a=n.closest("li"),o=a[0]===s[0],r=o&&i.collapsible,h=r?e():this._getPanelForTab(a),l=s.length?this._getPanelForTab(s):e(),u={oldTab:s,oldPanel:l,newTab:r?e():a,newPanel:h};t.preventDefault(),a.hasClass("ui-state-disabled")||a.hasClass("ui-tabs-loading")||this.running||o&&!i.collapsible||this._trigger("beforeActivate",t,u)===!1||(i.active=r?!1:this.tabs.index(a),this.active=o?e():a,this.xhr&&this.xhr.abort(),l.length||h.length||e.error("jQuery UI Tabs: Mismatching fragment identifier."),h.length&&this.load(this.tabs.index(a),t),this._toggle(t,u))},_toggle:function(t,i){function s(){a.running=!1,a._trigger("activate",t,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===e(this).attr("tabIndex")}).attr("tabIndex",-1),o.attr("aria-hidden","false"),i.newTab.attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0})},_activate:function(t){var i,s=this._findActive(t);s[0]!==this.active[0]&&(s.length||(s=this.active),i=s.find(".ui-tabs-anchor")[0],this._eventHandler({target:i,currentTarget:i,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),i=t.data("ui-tabs-aria-controls");i?t.attr("aria-controls",i).removeData("ui-tabs-aria-controls"):t.removeAttr("aria-controls")}),this.panels.show(),"content"!==this.options.heightStyle&&this.panels.css("height","")},enable:function(t){var i=this.options.disabled;i!==!1&&(void 0===t?i=!1:(t=this._getIndex(t),i=e.isArray(i)?e.map(i,function(e){return e!==t?e:null}):e.map(this.tabs,function(e,i){return i!==t?i:null})),this._setupDisabled(i))},disable:function(t){var i=this.options.disabled;if(i!==!0){if(void 0===t)i=!0;else{if(t=this._getIndex(t),-1!==e.inArray(t,i))return;i=e.isArray(i)?e.merge([t],i).sort():[t]}this._setupDisabled(i)}},load:function(t,i){t=this._getIndex(t);var s=this,n=this.tabs.eq(t),a=n.find(".ui-tabs-anchor"),o=this._getPanelForTab(n),r={tab:n,panel:o};this._isLocal(a[0])||(this.xhr=e.ajax(this._ajaxSettings(a,i,r)),this.xhr&&"canceled"!==this.xhr.statusText&&(n.addClass("ui-tabs-loading"),o.attr("aria-busy","true"),this.xhr.success(function(e){setTimeout(function(){o.html(e),s._trigger("load",i,r)},1)}).complete(function(e,t){setTimeout(function(){"abort"===t&&s.panels.stop(!1,!0),n.removeClass("ui-tabs-loading"),o.removeAttr("aria-busy"),e===s.xhr&&delete s.xhr},1)})))},_ajaxSettings:function(t,i,s){var n=this;return{url:t.attr("href"),beforeSend:function(t,a){return n._trigger("beforeLoad",i,e.extend({jqXHR:t,ajaxSettings:a},s))}}},_getPanelForTab:function(t){var i=e(t).attr("aria-controls");return this.element.find(this._sanitizeSelector("#"+i))}}),e.widget("ui.tooltip",{version:"1.11.3",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,i){var s=(t.attr("aria-describedby")||"").split(/\s+/);s.push(i),t.data("ui-tooltip-id",i).attr("aria-describedby",e.trim(s.join(" ")))},_removeDescribedBy:function(t){var i=t.data("ui-tooltip-id"),s=(t.attr("aria-describedby")||"").split(/\s+/),n=e.inArray(i,s);-1!==n&&s.splice(n,1),t.removeData("ui-tooltip-id"),s=e.trim(s.join(" ")),s?t.attr("aria-describedby",s):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,i){var s=this;return"disabled"===t?(this[i?"_disable":"_enable"](),this.options[t]=i,void 0):(this._super(t,i),"content"===t&&e.each(this.tooltips,function(e,t){s._updateContent(t.element)}),void 0)},_disable:function(){var t=this;e.each(this.tooltips,function(i,s){var n=e.Event("blur");n.target=n.currentTarget=s.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 i=this,s=e(t?t.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),t&&"mouseover"===t.type&&s.parents().each(function(){var t,s=e(this);s.data("ui-tooltip-open")&&(t=e.Event("blur"),t.target=t.currentTarget=this,i.close(t,!0)),s.attr("title")&&(s.uniqueId(),i.parents[this.id]={element:this,title:s.attr("title")},s.attr("title",""))}),this._updateContent(s,t))},_updateContent:function(e,t){var i,s=this.options.content,n=this,a=t?t.type:null;return"string"==typeof s?this._open(t,e,s):(i=s.call(e[0],function(i){e.data("ui-tooltip-open")&&n._delay(function(){t&&(t.type=a),this._open(t,e,i)})}),i&&this._open(t,e,i),void 0)},_open:function(t,i,s){function n(e){u.of=e,o.is(":hidden")||o.position(u)}var a,o,r,h,l,u=e.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]")&&(t&&"mouseover"===t.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?(l=s.clone(),l.removeAttr("id").find("[id]").removeAttr("id")):l=s,e("<div>").html(l).appendTo(this.liveRegion),this.options.track&&t&&/^mouse/.test(t.type)?(this._on(this.document,{mousemove:n}),n(t)):o.position(e.extend({of:i},this.options.position)),o.hide(),this._show(o,this.options.show),this.options.show&&this.options.show.delay&&(h=this.delayedShow=setInterval(function(){o.is(":visible")&&(n(u.of),clearInterval(h))},e.fx.interval)),this._trigger("open",t,{tooltip:o}),r={keyup:function(t){if(t.keyCode===e.ui.keyCode.ESCAPE){var s=e.Event(t);s.currentTarget=i[0],this.close(s,!0)}}},i[0]!==this.element[0]&&(r.remove=function(){this._removeTooltip(o)}),t&&"mouseover"!==t.type||(r.mouseleave="close"),t&&"focusin"!==t.type||(r.focusout="close"),this._on(!0,i,r)}},close:function(t){var i,s=this,n=e(t?t.currentTarget:this.element),a=this._find(n);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(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,i){e(i.element).attr("title",i.title),delete s.parents[t]}),a.closing=!0,this._trigger("close",t,{tooltip:i}),a.hiding||(a.closing=!1)))},_tooltip:function(t){var i=e("<div>").attr("role","tooltip").addClass("ui-tooltip ui-widget ui-corner-all ui-widget-content "+(this.options.tooltipClass||"")),s=i.uniqueId().attr("id");return e("<div>").addClass("ui-tooltip-content").appendTo(i),i.appendTo(this.document[0].body),this.tooltips[s]={element:t,tooltip:i}},_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(i,s){var n=e.Event("blur"),a=s.element;n.target=n.currentTarget=a[0],t.close(n,!0),e("#"+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
diff --git a/src/main/resources/META-INF/resources/designer/lib/jquery-ui-1.11.3/jquery-ui.structure.css b/src/main/resources/META-INF/resources/designer/lib/jquery-ui-1.11.3/jquery-ui.structure.css
deleted file mode 100644 (file)
index 6a278af..0000000
+++ /dev/null
@@ -1,833 +0,0 @@
-/*!
- * jQuery UI CSS Framework 1.11.3
- * http://jqueryui.com
- *
- * Copyright jQuery Foundation and other contributors
- * Released under the MIT license.
- * http://jquery.org/license
- *
- * http://api.jqueryui.com/category/theming/
- */
-
-/* Layout helpers
-----------------------------------*/
-.ui-helper-hidden {
-       display: none;
-}
-.ui-helper-hidden-accessible {
-       border: 0;
-       clip: rect(0 0 0 0);
-       height: 1px;
-       margin: -1px;
-       overflow: hidden;
-       padding: 0;
-       position: absolute;
-       width: 1px;
-}
-.ui-helper-reset {
-       margin: 0;
-       padding: 0;
-       border: 0;
-       outline: 0;
-       line-height: 1.3;
-       text-decoration: none;
-       font-size: 100%;
-       list-style: none;
-}
-.ui-helper-clearfix:before,
-.ui-helper-clearfix:after {
-       content: "";
-       display: table;
-       border-collapse: collapse;
-}
-.ui-helper-clearfix:after {
-       clear: both;
-}
-.ui-helper-clearfix {
-       min-height: 0; /* support: IE7 */
-}
-.ui-helper-zfix {
-       width: 100%;
-       height: 100%;
-       top: 0;
-       left: 0;
-       position: absolute;
-       opacity: 0;
-       filter:Alpha(Opacity=0); /* support: IE8 */
-}
-
-.ui-front {
-       z-index: 100;
-}
-
-
-/* Interaction Cues
-----------------------------------*/
-.ui-state-disabled {
-       cursor: default !important;
-}
-
-
-/* Icons
-----------------------------------*/
-
-/* states and images */
-.ui-icon {
-       display: block;
-       text-indent: -99999px;
-       overflow: hidden;
-       background-repeat: no-repeat;
-}
-
-
-/* Misc visuals
-----------------------------------*/
-
-/* Overlays */
-.ui-widget-overlay {
-       position: fixed;
-       top: 0;
-       left: 0;
-       width: 100%;
-       height: 100%;
-}
-.ui-accordion .ui-accordion-header {
-       display: block;
-       cursor: pointer;
-       position: relative;
-       margin: 2px 0 0 0;
-       padding: .5em .5em .5em .7em;
-       min-height: 0; /* support: IE7 */
-       font-size: 100%;
-}
-.ui-accordion .ui-accordion-icons {
-       padding-left: 2.2em;
-}
-.ui-accordion .ui-accordion-icons .ui-accordion-icons {
-       padding-left: 2.2em;
-}
-.ui-accordion .ui-accordion-header .ui-accordion-header-icon {
-       position: absolute;
-       left: .5em;
-       top: 50%;
-       margin-top: -8px;
-}
-.ui-accordion .ui-accordion-content {
-       padding: 1em 2.2em;
-       border-top: 0;
-       overflow: auto;
-}
-.ui-autocomplete {
-       position: absolute;
-       top: 0;
-       left: 0;
-       cursor: default;
-}
-.ui-button {
-       display: inline-block;
-       position: relative;
-       padding: 0;
-       line-height: normal;
-       margin-right: .1em;
-       cursor: pointer;
-       vertical-align: middle;
-       text-align: center;
-       overflow: visible; /* removes extra width in IE */
-}
-.ui-button,
-.ui-button:link,
-.ui-button:visited,
-.ui-button:hover,
-.ui-button:active {
-       text-decoration: none;
-}
-/* to make room for the icon, a width needs to be set here */
-.ui-button-icon-only {
-       width: 2.2em;
-}
-/* button elements seem to need a little more width */
-button.ui-button-icon-only {
-       width: 2.4em;
-}
-.ui-button-icons-only {
-       width: 3.4em;
-}
-button.ui-button-icons-only {
-       width: 3.7em;
-}
-
-/* button text element */
-.ui-button .ui-button-text {
-       display: block;
-       line-height: normal;
-}
-.ui-button-text-only .ui-button-text {
-       padding: .4em 1em;
-}
-.ui-button-icon-only .ui-button-text,
-.ui-button-icons-only .ui-button-text {
-       padding: .4em;
-       text-indent: -9999999px;
-}
-.ui-button-text-icon-primary .ui-button-text,
-.ui-button-text-icons .ui-button-text {
-       padding: .4em 1em .4em 2.1em;
-}
-.ui-button-text-icon-secondary .ui-button-text,
-.ui-button-text-icons .ui-button-text {
-       padding: .4em 2.1em .4em 1em;
-}
-.ui-button-text-icons .ui-button-text {
-       padding-left: 2.1em;
-       padding-right: 2.1em;
-}
-/* no icon support for input elements, provide padding by default */
-input.ui-button {
-       padding: .4em 1em;
-}
-
-/* button icon element(s) */
-.ui-button-icon-only .ui-icon,
-.ui-button-text-icon-primary .ui-icon,
-.ui-button-text-icon-secondary .ui-icon,
-.ui-button-text-icons .ui-icon,
-.ui-button-icons-only .ui-icon {
-       position: absolute;
-       top: 50%;
-       margin-top: -8px;
-}
-.ui-button-icon-only .ui-icon {
-       left: 50%;
-       margin-left: -8px;
-}
-.ui-button-text-icon-primary .ui-button-icon-primary,
-.ui-button-text-icons .ui-button-icon-primary,
-.ui-button-icons-only .ui-button-icon-primary {
-       left: .5em;
-}
-.ui-button-text-icon-secondary .ui-button-icon-secondary,
-.ui-button-text-icons .ui-button-icon-secondary,
-.ui-button-icons-only .ui-button-icon-secondary {
-       right: .5em;
-}
-
-/* button sets */
-.ui-buttonset {
-       margin-right: 7px;
-}
-.ui-buttonset .ui-button {
-       margin-left: 0;
-       margin-right: -.3em;
-}
-
-/* workarounds */
-/* reset extra padding in Firefox, see h5bp.com/l */
-input.ui-button::-moz-focus-inner,
-button.ui-button::-moz-focus-inner {
-       border: 0;
-       padding: 0;
-}
-.ui-datepicker {
-       width: 17em;
-       padding: .2em .2em 0;
-       display: none;
-}
-.ui-datepicker .ui-datepicker-header {
-       position: relative;
-       padding: .2em 0;
-}
-.ui-datepicker .ui-datepicker-prev,
-.ui-datepicker .ui-datepicker-next {
-       position: absolute;
-       top: 2px;
-       width: 1.8em;
-       height: 1.8em;
-}
-.ui-datepicker .ui-datepicker-prev-hover,
-.ui-datepicker .ui-datepicker-next-hover {
-       top: 1px;
-}
-.ui-datepicker .ui-datepicker-prev {
-       left: 2px;
-}
-.ui-datepicker .ui-datepicker-next {
-       right: 2px;
-}
-.ui-datepicker .ui-datepicker-prev-hover {
-       left: 1px;
-}
-.ui-datepicker .ui-datepicker-next-hover {
-       right: 1px;
-}
-.ui-datepicker .ui-datepicker-prev span,
-.ui-datepicker .ui-datepicker-next span {
-       display: block;
-       position: absolute;
-       left: 50%;
-       margin-left: -8px;
-       top: 50%;
-       margin-top: -8px;
-}
-.ui-datepicker .ui-datepicker-title {
-       margin: 0 2.3em;
-       line-height: 1.8em;
-       text-align: center;
-}
-.ui-datepicker .ui-datepicker-title select {
-       font-size: 1em;
-       margin: 1px 0;
-}
-.ui-datepicker select.ui-datepicker-month,
-.ui-datepicker select.ui-datepicker-year {
-       width: 45%;
-}
-.ui-datepicker table {
-       width: 100%;
-       font-size: .9em;
-       border-collapse: collapse;
-       margin: 0 0 .4em;
-}
-.ui-datepicker th {
-       padding: .7em .3em;
-       text-align: center;
-       font-weight: bold;
-       border: 0;
-}
-.ui-datepicker td {
-       border: 0;
-       padding: 1px;
-}
-.ui-datepicker td span,
-.ui-datepicker td a {
-       display: block;
-       padding: .2em;
-       text-align: right;
-       text-decoration: none;
-}
-.ui-datepicker .ui-datepicker-buttonpane {
-       background-image: none;
-       margin: .7em 0 0 0;
-       padding: 0 .2em;
-       border-left: 0;
-       border-right: 0;
-       border-bottom: 0;
-}
-.ui-datepicker .ui-datepicker-buttonpane button {
-       float: right;
-       margin: .5em .2em .4em;
-       cursor: pointer;
-       padding: .2em .6em .3em .6em;
-       width: auto;
-       overflow: visible;
-}
-.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current {
-       float: left;
-}
-
-/* with multiple calendars */
-.ui-datepicker.ui-datepicker-multi {
-       width: auto;
-}
-.ui-datepicker-multi .ui-datepicker-group {
-       float: left;
-}
-.ui-datepicker-multi .ui-datepicker-group table {
-       width: 95%;
-       margin: 0 auto .4em;
-}
-.ui-datepicker-multi-2 .ui-datepicker-group {
-       width: 50%;
-}
-.ui-datepicker-multi-3 .ui-datepicker-group {
-       width: 33.3%;
-}
-.ui-datepicker-multi-4 .ui-datepicker-group {
-       width: 25%;
-}
-.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header,
-.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header {
-       border-left-width: 0;
-}
-.ui-datepicker-multi .ui-datepicker-buttonpane {
-       clear: left;
-}
-.ui-datepicker-row-break {
-       clear: both;
-       width: 100%;
-       font-size: 0;
-}
-
-/* RTL support */
-.ui-datepicker-rtl {
-       direction: rtl;
-}
-.ui-datepicker-rtl .ui-datepicker-prev {
-       right: 2px;
-       left: auto;
-}
-.ui-datepicker-rtl .ui-datepicker-next {
-       left: 2px;
-       right: auto;
-}
-.ui-datepicker-rtl .ui-datepicker-prev:hover {
-       right: 1px;
-       left: auto;
-}
-.ui-datepicker-rtl .ui-datepicker-next:hover {
-       left: 1px;
-       right: auto;
-}
-.ui-datepicker-rtl .ui-datepicker-buttonpane {
-       clear: right;
-}
-.ui-datepicker-rtl .ui-datepicker-buttonpane button {
-       float: left;
-}
-.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current,
-.ui-datepicker-rtl .ui-datepicker-group {
-       float: right;
-}
-.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header,
-.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header {
-       border-right-width: 0;
-       border-left-width: 1px;
-}
-.ui-dialog {
-       overflow: hidden;
-       position: absolute;
-       top: 0;
-       left: 0;
-       padding: .2em;
-       outline: 0;
-}
-.ui-dialog .ui-dialog-titlebar {
-       padding: .4em 1em;
-       position: relative;
-}
-.ui-dialog .ui-dialog-title {
-       float: left;
-       margin: .1em 0;
-       white-space: nowrap;
-       width: 90%;
-       overflow: hidden;
-       text-overflow: ellipsis;
-}
-.ui-dialog .ui-dialog-titlebar-close {
-       position: absolute;
-       right: .3em;
-       top: 50%;
-       width: 20px;
-       margin: -10px 0 0 0;
-       padding: 1px;
-       height: 20px;
-}
-.ui-dialog .ui-dialog-content {
-       position: relative;
-       border: 0;
-       padding: .5em 1em;
-       background: none;
-       overflow: auto;
-}
-.ui-dialog .ui-dialog-buttonpane {
-       text-align: left;
-       border-width: 1px 0 0 0;
-       background-image: none;
-       margin-top: .5em;
-       padding: .3em 1em .5em .4em;
-}
-.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset {
-       float: right;
-}
-.ui-dialog .ui-dialog-buttonpane button {
-       margin: .5em .4em .5em 0;
-       cursor: pointer;
-}
-.ui-dialog .ui-resizable-se {
-       width: 12px;
-       height: 12px;
-       right: -5px;
-       bottom: -5px;
-       background-position: 16px 16px;
-}
-.ui-draggable .ui-dialog-titlebar {
-       cursor: move;
-}
-.ui-draggable-handle {
-       -ms-touch-action: none;
-       touch-action: none;
-}
-.ui-menu {
-       list-style: none;
-       padding: 0;
-       margin: 0;
-       display: block;
-       outline: none;
-}
-.ui-menu .ui-menu {
-       position: absolute;
-}
-.ui-menu .ui-menu-item {
-       position: relative;
-       margin: 0;
-       padding: 3px 1em 3px .4em;
-       cursor: pointer;
-       min-height: 0; /* support: IE7 */
-       /* support: IE10, see #8844 */
-       list-style-image: url("data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7");
-}
-.ui-menu .ui-menu-divider {
-       margin: 5px 0;
-       height: 0;
-       font-size: 0;
-       line-height: 0;
-       border-width: 1px 0 0 0;
-}
-.ui-menu .ui-state-focus,
-.ui-menu .ui-state-active {
-       margin: -1px;
-}
-
-/* icon support */
-.ui-menu-icons {
-       position: relative;
-}
-.ui-menu-icons .ui-menu-item {
-       padding-left: 2em;
-}
-
-/* left-aligned */
-.ui-menu .ui-icon {
-       position: absolute;
-       top: 0;
-       bottom: 0;
-       left: .2em;
-       margin: auto 0;
-}
-
-/* right-aligned */
-.ui-menu .ui-menu-icon {
-       left: auto;
-       right: 0;
-}
-.ui-progressbar {
-       height: 2em;
-       text-align: left;
-       overflow: hidden;
-}
-.ui-progressbar .ui-progressbar-value {
-       margin: -1px;
-       height: 100%;
-}
-.ui-progressbar .ui-progressbar-overlay {
-       background: url("data:image/gif;base64,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");
-       height: 100%;
-       filter: alpha(opacity=25); /* support: IE8 */
-       opacity: 0.25;
-}
-.ui-progressbar-indeterminate .ui-progressbar-value {
-       background-image: none;
-}
-.ui-resizable {
-       position: relative;
-}
-.ui-resizable-handle {
-       position: absolute;
-       font-size: 0.1px;
-       display: block;
-       -ms-touch-action: none;
-       touch-action: none;
-}
-.ui-resizable-disabled .ui-resizable-handle,
-.ui-resizable-autohide .ui-resizable-handle {
-       display: none;
-}
-.ui-resizable-n {
-       cursor: n-resize;
-       height: 7px;
-       width: 100%;
-       top: -5px;
-       left: 0;
-}
-.ui-resizable-s {
-       cursor: s-resize;
-       height: 7px;
-       width: 100%;
-       bottom: -5px;
-       left: 0;
-}
-.ui-resizable-e {
-       cursor: e-resize;
-       width: 7px;
-       right: -5px;
-       top: 0;
-       height: 100%;
-}
-.ui-resizable-w {
-       cursor: w-resize;
-       width: 7px;
-       left: -5px;
-       top: 0;
-       height: 100%;
-}
-.ui-resizable-se {
-       cursor: se-resize;
-       width: 12px;
-       height: 12px;
-       right: 1px;
-       bottom: 1px;
-}
-.ui-resizable-sw {
-       cursor: sw-resize;
-       width: 9px;
-       height: 9px;
-       left: -5px;
-       bottom: -5px;
-}
-.ui-resizable-nw {
-       cursor: nw-resize;
-       width: 9px;
-       height: 9px;
-       left: -5px;
-       top: -5px;
-}
-.ui-resizable-ne {
-       cursor: ne-resize;
-       width: 9px;
-       height: 9px;
-       right: -5px;
-       top: -5px;
-}
-.ui-selectable {
-       -ms-touch-action: none;
-       touch-action: none;
-}
-.ui-selectable-helper {
-       position: absolute;
-       z-index: 100;
-       border: 1px dotted black;
-}
-.ui-selectmenu-menu {
-       padding: 0;
-       margin: 0;
-       position: absolute;
-       top: 0;
-       left: 0;
-       display: none;
-}
-.ui-selectmenu-menu .ui-menu {
-       overflow: auto;
-       /* Support: IE7 */
-       overflow-x: hidden;
-       padding-bottom: 1px;
-}
-.ui-selectmenu-menu .ui-menu .ui-selectmenu-optgroup {
-       font-size: 1em;
-       font-weight: bold;
-       line-height: 1.5;
-       padding: 2px 0.4em;
-       margin: 0.5em 0 0 0;
-       height: auto;
-       border: 0;
-}
-.ui-selectmenu-open {
-       display: block;
-}
-.ui-selectmenu-button {
-       display: inline-block;
-       overflow: hidden;
-       position: relative;
-       text-decoration: none;
-       cursor: pointer;
-}
-.ui-selectmenu-button span.ui-icon {
-       right: 0.5em;
-       left: auto;
-       margin-top: -8px;
-       position: absolute;
-       top: 50%;
-}
-.ui-selectmenu-button span.ui-selectmenu-text {
-       text-align: left;
-       padding: 0.4em 2.1em 0.4em 1em;
-       display: block;
-       line-height: 1.4;
-       overflow: hidden;
-       text-overflow: ellipsis;
-       white-space: nowrap;
-}
-.ui-slider {
-       position: relative;
-       text-align: left;
-}
-.ui-slider .ui-slider-handle {
-       position: absolute;
-       z-index: 2;
-       width: 1.2em;
-       height: 1.2em;
-       cursor: default;
-       -ms-touch-action: none;
-       touch-action: none;
-}
-.ui-slider .ui-slider-range {
-       position: absolute;
-       z-index: 1;
-       font-size: .7em;
-       display: block;
-       border: 0;
-       background-position: 0 0;
-}
-
-/* support: IE8 - See #6727 */
-.ui-slider.ui-state-disabled .ui-slider-handle,
-.ui-slider.ui-state-disabled .ui-slider-range {
-       filter: inherit;
-}
-
-.ui-slider-horizontal {
-       height: .8em;
-}
-.ui-slider-horizontal .ui-slider-handle {
-       top: -.3em;
-       margin-left: -.6em;
-}
-.ui-slider-horizontal .ui-slider-range {
-       top: 0;
-       height: 100%;
-}
-.ui-slider-horizontal .ui-slider-range-min {
-       left: 0;
-}
-.ui-slider-horizontal .ui-slider-range-max {
-       right: 0;
-}
-
-.ui-slider-vertical {
-       width: .8em;
-       height: 100px;
-}
-.ui-slider-vertical .ui-slider-handle {
-       left: -.3em;
-       margin-left: 0;
-       margin-bottom: -.6em;
-}
-.ui-slider-vertical .ui-slider-range {
-       left: 0;
-       width: 100%;
-}
-.ui-slider-vertical .ui-slider-range-min {
-       bottom: 0;
-}
-.ui-slider-vertical .ui-slider-range-max {
-       top: 0;
-}
-.ui-sortable-handle {
-       -ms-touch-action: none;
-       touch-action: none;
-}
-.ui-spinner {
-       position: relative;
-       display: inline-block;
-       overflow: hidden;
-       padding: 0;
-       vertical-align: middle;
-}
-.ui-spinner-input {
-       border: none;
-       background: none;
-       color: inherit;
-       padding: 0;
-       margin: .2em 0;
-       vertical-align: middle;
-       margin-left: .4em;
-       margin-right: 22px;
-}
-.ui-spinner-button {
-       width: 16px;
-       height: 50%;
-       font-size: .5em;
-       padding: 0;
-       margin: 0;
-       text-align: center;
-       position: absolute;
-       cursor: default;
-       display: block;
-       overflow: hidden;
-       right: 0;
-}
-/* more specificity required here to override default borders */
-.ui-spinner a.ui-spinner-button {
-       border-top: none;
-       border-bottom: none;
-       border-right: none;
-}
-/* vertically center icon */
-.ui-spinner .ui-icon {
-       position: absolute;
-       margin-top: -8px;
-       top: 50%;
-       left: 0;
-}
-.ui-spinner-up {
-       top: 0;
-}
-.ui-spinner-down {
-       bottom: 0;
-}
-
-/* TR overrides */
-.ui-spinner .ui-icon-triangle-1-s {
-       /* need to fix icons sprite */
-       background-position: -65px -16px;
-}
-.ui-tabs {
-       position: relative;/* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as "fixed") */
-       padding: .2em;
-}
-.ui-tabs .ui-tabs-nav {
-       margin: 0;
-       padding: .2em .2em 0;
-}
-.ui-tabs .ui-tabs-nav li {
-       list-style: none;
-       float: left;
-       position: relative;
-       top: 0;
-       margin: 1px .2em 0 0;
-       border-bottom-width: 0;
-       padding: 0;
-       white-space: nowrap;
-}
-.ui-tabs .ui-tabs-nav .ui-tabs-anchor {
-       float: left;
-       padding: .5em 1em;
-       text-decoration: none;
-}
-.ui-tabs .ui-tabs-nav li.ui-tabs-active {
-       margin-bottom: -1px;
-       padding-bottom: 1px;
-}
-.ui-tabs .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor,
-.ui-tabs .ui-tabs-nav li.ui-state-disabled .ui-tabs-anchor,
-.ui-tabs .ui-tabs-nav li.ui-tabs-loading .ui-tabs-anchor {
-       cursor: text;
-}
-.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor {
-       cursor: pointer;
-}
-.ui-tabs .ui-tabs-panel {
-       display: block;
-       border-width: 0;
-       padding: 1em 1.4em;
-       background: none;
-}
-.ui-tooltip {
-       padding: 8px;
-       position: absolute;
-       z-index: 9999;
-       max-width: 300px;
-       -webkit-box-shadow: 0 0 5px #aaa;
-       box-shadow: 0 0 5px #aaa;
-}
-body .ui-tooltip {
-       border-width: 2px;
-}
diff --git a/src/main/resources/META-INF/resources/designer/lib/jquery-ui-1.11.3/jquery-ui.structure.min.css b/src/main/resources/META-INF/resources/designer/lib/jquery-ui-1.11.3/jquery-ui.structure.min.css
deleted file mode 100644 (file)
index 7495d8a..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-/*! jQuery UI - v1.11.3 - 2015-02-12
-* http://jqueryui.com
-* Copyright jQuery Foundation and other contributors; Licensed MIT */
-
-.ui-helper-hidden{display:none}.ui-helper-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.ui-helper-reset{margin:0;padding:0;border:0;outline:0;line-height:1.3;text-decoration:none;font-size:100%;list-style:none}.ui-helper-clearfix:before,.ui-helper-clearfix:after{content:"";display:table;border-collapse:collapse}.ui-helper-clearfix:after{clear:both}.ui-helper-clearfix{min-height:0}.ui-helper-zfix{width:100%;height:100%;top:0;left:0;position:absolute;opacity:0;filter:Alpha(Opacity=0)}.ui-front{z-index:100}.ui-state-disabled{cursor:default!important}.ui-icon{display:block;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat}.ui-widget-overlay{position:fixed;top:0;left:0;width:100%;height:100%}.ui-accordion .ui-accordion-header{display:block;cursor:pointer;position:relative;margin:2px 0 0 0;padding:.5em .5em .5em .7em;min-height:0;font-size:100%}.ui-accordion .ui-accordion-icons{padding-left:2.2em}.ui-accordion .ui-accordion-icons .ui-accordion-icons{padding-left:2.2em}.ui-accordion .ui-accordion-header .ui-accordion-header-icon{position:absolute;left:.5em;top:50%;margin-top:-8px}.ui-accordion .ui-accordion-content{padding:1em 2.2em;border-top:0;overflow:auto}.ui-autocomplete{position:absolute;top:0;left:0;cursor:default}.ui-button{display:inline-block;position:relative;padding:0;line-height:normal;margin-right:.1em;cursor:pointer;vertical-align:middle;text-align:center;overflow:visible}.ui-button,.ui-button:link,.ui-button:visited,.ui-button:hover,.ui-button:active{text-decoration:none}.ui-button-icon-only{width:2.2em}button.ui-button-icon-only{width:2.4em}.ui-button-icons-only{width:3.4em}button.ui-button-icons-only{width:3.7em}.ui-button .ui-button-text{display:block;line-height:normal}.ui-button-text-only .ui-button-text{padding:.4em 1em}.ui-button-icon-only .ui-button-text,.ui-button-icons-only .ui-button-text{padding:.4em;text-indent:-9999999px}.ui-button-text-icon-primary .ui-button-text,.ui-button-text-icons .ui-button-text{padding:.4em 1em .4em 2.1em}.ui-button-text-icon-secondary .ui-button-text,.ui-button-text-icons .ui-button-text{padding:.4em 2.1em .4em 1em}.ui-button-text-icons .ui-button-text{padding-left:2.1em;padding-right:2.1em}input.ui-button{padding:.4em 1em}.ui-button-icon-only .ui-icon,.ui-button-text-icon-primary .ui-icon,.ui-button-text-icon-secondary .ui-icon,.ui-button-text-icons .ui-icon,.ui-button-icons-only .ui-icon{position:absolute;top:50%;margin-top:-8px}.ui-button-icon-only .ui-icon{left:50%;margin-left:-8px}.ui-button-text-icon-primary .ui-button-icon-primary,.ui-button-text-icons .ui-button-icon-primary,.ui-button-icons-only .ui-button-icon-primary{left:.5em}.ui-button-text-icon-secondary .ui-button-icon-secondary,.ui-button-text-icons .ui-button-icon-secondary,.ui-button-icons-only .ui-button-icon-secondary{right:.5em}.ui-buttonset{margin-right:7px}.ui-buttonset .ui-button{margin-left:0;margin-right:-.3em}input.ui-button::-moz-focus-inner,button.ui-button::-moz-focus-inner{border:0;padding:0}.ui-datepicker{width:17em;padding:.2em .2em 0;display:none}.ui-datepicker .ui-datepicker-header{position:relative;padding:.2em 0}.ui-datepicker .ui-datepicker-prev,.ui-datepicker .ui-datepicker-next{position:absolute;top:2px;width:1.8em;height:1.8em}.ui-datepicker .ui-datepicker-prev-hover,.ui-datepicker .ui-datepicker-next-hover{top:1px}.ui-datepicker .ui-datepicker-prev{left:2px}.ui-datepicker .ui-datepicker-next{right:2px}.ui-datepicker .ui-datepicker-prev-hover{left:1px}.ui-datepicker .ui-datepicker-next-hover{right:1px}.ui-datepicker .ui-datepicker-prev span,.ui-datepicker .ui-datepicker-next span{display:block;position:absolute;left:50%;margin-left:-8px;top:50%;margin-top:-8px}.ui-datepicker .ui-datepicker-title{margin:0 2.3em;line-height:1.8em;text-align:center}.ui-datepicker .ui-datepicker-title select{font-size:1em;margin:1px 0}.ui-datepicker select.ui-datepicker-month,.ui-datepicker select.ui-datepicker-year{width:45%}.ui-datepicker table{width:100%;font-size:.9em;border-collapse:collapse;margin:0 0 .4em}.ui-datepicker th{padding:.7em .3em;text-align:center;font-weight:bold;border:0}.ui-datepicker td{border:0;padding:1px}.ui-datepicker td span,.ui-datepicker td a{display:block;padding:.2em;text-align:right;text-decoration:none}.ui-datepicker .ui-datepicker-buttonpane{background-image:none;margin:.7em 0 0 0;padding:0 .2em;border-left:0;border-right:0;border-bottom:0}.ui-datepicker .ui-datepicker-buttonpane button{float:right;margin:.5em .2em .4em;cursor:pointer;padding:.2em .6em .3em .6em;width:auto;overflow:visible}.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current{float:left}.ui-datepicker.ui-datepicker-multi{width:auto}.ui-datepicker-multi .ui-datepicker-group{float:left}.ui-datepicker-multi .ui-datepicker-group table{width:95%;margin:0 auto .4em}.ui-datepicker-multi-2 .ui-datepicker-group{width:50%}.ui-datepicker-multi-3 .ui-datepicker-group{width:33.3%}.ui-datepicker-multi-4 .ui-datepicker-group{width:25%}.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header{border-left-width:0}.ui-datepicker-multi .ui-datepicker-buttonpane{clear:left}.ui-datepicker-row-break{clear:both;width:100%;font-size:0}.ui-datepicker-rtl{direction:rtl}.ui-datepicker-rtl .ui-datepicker-prev{right:2px;left:auto}.ui-datepicker-rtl .ui-datepicker-next{left:2px;right:auto}.ui-datepicker-rtl .ui-datepicker-prev:hover{right:1px;left:auto}.ui-datepicker-rtl .ui-datepicker-next:hover{left:1px;right:auto}.ui-datepicker-rtl .ui-datepicker-buttonpane{clear:right}.ui-datepicker-rtl .ui-datepicker-buttonpane button{float:left}.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current,.ui-datepicker-rtl .ui-datepicker-group{float:right}.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header{border-right-width:0;border-left-width:1px}.ui-dialog{overflow:hidden;position:absolute;top:0;left:0;padding:.2em;outline:0}.ui-dialog .ui-dialog-titlebar{padding:.4em 1em;position:relative}.ui-dialog .ui-dialog-title{float:left;margin:.1em 0;white-space:nowrap;width:90%;overflow:hidden;text-overflow:ellipsis}.ui-dialog .ui-dialog-titlebar-close{position:absolute;right:.3em;top:50%;width:20px;margin:-10px 0 0 0;padding:1px;height:20px}.ui-dialog .ui-dialog-content{position:relative;border:0;padding:.5em 1em;background:none;overflow:auto}.ui-dialog .ui-dialog-buttonpane{text-align:left;border-width:1px 0 0 0;background-image:none;margin-top:.5em;padding:.3em 1em .5em .4em}.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset{float:right}.ui-dialog .ui-dialog-buttonpane button{margin:.5em .4em .5em 0;cursor:pointer}.ui-dialog .ui-resizable-se{width:12px;height:12px;right:-5px;bottom:-5px;background-position:16px 16px}.ui-draggable .ui-dialog-titlebar{cursor:move}.ui-draggable-handle{-ms-touch-action:none;touch-action:none}.ui-menu{list-style:none;padding:0;margin:0;display:block;outline:none}.ui-menu .ui-menu{position:absolute}.ui-menu .ui-menu-item{position:relative;margin:0;padding:3px 1em 3px .4em;cursor:pointer;min-height:0;list-style-image:url("data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7")}.ui-menu .ui-menu-divider{margin:5px 0;height:0;font-size:0;line-height:0;border-width:1px 0 0 0}.ui-menu .ui-state-focus,.ui-menu .ui-state-active{margin:-1px}.ui-menu-icons{position:relative}.ui-menu-icons .ui-menu-item{padding-left:2em}.ui-menu .ui-icon{position:absolute;top:0;bottom:0;left:.2em;margin:auto 0}.ui-menu .ui-menu-icon{left:auto;right:0}.ui-progressbar{height:2em;text-align:left;overflow:hidden}.ui-progressbar .ui-progressbar-value{margin:-1px;height:100%}.ui-progressbar .ui-progressbar-overlay{background:url("data:image/gif;base64,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");height:100%;filter:alpha(opacity=25);opacity:0.25}.ui-progressbar-indeterminate .ui-progressbar-value{background-image:none}.ui-resizable{position:relative}.ui-resizable-handle{position:absolute;font-size:0.1px;display:block;-ms-touch-action:none;touch-action:none}.ui-resizable-disabled .ui-resizable-handle,.ui-resizable-autohide .ui-resizable-handle{display:none}.ui-resizable-n{cursor:n-resize;height:7px;width:100%;top:-5px;left:0}.ui-resizable-s{cursor:s-resize;height:7px;width:100%;bottom:-5px;left:0}.ui-resizable-e{cursor:e-resize;width:7px;right:-5px;top:0;height:100%}.ui-resizable-w{cursor:w-resize;width:7px;left:-5px;top:0;height:100%}.ui-resizable-se{cursor:se-resize;width:12px;height:12px;right:1px;bottom:1px}.ui-resizable-sw{cursor:sw-resize;width:9px;height:9px;left:-5px;bottom:-5px}.ui-resizable-nw{cursor:nw-resize;width:9px;height:9px;left:-5px;top:-5px}.ui-resizable-ne{cursor:ne-resize;width:9px;height:9px;right:-5px;top:-5px}.ui-selectable{-ms-touch-action:none;touch-action:none}.ui-selectable-helper{position:absolute;z-index:100;border:1px dotted black}.ui-selectmenu-menu{padding:0;margin:0;position:absolute;top:0;left:0;display:none}.ui-selectmenu-menu .ui-menu{overflow:auto;overflow-x:hidden;padding-bottom:1px}.ui-selectmenu-menu .ui-menu .ui-selectmenu-optgroup{font-size:1em;font-weight:bold;line-height:1.5;padding:2px 0.4em;margin:0.5em 0 0 0;height:auto;border:0}.ui-selectmenu-open{display:block}.ui-selectmenu-button{display:inline-block;overflow:hidden;position:relative;text-decoration:none;cursor:pointer}.ui-selectmenu-button span.ui-icon{right:0.5em;left:auto;margin-top:-8px;position:absolute;top:50%}.ui-selectmenu-button span.ui-selectmenu-text{text-align:left;padding:0.4em 2.1em 0.4em 1em;display:block;line-height:1.4;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ui-slider{position:relative;text-align:left}.ui-slider .ui-slider-handle{position:absolute;z-index:2;width:1.2em;height:1.2em;cursor:default;-ms-touch-action:none;touch-action:none}.ui-slider .ui-slider-range{position:absolute;z-index:1;font-size:.7em;display:block;border:0;background-position:0 0}.ui-slider.ui-state-disabled .ui-slider-handle,.ui-slider.ui-state-disabled .ui-slider-range{filter:inherit}.ui-slider-horizontal{height:.8em}.ui-slider-horizontal .ui-slider-handle{top:-.3em;margin-left:-.6em}.ui-slider-horizontal .ui-slider-range{top:0;height:100%}.ui-slider-horizontal .ui-slider-range-min{left:0}.ui-slider-horizontal .ui-slider-range-max{right:0}.ui-slider-vertical{width:.8em;height:100px}.ui-slider-vertical .ui-slider-handle{left:-.3em;margin-left:0;margin-bottom:-.6em}.ui-slider-vertical .ui-slider-range{left:0;width:100%}.ui-slider-vertical .ui-slider-range-min{bottom:0}.ui-slider-vertical .ui-slider-range-max{top:0}.ui-sortable-handle{-ms-touch-action:none;touch-action:none}.ui-spinner{position:relative;display:inline-block;overflow:hidden;padding:0;vertical-align:middle}.ui-spinner-input{border:none;background:none;color:inherit;padding:0;margin:.2em 0;vertical-align:middle;margin-left:.4em;margin-right:22px}.ui-spinner-button{width:16px;height:50%;font-size:.5em;padding:0;margin:0;text-align:center;position:absolute;cursor:default;display:block;overflow:hidden;right:0}.ui-spinner a.ui-spinner-button{border-top:none;border-bottom:none;border-right:none}.ui-spinner .ui-icon{position:absolute;margin-top:-8px;top:50%;left:0}.ui-spinner-up{top:0}.ui-spinner-down{bottom:0}.ui-spinner .ui-icon-triangle-1-s{background-position:-65px -16px}.ui-tabs{position:relative;padding:.2em}.ui-tabs .ui-tabs-nav{margin:0;padding:.2em .2em 0}.ui-tabs .ui-tabs-nav li{list-style:none;float:left;position:relative;top:0;margin:1px .2em 0 0;border-bottom-width:0;padding:0;white-space:nowrap}.ui-tabs .ui-tabs-nav .ui-tabs-anchor{float:left;padding:.5em 1em;text-decoration:none}.ui-tabs .ui-tabs-nav li.ui-tabs-active{margin-bottom:-1px;padding-bottom:1px}.ui-tabs .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor,.ui-tabs .ui-tabs-nav li.ui-state-disabled .ui-tabs-anchor,.ui-tabs .ui-tabs-nav li.ui-tabs-loading .ui-tabs-anchor{cursor:text}.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor{cursor:pointer}.ui-tabs .ui-tabs-panel{display:block;border-width:0;padding:1em 1.4em;background:none}.ui-tooltip{padding:8px;position:absolute;z-index:9999;max-width:300px;-webkit-box-shadow:0 0 5px #aaa;box-shadow:0 0 5px #aaa}body .ui-tooltip{border-width:2px}
\ No newline at end of file
diff --git a/src/main/resources/META-INF/resources/designer/lib/jquery-ui-1.11.3/jquery-ui.theme.css b/src/main/resources/META-INF/resources/designer/lib/jquery-ui-1.11.3/jquery-ui.theme.css
deleted file mode 100644 (file)
index 22a36bf..0000000
+++ /dev/null
@@ -1,410 +0,0 @@
-/*!
- * jQuery UI CSS Framework 1.11.3
- * http://jqueryui.com
- *
- * Copyright jQuery Foundation and other contributors
- * Released under the MIT license.
- * http://jquery.org/license
- *
- * http://api.jqueryui.com/category/theming/
- *
- * To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Arial%2CHelvetica%2Csans-serif&fsDefault=1em&fwDefault=normal&cornerRadius=3px&bgColorHeader=e9e9e9&bgTextureHeader=flat&borderColorHeader=dddddd&fcHeader=333333&iconColorHeader=444444&bgColorContent=ffffff&bgTextureContent=flat&borderColorContent=dddddd&fcContent=333333&iconColorContent=444444&bgColorDefault=f6f6f6&bgTextureDefault=flat&borderColorDefault=c5c5c5&fcDefault=454545&iconColorDefault=777777&bgColorHover=ededed&bgTextureHover=flat&borderColorHover=cccccc&fcHover=2b2b2b&iconColorHover=555555&bgColorActive=007fff&bgTextureActive=flat&borderColorActive=003eff&fcActive=ffffff&iconColorActive=ffffff&bgColorHighlight=fffa90&bgTextureHighlight=flat&borderColorHighlight=dad55e&fcHighlight=777620&iconColorHighlight=777620&bgColorError=fddfdf&bgTextureError=flat&borderColorError=f1a899&fcError=5f3f3f&iconColorError=cc0000&bgColorOverlay=aaaaaa&bgTextureOverlay=flat&bgImgOpacityOverlay=0&opacityOverlay=30&bgColorShadow=666666&bgTextureShadow=flat&bgImgOpacityShadow=0&opacityShadow=30&thicknessShadow=5px&offsetTopShadow=0px&offsetLeftShadow=0px&cornerRadiusShadow=8px
- */
-
-
-/* Component containers
-----------------------------------*/
-.ui-widget {
-       font-family: Arial,Helvetica,sans-serif;
-       font-size: 1em;
-}
-.ui-widget .ui-widget {
-       font-size: 1em;
-}
-.ui-widget input,
-.ui-widget select,
-.ui-widget textarea,
-.ui-widget button {
-       font-family: Arial,Helvetica,sans-serif;
-       font-size: 1em;
-}
-.ui-widget-content {
-       border: 1px solid #dddddd;
-       background: #ffffff;
-       color: #333333;
-}
-.ui-widget-content a {
-       color: #333333;
-}
-.ui-widget-header {
-       border: 1px solid #dddddd;
-       background: #e9e9e9;
-       color: #333333;
-       font-weight: bold;
-}
-.ui-widget-header a {
-       color: #333333;
-}
-
-/* Interaction states
-----------------------------------*/
-.ui-state-default,
-.ui-widget-content .ui-state-default,
-.ui-widget-header .ui-state-default {
-       border: 1px solid #c5c5c5;
-       background: #f6f6f6;
-       font-weight: normal;
-       color: #454545;
-}
-.ui-state-default a,
-.ui-state-default a:link,
-.ui-state-default a:visited {
-       color: #454545;
-       text-decoration: none;
-}
-.ui-state-hover,
-.ui-widget-content .ui-state-hover,
-.ui-widget-header .ui-state-hover,
-.ui-state-focus,
-.ui-widget-content .ui-state-focus,
-.ui-widget-header .ui-state-focus {
-       border: 1px solid #cccccc;
-       background: #ededed;
-       font-weight: normal;
-       color: #2b2b2b;
-}
-.ui-state-hover a,
-.ui-state-hover a:hover,
-.ui-state-hover a:link,
-.ui-state-hover a:visited,
-.ui-state-focus a,
-.ui-state-focus a:hover,
-.ui-state-focus a:link,
-.ui-state-focus a:visited {
-       color: #2b2b2b;
-       text-decoration: none;
-}
-.ui-state-active,
-.ui-widget-content .ui-state-active,
-.ui-widget-header .ui-state-active {
-       border: 1px solid #003eff;
-       background: #007fff;
-       font-weight: normal;
-       color: #ffffff;
-}
-.ui-state-active a,
-.ui-state-active a:link,
-.ui-state-active a:visited {
-       color: #ffffff;
-       text-decoration: none;
-}
-
-/* Interaction Cues
-----------------------------------*/
-.ui-state-highlight,
-.ui-widget-content .ui-state-highlight,
-.ui-widget-header .ui-state-highlight {
-       border: 1px solid #dad55e;
-       background: #fffa90;
-       color: #777620;
-}
-.ui-state-highlight a,
-.ui-widget-content .ui-state-highlight a,
-.ui-widget-header .ui-state-highlight a {
-       color: #777620;
-}
-.ui-state-error,
-.ui-widget-content .ui-state-error,
-.ui-widget-header .ui-state-error {
-       border: 1px solid #f1a899;
-       background: #fddfdf;
-       color: #5f3f3f;
-}
-.ui-state-error a,
-.ui-widget-content .ui-state-error a,
-.ui-widget-header .ui-state-error a {
-       color: #5f3f3f;
-}
-.ui-state-error-text,
-.ui-widget-content .ui-state-error-text,
-.ui-widget-header .ui-state-error-text {
-       color: #5f3f3f;
-}
-.ui-priority-primary,
-.ui-widget-content .ui-priority-primary,
-.ui-widget-header .ui-priority-primary {
-       font-weight: bold;
-}
-.ui-priority-secondary,
-.ui-widget-content .ui-priority-secondary,
-.ui-widget-header .ui-priority-secondary {
-       opacity: .7;
-       filter:Alpha(Opacity=70); /* support: IE8 */
-       font-weight: normal;
-}
-.ui-state-disabled,
-.ui-widget-content .ui-state-disabled,
-.ui-widget-header .ui-state-disabled {
-       opacity: .35;
-       filter:Alpha(Opacity=35); /* support: IE8 */
-       background-image: none;
-}
-.ui-state-disabled .ui-icon {
-       filter:Alpha(Opacity=35); /* support: IE8 - See #6059 */
-}
-
-/* Icons
-----------------------------------*/
-
-/* states and images */
-.ui-icon {
-       width: 16px;
-       height: 16px;
-}
-.ui-icon,
-.ui-widget-content .ui-icon {
-       background-image: url("images/ui-icons_444444_256x240.png");
-}
-.ui-widget-header .ui-icon {
-       background-image: url("images/ui-icons_444444_256x240.png");
-}
-.ui-state-default .ui-icon {
-       background-image: url("images/ui-icons_777777_256x240.png");
-}
-.ui-state-hover .ui-icon,
-.ui-state-focus .ui-icon {
-       background-image: url("images/ui-icons_555555_256x240.png");
-}
-.ui-state-active .ui-icon {
-       background-image: url("images/ui-icons_ffffff_256x240.png");
-}
-.ui-state-highlight .ui-icon {
-       background-image: url("images/ui-icons_777620_256x240.png");
-}
-.ui-state-error .ui-icon,
-.ui-state-error-text .ui-icon {
-       background-image: url("images/ui-icons_cc0000_256x240.png");
-}
-
-/* positioning */
-.ui-icon-blank { background-position: 16px 16px; }
-.ui-icon-carat-1-n { background-position: 0 0; }
-.ui-icon-carat-1-ne { background-position: -16px 0; }
-.ui-icon-carat-1-e { background-position: -32px 0; }
-.ui-icon-carat-1-se { background-position: -48px 0; }
-.ui-icon-carat-1-s { background-position: -64px 0; }
-.ui-icon-carat-1-sw { background-position: -80px 0; }
-.ui-icon-carat-1-w { background-position: -96px 0; }
-.ui-icon-carat-1-nw { background-position: -112px 0; }
-.ui-icon-carat-2-n-s { background-position: -128px 0; }
-.ui-icon-carat-2-e-w { background-position: -144px 0; }
-.ui-icon-triangle-1-n { background-position: 0 -16px; }
-.ui-icon-triangle-1-ne { background-position: -16px -16px; }
-.ui-icon-triangle-1-e { background-position: -32px -16px; }
-.ui-icon-triangle-1-se { background-position: -48px -16px; }
-.ui-icon-triangle-1-s { background-position: -64px -16px; }
-.ui-icon-triangle-1-sw { background-position: -80px -16px; }
-.ui-icon-triangle-1-w { background-position: -96px -16px; }
-.ui-icon-triangle-1-nw { background-position: -112px -16px; }
-.ui-icon-triangle-2-n-s { background-position: -128px -16px; }
-.ui-icon-triangle-2-e-w { background-position: -144px -16px; }
-.ui-icon-arrow-1-n { background-position: 0 -32px; }
-.ui-icon-arrow-1-ne { background-position: -16px -32px; }
-.ui-icon-arrow-1-e { background-position: -32px -32px; }
-.ui-icon-arrow-1-se { background-position: -48px -32px; }
-.ui-icon-arrow-1-s { background-position: -64px -32px; }
-.ui-icon-arrow-1-sw { background-position: -80px -32px; }
-.ui-icon-arrow-1-w { background-position: -96px -32px; }
-.ui-icon-arrow-1-nw { background-position: -112px -32px; }
-.ui-icon-arrow-2-n-s { background-position: -128px -32px; }
-.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }
-.ui-icon-arrow-2-e-w { background-position: -160px -32px; }
-.ui-icon-arrow-2-se-nw { background-position: -176px -32px; }
-.ui-icon-arrowstop-1-n { background-position: -192px -32px; }
-.ui-icon-arrowstop-1-e { background-position: -208px -32px; }
-.ui-icon-arrowstop-1-s { background-position: -224px -32px; }
-.ui-icon-arrowstop-1-w { background-position: -240px -32px; }
-.ui-icon-arrowthick-1-n { background-position: 0 -48px; }
-.ui-icon-arrowthick-1-ne { background-position: -16px -48px; }
-.ui-icon-arrowthick-1-e { background-position: -32px -48px; }
-.ui-icon-arrowthick-1-se { background-position: -48px -48px; }
-.ui-icon-arrowthick-1-s { background-position: -64px -48px; }
-.ui-icon-arrowthick-1-sw { background-position: -80px -48px; }
-.ui-icon-arrowthick-1-w { background-position: -96px -48px; }
-.ui-icon-arrowthick-1-nw { background-position: -112px -48px; }
-.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }
-.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }
-.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }
-.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }
-.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }
-.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }
-.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }
-.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }
-.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }
-.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }
-.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }
-.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }
-.ui-icon-arrowreturn-1-w { background-position: -64px -64px; }
-.ui-icon-arrowreturn-1-n { background-position: -80px -64px; }
-.ui-icon-arrowreturn-1-e { background-position: -96px -64px; }
-.ui-icon-arrowreturn-1-s { background-position: -112px -64px; }
-.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }
-.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }
-.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }
-.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }
-.ui-icon-arrow-4 { background-position: 0 -80px; }
-.ui-icon-arrow-4-diag { background-position: -16px -80px; }
-.ui-icon-extlink { background-position: -32px -80px; }
-.ui-icon-newwin { background-position: -48px -80px; }
-.ui-icon-refresh { background-position: -64px -80px; }
-.ui-icon-shuffle { background-position: -80px -80px; }
-.ui-icon-transfer-e-w { background-position: -96px -80px; }
-.ui-icon-transferthick-e-w { background-position: -112px -80px; }
-.ui-icon-folder-collapsed { background-position: 0 -96px; }
-.ui-icon-folder-open { background-position: -16px -96px; }
-.ui-icon-document { background-position: -32px -96px; }
-.ui-icon-document-b { background-position: -48px -96px; }
-.ui-icon-note { background-position: -64px -96px; }
-.ui-icon-mail-closed { background-position: -80px -96px; }
-.ui-icon-mail-open { background-position: -96px -96px; }
-.ui-icon-suitcase { background-position: -112px -96px; }
-.ui-icon-comment { background-position: -128px -96px; }
-.ui-icon-person { background-position: -144px -96px; }
-.ui-icon-print { background-position: -160px -96px; }
-.ui-icon-trash { background-position: -176px -96px; }
-.ui-icon-locked { background-position: -192px -96px; }
-.ui-icon-unlocked { background-position: -208px -96px; }
-.ui-icon-bookmark { background-position: -224px -96px; }
-.ui-icon-tag { background-position: -240px -96px; }
-.ui-icon-home { background-position: 0 -112px; }
-.ui-icon-flag { background-position: -16px -112px; }
-.ui-icon-calendar { background-position: -32px -112px; }
-.ui-icon-cart { background-position: -48px -112px; }
-.ui-icon-pencil { background-position: -64px -112px; }
-.ui-icon-clock { background-position: -80px -112px; }
-.ui-icon-disk { background-position: -96px -112px; }
-.ui-icon-calculator { background-position: -112px -112px; }
-.ui-icon-zoomin { background-position: -128px -112px; }
-.ui-icon-zoomout { background-position: -144px -112px; }
-.ui-icon-search { background-position: -160px -112px; }
-.ui-icon-wrench { background-position: -176px -112px; }
-.ui-icon-gear { background-position: -192px -112px; }
-.ui-icon-heart { background-position: -208px -112px; }
-.ui-icon-star { background-position: -224px -112px; }
-.ui-icon-link { background-position: -240px -112px; }
-.ui-icon-cancel { background-position: 0 -128px; }
-.ui-icon-plus { background-position: -16px -128px; }
-.ui-icon-plusthick { background-position: -32px -128px; }
-.ui-icon-minus { background-position: -48px -128px; }
-.ui-icon-minusthick { background-position: -64px -128px; }
-.ui-icon-close { background-position: -80px -128px; }
-.ui-icon-closethick { background-position: -96px -128px; }
-.ui-icon-key { background-position: -112px -128px; }
-.ui-icon-lightbulb { background-position: -128px -128px; }
-.ui-icon-scissors { background-position: -144px -128px; }
-.ui-icon-clipboard { background-position: -160px -128px; }
-.ui-icon-copy { background-position: -176px -128px; }
-.ui-icon-contact { background-position: -192px -128px; }
-.ui-icon-image { background-position: -208px -128px; }
-.ui-icon-video { background-position: -224px -128px; }
-.ui-icon-script { background-position: -240px -128px; }
-.ui-icon-alert { background-position: 0 -144px; }
-.ui-icon-info { background-position: -16px -144px; }
-.ui-icon-notice { background-position: -32px -144px; }
-.ui-icon-help { background-position: -48px -144px; }
-.ui-icon-check { background-position: -64px -144px; }
-.ui-icon-bullet { background-position: -80px -144px; }
-.ui-icon-radio-on { background-position: -96px -144px; }
-.ui-icon-radio-off { background-position: -112px -144px; }
-.ui-icon-pin-w { background-position: -128px -144px; }
-.ui-icon-pin-s { background-position: -144px -144px; }
-.ui-icon-play { background-position: 0 -160px; }
-.ui-icon-pause { background-position: -16px -160px; }
-.ui-icon-seek-next { background-position: -32px -160px; }
-.ui-icon-seek-prev { background-position: -48px -160px; }
-.ui-icon-seek-end { background-position: -64px -160px; }
-.ui-icon-seek-start { background-position: -80px -160px; }
-/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */
-.ui-icon-seek-first { background-position: -80px -160px; }
-.ui-icon-stop { background-position: -96px -160px; }
-.ui-icon-eject { background-position: -112px -160px; }
-.ui-icon-volume-off { background-position: -128px -160px; }
-.ui-icon-volume-on { background-position: -144px -160px; }
-.ui-icon-power { background-position: 0 -176px; }
-.ui-icon-signal-diag { background-position: -16px -176px; }
-.ui-icon-signal { background-position: -32px -176px; }
-.ui-icon-battery-0 { background-position: -48px -176px; }
-.ui-icon-battery-1 { background-position: -64px -176px; }
-.ui-icon-battery-2 { background-position: -80px -176px; }
-.ui-icon-battery-3 { background-position: -96px -176px; }
-.ui-icon-circle-plus { background-position: 0 -192px; }
-.ui-icon-circle-minus { background-position: -16px -192px; }
-.ui-icon-circle-close { background-position: -32px -192px; }
-.ui-icon-circle-triangle-e { background-position: -48px -192px; }
-.ui-icon-circle-triangle-s { background-position: -64px -192px; }
-.ui-icon-circle-triangle-w { background-position: -80px -192px; }
-.ui-icon-circle-triangle-n { background-position: -96px -192px; }
-.ui-icon-circle-arrow-e { background-position: -112px -192px; }
-.ui-icon-circle-arrow-s { background-position: -128px -192px; }
-.ui-icon-circle-arrow-w { background-position: -144px -192px; }
-.ui-icon-circle-arrow-n { background-position: -160px -192px; }
-.ui-icon-circle-zoomin { background-position: -176px -192px; }
-.ui-icon-circle-zoomout { background-position: -192px -192px; }
-.ui-icon-circle-check { background-position: -208px -192px; }
-.ui-icon-circlesmall-plus { background-position: 0 -208px; }
-.ui-icon-circlesmall-minus { background-position: -16px -208px; }
-.ui-icon-circlesmall-close { background-position: -32px -208px; }
-.ui-icon-squaresmall-plus { background-position: -48px -208px; }
-.ui-icon-squaresmall-minus { background-position: -64px -208px; }
-.ui-icon-squaresmall-close { background-position: -80px -208px; }
-.ui-icon-grip-dotted-vertical { background-position: 0 -224px; }
-.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }
-.ui-icon-grip-solid-vertical { background-position: -32px -224px; }
-.ui-icon-grip-solid-horizontal { background-position: -48px -224px; }
-.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }
-.ui-icon-grip-diagonal-se { background-position: -80px -224px; }
-
-
-/* Misc visuals
-----------------------------------*/
-
-/* Corner radius */
-.ui-corner-all,
-.ui-corner-top,
-.ui-corner-left,
-.ui-corner-tl {
-       border-top-left-radius: 3px;
-}
-.ui-corner-all,
-.ui-corner-top,
-.ui-corner-right,
-.ui-corner-tr {
-       border-top-right-radius: 3px;
-}
-.ui-corner-all,
-.ui-corner-bottom,
-.ui-corner-left,
-.ui-corner-bl {
-       border-bottom-left-radius: 3px;
-}
-.ui-corner-all,
-.ui-corner-bottom,
-.ui-corner-right,
-.ui-corner-br {
-       border-bottom-right-radius: 3px;
-}
-
-/* Overlays */
-.ui-widget-overlay {
-       background: #aaaaaa;
-       opacity: .3;
-       filter: Alpha(Opacity=30); /* support: IE8 */
-}
-.ui-widget-shadow {
-       margin: 0px 0 0 0px;
-       padding: 5px;
-       background: #666666;
-       opacity: .3;
-       filter: Alpha(Opacity=30); /* support: IE8 */
-       border-radius: 8px;
-}
diff --git a/src/main/resources/META-INF/resources/designer/lib/jquery-ui-1.11.3/jquery-ui.theme.min.css b/src/main/resources/META-INF/resources/designer/lib/jquery-ui-1.11.3/jquery-ui.theme.min.css
deleted file mode 100644 (file)
index 9fd96c7..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-/*! jQuery UI - v1.11.3 - 2015-02-12
-* http://jqueryui.com
-* Copyright jQuery Foundation and other contributors; Licensed MIT */
-
-.ui-widget{font-family:Arial,Helvetica,sans-serif;font-size:1em}.ui-widget .ui-widget{font-size:1em}.ui-widget input,.ui-widget select,.ui-widget textarea,.ui-widget button{font-family:Arial,Helvetica,sans-serif;font-size:1em}.ui-widget-content{border:1px solid #ddd;background:#fff;color:#333}.ui-widget-content a{color:#333}.ui-widget-header{border:1px solid #ddd;background:#e9e9e9;color:#333;font-weight:bold}.ui-widget-header a{color:#333}.ui-state-default,.ui-widget-content .ui-state-default,.ui-widget-header .ui-state-default{border:1px solid #c5c5c5;background:#f6f6f6;font-weight:normal;color:#454545}.ui-state-default a,.ui-state-default a:link,.ui-state-default a:visited{color:#454545;text-decoration:none}.ui-state-hover,.ui-widget-content .ui-state-hover,.ui-widget-header .ui-state-hover,.ui-state-focus,.ui-widget-content .ui-state-focus,.ui-widget-header .ui-state-focus{border:1px solid #ccc;background:#ededed;font-weight:normal;color:#2b2b2b}.ui-state-hover a,.ui-state-hover a:hover,.ui-state-hover a:link,.ui-state-hover a:visited,.ui-state-focus a,.ui-state-focus a:hover,.ui-state-focus a:link,.ui-state-focus a:visited{color:#2b2b2b;text-decoration:none}.ui-state-active,.ui-widget-content .ui-state-active,.ui-widget-header .ui-state-active{border:1px solid #003eff;background:#007fff;font-weight:normal;color:#fff}.ui-state-active a,.ui-state-active a:link,.ui-state-active a:visited{color:#fff;text-decoration:none}.ui-state-highlight,.ui-widget-content .ui-state-highlight,.ui-widget-header .ui-state-highlight{border:1px solid #dad55e;background:#fffa90;color:#777620}.ui-state-highlight a,.ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a{color:#777620}.ui-state-error,.ui-widget-content .ui-state-error,.ui-widget-header .ui-state-error{border:1px solid #f1a899;background:#fddfdf;color:#5f3f3f}.ui-state-error a,.ui-widget-content .ui-state-error a,.ui-widget-header .ui-state-error a{color:#5f3f3f}.ui-state-error-text,.ui-widget-content .ui-state-error-text,.ui-widget-header .ui-state-error-text{color:#5f3f3f}.ui-priority-primary,.ui-widget-content .ui-priority-primary,.ui-widget-header .ui-priority-primary{font-weight:bold}.ui-priority-secondary,.ui-widget-content .ui-priority-secondary,.ui-widget-header .ui-priority-secondary{opacity:.7;filter:Alpha(Opacity=70);font-weight:normal}.ui-state-disabled,.ui-widget-content .ui-state-disabled,.ui-widget-header .ui-state-disabled{opacity:.35;filter:Alpha(Opacity=35);background-image:none}.ui-state-disabled .ui-icon{filter:Alpha(Opacity=35)}.ui-icon{width:16px;height:16px}.ui-icon,.ui-widget-content .ui-icon{background-image:url("images/ui-icons_444444_256x240.png")}.ui-widget-header .ui-icon{background-image:url("images/ui-icons_444444_256x240.png")}.ui-state-default .ui-icon{background-image:url("images/ui-icons_777777_256x240.png")}.ui-state-hover .ui-icon,.ui-state-focus .ui-icon{background-image:url("images/ui-icons_555555_256x240.png")}.ui-state-active .ui-icon{background-image:url("images/ui-icons_ffffff_256x240.png")}.ui-state-highlight .ui-icon{background-image:url("images/ui-icons_777620_256x240.png")}.ui-state-error .ui-icon,.ui-state-error-text .ui-icon{background-image:url("images/ui-icons_cc0000_256x240.png")}.ui-icon-blank{background-position:16px 16px}.ui-icon-carat-1-n{background-position:0 0}.ui-icon-carat-1-ne{background-position:-16px 0}.ui-icon-carat-1-e{background-position:-32px 0}.ui-icon-carat-1-se{background-position:-48px 0}.ui-icon-carat-1-s{background-position:-64px 0}.ui-icon-carat-1-sw{background-position:-80px 0}.ui-icon-carat-1-w{background-position:-96px 0}.ui-icon-carat-1-nw{background-position:-112px 0}.ui-icon-carat-2-n-s{background-position:-128px 0}.ui-icon-carat-2-e-w{background-position:-144px 0}.ui-icon-triangle-1-n{background-position:0 -16px}.ui-icon-triangle-1-ne{background-position:-16px -16px}.ui-icon-triangle-1-e{background-position:-32px -16px}.ui-icon-triangle-1-se{background-position:-48px -16px}.ui-icon-triangle-1-s{background-position:-64px -16px}.ui-icon-triangle-1-sw{background-position:-80px -16px}.ui-icon-triangle-1-w{background-position:-96px -16px}.ui-icon-triangle-1-nw{background-position:-112px -16px}.ui-icon-triangle-2-n-s{background-position:-128px -16px}.ui-icon-triangle-2-e-w{background-position:-144px -16px}.ui-icon-arrow-1-n{background-position:0 -32px}.ui-icon-arrow-1-ne{background-position:-16px -32px}.ui-icon-arrow-1-e{background-position:-32px -32px}.ui-icon-arrow-1-se{background-position:-48px -32px}.ui-icon-arrow-1-s{background-position:-64px -32px}.ui-icon-arrow-1-sw{background-position:-80px -32px}.ui-icon-arrow-1-w{background-position:-96px -32px}.ui-icon-arrow-1-nw{background-position:-112px -32px}.ui-icon-arrow-2-n-s{background-position:-128px -32px}.ui-icon-arrow-2-ne-sw{background-position:-144px -32px}.ui-icon-arrow-2-e-w{background-position:-160px -32px}.ui-icon-arrow-2-se-nw{background-position:-176px -32px}.ui-icon-arrowstop-1-n{background-position:-192px -32px}.ui-icon-arrowstop-1-e{background-position:-208px -32px}.ui-icon-arrowstop-1-s{background-position:-224px -32px}.ui-icon-arrowstop-1-w{background-position:-240px -32px}.ui-icon-arrowthick-1-n{background-position:0 -48px}.ui-icon-arrowthick-1-ne{background-position:-16px -48px}.ui-icon-arrowthick-1-e{background-position:-32px -48px}.ui-icon-arrowthick-1-se{background-position:-48px -48px}.ui-icon-arrowthick-1-s{background-position:-64px -48px}.ui-icon-arrowthick-1-sw{background-position:-80px -48px}.ui-icon-arrowthick-1-w{background-position:-96px -48px}.ui-icon-arrowthick-1-nw{background-position:-112px -48px}.ui-icon-arrowthick-2-n-s{background-position:-128px -48px}.ui-icon-arrowthick-2-ne-sw{background-position:-144px -48px}.ui-icon-arrowthick-2-e-w{background-position:-160px -48px}.ui-icon-arrowthick-2-se-nw{background-position:-176px -48px}.ui-icon-arrowthickstop-1-n{background-position:-192px -48px}.ui-icon-arrowthickstop-1-e{background-position:-208px -48px}.ui-icon-arrowthickstop-1-s{background-position:-224px -48px}.ui-icon-arrowthickstop-1-w{background-position:-240px -48px}.ui-icon-arrowreturnthick-1-w{background-position:0 -64px}.ui-icon-arrowreturnthick-1-n{background-position:-16px -64px}.ui-icon-arrowreturnthick-1-e{background-position:-32px -64px}.ui-icon-arrowreturnthick-1-s{background-position:-48px -64px}.ui-icon-arrowreturn-1-w{background-position:-64px -64px}.ui-icon-arrowreturn-1-n{background-position:-80px -64px}.ui-icon-arrowreturn-1-e{background-position:-96px -64px}.ui-icon-arrowreturn-1-s{background-position:-112px -64px}.ui-icon-arrowrefresh-1-w{background-position:-128px -64px}.ui-icon-arrowrefresh-1-n{background-position:-144px -64px}.ui-icon-arrowrefresh-1-e{background-position:-160px -64px}.ui-icon-arrowrefresh-1-s{background-position:-176px -64px}.ui-icon-arrow-4{background-position:0 -80px}.ui-icon-arrow-4-diag{background-position:-16px -80px}.ui-icon-extlink{background-position:-32px -80px}.ui-icon-newwin{background-position:-48px -80px}.ui-icon-refresh{background-position:-64px -80px}.ui-icon-shuffle{background-position:-80px -80px}.ui-icon-transfer-e-w{background-position:-96px -80px}.ui-icon-transferthick-e-w{background-position:-112px -80px}.ui-icon-folder-collapsed{background-position:0 -96px}.ui-icon-folder-open{background-position:-16px -96px}.ui-icon-document{background-position:-32px -96px}.ui-icon-document-b{background-position:-48px -96px}.ui-icon-note{background-position:-64px -96px}.ui-icon-mail-closed{background-position:-80px -96px}.ui-icon-mail-open{background-position:-96px -96px}.ui-icon-suitcase{background-position:-112px -96px}.ui-icon-comment{background-position:-128px -96px}.ui-icon-person{background-position:-144px -96px}.ui-icon-print{background-position:-160px -96px}.ui-icon-trash{background-position:-176px -96px}.ui-icon-locked{background-position:-192px -96px}.ui-icon-unlocked{background-position:-208px -96px}.ui-icon-bookmark{background-position:-224px -96px}.ui-icon-tag{background-position:-240px -96px}.ui-icon-home{background-position:0 -112px}.ui-icon-flag{background-position:-16px -112px}.ui-icon-calendar{background-position:-32px -112px}.ui-icon-cart{background-position:-48px -112px}.ui-icon-pencil{background-position:-64px -112px}.ui-icon-clock{background-position:-80px -112px}.ui-icon-disk{background-position:-96px -112px}.ui-icon-calculator{background-position:-112px -112px}.ui-icon-zoomin{background-position:-128px -112px}.ui-icon-zoomout{background-position:-144px -112px}.ui-icon-search{background-position:-160px -112px}.ui-icon-wrench{background-position:-176px -112px}.ui-icon-gear{background-position:-192px -112px}.ui-icon-heart{background-position:-208px -112px}.ui-icon-star{background-position:-224px -112px}.ui-icon-link{background-position:-240px -112px}.ui-icon-cancel{background-position:0 -128px}.ui-icon-plus{background-position:-16px -128px}.ui-icon-plusthick{background-position:-32px -128px}.ui-icon-minus{background-position:-48px -128px}.ui-icon-minusthick{background-position:-64px -128px}.ui-icon-close{background-position:-80px -128px}.ui-icon-closethick{background-position:-96px -128px}.ui-icon-key{background-position:-112px -128px}.ui-icon-lightbulb{background-position:-128px -128px}.ui-icon-scissors{background-position:-144px -128px}.ui-icon-clipboard{background-position:-160px -128px}.ui-icon-copy{background-position:-176px -128px}.ui-icon-contact{background-position:-192px -128px}.ui-icon-image{background-position:-208px -128px}.ui-icon-video{background-position:-224px -128px}.ui-icon-script{background-position:-240px -128px}.ui-icon-alert{background-position:0 -144px}.ui-icon-info{background-position:-16px -144px}.ui-icon-notice{background-position:-32px -144px}.ui-icon-help{background-position:-48px -144px}.ui-icon-check{background-position:-64px -144px}.ui-icon-bullet{background-position:-80px -144px}.ui-icon-radio-on{background-position:-96px -144px}.ui-icon-radio-off{background-position:-112px -144px}.ui-icon-pin-w{background-position:-128px -144px}.ui-icon-pin-s{background-position:-144px -144px}.ui-icon-play{background-position:0 -160px}.ui-icon-pause{background-position:-16px -160px}.ui-icon-seek-next{background-position:-32px -160px}.ui-icon-seek-prev{background-position:-48px -160px}.ui-icon-seek-end{background-position:-64px -160px}.ui-icon-seek-start{background-position:-80px -160px}.ui-icon-seek-first{background-position:-80px -160px}.ui-icon-stop{background-position:-96px -160px}.ui-icon-eject{background-position:-112px -160px}.ui-icon-volume-off{background-position:-128px -160px}.ui-icon-volume-on{background-position:-144px -160px}.ui-icon-power{background-position:0 -176px}.ui-icon-signal-diag{background-position:-16px -176px}.ui-icon-signal{background-position:-32px -176px}.ui-icon-battery-0{background-position:-48px -176px}.ui-icon-battery-1{background-position:-64px -176px}.ui-icon-battery-2{background-position:-80px -176px}.ui-icon-battery-3{background-position:-96px -176px}.ui-icon-circle-plus{background-position:0 -192px}.ui-icon-circle-minus{background-position:-16px -192px}.ui-icon-circle-close{background-position:-32px -192px}.ui-icon-circle-triangle-e{background-position:-48px -192px}.ui-icon-circle-triangle-s{background-position:-64px -192px}.ui-icon-circle-triangle-w{background-position:-80px -192px}.ui-icon-circle-triangle-n{background-position:-96px -192px}.ui-icon-circle-arrow-e{background-position:-112px -192px}.ui-icon-circle-arrow-s{background-position:-128px -192px}.ui-icon-circle-arrow-w{background-position:-144px -192px}.ui-icon-circle-arrow-n{background-position:-160px -192px}.ui-icon-circle-zoomin{background-position:-176px -192px}.ui-icon-circle-zoomout{background-position:-192px -192px}.ui-icon-circle-check{background-position:-208px -192px}.ui-icon-circlesmall-plus{background-position:0 -208px}.ui-icon-circlesmall-minus{background-position:-16px -208px}.ui-icon-circlesmall-close{background-position:-32px -208px}.ui-icon-squaresmall-plus{background-position:-48px -208px}.ui-icon-squaresmall-minus{background-position:-64px -208px}.ui-icon-squaresmall-close{background-position:-80px -208px}.ui-icon-grip-dotted-vertical{background-position:0 -224px}.ui-icon-grip-dotted-horizontal{background-position:-16px -224px}.ui-icon-grip-solid-vertical{background-position:-32px -224px}.ui-icon-grip-solid-horizontal{background-position:-48px -224px}.ui-icon-gripsmall-diagonal-se{background-position:-64px -224px}.ui-icon-grip-diagonal-se{background-position:-80px -224px}.ui-corner-all,.ui-corner-top,.ui-corner-left,.ui-corner-tl{border-top-left-radius:3px}.ui-corner-all,.ui-corner-top,.ui-corner-right,.ui-corner-tr{border-top-right-radius:3px}.ui-corner-all,.ui-corner-bottom,.ui-corner-left,.ui-corner-bl{border-bottom-left-radius:3px}.ui-corner-all,.ui-corner-bottom,.ui-corner-right,.ui-corner-br{border-bottom-right-radius:3px}.ui-widget-overlay{background:#aaa;opacity:.3;filter:Alpha(Opacity=30)}.ui-widget-shadow{margin:0 0 0 0;padding:5px;background:#666;opacity:.3;filter:Alpha(Opacity=30);border-radius:8px}
\ No newline at end of file
diff --git a/src/main/resources/META-INF/resources/designer/lib/jquery.highlight.js b/src/main/resources/META-INF/resources/designer/lib/jquery.highlight.js
deleted file mode 100644 (file)
index 9774874..0000000
+++ /dev/null
@@ -1,107 +0,0 @@
-/*
- * jQuery Highlight plugin
- *
- * Based on highlight v3 by Johann Burkard
- * http://johannburkard.de/blog/programming/javascript/highlight-javascript-text-higlighting-jquery-plugin.html
- *
- * Code a little bit refactored and cleaned (in my humble opinion).
- * Most important changes:
- *  - has an option to highlight only entire words (wordsOnly - false by default),
- *  - has an option to be case sensitive (caseSensitive - false by default)
- *  - highlight element tag and class names can be specified in options
- *
- * Usage:
- *   // wrap every occurrance of text 'lorem' in content
- *   // with <span class='highlight'> (default options)
- *   $('#content').highlight('lorem');
- *
- *   // search for and highlight more terms at once
- *   // so you can save some time on traversing DOM
- *   $('#content').highlight(['lorem', 'ipsum']);
- *   $('#content').highlight('lorem ipsum');
- *
- *   // search only for entire word 'lorem'
- *   $('#content').highlight('lorem', { wordsOnly: true });
- *
- *   // don't ignore case during search of term 'lorem'
- *   $('#content').highlight('lorem', { caseSensitive: true });
- *
- *   // wrap every occurrance of term 'ipsum' in content
- *   // with <em class='important'>
- *   $('#content').highlight('ipsum', { element: 'em', className: 'important' });
- *
- *   // remove default highlight
- *   $('#content').unhighlight();
- *
- *   // remove custom highlight
- *   $('#content').unhighlight({ element: 'em', className: 'important' });
- *
- *
- * Copyright (c) 2009 Bartek Szopka
- *
- * Licensed under MIT license.
- *
- */
-
-jQuery.extend({
-    highlight: function (node, re, nodeName, className) {
-        if (node.nodeType === 3) {
-            var match = node.data.match(re);
-            if (match) {
-                var highlight = document.createElement(nodeName || 'span');
-                highlight.className = className || 'highlight';
-                var wordNode = node.splitText(match.index);
-                wordNode.splitText(match[0].length);
-                var wordClone = wordNode.cloneNode(true);
-                highlight.appendChild(wordClone);
-                wordNode.parentNode.replaceChild(highlight, wordNode);
-                return 1; //skip added node in parent
-            }
-        } else if ((node.nodeType === 1 && node.childNodes) && // only element nodes that have children
-                !/(script|style)/i.test(node.tagName) && // ignore script and style nodes
-                !(node.tagName === nodeName.toUpperCase() && node.className === className)) { // skip if already highlighted
-            for (var i = 0; i < node.childNodes.length; i++) {
-                i += jQuery.highlight(node.childNodes[i], re, nodeName, className);
-            }
-        }
-        return 0;
-    }
-});
-
-jQuery.fn.unhighlight = function (options) {
-    var settings = { className: 'highlight', element: 'span' };
-    jQuery.extend(settings, options);
-
-    return this.find(settings.element + "." + settings.className).each(function () {
-        var parent = this.parentNode;
-        parent.replaceChild(this.firstChild, this);
-        parent.normalize();
-    }).end();
-};
-
-jQuery.fn.highlight = function (words, options) {
-    var settings = { className: 'highlight', element: 'span', caseSensitive: false, wordsOnly: false };
-    jQuery.extend(settings, options);
-    
-    if (words.constructor === String) {
-        words = [words];
-    }
-    words = jQuery.grep(words, function(word, i){
-      return word != '';
-    });
-    words = jQuery.map(words, function(word, i) {
-      return word.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&");
-    });
-    if (words.length == 0) { return this; };
-
-    var flag = settings.caseSensitive ? "" : "i";
-    var pattern = "(" + words.join("|") + ")";
-    if (settings.wordsOnly) {
-        pattern = "\\b" + pattern + "\\b";
-    }
-    var re = new RegExp(pattern, flag);
-    
-    return this.each(function () {
-        jQuery.highlight(this, re, settings.element, settings.className);
-    });
-};
index 73f33fb..4d9b3a2 100644 (file)
@@ -1,4 +1,2 @@
-/*! jQuery v1.11.0 | (c) 2005, 2014 jQuery Foundation, Inc. | jquery.org/license */
-!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
-}}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)
-},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});
+/*! jQuery v3.3.1 | (c) JS Foundation and other contributors | jquery.org/license */
+!function(e,t){"use strict";"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){"use strict";var n=[],r=e.document,i=Object.getPrototypeOf,o=n.slice,a=n.concat,s=n.push,u=n.indexOf,l={},c=l.toString,f=l.hasOwnProperty,p=f.toString,d=p.call(Object),h={},g=function e(t){return"function"==typeof t&&"number"!=typeof t.nodeType},y=function e(t){return null!=t&&t===t.window},v={type:!0,src:!0,noModule:!0};function m(e,t,n){var i,o=(t=t||r).createElement("script");if(o.text=e,n)for(i in v)n[i]&&(o[i]=n[i]);t.head.appendChild(o).parentNode.removeChild(o)}function x(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?l[c.call(e)]||"object":typeof e}var b="3.3.1",w=function(e,t){return new w.fn.init(e,t)},T=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;w.fn=w.prototype={jquery:"3.3.1",constructor:w,length:0,toArray:function(){return o.call(this)},get:function(e){return null==e?o.call(this):e<0?this[e+this.length]:this[e]},pushStack:function(e){var t=w.merge(this.constructor(),e);return t.prevObject=this,t},each:function(e){return w.each(this,e)},map:function(e){return this.pushStack(w.map(this,function(t,n){return e.call(t,n,t)}))},slice:function(){return this.pushStack(o.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(e){var t=this.length,n=+e+(e<0?t:0);return this.pushStack(n>=0&&n<t?[this[n]]:[])},end:function(){return this.prevObject||this.constructor()},push:s,sort:n.sort,splice:n.splice},w.extend=w.fn.extend=function(){var e,t,n,r,i,o,a=arguments[0]||{},s=1,u=arguments.length,l=!1;for("boolean"==typeof a&&(l=a,a=arguments[s]||{},s++),"object"==typeof a||g(a)||(a={}),s===u&&(a=this,s--);s<u;s++)if(null!=(e=arguments[s]))for(t in e)n=a[t],a!==(r=e[t])&&(l&&r&&(w.isPlainObject(r)||(i=Array.isArray(r)))?(i?(i=!1,o=n&&Array.isArray(n)?n:[]):o=n&&w.isPlainObject(n)?n:{},a[t]=w.extend(l,o,r)):void 0!==r&&(a[t]=r));return a},w.extend({expando:"jQuery"+("3.3.1"+Math.random()).replace(/\D/g,""),isReady:!0,error:function(e){throw new Error(e)},noop:function(){},isPlainObject:function(e){var t,n;return!(!e||"[object Object]"!==c.call(e))&&(!(t=i(e))||"function"==typeof(n=f.call(t,"constructor")&&t.constructor)&&p.call(n)===d)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},globalEval:function(e){m(e)},each:function(e,t){var n,r=0;if(C(e)){for(n=e.length;r<n;r++)if(!1===t.call(e[r],r,e[r]))break}else for(r in e)if(!1===t.call(e[r],r,e[r]))break;return e},trim:function(e){return null==e?"":(e+"").replace(T,"")},makeArray:function(e,t){var n=t||[];return null!=e&&(C(Object(e))?w.merge(n,"string"==typeof e?[e]:e):s.call(n,e)),n},inArray:function(e,t,n){return null==t?-1:u.call(t,e,n)},merge:function(e,t){for(var n=+t.length,r=0,i=e.length;r<n;r++)e[i++]=t[r];return e.length=i,e},grep:function(e,t,n){for(var r,i=[],o=0,a=e.length,s=!n;o<a;o++)(r=!t(e[o],o))!==s&&i.push(e[o]);return i},map:function(e,t,n){var r,i,o=0,s=[];if(C(e))for(r=e.length;o<r;o++)null!=(i=t(e[o],o,n))&&s.push(i);else for(o in e)null!=(i=t(e[o],o,n))&&s.push(i);return a.apply([],s)},guid:1,support:h}),"function"==typeof Symbol&&(w.fn[Symbol.iterator]=n[Symbol.iterator]),w.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(e,t){l["[object "+t+"]"]=t.toLowerCase()});function C(e){var t=!!e&&"length"in e&&e.length,n=x(e);return!g(e)&&!y(e)&&("array"===n||0===t||"number"==typeof t&&t>0&&t-1 in e)}var E=function(e){var t,n,r,i,o,a,s,u,l,c,f,p,d,h,g,y,v,m,x,b="sizzle"+1*new Date,w=e.document,T=0,C=0,E=ae(),k=ae(),S=ae(),D=function(e,t){return e===t&&(f=!0),0},N={}.hasOwnProperty,A=[],j=A.pop,q=A.push,L=A.push,H=A.slice,O=function(e,t){for(var n=0,r=e.length;n<r;n++)if(e[n]===t)return n;return-1},P="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",M="[\\x20\\t\\r\\n\\f]",R="(?:\\\\.|[\\w-]|[^\0-\\xa0])+",I="\\["+M+"*("+R+")(?:"+M+"*([*^$|!~]?=)"+M+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+R+"))|)"+M+"*\\]",W=":("+R+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+I+")*)|.*)\\)|)",$=new RegExp(M+"+","g"),B=new RegExp("^"+M+"+|((?:^|[^\\\\])(?:\\\\.)*)"+M+"+$","g"),F=new RegExp("^"+M+"*,"+M+"*"),_=new RegExp("^"+M+"*([>+~]|"+M+")"+M+"*"),z=new RegExp("="+M+"*([^\\]'\"]*?)"+M+"*\\]","g"),X=new RegExp(W),U=new RegExp("^"+R+"$"),V={ID:new RegExp("^#("+R+")"),CLASS:new RegExp("^\\.("+R+")"),TAG:new RegExp("^("+R+"|[*])"),ATTR:new RegExp("^"+I),PSEUDO:new RegExp("^"+W),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+P+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},G=/^(?:input|select|textarea|button)$/i,Y=/^h\d$/i,Q=/^[^{]+\{\s*\[native \w/,J=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,K=/[+~]/,Z=new RegExp("\\\\([\\da-f]{1,6}"+M+"?|("+M+")|.)","ig"),ee=function(e,t,n){var r="0x"+t-65536;return r!==r||n?t:r<0?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|56320)},te=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ne=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},re=function(){p()},ie=me(function(e){return!0===e.disabled&&("form"in e||"label"in e)},{dir:"parentNode",next:"legend"});try{L.apply(A=H.call(w.childNodes),w.childNodes),A[w.childNodes.length].nodeType}catch(e){L={apply:A.length?function(e,t){q.apply(e,H.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function oe(e,t,r,i){var o,s,l,c,f,h,v,m=t&&t.ownerDocument,T=t?t.nodeType:9;if(r=r||[],"string"!=typeof e||!e||1!==T&&9!==T&&11!==T)return r;if(!i&&((t?t.ownerDocument||t:w)!==d&&p(t),t=t||d,g)){if(11!==T&&(f=J.exec(e)))if(o=f[1]){if(9===T){if(!(l=t.getElementById(o)))return r;if(l.id===o)return r.push(l),r}else if(m&&(l=m.getElementById(o))&&x(t,l)&&l.id===o)return r.push(l),r}else{if(f[2])return L.apply(r,t.getElementsByTagName(e)),r;if((o=f[3])&&n.getElementsByClassName&&t.getElementsByClassName)return L.apply(r,t.getElementsByClassName(o)),r}if(n.qsa&&!S[e+" "]&&(!y||!y.test(e))){if(1!==T)m=t,v=e;else if("object"!==t.nodeName.toLowerCase()){(c=t.getAttribute("id"))?c=c.replace(te,ne):t.setAttribute("id",c=b),s=(h=a(e)).length;while(s--)h[s]="#"+c+" "+ve(h[s]);v=h.join(","),m=K.test(e)&&ge(t.parentNode)||t}if(v)try{return L.apply(r,m.querySelectorAll(v)),r}catch(e){}finally{c===b&&t.removeAttribute("id")}}}return u(e.replace(B,"$1"),t,r,i)}function ae(){var e=[];function t(n,i){return e.push(n+" ")>r.cacheLength&&delete t[e.shift()],t[n+" "]=i}return t}function se(e){return e[b]=!0,e}function ue(e){var t=d.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function le(e,t){var n=e.split("|"),i=n.length;while(i--)r.attrHandle[n[i]]=t}function ce(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function fe(e){return function(t){return"input"===t.nodeName.toLowerCase()&&t.type===e}}function pe(e){return function(t){var n=t.nodeName.toLowerCase();return("input"===n||"button"===n)&&t.type===e}}function de(e){return function(t){return"form"in t?t.parentNode&&!1===t.disabled?"label"in t?"label"in t.parentNode?t.parentNode.disabled===e:t.disabled===e:t.isDisabled===e||t.isDisabled!==!e&&ie(t)===e:t.disabled===e:"label"in t&&t.disabled===e}}function he(e){return se(function(t){return t=+t,se(function(n,r){var i,o=e([],n.length,t),a=o.length;while(a--)n[i=o[a]]&&(n[i]=!(r[i]=n[i]))})})}function ge(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}n=oe.support={},o=oe.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return!!t&&"HTML"!==t.nodeName},p=oe.setDocument=function(e){var t,i,a=e?e.ownerDocument||e:w;return a!==d&&9===a.nodeType&&a.documentElement?(d=a,h=d.documentElement,g=!o(d),w!==d&&(i=d.defaultView)&&i.top!==i&&(i.addEventListener?i.addEventListener("unload",re,!1):i.attachEvent&&i.attachEvent("onunload",re)),n.attributes=ue(function(e){return e.className="i",!e.getAttribute("className")}),n.getElementsByTagName=ue(function(e){return e.appendChild(d.createComment("")),!e.getElementsByTagName("*").length}),n.getElementsByClassName=Q.test(d.getElementsByClassName),n.getById=ue(function(e){return h.appendChild(e).id=b,!d.getElementsByName||!d.getElementsByName(b).length}),n.getById?(r.filter.ID=function(e){var t=e.replace(Z,ee);return function(e){return e.getAttribute("id")===t}},r.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&g){var n=t.getElementById(e);return n?[n]:[]}}):(r.filter.ID=function(e){var t=e.replace(Z,ee);return function(e){var n="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return n&&n.value===t}},r.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&g){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),r.find.TAG=n.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):n.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},r.find.CLASS=n.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&g)return t.getElementsByClassName(e)},v=[],y=[],(n.qsa=Q.test(d.querySelectorAll))&&(ue(function(e){h.appendChild(e).innerHTML="<a id='"+b+"'></a><select id='"+b+"-\r\\' msallowcapture=''><option selected=''></option></select>",e.querySelectorAll("[msallowcapture^='']").length&&y.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||y.push("\\["+M+"*(?:value|"+P+")"),e.querySelectorAll("[id~="+b+"-]").length||y.push("~="),e.querySelectorAll(":checked").length||y.push(":checked"),e.querySelectorAll("a#"+b+"+*").length||y.push(".#.+[+~]")}),ue(function(e){e.innerHTML="<a href='' disabled='disabled'></a><select disabled='disabled'><option/></select>";var t=d.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&y.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&y.push(":enabled",":disabled"),h.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&y.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),y.push(",.*:")})),(n.matchesSelector=Q.test(m=h.matches||h.webkitMatchesSelector||h.mozMatchesSelector||h.oMatchesSelector||h.msMatchesSelector))&&ue(function(e){n.disconnectedMatch=m.call(e,"*"),m.call(e,"[s!='']:x"),v.push("!=",W)}),y=y.length&&new RegExp(y.join("|")),v=v.length&&new RegExp(v.join("|")),t=Q.test(h.compareDocumentPosition),x=t||Q.test(h.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},D=t?function(e,t){if(e===t)return f=!0,0;var r=!e.compareDocumentPosition-!t.compareDocumentPosition;return r||(1&(r=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!n.sortDetached&&t.compareDocumentPosition(e)===r?e===d||e.ownerDocument===w&&x(w,e)?-1:t===d||t.ownerDocument===w&&x(w,t)?1:c?O(c,e)-O(c,t):0:4&r?-1:1)}:function(e,t){if(e===t)return f=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e===d?-1:t===d?1:i?-1:o?1:c?O(c,e)-O(c,t):0;if(i===o)return ce(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?ce(a[r],s[r]):a[r]===w?-1:s[r]===w?1:0},d):d},oe.matches=function(e,t){return oe(e,null,null,t)},oe.matchesSelector=function(e,t){if((e.ownerDocument||e)!==d&&p(e),t=t.replace(z,"='$1']"),n.matchesSelector&&g&&!S[t+" "]&&(!v||!v.test(t))&&(!y||!y.test(t)))try{var r=m.call(e,t);if(r||n.disconnectedMatch||e.document&&11!==e.document.nodeType)return r}catch(e){}return oe(t,d,null,[e]).length>0},oe.contains=function(e,t){return(e.ownerDocument||e)!==d&&p(e),x(e,t)},oe.attr=function(e,t){(e.ownerDocument||e)!==d&&p(e);var i=r.attrHandle[t.toLowerCase()],o=i&&N.call(r.attrHandle,t.toLowerCase())?i(e,t,!g):void 0;return void 0!==o?o:n.attributes||!g?e.getAttribute(t):(o=e.getAttributeNode(t))&&o.specified?o.value:null},oe.escape=function(e){return(e+"").replace(te,ne)},oe.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},oe.uniqueSort=function(e){var t,r=[],i=0,o=0;if(f=!n.detectDuplicates,c=!n.sortStable&&e.slice(0),e.sort(D),f){while(t=e[o++])t===e[o]&&(i=r.push(o));while(i--)e.splice(r[i],1)}return c=null,e},i=oe.getText=function(e){var t,n="",r=0,o=e.nodeType;if(o){if(1===o||9===o||11===o){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=i(e)}else if(3===o||4===o)return e.nodeValue}else while(t=e[r++])n+=i(t);return n},(r=oe.selectors={cacheLength:50,createPseudo:se,match:V,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(Z,ee),e[3]=(e[3]||e[4]||e[5]||"").replace(Z,ee),"~="===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]||oe.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]&&oe.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return V.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=a(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(Z,ee).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=E[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&E(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(e,t,n){return function(r){var i=oe.attr(r,e);return null==i?"!="===t:!t||(i+="","="===t?i===n:"!="===t?i!==n:"^="===t?n&&0===i.indexOf(n):"*="===t?n&&i.indexOf(n)>-1:"$="===t?n&&i.slice(-n.length)===n:"~="===t?(" "+i.replace($," ")+" ").indexOf(n)>-1:"|="===t&&(i===n||i.slice(0,n.length+1)===n+"-"))}},CHILD:function(e,t,n,r,i){var o="nth"!==e.slice(0,3),a="last"!==e.slice(-4),s="of-type"===t;return 1===r&&0===i?function(e){return!!e.parentNode}:function(t,n,u){var l,c,f,p,d,h,g=o!==a?"nextSibling":"previousSibling",y=t.parentNode,v=s&&t.nodeName.toLowerCase(),m=!u&&!s,x=!1;if(y){if(o){while(g){p=t;while(p=p[g])if(s?p.nodeName.toLowerCase()===v:1===p.nodeType)return!1;h=g="only"===e&&!h&&"nextSibling"}return!0}if(h=[a?y.firstChild:y.lastChild],a&&m){x=(d=(l=(c=(f=(p=y)[b]||(p[b]={}))[p.uniqueID]||(f[p.uniqueID]={}))[e]||[])[0]===T&&l[1])&&l[2],p=d&&y.childNodes[d];while(p=++d&&p&&p[g]||(x=d=0)||h.pop())if(1===p.nodeType&&++x&&p===t){c[e]=[T,d,x];break}}else if(m&&(x=d=(l=(c=(f=(p=t)[b]||(p[b]={}))[p.uniqueID]||(f[p.uniqueID]={}))[e]||[])[0]===T&&l[1]),!1===x)while(p=++d&&p&&p[g]||(x=d=0)||h.pop())if((s?p.nodeName.toLowerCase()===v:1===p.nodeType)&&++x&&(m&&((c=(f=p[b]||(p[b]={}))[p.uniqueID]||(f[p.uniqueID]={}))[e]=[T,x]),p===t))break;return(x-=i)===r||x%r==0&&x/r>=0}}},PSEUDO:function(e,t){var n,i=r.pseudos[e]||r.setFilters[e.toLowerCase()]||oe.error("unsupported pseudo: "+e);return i[b]?i(t):i.length>1?(n=[e,e,"",t],r.setFilters.hasOwnProperty(e.toLowerCase())?se(function(e,n){var r,o=i(e,t),a=o.length;while(a--)e[r=O(e,o[a])]=!(n[r]=o[a])}):function(e){return i(e,0,n)}):i}},pseudos:{not:se(function(e){var t=[],n=[],r=s(e.replace(B,"$1"));return r[b]?se(function(e,t,n,i){var o,a=r(e,null,i,[]),s=e.length;while(s--)(o=a[s])&&(e[s]=!(t[s]=o))}):function(e,i,o){return t[0]=e,r(t,null,o,n),t[0]=null,!n.pop()}}),has:se(function(e){return function(t){return oe(e,t).length>0}}),contains:se(function(e){return e=e.replace(Z,ee),function(t){return(t.textContent||t.innerText||i(t)).indexOf(e)>-1}}),lang:se(function(e){return U.test(e||"")||oe.error("unsupported lang: "+e),e=e.replace(Z,ee).toLowerCase(),function(t){var n;do{if(n=g?t.lang:t.getAttribute("xml:lang")||t.getAttribute("lang"))return(n=n.toLowerCase())===e||0===n.indexOf(e+"-")}while((t=t.parentNode)&&1===t.nodeType);return!1}}),target:function(t){var n=e.location&&e.location.hash;return n&&n.slice(1)===t.id},root:function(e){return e===h},focus:function(e){return e===d.activeElement&&(!d.hasFocus||d.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:de(!1),disabled:de(!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,!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!r.pseudos.empty(e)},header:function(e){return Y.test(e.nodeName)},input:function(e){return G.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:he(function(){return[0]}),last:he(function(e,t){return[t-1]}),eq:he(function(e,t,n){return[n<0?n+t:n]}),even:he(function(e,t){for(var n=0;n<t;n+=2)e.push(n);return e}),odd:he(function(e,t){for(var n=1;n<t;n+=2)e.push(n);return e}),lt:he(function(e,t,n){for(var r=n<0?n+t:n;--r>=0;)e.push(r);return e}),gt:he(function(e,t,n){for(var r=n<0?n+t:n;++r<t;)e.push(r);return e})}}).pseudos.nth=r.pseudos.eq;for(t in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})r.pseudos[t]=fe(t);for(t in{submit:!0,reset:!0})r.pseudos[t]=pe(t);function ye(){}ye.prototype=r.filters=r.pseudos,r.setFilters=new ye,a=oe.tokenize=function(e,t){var n,i,o,a,s,u,l,c=k[e+" "];if(c)return t?0:c.slice(0);s=e,u=[],l=r.preFilter;while(s){n&&!(i=F.exec(s))||(i&&(s=s.slice(i[0].length)||s),u.push(o=[])),n=!1,(i=_.exec(s))&&(n=i.shift(),o.push({value:n,type:i[0].replace(B," ")}),s=s.slice(n.length));for(a in r.filter)!(i=V[a].exec(s))||l[a]&&!(i=l[a](i))||(n=i.shift(),o.push({value:n,type:a,matches:i}),s=s.slice(n.length));if(!n)break}return t?s.length:s?oe.error(e):k(e,u).slice(0)};function ve(e){for(var t=0,n=e.length,r="";t<n;t++)r+=e[t].value;return r}function me(e,t,n){var r=t.dir,i=t.next,o=i||r,a=n&&"parentNode"===o,s=C++;return t.first?function(t,n,i){while(t=t[r])if(1===t.nodeType||a)return e(t,n,i);return!1}:function(t,n,u){var l,c,f,p=[T,s];if(u){while(t=t[r])if((1===t.nodeType||a)&&e(t,n,u))return!0}else while(t=t[r])if(1===t.nodeType||a)if(f=t[b]||(t[b]={}),c=f[t.uniqueID]||(f[t.uniqueID]={}),i&&i===t.nodeName.toLowerCase())t=t[r]||t;else{if((l=c[o])&&l[0]===T&&l[1]===s)return p[2]=l[2];if(c[o]=p,p[2]=e(t,n,u))return!0}return!1}}function xe(e){return e.length>1?function(t,n,r){var i=e.length;while(i--)if(!e[i](t,n,r))return!1;return!0}:e[0]}function be(e,t,n){for(var r=0,i=t.length;r<i;r++)oe(e,t[r],n);return n}function we(e,t,n,r,i){for(var o,a=[],s=0,u=e.length,l=null!=t;s<u;s++)(o=e[s])&&(n&&!n(o,r,i)||(a.push(o),l&&t.push(s)));return a}function Te(e,t,n,r,i,o){return r&&!r[b]&&(r=Te(r)),i&&!i[b]&&(i=Te(i,o)),se(function(o,a,s,u){var l,c,f,p=[],d=[],h=a.length,g=o||be(t||"*",s.nodeType?[s]:s,[]),y=!e||!o&&t?g:we(g,p,e,s,u),v=n?i||(o?e:h||r)?[]:a:y;if(n&&n(y,v,s,u),r){l=we(v,d),r(l,[],s,u),c=l.length;while(c--)(f=l[c])&&(v[d[c]]=!(y[d[c]]=f))}if(o){if(i||e){if(i){l=[],c=v.length;while(c--)(f=v[c])&&l.push(y[c]=f);i(null,v=[],l,u)}c=v.length;while(c--)(f=v[c])&&(l=i?O(o,f):p[c])>-1&&(o[l]=!(a[l]=f))}}else v=we(v===a?v.splice(h,v.length):v),i?i(null,a,v,u):L.apply(a,v)})}function Ce(e){for(var t,n,i,o=e.length,a=r.relative[e[0].type],s=a||r.relative[" "],u=a?1:0,c=me(function(e){return e===t},s,!0),f=me(function(e){return O(t,e)>-1},s,!0),p=[function(e,n,r){var i=!a&&(r||n!==l)||((t=n).nodeType?c(e,n,r):f(e,n,r));return t=null,i}];u<o;u++)if(n=r.relative[e[u].type])p=[me(xe(p),n)];else{if((n=r.filter[e[u].type].apply(null,e[u].matches))[b]){for(i=++u;i<o;i++)if(r.relative[e[i].type])break;return Te(u>1&&xe(p),u>1&&ve(e.slice(0,u-1).concat({value:" "===e[u-2].type?"*":""})).replace(B,"$1"),n,u<i&&Ce(e.slice(u,i)),i<o&&Ce(e=e.slice(i)),i<o&&ve(e))}p.push(n)}return xe(p)}function Ee(e,t){var n=t.length>0,i=e.length>0,o=function(o,a,s,u,c){var f,h,y,v=0,m="0",x=o&&[],b=[],w=l,C=o||i&&r.find.TAG("*",c),E=T+=null==w?1:Math.random()||.1,k=C.length;for(c&&(l=a===d||a||c);m!==k&&null!=(f=C[m]);m++){if(i&&f){h=0,a||f.ownerDocument===d||(p(f),s=!g);while(y=e[h++])if(y(f,a||d,s)){u.push(f);break}c&&(T=E)}n&&((f=!y&&f)&&v--,o&&x.push(f))}if(v+=m,n&&m!==v){h=0;while(y=t[h++])y(x,b,a,s);if(o){if(v>0)while(m--)x[m]||b[m]||(b[m]=j.call(u));b=we(b)}L.apply(u,b),c&&!o&&b.length>0&&v+t.length>1&&oe.uniqueSort(u)}return c&&(T=E,l=w),x};return n?se(o):o}return s=oe.compile=function(e,t){var n,r=[],i=[],o=S[e+" "];if(!o){t||(t=a(e)),n=t.length;while(n--)(o=Ce(t[n]))[b]?r.push(o):i.push(o);(o=S(e,Ee(i,r))).selector=e}return o},u=oe.select=function(e,t,n,i){var o,u,l,c,f,p="function"==typeof e&&e,d=!i&&a(e=p.selector||e);if(n=n||[],1===d.length){if((u=d[0]=d[0].slice(0)).length>2&&"ID"===(l=u[0]).type&&9===t.nodeType&&g&&r.relative[u[1].type]){if(!(t=(r.find.ID(l.matches[0].replace(Z,ee),t)||[])[0]))return n;p&&(t=t.parentNode),e=e.slice(u.shift().value.length)}o=V.needsContext.test(e)?0:u.length;while(o--){if(l=u[o],r.relative[c=l.type])break;if((f=r.find[c])&&(i=f(l.matches[0].replace(Z,ee),K.test(u[0].type)&&ge(t.parentNode)||t))){if(u.splice(o,1),!(e=i.length&&ve(u)))return L.apply(n,i),n;break}}}return(p||s(e,d))(i,t,!g,n,!t||K.test(e)&&ge(t.parentNode)||t),n},n.sortStable=b.split("").sort(D).join("")===b,n.detectDuplicates=!!f,p(),n.sortDetached=ue(function(e){return 1&e.compareDocumentPosition(d.createElement("fieldset"))}),ue(function(e){return e.innerHTML="<a href='#'></a>","#"===e.firstChild.getAttribute("href")})||le("type|href|height|width",function(e,t,n){if(!n)return e.getAttribute(t,"type"===t.toLowerCase()?1:2)}),n.attributes&&ue(function(e){return e.innerHTML="<input/>",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")})||le("value",function(e,t,n){if(!n&&"input"===e.nodeName.toLowerCase())return e.defaultValue}),ue(function(e){return null==e.getAttribute("disabled")})||le(P,function(e,t,n){var r;if(!n)return!0===e[t]?t.toLowerCase():(r=e.getAttributeNode(t))&&r.specified?r.value:null}),oe}(e);w.find=E,w.expr=E.selectors,w.expr[":"]=w.expr.pseudos,w.uniqueSort=w.unique=E.uniqueSort,w.text=E.getText,w.isXMLDoc=E.isXML,w.contains=E.contains,w.escapeSelector=E.escape;var k=function(e,t,n){var r=[],i=void 0!==n;while((e=e[t])&&9!==e.nodeType)if(1===e.nodeType){if(i&&w(e).is(n))break;r.push(e)}return r},S=function(e,t){for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n},D=w.expr.match.needsContext;function N(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()}var A=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,t,n){return g(t)?w.grep(e,function(e,r){return!!t.call(e,r,e)!==n}):t.nodeType?w.grep(e,function(e){return e===t!==n}):"string"!=typeof t?w.grep(e,function(e){return u.call(t,e)>-1!==n}):w.filter(t,e,n)}w.filter=function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType?w.find.matchesSelector(r,e)?[r]:[]:w.find.matches(e,w.grep(t,function(e){return 1===e.nodeType}))},w.fn.extend({find:function(e){var t,n,r=this.length,i=this;if("string"!=typeof e)return this.pushStack(w(e).filter(function(){for(t=0;t<r;t++)if(w.contains(i[t],this))return!0}));for(n=this.pushStack([]),t=0;t<r;t++)w.find(e,i[t],n);return r>1?w.uniqueSort(n):n},filter:function(e){return this.pushStack(j(this,e||[],!1))},not:function(e){return this.pushStack(j(this,e||[],!0))},is:function(e){return!!j(this,"string"==typeof e&&D.test(e)?w(e):e||[],!1).length}});var q,L=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/;(w.fn.init=function(e,t,n){var i,o;if(!e)return this;if(n=n||q,"string"==typeof e){if(!(i="<"===e[0]&&">"===e[e.length-1]&&e.length>=3?[null,e,null]:L.exec(e))||!i[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(i[1]){if(t=t instanceof w?t[0]:t,w.merge(this,w.parseHTML(i[1],t&&t.nodeType?t.ownerDocument||t:r,!0)),A.test(i[1])&&w.isPlainObject(t))for(i in t)g(this[i])?this[i](t[i]):this.attr(i,t[i]);return this}return(o=r.getElementById(i[2]))&&(this[0]=o,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):g(e)?void 0!==n.ready?n.ready(e):e(w):w.makeArray(e,this)}).prototype=w.fn,q=w(r);var H=/^(?:parents|prev(?:Until|All))/,O={children:!0,contents:!0,next:!0,prev:!0};w.fn.extend({has:function(e){var t=w(e,this),n=t.length;return this.filter(function(){for(var e=0;e<n;e++)if(w.contains(this,t[e]))return!0})},closest:function(e,t){var n,r=0,i=this.length,o=[],a="string"!=typeof e&&w(e);if(!D.test(e))for(;r<i;r++)for(n=this[r];n&&n!==t;n=n.parentNode)if(n.nodeType<11&&(a?a.index(n)>-1:1===n.nodeType&&w.find.matchesSelector(n,e))){o.push(n);break}return this.pushStack(o.length>1?w.uniqueSort(o):o)},index:function(e){return e?"string"==typeof e?u.call(w(e),this[0]):u.call(this,e.jquery?e[0]:e):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){return this.pushStack(w.uniqueSort(w.merge(this.get(),w(e,t))))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}});function P(e,t){while((e=e[t])&&1!==e.nodeType);return e}w.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return k(e,"parentNode")},parentsUntil:function(e,t,n){return k(e,"parentNode",n)},next:function(e){return P(e,"nextSibling")},prev:function(e){return P(e,"previousSibling")},nextAll:function(e){return k(e,"nextSibling")},prevAll:function(e){return k(e,"previousSibling")},nextUntil:function(e,t,n){return k(e,"nextSibling",n)},prevUntil:function(e,t,n){return k(e,"previousSibling",n)},siblings:function(e){return S((e.parentNode||{}).firstChild,e)},children:function(e){return S(e.firstChild)},contents:function(e){return N(e,"iframe")?e.contentDocument:(N(e,"template")&&(e=e.content||e),w.merge([],e.childNodes))}},function(e,t){w.fn[e]=function(n,r){var i=w.map(this,t,n);return"Until"!==e.slice(-5)&&(r=n),r&&"string"==typeof r&&(i=w.filter(r,i)),this.length>1&&(O[e]||w.uniqueSort(i),H.test(e)&&i.reverse()),this.pushStack(i)}});var M=/[^\x20\t\r\n\f]+/g;function R(e){var t={};return w.each(e.match(M)||[],function(e,n){t[n]=!0}),t}w.Callbacks=function(e){e="string"==typeof e?R(e):w.extend({},e);var t,n,r,i,o=[],a=[],s=-1,u=function(){for(i=i||e.once,r=t=!0;a.length;s=-1){n=a.shift();while(++s<o.length)!1===o[s].apply(n[0],n[1])&&e.stopOnFalse&&(s=o.length,n=!1)}e.memory||(n=!1),t=!1,i&&(o=n?[]:"")},l={add:function(){return o&&(n&&!t&&(s=o.length-1,a.push(n)),function t(n){w.each(n,function(n,r){g(r)?e.unique&&l.has(r)||o.push(r):r&&r.length&&"string"!==x(r)&&t(r)})}(arguments),n&&!t&&u()),this},remove:function(){return w.each(arguments,function(e,t){var n;while((n=w.inArray(t,o,n))>-1)o.splice(n,1),n<=s&&s--}),this},has:function(e){return e?w.inArray(e,o)>-1:o.length>0},empty:function(){return o&&(o=[]),this},disable:function(){return i=a=[],o=n="",this},disabled:function(){return!o},lock:function(){return i=a=[],n||t||(o=n=""),this},locked:function(){return!!i},fireWith:function(e,n){return i||(n=[e,(n=n||[]).slice?n.slice():n],a.push(n),t||u()),this},fire:function(){return l.fireWith(this,arguments),this},fired:function(){return!!r}};return l};function I(e){return e}function W(e){throw e}function $(e,t,n,r){var i;try{e&&g(i=e.promise)?i.call(e).done(t).fail(n):e&&g(i=e.then)?i.call(e,t,n):t.apply(void 0,[e].slice(r))}catch(e){n.apply(void 0,[e])}}w.extend({Deferred:function(t){var n=[["notify","progress",w.Callbacks("memory"),w.Callbacks("memory"),2],["resolve","done",w.Callbacks("once memory"),w.Callbacks("once memory"),0,"resolved"],["reject","fail",w.Callbacks("once memory"),w.Callbacks("once memory"),1,"rejected"]],r="pending",i={state:function(){return r},always:function(){return o.done(arguments).fail(arguments),this},"catch":function(e){return i.then(null,e)},pipe:function(){var e=arguments;return w.Deferred(function(t){w.each(n,function(n,r){var i=g(e[r[4]])&&e[r[4]];o[r[1]](function(){var e=i&&i.apply(this,arguments);e&&g(e.promise)?e.promise().progress(t.notify).done(t.resolve).fail(t.reject):t[r[0]+"With"](this,i?[e]:arguments)})}),e=null}).promise()},then:function(t,r,i){var o=0;function a(t,n,r,i){return function(){var s=this,u=arguments,l=function(){var e,l;if(!(t<o)){if((e=r.apply(s,u))===n.promise())throw new TypeError("Thenable self-resolution");l=e&&("object"==typeof e||"function"==typeof e)&&e.then,g(l)?i?l.call(e,a(o,n,I,i),a(o,n,W,i)):(o++,l.call(e,a(o,n,I,i),a(o,n,W,i),a(o,n,I,n.notifyWith))):(r!==I&&(s=void 0,u=[e]),(i||n.resolveWith)(s,u))}},c=i?l:function(){try{l()}catch(e){w.Deferred.exceptionHook&&w.Deferred.exceptionHook(e,c.stackTrace),t+1>=o&&(r!==W&&(s=void 0,u=[e]),n.rejectWith(s,u))}};t?c():(w.Deferred.getStackHook&&(c.stackTrace=w.Deferred.getStackHook()),e.setTimeout(c))}}return w.Deferred(function(e){n[0][3].add(a(0,e,g(i)?i:I,e.notifyWith)),n[1][3].add(a(0,e,g(t)?t:I)),n[2][3].add(a(0,e,g(r)?r:W))}).promise()},promise:function(e){return null!=e?w.extend(e,i):i}},o={};return w.each(n,function(e,t){var a=t[2],s=t[5];i[t[1]]=a.add,s&&a.add(function(){r=s},n[3-e][2].disable,n[3-e][3].disable,n[0][2].lock,n[0][3].lock),a.add(t[3].fire),o[t[0]]=function(){return o[t[0]+"With"](this===o?void 0:this,arguments),this},o[t[0]+"With"]=a.fireWith}),i.promise(o),t&&t.call(o,o),o},when:function(e){var t=arguments.length,n=t,r=Array(n),i=o.call(arguments),a=w.Deferred(),s=function(e){return function(n){r[e]=this,i[e]=arguments.length>1?o.call(arguments):n,--t||a.resolveWith(r,i)}};if(t<=1&&($(e,a.done(s(n)).resolve,a.reject,!t),"pending"===a.state()||g(i[n]&&i[n].then)))return a.then();while(n--)$(i[n],s(n),a.reject);return a.promise()}});var B=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;w.Deferred.exceptionHook=function(t,n){e.console&&e.console.warn&&t&&B.test(t.name)&&e.console.warn("jQuery.Deferred exception: "+t.message,t.stack,n)},w.readyException=function(t){e.setTimeout(function(){throw t})};var F=w.Deferred();w.fn.ready=function(e){return F.then(e)["catch"](function(e){w.readyException(e)}),this},w.extend({isReady:!1,readyWait:1,ready:function(e){(!0===e?--w.readyWait:w.isReady)||(w.isReady=!0,!0!==e&&--w.readyWait>0||F.resolveWith(r,[w]))}}),w.ready.then=F.then;function _(){r.removeEventListener("DOMContentLoaded",_),e.removeEventListener("load",_),w.ready()}"complete"===r.readyState||"loading"!==r.readyState&&!r.documentElement.doScroll?e.setTimeout(w.ready):(r.addEventListener("DOMContentLoaded",_),e.addEventListener("load",_));var z=function(e,t,n,r,i,o,a){var s=0,u=e.length,l=null==n;if("object"===x(n)){i=!0;for(s in n)z(e,t,s,n[s],!0,o,a)}else if(void 0!==r&&(i=!0,g(r)||(a=!0),l&&(a?(t.call(e,r),t=null):(l=t,t=function(e,t,n){return l.call(w(e),n)})),t))for(;s<u;s++)t(e[s],n,a?r:r.call(e[s],s,t(e[s],n)));return i?e:l?t.call(e):u?t(e[0],n):o},X=/^-ms-/,U=/-([a-z])/g;function V(e,t){return t.toUpperCase()}function G(e){return e.replace(X,"ms-").replace(U,V)}var Y=function(e){return 1===e.nodeType||9===e.nodeType||!+e.nodeType};function Q(){this.expando=w.expando+Q.uid++}Q.uid=1,Q.prototype={cache:function(e){var t=e[this.expando];return t||(t={},Y(e)&&(e.nodeType?e[this.expando]=t:Object.defineProperty(e,this.expando,{value:t,configurable:!0}))),t},set:function(e,t,n){var r,i=this.cache(e);if("string"==typeof t)i[G(t)]=n;else for(r in t)i[G(r)]=t[r];return i},get:function(e,t){return void 0===t?this.cache(e):e[this.expando]&&e[this.expando][G(t)]},access:function(e,t,n){return void 0===t||t&&"string"==typeof t&&void 0===n?this.get(e,t):(this.set(e,t,n),void 0!==n?n:t)},remove:function(e,t){var n,r=e[this.expando];if(void 0!==r){if(void 0!==t){n=(t=Array.isArray(t)?t.map(G):(t=G(t))in r?[t]:t.match(M)||[]).length;while(n--)delete r[t[n]]}(void 0===t||w.isEmptyObject(r))&&(e.nodeType?e[this.expando]=void 0:delete e[this.expando])}},hasData:function(e){var t=e[this.expando];return void 0!==t&&!w.isEmptyObject(t)}};var J=new Q,K=new Q,Z=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,ee=/[A-Z]/g;function te(e){return"true"===e||"false"!==e&&("null"===e?null:e===+e+""?+e:Z.test(e)?JSON.parse(e):e)}function ne(e,t,n){var r;if(void 0===n&&1===e.nodeType)if(r="data-"+t.replace(ee,"-$&").toLowerCase(),"string"==typeof(n=e.getAttribute(r))){try{n=te(n)}catch(e){}K.set(e,t,n)}else n=void 0;return n}w.extend({hasData:function(e){return K.hasData(e)||J.hasData(e)},data:function(e,t,n){return K.access(e,t,n)},removeData:function(e,t){K.remove(e,t)},_data:function(e,t,n){return J.access(e,t,n)},_removeData:function(e,t){J.remove(e,t)}}),w.fn.extend({data:function(e,t){var n,r,i,o=this[0],a=o&&o.attributes;if(void 0===e){if(this.length&&(i=K.get(o),1===o.nodeType&&!J.get(o,"hasDataAttrs"))){n=a.length;while(n--)a[n]&&0===(r=a[n].name).indexOf("data-")&&(r=G(r.slice(5)),ne(o,r,i[r]));J.set(o,"hasDataAttrs",!0)}return i}return"object"==typeof e?this.each(function(){K.set(this,e)}):z(this,function(t){var n;if(o&&void 0===t){if(void 0!==(n=K.get(o,e)))return n;if(void 0!==(n=ne(o,e)))return n}else this.each(function(){K.set(this,e,t)})},null,t,arguments.length>1,null,!0)},removeData:function(e){return this.each(function(){K.remove(this,e)})}}),w.extend({queue:function(e,t,n){var r;if(e)return t=(t||"fx")+"queue",r=J.get(e,t),n&&(!r||Array.isArray(n)?r=J.access(e,t,w.makeArray(n)):r.push(n)),r||[]},dequeue:function(e,t){t=t||"fx";var n=w.queue(e,t),r=n.length,i=n.shift(),o=w._queueHooks(e,t),a=function(){w.dequeue(e,t)};"inprogress"===i&&(i=n.shift(),r--),i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,a,o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return J.get(e,n)||J.access(e,n,{empty:w.Callbacks("once memory").add(function(){J.remove(e,[t+"queue",n])})})}}),w.fn.extend({queue:function(e,t){var n=2;return"string"!=typeof e&&(t=e,e="fx",n--),arguments.length<n?w.queue(this[0],e):void 0===t?this:this.each(function(){var n=w.queue(this,e,t);w._queueHooks(this,e),"fx"===e&&"inprogress"!==n[0]&&w.dequeue(this,e)})},dequeue:function(e){return this.each(function(){w.dequeue(this,e)})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,t){var n,r=1,i=w.Deferred(),o=this,a=this.length,s=function(){--r||i.resolveWith(o,[o])};"string"!=typeof e&&(t=e,e=void 0),e=e||"fx";while(a--)(n=J.get(o[a],e+"queueHooks"))&&n.empty&&(r++,n.empty.add(s));return s(),i.promise(t)}});var re=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,ie=new RegExp("^(?:([+-])=|)("+re+")([a-z%]*)$","i"),oe=["Top","Right","Bottom","Left"],ae=function(e,t){return"none"===(e=t||e).style.display||""===e.style.display&&w.contains(e.ownerDocument,e)&&"none"===w.css(e,"display")},se=function(e,t,n,r){var i,o,a={};for(o in t)a[o]=e.style[o],e.style[o]=t[o];i=n.apply(e,r||[]);for(o in t)e.style[o]=a[o];return i};function ue(e,t,n,r){var i,o,a=20,s=r?function(){return r.cur()}:function(){return w.css(e,t,"")},u=s(),l=n&&n[3]||(w.cssNumber[t]?"":"px"),c=(w.cssNumber[t]||"px"!==l&&+u)&&ie.exec(w.css(e,t));if(c&&c[3]!==l){u/=2,l=l||c[3],c=+u||1;while(a--)w.style(e,t,c+l),(1-o)*(1-(o=s()/u||.5))<=0&&(a=0),c/=o;c*=2,w.style(e,t,c+l),n=n||[]}return n&&(c=+c||+u||0,i=n[1]?c+(n[1]+1)*n[2]:+n[2],r&&(r.unit=l,r.start=c,r.end=i)),i}var le={};function ce(e){var t,n=e.ownerDocument,r=e.nodeName,i=le[r];return i||(t=n.body.appendChild(n.createElement(r)),i=w.css(t,"display"),t.parentNode.removeChild(t),"none"===i&&(i="block"),le[r]=i,i)}function fe(e,t){for(var n,r,i=[],o=0,a=e.length;o<a;o++)(r=e[o]).style&&(n=r.style.display,t?("none"===n&&(i[o]=J.get(r,"display")||null,i[o]||(r.style.display="")),""===r.style.display&&ae(r)&&(i[o]=ce(r))):"none"!==n&&(i[o]="none",J.set(r,"display",n)));for(o=0;o<a;o++)null!=i[o]&&(e[o].style.display=i[o]);return e}w.fn.extend({show:function(){return fe(this,!0)},hide:function(){return fe(this)},toggle:function(e){return"boolean"==typeof e?e?this.show():this.hide():this.each(function(){ae(this)?w(this).show():w(this).hide()})}});var pe=/^(?:checkbox|radio)$/i,de=/<([a-z][^\/\0>\x20\t\r\n\f]+)/i,he=/^$|^module$|\/(?:java|ecma)script/i,ge={option:[1,"<select multiple='multiple'>","</select>"],thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};ge.optgroup=ge.option,ge.tbody=ge.tfoot=ge.colgroup=ge.caption=ge.thead,ge.th=ge.td;function ye(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&N(e,t)?w.merge([e],n):n}function ve(e,t){for(var n=0,r=e.length;n<r;n++)J.set(e[n],"globalEval",!t||J.get(t[n],"globalEval"))}var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d<h;d++)if((o=e[d])||0===o)if("object"===x(o))w.merge(p,o.nodeType?[o]:o);else if(me.test(o)){a=a||f.appendChild(t.createElement("div")),s=(de.exec(o)||["",""])[1].toLowerCase(),u=ge[s]||ge._default,a.innerHTML=u[1]+w.htmlPrefilter(o)+u[2],c=u[0];while(c--)a=a.lastChild;w.merge(p,a.childNodes),(a=f.firstChild).textContent=""}else p.push(t.createTextNode(o));f.textContent="",d=0;while(o=p[d++])if(r&&w.inArray(o,r)>-1)i&&i.push(o);else if(l=w.contains(o.ownerDocument,o),a=ye(f.appendChild(o),"script"),l&&ve(a),n){c=0;while(o=a[c++])he.test(o.type||"")&&n.push(o)}return f}!function(){var e=r.createDocumentFragment().appendChild(r.createElement("div")),t=r.createElement("input");t.setAttribute("type","radio"),t.setAttribute("checked","checked"),t.setAttribute("name","t"),e.appendChild(t),h.checkClone=e.cloneNode(!0).cloneNode(!0).lastChild.checked,e.innerHTML="<textarea>x</textarea>",h.noCloneChecked=!!e.cloneNode(!0).lastChild.defaultValue}();var be=r.documentElement,we=/^key/,Te=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Ce=/^([^.]*)(?:\.(.+)|)/;function Ee(){return!0}function ke(){return!1}function Se(){try{return r.activeElement}catch(e){}}function De(e,t,n,r,i,o){var a,s;if("object"==typeof t){"string"!=typeof n&&(r=r||n,n=void 0);for(s in t)De(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=ke;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return w().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=w.guid++)),e.each(function(){w.event.add(this,t,i,r,n)})}w.event={global:{},add:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,y=J.get(e);if(y){n.handler&&(n=(o=n).handler,i=o.selector),i&&w.find.matchesSelector(be,i),n.guid||(n.guid=w.guid++),(u=y.events)||(u=y.events={}),(a=y.handle)||(a=y.handle=function(t){return"undefined"!=typeof w&&w.event.triggered!==t.type?w.event.dispatch.apply(e,arguments):void 0}),l=(t=(t||"").match(M)||[""]).length;while(l--)d=g=(s=Ce.exec(t[l])||[])[1],h=(s[2]||"").split(".").sort(),d&&(f=w.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=w.event.special[d]||{},c=w.extend({type:d,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&w.expr.match.needsContext.test(i),namespace:h.join(".")},o),(p=u[d])||((p=u[d]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(e,r,h,a)||e.addEventListener&&e.addEventListener(d,a)),f.add&&(f.add.call(e,c),c.handler.guid||(c.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,c):p.push(c),w.event.global[d]=!0)}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,y=J.hasData(e)&&J.get(e);if(y&&(u=y.events)){l=(t=(t||"").match(M)||[""]).length;while(l--)if(s=Ce.exec(t[l])||[],d=g=s[1],h=(s[2]||"").split(".").sort(),d){f=w.event.special[d]||{},p=u[d=(r?f.delegateType:f.bindType)||d]||[],s=s[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=p.length;while(o--)c=p[o],!i&&g!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(p.splice(o,1),c.selector&&p.delegateCount--,f.remove&&f.remove.call(e,c));a&&!p.length&&(f.teardown&&!1!==f.teardown.call(e,h,y.handle)||w.removeEvent(e,d,y.handle),delete u[d])}else for(d in u)w.event.remove(e,d+t[l],n,r,!0);w.isEmptyObject(u)&&J.remove(e,"handle events")}},dispatch:function(e){var t=w.event.fix(e),n,r,i,o,a,s,u=new Array(arguments.length),l=(J.get(this,"events")||{})[t.type]||[],c=w.event.special[t.type]||{};for(u[0]=t,n=1;n<arguments.length;n++)u[n]=arguments[n];if(t.delegateTarget=this,!c.preDispatch||!1!==c.preDispatch.call(this,t)){s=w.event.handlers.call(this,t,l),n=0;while((o=s[n++])&&!t.isPropagationStopped()){t.currentTarget=o.elem,r=0;while((a=o.handlers[r++])&&!t.isImmediatePropagationStopped())t.rnamespace&&!t.rnamespace.test(a.namespace)||(t.handleObj=a,t.data=a.data,void 0!==(i=((w.event.special[a.origType]||{}).handle||a.handler).apply(o.elem,u))&&!1===(t.result=i)&&(t.preventDefault(),t.stopPropagation()))}return c.postDispatch&&c.postDispatch.call(this,t),t.result}},handlers:function(e,t){var n,r,i,o,a,s=[],u=t.delegateCount,l=e.target;if(u&&l.nodeType&&!("click"===e.type&&e.button>=1))for(;l!==this;l=l.parentNode||this)if(1===l.nodeType&&("click"!==e.type||!0!==l.disabled)){for(o=[],a={},n=0;n<u;n++)void 0===a[i=(r=t[n]).selector+" "]&&(a[i]=r.needsContext?w(i,this).index(l)>-1:w.find(i,this,null,[l]).length),a[i]&&o.push(r);o.length&&s.push({elem:l,handlers:o})}return l=this,u<t.length&&s.push({elem:l,handlers:t.slice(u)}),s},addProp:function(e,t){Object.defineProperty(w.Event.prototype,e,{enumerable:!0,configurable:!0,get:g(t)?function(){if(this.originalEvent)return t(this.originalEvent)}:function(){if(this.originalEvent)return this.originalEvent[e]},set:function(t){Object.defineProperty(this,e,{enumerable:!0,configurable:!0,writable:!0,value:t})}})},fix:function(e){return e[w.expando]?e:new w.Event(e)},special:{load:{noBubble:!0},focus:{trigger:function(){if(this!==Se()&&this.focus)return this.focus(),!1},delegateType:"focusin"},blur:{trigger:function(){if(this===Se()&&this.blur)return this.blur(),!1},delegateType:"focusout"},click:{trigger:function(){if("checkbox"===this.type&&this.click&&N(this,"input"))return this.click(),!1},_default:function(e){return N(e.target,"a")}},beforeunload:{postDispatch:function(e){void 0!==e.result&&e.originalEvent&&(e.originalEvent.returnValue=e.result)}}}},w.removeEvent=function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n)},w.Event=function(e,t){if(!(this instanceof w.Event))return new w.Event(e,t);e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||void 0===e.defaultPrevented&&!1===e.returnValue?Ee:ke,this.target=e.target&&3===e.target.nodeType?e.target.parentNode:e.target,this.currentTarget=e.currentTarget,this.relatedTarget=e.relatedTarget):this.type=e,t&&w.extend(this,t),this.timeStamp=e&&e.timeStamp||Date.now(),this[w.expando]=!0},w.Event.prototype={constructor:w.Event,isDefaultPrevented:ke,isPropagationStopped:ke,isImmediatePropagationStopped:ke,isSimulated:!1,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=Ee,e&&!this.isSimulated&&e.preventDefault()},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=Ee,e&&!this.isSimulated&&e.stopPropagation()},stopImmediatePropagation:function(){var e=this.originalEvent;this.isImmediatePropagationStopped=Ee,e&&!this.isSimulated&&e.stopImmediatePropagation(),this.stopPropagation()}},w.each({altKey:!0,bubbles:!0,cancelable:!0,changedTouches:!0,ctrlKey:!0,detail:!0,eventPhase:!0,metaKey:!0,pageX:!0,pageY:!0,shiftKey:!0,view:!0,"char":!0,charCode:!0,key:!0,keyCode:!0,button:!0,buttons:!0,clientX:!0,clientY:!0,offsetX:!0,offsetY:!0,pointerId:!0,pointerType:!0,screenX:!0,screenY:!0,targetTouches:!0,toElement:!0,touches:!0,which:function(e){var t=e.button;return null==e.which&&we.test(e.type)?null!=e.charCode?e.charCode:e.keyCode:!e.which&&void 0!==t&&Te.test(e.type)?1&t?1:2&t?3:4&t?2:0:e.which}},w.event.addProp),w.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(e,t){w.event.special[e]={delegateType:t,bindType:t,handle:function(e){var n,r=this,i=e.relatedTarget,o=e.handleObj;return i&&(i===r||w.contains(r,i))||(e.type=o.origType,n=o.handler.apply(this,arguments),e.type=t),n}}}),w.fn.extend({on:function(e,t,n,r){return De(this,e,t,n,r)},one:function(e,t,n,r){return De(this,e,t,n,r,1)},off:function(e,t,n){var r,i;if(e&&e.preventDefault&&e.handleObj)return r=e.handleObj,w(e.delegateTarget).off(r.namespace?r.origType+"."+r.namespace:r.origType,r.selector,r.handler),this;if("object"==typeof e){for(i in e)this.off(i,t,e[i]);return this}return!1!==t&&"function"!=typeof t||(n=t,t=void 0),!1===n&&(n=ke),this.each(function(){w.event.remove(this,e,n,t)})}});var Ne=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\/\0>\x20\t\r\n\f]*)[^>]*)\/>/gi,Ae=/<script|<style|<link/i,je=/checked\s*(?:[^=]|=\s*.checked.)/i,qe=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;function Le(e,t){return N(e,"table")&&N(11!==t.nodeType?t:t.firstChild,"tr")?w(e).children("tbody")[0]||e:e}function He(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function Oe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Pe(e,t){var n,r,i,o,a,s,u,l;if(1===t.nodeType){if(J.hasData(e)&&(o=J.access(e),a=J.set(t,o),l=o.events)){delete a.handle,a.events={};for(i in l)for(n=0,r=l[i].length;n<r;n++)w.event.add(t,i,l[i][n])}K.hasData(e)&&(s=K.access(e),u=w.extend({},s),K.set(t,u))}}function Me(e,t){var n=t.nodeName.toLowerCase();"input"===n&&pe.test(e.type)?t.checked=e.checked:"input"!==n&&"textarea"!==n||(t.defaultValue=e.defaultValue)}function Re(e,t,n,r){t=a.apply([],t);var i,o,s,u,l,c,f=0,p=e.length,d=p-1,y=t[0],v=g(y);if(v||p>1&&"string"==typeof y&&!h.checkClone&&je.test(y))return e.each(function(i){var o=e.eq(i);v&&(t[0]=y.call(this,i,o.html())),Re(o,t,n,r)});if(p&&(i=xe(t,e[0].ownerDocument,!1,e,r),o=i.firstChild,1===i.childNodes.length&&(i=o),o||r)){for(u=(s=w.map(ye(i,"script"),He)).length;f<p;f++)l=i,f!==d&&(l=w.clone(l,!0,!0),u&&w.merge(s,ye(l,"script"))),n.call(e[f],l,f);if(u)for(c=s[s.length-1].ownerDocument,w.map(s,Oe),f=0;f<u;f++)l=s[f],he.test(l.type||"")&&!J.access(l,"globalEval")&&w.contains(c,l)&&(l.src&&"module"!==(l.type||"").toLowerCase()?w._evalUrl&&w._evalUrl(l.src):m(l.textContent.replace(qe,""),c,l))}return e}function Ie(e,t,n){for(var r,i=t?w.filter(t,e):e,o=0;null!=(r=i[o]);o++)n||1!==r.nodeType||w.cleanData(ye(r)),r.parentNode&&(n&&w.contains(r.ownerDocument,r)&&ve(ye(r,"script")),r.parentNode.removeChild(r));return e}w.extend({htmlPrefilter:function(e){return e.replace(Ne,"<$1></$2>")},clone:function(e,t,n){var r,i,o,a,s=e.cloneNode(!0),u=w.contains(e.ownerDocument,e);if(!(h.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||w.isXMLDoc(e)))for(a=ye(s),r=0,i=(o=ye(e)).length;r<i;r++)Me(o[r],a[r]);if(t)if(n)for(o=o||ye(e),a=a||ye(s),r=0,i=o.length;r<i;r++)Pe(o[r],a[r]);else Pe(e,s);return(a=ye(s,"script")).length>0&&ve(a,!u&&ye(e,"script")),s},cleanData:function(e){for(var t,n,r,i=w.event.special,o=0;void 0!==(n=e[o]);o++)if(Y(n)){if(t=n[J.expando]){if(t.events)for(r in t.events)i[r]?w.event.remove(n,r):w.removeEvent(n,r,t.handle);n[J.expando]=void 0}n[K.expando]&&(n[K.expando]=void 0)}}}),w.fn.extend({detach:function(e){return Ie(this,e,!0)},remove:function(e){return Ie(this,e)},text:function(e){return z(this,function(e){return void 0===e?w.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=e)})},null,e,arguments.length)},append:function(){return Re(this,arguments,function(e){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||Le(this,e).appendChild(e)})},prepend:function(){return Re(this,arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=Le(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return Re(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return Re(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},empty:function(){for(var e,t=0;null!=(e=this[t]);t++)1===e.nodeType&&(w.cleanData(ye(e,!1)),e.textContent="");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 z(this,function(e){var t=this[0]||{},n=0,r=this.length;if(void 0===e&&1===t.nodeType)return t.innerHTML;if("string"==typeof e&&!Ae.test(e)&&!ge[(de.exec(e)||["",""])[1].toLowerCase()]){e=w.htmlPrefilter(e);try{for(;n<r;n++)1===(t=this[n]||{}).nodeType&&(w.cleanData(ye(t,!1)),t.innerHTML=e);t=0}catch(e){}}t&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(){var e=[];return Re(this,arguments,function(t){var n=this.parentNode;w.inArray(this,e)<0&&(w.cleanData(ye(this)),n&&n.replaceChild(t,this))},e)}}),w.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,t){w.fn[e]=function(e){for(var n,r=[],i=w(e),o=i.length-1,a=0;a<=o;a++)n=a===o?this:this.clone(!0),w(i[a])[t](n),s.apply(r,n.get());return this.pushStack(r)}});var We=new RegExp("^("+re+")(?!px)[a-z%]+$","i"),$e=function(t){var n=t.ownerDocument.defaultView;return n&&n.opener||(n=e),n.getComputedStyle(t)},Be=new RegExp(oe.join("|"),"i");!function(){function t(){if(c){l.style.cssText="position:absolute;left:-11111px;width:60px;margin-top:1px;padding:0;border:0",c.style.cssText="position:relative;display:block;box-sizing:border-box;overflow:scroll;margin:auto;border:1px;padding:1px;width:60%;top:1%",be.appendChild(l).appendChild(c);var t=e.getComputedStyle(c);i="1%"!==t.top,u=12===n(t.marginLeft),c.style.right="60%",s=36===n(t.right),o=36===n(t.width),c.style.position="absolute",a=36===c.offsetWidth||"absolute",be.removeChild(l),c=null}}function n(e){return Math.round(parseFloat(e))}var i,o,a,s,u,l=r.createElement("div"),c=r.createElement("div");c.style&&(c.style.backgroundClip="content-box",c.cloneNode(!0).style.backgroundClip="",h.clearCloneStyle="content-box"===c.style.backgroundClip,w.extend(h,{boxSizingReliable:function(){return t(),o},pixelBoxStyles:function(){return t(),s},pixelPosition:function(){return t(),i},reliableMarginLeft:function(){return t(),u},scrollboxSize:function(){return t(),a}}))}();function Fe(e,t,n){var r,i,o,a,s=e.style;return(n=n||$e(e))&&(""!==(a=n.getPropertyValue(t)||n[t])||w.contains(e.ownerDocument,e)||(a=w.style(e,t)),!h.pixelBoxStyles()&&We.test(a)&&Be.test(t)&&(r=s.width,i=s.minWidth,o=s.maxWidth,s.minWidth=s.maxWidth=s.width=a,a=n.width,s.width=r,s.minWidth=i,s.maxWidth=o)),void 0!==a?a+"":a}function _e(e,t){return{get:function(){if(!e())return(this.get=t).apply(this,arguments);delete this.get}}}var ze=/^(none|table(?!-c[ea]).+)/,Xe=/^--/,Ue={position:"absolute",visibility:"hidden",display:"block"},Ve={letterSpacing:"0",fontWeight:"400"},Ge=["Webkit","Moz","ms"],Ye=r.createElement("div").style;function Qe(e){if(e in Ye)return e;var t=e[0].toUpperCase()+e.slice(1),n=Ge.length;while(n--)if((e=Ge[n]+t)in Ye)return e}function Je(e){var t=w.cssProps[e];return t||(t=w.cssProps[e]=Qe(e)||e),t}function Ke(e,t,n){var r=ie.exec(t);return r?Math.max(0,r[2]-(n||0))+(r[3]||"px"):t}function Ze(e,t,n,r,i,o){var a="width"===t?1:0,s=0,u=0;if(n===(r?"border":"content"))return 0;for(;a<4;a+=2)"margin"===n&&(u+=w.css(e,n+oe[a],!0,i)),r?("content"===n&&(u-=w.css(e,"padding"+oe[a],!0,i)),"margin"!==n&&(u-=w.css(e,"border"+oe[a]+"Width",!0,i))):(u+=w.css(e,"padding"+oe[a],!0,i),"padding"!==n?u+=w.css(e,"border"+oe[a]+"Width",!0,i):s+=w.css(e,"border"+oe[a]+"Width",!0,i));return!r&&o>=0&&(u+=Math.max(0,Math.ceil(e["offset"+t[0].toUpperCase()+t.slice(1)]-o-u-s-.5))),u}function et(e,t,n){var r=$e(e),i=Fe(e,t,r),o="border-box"===w.css(e,"boxSizing",!1,r),a=o;if(We.test(i)){if(!n)return i;i="auto"}return a=a&&(h.boxSizingReliable()||i===e.style[t]),("auto"===i||!parseFloat(i)&&"inline"===w.css(e,"display",!1,r))&&(i=e["offset"+t[0].toUpperCase()+t.slice(1)],a=!0),(i=parseFloat(i)||0)+Ze(e,t,n||(o?"border":"content"),a,r,i)+"px"}w.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=Fe(e,"opacity");return""===n?"1":n}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{},style:function(e,t,n,r){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var i,o,a,s=G(t),u=Xe.test(t),l=e.style;if(u||(t=Je(s)),a=w.cssHooks[t]||w.cssHooks[s],void 0===n)return a&&"get"in a&&void 0!==(i=a.get(e,!1,r))?i:l[t];"string"==(o=typeof n)&&(i=ie.exec(n))&&i[1]&&(n=ue(e,t,i),o="number"),null!=n&&n===n&&("number"===o&&(n+=i&&i[3]||(w.cssNumber[s]?"":"px")),h.clearCloneStyle||""!==n||0!==t.indexOf("background")||(l[t]="inherit"),a&&"set"in a&&void 0===(n=a.set(e,n,r))||(u?l.setProperty(t,n):l[t]=n))}},css:function(e,t,n,r){var i,o,a,s=G(t);return Xe.test(t)||(t=Je(s)),(a=w.cssHooks[t]||w.cssHooks[s])&&"get"in a&&(i=a.get(e,!0,n)),void 0===i&&(i=Fe(e,t,r)),"normal"===i&&t in Ve&&(i=Ve[t]),""===n||n?(o=parseFloat(i),!0===n||isFinite(o)?o||0:i):i}}),w.each(["height","width"],function(e,t){w.cssHooks[t]={get:function(e,n,r){if(n)return!ze.test(w.css(e,"display"))||e.getClientRects().length&&e.getBoundingClientRect().width?et(e,t,r):se(e,Ue,function(){return et(e,t,r)})},set:function(e,n,r){var i,o=$e(e),a="border-box"===w.css(e,"boxSizing",!1,o),s=r&&Ze(e,t,r,a,o);return a&&h.scrollboxSize()===o.position&&(s-=Math.ceil(e["offset"+t[0].toUpperCase()+t.slice(1)]-parseFloat(o[t])-Ze(e,t,"border",!1,o)-.5)),s&&(i=ie.exec(n))&&"px"!==(i[3]||"px")&&(e.style[t]=n,n=w.css(e,t)),Ke(e,n,s)}}}),w.cssHooks.marginLeft=_e(h.reliableMarginLeft,function(e,t){if(t)return(parseFloat(Fe(e,"marginLeft"))||e.getBoundingClientRect().left-se(e,{marginLeft:0},function(){return e.getBoundingClientRect().left}))+"px"}),w.each({margin:"",padding:"",border:"Width"},function(e,t){w.cssHooks[e+t]={expand:function(n){for(var r=0,i={},o="string"==typeof n?n.split(" "):[n];r<4;r++)i[e+oe[r]+t]=o[r]||o[r-2]||o[0];return i}},"margin"!==e&&(w.cssHooks[e+t].set=Ke)}),w.fn.extend({css:function(e,t){return z(this,function(e,t,n){var r,i,o={},a=0;if(Array.isArray(t)){for(r=$e(e),i=t.length;a<i;a++)o[t[a]]=w.css(e,t[a],!1,r);return o}return void 0!==n?w.style(e,t,n):w.css(e,t)},e,t,arguments.length>1)}});function tt(e,t,n,r,i){return new tt.prototype.init(e,t,n,r,i)}w.Tween=tt,tt.prototype={constructor:tt,init:function(e,t,n,r,i,o){this.elem=e,this.prop=n,this.easing=i||w.easing._default,this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=o||(w.cssNumber[n]?"":"px")},cur:function(){var e=tt.propHooks[this.prop];return e&&e.get?e.get(this):tt.propHooks._default.get(this)},run:function(e){var t,n=tt.propHooks[this.prop];return this.options.duration?this.pos=t=w.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):this.pos=t=e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):tt.propHooks._default.set(this),this}},tt.prototype.init.prototype=tt.prototype,tt.propHooks={_default:{get:function(e){var t;return 1!==e.elem.nodeType||null!=e.elem[e.prop]&&null==e.elem.style[e.prop]?e.elem[e.prop]:(t=w.css(e.elem,e.prop,""))&&"auto"!==t?t:0},set:function(e){w.fx.step[e.prop]?w.fx.step[e.prop](e):1!==e.elem.nodeType||null==e.elem.style[w.cssProps[e.prop]]&&!w.cssHooks[e.prop]?e.elem[e.prop]=e.now:w.style(e.elem,e.prop,e.now+e.unit)}}},tt.propHooks.scrollTop=tt.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},_default:"swing"},w.fx=tt.prototype.init,w.fx.step={};var nt,rt,it=/^(?:toggle|show|hide)$/,ot=/queueHooks$/;function at(){rt&&(!1===r.hidden&&e.requestAnimationFrame?e.requestAnimationFrame(at):e.setTimeout(at,w.fx.interval),w.fx.tick())}function st(){return e.setTimeout(function(){nt=void 0}),nt=Date.now()}function ut(e,t){var n,r=0,i={height:e};for(t=t?1:0;r<4;r+=2-t)i["margin"+(n=oe[r])]=i["padding"+n]=e;return t&&(i.opacity=i.width=e),i}function lt(e,t,n){for(var r,i=(pt.tweeners[t]||[]).concat(pt.tweeners["*"]),o=0,a=i.length;o<a;o++)if(r=i[o].call(n,t,e))return r}function ct(e,t,n){var r,i,o,a,s,u,l,c,f="width"in t||"height"in t,p=this,d={},h=e.style,g=e.nodeType&&ae(e),y=J.get(e,"fxshow");n.queue||(null==(a=w._queueHooks(e,"fx")).unqueued&&(a.unqueued=0,s=a.empty.fire,a.empty.fire=function(){a.unqueued||s()}),a.unqueued++,p.always(function(){p.always(function(){a.unqueued--,w.queue(e,"fx").length||a.empty.fire()})}));for(r in t)if(i=t[r],it.test(i)){if(delete t[r],o=o||"toggle"===i,i===(g?"hide":"show")){if("show"!==i||!y||void 0===y[r])continue;g=!0}d[r]=y&&y[r]||w.style(e,r)}if((u=!w.isEmptyObject(t))||!w.isEmptyObject(d)){f&&1===e.nodeType&&(n.overflow=[h.overflow,h.overflowX,h.overflowY],null==(l=y&&y.display)&&(l=J.get(e,"display")),"none"===(c=w.css(e,"display"))&&(l?c=l:(fe([e],!0),l=e.style.display||l,c=w.css(e,"display"),fe([e]))),("inline"===c||"inline-block"===c&&null!=l)&&"none"===w.css(e,"float")&&(u||(p.done(function(){h.display=l}),null==l&&(c=h.display,l="none"===c?"":c)),h.display="inline-block")),n.overflow&&(h.overflow="hidden",p.always(function(){h.overflow=n.overflow[0],h.overflowX=n.overflow[1],h.overflowY=n.overflow[2]})),u=!1;for(r in d)u||(y?"hidden"in y&&(g=y.hidden):y=J.access(e,"fxshow",{display:l}),o&&(y.hidden=!g),g&&fe([e],!0),p.done(function(){g||fe([e]),J.remove(e,"fxshow");for(r in d)w.style(e,r,d[r])})),u=lt(g?y[r]:0,r,p),r in y||(y[r]=u.start,g&&(u.end=u.start,u.start=0))}}function ft(e,t){var n,r,i,o,a;for(n in e)if(r=G(n),i=t[r],o=e[n],Array.isArray(o)&&(i=o[1],o=e[n]=o[0]),n!==r&&(e[r]=o,delete e[n]),(a=w.cssHooks[r])&&"expand"in a){o=a.expand(o),delete e[r];for(n in o)n in e||(e[n]=o[n],t[n]=i)}else t[r]=i}function pt(e,t,n){var r,i,o=0,a=pt.prefilters.length,s=w.Deferred().always(function(){delete u.elem}),u=function(){if(i)return!1;for(var t=nt||st(),n=Math.max(0,l.startTime+l.duration-t),r=1-(n/l.duration||0),o=0,a=l.tweens.length;o<a;o++)l.tweens[o].run(r);return s.notifyWith(e,[l,r,n]),r<1&&a?n:(a||s.notifyWith(e,[l,1,0]),s.resolveWith(e,[l]),!1)},l=s.promise({elem:e,props:w.extend({},t),opts:w.extend(!0,{specialEasing:{},easing:w.easing._default},n),originalProperties:t,originalOptions:n,startTime:nt||st(),duration:n.duration,tweens:[],createTween:function(t,n){var r=w.Tween(e,l.opts,t,n,l.opts.specialEasing[t]||l.opts.easing);return l.tweens.push(r),r},stop:function(t){var n=0,r=t?l.tweens.length:0;if(i)return this;for(i=!0;n<r;n++)l.tweens[n].run(1);return t?(s.notifyWith(e,[l,1,0]),s.resolveWith(e,[l,t])):s.rejectWith(e,[l,t]),this}}),c=l.props;for(ft(c,l.opts.specialEasing);o<a;o++)if(r=pt.prefilters[o].call(l,e,c,l.opts))return g(r.stop)&&(w._queueHooks(l.elem,l.opts.queue).stop=r.stop.bind(r)),r;return w.map(c,lt,l),g(l.opts.start)&&l.opts.start.call(e,l),l.progress(l.opts.progress).done(l.opts.done,l.opts.complete).fail(l.opts.fail).always(l.opts.always),w.fx.timer(w.extend(u,{elem:e,anim:l,queue:l.opts.queue})),l}w.Animation=w.extend(pt,{tweeners:{"*":[function(e,t){var n=this.createTween(e,t);return ue(n.elem,e,ie.exec(t),n),n}]},tweener:function(e,t){g(e)?(t=e,e=["*"]):e=e.match(M);for(var n,r=0,i=e.length;r<i;r++)n=e[r],pt.tweeners[n]=pt.tweeners[n]||[],pt.tweeners[n].unshift(t)},prefilters:[ct],prefilter:function(e,t){t?pt.prefilters.unshift(e):pt.prefilters.push(e)}}),w.speed=function(e,t,n){var r=e&&"object"==typeof e?w.extend({},e):{complete:n||!n&&t||g(e)&&e,duration:e,easing:n&&t||t&&!g(t)&&t};return w.fx.off?r.duration=0:"number"!=typeof r.duration&&(r.duration in w.fx.speeds?r.duration=w.fx.speeds[r.duration]:r.duration=w.fx.speeds._default),null!=r.queue&&!0!==r.queue||(r.queue="fx"),r.old=r.complete,r.complete=function(){g(r.old)&&r.old.call(this),r.queue&&w.dequeue(this,r.queue)},r},w.fn.extend({fadeTo:function(e,t,n,r){return this.filter(ae).css("opacity",0).show().end().animate({opacity:t},e,n,r)},animate:function(e,t,n,r){var i=w.isEmptyObject(e),o=w.speed(t,n,r),a=function(){var t=pt(this,w.extend({},e),o);(i||J.get(this,"finish"))&&t.stop(!0)};return a.finish=a,i||!1===o.queue?this.each(a):this.queue(o.queue,a)},stop:function(e,t,n){var r=function(e){var t=e.stop;delete e.stop,t(n)};return"string"!=typeof e&&(n=t,t=e,e=void 0),t&&!1!==e&&this.queue(e||"fx",[]),this.each(function(){var t=!0,i=null!=e&&e+"queueHooks",o=w.timers,a=J.get(this);if(i)a[i]&&a[i].stop&&r(a[i]);else for(i in a)a[i]&&a[i].stop&&ot.test(i)&&r(a[i]);for(i=o.length;i--;)o[i].elem!==this||null!=e&&o[i].queue!==e||(o[i].anim.stop(n),t=!1,o.splice(i,1));!t&&n||w.dequeue(this,e)})},finish:function(e){return!1!==e&&(e=e||"fx"),this.each(function(){var t,n=J.get(this),r=n[e+"queue"],i=n[e+"queueHooks"],o=w.timers,a=r?r.length:0;for(n.finish=!0,w.queue(this,e,[]),i&&i.stop&&i.stop.call(this,!0),t=o.length;t--;)o[t].elem===this&&o[t].queue===e&&(o[t].anim.stop(!0),o.splice(t,1));for(t=0;t<a;t++)r[t]&&r[t].finish&&r[t].finish.call(this);delete n.finish})}}),w.each(["toggle","show","hide"],function(e,t){var n=w.fn[t];w.fn[t]=function(e,r,i){return null==e||"boolean"==typeof e?n.apply(this,arguments):this.animate(ut(t,!0),e,r,i)}}),w.each({slideDown:ut("show"),slideUp:ut("hide"),slideToggle:ut("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(e,t){w.fn[e]=function(e,n,r){return this.animate(t,e,n,r)}}),w.timers=[],w.fx.tick=function(){var e,t=0,n=w.timers;for(nt=Date.now();t<n.length;t++)(e=n[t])()||n[t]!==e||n.splice(t--,1);n.length||w.fx.stop(),nt=void 0},w.fx.timer=function(e){w.timers.push(e),w.fx.start()},w.fx.interval=13,w.fx.start=function(){rt||(rt=!0,at())},w.fx.stop=function(){rt=null},w.fx.speeds={slow:600,fast:200,_default:400},w.fn.delay=function(t,n){return t=w.fx?w.fx.speeds[t]||t:t,n=n||"fx",this.queue(n,function(n,r){var i=e.setTimeout(n,t);r.stop=function(){e.clearTimeout(i)}})},function(){var e=r.createElement("input"),t=r.createElement("select").appendChild(r.createElement("option"));e.type="checkbox",h.checkOn=""!==e.value,h.optSelected=t.selected,(e=r.createElement("input")).value="t",e.type="radio",h.radioValue="t"===e.value}();var dt,ht=w.expr.attrHandle;w.fn.extend({attr:function(e,t){return z(this,w.attr,e,t,arguments.length>1)},removeAttr:function(e){return this.each(function(){w.removeAttr(this,e)})}}),w.extend({attr:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return"undefined"==typeof e.getAttribute?w.prop(e,t,n):(1===o&&w.isXMLDoc(e)||(i=w.attrHooks[t.toLowerCase()]||(w.expr.match.bool.test(t)?dt:void 0)),void 0!==n?null===n?void w.removeAttr(e,t):i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:(e.setAttribute(t,n+""),n):i&&"get"in i&&null!==(r=i.get(e,t))?r:null==(r=w.find.attr(e,t))?void 0:r)},attrHooks:{type:{set:function(e,t){if(!h.radioValue&&"radio"===t&&N(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},removeAttr:function(e,t){var n,r=0,i=t&&t.match(M);if(i&&1===e.nodeType)while(n=i[r++])e.removeAttribute(n)}}),dt={set:function(e,t,n){return!1===t?w.removeAttr(e,n):e.setAttribute(n,n),n}},w.each(w.expr.match.bool.source.match(/\w+/g),function(e,t){var n=ht[t]||w.find.attr;ht[t]=function(e,t,r){var i,o,a=t.toLowerCase();return r||(o=ht[a],ht[a]=i,i=null!=n(e,t,r)?a:null,ht[a]=o),i}});var gt=/^(?:input|select|textarea|button)$/i,yt=/^(?:a|area)$/i;w.fn.extend({prop:function(e,t){return z(this,w.prop,e,t,arguments.length>1)},removeProp:function(e){return this.each(function(){delete this[w.propFix[e]||e]})}}),w.extend({prop:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return 1===o&&w.isXMLDoc(e)||(t=w.propFix[t]||t,i=w.propHooks[t]),void 0!==n?i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:e[t]=n:i&&"get"in i&&null!==(r=i.get(e,t))?r:e[t]},propHooks:{tabIndex:{get:function(e){var t=w.find.attr(e,"tabindex");return t?parseInt(t,10):gt.test(e.nodeName)||yt.test(e.nodeName)&&e.href?0:-1}}},propFix:{"for":"htmlFor","class":"className"}}),h.optSelected||(w.propHooks.selected={get:function(e){var t=e.parentNode;return t&&t.parentNode&&t.parentNode.selectedIndex,null},set:function(e){var t=e.parentNode;t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex)}}),w.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){w.propFix[this.toLowerCase()]=this});function vt(e){return(e.match(M)||[]).join(" ")}function mt(e){return e.getAttribute&&e.getAttribute("class")||""}function xt(e){return Array.isArray(e)?e:"string"==typeof e?e.match(M)||[]:[]}w.fn.extend({addClass:function(e){var t,n,r,i,o,a,s,u=0;if(g(e))return this.each(function(t){w(this).addClass(e.call(this,t,mt(this)))});if((t=xt(e)).length)while(n=this[u++])if(i=mt(n),r=1===n.nodeType&&" "+vt(i)+" "){a=0;while(o=t[a++])r.indexOf(" "+o+" ")<0&&(r+=o+" ");i!==(s=vt(r))&&n.setAttribute("class",s)}return this},removeClass:function(e){var t,n,r,i,o,a,s,u=0;if(g(e))return this.each(function(t){w(this).removeClass(e.call(this,t,mt(this)))});if(!arguments.length)return this.attr("class","");if((t=xt(e)).length)while(n=this[u++])if(i=mt(n),r=1===n.nodeType&&" "+vt(i)+" "){a=0;while(o=t[a++])while(r.indexOf(" "+o+" ")>-1)r=r.replace(" "+o+" "," ");i!==(s=vt(r))&&n.setAttribute("class",s)}return this},toggleClass:function(e,t){var n=typeof e,r="string"===n||Array.isArray(e);return"boolean"==typeof t&&r?t?this.addClass(e):this.removeClass(e):g(e)?this.each(function(n){w(this).toggleClass(e.call(this,n,mt(this),t),t)}):this.each(function(){var t,i,o,a;if(r){i=0,o=w(this),a=xt(e);while(t=a[i++])o.hasClass(t)?o.removeClass(t):o.addClass(t)}else void 0!==e&&"boolean"!==n||((t=mt(this))&&J.set(this,"__className__",t),this.setAttribute&&this.setAttribute("class",t||!1===e?"":J.get(this,"__className__")||""))})},hasClass:function(e){var t,n,r=0;t=" "+e+" ";while(n=this[r++])if(1===n.nodeType&&(" "+vt(mt(n))+" ").indexOf(t)>-1)return!0;return!1}});var bt=/\r/g;w.fn.extend({val:function(e){var t,n,r,i=this[0];{if(arguments.length)return r=g(e),this.each(function(n){var i;1===this.nodeType&&(null==(i=r?e.call(this,n,w(this).val()):e)?i="":"number"==typeof i?i+="":Array.isArray(i)&&(i=w.map(i,function(e){return null==e?"":e+""})),(t=w.valHooks[this.type]||w.valHooks[this.nodeName.toLowerCase()])&&"set"in t&&void 0!==t.set(this,i,"value")||(this.value=i))});if(i)return(t=w.valHooks[i.type]||w.valHooks[i.nodeName.toLowerCase()])&&"get"in t&&void 0!==(n=t.get(i,"value"))?n:"string"==typeof(n=i.value)?n.replace(bt,""):null==n?"":n}}}),w.extend({valHooks:{option:{get:function(e){var t=w.find.attr(e,"value");return null!=t?t:vt(w.text(e))}},select:{get:function(e){var t,n,r,i=e.options,o=e.selectedIndex,a="select-one"===e.type,s=a?null:[],u=a?o+1:i.length;for(r=o<0?u:a?o:0;r<u;r++)if(((n=i[r]).selected||r===o)&&!n.disabled&&(!n.parentNode.disabled||!N(n.parentNode,"optgroup"))){if(t=w(n).val(),a)return t;s.push(t)}return s},set:function(e,t){var n,r,i=e.options,o=w.makeArray(t),a=i.length;while(a--)((r=i[a]).selected=w.inArray(w.valHooks.option.get(r),o)>-1)&&(n=!0);return n||(e.selectedIndex=-1),o}}}}),w.each(["radio","checkbox"],function(){w.valHooks[this]={set:function(e,t){if(Array.isArray(t))return e.checked=w.inArray(w(e).val(),t)>-1}},h.checkOn||(w.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})}),h.focusin="onfocusin"in e;var wt=/^(?:focusinfocus|focusoutblur)$/,Tt=function(e){e.stopPropagation()};w.extend(w.event,{trigger:function(t,n,i,o){var a,s,u,l,c,p,d,h,v=[i||r],m=f.call(t,"type")?t.type:t,x=f.call(t,"namespace")?t.namespace.split("."):[];if(s=h=u=i=i||r,3!==i.nodeType&&8!==i.nodeType&&!wt.test(m+w.event.triggered)&&(m.indexOf(".")>-1&&(m=(x=m.split(".")).shift(),x.sort()),c=m.indexOf(":")<0&&"on"+m,t=t[w.expando]?t:new w.Event(m,"object"==typeof t&&t),t.isTrigger=o?2:3,t.namespace=x.join("."),t.rnamespace=t.namespace?new RegExp("(^|\\.)"+x.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,t.result=void 0,t.target||(t.target=i),n=null==n?[t]:w.makeArray(n,[t]),d=w.event.special[m]||{},o||!d.trigger||!1!==d.trigger.apply(i,n))){if(!o&&!d.noBubble&&!y(i)){for(l=d.delegateType||m,wt.test(l+m)||(s=s.parentNode);s;s=s.parentNode)v.push(s),u=s;u===(i.ownerDocument||r)&&v.push(u.defaultView||u.parentWindow||e)}a=0;while((s=v[a++])&&!t.isPropagationStopped())h=s,t.type=a>1?l:d.bindType||m,(p=(J.get(s,"events")||{})[t.type]&&J.get(s,"handle"))&&p.apply(s,n),(p=c&&s[c])&&p.apply&&Y(s)&&(t.result=p.apply(s,n),!1===t.result&&t.preventDefault());return t.type=m,o||t.isDefaultPrevented()||d._default&&!1!==d._default.apply(v.pop(),n)||!Y(i)||c&&g(i[m])&&!y(i)&&((u=i[c])&&(i[c]=null),w.event.triggered=m,t.isPropagationStopped()&&h.addEventListener(m,Tt),i[m](),t.isPropagationStopped()&&h.removeEventListener(m,Tt),w.event.triggered=void 0,u&&(i[c]=u)),t.result}},simulate:function(e,t,n){var r=w.extend(new w.Event,n,{type:e,isSimulated:!0});w.event.trigger(r,null,t)}}),w.fn.extend({trigger:function(e,t){return this.each(function(){w.event.trigger(e,t,this)})},triggerHandler:function(e,t){var n=this[0];if(n)return w.event.trigger(e,t,n,!0)}}),h.focusin||w.each({focus:"focusin",blur:"focusout"},function(e,t){var n=function(e){w.event.simulate(t,e.target,w.event.fix(e))};w.event.special[t]={setup:function(){var r=this.ownerDocument||this,i=J.access(r,t);i||r.addEventListener(e,n,!0),J.access(r,t,(i||0)+1)},teardown:function(){var r=this.ownerDocument||this,i=J.access(r,t)-1;i?J.access(r,t,i):(r.removeEventListener(e,n,!0),J.remove(r,t))}}});var Ct=e.location,Et=Date.now(),kt=/\?/;w.parseXML=function(t){var n;if(!t||"string"!=typeof t)return null;try{n=(new e.DOMParser).parseFromString(t,"text/xml")}catch(e){n=void 0}return n&&!n.getElementsByTagName("parsererror").length||w.error("Invalid XML: "+t),n};var St=/\[\]$/,Dt=/\r?\n/g,Nt=/^(?:submit|button|image|reset|file)$/i,At=/^(?:input|select|textarea|keygen)/i;function jt(e,t,n,r){var i;if(Array.isArray(t))w.each(t,function(t,i){n||St.test(e)?r(e,i):jt(e+"["+("object"==typeof i&&null!=i?t:"")+"]",i,n,r)});else if(n||"object"!==x(t))r(e,t);else for(i in t)jt(e+"["+i+"]",t[i],n,r)}w.param=function(e,t){var n,r=[],i=function(e,t){var n=g(t)?t():t;r[r.length]=encodeURIComponent(e)+"="+encodeURIComponent(null==n?"":n)};if(Array.isArray(e)||e.jquery&&!w.isPlainObject(e))w.each(e,function(){i(this.name,this.value)});else for(n in e)jt(n,e[n],t,i);return r.join("&")},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")&&At.test(this.nodeName)&&!Nt.test(e)&&(this.checked||!pe.test(e))}).map(function(e,t){var n=w(this).val();return null==n?null:Array.isArray(n)?w.map(n,function(e){return{name:t.name,value:e.replace(Dt,"\r\n")}}):{name:t.name,value:n.replace(Dt,"\r\n")}}).get()}});var qt=/%20/g,Lt=/#.*$/,Ht=/([?&])_=[^&]*/,Ot=/^(.*?):[ \t]*([^\r\n]*)$/gm,Pt=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Mt=/^(?:GET|HEAD)$/,Rt=/^\/\//,It={},Wt={},$t="*/".concat("*"),Bt=r.createElement("a");Bt.href=Ct.href;function Ft(e){return function(t,n){"string"!=typeof t&&(n=t,t="*");var r,i=0,o=t.toLowerCase().match(M)||[];if(g(n))while(r=o[i++])"+"===r[0]?(r=r.slice(1)||"*",(e[r]=e[r]||[]).unshift(n)):(e[r]=e[r]||[]).push(n)}}function _t(e,t,n,r){var i={},o=e===Wt;function a(s){var u;return i[s]=!0,w.each(e[s]||[],function(e,s){var l=s(t,n,r);return"string"!=typeof l||o||i[l]?o?!(u=l):void 0:(t.dataTypes.unshift(l),a(l),!1)}),u}return a(t.dataTypes[0])||!i["*"]&&a("*")}function zt(e,t){var n,r,i=w.ajaxSettings.flatOptions||{};for(n in t)void 0!==t[n]&&((i[n]?e:r||(r={}))[n]=t[n]);return r&&w.extend(!0,e,r),e}function Xt(e,t,n){var r,i,o,a,s=e.contents,u=e.dataTypes;while("*"===u[0])u.shift(),void 0===r&&(r=e.mimeType||t.getResponseHeader("Content-Type"));if(r)for(i in s)if(s[i]&&s[i].test(r)){u.unshift(i);break}if(u[0]in n)o=u[0];else{for(i in n){if(!u[0]||e.converters[i+" "+u[0]]){o=i;break}a||(a=i)}o=o||a}if(o)return o!==u[0]&&u.unshift(o),n[o]}function Ut(e,t,n,r){var i,o,a,s,u,l={},c=e.dataTypes.slice();if(c[1])for(a in e.converters)l[a.toLowerCase()]=e.converters[a];o=c.shift();while(o)if(e.responseFields[o]&&(n[e.responseFields[o]]=t),!u&&r&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),u=o,o=c.shift())if("*"===o)o=u;else if("*"!==u&&u!==o){if(!(a=l[u+" "+o]||l["* "+o]))for(i in l)if((s=i.split(" "))[1]===o&&(a=l[u+" "+s[0]]||l["* "+s[0]])){!0===a?a=l[i]:!0!==l[i]&&(o=s[0],c.unshift(s[1]));break}if(!0!==a)if(a&&e["throws"])t=a(t);else try{t=a(t)}catch(e){return{state:"parsererror",error:a?e:"No conversion from "+u+" to "+o}}}return{state:"success",data:t}}w.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:Ct.href,type:"GET",isLocal:Pt.test(Ct.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":$t,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":w.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?zt(zt(e,w.ajaxSettings),t):zt(w.ajaxSettings,e)},ajaxPrefilter:Ft(It),ajaxTransport:Ft(Wt),ajax:function(t,n){"object"==typeof t&&(n=t,t=void 0),n=n||{};var i,o,a,s,u,l,c,f,p,d,h=w.ajaxSetup({},n),g=h.context||h,y=h.context&&(g.nodeType||g.jquery)?w(g):w.event,v=w.Deferred(),m=w.Callbacks("once memory"),x=h.statusCode||{},b={},T={},C="canceled",E={readyState:0,getResponseHeader:function(e){var t;if(c){if(!s){s={};while(t=Ot.exec(a))s[t[1].toLowerCase()]=t[2]}t=s[e.toLowerCase()]}return null==t?null:t},getAllResponseHeaders:function(){return c?a:null},setRequestHeader:function(e,t){return null==c&&(e=T[e.toLowerCase()]=T[e.toLowerCase()]||e,b[e]=t),this},overrideMimeType:function(e){return null==c&&(h.mimeType=e),this},statusCode:function(e){var t;if(e)if(c)E.always(e[E.status]);else for(t in e)x[t]=[x[t],e[t]];return this},abort:function(e){var t=e||C;return i&&i.abort(t),k(0,t),this}};if(v.promise(E),h.url=((t||h.url||Ct.href)+"").replace(Rt,Ct.protocol+"//"),h.type=n.method||n.type||h.method||h.type,h.dataTypes=(h.dataType||"*").toLowerCase().match(M)||[""],null==h.crossDomain){l=r.createElement("a");try{l.href=h.url,l.href=l.href,h.crossDomain=Bt.protocol+"//"+Bt.host!=l.protocol+"//"+l.host}catch(e){h.crossDomain=!0}}if(h.data&&h.processData&&"string"!=typeof h.data&&(h.data=w.param(h.data,h.traditional)),_t(It,h,n,E),c)return E;(f=w.event&&h.global)&&0==w.active++&&w.event.trigger("ajaxStart"),h.type=h.type.toUpperCase(),h.hasContent=!Mt.test(h.type),o=h.url.replace(Lt,""),h.hasContent?h.data&&h.processData&&0===(h.contentType||"").indexOf("application/x-www-form-urlencoded")&&(h.data=h.data.replace(qt,"+")):(d=h.url.slice(o.length),h.data&&(h.processData||"string"==typeof h.data)&&(o+=(kt.test(o)?"&":"?")+h.data,delete h.data),!1===h.cache&&(o=o.replace(Ht,"$1"),d=(kt.test(o)?"&":"?")+"_="+Et+++d),h.url=o+d),h.ifModified&&(w.lastModified[o]&&E.setRequestHeader("If-Modified-Since",w.lastModified[o]),w.etag[o]&&E.setRequestHeader("If-None-Match",w.etag[o])),(h.data&&h.hasContent&&!1!==h.contentType||n.contentType)&&E.setRequestHeader("Content-Type",h.contentType),E.setRequestHeader("Accept",h.dataTypes[0]&&h.accepts[h.dataTypes[0]]?h.accepts[h.dataTypes[0]]+("*"!==h.dataTypes[0]?", "+$t+"; q=0.01":""):h.accepts["*"]);for(p in h.headers)E.setRequestHeader(p,h.headers[p]);if(h.beforeSend&&(!1===h.beforeSend.call(g,E,h)||c))return E.abort();if(C="abort",m.add(h.complete),E.done(h.success),E.fail(h.error),i=_t(Wt,h,n,E)){if(E.readyState=1,f&&y.trigger("ajaxSend",[E,h]),c)return E;h.async&&h.timeout>0&&(u=e.setTimeout(function(){E.abort("timeout")},h.timeout));try{c=!1,i.send(b,k)}catch(e){if(c)throw e;k(-1,e)}}else k(-1,"No Transport");function k(t,n,r,s){var l,p,d,b,T,C=n;c||(c=!0,u&&e.clearTimeout(u),i=void 0,a=s||"",E.readyState=t>0?4:0,l=t>=200&&t<300||304===t,r&&(b=Xt(h,E,r)),b=Ut(h,b,E,l),l?(h.ifModified&&((T=E.getResponseHeader("Last-Modified"))&&(w.lastModified[o]=T),(T=E.getResponseHeader("etag"))&&(w.etag[o]=T)),204===t||"HEAD"===h.type?C="nocontent":304===t?C="notmodified":(C=b.state,p=b.data,l=!(d=b.error))):(d=C,!t&&C||(C="error",t<0&&(t=0))),E.status=t,E.statusText=(n||C)+"",l?v.resolveWith(g,[p,C,E]):v.rejectWith(g,[E,C,d]),E.statusCode(x),x=void 0,f&&y.trigger(l?"ajaxSuccess":"ajaxError",[E,h,l?p:d]),m.fireWith(g,[E,C]),f&&(y.trigger("ajaxComplete",[E,h]),--w.active||w.event.trigger("ajaxStop")))}return E},getJSON:function(e,t,n){return w.get(e,t,n,"json")},getScript:function(e,t){return w.get(e,void 0,t,"script")}}),w.each(["get","post"],function(e,t){w[t]=function(e,n,r,i){return g(n)&&(i=i||r,r=n,n=void 0),w.ajax(w.extend({url:e,type:t,dataType:i,data:n,success:r},w.isPlainObject(e)&&e))}}),w._evalUrl=function(e){return w.ajax({url:e,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,"throws":!0})},w.fn.extend({wrapAll:function(e){var t;return this[0]&&(g(e)&&(e=e.call(this[0])),t=w(e,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstElementChild)e=e.firstElementChild;return e}).append(this)),this},wrapInner:function(e){return g(e)?this.each(function(t){w(this).wrapInner(e.call(this,t))}):this.each(function(){var t=w(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)})},wrap:function(e){var t=g(e);return this.each(function(n){w(this).wrapAll(t?e.call(this,n):e)})},unwrap:function(e){return this.parent(e).not("body").each(function(){w(this).replaceWith(this.childNodes)}),this}}),w.expr.pseudos.hidden=function(e){return!w.expr.pseudos.visible(e)},w.expr.pseudos.visible=function(e){return!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)},w.ajaxSettings.xhr=function(){try{return new e.XMLHttpRequest}catch(e){}};var Vt={0:200,1223:204},Gt=w.ajaxSettings.xhr();h.cors=!!Gt&&"withCredentials"in Gt,h.ajax=Gt=!!Gt,w.ajaxTransport(function(t){var n,r;if(h.cors||Gt&&!t.crossDomain)return{send:function(i,o){var a,s=t.xhr();if(s.open(t.type,t.url,t.async,t.username,t.password),t.xhrFields)for(a in t.xhrFields)s[a]=t.xhrFields[a];t.mimeType&&s.overrideMimeType&&s.overrideMimeType(t.mimeType),t.crossDomain||i["X-Requested-With"]||(i["X-Requested-With"]="XMLHttpRequest");for(a in i)s.setRequestHeader(a,i[a]);n=function(e){return function(){n&&(n=r=s.onload=s.onerror=s.onabort=s.ontimeout=s.onreadystatechange=null,"abort"===e?s.abort():"error"===e?"number"!=typeof s.status?o(0,"error"):o(s.status,s.statusText):o(Vt[s.status]||s.status,s.statusText,"text"!==(s.responseType||"text")||"string"!=typeof s.responseText?{binary:s.response}:{text:s.responseText},s.getAllResponseHeaders()))}},s.onload=n(),r=s.onerror=s.ontimeout=n("error"),void 0!==s.onabort?s.onabort=r:s.onreadystatechange=function(){4===s.readyState&&e.setTimeout(function(){n&&r()})},n=n("abort");try{s.send(t.hasContent&&t.data||null)}catch(e){if(n)throw e}},abort:function(){n&&n()}}}),w.ajaxPrefilter(function(e){e.crossDomain&&(e.contents.script=!1)}),w.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},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")}),w.ajaxTransport("script",function(e){if(e.crossDomain){var t,n;return{send:function(i,o){t=w("<script>").prop({charset:e.scriptCharset,src:e.url}).on("load error",n=function(e){t.remove(),n=null,e&&o("error"===e.type?404:200,e.type)}),r.head.appendChild(t[0])},abort:function(){n&&n()}}}});var Yt=[],Qt=/(=)\?(?=&|$)|\?\?/;w.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Yt.pop()||w.expando+"_"+Et++;return this[e]=!0,e}}),w.ajaxPrefilter("json jsonp",function(t,n,r){var i,o,a,s=!1!==t.jsonp&&(Qt.test(t.url)?"url":"string"==typeof t.data&&0===(t.contentType||"").indexOf("application/x-www-form-urlencoded")&&Qt.test(t.data)&&"data");if(s||"jsonp"===t.dataTypes[0])return i=t.jsonpCallback=g(t.jsonpCallback)?t.jsonpCallback():t.jsonpCallback,s?t[s]=t[s].replace(Qt,"$1"+i):!1!==t.jsonp&&(t.url+=(kt.test(t.url)?"&":"?")+t.jsonp+"="+i),t.converters["script json"]=function(){return a||w.error(i+" was not called"),a[0]},t.dataTypes[0]="json",o=e[i],e[i]=function(){a=arguments},r.always(function(){void 0===o?w(e).removeProp(i):e[i]=o,t[i]&&(t.jsonpCallback=n.jsonpCallback,Yt.push(i)),a&&g(o)&&o(a[0]),a=o=void 0}),"script"}),h.createHTMLDocument=function(){var e=r.implementation.createHTMLDocument("").body;return e.innerHTML="<form></form><form></form>",2===e.childNodes.length}(),w.parseHTML=function(e,t,n){if("string"!=typeof e)return[];"boolean"==typeof t&&(n=t,t=!1);var i,o,a;return t||(h.createHTMLDocument?((i=(t=r.implementation.createHTMLDocument("")).createElement("base")).href=r.location.href,t.head.appendChild(i)):t=r),o=A.exec(e),a=!n&&[],o?[t.createElement(o[1])]:(o=xe([e],t,a),a&&a.length&&w(a).remove(),w.merge([],o.childNodes))},w.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return s>-1&&(r=vt(e.slice(s)),e=e.slice(0,s)),g(t)?(n=t,t=void 0):t&&"object"==typeof t&&(i="POST"),a.length>0&&w.ajax({url:e,type:i||"GET",dataType:"html",data:t}).done(function(e){o=arguments,a.html(r?w("<div>").append(w.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},w.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){w.fn[t]=function(e){return this.on(t,e)}}),w.expr.pseudos.animated=function(e){return w.grep(w.timers,function(t){return e===t.elem}).length},w.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l,c=w.css(e,"position"),f=w(e),p={};"static"===c&&(e.style.position="relative"),s=f.offset(),o=w.css(e,"top"),u=w.css(e,"left"),(l=("absolute"===c||"fixed"===c)&&(o+u).indexOf("auto")>-1)?(a=(r=f.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),g(t)&&(t=t.call(e,n,w.extend({},s))),null!=t.top&&(p.top=t.top-s.top+a),null!=t.left&&(p.left=t.left-s.left+i),"using"in t?t.using.call(e,p):f.css(p)}},w.fn.extend({offset:function(e){if(arguments.length)return void 0===e?this:this.each(function(t){w.offset.setOffset(this,e,t)});var t,n,r=this[0];if(r)return r.getClientRects().length?(t=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:t.top+n.pageYOffset,left:t.left+n.pageXOffset}):{top:0,left:0}},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===w.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===w.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=w(e).offset()).top+=w.css(e,"borderTopWidth",!0),i.left+=w.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-w.css(r,"marginTop",!0),left:t.left-i.left-w.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===w.css(e,"position"))e=e.offsetParent;return e||be})}}),w.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(e,t){var n="pageYOffset"===t;w.fn[e]=function(r){return z(this,function(e,r,i){var o;if(y(e)?o=e:9===e.nodeType&&(o=e.defaultView),void 0===i)return o?o[t]:e[r];o?o.scrollTo(n?o.pageXOffset:i,n?i:o.pageYOffset):e[r]=i},e,r,arguments.length)}}),w.each(["top","left"],function(e,t){w.cssHooks[t]=_e(h.pixelPosition,function(e,n){if(n)return n=Fe(e,t),We.test(n)?w(e).position()[t]+"px":n})}),w.each({Height:"height",Width:"width"},function(e,t){w.each({padding:"inner"+e,content:t,"":"outer"+e},function(n,r){w.fn[r]=function(i,o){var a=arguments.length&&(n||"boolean"!=typeof i),s=n||(!0===i||!0===o?"margin":"border");return z(this,function(t,n,i){var o;return y(t)?0===r.indexOf("outer")?t["inner"+e]:t.document.documentElement["client"+e]:9===t.nodeType?(o=t.documentElement,Math.max(t.body["scroll"+e],o["scroll"+e],t.body["offset"+e],o["offset"+e],o["client"+e])):void 0===i?w.css(t,n,s):w.style(t,n,i,s)},t,a?i:void 0,a)}})}),w.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,t){w.fn[t]=function(e,n){return arguments.length>0?this.on(t,null,e,n):this.trigger(t)}}),w.fn.extend({hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),w.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)}}),w.proxy=function(e,t){var n,r,i;if("string"==typeof t&&(n=e[t],t=e,e=n),g(e))return r=o.call(arguments,2),i=function(){return e.apply(t||this,r.concat(o.call(arguments)))},i.guid=e.guid=e.guid||w.guid++,i},w.holdReady=function(e){e?w.readyWait++:w.ready(!0)},w.isArray=Array.isArray,w.parseJSON=JSON.parse,w.nodeName=N,w.isFunction=g,w.isWindow=y,w.camelCase=G,w.type=x,w.now=Date.now,w.isNumeric=function(e){var t=w.type(e);return("number"===t||"string"===t)&&!isNaN(e-parseFloat(e))},"function"==typeof define&&define.amd&&define("jquery",[],function(){return w});var Jt=e.jQuery,Kt=e.$;return w.noConflict=function(t){return e.$===w&&(e.$=Kt),t&&e.jQuery===w&&(e.jQuery=Jt),w},t||(e.jQuery=e.$=w),w});
diff --git a/src/main/resources/META-INF/resources/designer/lib/modal.js b/src/main/resources/META-INF/resources/designer/lib/modal.js
deleted file mode 100644 (file)
index a4ab332..0000000
+++ /dev/null
@@ -1,420 +0,0 @@
-angular.module('ui.bootstrap.modal', ['ui.bootstrap.transition'])
-
-/**
- * A helper, internal data structure that acts as a map but also allows getting / removing
- * elements in the LIFO order
- */
-  .factory('$$stackedMap', function () {
-    return {
-      createNew: function () {
-        var stack = [];
-
-        return {
-          add: function (key, value) {
-            stack.push({
-              key: key,
-              value: value
-            });
-          },
-          get: function (key) {
-            for (var i = 0; i < stack.length; i++) {
-              if (key == stack[i].key) {
-                return stack[i];
-              }
-            }
-          },
-          keys: function() {
-            var keys = [];
-            for (var i = 0; i < stack.length; i++) {
-              keys.push(stack[i].key);
-            }
-            return keys;
-          },
-          top: function () {
-            return stack[stack.length - 1];
-          },
-          remove: function (key) {
-            var idx = -1;
-            for (var i = 0; i < stack.length; i++) {
-              if (key == stack[i].key) {
-                idx = i;
-                break;
-              }
-            }
-            return stack.splice(idx, 1)[0];
-          },
-          removeTop: function () {
-            return stack.splice(stack.length - 1, 1)[0];
-          },
-          length: function () {
-            return stack.length;
-          }
-        };
-      }
-    };
-  })
-
-/**
- * A helper directive for the $modal service. It creates a backdrop element.
- */
-  .directive('modalBackdrop', ['$timeout', function ($timeout) {
-    return {
-      restrict: 'EA',
-      replace: true,
-      templateUrl: 'template/modal/backdrop.html',
-      link: function (scope, element, attrs) {
-        scope.backdropClass = attrs.backdropClass || '';
-
-        scope.animate = false;
-
-        //trigger CSS transitions
-        $timeout(function () {
-          scope.animate = true;
-        });
-      }
-    };
-  }])
-
-  .directive('modalWindow', ['$modalStack', '$timeout', function ($modalStack, $timeout) {
-    return {
-      restrict: 'EA',
-      scope: {
-        index: '@',
-        animate: '='
-      },
-      replace: true,
-      transclude: true,
-      templateUrl: function(tElement, tAttrs) {
-        return tAttrs.templateUrl || 'template/modal/window.html';
-      },
-      link: function (scope, element, attrs) {
-        element.addClass(attrs.windowClass || '');
-        scope.size = attrs.size;
-
-        // moved from template to fix issue #2280
-        element.on('click', function(evt) {
-          scope.close(evt);
-        });
-
-        $timeout(function () {
-          // trigger CSS transitions
-          scope.animate = true;
-
-          /**
-           * Auto-focusing of a freshly-opened modal element causes any child elements
-           * with the autofocus attribute to lose focus. This is an issue on touch
-           * based devices which will show and then hide the onscreen keyboard.
-           * Attempts to refocus the autofocus element via JavaScript will not reopen
-           * the onscreen keyboard. Fixed by updated the focusing logic to only autofocus
-           * the modal element if the modal does not contain an autofocus element.
-           */
-          if (!element[0].querySelectorAll('[autofocus]').length) {
-            element[0].focus();
-          }
-        });
-
-        scope.close = function (evt) {
-          var modal = $modalStack.getTop();
-          if (modal && modal.value.backdrop && modal.value.backdrop != 'static' && (evt.target === evt.currentTarget)) {
-            evt.preventDefault();
-            evt.stopPropagation();
-            $modalStack.dismiss(modal.key, 'backdrop click');
-          }
-        };
-      }
-    };
-  }])
-
-  .directive('modalTransclude', function () {
-    return {
-      link: function($scope, $element, $attrs, controller, $transclude) {
-        $transclude($scope.$parent, function(clone) {
-          $element.empty();
-          $element.append(clone);
-        });
-      }
-    };
-  })
-
-  .factory('$modalStack', ['$transition', '$timeout', '$document', '$compile', '$rootScope', '$$stackedMap',
-    function ($transition, $timeout, $document, $compile, $rootScope, $$stackedMap) {
-
-      var OPENED_MODAL_CLASS = 'modal-open';
-
-      var backdropDomEl, backdropScope;
-      var openedWindows = $$stackedMap.createNew();
-      var $modalStack = {};
-
-      function backdropIndex() {
-        var topBackdropIndex = -1;
-        var opened = openedWindows.keys();
-        for (var i = 0; i < opened.length; i++) {
-          if (openedWindows.get(opened[i]).value.backdrop) {
-            topBackdropIndex = i;
-          }
-        }
-        return topBackdropIndex;
-      }
-
-      $rootScope.$watch(backdropIndex, function(newBackdropIndex){
-        if (backdropScope) {
-          backdropScope.index = newBackdropIndex;
-        }
-      });
-
-      function removeModalWindow(modalInstance) {
-
-        var body = $document.find('body').eq(0);
-        var modalWindow = openedWindows.get(modalInstance).value;
-
-        //clean up the stack
-        openedWindows.remove(modalInstance);
-
-        //remove window DOM element
-        removeAfterAnimate(modalWindow.modalDomEl, modalWindow.modalScope, 300, function() {
-          modalWindow.modalScope.$destroy();
-          body.toggleClass(OPENED_MODAL_CLASS, openedWindows.length() > 0);
-          checkRemoveBackdrop();
-        });
-      }
-
-      function checkRemoveBackdrop() {
-          //remove backdrop if no longer needed
-          if (backdropDomEl && backdropIndex() == -1) {
-            var backdropScopeRef = backdropScope;
-            removeAfterAnimate(backdropDomEl, backdropScope, 150, function () {
-              backdropScopeRef.$destroy();
-              backdropScopeRef = null;
-            });
-            backdropDomEl = undefined;
-            backdropScope = undefined;
-          }
-      }
-
-      function removeAfterAnimate(domEl, scope, emulateTime, done) {
-        // Closing animation
-        scope.animate = false;
-
-        var transitionEndEventName = $transition.transitionEndEventName;
-        if (transitionEndEventName) {
-          // transition out
-          var timeout = $timeout(afterAnimating, emulateTime);
-
-          domEl.bind(transitionEndEventName, function () {
-            $timeout.cancel(timeout);
-            afterAnimating();
-            scope.$apply();
-          });
-        } else {
-          // Ensure this call is async
-          $timeout(afterAnimating);
-        }
-
-        function afterAnimating() {
-          if (afterAnimating.done) {
-            return;
-          }
-          afterAnimating.done = true;
-
-          domEl.remove();
-          if (done) {
-            done();
-          }
-        }
-      }
-
-      $document.bind('keydown', function (evt) {
-        var modal;
-
-        if (evt.which === 27) {
-          modal = openedWindows.top();
-          if (modal && modal.value.keyboard) {
-            evt.preventDefault();
-            $rootScope.$apply(function () {
-              $modalStack.dismiss(modal.key, 'escape key press');
-            });
-          }
-        }
-      });
-
-      $modalStack.open = function (modalInstance, modal) {
-
-        openedWindows.add(modalInstance, {
-          deferred: modal.deferred,
-          modalScope: modal.scope,
-          backdrop: modal.backdrop,
-          keyboard: modal.keyboard
-        });
-
-        var body = $document.find('body').eq(0),
-            currBackdropIndex = backdropIndex();
-
-        if (currBackdropIndex >= 0 && !backdropDomEl) {
-          backdropScope = $rootScope.$new(true);
-          backdropScope.index = currBackdropIndex;
-          var angularBackgroundDomEl = angular.element('<div modal-backdrop></div>');
-          angularBackgroundDomEl.attr('backdrop-class', modal.backdropClass);
-          backdropDomEl = $compile(angularBackgroundDomEl)(backdropScope);
-          body.append(backdropDomEl);
-        }
-
-        var angularDomEl = angular.element('<div modal-window></div>');
-        angularDomEl.attr({
-          'template-url': modal.windowTemplateUrl,
-          'window-class': modal.windowClass,
-          'size': modal.size,
-          'index': openedWindows.length() - 1,
-          'animate': 'animate'
-        }).html(modal.content);
-
-        var modalDomEl = $compile(angularDomEl)(modal.scope);
-        openedWindows.top().value.modalDomEl = modalDomEl;
-        body.append(modalDomEl);
-        body.addClass(OPENED_MODAL_CLASS);
-      };
-
-      $modalStack.close = function (modalInstance, result) {
-        var modalWindow = openedWindows.get(modalInstance);
-        if (modalWindow) {
-          modalWindow.value.deferred.resolve(result);
-          removeModalWindow(modalInstance);
-        }
-      };
-
-      $modalStack.dismiss = function (modalInstance, reason) {
-        var modalWindow = openedWindows.get(modalInstance);
-        if (modalWindow) {
-          modalWindow.value.deferred.reject(reason);
-          removeModalWindow(modalInstance);
-        }
-      };
-
-      $modalStack.dismissAll = function (reason) {
-        var topModal = this.getTop();
-        while (topModal) {
-          this.dismiss(topModal.key, reason);
-          topModal = this.getTop();
-        }
-      };
-
-      $modalStack.getTop = function () {
-        return openedWindows.top();
-      };
-
-      return $modalStack;
-    }])
-
-  .provider('$modal', function () {
-
-    var $modalProvider = {
-      options: {
-        backdrop: true, //can be also false or 'static'
-        keyboard: true
-      },
-      $get: ['$injector', '$rootScope', '$q', '$http', '$templateCache', '$controller', '$modalStack',
-        function ($injector, $rootScope, $q, $http, $templateCache, $controller, $modalStack) {
-
-          var $modal = {};
-
-          function getTemplatePromise(options) {
-            return options.template ? $q.when(options.template) :
-              $http.get(angular.isFunction(options.templateUrl) ? (options.templateUrl)() : options.templateUrl,
-                {cache: $templateCache}).then(function (result) {
-                  return result.data;
-              });
-          }
-
-          function getResolvePromises(resolves) {
-            var promisesArr = [];
-            angular.forEach(resolves, function (value) {
-              if (angular.isFunction(value) || angular.isArray(value)) {
-                promisesArr.push($q.when($injector.invoke(value)));
-              }
-            });
-            return promisesArr;
-          }
-
-          $modal.open = function (modalOptions) {
-
-            var modalResultDeferred = $q.defer();
-            var modalOpenedDeferred = $q.defer();
-
-            //prepare an instance of a modal to be injected into controllers and returned to a caller
-            var modalInstance = {
-              result: modalResultDeferred.promise,
-              opened: modalOpenedDeferred.promise,
-              close: function (result) {
-                $modalStack.close(modalInstance, result);
-              },
-              dismiss: function (reason) {
-                $modalStack.dismiss(modalInstance, reason);
-              }
-            };
-
-            //merge and clean up options
-            modalOptions = angular.extend({}, $modalProvider.options, modalOptions);
-            modalOptions.resolve = modalOptions.resolve || {};
-
-            //verify options
-            if (!modalOptions.template && !modalOptions.templateUrl) {
-              throw new Error('One of template or templateUrl options is required.');
-            }
-
-            var templateAndResolvePromise =
-              $q.all([getTemplatePromise(modalOptions)].concat(getResolvePromises(modalOptions.resolve)));
-
-
-            templateAndResolvePromise.then(function resolveSuccess(tplAndVars) {
-
-              var modalScope = (modalOptions.scope || $rootScope).$new();
-              modalScope.$close = modalInstance.close;
-              modalScope.$dismiss = modalInstance.dismiss;
-
-              var ctrlInstance, ctrlLocals = {};
-              var resolveIter = 1;
-
-              //controllers
-              if (modalOptions.controller) {
-                ctrlLocals.$scope = modalScope;
-                ctrlLocals.$modalInstance = modalInstance;
-                angular.forEach(modalOptions.resolve, function (value, key) {
-                  ctrlLocals[key] = tplAndVars[resolveIter++];
-                });
-
-                ctrlInstance = $controller(modalOptions.controller, ctrlLocals);
-                if (modalOptions.controllerAs) {
-                  modalScope[modalOptions.controllerAs] = ctrlInstance;
-                }
-              }
-
-              $modalStack.open(modalInstance, {
-                scope: modalScope,
-                deferred: modalResultDeferred,
-                content: tplAndVars[0],
-                backdrop: modalOptions.backdrop,
-                keyboard: modalOptions.keyboard,
-                backdropClass: modalOptions.backdropClass,
-                windowClass: modalOptions.windowClass,
-                windowTemplateUrl: modalOptions.windowTemplateUrl,
-                size: modalOptions.size
-              });
-
-            }, function resolveError(reason) {
-              modalResultDeferred.reject(reason);
-            });
-
-            templateAndResolvePromise.then(function () {
-              modalOpenedDeferred.resolve(true);
-            }, function () {
-              modalOpenedDeferred.reject(false);
-            });
-
-            return modalInstance;
-          };
-
-          return $modal;
-        }]
-    };
-
-    return $modalProvider;
-  });
\ No newline at end of file
diff --git a/src/main/resources/META-INF/resources/designer/lib/owl.carousel.js b/src/main/resources/META-INF/resources/designer/lib/owl.carousel.js
deleted file mode 100644 (file)
index f6ef78b..0000000
+++ /dev/null
@@ -1,3069 +0,0 @@
-/**
- * Owl carousel
- * @version 2.0.0
- * @author Bartosz Wojciechowski
- * @license The MIT License (MIT)
- * @todo Lazy Load Icon
- * @todo prevent animationend bubling
- * @todo itemsScaleUp
- * @todo Test Zepto
- * @todo stagePadding calculate wrong active classes
- */
-;(function($, window, document, undefined) {
-
-       var drag, state, e;
-
-       /**
-        * Template for status information about drag and touch events.
-        * @private
-        */
-       drag = {
-               start: 0,
-               startX: 0,
-               startY: 0,
-               current: 0,
-               currentX: 0,
-               currentY: 0,
-               offsetX: 0,
-               offsetY: 0,
-               distance: null,
-               startTime: 0,
-               endTime: 0,
-               updatedX: 0,
-               targetEl: null
-       };
-
-       /**
-        * Template for some status informations.
-        * @private
-        */
-       state = {
-               isTouch: false,
-               isScrolling: false,
-               isSwiping: false,
-               direction: false,
-               inMotion: false
-       };
-
-       /**
-        * Event functions references.
-        * @private
-        */
-       e = {
-               _onDragStart: null,
-               _onDragMove: null,
-               _onDragEnd: null,
-               _transitionEnd: null,
-               _resizer: null,
-               _responsiveCall: null,
-               _goToLoop: null,
-               _checkVisibile: null
-       };
-
-       /**
-        * Creates a carousel.
-        * @class The Owl Carousel.
-        * @public
-        * @param {HTMLElement|jQuery} element - The element to create the carousel for.
-        * @param {Object} [options] - The options
-        */
-       function Owl(element, options) {
-
-               /**
-                * Current settings for the carousel.
-                * @public
-                */
-               this.settings = null;
-
-               /**
-                * Current options set by the caller including defaults.
-                * @public
-                */
-               this.options = $.extend({}, Owl.Defaults, options);
-
-               /**
-                * Plugin element.
-                * @public
-                */
-               this.$element = $(element);
-
-               /**
-                * Caches informations about drag and touch events.
-                */
-               this.drag = $.extend({}, drag);
-
-               /**
-                * Caches some status informations.
-                * @protected
-                */
-               this.state = $.extend({}, state);
-
-               /**
-                * @protected
-                * @todo Must be documented
-                */
-               this.e = $.extend({}, e);
-
-               /**
-                * References to the running plugins of this carousel.
-                * @protected
-                */
-               this._plugins = {};
-
-               /**
-                * Currently suppressed events to prevent them from beeing retriggered.
-                * @protected
-                */
-               this._supress = {};
-
-               /**
-                * Absolute current position.
-                * @protected
-                */
-               this._current = null;
-
-               /**
-                * Animation speed in milliseconds.
-                * @protected
-                */
-               this._speed = null;
-
-               /**
-                * Coordinates of all items in pixel.
-                * @todo The name of this member is missleading.
-                * @protected
-                */
-               this._coordinates = [];
-
-               /**
-                * Current breakpoint.
-                * @todo Real media queries would be nice.
-                * @protected
-                */
-               this._breakpoint = null;
-
-               /**
-                * Current width of the plugin element.
-                */
-               this._width = null;
-
-               /**
-                * All real items.
-                * @protected
-                */
-               this._items = [];
-
-               /**
-                * All cloned items.
-                * @protected
-                */
-               this._clones = [];
-
-               /**
-                * Merge values of all items.
-                * @todo Maybe this could be part of a plugin.
-                * @protected
-                */
-               this._mergers = [];
-
-               /**
-                * Invalidated parts within the update process.
-                * @protected
-                */
-               this._invalidated = {};
-
-               /**
-                * Ordered list of workers for the update process.
-                * @protected
-                */
-               this._pipe = [];
-
-               $.each(Owl.Plugins, $.proxy(function(key, plugin) {
-                       this._plugins[key[0].toLowerCase() + key.slice(1)]
-                               = new plugin(this);
-               }, this));
-
-               $.each(Owl.Pipe, $.proxy(function(priority, worker) {
-                       this._pipe.push({
-                               'filter': worker.filter,
-                               'run': $.proxy(worker.run, this)
-                       });
-               }, this));
-
-               this.setup();
-               this.initialize();
-       }
-
-       /**
-        * Default options for the carousel.
-        * @public
-        */
-       Owl.Defaults = {
-               items: 3,
-               loop: false,
-               center: false,
-
-               mouseDrag: true,
-               touchDrag: true,
-               pullDrag: true,
-               freeDrag: false,
-
-               margin: 0,
-               stagePadding: 0,
-
-               merge: false,
-               mergeFit: true,
-               autoWidth: false,
-
-               startPosition: 0,
-               rtl: false,
-
-               smartSpeed: 250,
-               fluidSpeed: false,
-               dragEndSpeed: false,
-
-               responsive: {},
-               responsiveRefreshRate: 200,
-               responsiveBaseElement: window,
-               responsiveClass: false,
-
-               fallbackEasing: 'swing',
-
-               info: false,
-
-               nestedItemSelector: false,
-               itemElement: 'div',
-               stageElement: 'div',
-
-               // Classes and Names
-               themeClass: 'owl-theme',
-               baseClass: 'owl-carousel',
-               itemClass: 'owl-item',
-               centerClass: 'center',
-               activeClass: 'active'
-       };
-
-       /**
-        * Enumeration for width.
-        * @public
-        * @readonly
-        * @enum {String}
-        */
-       Owl.Width = {
-               Default: 'default',
-               Inner: 'inner',
-               Outer: 'outer'
-       };
-
-       /**
-        * Contains all registered plugins.
-        * @public
-        */
-       Owl.Plugins = {};
-
-       /**
-        * Update pipe.
-        */
-       Owl.Pipe = [ {
-               filter: [ 'width', 'items', 'settings' ],
-               run: function(cache) {
-                       cache.current = this._items && this._items[this.relative(this._current)];
-               }
-       }, {
-               filter: [ 'items', 'settings' ],
-               run: function() {
-                       var cached = this._clones,
-                               clones = this.$stage.children('.cloned');
-
-                       if (clones.length !== cached.length || (!this.settings.loop && cached.length > 0)) {
-                               this.$stage.children('.cloned').remove();
-                               this._clones = [];
-                       }
-               }
-       }, {
-               filter: [ 'items', 'settings' ],
-               run: function() {
-                       var i, n,
-                               clones = this._clones,
-                               items = this._items,
-                               delta = this.settings.loop ? clones.length - Math.max(this.settings.items * 2, 4) : 0;
-
-                       for (i = 0, n = Math.abs(delta / 2); i < n; i++) {
-                               if (delta > 0) {
-                                       this.$stage.children().eq(items.length + clones.length - 1).remove();
-                                       clones.pop();
-                                       this.$stage.children().eq(0).remove();
-                                       clones.pop();
-                               } else {
-                                       clones.push(clones.length / 2);
-                                       this.$stage.append(items[clones[clones.length - 1]].clone().addClass('cloned'));
-                                       clones.push(items.length - 1 - (clones.length - 1) / 2);
-                                       this.$stage.prepend(items[clones[clones.length - 1]].clone().addClass('cloned'));
-                               }
-                       }
-               }
-       }, {
-               filter: [ 'width', 'items', 'settings' ],
-               run: function() {
-                       var rtl = (this.settings.rtl ? 1 : -1),
-                               width = (this.width() / this.settings.items).toFixed(3),
-                               coordinate = 0, merge, i, n;
-
-                       this._coordinates = [];
-                       for (i = 0, n = this._clones.length + this._items.length; i < n; i++) {
-                               merge = this._mergers[this.relative(i)];
-                               merge = (this.settings.mergeFit && Math.min(merge, this.settings.items)) || merge;
-                               coordinate += (this.settings.autoWidth ? this._items[this.relative(i)].width() + this.settings.margin : width * merge) * rtl;
-
-                               this._coordinates.push(coordinate);
-                       }
-               }
-       }, {
-               filter: [ 'width', 'items', 'settings' ],
-               run: function() {
-                       var i, n, width = (this.width() / this.settings.items).toFixed(3), css = {
-                               'width': Math.abs(this._coordinates[this._coordinates.length - 1]) + this.settings.stagePadding * 2,
-                               'padding-left': this.settings.stagePadding || '',
-                               'padding-right': this.settings.stagePadding || ''
-                       };
-
-                       this.$stage.css(css);
-
-                       css = { 'width': this.settings.autoWidth ? 'auto' : width - this.settings.margin };
-                       css[this.settings.rtl ? 'margin-left' : 'margin-right'] = this.settings.margin;
-
-                       if (!this.settings.autoWidth && $.grep(this._mergers, function(v) { return v > 1 }).length > 0) {
-                               for (i = 0, n = this._coordinates.length; i < n; i++) {
-                                       css.width = Math.abs(this._coordinates[i]) - Math.abs(this._coordinates[i - 1] || 0) - this.settings.margin;
-                                       this.$stage.children().eq(i).css(css);
-                               }
-                       } else {
-                               this.$stage.children().css(css);
-                       }
-               }
-       }, {
-               filter: [ 'width', 'items', 'settings' ],
-               run: function(cache) {
-                       cache.current && this.reset(this.$stage.children().index(cache.current));
-               }
-       }, {
-               filter: [ 'position' ],
-               run: function() {
-                       this.animate(this.coordinates(this._current));
-               }
-       }, {
-               filter: [ 'width', 'position', 'items', 'settings' ],
-               run: function() {
-                       var rtl = this.settings.rtl ? 1 : -1,
-                               padding = this.settings.stagePadding * 2,
-                               begin = this.coordinates(this.current()) + padding,
-                               end = begin + this.width() * rtl,
-                               inner, outer, matches = [], i, n;
-
-                       for (i = 0, n = this._coordinates.length; i < n; i++) {
-                               inner = this._coordinates[i - 1] || 0;
-                               outer = Math.abs(this._coordinates[i]) + padding * rtl;
-
-                               if ((this.op(inner, '<=', begin) && (this.op(inner, '>', end)))
-                                       || (this.op(outer, '<', begin) && this.op(outer, '>', end))) {
-                                       matches.push(i);
-                               }
-                       }
-
-                       this.$stage.children('.' + this.settings.activeClass).removeClass(this.settings.activeClass);
-                       this.$stage.children(':eq(' + matches.join('), :eq(') + ')').addClass(this.settings.activeClass);
-
-                       if (this.settings.center) {
-                               this.$stage.children('.' + this.settings.centerClass).removeClass(this.settings.centerClass);
-                               this.$stage.children().eq(this.current()).addClass(this.settings.centerClass);
-                       }
-               }
-       } ];
-
-       /**
-        * Initializes the carousel.
-        * @protected
-        */
-       Owl.prototype.initialize = function() {
-               this.trigger('initialize');
-
-               this.$element
-                       .addClass(this.settings.baseClass)
-                       .addClass(this.settings.themeClass)
-                       .toggleClass('owl-rtl', this.settings.rtl);
-
-               // check support
-               this.browserSupport();
-
-               if (this.settings.autoWidth && this.state.imagesLoaded !== true) {
-                       var imgs, nestedSelector, width;
-                       imgs = this.$element.find('img');
-                       nestedSelector = this.settings.nestedItemSelector ? '.' + this.settings.nestedItemSelector : undefined;
-                       width = this.$element.children(nestedSelector).width();
-
-                       if (imgs.length && width <= 0) {
-                               this.preloadAutoWidthImages(imgs);
-                               return false;
-                       }
-               }
-
-               this.$element.addClass('owl-loading');
-
-               // create stage
-               this.$stage = $('<' + this.settings.stageElement + ' class="owl-stage"/>')
-                       .wrap('<div class="owl-stage-outer">');
-
-               // append stage
-               this.$element.append(this.$stage.parent());
-
-               // append content
-               this.replace(this.$element.children().not(this.$stage.parent()));
-
-               // set view width
-               this._width = this.$element.width();
-
-               // update view
-               this.refresh();
-
-               this.$element.removeClass('owl-loading').addClass('owl-loaded');
-
-               // attach generic events
-               this.eventsCall();
-
-               // attach generic events
-               this.internalEvents();
-
-               // attach custom control events
-               this.addTriggerableEvents();
-
-               this.trigger('initialized');
-       };
-
-       /**
-        * Setups the current settings.
-        * @todo Remove responsive classes. Why should adaptive designs be brought into IE8?
-        * @todo Support for media queries by using `matchMedia` would be nice.
-        * @public
-        */
-       Owl.prototype.setup = function() {
-               var viewport = this.viewport(),
-                       overwrites = this.options.responsive,
-                       match = -1,
-                       settings = null;
-
-               if (!overwrites) {
-                       settings = $.extend({}, this.options);
-               } else {
-                       $.each(overwrites, function(breakpoint) {
-                               if (breakpoint <= viewport && breakpoint > match) {
-                                       match = Number(breakpoint);
-                               }
-                       });
-
-                       settings = $.extend({}, this.options, overwrites[match]);
-                       delete settings.responsive;
-
-                       // responsive class
-                       if (settings.responsiveClass) {
-                               this.$element.attr('class', function(i, c) {
-                                       return c.replace(/\b owl-responsive-\S+/g, '');
-                               }).addClass('owl-responsive-' + match);
-                       }
-               }
-
-               if (this.settings === null || this._breakpoint !== match) {
-                       this.trigger('change', { property: { name: 'settings', value: settings } });
-                       this._breakpoint = match;
-                       this.settings = settings;
-                       this.invalidate('settings');
-                       this.trigger('changed', { property: { name: 'settings', value: this.settings } });
-               }
-       };
-
-       /**
-        * Updates option logic if necessery.
-        * @protected
-        */
-       Owl.prototype.optionsLogic = function() {
-               // Toggle Center class
-               this.$element.toggleClass('owl-center', this.settings.center);
-
-               // if items number is less than in body
-               if (this.settings.loop && this._items.length < this.settings.items) {
-                       this.settings.loop = false;
-               }
-
-               if (this.settings.autoWidth) {
-                       this.settings.stagePadding = false;
-                       this.settings.merge = false;
-               }
-       };
-
-       /**
-        * Prepares an item before add.
-        * @todo Rename event parameter `content` to `item`.
-        * @protected
-        * @returns {jQuery|HTMLElement} - The item container.
-        */
-       Owl.prototype.prepare = function(item) {
-               var event = this.trigger('prepare', { content: item });
-
-               if (!event.data) {
-                       event.data = $('<' + this.settings.itemElement + '/>')
-                               .addClass(this.settings.itemClass).append(item)
-               }
-
-               this.trigger('prepared', { content: event.data });
-
-               return event.data;
-       };
-
-       /**
-        * Updates the view.
-        * @public
-        */
-       Owl.prototype.update = function() {
-               var i = 0,
-                       n = this._pipe.length,
-                       filter = $.proxy(function(p) { return this[p] }, this._invalidated),
-                       cache = {};
-
-               while (i < n) {
-                       if (this._invalidated.all || $.grep(this._pipe[i].filter, filter).length > 0) {
-                               this._pipe[i].run(cache);
-                       }
-                       i++;
-               }
-
-               this._invalidated = {};
-       };
-
-       /**
-        * Gets the width of the view.
-        * @public
-        * @param {Owl.Width} [dimension=Owl.Width.Default] - The dimension to return.
-        * @returns {Number} - The width of the view in pixel.
-        */
-       Owl.prototype.width = function(dimension) {
-               dimension = dimension || Owl.Width.Default;
-               switch (dimension) {
-                       case Owl.Width.Inner:
-                       case Owl.Width.Outer:
-                               return this._width;
-                       default:
-                               return this._width - this.settings.stagePadding * 2 + this.settings.margin;
-               }
-       };
-
-       /**
-        * Refreshes the carousel primarily for adaptive purposes.
-        * @public
-        */
-       Owl.prototype.refresh = function() {
-               if (this._items.length === 0) {
-                       return false;
-               }
-
-               var start = new Date().getTime();
-
-               this.trigger('refresh');
-
-               this.setup();
-
-               this.optionsLogic();
-
-               // hide and show methods helps here to set a proper widths,
-               // this prevents scrollbar to be calculated in stage width
-               this.$stage.addClass('owl-refresh');
-
-               this.update();
-
-               this.$stage.removeClass('owl-refresh');
-
-               this.state.orientation = window.orientation;
-
-               this.watchVisibility();
-
-               this.trigger('refreshed');
-       };
-
-       /**
-        * Save internal event references and add event based functions.
-        * @protected
-        */
-       Owl.prototype.eventsCall = function() {
-               // Save events references
-               this.e._onDragStart = $.proxy(function(e) {
-                       this.onDragStart(e);
-               }, this);
-               this.e._onDragMove = $.proxy(function(e) {
-                       this.onDragMove(e);
-               }, this);
-               this.e._onDragEnd = $.proxy(function(e) {
-                       this.onDragEnd(e);
-               }, this);
-               this.e._onResize = $.proxy(function(e) {
-                       this.onResize(e);
-               }, this);
-               this.e._transitionEnd = $.proxy(function(e) {
-                       this.transitionEnd(e);
-               }, this);
-               this.e._preventClick = $.proxy(function(e) {
-                       this.preventClick(e);
-               }, this);
-       };
-
-       /**
-        * Checks window `resize` event.
-        * @protected
-        */
-       Owl.prototype.onThrottledResize = function() {
-               window.clearTimeout(this.resizeTimer);
-               this.resizeTimer = window.setTimeout(this.e._onResize, this.settings.responsiveRefreshRate);
-       };
-
-       /**
-        * Checks window `resize` event.
-        * @protected
-        */
-       Owl.prototype.onResize = function() {
-               if (!this._items.length) {
-                       return false;
-               }
-
-               if (this._width === this.$element.width()) {
-                       return false;
-               }
-
-               if (this.trigger('resize').isDefaultPrevented()) {
-                       return false;
-               }
-
-               this._width = this.$element.width();
-
-               this.invalidate('width');
-
-               this.refresh();
-
-               this.trigger('resized');
-       };
-
-       /**
-        * Checks for touch/mouse drag event type and add run event handlers.
-        * @protected
-        */
-       Owl.prototype.eventsRouter = function(event) {
-               var type = event.type;
-
-               if (type === "mousedown" || type === "touchstart") {
-                       this.onDragStart(event);
-               } else if (type === "mousemove" || type === "touchmove") {
-                       this.onDragMove(event);
-               } else if (type === "mouseup" || type === "touchend") {
-                       this.onDragEnd(event);
-               } else if (type === "touchcancel") {
-                       this.onDragEnd(event);
-               }
-       };
-
-       /**
-        * Checks for touch/mouse drag options and add necessery event handlers.
-        * @protected
-        */
-       Owl.prototype.internalEvents = function() {
-               var isTouch = isTouchSupport(),
-                       isTouchIE = isTouchSupportIE();
-
-               if (this.settings.mouseDrag){
-                       this.$stage.on('mousedown', $.proxy(function(event) { this.eventsRouter(event) }, this));
-                       this.$stage.on('dragstart', function() { return false });
-                       this.$stage.get(0).onselectstart = function() { return false };
-               } else {
-                       this.$element.addClass('owl-text-select-on');
-               }
-
-               if (this.settings.touchDrag && !isTouchIE){
-                       this.$stage.on('touchstart touchcancel', $.proxy(function(event) { this.eventsRouter(event) }, this));
-               }
-
-               // catch transitionEnd event
-               if (this.transitionEndVendor) {
-                       this.on(this.$stage.get(0), this.transitionEndVendor, this.e._transitionEnd, false);
-               }
-
-               // responsive
-               if (this.settings.responsive !== false) {
-                       this.on(window, 'resize', $.proxy(this.onThrottledResize, this));
-               }
-       };
-
-       /**
-        * Handles touchstart/mousedown event.
-        * @protected
-        * @param {Event} event - The event arguments.
-        */
-       Owl.prototype.onDragStart = function(event) {
-               var ev, isTouchEvent, pageX, pageY, animatedPos;
-
-               ev = event.originalEvent || event || window.event;
-
-               // prevent right click
-               if (ev.which === 3 || this.state.isTouch) {
-                       return false;
-               }
-
-               if (ev.type === 'mousedown') {
-                       this.$stage.addClass('owl-grab');
-               }
-
-               this.trigger('drag');
-               this.drag.startTime = new Date().getTime();
-               this.speed(0);
-               this.state.isTouch = true;
-               this.state.isScrolling = false;
-               this.state.isSwiping = false;
-               this.drag.distance = 0;
-
-               pageX = getTouches(ev).x;
-               pageY = getTouches(ev).y;
-
-               // get stage position left
-               this.drag.offsetX = this.$stage.position().left;
-               this.drag.offsetY = this.$stage.position().top;
-
-               if (this.settings.rtl) {
-                       this.drag.offsetX = this.$stage.position().left + this.$stage.width() - this.width()
-                               + this.settings.margin;
-               }
-
-               // catch position // ie to fix
-               if (this.state.inMotion && this.support3d) {
-                       animatedPos = this.getTransformProperty();
-                       this.drag.offsetX = animatedPos;
-                       this.animate(animatedPos);
-                       this.state.inMotion = true;
-               } else if (this.state.inMotion && !this.support3d) {
-                       this.state.inMotion = false;
-                       return false;
-               }
-
-               this.drag.startX = pageX - this.drag.offsetX;
-               this.drag.startY = pageY - this.drag.offsetY;
-
-               this.drag.start = pageX - this.drag.startX;
-               this.drag.targetEl = ev.target || ev.srcElement;
-               this.drag.updatedX = this.drag.start;
-
-               // to do/check
-               // prevent links and images dragging;
-               if (this.drag.targetEl.tagName === "IMG" || this.drag.targetEl.tagName === "A") {
-                       this.drag.targetEl.draggable = false;
-               }
-
-               $(document).on('mousemove.owl.dragEvents mouseup.owl.dragEvents touchmove.owl.dragEvents touchend.owl.dragEvents', $.proxy(function(event) {this.eventsRouter(event)},this));
-       };
-
-       /**
-        * Handles the touchmove/mousemove events.
-        * @todo Simplify
-        * @protected
-        * @param {Event} event - The event arguments.
-        */
-       Owl.prototype.onDragMove = function(event) {
-               var ev, isTouchEvent, pageX, pageY, minValue, maxValue, pull;
-
-               if (!this.state.isTouch) {
-                       return;
-               }
-
-               if (this.state.isScrolling) {
-                       return;
-               }
-
-               ev = event.originalEvent || event || window.event;
-
-               pageX = getTouches(ev).x;
-               pageY = getTouches(ev).y;
-
-               // Drag Direction
-               this.drag.currentX = pageX - this.drag.startX;
-               this.drag.currentY = pageY - this.drag.startY;
-               this.drag.distance = this.drag.currentX - this.drag.offsetX;
-
-               // Check move direction
-               if (this.drag.distance < 0) {
-                       this.state.direction = this.settings.rtl ? 'right' : 'left';
-               } else if (this.drag.distance > 0) {
-                       this.state.direction = this.settings.rtl ? 'left' : 'right';
-               }
-               // Loop
-               if (this.settings.loop) {
-                       if (this.op(this.drag.currentX, '>', this.coordinates(this.minimum())) && this.state.direction === 'right') {
-                               this.drag.currentX -= (this.settings.center && this.coordinates(0)) - this.coordinates(this._items.length);
-                       } else if (this.op(this.drag.currentX, '<', this.coordinates(this.maximum())) && this.state.direction === 'left') {
-                               this.drag.currentX += (this.settings.center && this.coordinates(0)) - this.coordinates(this._items.length);
-                       }
-               } else {
-                       // pull
-                       minValue = this.settings.rtl ? this.coordinates(this.maximum()) : this.coordinates(this.minimum());
-                       maxValue = this.settings.rtl ? this.coordinates(this.minimum()) : this.coordinates(this.maximum());
-                       pull = this.settings.pullDrag ? this.drag.distance / 5 : 0;
-                       this.drag.currentX = Math.max(Math.min(this.drag.currentX, minValue + pull), maxValue + pull);
-               }
-
-               // Lock browser if swiping horizontal
-
-               if ((this.drag.distance > 8 || this.drag.distance < -8)) {
-                       if (ev.preventDefault !== undefined) {
-                               ev.preventDefault();
-                       } else {
-                               ev.returnValue = false;
-                       }
-                       this.state.isSwiping = true;
-               }
-
-               this.drag.updatedX = this.drag.currentX;
-
-               // Lock Owl if scrolling
-               if ((this.drag.currentY > 16 || this.drag.currentY < -16) && this.state.isSwiping === false) {
-                       this.state.isScrolling = true;
-                       this.drag.updatedX = this.drag.start;
-               }
-
-               this.animate(this.drag.updatedX);
-       };
-
-       /**
-        * Handles the touchend/mouseup events.
-        * @protected
-        */
-       Owl.prototype.onDragEnd = function(event) {
-               var compareTimes, distanceAbs, closest;
-
-               if (!this.state.isTouch) {
-                       return;
-               }
-
-               if (event.type === 'mouseup') {
-                       this.$stage.removeClass('owl-grab');
-               }
-
-               this.trigger('dragged');
-
-               // prevent links and images dragging;
-               this.drag.targetEl.removeAttribute("draggable");
-
-               // remove drag event listeners
-
-               this.state.isTouch = false;
-               this.state.isScrolling = false;
-               this.state.isSwiping = false;
-
-               // to check
-               if (this.drag.distance === 0 && this.state.inMotion !== true) {
-                       this.state.inMotion = false;
-                       return false;
-               }
-
-               // prevent clicks while scrolling
-
-               this.drag.endTime = new Date().getTime();
-               compareTimes = this.drag.endTime - this.drag.startTime;
-               distanceAbs = Math.abs(this.drag.distance);
-
-               // to test
-               if (distanceAbs > 3 || compareTimes > 300) {
-                       this.removeClick(this.drag.targetEl);
-               }
-
-               closest = this.closest(this.drag.updatedX);
-
-               this.speed(this.settings.dragEndSpeed || this.settings.smartSpeed);
-               this.current(closest);
-               this.invalidate('position');
-               this.update();
-
-               // if pullDrag is off then fire transitionEnd event manually when stick
-               // to border
-               if (!this.settings.pullDrag && this.drag.updatedX === this.coordinates(closest)) {
-                       this.transitionEnd();
-               }
-
-               this.drag.distance = 0;
-
-               $(document).off('.owl.dragEvents');
-       };
-
-       /**
-        * Attaches `preventClick` to disable link while swipping.
-        * @protected
-        * @param {HTMLElement} [target] - The target of the `click` event.
-        */
-       Owl.prototype.removeClick = function(target) {
-               this.drag.targetEl = target;
-               $(target).on('click.preventClick', this.e._preventClick);
-               // to make sure click is removed:
-               window.setTimeout(function() {
-                       $(target).off('click.preventClick');
-               }, 300);
-       };
-
-       /**
-        * Suppresses click event.
-        * @protected
-        * @param {Event} ev - The event arguments.
-        */
-       Owl.prototype.preventClick = function(ev) {
-               if (ev.preventDefault) {
-                       ev.preventDefault();
-               } else {
-                       ev.returnValue = false;
-               }
-               if (ev.stopPropagation) {
-                       ev.stopPropagation();
-               }
-               $(ev.target).off('click.preventClick');
-       };
-
-       /**
-        * Catches stage position while animate (only CSS3).
-        * @protected
-        * @returns
-        */
-       Owl.prototype.getTransformProperty = function() {
-               var transform, matrix3d;
-
-               transform = window.getComputedStyle(this.$stage.get(0), null).getPropertyValue(this.vendorName + 'transform');
-               // var transform = this.$stage.css(this.vendorName + 'transform')
-               transform = transform.replace(/matrix(3d)?\(|\)/g, '').split(',');
-               matrix3d = transform.length === 16;
-
-               return matrix3d !== true ? transform[4] : transform[12];
-       };
-
-       /**
-        * Gets absolute position of the closest item for a coordinate.
-        * @todo Setting `freeDrag` makes `closest` not reusable. See #165.
-        * @protected
-        * @param {Number} coordinate - The coordinate in pixel.
-        * @return {Number} - The absolute position of the closest item.
-        */
-       Owl.prototype.closest = function(coordinate) {
-               var position = -1, pull = 30, width = this.width(), coordinates = this.coordinates();
-
-               if (!this.settings.freeDrag) {
-                       // check closest item
-                       $.each(coordinates, $.proxy(function(index, value) {
-                               if (coordinate > value - pull && coordinate < value + pull) {
-                                       position = index;
-                               } else if (this.op(coordinate, '<', value)
-                                       && this.op(coordinate, '>', coordinates[index + 1] || value - width)) {
-                                       position = this.state.direction === 'left' ? index + 1 : index;
-                               }
-                               return position === -1;
-                       }, this));
-               }
-
-               if (!this.settings.loop) {
-                       // non loop boundries
-                       if (this.op(coordinate, '>', coordinates[this.minimum()])) {
-                               position = coordinate = this.minimum();
-                       } else if (this.op(coordinate, '<', coordinates[this.maximum()])) {
-                               position = coordinate = this.maximum();
-                       }
-               }
-
-               return position;
-       };
-
-       /**
-        * Animates the stage.
-        * @public
-        * @param {Number} coordinate - The coordinate in pixels.
-        */
-       Owl.prototype.animate = function(coordinate) {
-               this.trigger('translate');
-               this.state.inMotion = this.speed() > 0;
-
-               if (this.support3d) {
-                       this.$stage.css({
-                               transform: 'translate3d(' + coordinate + 'px' + ',0px, 0px)',
-                               transition: (this.speed() / 1000) + 's'
-                       });
-               } else if (this.state.isTouch) {
-                       this.$stage.css({
-                               left: coordinate + 'px'
-                       });
-               } else {
-                       this.$stage.animate({
-                               left: coordinate
-                       }, this.speed() / 1000, this.settings.fallbackEasing, $.proxy(function() {
-                               if (this.state.inMotion) {
-                                       this.transitionEnd();
-                               }
-                       }, this));
-               }
-       };
-
-       /**
-        * Sets the absolute position of the current item.
-        * @public
-        * @param {Number} [position] - The new absolute position or nothing to leave it unchanged.
-        * @returns {Number} - The absolute position of the current item.
-        */
-       Owl.prototype.current = function(position) {
-               if (position === undefined) {
-                       return this._current;
-               }
-
-               if (this._items.length === 0) {
-                       return undefined;
-               }
-
-               position = this.normalize(position);
-
-               if (this._current !== position) {
-                       var event = this.trigger('change', { property: { name: 'position', value: position } });
-
-                       if (event.data !== undefined) {
-                               position = this.normalize(event.data);
-                       }
-
-                       this._current = position;
-
-                       this.invalidate('position');
-
-                       this.trigger('changed', { property: { name: 'position', value: this._current } });
-               }
-
-               return this._current;
-       };
-
-       /**
-        * Invalidates the given part of the update routine.
-        * @param {String} part - The part to invalidate.
-        */
-       Owl.prototype.invalidate = function(part) {
-               this._invalidated[part] = true;
-       }
-
-       /**
-        * Resets the absolute position of the current item.
-        * @public
-        * @param {Number} position - The absolute position of the new item.
-        */
-       Owl.prototype.reset = function(position) {
-               position = this.normalize(position);
-
-               if (position === undefined) {
-                       return;
-               }
-
-               this._speed = 0;
-               this._current = position;
-
-               this.suppress([ 'translate', 'translated' ]);
-
-               this.animate(this.coordinates(position));
-
-               this.release([ 'translate', 'translated' ]);
-       };
-
-       /**
-        * Normalizes an absolute or a relative position for an item.
-        * @public
-        * @param {Number} position - The absolute or relative position to normalize.
-        * @param {Boolean} [relative=false] - Whether the given position is relative or not.
-        * @returns {Number} - The normalized position.
-        */
-       Owl.prototype.normalize = function(position, relative) {
-               var n = (relative ? this._items.length : this._items.length + this._clones.length);
-
-               if (!$.isNumeric(position) || n < 1) {
-                       return undefined;
-               }
-
-               if (this._clones.length) {
-                       position = ((position % n) + n) % n;
-               } else {
-                       position = Math.max(this.minimum(relative), Math.min(this.maximum(relative), position));
-               }
-
-               return position;
-       };
-
-       /**
-        * Converts an absolute position for an item into a relative position.
-        * @public
-        * @param {Number} position - The absolute position to convert.
-        * @returns {Number} - The converted position.
-        */
-       Owl.prototype.relative = function(position) {
-               position = this.normalize(position);
-               position = position - this._clones.length / 2;
-               return this.normalize(position, true);
-       };
-
-       /**
-        * Gets the maximum position for an item.
-        * @public
-        * @param {Boolean} [relative=false] - Whether to return an absolute position or a relative position.
-        * @returns {Number}
-        */
-       Owl.prototype.maximum = function(relative) {
-               var maximum, width, i = 0, coordinate,
-                       settings = this.settings;
-
-               if (relative) {
-                       return this._items.length - 1;
-               }
-
-               if (!settings.loop && settings.center) {
-                       maximum = this._items.length - 1;
-               } else if (!settings.loop && !settings.center) {
-                       maximum = this._items.length - settings.items;
-               } else if (settings.loop || settings.center) {
-                       maximum = this._items.length + settings.items;
-               } else if (settings.autoWidth || settings.merge) {
-                       revert = settings.rtl ? 1 : -1;
-                       width = this.$stage.width() - this.$element.width();
-                       while (coordinate = this.coordinates(i)) {
-                               if (coordinate * revert >= width) {
-                                       break;
-                               }
-                               maximum = ++i;
-                       }
-               } else {
-                       throw 'Can not detect maximum absolute position.'
-               }
-
-               return maximum;
-       };
-
-       /**
-        * Gets the minimum position for an item.
-        * @public
-        * @param {Boolean} [relative=false] - Whether to return an absolute position or a relative position.
-        * @returns {Number}
-        */
-       Owl.prototype.minimum = function(relative) {
-               if (relative) {
-                       return 0;
-               }
-
-               return this._clones.length / 2;
-       };
-
-       /**
-        * Gets an item at the specified relative position.
-        * @public
-        * @param {Number} [position] - The relative position of the item.
-        * @return {jQuery|Array.<jQuery>} - The item at the given position or all items if no position was given.
-        */
-       Owl.prototype.items = function(position) {
-               if (position === undefined) {
-                       return this._items.slice();
-               }
-
-               position = this.normalize(position, true);
-               return this._items[position];
-       };
-
-       /**
-        * Gets an item at the specified relative position.
-        * @public
-        * @param {Number} [position] - The relative position of the item.
-        * @return {jQuery|Array.<jQuery>} - The item at the given position or all items if no position was given.
-        */
-       Owl.prototype.mergers = function(position) {
-               if (position === undefined) {
-                       return this._mergers.slice();
-               }
-
-               position = this.normalize(position, true);
-               return this._mergers[position];
-       };
-
-       /**
-        * Gets the absolute positions of clones for an item.
-        * @public
-        * @param {Number} [position] - The relative position of the item.
-        * @returns {Array.<Number>} - The absolute positions of clones for the item or all if no position was given.
-        */
-       Owl.prototype.clones = function(position) {
-               var odd = this._clones.length / 2,
-                       even = odd + this._items.length,
-                       map = function(index) { return index % 2 === 0 ? even + index / 2 : odd - (index + 1) / 2 };
-
-               if (position === undefined) {
-                       return $.map(this._clones, function(v, i) { return map(i) });
-               }
-
-               return $.map(this._clones, function(v, i) { return v === position ? map(i) : null });
-       };
-
-       /**
-        * Sets the current animation speed.
-        * @public
-        * @param {Number} [speed] - The animation speed in milliseconds or nothing to leave it unchanged.
-        * @returns {Number} - The current animation speed in milliseconds.
-        */
-       Owl.prototype.speed = function(speed) {
-               if (speed !== undefined) {
-                       this._speed = speed;
-               }
-
-               return this._speed;
-       };
-
-       /**
-        * Gets the coordinate of an item.
-        * @todo The name of this method is missleanding.
-        * @public
-        * @param {Number} position - The absolute position of the item within `minimum()` and `maximum()`.
-        * @returns {Number|Array.<Number>} - The coordinate of the item in pixel or all coordinates.
-        */
-       Owl.prototype.coordinates = function(position) {
-               var coordinate = null;
-
-               if (position === undefined) {
-                       return $.map(this._coordinates, $.proxy(function(coordinate, index) {
-                               return this.coordinates(index);
-                       }, this));
-               }
-
-               if (this.settings.center) {
-                       coordinate = this._coordinates[position];
-                       coordinate += (this.width() - coordinate + (this._coordinates[position - 1] || 0)) / 2 * (this.settings.rtl ? -1 : 1);
-               } else {
-                       coordinate = this._coordinates[position - 1] || 0;
-               }
-
-               return coordinate;
-       };
-
-       /**
-        * Calculates the speed for a translation.
-        * @protected
-        * @param {Number} from - The absolute position of the start item.
-        * @param {Number} to - The absolute position of the target item.
-        * @param {Number} [factor=undefined] - The time factor in milliseconds.
-        * @returns {Number} - The time in milliseconds for the translation.
-        */
-       Owl.prototype.duration = function(from, to, factor) {
-               return Math.min(Math.max(Math.abs(to - from), 1), 6) * Math.abs((factor || this.settings.smartSpeed));
-       };
-
-       /**
-        * Slides to the specified item.
-        * @public
-        * @param {Number} position - The position of the item.
-        * @param {Number} [speed] - The time in milliseconds for the transition.
-        */
-       Owl.prototype.to = function(position, speed) {
-               if (this.settings.loop) {
-                       var distance = position - this.relative(this.current()),
-                               revert = this.current(),
-                               before = this.current(),
-                               after = this.current() + distance,
-                               direction = before - after < 0 ? true : false,
-                               items = this._clones.length + this._items.length;
-
-                       if (after < this.settings.items && direction === false) {
-                               revert = before + this._items.length;
-                               this.reset(revert);
-                       } else if (after >= items - this.settings.items && direction === true) {
-                               revert = before - this._items.length;
-                               this.reset(revert);
-                       }
-                       window.clearTimeout(this.e._goToLoop);
-                       this.e._goToLoop = window.setTimeout($.proxy(function() {
-                               this.speed(this.duration(this.current(), revert + distance, speed));
-                               this.current(revert + distance);
-                               this.update();
-                       }, this), 30);
-               } else {
-                       this.speed(this.duration(this.current(), position, speed));
-                       this.current(position);
-                       this.update();
-               }
-       };
-
-       /**
-        * Slides to the next item.
-        * @public
-        * @param {Number} [speed] - The time in milliseconds for the transition.
-        */
-       Owl.prototype.next = function(speed) {
-               speed = speed || false;
-               this.to(this.relative(this.current()) + 1, speed);
-       };
-
-       /**
-        * Slides to the previous item.
-        * @public
-        * @param {Number} [speed] - The time in milliseconds for the transition.
-        */
-       Owl.prototype.prev = function(speed) {
-               speed = speed || false;
-               this.to(this.relative(this.current()) - 1, speed);
-       };
-
-       /**
-        * Handles the end of an animation.
-        * @protected
-        * @param {Event} event - The event arguments.
-        */
-       Owl.prototype.transitionEnd = function(event) {
-
-               // if css2 animation then event object is undefined
-               if (event !== undefined) {
-                       event.stopPropagation();
-
-                       // Catch only owl-stage transitionEnd event
-                       if ((event.target || event.srcElement || event.originalTarget) !== this.$stage.get(0)) {
-                               return false;
-                       }
-               }
-
-               this.state.inMotion = false;
-               this.trigger('translated');
-       };
-
-       /**
-        * Gets viewport width.
-        * @protected
-        * @return {Number} - The width in pixel.
-        */
-       Owl.prototype.viewport = function() {
-               var width;
-               if (this.options.responsiveBaseElement !== window) {
-                       width = $(this.options.responsiveBaseElement).width();
-               } else if (window.innerWidth) {
-                       width = window.innerWidth;
-               } else if (document.documentElement && document.documentElement.clientWidth) {
-                       width = document.documentElement.clientWidth;
-               } else {
-                       throw 'Can not detect viewport width.';
-               }
-               return width;
-       };
-
-       /**
-        * Replaces the current content.
-        * @public
-        * @param {HTMLElement|jQuery|String} content - The new content.
-        */
-       Owl.prototype.replace = function(content) {
-               this.$stage.empty();
-               this._items = [];
-
-               if (content) {
-                       content = (content instanceof jQuery) ? content : $(content);
-               }
-
-               if (this.settings.nestedItemSelector) {
-                       content = content.find('.' + this.settings.nestedItemSelector);
-               }
-
-               content.filter(function() {
-                       return this.nodeType === 1;
-               }).each($.proxy(function(index, item) {
-                       item = this.prepare(item);
-                       this.$stage.append(item);
-                       this._items.push(item);
-                       this._mergers.push(item.find('[data-merge]').andSelf('[data-merge]').attr('data-merge') * 1 || 1);
-               }, this));
-
-               this.reset($.isNumeric(this.settings.startPosition) ? this.settings.startPosition : 0);
-
-               this.invalidate('items');
-       };
-
-       /**
-        * Adds an item.
-        * @todo Use `item` instead of `content` for the event arguments.
-        * @public
-        * @param {HTMLElement|jQuery|String} content - The item content to add.
-        * @param {Number} [position] - The relative position at which to insert the item otherwise the item will be added to the end.
-        */
-       Owl.prototype.add = function(content, position) {
-               position = position === undefined ? this._items.length : this.normalize(position, true);
-
-               this.trigger('add', { content: content, position: position });
-
-               if (this._items.length === 0 || position === this._items.length) {
-                       this.$stage.append(content);
-                       this._items.push(content);
-                       this._mergers.push(content.find('[data-merge]').andSelf('[data-merge]').attr('data-merge') * 1 || 1);
-               } else {
-                       this._items[position].before(content);
-                       this._items.splice(position, 0, content);
-                       this._mergers.splice(position, 0, content.find('[data-merge]').andSelf('[data-merge]').attr('data-merge') * 1 || 1);
-               }
-
-               this.invalidate('items');
-
-               this.trigger('added', { content: content, position: position });
-       };
-
-       /**
-        * Removes an item by its position.
-        * @todo Use `item` instead of `content` for the event arguments.
-        * @public
-        * @param {Number} position - The relative position of the item to remove.
-        */
-       Owl.prototype.remove = function(position) {
-               position = this.normalize(position, true);
-
-               if (position === undefined) {
-                       return;
-               }
-
-               this.trigger('remove', { content: this._items[position], position: position });
-
-               this._items[position].remove();
-               this._items.splice(position, 1);
-               this._mergers.splice(position, 1);
-
-               this.invalidate('items');
-
-               this.trigger('removed', { content: null, position: position });
-       };
-
-       /**
-        * Adds triggerable events.
-        * @protected
-        */
-       Owl.prototype.addTriggerableEvents = function() {
-               var handler = $.proxy(function(callback, event) {
-                       return $.proxy(function(e) {
-                               if (e.relatedTarget !== this) {
-                                       this.suppress([ event ]);
-                                       callback.apply(this, [].slice.call(arguments, 1));
-                                       this.release([ event ]);
-                               }
-                       }, this);
-               }, this);
-
-               $.each({
-                       'next': this.next,
-                       'prev': this.prev,
-                       'to': this.to,
-                       'destroy': this.destroy,
-                       'refresh': this.refresh,
-                       'replace': this.replace,
-                       'add': this.add,
-                       'remove': this.remove
-               }, $.proxy(function(event, callback) {
-                       this.$element.on(event + '.owl.carousel', handler(callback, event + '.owl.carousel'));
-               }, this));
-
-       };
-
-       /**
-        * Watches the visibility of the carousel element.
-        * @protected
-        */
-       Owl.prototype.watchVisibility = function() {
-
-               // test on zepto
-               if (!isElVisible(this.$element.get(0))) {
-                       this.$element.addClass('owl-hidden');
-                       window.clearInterval(this.e._checkVisibile);
-                       this.e._checkVisibile = window.setInterval($.proxy(checkVisible, this), 500);
-               }
-
-               function isElVisible(el) {
-                       return el.offsetWidth > 0 && el.offsetHeight > 0;
-               }
-
-               function checkVisible() {
-                       if (isElVisible(this.$element.get(0))) {
-                               this.$element.removeClass('owl-hidden');
-                               this.refresh();
-                               window.clearInterval(this.e._checkVisibile);
-                       }
-               }
-       };
-
-       /**
-        * Preloads images with auto width.
-        * @protected
-        * @todo Still to test
-        */
-       Owl.prototype.preloadAutoWidthImages = function(imgs) {
-               var loaded, that, $el, img;
-
-               loaded = 0;
-               that = this;
-               imgs.each(function(i, el) {
-                       $el = $(el);
-                       img = new Image();
-
-                       img.onload = function() {
-                               loaded++;
-                               $el.attr('src', img.src);
-                               $el.css('opacity', 1);
-                               if (loaded >= imgs.length) {
-                                       that.state.imagesLoaded = true;
-                                       that.initialize();
-                               }
-                       };
-
-                       img.src = $el.attr('src') || $el.attr('data-src') || $el.attr('data-src-retina');
-               });
-       };
-
-       /**
-        * Destroys the carousel.
-        * @public
-        */
-       Owl.prototype.destroy = function() {
-
-               if (this.$element.hasClass(this.settings.themeClass)) {
-                       this.$element.removeClass(this.settings.themeClass);
-               }
-
-               if (this.settings.responsive !== false) {
-                       $(window).off('resize.owl.carousel');
-               }
-
-               if (this.transitionEndVendor) {
-                       this.off(this.$stage.get(0), this.transitionEndVendor, this.e._transitionEnd);
-               }
-
-               for ( var i in this._plugins) {
-                       this._plugins[i].destroy();
-               }
-
-               if (this.settings.mouseDrag || this.settings.touchDrag) {
-                       this.$stage.off('mousedown touchstart touchcancel');
-                       $(document).off('.owl.dragEvents');
-                       this.$stage.get(0).onselectstart = function() {};
-                       this.$stage.off('dragstart', function() { return false });
-               }
-
-               // remove event handlers in the ".owl.carousel" namespace
-               this.$element.off('.owl');
-
-               this.$stage.children('.cloned').remove();
-               this.e = null;
-               this.$element.removeData('owlCarousel');
-
-               this.$stage.children().contents().unwrap();
-               this.$stage.children().unwrap();
-               this.$stage.unwrap();
-       };
-
-       /**
-        * Operators to calculate right-to-left and left-to-right.
-        * @protected
-        * @param {Number} [a] - The left side operand.
-        * @param {String} [o] - The operator.
-        * @param {Number} [b] - The right side operand.
-        */
-       Owl.prototype.op = function(a, o, b) {
-               var rtl = this.settings.rtl;
-               switch (o) {
-                       case '<':
-                               return rtl ? a > b : a < b;
-                       case '>':
-                               return rtl ? a < b : a > b;
-                       case '>=':
-                               return rtl ? a <= b : a >= b;
-                       case '<=':
-                               return rtl ? a >= b : a <= b;
-                       default:
-                               break;
-               }
-       };
-
-       /**
-        * Attaches to an internal event.
-        * @protected
-        * @param {HTMLElement} element - The event source.
-        * @param {String} event - The event name.
-        * @param {Function} listener - The event handler to attach.
-        * @param {Boolean} capture - Wether the event should be handled at the capturing phase or not.
-        */
-       Owl.prototype.on = function(element, event, listener, capture) {
-               if (element.addEventListener) {
-                       element.addEventListener(event, listener, capture);
-               } else if (element.attachEvent) {
-                       element.attachEvent('on' + event, listener);
-               }
-       };
-
-       /**
-        * Detaches from an internal event.
-        * @protected
-        * @param {HTMLElement} element - The event source.
-        * @param {String} event - The event name.
-        * @param {Function} listener - The attached event handler to detach.
-        * @param {Boolean} capture - Wether the attached event handler was registered as a capturing listener or not.
-        */
-       Owl.prototype.off = function(element, event, listener, capture) {
-               if (element.removeEventListener) {
-                       element.removeEventListener(event, listener, capture);
-               } else if (element.detachEvent) {
-                       element.detachEvent('on' + event, listener);
-               }
-       };
-
-       /**
-        * Triggers an public event.
-        * @protected
-        * @param {String} name - The event name.
-        * @param {*} [data=null] - The event data.
-        * @param {String} [namespace=.owl.carousel] - The event namespace.
-        * @returns {Event} - The event arguments.
-        */
-       Owl.prototype.trigger = function(name, data, namespace) {
-               var status = {
-                       item: { count: this._items.length, index: this.current() }
-               }, handler = $.camelCase(
-                       $.grep([ 'on', name, namespace ], function(v) { return v })
-                               .join('-').toLowerCase()
-               ), event = $.Event(
-                       [ name, 'owl', namespace || 'carousel' ].join('.').toLowerCase(),
-                       $.extend({ relatedTarget: this }, status, data)
-               );
-
-               if (!this._supress[name]) {
-                       $.each(this._plugins, function(name, plugin) {
-                               if (plugin.onTrigger) {
-                                       plugin.onTrigger(event);
-                               }
-                       });
-
-                       this.$element.trigger(event);
-
-                       if (this.settings && typeof this.settings[handler] === 'function') {
-                               this.settings[handler].apply(this, event);
-                       }
-               }
-
-               return event;
-       };
-
-       /**
-        * Suppresses events.
-        * @protected
-        * @param {Array.<String>} events - The events to suppress.
-        */
-       Owl.prototype.suppress = function(events) {
-               $.each(events, $.proxy(function(index, event) {
-                       this._supress[event] = true;
-               }, this));
-       }
-
-       /**
-        * Releases suppressed events.
-        * @protected
-        * @param {Array.<String>} events - The events to release.
-        */
-       Owl.prototype.release = function(events) {
-               $.each(events, $.proxy(function(index, event) {
-                       delete this._supress[event];
-               }, this));
-       }
-
-       /**
-        * Checks the availability of some browser features.
-        * @protected
-        */
-       Owl.prototype.browserSupport = function() {
-               this.support3d = isPerspective();
-
-               if (this.support3d) {
-                       this.transformVendor = isTransform();
-
-                       // take transitionend event name by detecting transition
-                       var endVendors = [ 'transitionend', 'webkitTransitionEnd', 'transitionend', 'oTransitionEnd' ];
-                       this.transitionEndVendor = endVendors[isTransition()];
-
-                       // take vendor name from transform name
-                       this.vendorName = this.transformVendor.replace(/Transform/i, '');
-                       this.vendorName = this.vendorName !== '' ? '-' + this.vendorName.toLowerCase() + '-' : '';
-               }
-
-               this.state.orientation = window.orientation;
-       };
-
-       /**
-        * Get touch/drag coordinats.
-        * @private
-        * @param {event} - mousedown/touchstart event
-        * @returns {object} - Contains X and Y of current mouse/touch position
-        */
-
-       function getTouches(event) {
-               if (event.touches !== undefined) {
-                       return {
-                               x: event.touches[0].pageX,
-                               y: event.touches[0].pageY
-                       };
-               }
-
-               if (event.touches === undefined) {
-                       if (event.pageX !== undefined) {
-                               return {
-                                       x: event.pageX,
-                                       y: event.pageY
-                               };
-                       }
-
-               if (event.pageX === undefined) {
-                       return {
-                                       x: event.clientX,
-                                       y: event.clientY
-                               };
-                       }
-               }
-       }
-
-       /**
-        * Checks for CSS support.
-        * @private
-        * @param {Array} array - The CSS properties to check for.
-        * @returns {Array} - Contains the supported CSS property name and its index or `false`.
-        */
-       function isStyleSupported(array) {
-               var p, s, fake = document.createElement('div'), list = array;
-               for (p in list) {
-                       s = list[p];
-                       if (typeof fake.style[s] !== 'undefined') {
-                               fake = null;
-                               return [ s, p ];
-                       }
-               }
-               return [ false ];
-       }
-
-       /**
-        * Checks for CSS transition support.
-        * @private
-        * @todo Realy bad design
-        * @returns {Number}
-        */
-       function isTransition() {
-               return isStyleSupported([ 'transition', 'WebkitTransition', 'MozTransition', 'OTransition' ])[1];
-       }
-
-       /**
-        * Checks for CSS transform support.
-        * @private
-        * @returns {String} The supported property name or false.
-        */
-       function isTransform() {
-               return isStyleSupported([ 'transform', 'WebkitTransform', 'MozTransform', 'OTransform', 'msTransform' ])[0];
-       }
-
-       /**
-        * Checks for CSS perspective support.
-        * @private
-        * @returns {String} The supported property name or false.
-        */
-       function isPerspective() {
-               return isStyleSupported([ 'perspective', 'webkitPerspective', 'MozPerspective', 'OPerspective', 'MsPerspective' ])[0];
-       }
-
-       /**
-        * Checks wether touch is supported or not.
-        * @private
-        * @returns {Boolean}
-        */
-       function isTouchSupport() {
-               return 'ontouchstart' in window || !!(navigator.msMaxTouchPoints);
-       }
-
-       /**
-        * Checks wether touch is supported or not for IE.
-        * @private
-        * @returns {Boolean}
-        */
-       function isTouchSupportIE() {
-               return window.navigator.msPointerEnabled;
-       }
-
-       /**
-        * The jQuery Plugin for the Owl Carousel
-        * @public
-        */
-       $.fn.owlCarousel = function(options) {
-               return this.each(function() {
-                       if (!$(this).data('owlCarousel')) {
-                               $(this).data('owlCarousel', new Owl(this, options));
-                       }
-               });
-       };
-
-       /**
-        * The constructor for the jQuery Plugin
-        * @public
-        */
-       $.fn.owlCarousel.Constructor = Owl;
-
-})(window.Zepto || window.jQuery, window, document);
-
-/**
- * Lazy Plugin
- * @version 2.0.0
- * @author Bartosz Wojciechowski
- * @license The MIT License (MIT)
- */
-;(function($, window, document, undefined) {
-
-       /**
-        * Creates the lazy plugin.
-        * @class The Lazy Plugin
-        * @param {Owl} carousel - The Owl Carousel
-        */
-       var Lazy = function(carousel) {
-
-               /**
-                * Reference to the core.
-                * @protected
-                * @type {Owl}
-                */
-               this._core = carousel;
-
-               /**
-                * Already loaded items.
-                * @protected
-                * @type {Array.<jQuery>}
-                */
-               this._loaded = [];
-
-               /**
-                * Event handlers.
-                * @protected
-                * @type {Object}
-                */
-               this._handlers = {
-                       'initialized.owl.carousel change.owl.carousel': $.proxy(function(e) {
-                               if (!e.namespace) {
-                                       return;
-                               }
-
-                               if (!this._core.settings || !this._core.settings.lazyLoad) {
-                                       return;
-                               }
-
-                               if ((e.property && e.property.name == 'position') || e.type == 'initialized') {
-                                       var settings = this._core.settings,
-                                               n = (settings.center && Math.ceil(settings.items / 2) || settings.items),
-                                               i = ((settings.center && n * -1) || 0),
-                                               position = ((e.property && e.property.value) || this._core.current()) + i,
-                                               clones = this._core.clones().length,
-                                               load = $.proxy(function(i, v) { this.load(v) }, this);
-
-                                       while (i++ < n) {
-                                               this.load(clones / 2 + this._core.relative(position));
-                                               clones && $.each(this._core.clones(this._core.relative(position++)), load);
-                                       }
-                               }
-                       }, this)
-               };
-
-               // set the default options
-               this._core.options = $.extend({}, Lazy.Defaults, this._core.options);
-
-               // register event handler
-               this._core.$element.on(this._handlers);
-       }
-
-       /**
-        * Default options.
-        * @public
-        */
-       Lazy.Defaults = {
-               lazyLoad: false
-       }
-
-       /**
-        * Loads all resources of an item at the specified position.
-        * @param {Number} position - The absolute position of the item.
-        * @protected
-        */
-       Lazy.prototype.load = function(position) {
-               var $item = this._core.$stage.children().eq(position),
-                       $elements = $item && $item.find('.owl-lazy');
-
-               if (!$elements || $.inArray($item.get(0), this._loaded) > -1) {
-                       return;
-               }
-
-               $elements.each($.proxy(function(index, element) {
-                       var $element = $(element), image,
-                               url = (window.devicePixelRatio > 1 && $element.attr('data-src-retina')) || $element.attr('data-src');
-
-                       this._core.trigger('load', { element: $element, url: url }, 'lazy');
-
-                       if ($element.is('img')) {
-                               $element.one('load.owl.lazy', $.proxy(function() {
-                                       $element.css('opacity', 1);
-                                       this._core.trigger('loaded', { element: $element, url: url }, 'lazy');
-                               }, this)).attr('src', url);
-                       } else {
-                               image = new Image();
-                               image.onload = $.proxy(function() {
-                                       $element.css({
-                                               'background-image': 'url(' + url + ')',
-                                               'opacity': '1'
-                                       });
-                                       this._core.trigger('loaded', { element: $element, url: url }, 'lazy');
-                               }, this);
-                               image.src = url;
-                       }
-               }, this));
-
-               this._loaded.push($item.get(0));
-       }
-
-       /**
-        * Destroys the plugin.
-        * @public
-        */
-       Lazy.prototype.destroy = function() {
-               var handler, property;
-
-               for (handler in this.handlers) {
-                       this._core.$element.off(handler, this.handlers[handler]);
-               }
-               for (property in Object.getOwnPropertyNames(this)) {
-                       typeof this[property] != 'function' && (this[property] = null);
-               }
-       }
-
-       $.fn.owlCarousel.Constructor.Plugins.Lazy = Lazy;
-
-})(window.Zepto || window.jQuery, window, document);
-
-/**
- * AutoHeight Plugin
- * @version 2.0.0
- * @author Bartosz Wojciechowski
- * @license The MIT License (MIT)
- */
-;(function($, window, document, undefined) {
-
-       /**
-        * Creates the auto height plugin.
-        * @class The Auto Height Plugin
-        * @param {Owl} carousel - The Owl Carousel
-        */
-       var AutoHeight = function(carousel) {
-               /**
-                * Reference to the core.
-                * @protected
-                * @type {Owl}
-                */
-               this._core = carousel;
-
-               /**
-                * All event handlers.
-                * @protected
-                * @type {Object}
-                */
-               this._handlers = {
-                       'initialized.owl.carousel': $.proxy(function() {
-                               if (this._core.settings.autoHeight) {
-                                       this.update();
-                               }
-                       }, this),
-                       'changed.owl.carousel': $.proxy(function(e) {
-                               if (this._core.settings.autoHeight && e.property.name == 'position'){
-                                       this.update();
-                               }
-                       }, this),
-                       'loaded.owl.lazy': $.proxy(function(e) {
-                               if (this._core.settings.autoHeight && e.element.closest('.' + this._core.settings.itemClass)
-                                       === this._core.$stage.children().eq(this._core.current())) {
-                                       this.update();
-                               }
-                       }, this)
-               };
-
-               // set default options
-               this._core.options = $.extend({}, AutoHeight.Defaults, this._core.options);
-
-               // register event handlers
-               this._core.$element.on(this._handlers);
-       };
-
-       /**
-        * Default options.
-        * @public
-        */
-       AutoHeight.Defaults = {
-               autoHeight: false,
-               autoHeightClass: 'owl-height'
-       };
-
-       /**
-        * Updates the view.
-        */
-       AutoHeight.prototype.update = function() {
-               this._core.$stage.parent()
-                       .height(this._core.$stage.children().eq(this._core.current()).height())
-                       .addClass(this._core.settings.autoHeightClass);
-       };
-
-       AutoHeight.prototype.destroy = function() {
-               var handler, property;
-
-               for (handler in this._handlers) {
-                       this._core.$element.off(handler, this._handlers[handler]);
-               }
-               for (property in Object.getOwnPropertyNames(this)) {
-                       typeof this[property] != 'function' && (this[property] = null);
-               }
-       };
-
-       $.fn.owlCarousel.Constructor.Plugins.AutoHeight = AutoHeight;
-
-})(window.Zepto || window.jQuery, window, document);
-
-/**
- * Video Plugin
- * @version 2.0.0
- * @author Bartosz Wojciechowski
- * @license The MIT License (MIT)
- */
-;(function($, window, document, undefined) {
-
-       /**
-        * Creates the video plugin.
-        * @class The Video Plugin
-        * @param {Owl} carousel - The Owl Carousel
-        */
-       var Video = function(carousel) {
-               /**
-                * Reference to the core.
-                * @protected
-                * @type {Owl}
-                */
-               this._core = carousel;
-
-               /**
-                * Cache all video URLs.
-                * @protected
-                * @type {Object}
-                */
-               this._videos = {};
-
-               /**
-                * Current playing item.
-                * @protected
-                * @type {jQuery}
-                */
-               this._playing = null;
-
-               /**
-                * Whether this is in fullscreen or not.
-                * @protected
-                * @type {Boolean}
-                */
-               this._fullscreen = false;
-
-               /**
-                * All event handlers.
-                * @protected
-                * @type {Object}
-                */
-               this._handlers = {
-                       'resize.owl.carousel': $.proxy(function(e) {
-                               if (this._core.settings.video && !this.isInFullScreen()) {
-                                       e.preventDefault();
-                               }
-                       }, this),
-                       'refresh.owl.carousel changed.owl.carousel': $.proxy(function(e) {
-                               if (this._playing) {
-                                       this.stop();
-                               }
-                       }, this),
-                       'prepared.owl.carousel': $.proxy(function(e) {
-                               var $element = $(e.content).find('.owl-video');
-                               if ($element.length) {
-                                       $element.css('display', 'none');
-                                       this.fetch($element, $(e.content));
-                               }
-                       }, this)
-               };
-
-               // set default options
-               this._core.options = $.extend({}, Video.Defaults, this._core.options);
-
-               // register event handlers
-               this._core.$element.on(this._handlers);
-
-               this._core.$element.on('click.owl.video', '.owl-video-play-icon', $.proxy(function(e) {
-                       this.play(e);
-               }, this));
-       };
-
-       /**
-        * Default options.
-        * @public
-        */
-       Video.Defaults = {
-               video: false,
-               videoHeight: false,
-               videoWidth: false
-       };
-
-       /**
-        * Gets the video ID and the type (YouTube/Vimeo only).
-        * @protected
-        * @param {jQuery} target - The target containing the video data.
-        * @param {jQuery} item - The item containing the video.
-        */
-       Video.prototype.fetch = function(target, item) {
-
-               var type = target.attr('data-vimeo-id') ? 'vimeo' : 'youtube',
-                       id = target.attr('data-vimeo-id') || target.attr('data-youtube-id'),
-                       width = target.attr('data-width') || this._core.settings.videoWidth,
-                       height = target.attr('data-height') || this._core.settings.videoHeight,
-                       url = target.attr('href');
-
-               if (url) {
-                       id = url.match(/(http:|https:|)\/\/(player.|www.)?(vimeo\.com|youtu(be\.com|\.be|be\.googleapis\.com))\/(video\/|embed\/|watch\?v=|v\/)?([A-Za-z0-9._%-]*)(\&\S+)?/);
-
-                       if (id[3].indexOf('youtu') > -1) {
-                               type = 'youtube';
-                       } else if (id[3].indexOf('vimeo') > -1) {
-                               type = 'vimeo';
-                       } else {
-                               throw new Error('Video URL not supported.');
-                       }
-                       id = id[6];
-               } else {
-                       throw new Error('Missing video URL.');
-               }
-
-               this._videos[url] = {
-                       type: type,
-                       id: id,
-                       width: width,
-                       height: height
-               };
-
-               item.attr('data-video', url);
-
-               this.thumbnail(target, this._videos[url]);
-       };
-
-       /**
-        * Creates video thumbnail.
-        * @protected
-        * @param {jQuery} target - The target containing the video data.
-        * @param {Object} info - The video info object.
-        * @see `fetch`
-        */
-       Video.prototype.thumbnail = function(target, video) {
-
-               var tnLink,
-                       icon,
-                       path,
-                       dimensions = video.width && video.height ? 'style="width:' + video.width + 'px;height:' + video.height + 'px;"' : '',
-                       customTn = target.find('img'),
-                       srcType = 'src',
-                       lazyClass = '',
-                       settings = this._core.settings,
-                       create = function(path) {
-                               icon = '<div class="owl-video-play-icon"></div>';
-
-                               if (settings.lazyLoad) {
-                                       tnLink = '<div class="owl-video-tn ' + lazyClass + '" ' + srcType + '="' + path + '"></div>';
-                               } else {
-                                       tnLink = '<div class="owl-video-tn" style="opacity:1;background-image:url(' + path + ')"></div>';
-                               }
-                               target.after(tnLink);
-                               target.after(icon);
-                       };
-
-               // wrap video content into owl-video-wrapper div
-               target.wrap('<div class="owl-video-wrapper"' + dimensions + '></div>');
-
-               if (this._core.settings.lazyLoad) {
-                       srcType = 'data-src';
-                       lazyClass = 'owl-lazy';
-               }
-
-               // custom thumbnail
-               if (customTn.length) {
-                       create(customTn.attr(srcType));
-                       customTn.remove();
-                       return false;
-               }
-
-               if (video.type === 'youtube') {
-                       path = "http://img.youtube.com/vi/" + video.id + "/hqdefault.jpg";
-                       create(path);
-               } else if (video.type === 'vimeo') {
-                       $.ajax({
-                               type: 'GET',
-                               url: 'http://vimeo.com/api/v2/video/' + video.id + '.json',
-                               jsonp: 'callback',
-                               dataType: 'jsonp',
-                               success: function(data) {
-                                       path = data[0].thumbnail_large;
-                                       create(path);
-                               }
-                       });
-               }
-       };
-
-       /**
-        * Stops the current video.
-        * @public
-        */
-       Video.prototype.stop = function() {
-               this._core.trigger('stop', null, 'video');
-               this._playing.find('.owl-video-frame').remove();
-               this._playing.removeClass('owl-video-playing');
-               this._playing = null;
-       };
-
-       /**
-        * Starts the current video.
-        * @public
-        * @param {Event} ev - The event arguments.
-        */
-       Video.prototype.play = function(ev) {
-               this._core.trigger('play', null, 'video');
-
-               if (this._playing) {
-                       this.stop();
-               }
-
-               var target = $(ev.target || ev.srcElement),
-                       item = target.closest('.' + this._core.settings.itemClass),
-                       video = this._videos[item.attr('data-video')],
-                       width = video.width || '100%',
-                       height = video.height || this._core.$stage.height(),
-                       html, wrap;
-
-               if (video.type === 'youtube') {
-                       html = '<iframe width="' + width + '" height="' + height + '" src="http://www.youtube.com/embed/'
-                               + video.id + '?autoplay=1&v=' + video.id + '" frameborder="0" allowfullscreen></iframe>';
-               } else if (video.type === 'vimeo') {
-                       html = '<iframe src="http://player.vimeo.com/video/' + video.id + '?autoplay=1" width="' + width
-                               + '" height="' + height
-                               + '" frameborder="0" webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe>';
-               }
-
-               item.addClass('owl-video-playing');
-               this._playing = item;
-
-               wrap = $('<div style="height:' + height + 'px; width:' + width + 'px" class="owl-video-frame">'
-                       + html + '</div>');
-               target.after(wrap);
-       };
-
-       /**
-        * Checks whether an video is currently in full screen mode or not.
-        * @todo Bad style because looks like a readonly method but changes members.
-        * @protected
-        * @returns {Boolean}
-        */
-       Video.prototype.isInFullScreen = function() {
-
-               // if Vimeo Fullscreen mode
-               var element = document.fullscreenElement || document.mozFullScreenElement
-                       || document.webkitFullscreenElement;
-
-               if (element && $(element).parent().hasClass('owl-video-frame')) {
-                       this._core.speed(0);
-                       this._fullscreen = true;
-               }
-
-               if (element && this._fullscreen && this._playing) {
-                       return false;
-               }
-
-               // comming back from fullscreen
-               if (this._fullscreen) {
-                       this._fullscreen = false;
-                       return false;
-               }
-
-               // check full screen mode and window orientation
-               if (this._playing) {
-                       if (this._core.state.orientation !== window.orientation) {
-                               this._core.state.orientation = window.orientation;
-                               return false;
-                       }
-               }
-
-               return true;
-       };
-
-       /**
-        * Destroys the plugin.
-        */
-       Video.prototype.destroy = function() {
-               var handler, property;
-
-               this._core.$element.off('click.owl.video');
-
-               for (handler in this._handlers) {
-                       this._core.$element.off(handler, this._handlers[handler]);
-               }
-               for (property in Object.getOwnPropertyNames(this)) {
-                       typeof this[property] != 'function' && (this[property] = null);
-               }
-       };
-
-       $.fn.owlCarousel.Constructor.Plugins.Video = Video;
-
-})(window.Zepto || window.jQuery, window, document);
-
-/**
- * Animate Plugin
- * @version 2.0.0
- * @author Bartosz Wojciechowski
- * @license The MIT License (MIT)
- */
-;(function($, window, document, undefined) {
-
-       /**
-        * Creates the animate plugin.
-        * @class The Navigation Plugin
-        * @param {Owl} scope - The Owl Carousel
-        */
-       var Animate = function(scope) {
-               this.core = scope;
-               this.core.options = $.extend({}, Animate.Defaults, this.core.options);
-               this.swapping = true;
-               this.previous = undefined;
-               this.next = undefined;
-
-               this.handlers = {
-                       'change.owl.carousel': $.proxy(function(e) {
-                               if (e.property.name == 'position') {
-                                       this.previous = this.core.current();
-                                       this.next = e.property.value;
-                               }
-                       }, this),
-                       'drag.owl.carousel dragged.owl.carousel translated.owl.carousel': $.proxy(function(e) {
-                               this.swapping = e.type == 'translated';
-                       }, this),
-                       'translate.owl.carousel': $.proxy(function(e) {
-                               if (this.swapping && (this.core.options.animateOut || this.core.options.animateIn)) {
-                                       this.swap();
-                               }
-                       }, this)
-               };
-
-               this.core.$element.on(this.handlers);
-       };
-
-       /**
-        * Default options.
-        * @public
-        */
-       Animate.Defaults = {
-               animateOut: false,
-               animateIn: false
-       };
-
-       /**
-        * Toggles the animation classes whenever an translations starts.
-        * @protected
-        * @returns {Boolean|undefined}
-        */
-       Animate.prototype.swap = function() {
-
-               if (this.core.settings.items !== 1 || !this.core.support3d) {
-                       return;
-               }
-
-               this.core.speed(0);
-
-               var left,
-                       clear = $.proxy(this.clear, this),
-                       previous = this.core.$stage.children().eq(this.previous),
-                       next = this.core.$stage.children().eq(this.next),
-                       incoming = this.core.settings.animateIn,
-                       outgoing = this.core.settings.animateOut;
-
-               if (this.core.current() === this.previous) {
-                       return;
-               }
-
-               if (outgoing) {
-                       left = this.core.coordinates(this.previous) - this.core.coordinates(this.next);
-                       previous.css( { 'left': left + 'px' } )
-                               .addClass('animated owl-animated-out')
-                               .addClass(outgoing)
-                               .one('webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend animationend', clear);
-               }
-
-               if (incoming) {
-                       next.addClass('animated owl-animated-in')
-                               .addClass(incoming)
-                               .one('webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend animationend', clear);
-               }
-       };
-
-       Animate.prototype.clear = function(e) {
-               $(e.target).css( { 'left': '' } )
-                       .removeClass('animated owl-animated-out owl-animated-in')
-                       .removeClass(this.core.settings.animateIn)
-                       .removeClass(this.core.settings.animateOut);
-               this.core.transitionEnd();
-       }
-
-       /**
-        * Destroys the plugin.
-        * @public
-        */
-       Animate.prototype.destroy = function() {
-               var handler, property;
-
-               for (handler in this.handlers) {
-                       this.core.$element.off(handler, this.handlers[handler]);
-               }
-               for (property in Object.getOwnPropertyNames(this)) {
-                       typeof this[property] != 'function' && (this[property] = null);
-               }
-       };
-
-       $.fn.owlCarousel.Constructor.Plugins.Animate = Animate;
-
-})(window.Zepto || window.jQuery, window, document);
-
-/**
- * Autoplay Plugin
- * @version 2.0.0
- * @author Bartosz Wojciechowski
- * @license The MIT License (MIT)
- */
-;(function($, window, document, undefined) {
-
-       /**
-        * Creates the autoplay plugin.
-        * @class The Autoplay Plugin
-        * @param {Owl} scope - The Owl Carousel
-        */
-       var Autoplay = function(scope) {
-               this.core = scope;
-               this.core.options = $.extend({}, Autoplay.Defaults, this.core.options);
-
-               this.handlers = {
-                       'translated.owl.carousel refreshed.owl.carousel': $.proxy(function() {
-                               this.autoplay();
-                       }, this),
-                       'play.owl.autoplay': $.proxy(function(e, t, s) {
-                               this.play(t, s);
-                       }, this),
-                       'stop.owl.autoplay': $.proxy(function() {
-                               this.stop();
-                       }, this),
-                       'mouseover.owl.autoplay': $.proxy(function() {
-                               if (this.core.settings.autoplayHoverPause) {
-                                       this.pause();
-                               }
-                       }, this),
-                       'mouseleave.owl.autoplay': $.proxy(function() {
-                               if (this.core.settings.autoplayHoverPause) {
-                                       this.autoplay();
-                               }
-                       }, this)
-               };
-
-               this.core.$element.on(this.handlers);
-       };
-
-       /**
-        * Default options.
-        * @public
-        */
-       Autoplay.Defaults = {
-               autoplay: false,
-               autoplayTimeout: 5000,
-               autoplayHoverPause: false,
-               autoplaySpeed: false
-       };
-
-       /**
-        * @protected
-        * @todo Must be documented.
-        */
-       Autoplay.prototype.autoplay = function() {
-               if (this.core.settings.autoplay && !this.core.state.videoPlay) {
-                       window.clearInterval(this.interval);
-
-                       this.interval = window.setInterval($.proxy(function() {
-                               this.play();
-                       }, this), this.core.settings.autoplayTimeout);
-               } else {
-                       window.clearInterval(this.interval);
-               }
-       };
-
-       /**
-        * Starts the autoplay.
-        * @public
-        * @param {Number} [timeout] - ...
-        * @param {Number} [speed] - ...
-        * @returns {Boolean|undefined} - ...
-        * @todo Must be documented.
-        */
-       Autoplay.prototype.play = function(timeout, speed) {
-               // if tab is inactive - doesnt work in <IE10
-               if (document.hidden === true) {
-                       return;
-               }
-
-               if (this.core.state.isTouch || this.core.state.isScrolling
-                       || this.core.state.isSwiping || this.core.state.inMotion) {
-                       return;
-               }
-
-               if (this.core.settings.autoplay === false) {
-                       window.clearInterval(this.interval);
-                       return;
-               }
-
-               this.core.next(this.core.settings.autoplaySpeed);
-       };
-
-       /**
-        * Stops the autoplay.
-        * @public
-        */
-       Autoplay.prototype.stop = function() {
-               window.clearInterval(this.interval);
-       };
-
-       /**
-        * Pauses the autoplay.
-        * @public
-        */
-       Autoplay.prototype.pause = function() {
-               window.clearInterval(this.interval);
-       };
-
-       /**
-        * Destroys the plugin.
-        */
-       Autoplay.prototype.destroy = function() {
-               var handler, property;
-
-               window.clearInterval(this.interval);
-
-               for (handler in this.handlers) {
-                       this.core.$element.off(handler, this.handlers[handler]);
-               }
-               for (property in Object.getOwnPropertyNames(this)) {
-                       typeof this[property] != 'function' && (this[property] = null);
-               }
-       };
-
-       $.fn.owlCarousel.Constructor.Plugins.autoplay = Autoplay;
-
-})(window.Zepto || window.jQuery, window, document);
-
-/**
- * Navigation Plugin
- * @version 2.0.0
- * @author Artus Kolanowski
- * @license The MIT License (MIT)
- */
-;(function($, window, document, undefined) {
-       'use strict';
-
-       /**
-        * Creates the navigation plugin.
-        * @class The Navigation Plugin
-        * @param {Owl} carousel - The Owl Carousel.
-        */
-       var Navigation = function(carousel) {
-               /**
-                * Reference to the core.
-                * @protected
-                * @type {Owl}
-                */
-               this._core = carousel;
-
-               /**
-                * Indicates whether the plugin is initialized or not.
-                * @protected
-                * @type {Boolean}
-                */
-               this._initialized = false;
-
-               /**
-                * The current paging indexes.
-                * @protected
-                * @type {Array}
-                */
-               this._pages = [];
-
-               /**
-                * All DOM elements of the user interface.
-                * @protected
-                * @type {Object}
-                */
-               this._controls = {};
-
-               /**
-                * Markup for an indicator.
-                * @protected
-                * @type {Array.<String>}
-                */
-               this._templates = [];
-
-               /**
-                * The carousel element.
-                * @type {jQuery}
-                */
-               this.$element = this._core.$element;
-
-               /**
-                * Overridden methods of the carousel.
-                * @protected
-                * @type {Object}
-                */
-               this._overrides = {
-                       next: this._core.next,
-                       prev: this._core.prev,
-                       to: this._core.to
-               };
-
-               /**
-                * All event handlers.
-                * @protected
-                * @type {Object}
-                */
-               this._handlers = {
-                       'prepared.owl.carousel': $.proxy(function(e) {
-                               if (this._core.settings.dotsData) {
-                                       this._templates.push($(e.content).find('[data-dot]').andSelf('[data-dot]').attr('data-dot'));
-                               }
-                       }, this),
-                       'add.owl.carousel': $.proxy(function(e) {
-                               if (this._core.settings.dotsData) {
-                                       this._templates.splice(e.position, 0, $(e.content).find('[data-dot]').andSelf('[data-dot]').attr('data-dot'));
-                               }
-                       }, this),
-                       'remove.owl.carousel prepared.owl.carousel': $.proxy(function(e) {
-                               if (this._core.settings.dotsData) {
-                                       this._templates.splice(e.position, 1);
-                               }
-                       }, this),
-                       'change.owl.carousel': $.proxy(function(e) {
-                               if (e.property.name == 'position') {
-                                       if (!this._core.state.revert && !this._core.settings.loop && this._core.settings.navRewind) {
-                                               var current = this._core.current(),
-                                                       maximum = this._core.maximum(),
-                                                       minimum = this._core.minimum();
-                                               e.data = e.property.value > maximum
-                                                       ? current >= maximum ? minimum : maximum
-                                                       : e.property.value < minimum ? maximum : e.property.value;
-                                       }
-                               }
-                       }, this),
-                       'changed.owl.carousel': $.proxy(function(e) {
-                               if (e.property.name == 'position') {
-                                       this.draw();
-                               }
-                       }, this),
-                       'refreshed.owl.carousel': $.proxy(function() {
-                               if (!this._initialized) {
-                                       this.initialize();
-                                       this._initialized = true;
-                               }
-                               this._core.trigger('refresh', null, 'navigation');
-                               this.update();
-                               this.draw();
-                               this._core.trigger('refreshed', null, 'navigation');
-                       }, this)
-               };
-
-               // set default options
-               this._core.options = $.extend({}, Navigation.Defaults, this._core.options);
-
-               // register event handlers
-               this.$element.on(this._handlers);
-       }
-
-       /**
-        * Default options.
-        * @public
-        * @todo Rename `slideBy` to `navBy`
-        */
-       Navigation.Defaults = {
-               nav: false,
-               navRewind: true,
-               navText: [ 'prev', 'next' ],
-               navSpeed: false,
-               navElement: 'div',
-               navContainer: false,
-               navContainerClass: 'owl-nav',
-               navClass: [ 'owl-prev', 'owl-next' ],
-               slideBy: 1,
-               dotClass: 'owl-dot',
-               dotsClass: 'owl-dots',
-               dots: true,
-               dotsEach: false,
-               dotData: false,
-               dotsSpeed: false,
-               dotsContainer: false,
-               controlsClass: 'owl-controls'
-       }
-
-       /**
-        * Initializes the layout of the plugin and extends the carousel.
-        * @protected
-        */
-       Navigation.prototype.initialize = function() {
-               var $container, override,
-                       options = this._core.settings;
-
-               // create the indicator template
-               if (!options.dotsData) {
-                       this._templates = [ $('<div>')
-                               .addClass(options.dotClass)
-                               .append($('<span>'))
-                               .prop('outerHTML') ];
-               }
-
-               // create controls container if needed
-               if (!options.navContainer || !options.dotsContainer) {
-                       this._controls.$container = $('<div>')
-                               .addClass(options.controlsClass)
-                               .appendTo(this.$element);
-               }
-
-               // create DOM structure for absolute navigation
-               this._controls.$indicators = options.dotsContainer ? $(options.dotsContainer)
-                       : $('<div>').hide().addClass(options.dotsClass).appendTo(this._controls.$container);
-
-               this._controls.$indicators.on('click', 'div', $.proxy(function(e) {
-                       var index = $(e.target).parent().is(this._controls.$indicators)
-                               ? $(e.target).index() : $(e.target).parent().index();
-
-                       e.preventDefault();
-
-                       this.to(index, options.dotsSpeed);
-               }, this));
-
-               // create DOM structure for relative navigation
-               $container = options.navContainer ? $(options.navContainer)
-                       : $('<div>').addClass(options.navContainerClass).prependTo(this._controls.$container);
-
-               this._controls.$next = $('<' + options.navElement + '>');
-               this._controls.$previous = this._controls.$next.clone();
-
-               this._controls.$previous
-                       .addClass(options.navClass[0])
-                       .html(options.navText[0])
-                       .hide()
-                       .prependTo($container)
-                       .on('click', $.proxy(function(e) {
-                               this.prev(options.navSpeed);
-                       }, this));
-               this._controls.$next
-                       .addClass(options.navClass[1])
-                       .html(options.navText[1])
-                       .hide()
-                       .appendTo($container)
-                       .on('click', $.proxy(function(e) {
-                               this.next(options.navSpeed);
-                       }, this));
-
-               // override public methods of the carousel
-               for (override in this._overrides) {
-                       this._core[override] = $.proxy(this[override], this);
-               }
-       }
-
-       /**
-        * Destroys the plugin.
-        * @protected
-        */
-       Navigation.prototype.destroy = function() {
-               var handler, control, property, override;
-
-               for (handler in this._handlers) {
-                       this.$element.off(handler, this._handlers[handler]);
-               }
-               for (control in this._controls) {
-                       this._controls[control].remove();
-               }
-               for (override in this.overides) {
-                       this._core[override] = this._overrides[override];
-               }
-               for (property in Object.getOwnPropertyNames(this)) {
-                       typeof this[property] != 'function' && (this[property] = null);
-               }
-       }
-
-       /**
-        * Updates the internal state.
-        * @protected
-        */
-       Navigation.prototype.update = function() {
-               var i, j, k,
-                       options = this._core.settings,
-                       lower = this._core.clones().length / 2,
-                       upper = lower + this._core.items().length,
-                       size = options.center || options.autoWidth || options.dotData
-                               ? 1 : options.dotsEach || options.items;
-
-               if (options.slideBy !== 'page') {
-                       options.slideBy = Math.min(options.slideBy, options.items);
-               }
-
-               if (options.dots || options.slideBy == 'page') {
-                       this._pages = [];
-
-                       for (i = lower, j = 0, k = 0; i < upper; i++) {
-                               if (j >= size || j === 0) {
-                                       this._pages.push({
-                                               start: i - lower,
-                                               end: i - lower + size - 1
-                                       });
-                                       j = 0, ++k;
-                               }
-                               j += this._core.mergers(this._core.relative(i));
-                       }
-               }
-       }
-
-       /**
-        * Draws the user interface.
-        * @todo The option `dotData` wont work.
-        * @protected
-        */
-       Navigation.prototype.draw = function() {
-               var difference, i, html = '',
-                       options = this._core.settings,
-                       $items = this._core.$stage.children(),
-                       index = this._core.relative(this._core.current());
-
-               if (options.nav && !options.loop && !options.navRewind) {
-                       this._controls.$previous.toggleClass('disabled', index <= 0);
-                       this._controls.$next.toggleClass('disabled', index >= this._core.maximum());
-               }
-
-               this._controls.$previous.toggle(options.nav);
-               this._controls.$next.toggle(options.nav);
-
-               if (options.dots) {
-                       difference = this._pages.length - this._controls.$indicators.children().length;
-
-                       if (options.dotData && difference !== 0) {
-                               for (i = 0; i < this._controls.$indicators.children().length; i++) {
-                                       html += this._templates[this._core.relative(i)];
-                               }
-                               this._controls.$indicators.html(html);
-                       } else if (difference > 0) {
-                               html = new Array(difference + 1).join(this._templates[0]);
-                               this._controls.$indicators.append(html);
-                       } else if (difference < 0) {
-                               this._controls.$indicators.children().slice(difference).remove();
-                       }
-
-                       this._controls.$indicators.find('.active').removeClass('active');
-                       this._controls.$indicators.children().eq($.inArray(this.current(), this._pages)).addClass('active');
-               }
-
-               this._controls.$indicators.toggle(options.dots);
-       }
-
-       /**
-        * Extends event data.
-        * @protected
-        * @param {Event} event - The event object which gets thrown.
-        */
-       Navigation.prototype.onTrigger = function(event) {
-               var settings = this._core.settings;
-
-               event.page = {
-                       index: $.inArray(this.current(), this._pages),
-                       count: this._pages.length,
-                       size: settings && (settings.center || settings.autoWidth || settings.dotData
-                               ? 1 : settings.dotsEach || settings.items)
-               };
-       }
-
-       /**
-        * Gets the current page position of the carousel.
-        * @protected
-        * @returns {Number}
-        */
-       Navigation.prototype.current = function() {
-               var index = this._core.relative(this._core.current());
-               return $.grep(this._pages, function(o) {
-                       return o.start <= index && o.end >= index;
-               }).pop();
-       }
-
-       /**
-        * Gets the current succesor/predecessor position.
-        * @protected
-        * @returns {Number}
-        */
-       Navigation.prototype.getPosition = function(successor) {
-               var position, length,
-                       options = this._core.settings;
-
-               if (options.slideBy == 'page') {
-                       position = $.inArray(this.current(), this._pages);
-                       length = this._pages.length;
-                       successor ? ++position : --position;
-                       position = this._pages[((position % length) + length) % length].start;
-               } else {
-                       position = this._core.relative(this._core.current());
-                       length = this._core.items().length;
-                       successor ? position += options.slideBy : position -= options.slideBy;
-               }
-               return position;
-       }
-
-       /**
-        * Slides to the next item or page.
-        * @public
-        * @param {Number} [speed=false] - The time in milliseconds for the transition.
-        */
-       Navigation.prototype.next = function(speed) {
-               $.proxy(this._overrides.to, this._core)(this.getPosition(true), speed);
-       }
-
-       /**
-        * Slides to the previous item or page.
-        * @public
-        * @param {Number} [speed=false] - The time in milliseconds for the transition.
-        */
-       Navigation.prototype.prev = function(speed) {
-               $.proxy(this._overrides.to, this._core)(this.getPosition(false), speed);
-       }
-
-       /**
-        * Slides to the specified item or page.
-        * @public
-        * @param {Number} position - The position of the item or page.
-        * @param {Number} [speed] - The time in milliseconds for the transition.
-        * @param {Boolean} [standard=false] - Whether to use the standard behaviour or not.
-        */
-       Navigation.prototype.to = function(position, speed, standard) {
-               var length;
-
-               if (!standard) {
-                       length = this._pages.length;
-                       $.proxy(this._overrides.to, this._core)(this._pages[((position % length) + length) % length].start, speed);
-               } else {
-                       $.proxy(this._overrides.to, this._core)(position, speed);
-               }
-       }
-
-       $.fn.owlCarousel.Constructor.Plugins.Navigation = Navigation;
-
-})(window.Zepto || window.jQuery, window, document);
-
-/**
- * Hash Plugin
- * @version 2.0.0
- * @author Artus Kolanowski
- * @license The MIT License (MIT)
- */
-;(function($, window, document, undefined) {
-       'use strict';
-
-       /**
-        * Creates the hash plugin.
-        * @class The Hash Plugin
-        * @param {Owl} carousel - The Owl Carousel
-        */
-       var Hash = function(carousel) {
-               /**
-                * Reference to the core.
-                * @protected
-                * @type {Owl}
-                */
-               this._core = carousel;
-
-               /**
-                * Hash table for the hashes.
-                * @protected
-                * @type {Object}
-                */
-               this._hashes = {};
-
-               /**
-                * The carousel element.
-                * @type {jQuery}
-                */
-               this.$element = this._core.$element;
-
-               /**
-                * All event handlers.
-                * @protected
-                * @type {Object}
-                */
-               this._handlers = {
-                       'initialized.owl.carousel': $.proxy(function() {
-                               if (this._core.settings.startPosition == 'URLHash') {
-                                       $(window).trigger('hashchange.owl.navigation');
-                               }
-                       }, this),
-                       'prepared.owl.carousel': $.proxy(function(e) {
-                               var hash = $(e.content).find('[data-hash]').andSelf('[data-hash]').attr('data-hash');
-                               this._hashes[hash] = e.content;
-                       }, this)
-               };
-
-               // set default options
-               this._core.options = $.extend({}, Hash.Defaults, this._core.options);
-
-               // register the event handlers
-               this.$element.on(this._handlers);
-
-               // register event listener for hash navigation
-               $(window).on('hashchange.owl.navigation', $.proxy(function() {
-                       var hash = window.location.hash.substring(1),
-                               items = this._core.$stage.children(),
-                               position = this._hashes[hash] && items.index(this._hashes[hash]) || 0;
-
-                       if (!hash) {
-                               return false;
-                       }
-
-                       this._core.to(position, false, true);
-               }, this));
-       }
-
-       /**
-        * Default options.
-        * @public
-        */
-       Hash.Defaults = {
-               URLhashListener: false
-       }
-
-       /**
-        * Destroys the plugin.
-        * @public
-        */
-       Hash.prototype.destroy = function() {
-               var handler, property;
-
-               $(window).off('hashchange.owl.navigation');
-
-               for (handler in this._handlers) {
-                       this._core.$element.off(handler, this._handlers[handler]);
-               }
-               for (property in Object.getOwnPropertyNames(this)) {
-                       typeof this[property] != 'function' && (this[property] = null);
-               }
-       }
-
-       $.fn.owlCarousel.Constructor.Plugins.Hash = Hash;
-
-})(window.Zepto || window.jQuery, window, document);
diff --git a/src/main/resources/META-INF/resources/designer/lib/owl.carousel.min.js b/src/main/resources/META-INF/resources/designer/lib/owl.carousel.min.js
deleted file mode 100644 (file)
index f2a15f6..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-!function(a,b,c,d){function e(b,c){this.settings=null,this.options=a.extend({},e.Defaults,c),this.$element=a(b),this.drag=a.extend({},m),this.state=a.extend({},n),this.e=a.extend({},o),this._plugins={},this._supress={},this._current=null,this._speed=null,this._coordinates=[],this._breakpoint=null,this._width=null,this._items=[],this._clones=[],this._mergers=[],this._invalidated={},this._pipe=[],a.each(e.Plugins,a.proxy(function(a,b){this._plugins[a[0].toLowerCase()+a.slice(1)]=new b(this)},this)),a.each(e.Pipe,a.proxy(function(b,c){this._pipe.push({filter:c.filter,run:a.proxy(c.run,this)})},this)),this.setup(),this.initialize()}function f(a){if(a.touches!==d)return{x:a.touches[0].pageX,y:a.touches[0].pageY};if(a.touches===d){if(a.pageX!==d)return{x:a.pageX,y:a.pageY};if(a.pageX===d)return{x:a.clientX,y:a.clientY}}}function g(a){var b,d,e=c.createElement("div"),f=a;for(b in f)if(d=f[b],"undefined"!=typeof e.style[d])return e=null,[d,b];return[!1]}function h(){return g(["transition","WebkitTransition","MozTransition","OTransition"])[1]}function i(){return g(["transform","WebkitTransform","MozTransform","OTransform","msTransform"])[0]}function j(){return g(["perspective","webkitPerspective","MozPerspective","OPerspective","MsPerspective"])[0]}function k(){return"ontouchstart"in b||!!navigator.msMaxTouchPoints}function l(){return b.navigator.msPointerEnabled}var m,n,o;m={start:0,startX:0,startY:0,current:0,currentX:0,currentY:0,offsetX:0,offsetY:0,distance:null,startTime:0,endTime:0,updatedX:0,targetEl:null},n={isTouch:!1,isScrolling:!1,isSwiping:!1,direction:!1,inMotion:!1},o={_onDragStart:null,_onDragMove:null,_onDragEnd:null,_transitionEnd:null,_resizer:null,_responsiveCall:null,_goToLoop:null,_checkVisibile:null},e.Defaults={items:3,loop:!1,center:!1,mouseDrag:!0,touchDrag:!0,pullDrag:!0,freeDrag:!1,margin:0,stagePadding:0,merge:!1,mergeFit:!0,autoWidth:!1,startPosition:0,rtl:!1,smartSpeed:250,fluidSpeed:!1,dragEndSpeed:!1,responsive:{},responsiveRefreshRate:200,responsiveBaseElement:b,responsiveClass:!1,fallbackEasing:"swing",info:!1,nestedItemSelector:!1,itemElement:"div",stageElement:"div",themeClass:"owl-theme",baseClass:"owl-carousel",itemClass:"owl-item",centerClass:"center",activeClass:"active"},e.Width={Default:"default",Inner:"inner",Outer:"outer"},e.Plugins={},e.Pipe=[{filter:["width","items","settings"],run:function(a){a.current=this._items&&this._items[this.relative(this._current)]}},{filter:["items","settings"],run:function(){var a=this._clones,b=this.$stage.children(".cloned");(b.length!==a.length||!this.settings.loop&&a.length>0)&&(this.$stage.children(".cloned").remove(),this._clones=[])}},{filter:["items","settings"],run:function(){var a,b,c=this._clones,d=this._items,e=this.settings.loop?c.length-Math.max(2*this.settings.items,4):0;for(a=0,b=Math.abs(e/2);b>a;a++)e>0?(this.$stage.children().eq(d.length+c.length-1).remove(),c.pop(),this.$stage.children().eq(0).remove(),c.pop()):(c.push(c.length/2),this.$stage.append(d[c[c.length-1]].clone().addClass("cloned")),c.push(d.length-1-(c.length-1)/2),this.$stage.prepend(d[c[c.length-1]].clone().addClass("cloned")))}},{filter:["width","items","settings"],run:function(){var a,b,c,d=this.settings.rtl?1:-1,e=(this.width()/this.settings.items).toFixed(3),f=0;for(this._coordinates=[],b=0,c=this._clones.length+this._items.length;c>b;b++)a=this._mergers[this.relative(b)],a=this.settings.mergeFit&&Math.min(a,this.settings.items)||a,f+=(this.settings.autoWidth?this._items[this.relative(b)].width()+this.settings.margin:e*a)*d,this._coordinates.push(f)}},{filter:["width","items","settings"],run:function(){var b,c,d=(this.width()/this.settings.items).toFixed(3),e={width:Math.abs(this._coordinates[this._coordinates.length-1])+2*this.settings.stagePadding,"padding-left":this.settings.stagePadding||"","padding-right":this.settings.stagePadding||""};if(this.$stage.css(e),e={width:this.settings.autoWidth?"auto":d-this.settings.margin},e[this.settings.rtl?"margin-left":"margin-right"]=this.settings.margin,!this.settings.autoWidth&&a.grep(this._mergers,function(a){return a>1}).length>0)for(b=0,c=this._coordinates.length;c>b;b++)e.width=Math.abs(this._coordinates[b])-Math.abs(this._coordinates[b-1]||0)-this.settings.margin,this.$stage.children().eq(b).css(e);else this.$stage.children().css(e)}},{filter:["width","items","settings"],run:function(a){a.current&&this.reset(this.$stage.children().index(a.current))}},{filter:["position"],run:function(){this.animate(this.coordinates(this._current))}},{filter:["width","position","items","settings"],run:function(){var a,b,c,d,e=this.settings.rtl?1:-1,f=2*this.settings.stagePadding,g=this.coordinates(this.current())+f,h=g+this.width()*e,i=[];for(c=0,d=this._coordinates.length;d>c;c++)a=this._coordinates[c-1]||0,b=Math.abs(this._coordinates[c])+f*e,(this.op(a,"<=",g)&&this.op(a,">",h)||this.op(b,"<",g)&&this.op(b,">",h))&&i.push(c);this.$stage.children("."+this.settings.activeClass).removeClass(this.settings.activeClass),this.$stage.children(":eq("+i.join("), :eq(")+")").addClass(this.settings.activeClass),this.settings.center&&(this.$stage.children("."+this.settings.centerClass).removeClass(this.settings.centerClass),this.$stage.children().eq(this.current()).addClass(this.settings.centerClass))}}],e.prototype.initialize=function(){if(this.trigger("initialize"),this.$element.addClass(this.settings.baseClass).addClass(this.settings.themeClass).toggleClass("owl-rtl",this.settings.rtl),this.browserSupport(),this.settings.autoWidth&&this.state.imagesLoaded!==!0){var b,c,e;if(b=this.$element.find("img"),c=this.settings.nestedItemSelector?"."+this.settings.nestedItemSelector:d,e=this.$element.children(c).width(),b.length&&0>=e)return this.preloadAutoWidthImages(b),!1}this.$element.addClass("owl-loading"),this.$stage=a("<"+this.settings.stageElement+' class="owl-stage"/>').wrap('<div class="owl-stage-outer">'),this.$element.append(this.$stage.parent()),this.replace(this.$element.children().not(this.$stage.parent())),this._width=this.$element.width(),this.refresh(),this.$element.removeClass("owl-loading").addClass("owl-loaded"),this.eventsCall(),this.internalEvents(),this.addTriggerableEvents(),this.trigger("initialized")},e.prototype.setup=function(){var b=this.viewport(),c=this.options.responsive,d=-1,e=null;c?(a.each(c,function(a){b>=a&&a>d&&(d=Number(a))}),e=a.extend({},this.options,c[d]),delete e.responsive,e.responsiveClass&&this.$element.attr("class",function(a,b){return b.replace(/\b owl-responsive-\S+/g,"")}).addClass("owl-responsive-"+d)):e=a.extend({},this.options),(null===this.settings||this._breakpoint!==d)&&(this.trigger("change",{property:{name:"settings",value:e}}),this._breakpoint=d,this.settings=e,this.invalidate("settings"),this.trigger("changed",{property:{name:"settings",value:this.settings}}))},e.prototype.optionsLogic=function(){this.$element.toggleClass("owl-center",this.settings.center),this.settings.loop&&this._items.length<this.settings.items&&(this.settings.loop=!1),this.settings.autoWidth&&(this.settings.stagePadding=!1,this.settings.merge=!1)},e.prototype.prepare=function(b){var c=this.trigger("prepare",{content:b});return c.data||(c.data=a("<"+this.settings.itemElement+"/>").addClass(this.settings.itemClass).append(b)),this.trigger("prepared",{content:c.data}),c.data},e.prototype.update=function(){for(var b=0,c=this._pipe.length,d=a.proxy(function(a){return this[a]},this._invalidated),e={};c>b;)(this._invalidated.all||a.grep(this._pipe[b].filter,d).length>0)&&this._pipe[b].run(e),b++;this._invalidated={}},e.prototype.width=function(a){switch(a=a||e.Width.Default){case e.Width.Inner:case e.Width.Outer:return this._width;default:return this._width-2*this.settings.stagePadding+this.settings.margin}},e.prototype.refresh=function(){if(0===this._items.length)return!1;(new Date).getTime();this.trigger("refresh"),this.setup(),this.optionsLogic(),this.$stage.addClass("owl-refresh"),this.update(),this.$stage.removeClass("owl-refresh"),this.state.orientation=b.orientation,this.watchVisibility(),this.trigger("refreshed")},e.prototype.eventsCall=function(){this.e._onDragStart=a.proxy(function(a){this.onDragStart(a)},this),this.e._onDragMove=a.proxy(function(a){this.onDragMove(a)},this),this.e._onDragEnd=a.proxy(function(a){this.onDragEnd(a)},this),this.e._onResize=a.proxy(function(a){this.onResize(a)},this),this.e._transitionEnd=a.proxy(function(a){this.transitionEnd(a)},this),this.e._preventClick=a.proxy(function(a){this.preventClick(a)},this)},e.prototype.onThrottledResize=function(){b.clearTimeout(this.resizeTimer),this.resizeTimer=b.setTimeout(this.e._onResize,this.settings.responsiveRefreshRate)},e.prototype.onResize=function(){return this._items.length?this._width===this.$element.width()?!1:this.trigger("resize").isDefaultPrevented()?!1:(this._width=this.$element.width(),this.invalidate("width"),this.refresh(),void this.trigger("resized")):!1},e.prototype.eventsRouter=function(a){var b=a.type;"mousedown"===b||"touchstart"===b?this.onDragStart(a):"mousemove"===b||"touchmove"===b?this.onDragMove(a):"mouseup"===b||"touchend"===b?this.onDragEnd(a):"touchcancel"===b&&this.onDragEnd(a)},e.prototype.internalEvents=function(){var c=(k(),l());this.settings.mouseDrag?(this.$stage.on("mousedown",a.proxy(function(a){this.eventsRouter(a)},this)),this.$stage.on("dragstart",function(){return!1}),this.$stage.get(0).onselectstart=function(){return!1}):this.$element.addClass("owl-text-select-on"),this.settings.touchDrag&&!c&&this.$stage.on("touchstart touchcancel",a.proxy(function(a){this.eventsRouter(a)},this)),this.transitionEndVendor&&this.on(this.$stage.get(0),this.transitionEndVendor,this.e._transitionEnd,!1),this.settings.responsive!==!1&&this.on(b,"resize",a.proxy(this.onThrottledResize,this))},e.prototype.onDragStart=function(d){var e,g,h,i;if(e=d.originalEvent||d||b.event,3===e.which||this.state.isTouch)return!1;if("mousedown"===e.type&&this.$stage.addClass("owl-grab"),this.trigger("drag"),this.drag.startTime=(new Date).getTime(),this.speed(0),this.state.isTouch=!0,this.state.isScrolling=!1,this.state.isSwiping=!1,this.drag.distance=0,g=f(e).x,h=f(e).y,this.drag.offsetX=this.$stage.position().left,this.drag.offsetY=this.$stage.position().top,this.settings.rtl&&(this.drag.offsetX=this.$stage.position().left+this.$stage.width()-this.width()+this.settings.margin),this.state.inMotion&&this.support3d)i=this.getTransformProperty(),this.drag.offsetX=i,this.animate(i),this.state.inMotion=!0;else if(this.state.inMotion&&!this.support3d)return this.state.inMotion=!1,!1;this.drag.startX=g-this.drag.offsetX,this.drag.startY=h-this.drag.offsetY,this.drag.start=g-this.drag.startX,this.drag.targetEl=e.target||e.srcElement,this.drag.updatedX=this.drag.start,("IMG"===this.drag.targetEl.tagName||"A"===this.drag.targetEl.tagName)&&(this.drag.targetEl.draggable=!1),a(c).on("mousemove.owl.dragEvents mouseup.owl.dragEvents touchmove.owl.dragEvents touchend.owl.dragEvents",a.proxy(function(a){this.eventsRouter(a)},this))},e.prototype.onDragMove=function(a){var c,e,g,h,i,j;this.state.isTouch&&(this.state.isScrolling||(c=a.originalEvent||a||b.event,e=f(c).x,g=f(c).y,this.drag.currentX=e-this.drag.startX,this.drag.currentY=g-this.drag.startY,this.drag.distance=this.drag.currentX-this.drag.offsetX,this.drag.distance<0?this.state.direction=this.settings.rtl?"right":"left":this.drag.distance>0&&(this.state.direction=this.settings.rtl?"left":"right"),this.settings.loop?this.op(this.drag.currentX,">",this.coordinates(this.minimum()))&&"right"===this.state.direction?this.drag.currentX-=(this.settings.center&&this.coordinates(0))-this.coordinates(this._items.length):this.op(this.drag.currentX,"<",this.coordinates(this.maximum()))&&"left"===this.state.direction&&(this.drag.currentX+=(this.settings.center&&this.coordinates(0))-this.coordinates(this._items.length)):(h=this.coordinates(this.settings.rtl?this.maximum():this.minimum()),i=this.coordinates(this.settings.rtl?this.minimum():this.maximum()),j=this.settings.pullDrag?this.drag.distance/5:0,this.drag.currentX=Math.max(Math.min(this.drag.currentX,h+j),i+j)),(this.drag.distance>8||this.drag.distance<-8)&&(c.preventDefault!==d?c.preventDefault():c.returnValue=!1,this.state.isSwiping=!0),this.drag.updatedX=this.drag.currentX,(this.drag.currentY>16||this.drag.currentY<-16)&&this.state.isSwiping===!1&&(this.state.isScrolling=!0,this.drag.updatedX=this.drag.start),this.animate(this.drag.updatedX)))},e.prototype.onDragEnd=function(b){var d,e,f;if(this.state.isTouch){if("mouseup"===b.type&&this.$stage.removeClass("owl-grab"),this.trigger("dragged"),this.drag.targetEl.removeAttribute("draggable"),this.state.isTouch=!1,this.state.isScrolling=!1,this.state.isSwiping=!1,0===this.drag.distance&&this.state.inMotion!==!0)return this.state.inMotion=!1,!1;this.drag.endTime=(new Date).getTime(),d=this.drag.endTime-this.drag.startTime,e=Math.abs(this.drag.distance),(e>3||d>300)&&this.removeClick(this.drag.targetEl),f=this.closest(this.drag.updatedX),this.speed(this.settings.dragEndSpeed||this.settings.smartSpeed),this.current(f),this.invalidate("position"),this.update(),this.settings.pullDrag||this.drag.updatedX!==this.coordinates(f)||this.transitionEnd(),this.drag.distance=0,a(c).off(".owl.dragEvents")}},e.prototype.removeClick=function(c){this.drag.targetEl=c,a(c).on("click.preventClick",this.e._preventClick),b.setTimeout(function(){a(c).off("click.preventClick")},300)},e.prototype.preventClick=function(b){b.preventDefault?b.preventDefault():b.returnValue=!1,b.stopPropagation&&b.stopPropagation(),a(b.target).off("click.preventClick")},e.prototype.getTransformProperty=function(){var a,c;return a=b.getComputedStyle(this.$stage.get(0),null).getPropertyValue(this.vendorName+"transform"),a=a.replace(/matrix(3d)?\(|\)/g,"").split(","),c=16===a.length,c!==!0?a[4]:a[12]},e.prototype.closest=function(b){var c=-1,d=30,e=this.width(),f=this.coordinates();return this.settings.freeDrag||a.each(f,a.proxy(function(a,g){return b>g-d&&g+d>b?c=a:this.op(b,"<",g)&&this.op(b,">",f[a+1]||g-e)&&(c="left"===this.state.direction?a+1:a),-1===c},this)),this.settings.loop||(this.op(b,">",f[this.minimum()])?c=b=this.minimum():this.op(b,"<",f[this.maximum()])&&(c=b=this.maximum())),c},e.prototype.animate=function(b){this.trigger("translate"),this.state.inMotion=this.speed()>0,this.support3d?this.$stage.css({transform:"translate3d("+b+"px,0px, 0px)",transition:this.speed()/1e3+"s"}):this.state.isTouch?this.$stage.css({left:b+"px"}):this.$stage.animate({left:b},this.speed()/1e3,this.settings.fallbackEasing,a.proxy(function(){this.state.inMotion&&this.transitionEnd()},this))},e.prototype.current=function(a){if(a===d)return this._current;if(0===this._items.length)return d;if(a=this.normalize(a),this._current!==a){var b=this.trigger("change",{property:{name:"position",value:a}});b.data!==d&&(a=this.normalize(b.data)),this._current=a,this.invalidate("position"),this.trigger("changed",{property:{name:"position",value:this._current}})}return this._current},e.prototype.invalidate=function(a){this._invalidated[a]=!0},e.prototype.reset=function(a){a=this.normalize(a),a!==d&&(this._speed=0,this._current=a,this.suppress(["translate","translated"]),this.animate(this.coordinates(a)),this.release(["translate","translated"]))},e.prototype.normalize=function(b,c){var e=c?this._items.length:this._items.length+this._clones.length;return!a.isNumeric(b)||1>e?d:b=this._clones.length?(b%e+e)%e:Math.max(this.minimum(c),Math.min(this.maximum(c),b))},e.prototype.relative=function(a){return a=this.normalize(a),a-=this._clones.length/2,this.normalize(a,!0)},e.prototype.maximum=function(a){var b,c,d,e=0,f=this.settings;if(a)return this._items.length-1;if(!f.loop&&f.center)b=this._items.length-1;else if(f.loop||f.center)if(f.loop||f.center)b=this._items.length+f.items;else{if(!f.autoWidth&&!f.merge)throw"Can not detect maximum absolute position.";for(revert=f.rtl?1:-1,c=this.$stage.width()-this.$element.width();(d=this.coordinates(e))&&!(d*revert>=c);)b=++e}else b=this._items.length-f.items;return b},e.prototype.minimum=function(a){return a?0:this._clones.length/2},e.prototype.items=function(a){return a===d?this._items.slice():(a=this.normalize(a,!0),this._items[a])},e.prototype.mergers=function(a){return a===d?this._mergers.slice():(a=this.normalize(a,!0),this._mergers[a])},e.prototype.clones=function(b){var c=this._clones.length/2,e=c+this._items.length,f=function(a){return a%2===0?e+a/2:c-(a+1)/2};return b===d?a.map(this._clones,function(a,b){return f(b)}):a.map(this._clones,function(a,c){return a===b?f(c):null})},e.prototype.speed=function(a){return a!==d&&(this._speed=a),this._speed},e.prototype.coordinates=function(b){var c=null;return b===d?a.map(this._coordinates,a.proxy(function(a,b){return this.coordinates(b)},this)):(this.settings.center?(c=this._coordinates[b],c+=(this.width()-c+(this._coordinates[b-1]||0))/2*(this.settings.rtl?-1:1)):c=this._coordinates[b-1]||0,c)},e.prototype.duration=function(a,b,c){return Math.min(Math.max(Math.abs(b-a),1),6)*Math.abs(c||this.settings.smartSpeed)},e.prototype.to=function(c,d){if(this.settings.loop){var e=c-this.relative(this.current()),f=this.current(),g=this.current(),h=this.current()+e,i=0>g-h?!0:!1,j=this._clones.length+this._items.length;h<this.settings.items&&i===!1?(f=g+this._items.length,this.reset(f)):h>=j-this.settings.items&&i===!0&&(f=g-this._items.length,this.reset(f)),b.clearTimeout(this.e._goToLoop),this.e._goToLoop=b.setTimeout(a.proxy(function(){this.speed(this.duration(this.current(),f+e,d)),this.current(f+e),this.update()},this),30)}else this.speed(this.duration(this.current(),c,d)),this.current(c),this.update()},e.prototype.next=function(a){a=a||!1,this.to(this.relative(this.current())+1,a)},e.prototype.prev=function(a){a=a||!1,this.to(this.relative(this.current())-1,a)},e.prototype.transitionEnd=function(a){return a!==d&&(a.stopPropagation(),(a.target||a.srcElement||a.originalTarget)!==this.$stage.get(0))?!1:(this.state.inMotion=!1,void this.trigger("translated"))},e.prototype.viewport=function(){var d;if(this.options.responsiveBaseElement!==b)d=a(this.options.responsiveBaseElement).width();else if(b.innerWidth)d=b.innerWidth;else{if(!c.documentElement||!c.documentElement.clientWidth)throw"Can not detect viewport width.";d=c.documentElement.clientWidth}return d},e.prototype.replace=function(b){this.$stage.empty(),this._items=[],b&&(b=b instanceof jQuery?b:a(b)),this.settings.nestedItemSelector&&(b=b.find("."+this.settings.nestedItemSelector)),b.filter(function(){return 1===this.nodeType}).each(a.proxy(function(a,b){b=this.prepare(b),this.$stage.append(b),this._items.push(b),this._mergers.push(1*b.find("[data-merge]").andSelf("[data-merge]").attr("data-merge")||1)},this)),this.reset(a.isNumeric(this.settings.startPosition)?this.settings.startPosition:0),this.invalidate("items")},e.prototype.add=function(a,b){b=b===d?this._items.length:this.normalize(b,!0),this.trigger("add",{content:a,position:b}),0===this._items.length||b===this._items.length?(this.$stage.append(a),this._items.push(a),this._mergers.push(1*a.find("[data-merge]").andSelf("[data-merge]").attr("data-merge")||1)):(this._items[b].before(a),this._items.splice(b,0,a),this._mergers.splice(b,0,1*a.find("[data-merge]").andSelf("[data-merge]").attr("data-merge")||1)),this.invalidate("items"),this.trigger("added",{content:a,position:b})},e.prototype.remove=function(a){a=this.normalize(a,!0),a!==d&&(this.trigger("remove",{content:this._items[a],position:a}),this._items[a].remove(),this._items.splice(a,1),this._mergers.splice(a,1),this.invalidate("items"),this.trigger("removed",{content:null,position:a}))},e.prototype.addTriggerableEvents=function(){var b=a.proxy(function(b,c){return a.proxy(function(a){a.relatedTarget!==this&&(this.suppress([c]),b.apply(this,[].slice.call(arguments,1)),this.release([c]))},this)},this);a.each({next:this.next,prev:this.prev,to:this.to,destroy:this.destroy,refresh:this.refresh,replace:this.replace,add:this.add,remove:this.remove},a.proxy(function(a,c){this.$element.on(a+".owl.carousel",b(c,a+".owl.carousel"))},this))},e.prototype.watchVisibility=function(){function c(a){return a.offsetWidth>0&&a.offsetHeight>0}function d(){c(this.$element.get(0))&&(this.$element.removeClass("owl-hidden"),this.refresh(),b.clearInterval(this.e._checkVisibile))}c(this.$element.get(0))||(this.$element.addClass("owl-hidden"),b.clearInterval(this.e._checkVisibile),this.e._checkVisibile=b.setInterval(a.proxy(d,this),500))},e.prototype.preloadAutoWidthImages=function(b){var c,d,e,f;c=0,d=this,b.each(function(g,h){e=a(h),f=new Image,f.onload=function(){c++,e.attr("src",f.src),e.css("opacity",1),c>=b.length&&(d.state.imagesLoaded=!0,d.initialize())},f.src=e.attr("src")||e.attr("data-src")||e.attr("data-src-retina")})},e.prototype.destroy=function(){this.$element.hasClass(this.settings.themeClass)&&this.$element.removeClass(this.settings.themeClass),this.settings.responsive!==!1&&a(b).off("resize.owl.carousel"),this.transitionEndVendor&&this.off(this.$stage.get(0),this.transitionEndVendor,this.e._transitionEnd);for(var d in this._plugins)this._plugins[d].destroy();(this.settings.mouseDrag||this.settings.touchDrag)&&(this.$stage.off("mousedown touchstart touchcancel"),a(c).off(".owl.dragEvents"),this.$stage.get(0).onselectstart=function(){},this.$stage.off("dragstart",function(){return!1})),this.$element.off(".owl"),this.$stage.children(".cloned").remove(),this.e=null,this.$element.removeData("owlCarousel"),this.$stage.children().contents().unwrap(),this.$stage.children().unwrap(),this.$stage.unwrap()},e.prototype.op=function(a,b,c){var d=this.settings.rtl;switch(b){case"<":return d?a>c:c>a;case">":return d?c>a:a>c;case">=":return d?c>=a:a>=c;case"<=":return d?a>=c:c>=a}},e.prototype.on=function(a,b,c,d){a.addEventListener?a.addEventListener(b,c,d):a.attachEvent&&a.attachEvent("on"+b,c)},e.prototype.off=function(a,b,c,d){a.removeEventListener?a.removeEventListener(b,c,d):a.detachEvent&&a.detachEvent("on"+b,c)},e.prototype.trigger=function(b,c,d){var e={item:{count:this._items.length,index:this.current()}},f=a.camelCase(a.grep(["on",b,d],function(a){return a}).join("-").toLowerCase()),g=a.Event([b,"owl",d||"carousel"].join(".").toLowerCase(),a.extend({relatedTarget:this},e,c));return this._supress[b]||(a.each(this._plugins,function(a,b){b.onTrigger&&b.onTrigger(g)}),this.$element.trigger(g),this.settings&&"function"==typeof this.settings[f]&&this.settings[f].apply(this,g)),g},e.prototype.suppress=function(b){a.each(b,a.proxy(function(a,b){this._supress[b]=!0},this))},e.prototype.release=function(b){a.each(b,a.proxy(function(a,b){delete this._supress[b]},this))},e.prototype.browserSupport=function(){if(this.support3d=j(),this.support3d){this.transformVendor=i();var a=["transitionend","webkitTransitionEnd","transitionend","oTransitionEnd"];this.transitionEndVendor=a[h()],this.vendorName=this.transformVendor.replace(/Transform/i,""),this.vendorName=""!==this.vendorName?"-"+this.vendorName.toLowerCase()+"-":""}this.state.orientation=b.orientation},a.fn.owlCarousel=function(b){return this.each(function(){a(this).data("owlCarousel")||a(this).data("owlCarousel",new e(this,b))})},a.fn.owlCarousel.Constructor=e}(window.Zepto||window.jQuery,window,document),function(a,b){var c=function(b){this._core=b,this._loaded=[],this._handlers={"initialized.owl.carousel change.owl.carousel":a.proxy(function(b){if(b.namespace&&this._core.settings&&this._core.settings.lazyLoad&&(b.property&&"position"==b.property.name||"initialized"==b.type))for(var c=this._core.settings,d=c.center&&Math.ceil(c.items/2)||c.items,e=c.center&&-1*d||0,f=(b.property&&b.property.value||this._core.current())+e,g=this._core.clones().length,h=a.proxy(function(a,b){this.load(b)},this);e++<d;)this.load(g/2+this._core.relative(f)),g&&a.each(this._core.clones(this._core.relative(f++)),h)},this)},this._core.options=a.extend({},c.Defaults,this._core.options),this._core.$element.on(this._handlers)};c.Defaults={lazyLoad:!1},c.prototype.load=function(c){var d=this._core.$stage.children().eq(c),e=d&&d.find(".owl-lazy");!e||a.inArray(d.get(0),this._loaded)>-1||(e.each(a.proxy(function(c,d){var e,f=a(d),g=b.devicePixelRatio>1&&f.attr("data-src-retina")||f.attr("data-src");this._core.trigger("load",{element:f,url:g},"lazy"),f.is("img")?f.one("load.owl.lazy",a.proxy(function(){f.css("opacity",1),this._core.trigger("loaded",{element:f,url:g},"lazy")},this)).attr("src",g):(e=new Image,e.onload=a.proxy(function(){f.css({"background-image":"url("+g+")",opacity:"1"}),this._core.trigger("loaded",{element:f,url:g},"lazy")},this),e.src=g)},this)),this._loaded.push(d.get(0)))},c.prototype.destroy=function(){var a,b;for(a in this.handlers)this._core.$element.off(a,this.handlers[a]);for(b in Object.getOwnPropertyNames(this))"function"!=typeof this[b]&&(this[b]=null)},a.fn.owlCarousel.Constructor.Plugins.Lazy=c}(window.Zepto||window.jQuery,window,document),function(a){var b=function(c){this._core=c,this._handlers={"initialized.owl.carousel":a.proxy(function(){this._core.settings.autoHeight&&this.update()},this),"changed.owl.carousel":a.proxy(function(a){this._core.settings.autoHeight&&"position"==a.property.name&&this.update()},this),"loaded.owl.lazy":a.proxy(function(a){this._core.settings.autoHeight&&a.element.closest("."+this._core.settings.itemClass)===this._core.$stage.children().eq(this._core.current())&&this.update()},this)},this._core.options=a.extend({},b.Defaults,this._core.options),this._core.$element.on(this._handlers)};b.Defaults={autoHeight:!1,autoHeightClass:"owl-height"},b.prototype.update=function(){this._core.$stage.parent().height(this._core.$stage.children().eq(this._core.current()).height()).addClass(this._core.settings.autoHeightClass)},b.prototype.destroy=function(){var a,b;for(a in this._handlers)this._core.$element.off(a,this._handlers[a]);for(b in Object.getOwnPropertyNames(this))"function"!=typeof this[b]&&(this[b]=null)},a.fn.owlCarousel.Constructor.Plugins.AutoHeight=b}(window.Zepto||window.jQuery,window,document),function(a,b,c){var d=function(b){this._core=b,this._videos={},this._playing=null,this._fullscreen=!1,this._handlers={"resize.owl.carousel":a.proxy(function(a){this._core.settings.video&&!this.isInFullScreen()&&a.preventDefault()},this),"refresh.owl.carousel changed.owl.carousel":a.proxy(function(){this._playing&&this.stop()},this),"prepared.owl.carousel":a.proxy(function(b){var c=a(b.content).find(".owl-video");c.length&&(c.css("display","none"),this.fetch(c,a(b.content)))},this)},this._core.options=a.extend({},d.Defaults,this._core.options),this._core.$element.on(this._handlers),this._core.$element.on("click.owl.video",".owl-video-play-icon",a.proxy(function(a){this.play(a)},this))};d.Defaults={video:!1,videoHeight:!1,videoWidth:!1},d.prototype.fetch=function(a,b){var c=a.attr("data-vimeo-id")?"vimeo":"youtube",d=a.attr("data-vimeo-id")||a.attr("data-youtube-id"),e=a.attr("data-width")||this._core.settings.videoWidth,f=a.attr("data-height")||this._core.settings.videoHeight,g=a.attr("href");if(!g)throw new Error("Missing video URL.");if(d=g.match(/(http:|https:|)\/\/(player.|www.)?(vimeo\.com|youtu(be\.com|\.be|be\.googleapis\.com))\/(video\/|embed\/|watch\?v=|v\/)?([A-Za-z0-9._%-]*)(\&\S+)?/),d[3].indexOf("youtu")>-1)c="youtube";else{if(!(d[3].indexOf("vimeo")>-1))throw new Error("Video URL not supported.");c="vimeo"}d=d[6],this._videos[g]={type:c,id:d,width:e,height:f},b.attr("data-video",g),this.thumbnail(a,this._videos[g])},d.prototype.thumbnail=function(b,c){var d,e,f,g=c.width&&c.height?'style="width:'+c.width+"px;height:"+c.height+'px;"':"",h=b.find("img"),i="src",j="",k=this._core.settings,l=function(a){e='<div class="owl-video-play-icon"></div>',d=k.lazyLoad?'<div class="owl-video-tn '+j+'" '+i+'="'+a+'"></div>':'<div class="owl-video-tn" style="opacity:1;background-image:url('+a+')"></div>',b.after(d),b.after(e)};return b.wrap('<div class="owl-video-wrapper"'+g+"></div>"),this._core.settings.lazyLoad&&(i="data-src",j="owl-lazy"),h.length?(l(h.attr(i)),h.remove(),!1):void("youtube"===c.type?(f="http://img.youtube.com/vi/"+c.id+"/hqdefault.jpg",l(f)):"vimeo"===c.type&&a.ajax({type:"GET",url:"http://vimeo.com/api/v2/video/"+c.id+".json",jsonp:"callback",dataType:"jsonp",success:function(a){f=a[0].thumbnail_large,l(f)}}))},d.prototype.stop=function(){this._core.trigger("stop",null,"video"),this._playing.find(".owl-video-frame").remove(),this._playing.removeClass("owl-video-playing"),this._playing=null},d.prototype.play=function(b){this._core.trigger("play",null,"video"),this._playing&&this.stop();var c,d,e=a(b.target||b.srcElement),f=e.closest("."+this._core.settings.itemClass),g=this._videos[f.attr("data-video")],h=g.width||"100%",i=g.height||this._core.$stage.height();"youtube"===g.type?c='<iframe width="'+h+'" height="'+i+'" src="http://www.youtube.com/embed/'+g.id+"?autoplay=1&v="+g.id+'" frameborder="0" allowfullscreen></iframe>':"vimeo"===g.type&&(c='<iframe src="http://player.vimeo.com/video/'+g.id+'?autoplay=1" width="'+h+'" height="'+i+'" frameborder="0" webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe>'),f.addClass("owl-video-playing"),this._playing=f,d=a('<div style="height:'+i+"px; width:"+h+'px" class="owl-video-frame">'+c+"</div>"),e.after(d)},d.prototype.isInFullScreen=function(){var d=c.fullscreenElement||c.mozFullScreenElement||c.webkitFullscreenElement;return d&&a(d).parent().hasClass("owl-video-frame")&&(this._core.speed(0),this._fullscreen=!0),d&&this._fullscreen&&this._playing?!1:this._fullscreen?(this._fullscreen=!1,!1):this._playing&&this._core.state.orientation!==b.orientation?(this._core.state.orientation=b.orientation,!1):!0},d.prototype.destroy=function(){var a,b;this._core.$element.off("click.owl.video");for(a in this._handlers)this._core.$element.off(a,this._handlers[a]);for(b in Object.getOwnPropertyNames(this))"function"!=typeof this[b]&&(this[b]=null)},a.fn.owlCarousel.Constructor.Plugins.Video=d}(window.Zepto||window.jQuery,window,document),function(a,b,c,d){var e=function(b){this.core=b,this.core.options=a.extend({},e.Defaults,this.core.options),this.swapping=!0,this.previous=d,this.next=d,this.handlers={"change.owl.carousel":a.proxy(function(a){"position"==a.property.name&&(this.previous=this.core.current(),this.next=a.property.value)},this),"drag.owl.carousel dragged.owl.carousel translated.owl.carousel":a.proxy(function(a){this.swapping="translated"==a.type},this),"translate.owl.carousel":a.proxy(function(){this.swapping&&(this.core.options.animateOut||this.core.options.animateIn)&&this.swap()},this)},this.core.$element.on(this.handlers)};e.Defaults={animateOut:!1,animateIn:!1},e.prototype.swap=function(){if(1===this.core.settings.items&&this.core.support3d){this.core.speed(0);var b,c=a.proxy(this.clear,this),d=this.core.$stage.children().eq(this.previous),e=this.core.$stage.children().eq(this.next),f=this.core.settings.animateIn,g=this.core.settings.animateOut;this.core.current()!==this.previous&&(g&&(b=this.core.coordinates(this.previous)-this.core.coordinates(this.next),d.css({left:b+"px"}).addClass("animated owl-animated-out").addClass(g).one("webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend animationend",c)),f&&e.addClass("animated owl-animated-in").addClass(f).one("webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend animationend",c))}},e.prototype.clear=function(b){a(b.target).css({left:""}).removeClass("animated owl-animated-out owl-animated-in").removeClass(this.core.settings.animateIn).removeClass(this.core.settings.animateOut),this.core.transitionEnd()},e.prototype.destroy=function(){var a,b;for(a in this.handlers)this.core.$element.off(a,this.handlers[a]);for(b in Object.getOwnPropertyNames(this))"function"!=typeof this[b]&&(this[b]=null)},a.fn.owlCarousel.Constructor.Plugins.Animate=e}(window.Zepto||window.jQuery,window,document),function(a,b,c){var d=function(b){this.core=b,this.core.options=a.extend({},d.Defaults,this.core.options),this.handlers={"translated.owl.carousel refreshed.owl.carousel":a.proxy(function(){this.autoplay()
-},this),"play.owl.autoplay":a.proxy(function(a,b,c){this.play(b,c)},this),"stop.owl.autoplay":a.proxy(function(){this.stop()},this),"mouseover.owl.autoplay":a.proxy(function(){this.core.settings.autoplayHoverPause&&this.pause()},this),"mouseleave.owl.autoplay":a.proxy(function(){this.core.settings.autoplayHoverPause&&this.autoplay()},this)},this.core.$element.on(this.handlers)};d.Defaults={autoplay:!1,autoplayTimeout:5e3,autoplayHoverPause:!1,autoplaySpeed:!1},d.prototype.autoplay=function(){this.core.settings.autoplay&&!this.core.state.videoPlay?(b.clearInterval(this.interval),this.interval=b.setInterval(a.proxy(function(){this.play()},this),this.core.settings.autoplayTimeout)):b.clearInterval(this.interval)},d.prototype.play=function(){return c.hidden===!0||this.core.state.isTouch||this.core.state.isScrolling||this.core.state.isSwiping||this.core.state.inMotion?void 0:this.core.settings.autoplay===!1?void b.clearInterval(this.interval):void this.core.next(this.core.settings.autoplaySpeed)},d.prototype.stop=function(){b.clearInterval(this.interval)},d.prototype.pause=function(){b.clearInterval(this.interval)},d.prototype.destroy=function(){var a,c;b.clearInterval(this.interval);for(a in this.handlers)this.core.$element.off(a,this.handlers[a]);for(c in Object.getOwnPropertyNames(this))"function"!=typeof this[c]&&(this[c]=null)},a.fn.owlCarousel.Constructor.Plugins.autoplay=d}(window.Zepto||window.jQuery,window,document),function(a){"use strict";var b=function(c){this._core=c,this._initialized=!1,this._pages=[],this._controls={},this._templates=[],this.$element=this._core.$element,this._overrides={next:this._core.next,prev:this._core.prev,to:this._core.to},this._handlers={"prepared.owl.carousel":a.proxy(function(b){this._core.settings.dotsData&&this._templates.push(a(b.content).find("[data-dot]").andSelf("[data-dot]").attr("data-dot"))},this),"add.owl.carousel":a.proxy(function(b){this._core.settings.dotsData&&this._templates.splice(b.position,0,a(b.content).find("[data-dot]").andSelf("[data-dot]").attr("data-dot"))},this),"remove.owl.carousel prepared.owl.carousel":a.proxy(function(a){this._core.settings.dotsData&&this._templates.splice(a.position,1)},this),"change.owl.carousel":a.proxy(function(a){if("position"==a.property.name&&!this._core.state.revert&&!this._core.settings.loop&&this._core.settings.navRewind){var b=this._core.current(),c=this._core.maximum(),d=this._core.minimum();a.data=a.property.value>c?b>=c?d:c:a.property.value<d?c:a.property.value}},this),"changed.owl.carousel":a.proxy(function(a){"position"==a.property.name&&this.draw()},this),"refreshed.owl.carousel":a.proxy(function(){this._initialized||(this.initialize(),this._initialized=!0),this._core.trigger("refresh",null,"navigation"),this.update(),this.draw(),this._core.trigger("refreshed",null,"navigation")},this)},this._core.options=a.extend({},b.Defaults,this._core.options),this.$element.on(this._handlers)};b.Defaults={nav:!1,navRewind:!0,navText:["prev","next"],navSpeed:!1,navElement:"div",navContainer:!1,navContainerClass:"owl-nav",navClass:["owl-prev","owl-next"],slideBy:1,dotClass:"owl-dot",dotsClass:"owl-dots",dots:!0,dotsEach:!1,dotData:!1,dotsSpeed:!1,dotsContainer:!1,controlsClass:"owl-controls"},b.prototype.initialize=function(){var b,c,d=this._core.settings;d.dotsData||(this._templates=[a("<div>").addClass(d.dotClass).append(a("<span>")).prop("outerHTML")]),d.navContainer&&d.dotsContainer||(this._controls.$container=a("<div>").addClass(d.controlsClass).appendTo(this.$element)),this._controls.$indicators=d.dotsContainer?a(d.dotsContainer):a("<div>").hide().addClass(d.dotsClass).appendTo(this._controls.$container),this._controls.$indicators.on("click","div",a.proxy(function(b){var c=a(b.target).parent().is(this._controls.$indicators)?a(b.target).index():a(b.target).parent().index();b.preventDefault(),this.to(c,d.dotsSpeed)},this)),b=d.navContainer?a(d.navContainer):a("<div>").addClass(d.navContainerClass).prependTo(this._controls.$container),this._controls.$next=a("<"+d.navElement+">"),this._controls.$previous=this._controls.$next.clone(),this._controls.$previous.addClass(d.navClass[0]).html(d.navText[0]).hide().prependTo(b).on("click",a.proxy(function(){this.prev(d.navSpeed)},this)),this._controls.$next.addClass(d.navClass[1]).html(d.navText[1]).hide().appendTo(b).on("click",a.proxy(function(){this.next(d.navSpeed)},this));for(c in this._overrides)this._core[c]=a.proxy(this[c],this)},b.prototype.destroy=function(){var a,b,c,d;for(a in this._handlers)this.$element.off(a,this._handlers[a]);for(b in this._controls)this._controls[b].remove();for(d in this.overides)this._core[d]=this._overrides[d];for(c in Object.getOwnPropertyNames(this))"function"!=typeof this[c]&&(this[c]=null)},b.prototype.update=function(){var a,b,c,d=this._core.settings,e=this._core.clones().length/2,f=e+this._core.items().length,g=d.center||d.autoWidth||d.dotData?1:d.dotsEach||d.items;if("page"!==d.slideBy&&(d.slideBy=Math.min(d.slideBy,d.items)),d.dots||"page"==d.slideBy)for(this._pages=[],a=e,b=0,c=0;f>a;a++)(b>=g||0===b)&&(this._pages.push({start:a-e,end:a-e+g-1}),b=0,++c),b+=this._core.mergers(this._core.relative(a))},b.prototype.draw=function(){var b,c,d="",e=this._core.settings,f=(this._core.$stage.children(),this._core.relative(this._core.current()));if(!e.nav||e.loop||e.navRewind||(this._controls.$previous.toggleClass("disabled",0>=f),this._controls.$next.toggleClass("disabled",f>=this._core.maximum())),this._controls.$previous.toggle(e.nav),this._controls.$next.toggle(e.nav),e.dots){if(b=this._pages.length-this._controls.$indicators.children().length,e.dotData&&0!==b){for(c=0;c<this._controls.$indicators.children().length;c++)d+=this._templates[this._core.relative(c)];this._controls.$indicators.html(d)}else b>0?(d=new Array(b+1).join(this._templates[0]),this._controls.$indicators.append(d)):0>b&&this._controls.$indicators.children().slice(b).remove();this._controls.$indicators.find(".active").removeClass("active"),this._controls.$indicators.children().eq(a.inArray(this.current(),this._pages)).addClass("active")}this._controls.$indicators.toggle(e.dots)},b.prototype.onTrigger=function(b){var c=this._core.settings;b.page={index:a.inArray(this.current(),this._pages),count:this._pages.length,size:c&&(c.center||c.autoWidth||c.dotData?1:c.dotsEach||c.items)}},b.prototype.current=function(){var b=this._core.relative(this._core.current());return a.grep(this._pages,function(a){return a.start<=b&&a.end>=b}).pop()},b.prototype.getPosition=function(b){var c,d,e=this._core.settings;return"page"==e.slideBy?(c=a.inArray(this.current(),this._pages),d=this._pages.length,b?++c:--c,c=this._pages[(c%d+d)%d].start):(c=this._core.relative(this._core.current()),d=this._core.items().length,b?c+=e.slideBy:c-=e.slideBy),c},b.prototype.next=function(b){a.proxy(this._overrides.to,this._core)(this.getPosition(!0),b)},b.prototype.prev=function(b){a.proxy(this._overrides.to,this._core)(this.getPosition(!1),b)},b.prototype.to=function(b,c,d){var e;d?a.proxy(this._overrides.to,this._core)(b,c):(e=this._pages.length,a.proxy(this._overrides.to,this._core)(this._pages[(b%e+e)%e].start,c))},a.fn.owlCarousel.Constructor.Plugins.Navigation=b}(window.Zepto||window.jQuery,window,document),function(a,b){"use strict";var c=function(d){this._core=d,this._hashes={},this.$element=this._core.$element,this._handlers={"initialized.owl.carousel":a.proxy(function(){"URLHash"==this._core.settings.startPosition&&a(b).trigger("hashchange.owl.navigation")},this),"prepared.owl.carousel":a.proxy(function(b){var c=a(b.content).find("[data-hash]").andSelf("[data-hash]").attr("data-hash");this._hashes[c]=b.content},this)},this._core.options=a.extend({},c.Defaults,this._core.options),this.$element.on(this._handlers),a(b).on("hashchange.owl.navigation",a.proxy(function(){var a=b.location.hash.substring(1),c=this._core.$stage.children(),d=this._hashes[a]&&c.index(this._hashes[a])||0;return a?void this._core.to(d,!1,!0):!1},this))};c.Defaults={URLhashListener:!1},c.prototype.destroy=function(){var c,d;a(b).off("hashchange.owl.navigation");for(c in this._handlers)this._core.$element.off(c,this._handlers[c]);for(d in Object.getOwnPropertyNames(this))"function"!=typeof this[d]&&(this[d]=null)},a.fn.owlCarousel.Constructor.Plugins.Hash=c}(window.Zepto||window.jQuery,window,document);
\ No newline at end of file
diff --git a/src/main/resources/META-INF/resources/designer/lib/plugins/flot/excanvas.min.js b/src/main/resources/META-INF/resources/designer/lib/plugins/flot/excanvas.min.js
deleted file mode 100644 (file)
index 12c74f7..0000000
+++ /dev/null
@@ -1 +0,0 @@
-if(!document.createElement("canvas").getContext){(function(){var z=Math;var K=z.round;var J=z.sin;var U=z.cos;var b=z.abs;var k=z.sqrt;var D=10;var F=D/2;function T(){return this.context_||(this.context_=new W(this))}var O=Array.prototype.slice;function G(i,j,m){var Z=O.call(arguments,2);return function(){return i.apply(j,Z.concat(O.call(arguments)))}}function AD(Z){return String(Z).replace(/&/g,"&amp;").replace(/"/g,"&quot;")}function r(i){if(!i.namespaces.g_vml_){i.namespaces.add("g_vml_","urn:schemas-microsoft-com:vml","#default#VML")}if(!i.namespaces.g_o_){i.namespaces.add("g_o_","urn:schemas-microsoft-com:office:office","#default#VML")}if(!i.styleSheets.ex_canvas_){var Z=i.createStyleSheet();Z.owningElement.id="ex_canvas_";Z.cssText="canvas{display:inline-block;overflow:hidden;text-align:left;width:300px;height:150px}"}}r(document);var E={init:function(Z){if(/MSIE/.test(navigator.userAgent)&&!window.opera){var i=Z||document;i.createElement("canvas");i.attachEvent("onreadystatechange",G(this.init_,this,i))}},init_:function(m){var j=m.getElementsByTagName("canvas");for(var Z=0;Z<j.length;Z++){this.initElement(j[Z])}},initElement:function(i){if(!i.getContext){i.getContext=T;r(i.ownerDocument);i.innerHTML="";i.attachEvent("onpropertychange",S);i.attachEvent("onresize",w);var Z=i.attributes;if(Z.width&&Z.width.specified){i.style.width=Z.width.nodeValue+"px"}else{i.width=i.clientWidth}if(Z.height&&Z.height.specified){i.style.height=Z.height.nodeValue+"px"}else{i.height=i.clientHeight}}return i}};function S(i){var Z=i.srcElement;switch(i.propertyName){case"width":Z.getContext().clearRect();Z.style.width=Z.attributes.width.nodeValue+"px";Z.firstChild.style.width=Z.clientWidth+"px";break;case"height":Z.getContext().clearRect();Z.style.height=Z.attributes.height.nodeValue+"px";Z.firstChild.style.height=Z.clientHeight+"px";break}}function w(i){var Z=i.srcElement;if(Z.firstChild){Z.firstChild.style.width=Z.clientWidth+"px";Z.firstChild.style.height=Z.clientHeight+"px"}}E.init();var I=[];for(var AC=0;AC<16;AC++){for(var AB=0;AB<16;AB++){I[AC*16+AB]=AC.toString(16)+AB.toString(16)}}function V(){return[[1,0,0],[0,1,0],[0,0,1]]}function d(m,j){var i=V();for(var Z=0;Z<3;Z++){for(var AF=0;AF<3;AF++){var p=0;for(var AE=0;AE<3;AE++){p+=m[Z][AE]*j[AE][AF]}i[Z][AF]=p}}return i}function Q(i,Z){Z.fillStyle=i.fillStyle;Z.lineCap=i.lineCap;Z.lineJoin=i.lineJoin;Z.lineWidth=i.lineWidth;Z.miterLimit=i.miterLimit;Z.shadowBlur=i.shadowBlur;Z.shadowColor=i.shadowColor;Z.shadowOffsetX=i.shadowOffsetX;Z.shadowOffsetY=i.shadowOffsetY;Z.strokeStyle=i.strokeStyle;Z.globalAlpha=i.globalAlpha;Z.font=i.font;Z.textAlign=i.textAlign;Z.textBaseline=i.textBaseline;Z.arcScaleX_=i.arcScaleX_;Z.arcScaleY_=i.arcScaleY_;Z.lineScale_=i.lineScale_}var B={aliceblue:"#F0F8FF",antiquewhite:"#FAEBD7",aquamarine:"#7FFFD4",azure:"#F0FFFF",beige:"#F5F5DC",bisque:"#FFE4C4",black:"#000000",blanchedalmond:"#FFEBCD",blueviolet:"#8A2BE2",brown:"#A52A2A",burlywood:"#DEB887",cadetblue:"#5F9EA0",chartreuse:"#7FFF00",chocolate:"#D2691E",coral:"#FF7F50",cornflowerblue:"#6495ED",cornsilk:"#FFF8DC",crimson:"#DC143C",cyan:"#00FFFF",darkblue:"#00008B",darkcyan:"#008B8B",darkgoldenrod:"#B8860B",darkgray:"#A9A9A9",darkgreen:"#006400",darkgrey:"#A9A9A9",darkkhaki:"#BDB76B",darkmagenta:"#8B008B",darkolivegreen:"#556B2F",darkorange:"#FF8C00",darkorchid:"#9932CC",darkred:"#8B0000",darksalmon:"#E9967A",darkseagreen:"#8FBC8F",darkslateblue:"#483D8B",darkslategray:"#2F4F4F",darkslategrey:"#2F4F4F",darkturquoise:"#00CED1",darkviolet:"#9400D3",deeppink:"#FF1493",deepskyblue:"#00BFFF",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1E90FF",firebrick:"#B22222",floralwhite:"#FFFAF0",forestgreen:"#228B22",gainsboro:"#DCDCDC",ghostwhite:"#F8F8FF",gold:"#FFD700",goldenrod:"#DAA520",grey:"#808080",greenyellow:"#ADFF2F",honeydew:"#F0FFF0",hotpink:"#FF69B4",indianred:"#CD5C5C",indigo:"#4B0082",ivory:"#FFFFF0",khaki:"#F0E68C",lavender:"#E6E6FA",lavenderblush:"#FFF0F5",lawngreen:"#7CFC00",lemonchiffon:"#FFFACD",lightblue:"#ADD8E6",lightcoral:"#F08080",lightcyan:"#E0FFFF",lightgoldenrodyellow:"#FAFAD2",lightgreen:"#90EE90",lightgrey:"#D3D3D3",lightpink:"#FFB6C1",lightsalmon:"#FFA07A",lightseagreen:"#20B2AA",lightskyblue:"#87CEFA",lightslategray:"#778899",lightslategrey:"#778899",lightsteelblue:"#B0C4DE",lightyellow:"#FFFFE0",limegreen:"#32CD32",linen:"#FAF0E6",magenta:"#FF00FF",mediumaquamarine:"#66CDAA",mediumblue:"#0000CD",mediumorchid:"#BA55D3",mediumpurple:"#9370DB",mediumseagreen:"#3CB371",mediumslateblue:"#7B68EE",mediumspringgreen:"#00FA9A",mediumturquoise:"#48D1CC",mediumvioletred:"#C71585",midnightblue:"#191970",mintcream:"#F5FFFA",mistyrose:"#FFE4E1",moccasin:"#FFE4B5",navajowhite:"#FFDEAD",oldlace:"#FDF5E6",olivedrab:"#6B8E23",orange:"#FFA500",orangered:"#FF4500",orchid:"#DA70D6",palegoldenrod:"#EEE8AA",palegreen:"#98FB98",paleturquoise:"#AFEEEE",palevioletred:"#DB7093",papayawhip:"#FFEFD5",peachpuff:"#FFDAB9",peru:"#CD853F",pink:"#FFC0CB",plum:"#DDA0DD",powderblue:"#B0E0E6",rosybrown:"#BC8F8F",royalblue:"#4169E1",saddlebrown:"#8B4513",salmon:"#FA8072",sandybrown:"#F4A460",seagreen:"#2E8B57",seashell:"#FFF5EE",sienna:"#A0522D",skyblue:"#87CEEB",slateblue:"#6A5ACD",slategray:"#708090",slategrey:"#708090",snow:"#FFFAFA",springgreen:"#00FF7F",steelblue:"#4682B4",tan:"#D2B48C",thistle:"#D8BFD8",tomato:"#FF6347",turquoise:"#40E0D0",violet:"#EE82EE",wheat:"#F5DEB3",whitesmoke:"#F5F5F5",yellowgreen:"#9ACD32"};function g(i){var m=i.indexOf("(",3);var Z=i.indexOf(")",m+1);var j=i.substring(m+1,Z).split(",");if(j.length==4&&i.substr(3,1)=="a"){alpha=Number(j[3])}else{j[3]=1}return j}function C(Z){return parseFloat(Z)/100}function N(i,j,Z){return Math.min(Z,Math.max(j,i))}function c(AF){var j,i,Z;h=parseFloat(AF[0])/360%360;if(h<0){h++}s=N(C(AF[1]),0,1);l=N(C(AF[2]),0,1);if(s==0){j=i=Z=l}else{var m=l<0.5?l*(1+s):l+s-l*s;var AE=2*l-m;j=A(AE,m,h+1/3);i=A(AE,m,h);Z=A(AE,m,h-1/3)}return"#"+I[Math.floor(j*255)]+I[Math.floor(i*255)]+I[Math.floor(Z*255)]}function A(i,Z,j){if(j<0){j++}if(j>1){j--}if(6*j<1){return i+(Z-i)*6*j}else{if(2*j<1){return Z}else{if(3*j<2){return i+(Z-i)*(2/3-j)*6}else{return i}}}}function Y(Z){var AE,p=1;Z=String(Z);if(Z.charAt(0)=="#"){AE=Z}else{if(/^rgb/.test(Z)){var m=g(Z);var AE="#",AF;for(var j=0;j<3;j++){if(m[j].indexOf("%")!=-1){AF=Math.floor(C(m[j])*255)}else{AF=Number(m[j])}AE+=I[N(AF,0,255)]}p=m[3]}else{if(/^hsl/.test(Z)){var m=g(Z);AE=c(m);p=m[3]}else{AE=B[Z]||Z}}}return{color:AE,alpha:p}}var L={style:"normal",variant:"normal",weight:"normal",size:10,family:"sans-serif"};var f={};function X(Z){if(f[Z]){return f[Z]}var m=document.createElement("div");var j=m.style;try{j.font=Z}catch(i){}return f[Z]={style:j.fontStyle||L.style,variant:j.fontVariant||L.variant,weight:j.fontWeight||L.weight,size:j.fontSize||L.size,family:j.fontFamily||L.family}}function P(j,i){var Z={};for(var AF in j){Z[AF]=j[AF]}var AE=parseFloat(i.currentStyle.fontSize),m=parseFloat(j.size);if(typeof j.size=="number"){Z.size=j.size}else{if(j.size.indexOf("px")!=-1){Z.size=m}else{if(j.size.indexOf("em")!=-1){Z.size=AE*m}else{if(j.size.indexOf("%")!=-1){Z.size=(AE/100)*m}else{if(j.size.indexOf("pt")!=-1){Z.size=m/0.75}else{Z.size=AE}}}}}Z.size*=0.981;return Z}function AA(Z){return Z.style+" "+Z.variant+" "+Z.weight+" "+Z.size+"px "+Z.family}function t(Z){switch(Z){case"butt":return"flat";case"round":return"round";case"square":default:return"square"}}function W(i){this.m_=V();this.mStack_=[];this.aStack_=[];this.currentPath_=[];this.strokeStyle="#000";this.fillStyle="#000";this.lineWidth=1;this.lineJoin="miter";this.lineCap="butt";this.miterLimit=D*1;this.globalAlpha=1;this.font="10px sans-serif";this.textAlign="left";this.textBaseline="alphabetic";this.canvas=i;var Z=i.ownerDocument.createElement("div");Z.style.width=i.clientWidth+"px";Z.style.height=i.clientHeight+"px";Z.style.overflow="hidden";Z.style.position="absolute";i.appendChild(Z);this.element_=Z;this.arcScaleX_=1;this.arcScaleY_=1;this.lineScale_=1}var M=W.prototype;M.clearRect=function(){if(this.textMeasureEl_){this.textMeasureEl_.removeNode(true);this.textMeasureEl_=null}this.element_.innerHTML=""};M.beginPath=function(){this.currentPath_=[]};M.moveTo=function(i,Z){var j=this.getCoords_(i,Z);this.currentPath_.push({type:"moveTo",x:j.x,y:j.y});this.currentX_=j.x;this.currentY_=j.y};M.lineTo=function(i,Z){var j=this.getCoords_(i,Z);this.currentPath_.push({type:"lineTo",x:j.x,y:j.y});this.currentX_=j.x;this.currentY_=j.y};M.bezierCurveTo=function(j,i,AI,AH,AG,AE){var Z=this.getCoords_(AG,AE);var AF=this.getCoords_(j,i);var m=this.getCoords_(AI,AH);e(this,AF,m,Z)};function e(Z,m,j,i){Z.currentPath_.push({type:"bezierCurveTo",cp1x:m.x,cp1y:m.y,cp2x:j.x,cp2y:j.y,x:i.x,y:i.y});Z.currentX_=i.x;Z.currentY_=i.y}M.quadraticCurveTo=function(AG,j,i,Z){var AF=this.getCoords_(AG,j);var AE=this.getCoords_(i,Z);var AH={x:this.currentX_+2/3*(AF.x-this.currentX_),y:this.currentY_+2/3*(AF.y-this.currentY_)};var m={x:AH.x+(AE.x-this.currentX_)/3,y:AH.y+(AE.y-this.currentY_)/3};e(this,AH,m,AE)};M.arc=function(AJ,AH,AI,AE,i,j){AI*=D;var AN=j?"at":"wa";var AK=AJ+U(AE)*AI-F;var AM=AH+J(AE)*AI-F;var Z=AJ+U(i)*AI-F;var AL=AH+J(i)*AI-F;if(AK==Z&&!j){AK+=0.125}var m=this.getCoords_(AJ,AH);var AG=this.getCoords_(AK,AM);var AF=this.getCoords_(Z,AL);this.currentPath_.push({type:AN,x:m.x,y:m.y,radius:AI,xStart:AG.x,yStart:AG.y,xEnd:AF.x,yEnd:AF.y})};M.rect=function(j,i,Z,m){this.moveTo(j,i);this.lineTo(j+Z,i);this.lineTo(j+Z,i+m);this.lineTo(j,i+m);this.closePath()};M.strokeRect=function(j,i,Z,m){var p=this.currentPath_;this.beginPath();this.moveTo(j,i);this.lineTo(j+Z,i);this.lineTo(j+Z,i+m);this.lineTo(j,i+m);this.closePath();this.stroke();this.currentPath_=p};M.fillRect=function(j,i,Z,m){var p=this.currentPath_;this.beginPath();this.moveTo(j,i);this.lineTo(j+Z,i);this.lineTo(j+Z,i+m);this.lineTo(j,i+m);this.closePath();this.fill();this.currentPath_=p};M.createLinearGradient=function(i,m,Z,j){var p=new v("gradient");p.x0_=i;p.y0_=m;p.x1_=Z;p.y1_=j;return p};M.createRadialGradient=function(m,AE,j,i,p,Z){var AF=new v("gradientradial");AF.x0_=m;AF.y0_=AE;AF.r0_=j;AF.x1_=i;AF.y1_=p;AF.r1_=Z;return AF};M.drawImage=function(AO,j){var AH,AF,AJ,AV,AM,AK,AQ,AX;var AI=AO.runtimeStyle.width;var AN=AO.runtimeStyle.height;AO.runtimeStyle.width="auto";AO.runtimeStyle.height="auto";var AG=AO.width;var AT=AO.height;AO.runtimeStyle.width=AI;AO.runtimeStyle.height=AN;if(arguments.length==3){AH=arguments[1];AF=arguments[2];AM=AK=0;AQ=AJ=AG;AX=AV=AT}else{if(arguments.length==5){AH=arguments[1];AF=arguments[2];AJ=arguments[3];AV=arguments[4];AM=AK=0;AQ=AG;AX=AT}else{if(arguments.length==9){AM=arguments[1];AK=arguments[2];AQ=arguments[3];AX=arguments[4];AH=arguments[5];AF=arguments[6];AJ=arguments[7];AV=arguments[8]}else{throw Error("Invalid number of arguments")}}}var AW=this.getCoords_(AH,AF);var m=AQ/2;var i=AX/2;var AU=[];var Z=10;var AE=10;AU.push(" <g_vml_:group",' coordsize="',D*Z,",",D*AE,'"',' coordorigin="0,0"',' style="width:',Z,"px;height:",AE,"px;position:absolute;");if(this.m_[0][0]!=1||this.m_[0][1]||this.m_[1][1]!=1||this.m_[1][0]){var p=[];p.push("M11=",this.m_[0][0],",","M12=",this.m_[1][0],",","M21=",this.m_[0][1],",","M22=",this.m_[1][1],",","Dx=",K(AW.x/D),",","Dy=",K(AW.y/D),"");var AS=AW;var AR=this.getCoords_(AH+AJ,AF);var AP=this.getCoords_(AH,AF+AV);var AL=this.getCoords_(AH+AJ,AF+AV);AS.x=z.max(AS.x,AR.x,AP.x,AL.x);AS.y=z.max(AS.y,AR.y,AP.y,AL.y);AU.push("padding:0 ",K(AS.x/D),"px ",K(AS.y/D),"px 0;filter:progid:DXImageTransform.Microsoft.Matrix(",p.join(""),", sizingmethod='clip');")}else{AU.push("top:",K(AW.y/D),"px;left:",K(AW.x/D),"px;")}AU.push(' ">','<g_vml_:image src="',AO.src,'"',' style="width:',D*AJ,"px;"," height:",D*AV,'px"',' cropleft="',AM/AG,'"',' croptop="',AK/AT,'"',' cropright="',(AG-AM-AQ)/AG,'"',' cropbottom="',(AT-AK-AX)/AT,'"'," />","</g_vml_:group>");this.element_.insertAdjacentHTML("BeforeEnd",AU.join(""))};M.stroke=function(AM){var m=10;var AN=10;var AE=5000;var AG={x:null,y:null};var AL={x:null,y:null};for(var AH=0;AH<this.currentPath_.length;AH+=AE){var AK=[];var AF=false;AK.push("<g_vml_:shape",' filled="',!!AM,'"',' style="position:absolute;width:',m,"px;height:",AN,'px;"',' coordorigin="0,0"',' coordsize="',D*m,",",D*AN,'"',' stroked="',!AM,'"',' path="');var AO=false;for(var AI=AH;AI<Math.min(AH+AE,this.currentPath_.length);AI++){if(AI%AE==0&&AI>0){AK.push(" m ",K(this.currentPath_[AI-1].x),",",K(this.currentPath_[AI-1].y))}var Z=this.currentPath_[AI];var AJ;switch(Z.type){case"moveTo":AJ=Z;AK.push(" m ",K(Z.x),",",K(Z.y));break;case"lineTo":AK.push(" l ",K(Z.x),",",K(Z.y));break;case"close":AK.push(" x ");Z=null;break;case"bezierCurveTo":AK.push(" c ",K(Z.cp1x),",",K(Z.cp1y),",",K(Z.cp2x),",",K(Z.cp2y),",",K(Z.x),",",K(Z.y));break;case"at":case"wa":AK.push(" ",Z.type," ",K(Z.x-this.arcScaleX_*Z.radius),",",K(Z.y-this.arcScaleY_*Z.radius)," ",K(Z.x+this.arcScaleX_*Z.radius),",",K(Z.y+this.arcScaleY_*Z.radius)," ",K(Z.xStart),",",K(Z.yStart)," ",K(Z.xEnd),",",K(Z.yEnd));break}if(Z){if(AG.x==null||Z.x<AG.x){AG.x=Z.x}if(AL.x==null||Z.x>AL.x){AL.x=Z.x}if(AG.y==null||Z.y<AG.y){AG.y=Z.y}if(AL.y==null||Z.y>AL.y){AL.y=Z.y}}}AK.push(' ">');if(!AM){R(this,AK)}else{a(this,AK,AG,AL)}AK.push("</g_vml_:shape>");this.element_.insertAdjacentHTML("beforeEnd",AK.join(""))}};function R(j,AE){var i=Y(j.strokeStyle);var m=i.color;var p=i.alpha*j.globalAlpha;var Z=j.lineScale_*j.lineWidth;if(Z<1){p*=Z}AE.push("<g_vml_:stroke",' opacity="',p,'"',' joinstyle="',j.lineJoin,'"',' miterlimit="',j.miterLimit,'"',' endcap="',t(j.lineCap),'"',' weight="',Z,'px"',' color="',m,'" />')}function a(AO,AG,Ah,AP){var AH=AO.fillStyle;var AY=AO.arcScaleX_;var AX=AO.arcScaleY_;var Z=AP.x-Ah.x;var m=AP.y-Ah.y;if(AH instanceof v){var AL=0;var Ac={x:0,y:0};var AU=0;var AK=1;if(AH.type_=="gradient"){var AJ=AH.x0_/AY;var j=AH.y0_/AX;var AI=AH.x1_/AY;var Aj=AH.y1_/AX;var Ag=AO.getCoords_(AJ,j);var Af=AO.getCoords_(AI,Aj);var AE=Af.x-Ag.x;var p=Af.y-Ag.y;AL=Math.atan2(AE,p)*180/Math.PI;if(AL<0){AL+=360}if(AL<0.000001){AL=0}}else{var Ag=AO.getCoords_(AH.x0_,AH.y0_);Ac={x:(Ag.x-Ah.x)/Z,y:(Ag.y-Ah.y)/m};Z/=AY*D;m/=AX*D;var Aa=z.max(Z,m);AU=2*AH.r0_/Aa;AK=2*AH.r1_/Aa-AU}var AS=AH.colors_;AS.sort(function(Ak,i){return Ak.offset-i.offset});var AN=AS.length;var AR=AS[0].color;var AQ=AS[AN-1].color;var AW=AS[0].alpha*AO.globalAlpha;var AV=AS[AN-1].alpha*AO.globalAlpha;var Ab=[];for(var Ae=0;Ae<AN;Ae++){var AM=AS[Ae];Ab.push(AM.offset*AK+AU+" "+AM.color)}AG.push('<g_vml_:fill type="',AH.type_,'"',' method="none" focus="100%"',' color="',AR,'"',' color2="',AQ,'"',' colors="',Ab.join(","),'"',' opacity="',AV,'"',' g_o_:opacity2="',AW,'"',' angle="',AL,'"',' focusposition="',Ac.x,",",Ac.y,'" />')}else{if(AH instanceof u){if(Z&&m){var AF=-Ah.x;var AZ=-Ah.y;AG.push("<g_vml_:fill",' position="',AF/Z*AY*AY,",",AZ/m*AX*AX,'"',' type="tile"',' src="',AH.src_,'" />')}}else{var Ai=Y(AO.fillStyle);var AT=Ai.color;var Ad=Ai.alpha*AO.globalAlpha;AG.push('<g_vml_:fill color="',AT,'" opacity="',Ad,'" />')}}}M.fill=function(){this.stroke(true)};M.closePath=function(){this.currentPath_.push({type:"close"})};M.getCoords_=function(j,i){var Z=this.m_;return{x:D*(j*Z[0][0]+i*Z[1][0]+Z[2][0])-F,y:D*(j*Z[0][1]+i*Z[1][1]+Z[2][1])-F}};M.save=function(){var Z={};Q(this,Z);this.aStack_.push(Z);this.mStack_.push(this.m_);this.m_=d(V(),this.m_)};M.restore=function(){if(this.aStack_.length){Q(this.aStack_.pop(),this);this.m_=this.mStack_.pop()}};function H(Z){return isFinite(Z[0][0])&&isFinite(Z[0][1])&&isFinite(Z[1][0])&&isFinite(Z[1][1])&&isFinite(Z[2][0])&&isFinite(Z[2][1])}function y(i,Z,j){if(!H(Z)){return }i.m_=Z;if(j){var p=Z[0][0]*Z[1][1]-Z[0][1]*Z[1][0];i.lineScale_=k(b(p))}}M.translate=function(j,i){var Z=[[1,0,0],[0,1,0],[j,i,1]];y(this,d(Z,this.m_),false)};M.rotate=function(i){var m=U(i);var j=J(i);var Z=[[m,j,0],[-j,m,0],[0,0,1]];y(this,d(Z,this.m_),false)};M.scale=function(j,i){this.arcScaleX_*=j;this.arcScaleY_*=i;var Z=[[j,0,0],[0,i,0],[0,0,1]];y(this,d(Z,this.m_),true)};M.transform=function(p,m,AF,AE,i,Z){var j=[[p,m,0],[AF,AE,0],[i,Z,1]];y(this,d(j,this.m_),true)};M.setTransform=function(AE,p,AG,AF,j,i){var Z=[[AE,p,0],[AG,AF,0],[j,i,1]];y(this,Z,true)};M.drawText_=function(AK,AI,AH,AN,AG){var AM=this.m_,AQ=1000,i=0,AP=AQ,AF={x:0,y:0},AE=[];var Z=P(X(this.font),this.element_);var j=AA(Z);var AR=this.element_.currentStyle;var p=this.textAlign.toLowerCase();switch(p){case"left":case"center":case"right":break;case"end":p=AR.direction=="ltr"?"right":"left";break;case"start":p=AR.direction=="rtl"?"right":"left";break;default:p="left"}switch(this.textBaseline){case"hanging":case"top":AF.y=Z.size/1.75;break;case"middle":break;default:case null:case"alphabetic":case"ideographic":case"bottom":AF.y=-Z.size/2.25;break}switch(p){case"right":i=AQ;AP=0.05;break;case"center":i=AP=AQ/2;break}var AO=this.getCoords_(AI+AF.x,AH+AF.y);AE.push('<g_vml_:line from="',-i,' 0" to="',AP,' 0.05" ',' coordsize="100 100" coordorigin="0 0"',' filled="',!AG,'" stroked="',!!AG,'" style="position:absolute;width:1px;height:1px;">');if(AG){R(this,AE)}else{a(this,AE,{x:-i,y:0},{x:AP,y:Z.size})}var AL=AM[0][0].toFixed(3)+","+AM[1][0].toFixed(3)+","+AM[0][1].toFixed(3)+","+AM[1][1].toFixed(3)+",0,0";var AJ=K(AO.x/D)+","+K(AO.y/D);AE.push('<g_vml_:skew on="t" matrix="',AL,'" ',' offset="',AJ,'" origin="',i,' 0" />','<g_vml_:path textpathok="true" />','<g_vml_:textpath on="true" string="',AD(AK),'" style="v-text-align:',p,";font:",AD(j),'" /></g_vml_:line>');this.element_.insertAdjacentHTML("beforeEnd",AE.join(""))};M.fillText=function(j,Z,m,i){this.drawText_(j,Z,m,i,false)};M.strokeText=function(j,Z,m,i){this.drawText_(j,Z,m,i,true)};M.measureText=function(j){if(!this.textMeasureEl_){var Z='<span style="position:absolute;top:-20000px;left:0;padding:0;margin:0;border:none;white-space:pre;"></span>';this.element_.insertAdjacentHTML("beforeEnd",Z);this.textMeasureEl_=this.element_.lastChild}var i=this.element_.ownerDocument;this.textMeasureEl_.innerHTML="";this.textMeasureEl_.style.font=this.font;this.textMeasureEl_.appendChild(i.createTextNode(j));return{width:this.textMeasureEl_.offsetWidth}};M.clip=function(){};M.arcTo=function(){};M.createPattern=function(i,Z){return new u(i,Z)};function v(Z){this.type_=Z;this.x0_=0;this.y0_=0;this.r0_=0;this.x1_=0;this.y1_=0;this.r1_=0;this.colors_=[]}v.prototype.addColorStop=function(i,Z){Z=Y(Z);this.colors_.push({offset:i,color:Z.color,alpha:Z.alpha})};function u(i,Z){q(i);switch(Z){case"repeat":case null:case"":this.repetition_="repeat";break;case"repeat-x":case"repeat-y":case"no-repeat":this.repetition_=Z;break;default:n("SYNTAX_ERR")}this.src_=i.src;this.width_=i.width;this.height_=i.height}function n(Z){throw new o(Z)}function q(Z){if(!Z||Z.nodeType!=1||Z.tagName!="IMG"){n("TYPE_MISMATCH_ERR")}if(Z.readyState!="complete"){n("INVALID_STATE_ERR")}}function o(Z){this.code=this[Z];this.message=Z+": DOM Exception "+this.code}var x=o.prototype=new Error;x.INDEX_SIZE_ERR=1;x.DOMSTRING_SIZE_ERR=2;x.HIERARCHY_REQUEST_ERR=3;x.WRONG_DOCUMENT_ERR=4;x.INVALID_CHARACTER_ERR=5;x.NO_DATA_ALLOWED_ERR=6;x.NO_MODIFICATION_ALLOWED_ERR=7;x.NOT_FOUND_ERR=8;x.NOT_SUPPORTED_ERR=9;x.INUSE_ATTRIBUTE_ERR=10;x.INVALID_STATE_ERR=11;x.SYNTAX_ERR=12;x.INVALID_MODIFICATION_ERR=13;x.NAMESPACE_ERR=14;x.INVALID_ACCESS_ERR=15;x.VALIDATION_ERR=16;x.TYPE_MISMATCH_ERR=17;G_vmlCanvasManager=E;CanvasRenderingContext2D=W;CanvasGradient=v;CanvasPattern=u;DOMException=o})()};
\ No newline at end of file
diff --git a/src/main/resources/META-INF/resources/designer/lib/plugins/flot/flot-data.js b/src/main/resources/META-INF/resources/designer/lib/plugins/flot/flot-data.js
deleted file mode 100644 (file)
index 3e92eb8..0000000
+++ /dev/null
@@ -1,1242 +0,0 @@
-//Flot Line Chart
-$(document).ready(function() {
-    console.log("document ready");
-    var offset = 0;
-    plot();
-
-    function plot() {
-        var sin = [],
-            cos = [];
-        for (var i = 0; i < 12; i += 0.2) {
-            sin.push([i, Math.sin(i + offset)]);
-            cos.push([i, Math.cos(i + offset)]);
-        }
-
-        var options = {
-            series: {
-                lines: {
-                    show: true
-                },
-                points: {
-                    show: true
-                }
-            },
-            grid: {
-                hoverable: true //IMPORTANT! this is needed for tooltip to work
-            },
-            yaxis: {
-                min: -1.2,
-                max: 1.2
-            },
-            tooltip: true,
-            tooltipOpts: {
-                content: "'%s' of %x.1 is %y.4",
-                shifts: {
-                    x: -60,
-                    y: 25
-                }
-            }
-        };
-
-        var plotObj = $.plot($("#flot-line-chart"), [{
-                data: sin,
-                label: "sin(x)"
-            }, {
-                data: cos,
-                label: "cos(x)"
-            }],
-            options);
-    }
-});
-
-//Flot Pie Chart
-$(function() {
-
-    var data = [{
-        label: "Series 0",
-        data: 1
-    }, {
-        label: "Series 1",
-        data: 3
-    }, {
-        label: "Series 2",
-        data: 9
-    }, {
-        label: "Series 3",
-        data: 20
-    }];
-
-    var plotObj = $.plot($("#flot-pie-chart"), data, {
-        series: {
-            pie: {
-                show: true
-            }
-        },
-        grid: {
-            hoverable: true
-        },
-        tooltip: true,
-        tooltipOpts: {
-            content: "%p.0%, %s", // show percentages, rounding to 2 decimal places
-            shifts: {
-                x: 20,
-                y: 0
-            },
-            defaultTheme: false
-        }
-    });
-
-});
-
-//Flot Multiple Axes Line Chart
-$(function() {
-    var oilprices = [
-        [1167692400000, 61.05],
-        [1167778800000, 58.32],
-        [1167865200000, 57.35],
-        [1167951600000, 56.31],
-        [1168210800000, 55.55],
-        [1168297200000, 55.64],
-        [1168383600000, 54.02],
-        [1168470000000, 51.88],
-        [1168556400000, 52.99],
-        [1168815600000, 52.99],
-        [1168902000000, 51.21],
-        [1168988400000, 52.24],
-        [1169074800000, 50.48],
-        [1169161200000, 51.99],
-        [1169420400000, 51.13],
-        [1169506800000, 55.04],
-        [1169593200000, 55.37],
-        [1169679600000, 54.23],
-        [1169766000000, 55.42],
-        [1170025200000, 54.01],
-        [1170111600000, 56.97],
-        [1170198000000, 58.14],
-        [1170284400000, 58.14],
-        [1170370800000, 59.02],
-        [1170630000000, 58.74],
-        [1170716400000, 58.88],
-        [1170802800000, 57.71],
-        [1170889200000, 59.71],
-        [1170975600000, 59.89],
-        [1171234800000, 57.81],
-        [1171321200000, 59.06],
-        [1171407600000, 58.00],
-        [1171494000000, 57.99],
-        [1171580400000, 59.39],
-        [1171839600000, 59.39],
-        [1171926000000, 58.07],
-        [1172012400000, 60.07],
-        [1172098800000, 61.14],
-        [1172444400000, 61.39],
-        [1172530800000, 61.46],
-        [1172617200000, 61.79],
-        [1172703600000, 62.00],
-        [1172790000000, 60.07],
-        [1173135600000, 60.69],
-        [1173222000000, 61.82],
-        [1173308400000, 60.05],
-        [1173654000000, 58.91],
-        [1173740400000, 57.93],
-        [1173826800000, 58.16],
-        [1173913200000, 57.55],
-        [1173999600000, 57.11],
-        [1174258800000, 56.59],
-        [1174345200000, 59.61],
-        [1174518000000, 61.69],
-        [1174604400000, 62.28],
-        [1174860000000, 62.91],
-        [1174946400000, 62.93],
-        [1175032800000, 64.03],
-        [1175119200000, 66.03],
-        [1175205600000, 65.87],
-        [1175464800000, 64.64],
-        [1175637600000, 64.38],
-        [1175724000000, 64.28],
-        [1175810400000, 64.28],
-        [1176069600000, 61.51],
-        [1176156000000, 61.89],
-        [1176242400000, 62.01],
-        [1176328800000, 63.85],
-        [1176415200000, 63.63],
-        [1176674400000, 63.61],
-        [1176760800000, 63.10],
-        [1176847200000, 63.13],
-        [1176933600000, 61.83],
-        [1177020000000, 63.38],
-        [1177279200000, 64.58],
-        [1177452000000, 65.84],
-        [1177538400000, 65.06],
-        [1177624800000, 66.46],
-        [1177884000000, 64.40],
-        [1178056800000, 63.68],
-        [1178143200000, 63.19],
-        [1178229600000, 61.93],
-        [1178488800000, 61.47],
-        [1178575200000, 61.55],
-        [1178748000000, 61.81],
-        [1178834400000, 62.37],
-        [1179093600000, 62.46],
-        [1179180000000, 63.17],
-        [1179266400000, 62.55],
-        [1179352800000, 64.94],
-        [1179698400000, 66.27],
-        [1179784800000, 65.50],
-        [1179871200000, 65.77],
-        [1179957600000, 64.18],
-        [1180044000000, 65.20],
-        [1180389600000, 63.15],
-        [1180476000000, 63.49],
-        [1180562400000, 65.08],
-        [1180908000000, 66.30],
-        [1180994400000, 65.96],
-        [1181167200000, 66.93],
-        [1181253600000, 65.98],
-        [1181599200000, 65.35],
-        [1181685600000, 66.26],
-        [1181858400000, 68.00],
-        [1182117600000, 69.09],
-        [1182204000000, 69.10],
-        [1182290400000, 68.19],
-        [1182376800000, 68.19],
-        [1182463200000, 69.14],
-        [1182722400000, 68.19],
-        [1182808800000, 67.77],
-        [1182895200000, 68.97],
-        [1182981600000, 69.57],
-        [1183068000000, 70.68],
-        [1183327200000, 71.09],
-        [1183413600000, 70.92],
-        [1183586400000, 71.81],
-        [1183672800000, 72.81],
-        [1183932000000, 72.19],
-        [1184018400000, 72.56],
-        [1184191200000, 72.50],
-        [1184277600000, 74.15],
-        [1184623200000, 75.05],
-        [1184796000000, 75.92],
-        [1184882400000, 75.57],
-        [1185141600000, 74.89],
-        [1185228000000, 73.56],
-        [1185314400000, 75.57],
-        [1185400800000, 74.95],
-        [1185487200000, 76.83],
-        [1185832800000, 78.21],
-        [1185919200000, 76.53],
-        [1186005600000, 76.86],
-        [1186092000000, 76.00],
-        [1186437600000, 71.59],
-        [1186696800000, 71.47],
-        [1186956000000, 71.62],
-        [1187042400000, 71.00],
-        [1187301600000, 71.98],
-        [1187560800000, 71.12],
-        [1187647200000, 69.47],
-        [1187733600000, 69.26],
-        [1187820000000, 69.83],
-        [1187906400000, 71.09],
-        [1188165600000, 71.73],
-        [1188338400000, 73.36],
-        [1188511200000, 74.04],
-        [1188856800000, 76.30],
-        [1189116000000, 77.49],
-        [1189461600000, 78.23],
-        [1189548000000, 79.91],
-        [1189634400000, 80.09],
-        [1189720800000, 79.10],
-        [1189980000000, 80.57],
-        [1190066400000, 81.93],
-        [1190239200000, 83.32],
-        [1190325600000, 81.62],
-        [1190584800000, 80.95],
-        [1190671200000, 79.53],
-        [1190757600000, 80.30],
-        [1190844000000, 82.88],
-        [1190930400000, 81.66],
-        [1191189600000, 80.24],
-        [1191276000000, 80.05],
-        [1191362400000, 79.94],
-        [1191448800000, 81.44],
-        [1191535200000, 81.22],
-        [1191794400000, 79.02],
-        [1191880800000, 80.26],
-        [1191967200000, 80.30],
-        [1192053600000, 83.08],
-        [1192140000000, 83.69],
-        [1192399200000, 86.13],
-        [1192485600000, 87.61],
-        [1192572000000, 87.40],
-        [1192658400000, 89.47],
-        [1192744800000, 88.60],
-        [1193004000000, 87.56],
-        [1193090400000, 87.56],
-        [1193176800000, 87.10],
-        [1193263200000, 91.86],
-        [1193612400000, 93.53],
-        [1193698800000, 94.53],
-        [1193871600000, 95.93],
-        [1194217200000, 93.98],
-        [1194303600000, 96.37],
-        [1194476400000, 95.46],
-        [1194562800000, 96.32],
-        [1195081200000, 93.43],
-        [1195167600000, 95.10],
-        [1195426800000, 94.64],
-        [1195513200000, 95.10],
-        [1196031600000, 97.70],
-        [1196118000000, 94.42],
-        [1196204400000, 90.62],
-        [1196290800000, 91.01],
-        [1196377200000, 88.71],
-        [1196636400000, 88.32],
-        [1196809200000, 90.23],
-        [1196982000000, 88.28],
-        [1197241200000, 87.86],
-        [1197327600000, 90.02],
-        [1197414000000, 92.25],
-        [1197586800000, 90.63],
-        [1197846000000, 90.63],
-        [1197932400000, 90.49],
-        [1198018800000, 91.24],
-        [1198105200000, 91.06],
-        [1198191600000, 90.49],
-        [1198710000000, 96.62],
-        [1198796400000, 96.00],
-        [1199142000000, 99.62],
-        [1199314800000, 99.18],
-        [1199401200000, 95.09],
-        [1199660400000, 96.33],
-        [1199833200000, 95.67],
-        [1200351600000, 91.90],
-        [1200438000000, 90.84],
-        [1200524400000, 90.13],
-        [1200610800000, 90.57],
-        [1200956400000, 89.21],
-        [1201042800000, 86.99],
-        [1201129200000, 89.85],
-        [1201474800000, 90.99],
-        [1201561200000, 91.64],
-        [1201647600000, 92.33],
-        [1201734000000, 91.75],
-        [1202079600000, 90.02],
-        [1202166000000, 88.41],
-        [1202252400000, 87.14],
-        [1202338800000, 88.11],
-        [1202425200000, 91.77],
-        [1202770800000, 92.78],
-        [1202857200000, 93.27],
-        [1202943600000, 95.46],
-        [1203030000000, 95.46],
-        [1203289200000, 101.74],
-        [1203462000000, 98.81],
-        [1203894000000, 100.88],
-        [1204066800000, 99.64],
-        [1204153200000, 102.59],
-        [1204239600000, 101.84],
-        [1204498800000, 99.52],
-        [1204585200000, 99.52],
-        [1204671600000, 104.52],
-        [1204758000000, 105.47],
-        [1204844400000, 105.15],
-        [1205103600000, 108.75],
-        [1205276400000, 109.92],
-        [1205362800000, 110.33],
-        [1205449200000, 110.21],
-        [1205708400000, 105.68],
-        [1205967600000, 101.84],
-        [1206313200000, 100.86],
-        [1206399600000, 101.22],
-        [1206486000000, 105.90],
-        [1206572400000, 107.58],
-        [1206658800000, 105.62],
-        [1206914400000, 101.58],
-        [1207000800000, 100.98],
-        [1207173600000, 103.83],
-        [1207260000000, 106.23],
-        [1207605600000, 108.50],
-        [1207778400000, 110.11],
-        [1207864800000, 110.14],
-        [1208210400000, 113.79],
-        [1208296800000, 114.93],
-        [1208383200000, 114.86],
-        [1208728800000, 117.48],
-        [1208815200000, 118.30],
-        [1208988000000, 116.06],
-        [1209074400000, 118.52],
-        [1209333600000, 118.75],
-        [1209420000000, 113.46],
-        [1209592800000, 112.52],
-        [1210024800000, 121.84],
-        [1210111200000, 123.53],
-        [1210197600000, 123.69],
-        [1210543200000, 124.23],
-        [1210629600000, 125.80],
-        [1210716000000, 126.29],
-        [1211148000000, 127.05],
-        [1211320800000, 129.07],
-        [1211493600000, 132.19],
-        [1211839200000, 128.85],
-        [1212357600000, 127.76],
-        [1212703200000, 138.54],
-        [1212962400000, 136.80],
-        [1213135200000, 136.38],
-        [1213308000000, 134.86],
-        [1213653600000, 134.01],
-        [1213740000000, 136.68],
-        [1213912800000, 135.65],
-        [1214172000000, 134.62],
-        [1214258400000, 134.62],
-        [1214344800000, 134.62],
-        [1214431200000, 139.64],
-        [1214517600000, 140.21],
-        [1214776800000, 140.00],
-        [1214863200000, 140.97],
-        [1214949600000, 143.57],
-        [1215036000000, 145.29],
-        [1215381600000, 141.37],
-        [1215468000000, 136.04],
-        [1215727200000, 146.40],
-        [1215986400000, 145.18],
-        [1216072800000, 138.74],
-        [1216159200000, 134.60],
-        [1216245600000, 129.29],
-        [1216332000000, 130.65],
-        [1216677600000, 127.95],
-        [1216850400000, 127.95],
-        [1217282400000, 122.19],
-        [1217455200000, 124.08],
-        [1217541600000, 125.10],
-        [1217800800000, 121.41],
-        [1217887200000, 119.17],
-        [1217973600000, 118.58],
-        [1218060000000, 120.02],
-        [1218405600000, 114.45],
-        [1218492000000, 113.01],
-        [1218578400000, 116.00],
-        [1218751200000, 113.77],
-        [1219010400000, 112.87],
-        [1219096800000, 114.53],
-        [1219269600000, 114.98],
-        [1219356000000, 114.98],
-        [1219701600000, 116.27],
-        [1219788000000, 118.15],
-        [1219874400000, 115.59],
-        [1219960800000, 115.46],
-        [1220306400000, 109.71],
-        [1220392800000, 109.35],
-        [1220565600000, 106.23],
-        [1220824800000, 106.34]
-    ];
-    var exchangerates = [
-        [1167606000000, 0.7580],
-        [1167692400000, 0.7580],
-        [1167778800000, 0.75470],
-        [1167865200000, 0.75490],
-        [1167951600000, 0.76130],
-        [1168038000000, 0.76550],
-        [1168124400000, 0.76930],
-        [1168210800000, 0.76940],
-        [1168297200000, 0.76880],
-        [1168383600000, 0.76780],
-        [1168470000000, 0.77080],
-        [1168556400000, 0.77270],
-        [1168642800000, 0.77490],
-        [1168729200000, 0.77410],
-        [1168815600000, 0.77410],
-        [1168902000000, 0.77320],
-        [1168988400000, 0.77270],
-        [1169074800000, 0.77370],
-        [1169161200000, 0.77240],
-        [1169247600000, 0.77120],
-        [1169334000000, 0.7720],
-        [1169420400000, 0.77210],
-        [1169506800000, 0.77170],
-        [1169593200000, 0.77040],
-        [1169679600000, 0.7690],
-        [1169766000000, 0.77110],
-        [1169852400000, 0.7740],
-        [1169938800000, 0.77450],
-        [1170025200000, 0.77450],
-        [1170111600000, 0.7740],
-        [1170198000000, 0.77160],
-        [1170284400000, 0.77130],
-        [1170370800000, 0.76780],
-        [1170457200000, 0.76880],
-        [1170543600000, 0.77180],
-        [1170630000000, 0.77180],
-        [1170716400000, 0.77280],
-        [1170802800000, 0.77290],
-        [1170889200000, 0.76980],
-        [1170975600000, 0.76850],
-        [1171062000000, 0.76810],
-        [1171148400000, 0.7690],
-        [1171234800000, 0.7690],
-        [1171321200000, 0.76980],
-        [1171407600000, 0.76990],
-        [1171494000000, 0.76510],
-        [1171580400000, 0.76130],
-        [1171666800000, 0.76160],
-        [1171753200000, 0.76140],
-        [1171839600000, 0.76140],
-        [1171926000000, 0.76070],
-        [1172012400000, 0.76020],
-        [1172098800000, 0.76110],
-        [1172185200000, 0.76220],
-        [1172271600000, 0.76150],
-        [1172358000000, 0.75980],
-        [1172444400000, 0.75980],
-        [1172530800000, 0.75920],
-        [1172617200000, 0.75730],
-        [1172703600000, 0.75660],
-        [1172790000000, 0.75670],
-        [1172876400000, 0.75910],
-        [1172962800000, 0.75820],
-        [1173049200000, 0.75850],
-        [1173135600000, 0.76130],
-        [1173222000000, 0.76310],
-        [1173308400000, 0.76150],
-        [1173394800000, 0.760],
-        [1173481200000, 0.76130],
-        [1173567600000, 0.76270],
-        [1173654000000, 0.76270],
-        [1173740400000, 0.76080],
-        [1173826800000, 0.75830],
-        [1173913200000, 0.75750],
-        [1173999600000, 0.75620],
-        [1174086000000, 0.7520],
-        [1174172400000, 0.75120],
-        [1174258800000, 0.75120],
-        [1174345200000, 0.75170],
-        [1174431600000, 0.7520],
-        [1174518000000, 0.75110],
-        [1174604400000, 0.7480],
-        [1174690800000, 0.75090],
-        [1174777200000, 0.75310],
-        [1174860000000, 0.75310],
-        [1174946400000, 0.75270],
-        [1175032800000, 0.74980],
-        [1175119200000, 0.74930],
-        [1175205600000, 0.75040],
-        [1175292000000, 0.750],
-        [1175378400000, 0.74910],
-        [1175464800000, 0.74910],
-        [1175551200000, 0.74850],
-        [1175637600000, 0.74840],
-        [1175724000000, 0.74920],
-        [1175810400000, 0.74710],
-        [1175896800000, 0.74590],
-        [1175983200000, 0.74770],
-        [1176069600000, 0.74770],
-        [1176156000000, 0.74830],
-        [1176242400000, 0.74580],
-        [1176328800000, 0.74480],
-        [1176415200000, 0.7430],
-        [1176501600000, 0.73990],
-        [1176588000000, 0.73950],
-        [1176674400000, 0.73950],
-        [1176760800000, 0.73780],
-        [1176847200000, 0.73820],
-        [1176933600000, 0.73620],
-        [1177020000000, 0.73550],
-        [1177106400000, 0.73480],
-        [1177192800000, 0.73610],
-        [1177279200000, 0.73610],
-        [1177365600000, 0.73650],
-        [1177452000000, 0.73620],
-        [1177538400000, 0.73310],
-        [1177624800000, 0.73390],
-        [1177711200000, 0.73440],
-        [1177797600000, 0.73270],
-        [1177884000000, 0.73270],
-        [1177970400000, 0.73360],
-        [1178056800000, 0.73330],
-        [1178143200000, 0.73590],
-        [1178229600000, 0.73590],
-        [1178316000000, 0.73720],
-        [1178402400000, 0.7360],
-        [1178488800000, 0.7360],
-        [1178575200000, 0.7350],
-        [1178661600000, 0.73650],
-        [1178748000000, 0.73840],
-        [1178834400000, 0.73950],
-        [1178920800000, 0.74130],
-        [1179007200000, 0.73970],
-        [1179093600000, 0.73960],
-        [1179180000000, 0.73850],
-        [1179266400000, 0.73780],
-        [1179352800000, 0.73660],
-        [1179439200000, 0.740],
-        [1179525600000, 0.74110],
-        [1179612000000, 0.74060],
-        [1179698400000, 0.74050],
-        [1179784800000, 0.74140],
-        [1179871200000, 0.74310],
-        [1179957600000, 0.74310],
-        [1180044000000, 0.74380],
-        [1180130400000, 0.74430],
-        [1180216800000, 0.74430],
-        [1180303200000, 0.74430],
-        [1180389600000, 0.74340],
-        [1180476000000, 0.74290],
-        [1180562400000, 0.74420],
-        [1180648800000, 0.7440],
-        [1180735200000, 0.74390],
-        [1180821600000, 0.74370],
-        [1180908000000, 0.74370],
-        [1180994400000, 0.74290],
-        [1181080800000, 0.74030],
-        [1181167200000, 0.73990],
-        [1181253600000, 0.74180],
-        [1181340000000, 0.74680],
-        [1181426400000, 0.7480],
-        [1181512800000, 0.7480],
-        [1181599200000, 0.7490],
-        [1181685600000, 0.74940],
-        [1181772000000, 0.75220],
-        [1181858400000, 0.75150],
-        [1181944800000, 0.75020],
-        [1182031200000, 0.74720],
-        [1182117600000, 0.74720],
-        [1182204000000, 0.74620],
-        [1182290400000, 0.74550],
-        [1182376800000, 0.74490],
-        [1182463200000, 0.74670],
-        [1182549600000, 0.74580],
-        [1182636000000, 0.74270],
-        [1182722400000, 0.74270],
-        [1182808800000, 0.7430],
-        [1182895200000, 0.74290],
-        [1182981600000, 0.7440],
-        [1183068000000, 0.7430],
-        [1183154400000, 0.74220],
-        [1183240800000, 0.73880],
-        [1183327200000, 0.73880],
-        [1183413600000, 0.73690],
-        [1183500000000, 0.73450],
-        [1183586400000, 0.73450],
-        [1183672800000, 0.73450],
-        [1183759200000, 0.73520],
-        [1183845600000, 0.73410],
-        [1183932000000, 0.73410],
-        [1184018400000, 0.7340],
-        [1184104800000, 0.73240],
-        [1184191200000, 0.72720],
-        [1184277600000, 0.72640],
-        [1184364000000, 0.72550],
-        [1184450400000, 0.72580],
-        [1184536800000, 0.72580],
-        [1184623200000, 0.72560],
-        [1184709600000, 0.72570],
-        [1184796000000, 0.72470],
-        [1184882400000, 0.72430],
-        [1184968800000, 0.72440],
-        [1185055200000, 0.72350],
-        [1185141600000, 0.72350],
-        [1185228000000, 0.72350],
-        [1185314400000, 0.72350],
-        [1185400800000, 0.72620],
-        [1185487200000, 0.72880],
-        [1185573600000, 0.73010],
-        [1185660000000, 0.73370],
-        [1185746400000, 0.73370],
-        [1185832800000, 0.73240],
-        [1185919200000, 0.72970],
-        [1186005600000, 0.73170],
-        [1186092000000, 0.73150],
-        [1186178400000, 0.72880],
-        [1186264800000, 0.72630],
-        [1186351200000, 0.72630],
-        [1186437600000, 0.72420],
-        [1186524000000, 0.72530],
-        [1186610400000, 0.72640],
-        [1186696800000, 0.7270],
-        [1186783200000, 0.73120],
-        [1186869600000, 0.73050],
-        [1186956000000, 0.73050],
-        [1187042400000, 0.73180],
-        [1187128800000, 0.73580],
-        [1187215200000, 0.74090],
-        [1187301600000, 0.74540],
-        [1187388000000, 0.74370],
-        [1187474400000, 0.74240],
-        [1187560800000, 0.74240],
-        [1187647200000, 0.74150],
-        [1187733600000, 0.74190],
-        [1187820000000, 0.74140],
-        [1187906400000, 0.73770],
-        [1187992800000, 0.73550],
-        [1188079200000, 0.73150],
-        [1188165600000, 0.73150],
-        [1188252000000, 0.7320],
-        [1188338400000, 0.73320],
-        [1188424800000, 0.73460],
-        [1188511200000, 0.73280],
-        [1188597600000, 0.73230],
-        [1188684000000, 0.7340],
-        [1188770400000, 0.7340],
-        [1188856800000, 0.73360],
-        [1188943200000, 0.73510],
-        [1189029600000, 0.73460],
-        [1189116000000, 0.73210],
-        [1189202400000, 0.72940],
-        [1189288800000, 0.72660],
-        [1189375200000, 0.72660],
-        [1189461600000, 0.72540],
-        [1189548000000, 0.72420],
-        [1189634400000, 0.72130],
-        [1189720800000, 0.71970],
-        [1189807200000, 0.72090],
-        [1189893600000, 0.7210],
-        [1189980000000, 0.7210],
-        [1190066400000, 0.7210],
-        [1190152800000, 0.72090],
-        [1190239200000, 0.71590],
-        [1190325600000, 0.71330],
-        [1190412000000, 0.71050],
-        [1190498400000, 0.70990],
-        [1190584800000, 0.70990],
-        [1190671200000, 0.70930],
-        [1190757600000, 0.70930],
-        [1190844000000, 0.70760],
-        [1190930400000, 0.7070],
-        [1191016800000, 0.70490],
-        [1191103200000, 0.70120],
-        [1191189600000, 0.70110],
-        [1191276000000, 0.70190],
-        [1191362400000, 0.70460],
-        [1191448800000, 0.70630],
-        [1191535200000, 0.70890],
-        [1191621600000, 0.70770],
-        [1191708000000, 0.70770],
-        [1191794400000, 0.70770],
-        [1191880800000, 0.70910],
-        [1191967200000, 0.71180],
-        [1192053600000, 0.70790],
-        [1192140000000, 0.70530],
-        [1192226400000, 0.7050],
-        [1192312800000, 0.70550],
-        [1192399200000, 0.70550],
-        [1192485600000, 0.70450],
-        [1192572000000, 0.70510],
-        [1192658400000, 0.70510],
-        [1192744800000, 0.70170],
-        [1192831200000, 0.70],
-        [1192917600000, 0.69950],
-        [1193004000000, 0.69940],
-        [1193090400000, 0.70140],
-        [1193176800000, 0.70360],
-        [1193263200000, 0.70210],
-        [1193349600000, 0.70020],
-        [1193436000000, 0.69670],
-        [1193522400000, 0.6950],
-        [1193612400000, 0.6950],
-        [1193698800000, 0.69390],
-        [1193785200000, 0.6940],
-        [1193871600000, 0.69220],
-        [1193958000000, 0.69190],
-        [1194044400000, 0.69140],
-        [1194130800000, 0.68940],
-        [1194217200000, 0.68910],
-        [1194303600000, 0.69040],
-        [1194390000000, 0.6890],
-        [1194476400000, 0.68340],
-        [1194562800000, 0.68230],
-        [1194649200000, 0.68070],
-        [1194735600000, 0.68150],
-        [1194822000000, 0.68150],
-        [1194908400000, 0.68470],
-        [1194994800000, 0.68590],
-        [1195081200000, 0.68220],
-        [1195167600000, 0.68270],
-        [1195254000000, 0.68370],
-        [1195340400000, 0.68230],
-        [1195426800000, 0.68220],
-        [1195513200000, 0.68220],
-        [1195599600000, 0.67920],
-        [1195686000000, 0.67460],
-        [1195772400000, 0.67350],
-        [1195858800000, 0.67310],
-        [1195945200000, 0.67420],
-        [1196031600000, 0.67440],
-        [1196118000000, 0.67390],
-        [1196204400000, 0.67310],
-        [1196290800000, 0.67610],
-        [1196377200000, 0.67610],
-        [1196463600000, 0.67850],
-        [1196550000000, 0.68180],
-        [1196636400000, 0.68360],
-        [1196722800000, 0.68230],
-        [1196809200000, 0.68050],
-        [1196895600000, 0.67930],
-        [1196982000000, 0.68490],
-        [1197068400000, 0.68330],
-        [1197154800000, 0.68250],
-        [1197241200000, 0.68250],
-        [1197327600000, 0.68160],
-        [1197414000000, 0.67990],
-        [1197500400000, 0.68130],
-        [1197586800000, 0.68090],
-        [1197673200000, 0.68680],
-        [1197759600000, 0.69330],
-        [1197846000000, 0.69330],
-        [1197932400000, 0.69450],
-        [1198018800000, 0.69440],
-        [1198105200000, 0.69460],
-        [1198191600000, 0.69640],
-        [1198278000000, 0.69650],
-        [1198364400000, 0.69560],
-        [1198450800000, 0.69560],
-        [1198537200000, 0.6950],
-        [1198623600000, 0.69480],
-        [1198710000000, 0.69280],
-        [1198796400000, 0.68870],
-        [1198882800000, 0.68240],
-        [1198969200000, 0.67940],
-        [1199055600000, 0.67940],
-        [1199142000000, 0.68030],
-        [1199228400000, 0.68550],
-        [1199314800000, 0.68240],
-        [1199401200000, 0.67910],
-        [1199487600000, 0.67830],
-        [1199574000000, 0.67850],
-        [1199660400000, 0.67850],
-        [1199746800000, 0.67970],
-        [1199833200000, 0.680],
-        [1199919600000, 0.68030],
-        [1200006000000, 0.68050],
-        [1200092400000, 0.6760],
-        [1200178800000, 0.6770],
-        [1200265200000, 0.6770],
-        [1200351600000, 0.67360],
-        [1200438000000, 0.67260],
-        [1200524400000, 0.67640],
-        [1200610800000, 0.68210],
-        [1200697200000, 0.68310],
-        [1200783600000, 0.68420],
-        [1200870000000, 0.68420],
-        [1200956400000, 0.68870],
-        [1201042800000, 0.69030],
-        [1201129200000, 0.68480],
-        [1201215600000, 0.68240],
-        [1201302000000, 0.67880],
-        [1201388400000, 0.68140],
-        [1201474800000, 0.68140],
-        [1201561200000, 0.67970],
-        [1201647600000, 0.67690],
-        [1201734000000, 0.67650],
-        [1201820400000, 0.67330],
-        [1201906800000, 0.67290],
-        [1201993200000, 0.67580],
-        [1202079600000, 0.67580],
-        [1202166000000, 0.6750],
-        [1202252400000, 0.6780],
-        [1202338800000, 0.68330],
-        [1202425200000, 0.68560],
-        [1202511600000, 0.69030],
-        [1202598000000, 0.68960],
-        [1202684400000, 0.68960],
-        [1202770800000, 0.68820],
-        [1202857200000, 0.68790],
-        [1202943600000, 0.68620],
-        [1203030000000, 0.68520],
-        [1203116400000, 0.68230],
-        [1203202800000, 0.68130],
-        [1203289200000, 0.68130],
-        [1203375600000, 0.68220],
-        [1203462000000, 0.68020],
-        [1203548400000, 0.68020],
-        [1203634800000, 0.67840],
-        [1203721200000, 0.67480],
-        [1203807600000, 0.67470],
-        [1203894000000, 0.67470],
-        [1203980400000, 0.67480],
-        [1204066800000, 0.67330],
-        [1204153200000, 0.6650],
-        [1204239600000, 0.66110],
-        [1204326000000, 0.65830],
-        [1204412400000, 0.6590],
-        [1204498800000, 0.6590],
-        [1204585200000, 0.65810],
-        [1204671600000, 0.65780],
-        [1204758000000, 0.65740],
-        [1204844400000, 0.65320],
-        [1204930800000, 0.65020],
-        [1205017200000, 0.65140],
-        [1205103600000, 0.65140],
-        [1205190000000, 0.65070],
-        [1205276400000, 0.6510],
-        [1205362800000, 0.64890],
-        [1205449200000, 0.64240],
-        [1205535600000, 0.64060],
-        [1205622000000, 0.63820],
-        [1205708400000, 0.63820],
-        [1205794800000, 0.63410],
-        [1205881200000, 0.63440],
-        [1205967600000, 0.63780],
-        [1206054000000, 0.64390],
-        [1206140400000, 0.64780],
-        [1206226800000, 0.64810],
-        [1206313200000, 0.64810],
-        [1206399600000, 0.64940],
-        [1206486000000, 0.64380],
-        [1206572400000, 0.63770],
-        [1206658800000, 0.63290],
-        [1206745200000, 0.63360],
-        [1206831600000, 0.63330],
-        [1206914400000, 0.63330],
-        [1207000800000, 0.6330],
-        [1207087200000, 0.63710],
-        [1207173600000, 0.64030],
-        [1207260000000, 0.63960],
-        [1207346400000, 0.63640],
-        [1207432800000, 0.63560],
-        [1207519200000, 0.63560],
-        [1207605600000, 0.63680],
-        [1207692000000, 0.63570],
-        [1207778400000, 0.63540],
-        [1207864800000, 0.6320],
-        [1207951200000, 0.63320],
-        [1208037600000, 0.63280],
-        [1208124000000, 0.63310],
-        [1208210400000, 0.63420],
-        [1208296800000, 0.63210],
-        [1208383200000, 0.63020],
-        [1208469600000, 0.62780],
-        [1208556000000, 0.63080],
-        [1208642400000, 0.63240],
-        [1208728800000, 0.63240],
-        [1208815200000, 0.63070],
-        [1208901600000, 0.62770],
-        [1208988000000, 0.62690],
-        [1209074400000, 0.63350],
-        [1209160800000, 0.63920],
-        [1209247200000, 0.640],
-        [1209333600000, 0.64010],
-        [1209420000000, 0.63960],
-        [1209506400000, 0.64070],
-        [1209592800000, 0.64230],
-        [1209679200000, 0.64290],
-        [1209765600000, 0.64720],
-        [1209852000000, 0.64850],
-        [1209938400000, 0.64860],
-        [1210024800000, 0.64670],
-        [1210111200000, 0.64440],
-        [1210197600000, 0.64670],
-        [1210284000000, 0.65090],
-        [1210370400000, 0.64780],
-        [1210456800000, 0.64610],
-        [1210543200000, 0.64610],
-        [1210629600000, 0.64680],
-        [1210716000000, 0.64490],
-        [1210802400000, 0.6470],
-        [1210888800000, 0.64610],
-        [1210975200000, 0.64520],
-        [1211061600000, 0.64220],
-        [1211148000000, 0.64220],
-        [1211234400000, 0.64250],
-        [1211320800000, 0.64140],
-        [1211407200000, 0.63660],
-        [1211493600000, 0.63460],
-        [1211580000000, 0.6350],
-        [1211666400000, 0.63460],
-        [1211752800000, 0.63460],
-        [1211839200000, 0.63430],
-        [1211925600000, 0.63460],
-        [1212012000000, 0.63790],
-        [1212098400000, 0.64160],
-        [1212184800000, 0.64420],
-        [1212271200000, 0.64310],
-        [1212357600000, 0.64310],
-        [1212444000000, 0.64350],
-        [1212530400000, 0.6440],
-        [1212616800000, 0.64730],
-        [1212703200000, 0.64690],
-        [1212789600000, 0.63860],
-        [1212876000000, 0.63560],
-        [1212962400000, 0.6340],
-        [1213048800000, 0.63460],
-        [1213135200000, 0.6430],
-        [1213221600000, 0.64520],
-        [1213308000000, 0.64670],
-        [1213394400000, 0.65060],
-        [1213480800000, 0.65040],
-        [1213567200000, 0.65030],
-        [1213653600000, 0.64810],
-        [1213740000000, 0.64510],
-        [1213826400000, 0.6450],
-        [1213912800000, 0.64410],
-        [1213999200000, 0.64140],
-        [1214085600000, 0.64090],
-        [1214172000000, 0.64090],
-        [1214258400000, 0.64280],
-        [1214344800000, 0.64310],
-        [1214431200000, 0.64180],
-        [1214517600000, 0.63710],
-        [1214604000000, 0.63490],
-        [1214690400000, 0.63330],
-        [1214776800000, 0.63340],
-        [1214863200000, 0.63380],
-        [1214949600000, 0.63420],
-        [1215036000000, 0.6320],
-        [1215122400000, 0.63180],
-        [1215208800000, 0.6370],
-        [1215295200000, 0.63680],
-        [1215381600000, 0.63680],
-        [1215468000000, 0.63830],
-        [1215554400000, 0.63710],
-        [1215640800000, 0.63710],
-        [1215727200000, 0.63550],
-        [1215813600000, 0.6320],
-        [1215900000000, 0.62770],
-        [1215986400000, 0.62760],
-        [1216072800000, 0.62910],
-        [1216159200000, 0.62740],
-        [1216245600000, 0.62930],
-        [1216332000000, 0.63110],
-        [1216418400000, 0.6310],
-        [1216504800000, 0.63120],
-        [1216591200000, 0.63120],
-        [1216677600000, 0.63040],
-        [1216764000000, 0.62940],
-        [1216850400000, 0.63480],
-        [1216936800000, 0.63780],
-        [1217023200000, 0.63680],
-        [1217109600000, 0.63680],
-        [1217196000000, 0.63680],
-        [1217282400000, 0.6360],
-        [1217368800000, 0.6370],
-        [1217455200000, 0.64180],
-        [1217541600000, 0.64110],
-        [1217628000000, 0.64350],
-        [1217714400000, 0.64270],
-        [1217800800000, 0.64270],
-        [1217887200000, 0.64190],
-        [1217973600000, 0.64460],
-        [1218060000000, 0.64680],
-        [1218146400000, 0.64870],
-        [1218232800000, 0.65940],
-        [1218319200000, 0.66660],
-        [1218405600000, 0.66660],
-        [1218492000000, 0.66780],
-        [1218578400000, 0.67120],
-        [1218664800000, 0.67050],
-        [1218751200000, 0.67180],
-        [1218837600000, 0.67840],
-        [1218924000000, 0.68110],
-        [1219010400000, 0.68110],
-        [1219096800000, 0.67940],
-        [1219183200000, 0.68040],
-        [1219269600000, 0.67810],
-        [1219356000000, 0.67560],
-        [1219442400000, 0.67350],
-        [1219528800000, 0.67630],
-        [1219615200000, 0.67620],
-        [1219701600000, 0.67770],
-        [1219788000000, 0.68150],
-        [1219874400000, 0.68020],
-        [1219960800000, 0.6780],
-        [1220047200000, 0.67960],
-        [1220133600000, 0.68170],
-        [1220220000000, 0.68170],
-        [1220306400000, 0.68320],
-        [1220392800000, 0.68770],
-        [1220479200000, 0.69120],
-        [1220565600000, 0.69140],
-        [1220652000000, 0.70090],
-        [1220738400000, 0.70120],
-        [1220824800000, 0.7010],
-        [1220911200000, 0.70050]
-    ];
-
-    function euroFormatter(v, axis) {
-        return v.toFixed(axis.tickDecimals) + "€";
-    }
-
-    function doPlot(position) {
-        $.plot($("#flot-line-chart-multi"), [{
-            data: oilprices,
-            label: "Oil price ($)"
-        }, {
-            data: exchangerates,
-            label: "USD/EUR exchange rate",
-            yaxis: 2
-        }], {
-            xaxes: [{
-                mode: 'time'
-            }],
-            yaxes: [{
-                min: 0
-            }, {
-                // align if we are to the right
-                alignTicksWithAxis: position == "right" ? 1 : null,
-                position: position,
-                tickFormatter: euroFormatter
-            }],
-            legend: {
-                position: 'sw'
-            },
-            grid: {
-                hoverable: true //IMPORTANT! this is needed for tooltip to work
-            },
-            tooltip: true,
-            tooltipOpts: {
-                content: "%s for %x was %y",
-                xDateFormat: "%y-%0m-%0d",
-
-                onHover: function(flotItem, $tooltipEl) {
-                    // console.log(flotItem, $tooltipEl);
-                }
-            }
-
-        });
-    }
-
-    doPlot("right");
-
-    $("button").click(function() {
-        doPlot($(this).text());
-    });
-});
-
-//Flot Moving Line Chart
-
-$(function() {
-
-    var container = $("#flot-line-chart-moving");
-
-    // Determine how many data points to keep based on the placeholder's initial size;
-    // this gives us a nice high-res plot while avoiding more than one point per pixel.
-
-    var maximum = container.outerWidth() / 2 || 300;
-
-    //
-
-    var data = [];
-
-    function getRandomData() {
-
-        if (data.length) {
-            data = data.slice(1);
-        }
-
-        while (data.length < maximum) {
-            var previous = data.length ? data[data.length - 1] : 50;
-            var y = previous + Math.random() * 10 - 5;
-            data.push(y < 0 ? 0 : y > 100 ? 100 : y);
-        }
-
-        // zip the generated y values with the x values
-
-        var res = [];
-        for (var i = 0; i < data.length; ++i) {
-            res.push([i, data[i]])
-        }
-
-        return res;
-    }
-
-    //
-
-    series = [{
-        data: getRandomData(),
-        lines: {
-            fill: true
-        }
-    }];
-
-    //
-
-    var plot = $.plot(container, series, {
-        grid: {
-            borderWidth: 1,
-            minBorderMargin: 20,
-            labelMargin: 10,
-            backgroundColor: {
-                colors: ["#fff", "#e4f4f4"]
-            },
-            margin: {
-                top: 8,
-                bottom: 20,
-                left: 20
-            },
-            markings: function(axes) {
-                var markings = [];
-                var xaxis = axes.xaxis;
-                for (var x = Math.floor(xaxis.min); x < xaxis.max; x += xaxis.tickSize * 2) {
-                    markings.push({
-                        xaxis: {
-                            from: x,
-                            to: x + xaxis.tickSize
-                        },
-                        color: "rgba(232, 232, 255, 0.2)"
-                    });
-                }
-                return markings;
-            }
-        },
-        xaxis: {
-            tickFormatter: function() {
-                return "";
-            }
-        },
-        yaxis: {
-            min: 0,
-            max: 110
-        },
-        legend: {
-            show: true
-        }
-    });
-
-    // Update the random dataset at 25FPS for a smoothly-animating chart
-
-    setInterval(function updateRandom() {
-        series[0].data = getRandomData();
-        plot.setData(series);
-        plot.draw();
-    }, 40);
-
-});
-
-//Flot Bar Chart
-
-$(function() {
-
-    var barOptions = {
-        series: {
-            bars: {
-                show: true,
-                barWidth: 43200000
-            }
-        },
-        xaxis: {
-            mode: "time",
-            timeformat: "%m/%d",
-            minTickSize: [1, "day"]
-        },
-        grid: {
-            hoverable: true
-        },
-        legend: {
-            show: false
-        },
-        tooltip: true,
-        tooltipOpts: {
-            content: "x: %x, y: %y"
-        }
-    };
-    var barData = {
-        label: "bar",
-        data: [
-            [1354521600000, 1000],
-            [1355040000000, 2000],
-            [1355223600000, 3000],
-            [1355306400000, 4000],
-            [1355487300000, 5000],
-            [1355571900000, 6000]
-        ]
-    };
-    $.plot($("#flot-bar-chart"), [barData], barOptions);
-
-});
diff --git a/src/main/resources/META-INF/resources/designer/lib/plugins/flot/jquery.flot.js b/src/main/resources/META-INF/resources/designer/lib/plugins/flot/jquery.flot.js
deleted file mode 100644 (file)
index f38561b..0000000
+++ /dev/null
@@ -1,2599 +0,0 @@
-/*! Javascript plotting library for jQuery, v. 0.7.
- *
- * Released under the MIT license by IOLA, December 2007.
- *
- */
-
-// first an inline dependency, jquery.colorhelpers.js, we inline it here
-// for convenience
-
-/* Plugin for jQuery for working with colors.
- * 
- * Version 1.1.
- * 
- * Inspiration from jQuery color animation plugin by John Resig.
- *
- * Released under the MIT license by Ole Laursen, October 2009.
- *
- * Examples:
- *
- *   $.color.parse("#fff").scale('rgb', 0.25).add('a', -0.5).toString()
- *   var c = $.color.extract($("#mydiv"), 'background-color');
- *   console.log(c.r, c.g, c.b, c.a);
- *   $.color.make(100, 50, 25, 0.4).toString() // returns "rgba(100,50,25,0.4)"
- *
- * Note that .scale() and .add() return the same modified object
- * instead of making a new one.
- *
- * V. 1.1: Fix error handling so e.g. parsing an empty string does
- * produce a color rather than just crashing.
- */ 
-(function(B){B.color={};B.color.make=function(F,E,C,D){var G={};G.r=F||0;G.g=E||0;G.b=C||0;G.a=D!=null?D:1;G.add=function(J,I){for(var H=0;H<J.length;++H){G[J.charAt(H)]+=I}return G.normalize()};G.scale=function(J,I){for(var H=0;H<J.length;++H){G[J.charAt(H)]*=I}return G.normalize()};G.toString=function(){if(G.a>=1){return"rgb("+[G.r,G.g,G.b].join(",")+")"}else{return"rgba("+[G.r,G.g,G.b,G.a].join(",")+")"}};G.normalize=function(){function H(J,K,I){return K<J?J:(K>I?I:K)}G.r=H(0,parseInt(G.r),255);G.g=H(0,parseInt(G.g),255);G.b=H(0,parseInt(G.b),255);G.a=H(0,G.a,1);return G};G.clone=function(){return B.color.make(G.r,G.b,G.g,G.a)};return G.normalize()};B.color.extract=function(D,C){var E;do{E=D.css(C).toLowerCase();if(E!=""&&E!="transparent"){break}D=D.parent()}while(!B.nodeName(D.get(0),"body"));if(E=="rgba(0, 0, 0, 0)"){E="transparent"}return B.color.parse(E)};B.color.parse=function(F){var E,C=B.color.make;if(E=/rgb\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*\)/.exec(F)){return C(parseInt(E[1],10),parseInt(E[2],10),parseInt(E[3],10))}if(E=/rgba\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]+(?:\.[0-9]+)?)\s*\)/.exec(F)){return C(parseInt(E[1],10),parseInt(E[2],10),parseInt(E[3],10),parseFloat(E[4]))}if(E=/rgb\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*\)/.exec(F)){return C(parseFloat(E[1])*2.55,parseFloat(E[2])*2.55,parseFloat(E[3])*2.55)}if(E=/rgba\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\s*\)/.exec(F)){return C(parseFloat(E[1])*2.55,parseFloat(E[2])*2.55,parseFloat(E[3])*2.55,parseFloat(E[4]))}if(E=/#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/.exec(F)){return C(parseInt(E[1],16),parseInt(E[2],16),parseInt(E[3],16))}if(E=/#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])/.exec(F)){return C(parseInt(E[1]+E[1],16),parseInt(E[2]+E[2],16),parseInt(E[3]+E[3],16))}var D=B.trim(F).toLowerCase();if(D=="transparent"){return C(255,255,255,0)}else{E=A[D]||[0,0,0];return C(E[0],E[1],E[2])}};var A={aqua:[0,255,255],azure:[240,255,255],beige:[245,245,220],black:[0,0,0],blue:[0,0,255],brown:[165,42,42],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgrey:[169,169,169],darkgreen:[0,100,0],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkviolet:[148,0,211],fuchsia:[255,0,255],gold:[255,215,0],green:[0,128,0],indigo:[75,0,130],khaki:[240,230,140],lightblue:[173,216,230],lightcyan:[224,255,255],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightyellow:[255,255,224],lime:[0,255,0],magenta:[255,0,255],maroon:[128,0,0],navy:[0,0,128],olive:[128,128,0],orange:[255,165,0],pink:[255,192,203],purple:[128,0,128],violet:[128,0,128],red:[255,0,0],silver:[192,192,192],white:[255,255,255],yellow:[255,255,0]}})(jQuery);
-
-// the actual Flot code
-(function($) {
-    function Plot(placeholder, data_, options_, plugins) {
-        // data is on the form:
-        //   [ series1, series2 ... ]
-        // where series is either just the data as [ [x1, y1], [x2, y2], ... ]
-        // or { data: [ [x1, y1], [x2, y2], ... ], label: "some label", ... }
-        
-        var series = [],
-            options = {
-                // the color theme used for graphs
-                colors: ["#edc240", "#afd8f8", "#cb4b4b", "#4da74d", "#9440ed"],
-                legend: {
-                    show: true,
-                    noColumns: 1, // number of colums in legend table
-                    labelFormatter: null, // fn: string -> string
-                    labelBoxBorderColor: "#ccc", // border color for the little label boxes
-                    container: null, // container (as jQuery object) to put legend in, null means default on top of graph
-                    position: "ne", // position of default legend container within plot
-                    margin: 5, // distance from grid edge to default legend container within plot
-                    backgroundColor: null, // null means auto-detect
-                    backgroundOpacity: 0.85 // set to 0 to avoid background
-                },
-                xaxis: {
-                    show: null, // null = auto-detect, true = always, false = never
-                    position: "bottom", // or "top"
-                    mode: null, // null or "time"
-                    color: null, // base color, labels, ticks
-                    tickColor: null, // possibly different color of ticks, e.g. "rgba(0,0,0,0.15)"
-                    transform: null, // null or f: number -> number to transform axis
-                    inverseTransform: null, // if transform is set, this should be the inverse function
-                    min: null, // min. value to show, null means set automatically
-                    max: null, // max. value to show, null means set automatically
-                    autoscaleMargin: null, // margin in % to add if auto-setting min/max
-                    ticks: null, // either [1, 3] or [[1, "a"], 3] or (fn: axis info -> ticks) or app. number of ticks for auto-ticks
-                    tickFormatter: null, // fn: number -> string
-                    labelWidth: null, // size of tick labels in pixels
-                    labelHeight: null,
-                    reserveSpace: null, // whether to reserve space even if axis isn't shown
-                    tickLength: null, // size in pixels of ticks, or "full" for whole line
-                    alignTicksWithAxis: null, // axis number or null for no sync
-                    
-                    // mode specific options
-                    tickDecimals: null, // no. of decimals, null means auto
-                    tickSize: null, // number or [number, "unit"]
-                    minTickSize: null, // number or [number, "unit"]
-                    monthNames: null, // list of names of months
-                    timeformat: null, // format string to use
-                    twelveHourClock: false // 12 or 24 time in time mode
-                },
-                yaxis: {
-                    autoscaleMargin: 0.02,
-                    position: "left" // or "right"
-                },
-                xaxes: [],
-                yaxes: [],
-                series: {
-                    points: {
-                        show: false,
-                        radius: 3,
-                        lineWidth: 2, // in pixels
-                        fill: true,
-                        fillColor: "#ffffff",
-                        symbol: "circle" // or callback
-                    },
-                    lines: {
-                        // we don't put in show: false so we can see
-                        // whether lines were actively disabled 
-                        lineWidth: 2, // in pixels
-                        fill: false,
-                        fillColor: null,
-                        steps: false
-                    },
-                    bars: {
-                        show: false,
-                        lineWidth: 2, // in pixels
-                        barWidth: 1, // in units of the x axis
-                        fill: true,
-                        fillColor: null,
-                        align: "left", // or "center" 
-                        horizontal: false
-                    },
-                    shadowSize: 3
-                },
-                grid: {
-                    show: true,
-                    aboveData: false,
-                    color: "#545454", // primary color used for outline and labels
-                    backgroundColor: null, // null for transparent, else color
-                    borderColor: null, // set if different from the grid color
-                    tickColor: null, // color for the ticks, e.g. "rgba(0,0,0,0.15)"
-                    labelMargin: 5, // in pixels
-                    axisMargin: 8, // in pixels
-                    borderWidth: 2, // in pixels
-                    minBorderMargin: null, // in pixels, null means taken from points radius
-                    markings: null, // array of ranges or fn: axes -> array of ranges
-                    markingsColor: "#f4f4f4",
-                    markingsLineWidth: 2,
-                    // interactive stuff
-                    clickable: false,
-                    hoverable: false,
-                    autoHighlight: true, // highlight in case mouse is near
-                    mouseActiveRadius: 10 // how far the mouse can be away to activate an item
-                },
-                hooks: {}
-            },
-        canvas = null,      // the canvas for the plot itself
-        overlay = null,     // canvas for interactive stuff on top of plot
-        eventHolder = null, // jQuery object that events should be bound to
-        ctx = null, octx = null,
-        xaxes = [], yaxes = [],
-        plotOffset = { left: 0, right: 0, top: 0, bottom: 0},
-        canvasWidth = 0, canvasHeight = 0,
-        plotWidth = 0, plotHeight = 0,
-        hooks = {
-            processOptions: [],
-            processRawData: [],
-            processDatapoints: [],
-            drawSeries: [],
-            draw: [],
-            bindEvents: [],
-            drawOverlay: [],
-            shutdown: []
-        },
-        plot = this;
-
-        // public functions
-        plot.setData = setData;
-        plot.setupGrid = setupGrid;
-        plot.draw = draw;
-        plot.getPlaceholder = function() { return placeholder; };
-        plot.getCanvas = function() { return canvas; };
-        plot.getPlotOffset = function() { return plotOffset; };
-        plot.width = function () { return plotWidth; };
-        plot.height = function () { return plotHeight; };
-        plot.offset = function () {
-            var o = eventHolder.offset();
-            o.left += plotOffset.left;
-            o.top += plotOffset.top;
-            return o;
-        };
-        plot.getData = function () { return series; };
-        plot.getAxes = function () {
-            var res = {}, i;
-            $.each(xaxes.concat(yaxes), function (_, axis) {
-                if (axis)
-                    res[axis.direction + (axis.n != 1 ? axis.n : "") + "axis"] = axis;
-            });
-            return res;
-        };
-        plot.getXAxes = function () { return xaxes; };
-        plot.getYAxes = function () { return yaxes; };
-        plot.c2p = canvasToAxisCoords;
-        plot.p2c = axisToCanvasCoords;
-        plot.getOptions = function () { return options; };
-        plot.highlight = highlight;
-        plot.unhighlight = unhighlight;
-        plot.triggerRedrawOverlay = triggerRedrawOverlay;
-        plot.pointOffset = function(point) {
-            return {
-                left: parseInt(xaxes[axisNumber(point, "x") - 1].p2c(+point.x) + plotOffset.left),
-                top: parseInt(yaxes[axisNumber(point, "y") - 1].p2c(+point.y) + plotOffset.top)
-            };
-        };
-        plot.shutdown = shutdown;
-        plot.resize = function () {
-            getCanvasDimensions();
-            resizeCanvas(canvas);
-            resizeCanvas(overlay);
-        };
-
-        // public attributes
-        plot.hooks = hooks;
-        
-        // initialize
-        initPlugins(plot);
-        parseOptions(options_);
-        setupCanvases();
-        setData(data_);
-        setupGrid();
-        draw();
-        bindEvents();
-
-
-        function executeHooks(hook, args) {
-            args = [plot].concat(args);
-            for (var i = 0; i < hook.length; ++i)
-                hook[i].apply(this, args);
-        }
-
-        function initPlugins() {
-            for (var i = 0; i < plugins.length; ++i) {
-                var p = plugins[i];
-                p.init(plot);
-                if (p.options)
-                    $.extend(true, options, p.options);
-            }
-        }
-        
-        function parseOptions(opts) {
-            var i;
-            
-            $.extend(true, options, opts);
-            
-            if (options.xaxis.color == null)
-                options.xaxis.color = options.grid.color;
-            if (options.yaxis.color == null)
-                options.yaxis.color = options.grid.color;
-            
-            if (options.xaxis.tickColor == null) // backwards-compatibility
-                options.xaxis.tickColor = options.grid.tickColor;
-            if (options.yaxis.tickColor == null) // backwards-compatibility
-                options.yaxis.tickColor = options.grid.tickColor;
-
-            if (options.grid.borderColor == null)
-                options.grid.borderColor = options.grid.color;
-            if (options.grid.tickColor == null)
-                options.grid.tickColor = $.color.parse(options.grid.color).scale('a', 0.22).toString();
-            
-            // fill in defaults in axes, copy at least always the
-            // first as the rest of the code assumes it'll be there
-            for (i = 0; i < Math.max(1, options.xaxes.length); ++i)
-                options.xaxes[i] = $.extend(true, {}, options.xaxis, options.xaxes[i]);
-            for (i = 0; i < Math.max(1, options.yaxes.length); ++i)
-                options.yaxes[i] = $.extend(true, {}, options.yaxis, options.yaxes[i]);
-
-            // backwards compatibility, to be removed in future
-            if (options.xaxis.noTicks && options.xaxis.ticks == null)
-                options.xaxis.ticks = options.xaxis.noTicks;
-            if (options.yaxis.noTicks && options.yaxis.ticks == null)
-                options.yaxis.ticks = options.yaxis.noTicks;
-            if (options.x2axis) {
-                options.xaxes[1] = $.extend(true, {}, options.xaxis, options.x2axis);
-                options.xaxes[1].position = "top";
-            }
-            if (options.y2axis) {
-                options.yaxes[1] = $.extend(true, {}, options.yaxis, options.y2axis);
-                options.yaxes[1].position = "right";
-            }
-            if (options.grid.coloredAreas)
-                options.grid.markings = options.grid.coloredAreas;
-            if (options.grid.coloredAreasColor)
-                options.grid.markingsColor = options.grid.coloredAreasColor;
-            if (options.lines)
-                $.extend(true, options.series.lines, options.lines);
-            if (options.points)
-                $.extend(true, options.series.points, options.points);
-            if (options.bars)
-                $.extend(true, options.series.bars, options.bars);
-            if (options.shadowSize != null)
-                options.series.shadowSize = options.shadowSize;
-
-            // save options on axes for future reference
-            for (i = 0; i < options.xaxes.length; ++i)
-                getOrCreateAxis(xaxes, i + 1).options = options.xaxes[i];
-            for (i = 0; i < options.yaxes.length; ++i)
-                getOrCreateAxis(yaxes, i + 1).options = options.yaxes[i];
-
-            // add hooks from options
-            for (var n in hooks)
-                if (options.hooks[n] && options.hooks[n].length)
-                    hooks[n] = hooks[n].concat(options.hooks[n]);
-
-            executeHooks(hooks.processOptions, [options]);
-        }
-
-        function setData(d) {
-            series = parseData(d);
-            fillInSeriesOptions();
-            processData();
-        }
-        
-        function parseData(d) {
-            var res = [];
-            for (var i = 0; i < d.length; ++i) {
-                var s = $.extend(true, {}, options.series);
-
-                if (d[i].data != null) {
-                    s.data = d[i].data; // move the data instead of deep-copy
-                    delete d[i].data;
-
-                    $.extend(true, s, d[i]);
-
-                    d[i].data = s.data;
-                }
-                else
-                    s.data = d[i];
-                res.push(s);
-            }
-
-            return res;
-        }
-        
-        function axisNumber(obj, coord) {
-            var a = obj[coord + "axis"];
-            if (typeof a == "object") // if we got a real axis, extract number
-                a = a.n;
-            if (typeof a != "number")
-                a = 1; // default to first axis
-            return a;
-        }
-
-        function allAxes() {
-            // return flat array without annoying null entries
-            return $.grep(xaxes.concat(yaxes), function (a) { return a; });
-        }
-        
-        function canvasToAxisCoords(pos) {
-            // return an object with x/y corresponding to all used axes 
-            var res = {}, i, axis;
-            for (i = 0; i < xaxes.length; ++i) {
-                axis = xaxes[i];
-                if (axis && axis.used)
-                    res["x" + axis.n] = axis.c2p(pos.left);
-            }
-
-            for (i = 0; i < yaxes.length; ++i) {
-                axis = yaxes[i];
-                if (axis && axis.used)
-                    res["y" + axis.n] = axis.c2p(pos.top);
-            }
-            
-            if (res.x1 !== undefined)
-                res.x = res.x1;
-            if (res.y1 !== undefined)
-                res.y = res.y1;
-
-            return res;
-        }
-        
-        function axisToCanvasCoords(pos) {
-            // get canvas coords from the first pair of x/y found in pos
-            var res = {}, i, axis, key;
-
-            for (i = 0; i < xaxes.length; ++i) {
-                axis = xaxes[i];
-                if (axis && axis.used) {
-                    key = "x" + axis.n;
-                    if (pos[key] == null && axis.n == 1)
-                        key = "x";
-
-                    if (pos[key] != null) {
-                        res.left = axis.p2c(pos[key]);
-                        break;
-                    }
-                }
-            }
-            
-            for (i = 0; i < yaxes.length; ++i) {
-                axis = yaxes[i];
-                if (axis && axis.used) {
-                    key = "y" + axis.n;
-                    if (pos[key] == null && axis.n == 1)
-                        key = "y";
-
-                    if (pos[key] != null) {
-                        res.top = axis.p2c(pos[key]);
-                        break;
-                    }
-                }
-            }
-            
-            return res;
-        }
-        
-        function getOrCreateAxis(axes, number) {
-            if (!axes[number - 1])
-                axes[number - 1] = {
-                    n: number, // save the number for future reference
-                    direction: axes == xaxes ? "x" : "y",
-                    options: $.extend(true, {}, axes == xaxes ? options.xaxis : options.yaxis)
-                };
-                
-            return axes[number - 1];
-        }
-
-        function fillInSeriesOptions() {
-            var i;
-            
-            // collect what we already got of colors
-            var neededColors = series.length,
-                usedColors = [],
-                assignedColors = [];
-            for (i = 0; i < series.length; ++i) {
-                var sc = series[i].color;
-                if (sc != null) {
-                    --neededColors;
-                    if (typeof sc == "number")
-                        assignedColors.push(sc);
-                    else
-                        usedColors.push($.color.parse(series[i].color));
-                }
-            }
-            
-            // we might need to generate more colors if higher indices
-            // are assigned
-            for (i = 0; i < assignedColors.length; ++i) {
-                neededColors = Math.max(neededColors, assignedColors[i] + 1);
-            }
-
-            // produce colors as needed
-            var colors = [], variation = 0;
-            i = 0;
-            while (colors.length < neededColors) {
-                var c;
-                if (options.colors.length == i) // check degenerate case
-                    c = $.color.make(100, 100, 100);
-                else
-                    c = $.color.parse(options.colors[i]);
-
-                // vary color if needed
-                var sign = variation % 2 == 1 ? -1 : 1;
-                c.scale('rgb', 1 + sign * Math.ceil(variation / 2) * 0.2)
-
-                // FIXME: if we're getting to close to something else,
-                // we should probably skip this one
-                colors.push(c);
-                
-                ++i;
-                if (i >= options.colors.length) {
-                    i = 0;
-                    ++variation;
-                }
-            }
-
-            // fill in the options
-            var colori = 0, s;
-            for (i = 0; i < series.length; ++i) {
-                s = series[i];
-                
-                // assign colors
-                if (s.color == null) {
-                    s.color = colors[colori].toString();
-                    ++colori;
-                }
-                else if (typeof s.color == "number")
-                    s.color = colors[s.color].toString();
-
-                // turn on lines automatically in case nothing is set
-                if (s.lines.show == null) {
-                    var v, show = true;
-                    for (v in s)
-                        if (s[v] && s[v].show) {
-                            show = false;
-                            break;
-                        }
-                    if (show)
-                        s.lines.show = true;
-                }
-
-                // setup axes
-                s.xaxis = getOrCreateAxis(xaxes, axisNumber(s, "x"));
-                s.yaxis = getOrCreateAxis(yaxes, axisNumber(s, "y"));
-            }
-        }
-        
-        function processData() {
-            var topSentry = Number.POSITIVE_INFINITY,
-                bottomSentry = Number.NEGATIVE_INFINITY,
-                fakeInfinity = Number.MAX_VALUE,
-                i, j, k, m, length,
-                s, points, ps, x, y, axis, val, f, p;
-
-            function updateAxis(axis, min, max) {
-                if (min < axis.datamin && min != -fakeInfinity)
-                    axis.datamin = min;
-                if (max > axis.datamax && max != fakeInfinity)
-                    axis.datamax = max;
-            }
-
-            $.each(allAxes(), function (_, axis) {
-                // init axis
-                axis.datamin = topSentry;
-                axis.datamax = bottomSentry;
-                axis.used = false;
-            });
-            
-            for (i = 0; i < series.length; ++i) {
-                s = series[i];
-                s.datapoints = { points: [] };
-                
-                executeHooks(hooks.processRawData, [ s, s.data, s.datapoints ]);
-            }
-            
-            // first pass: clean and copy data
-            for (i = 0; i < series.length; ++i) {
-                s = series[i];
-
-                var data = s.data, format = s.datapoints.format;
-
-                if (!format) {
-                    format = [];
-                    // find out how to copy
-                    format.push({ x: true, number: true, required: true });
-                    format.push({ y: true, number: true, required: true });
-
-                    if (s.bars.show || (s.lines.show && s.lines.fill)) {
-                        format.push({ y: true, number: true, required: false, defaultValue: 0 });
-                        if (s.bars.horizontal) {
-                            delete format[format.length - 1].y;
-                            format[format.length - 1].x = true;
-                        }
-                    }
-                    
-                    s.datapoints.format = format;
-                }
-
-                if (s.datapoints.pointsize != null)
-                    continue; // already filled in
-
-                s.datapoints.pointsize = format.length;
-                
-                ps = s.datapoints.pointsize;
-                points = s.datapoints.points;
-
-                insertSteps = s.lines.show && s.lines.steps;
-                s.xaxis.used = s.yaxis.used = true;
-                
-                for (j = k = 0; j < data.length; ++j, k += ps) {
-                    p = data[j];
-
-                    var nullify = p == null;
-                    if (!nullify) {
-                        for (m = 0; m < ps; ++m) {
-                            val = p[m];
-                            f = format[m];
-
-                            if (f) {
-                                if (f.number && val != null) {
-                                    val = +val; // convert to number
-                                    if (isNaN(val))
-                                        val = null;
-                                    else if (val == Infinity)
-                                        val = fakeInfinity;
-                                    else if (val == -Infinity)
-                                        val = -fakeInfinity;
-                                }
-
-                                if (val == null) {
-                                    if (f.required)
-                                        nullify = true;
-                                    
-                                    if (f.defaultValue != null)
-                                        val = f.defaultValue;
-                                }
-                            }
-                            
-                            points[k + m] = val;
-                        }
-                    }
-                    
-                    if (nullify) {
-                        for (m = 0; m < ps; ++m) {
-                            val = points[k + m];
-                            if (val != null) {
-                                f = format[m];
-                                // extract min/max info
-                                if (f.x)
-                                    updateAxis(s.xaxis, val, val);
-                                if (f.y)
-                                    updateAxis(s.yaxis, val, val);
-                            }
-                            points[k + m] = null;
-                        }
-                    }
-                    else {
-                        // a little bit of line specific stuff that
-                        // perhaps shouldn't be here, but lacking
-                        // better means...
-                        if (insertSteps && k > 0
-                            && points[k - ps] != null
-                            && points[k - ps] != points[k]
-                            && points[k - ps + 1] != points[k + 1]) {
-                            // copy the point to make room for a middle point
-                            for (m = 0; m < ps; ++m)
-                                points[k + ps + m] = points[k + m];
-
-                            // middle point has same y
-                            points[k + 1] = points[k - ps + 1];
-
-                            // we've added a point, better reflect that
-                            k += ps;
-                        }
-                    }
-                }
-            }
-
-            // give the hooks a chance to run
-            for (i = 0; i < series.length; ++i) {
-                s = series[i];
-                
-                executeHooks(hooks.processDatapoints, [ s, s.datapoints]);
-            }
-
-            // second pass: find datamax/datamin for auto-scaling
-            for (i = 0; i < series.length; ++i) {
-                s = series[i];
-                points = s.datapoints.points,
-                ps = s.datapoints.pointsize;
-
-                var xmin = topSentry, ymin = topSentry,
-                    xmax = bottomSentry, ymax = bottomSentry;
-                
-                for (j = 0; j < points.length; j += ps) {
-                    if (points[j] == null)
-                        continue;
-
-                    for (m = 0; m < ps; ++m) {
-                        val = points[j + m];
-                        f = format[m];
-                        if (!f || val == fakeInfinity || val == -fakeInfinity)
-                            continue;
-                        
-                        if (f.x) {
-                            if (val < xmin)
-                                xmin = val;
-                            if (val > xmax)
-                                xmax = val;
-                        }
-                        if (f.y) {
-                            if (val < ymin)
-                                ymin = val;
-                            if (val > ymax)
-                                ymax = val;
-                        }
-                    }
-                }
-                
-                if (s.bars.show) {
-                    // make sure we got room for the bar on the dancing floor
-                    var delta = s.bars.align == "left" ? 0 : -s.bars.barWidth/2;
-                    if (s.bars.horizontal) {
-                        ymin += delta;
-                        ymax += delta + s.bars.barWidth;
-                    }
-                    else {
-                        xmin += delta;
-                        xmax += delta + s.bars.barWidth;
-                    }
-                }
-                
-                updateAxis(s.xaxis, xmin, xmax);
-                updateAxis(s.yaxis, ymin, ymax);
-            }
-
-            $.each(allAxes(), function (_, axis) {
-                if (axis.datamin == topSentry)
-                    axis.datamin = null;
-                if (axis.datamax == bottomSentry)
-                    axis.datamax = null;
-            });
-        }
-
-        function makeCanvas(skipPositioning, cls) {
-            var c = document.createElement('canvas');
-            c.className = cls;
-            c.width = canvasWidth;
-            c.height = canvasHeight;
-                    
-            if (!skipPositioning)
-                $(c).css({ position: 'absolute', left: 0, top: 0 });
-                
-            $(c).appendTo(placeholder);
-                
-            if (!c.getContext) // excanvas hack
-                c = window.G_vmlCanvasManager.initElement(c);
-
-            // used for resetting in case we get replotted
-            c.getContext("2d").save();
-            
-            return c;
-        }
-
-        function getCanvasDimensions() {
-            canvasWidth = placeholder.width();
-            canvasHeight = placeholder.height();
-            
-            if (canvasWidth <= 0 || canvasHeight <= 0)
-                throw "Invalid dimensions for plot, width = " + canvasWidth + ", height = " + canvasHeight;
-        }
-
-        function resizeCanvas(c) {
-            // resizing should reset the state (excanvas seems to be
-            // buggy though)
-            if (c.width != canvasWidth)
-                c.width = canvasWidth;
-
-            if (c.height != canvasHeight)
-                c.height = canvasHeight;
-
-            // so try to get back to the initial state (even if it's
-            // gone now, this should be safe according to the spec)
-            var cctx = c.getContext("2d");
-            cctx.restore();
-
-            // and save again
-            cctx.save();
-        }
-        
-        function setupCanvases() {
-            var reused,
-                existingCanvas = placeholder.children("canvas.base"),
-                existingOverlay = placeholder.children("canvas.overlay");
-
-            if (existingCanvas.length == 0 || existingOverlay == 0) {
-                // init everything
-                
-                placeholder.html(""); // make sure placeholder is clear
-            
-                placeholder.css({ padding: 0 }); // padding messes up the positioning
-                
-                if (placeholder.css("position") == 'static')
-                    placeholder.css("position", "relative"); // for positioning labels and overlay
-
-                getCanvasDimensions();
-                
-                canvas = makeCanvas(true, "base");
-                overlay = makeCanvas(false, "overlay"); // overlay canvas for interactive features
-
-                reused = false;
-            }
-            else {
-                // reuse existing elements
-
-                canvas = existingCanvas.get(0);
-                overlay = existingOverlay.get(0);
-
-                reused = true;
-            }
-
-            ctx = canvas.getContext("2d");
-            octx = overlay.getContext("2d");
-
-            // we include the canvas in the event holder too, because IE 7
-            // sometimes has trouble with the stacking order
-            eventHolder = $([overlay, canvas]);
-
-            if (reused) {
-                // run shutdown in the old plot object
-                placeholder.data("plot").shutdown();
-
-                // reset reused canvases
-                plot.resize();
-                
-                // make sure overlay pixels are cleared (canvas is cleared when we redraw)
-                octx.clearRect(0, 0, canvasWidth, canvasHeight);
-                
-                // then whack any remaining obvious garbage left
-                eventHolder.unbind();
-                placeholder.children().not([canvas, overlay]).remove();
-            }
-
-            // save in case we get replotted
-            placeholder.data("plot", plot);
-        }
-
-        function bindEvents() {
-            // bind events
-            if (options.grid.hoverable) {
-                eventHolder.mousemove(onMouseMove);
-                eventHolder.mouseleave(onMouseLeave);
-            }
-
-            if (options.grid.clickable)
-                eventHolder.click(onClick);
-
-            executeHooks(hooks.bindEvents, [eventHolder]);
-        }
-
-        function shutdown() {
-            if (redrawTimeout)
-                clearTimeout(redrawTimeout);
-            
-            eventHolder.unbind("mousemove", onMouseMove);
-            eventHolder.unbind("mouseleave", onMouseLeave);
-            eventHolder.unbind("click", onClick);
-            
-            executeHooks(hooks.shutdown, [eventHolder]);
-        }
-
-        function setTransformationHelpers(axis) {
-            // set helper functions on the axis, assumes plot area
-            // has been computed already
-            
-            function identity(x) { return x; }
-            
-            var s, m, t = axis.options.transform || identity,
-                it = axis.options.inverseTransform;
-            
-            // precompute how much the axis is scaling a point
-            // in canvas space
-            if (axis.direction == "x") {
-                s = axis.scale = plotWidth / Math.abs(t(axis.max) - t(axis.min));
-                m = Math.min(t(axis.max), t(axis.min));
-            }
-            else {
-                s = axis.scale = plotHeight / Math.abs(t(axis.max) - t(axis.min));
-                s = -s;
-                m = Math.max(t(axis.max), t(axis.min));
-            }
-
-            // data point to canvas coordinate
-            if (t == identity) // slight optimization
-                axis.p2c = function (p) { return (p - m) * s; };
-            else
-                axis.p2c = function (p) { return (t(p) - m) * s; };
-            // canvas coordinate to data point
-            if (!it)
-                axis.c2p = function (c) { return m + c / s; };
-            else
-                axis.c2p = function (c) { return it(m + c / s); };
-        }
-
-        function measureTickLabels(axis) {
-            var opts = axis.options, i, ticks = axis.ticks || [], labels = [],
-                l, w = opts.labelWidth, h = opts.labelHeight, dummyDiv;
-
-            function makeDummyDiv(labels, width) {
-                return $('<div style="position:absolute;top:-10000px;' + width + 'font-size:smaller">' +
-                         '<div class="' + axis.direction + 'Axis ' + axis.direction + axis.n + 'Axis">'
-                         + labels.join("") + '</div></div>')
-                    .appendTo(placeholder);
-            }
-            
-            if (axis.direction == "x") {
-                // to avoid measuring the widths of the labels (it's slow), we
-                // construct fixed-size boxes and put the labels inside
-                // them, we don't need the exact figures and the
-                // fixed-size box content is easy to center
-                if (w == null)
-                    w = Math.floor(canvasWidth / (ticks.length > 0 ? ticks.length : 1));
-
-                // measure x label heights
-                if (h == null) {
-                    labels = [];
-                    for (i = 0; i < ticks.length; ++i) {
-                        l = ticks[i].label;
-                        if (l)
-                            labels.push('<div class="tickLabel" style="float:left;width:' + w + 'px">' + l + '</div>');
-                    }
-
-                    if (labels.length > 0) {
-                        // stick them all in the same div and measure
-                        // collective height
-                        labels.push('<div style="clear:left"></div>');
-                        dummyDiv = makeDummyDiv(labels, "width:10000px;");
-                        h = dummyDiv.height();
-                        dummyDiv.remove();
-                    }
-                }
-            }
-            else if (w == null || h == null) {
-                // calculate y label dimensions
-                for (i = 0; i < ticks.length; ++i) {
-                    l = ticks[i].label;
-                    if (l)
-                        labels.push('<div class="tickLabel">' + l + '</div>');
-                }
-                
-                if (labels.length > 0) {
-                    dummyDiv = makeDummyDiv(labels, "");
-                    if (w == null)
-                        w = dummyDiv.children().width();
-                    if (h == null)
-                        h = dummyDiv.find("div.tickLabel").height();
-                    dummyDiv.remove();
-                }
-            }
-
-            if (w == null)
-                w = 0;
-            if (h == null)
-                h = 0;
-
-            axis.labelWidth = w;
-            axis.labelHeight = h;
-        }
-
-        function allocateAxisBoxFirstPhase(axis) {
-            // find the bounding box of the axis by looking at label
-            // widths/heights and ticks, make room by diminishing the
-            // plotOffset
-
-            var lw = axis.labelWidth,
-                lh = axis.labelHeight,
-                pos = axis.options.position,
-                tickLength = axis.options.tickLength,
-                axismargin = options.grid.axisMargin,
-                padding = options.grid.labelMargin,
-                all = axis.direction == "x" ? xaxes : yaxes,
-                index;
-
-            // determine axis margin
-            var samePosition = $.grep(all, function (a) {
-                return a && a.options.position == pos && a.reserveSpace;
-            });
-            if ($.inArray(axis, samePosition) == samePosition.length - 1)
-                axismargin = 0; // outermost
-
-            // determine tick length - if we're innermost, we can use "full"
-            if (tickLength == null)
-                tickLength = "full";
-
-            var sameDirection = $.grep(all, function (a) {
-                return a && a.reserveSpace;
-            });
-
-            var innermost = $.inArray(axis, sameDirection) == 0;
-            if (!innermost && tickLength == "full")
-                tickLength = 5;
-                
-            if (!isNaN(+tickLength))
-                padding += +tickLength;
-
-            // compute box
-            if (axis.direction == "x") {
-                lh += padding;
-                
-                if (pos == "bottom") {
-                    plotOffset.bottom += lh + axismargin;
-                    axis.box = { top: canvasHeight - plotOffset.bottom, height: lh };
-                }
-                else {
-                    axis.box = { top: plotOffset.top + axismargin, height: lh };
-                    plotOffset.top += lh + axismargin;
-                }
-            }
-            else {
-                lw += padding;
-                
-                if (pos == "left") {
-                    axis.box = { left: plotOffset.left + axismargin, width: lw };
-                    plotOffset.left += lw + axismargin;
-                }
-                else {
-                    plotOffset.right += lw + axismargin;
-                    axis.box = { left: canvasWidth - plotOffset.right, width: lw };
-                }
-            }
-
-             // save for future reference
-            axis.position = pos;
-            axis.tickLength = tickLength;
-            axis.box.padding = padding;
-            axis.innermost = innermost;
-        }
-
-        function allocateAxisBoxSecondPhase(axis) {
-            // set remaining bounding box coordinates
-            if (axis.direction == "x") {
-                axis.box.left = plotOffset.left;
-                axis.box.width = plotWidth;
-            }
-            else {
-                axis.box.top = plotOffset.top;
-                axis.box.height = plotHeight;
-            }
-        }
-        
-        function setupGrid() {
-            var i, axes = allAxes();
-
-            // first calculate the plot and axis box dimensions
-
-            $.each(axes, function (_, axis) {
-                axis.show = axis.options.show;
-                if (axis.show == null)
-                    axis.show = axis.used; // by default an axis is visible if it's got data
-                
-                axis.reserveSpace = axis.show || axis.options.reserveSpace;
-
-                setRange(axis);
-            });
-
-            allocatedAxes = $.grep(axes, function (axis) { return axis.reserveSpace; });
-
-            plotOffset.left = plotOffset.right = plotOffset.top = plotOffset.bottom = 0;
-            if (options.grid.show) {
-                $.each(allocatedAxes, function (_, axis) {
-                    // make the ticks
-                    setupTickGeneration(axis);
-                    setTicks(axis);
-                    snapRangeToTicks(axis, axis.ticks);
-
-                    // find labelWidth/Height for axis
-                    measureTickLabels(axis);
-                });
-
-                // with all dimensions in house, we can compute the
-                // axis boxes, start from the outside (reverse order)
-                for (i = allocatedAxes.length - 1; i >= 0; --i)
-                    allocateAxisBoxFirstPhase(allocatedAxes[i]);
-
-                // make sure we've got enough space for things that
-                // might stick out
-                var minMargin = options.grid.minBorderMargin;
-                if (minMargin == null) {
-                    minMargin = 0;
-                    for (i = 0; i < series.length; ++i)
-                        minMargin = Math.max(minMargin, series[i].points.radius + series[i].points.lineWidth/2);
-                }
-                    
-                for (var a in plotOffset) {
-                    plotOffset[a] += options.grid.borderWidth;
-                    plotOffset[a] = Math.max(minMargin, plotOffset[a]);
-                }
-            }
-            
-            plotWidth = canvasWidth - plotOffset.left - plotOffset.right;
-            plotHeight = canvasHeight - plotOffset.bottom - plotOffset.top;
-
-            // now we got the proper plotWidth/Height, we can compute the scaling
-            $.each(axes, function (_, axis) {
-                setTransformationHelpers(axis);
-            });
-
-            if (options.grid.show) {
-                $.each(allocatedAxes, function (_, axis) {
-                    allocateAxisBoxSecondPhase(axis);
-                });
-
-                insertAxisLabels();
-            }
-            
-            insertLegend();
-        }
-        
-        function setRange(axis) {
-            var opts = axis.options,
-                min = +(opts.min != null ? opts.min : axis.datamin),
-                max = +(opts.max != null ? opts.max : axis.datamax),
-                delta = max - min;
-
-            if (delta == 0.0) {
-                // degenerate case
-                var widen = max == 0 ? 1 : 0.01;
-
-                if (opts.min == null)
-                    min -= widen;
-                // always widen max if we couldn't widen min to ensure we
-                // don't fall into min == max which doesn't work
-                if (opts.max == null || opts.min != null)
-                    max += widen;
-            }
-            else {
-                // consider autoscaling
-                var margin = opts.autoscaleMargin;
-                if (margin != null) {
-                    if (opts.min == null) {
-                        min -= delta * margin;
-                        // make sure we don't go below zero if all values
-                        // are positive
-                        if (min < 0 && axis.datamin != null && axis.datamin >= 0)
-                            min = 0;
-                    }
-                    if (opts.max == null) {
-                        max += delta * margin;
-                        if (max > 0 && axis.datamax != null && axis.datamax <= 0)
-                            max = 0;
-                    }
-                }
-            }
-            axis.min = min;
-            axis.max = max;
-        }
-
-        function setupTickGeneration(axis) {
-            var opts = axis.options;
-                
-            // estimate number of ticks
-            var noTicks;
-            if (typeof opts.ticks == "number" && opts.ticks > 0)
-                noTicks = opts.ticks;
-            else
-                // heuristic based on the model a*sqrt(x) fitted to
-                // some data points that seemed reasonable
-                noTicks = 0.3 * Math.sqrt(axis.direction == "x" ? canvasWidth : canvasHeight);
-
-            var delta = (axis.max - axis.min) / noTicks,
-                size, generator, unit, formatter, i, magn, norm;
-
-            if (opts.mode == "time") {
-                // pretty handling of time
-                
-                // map of app. size of time units in milliseconds
-                var timeUnitSize = {
-                    "second": 1000,
-                    "minute": 60 * 1000,
-                    "hour": 60 * 60 * 1000,
-                    "day": 24 * 60 * 60 * 1000,
-                    "month": 30 * 24 * 60 * 60 * 1000,
-                    "year": 365.2425 * 24 * 60 * 60 * 1000
-                };
-
-
-                // the allowed tick sizes, after 1 year we use
-                // an integer algorithm
-                var spec = [
-                    [1, "second"], [2, "second"], [5, "second"], [10, "second"],
-                    [30, "second"], 
-                    [1, "minute"], [2, "minute"], [5, "minute"], [10, "minute"],
-                    [30, "minute"], 
-                    [1, "hour"], [2, "hour"], [4, "hour"],
-                    [8, "hour"], [12, "hour"],
-                    [1, "day"], [2, "day"], [3, "day"],
-                    [0.25, "month"], [0.5, "month"], [1, "month"],
-                    [2, "month"], [3, "month"], [6, "month"],
-                    [1, "year"]
-                ];
-
-                var minSize = 0;
-                if (opts.minTickSize != null) {
-                    if (typeof opts.tickSize == "number")
-                        minSize = opts.tickSize;
-                    else
-                        minSize = opts.minTickSize[0] * timeUnitSize[opts.minTickSize[1]];
-                }
-
-                for (var i = 0; i < spec.length - 1; ++i)
-                    if (delta < (spec[i][0] * timeUnitSize[spec[i][1]]
-                                 + spec[i + 1][0] * timeUnitSize[spec[i + 1][1]]) / 2
-                       && spec[i][0] * timeUnitSize[spec[i][1]] >= minSize)
-                        break;
-                size = spec[i][0];
-                unit = spec[i][1];
-                
-                // special-case the possibility of several years
-                if (unit == "year") {
-                    magn = Math.pow(10, Math.floor(Math.log(delta / timeUnitSize.year) / Math.LN10));
-                    norm = (delta / timeUnitSize.year) / magn;
-                    if (norm < 1.5)
-                        size = 1;
-                    else if (norm < 3)
-                        size = 2;
-                    else if (norm < 7.5)
-                        size = 5;
-                    else
-                        size = 10;
-
-                    size *= magn;
-                }
-
-                axis.tickSize = opts.tickSize || [size, unit];
-                
-                generator = function(axis) {
-                    var ticks = [],
-                        tickSize = axis.tickSize[0], unit = axis.tickSize[1],
-                        d = new Date(axis.min);
-                    
-                    var step = tickSize * timeUnitSize[unit];
-
-                    if (unit == "second")
-                        d.setUTCSeconds(floorInBase(d.getUTCSeconds(), tickSize));
-                    if (unit == "minute")
-                        d.setUTCMinutes(floorInBase(d.getUTCMinutes(), tickSize));
-                    if (unit == "hour")
-                        d.setUTCHours(floorInBase(d.getUTCHours(), tickSize));
-                    if (unit == "month")
-                        d.setUTCMonth(floorInBase(d.getUTCMonth(), tickSize));
-                    if (unit == "year")
-                        d.setUTCFullYear(floorInBase(d.getUTCFullYear(), tickSize));
-                    
-                    // reset smaller components
-                    d.setUTCMilliseconds(0);
-                    if (step >= timeUnitSize.minute)
-                        d.setUTCSeconds(0);
-                    if (step >= timeUnitSize.hour)
-                        d.setUTCMinutes(0);
-                    if (step >= timeUnitSize.day)
-                        d.setUTCHours(0);
-                    if (step >= timeUnitSize.day * 4)
-                        d.setUTCDate(1);
-                    if (step >= timeUnitSize.year)
-                        d.setUTCMonth(0);
-
-
-                    var carry = 0, v = Number.NaN, prev;
-                    do {
-                        prev = v;
-                        v = d.getTime();
-                        ticks.push(v);
-                        if (unit == "month") {
-                            if (tickSize < 1) {
-                                // a bit complicated - we'll divide the month
-                                // up but we need to take care of fractions
-                                // so we don't end up in the middle of a day
-                                d.setUTCDate(1);
-                                var start = d.getTime();
-                                d.setUTCMonth(d.getUTCMonth() + 1);
-                                var end = d.getTime();
-                                d.setTime(v + carry * timeUnitSize.hour + (end - start) * tickSize);
-                                carry = d.getUTCHours();
-                                d.setUTCHours(0);
-                            }
-                            else
-                                d.setUTCMonth(d.getUTCMonth() + tickSize);
-                        }
-                        else if (unit == "year") {
-                            d.setUTCFullYear(d.getUTCFullYear() + tickSize);
-                        }
-                        else
-                            d.setTime(v + step);
-                    } while (v < axis.max && v != prev);
-
-                    return ticks;
-                };
-
-                formatter = function (v, axis) {
-                    var d = new Date(v);
-
-                    // first check global format
-                    if (opts.timeformat != null)
-                        return $.plot.formatDate(d, opts.timeformat, opts.monthNames);
-                    
-                    var t = axis.tickSize[0] * timeUnitSize[axis.tickSize[1]];
-                    var span = axis.max - axis.min;
-                    var suffix = (opts.twelveHourClock) ? " %p" : "";
-                    
-                    if (t < timeUnitSize.minute)
-                        fmt = "%h:%M:%S" + suffix;
-                    else if (t < timeUnitSize.day) {
-                        if (span < 2 * timeUnitSize.day)
-                            fmt = "%h:%M" + suffix;
-                        else
-                            fmt = "%b %d %h:%M" + suffix;
-                    }
-                    else if (t < timeUnitSize.month)
-                        fmt = "%b %d";
-                    else if (t < timeUnitSize.year) {
-                        if (span < timeUnitSize.year)
-                            fmt = "%b";
-                        else
-                            fmt = "%b %y";
-                    }
-                    else
-                        fmt = "%y";
-                    
-                    return $.plot.formatDate(d, fmt, opts.monthNames);
-                };
-            }
-            else {
-                // pretty rounding of base-10 numbers
-                var maxDec = opts.tickDecimals;
-                var dec = -Math.floor(Math.log(delta) / Math.LN10);
-                if (maxDec != null && dec > maxDec)
-                    dec = maxDec;
-
-                magn = Math.pow(10, -dec);
-                norm = delta / magn; // norm is between 1.0 and 10.0
-                
-                if (norm < 1.5)
-                    size = 1;
-                else if (norm < 3) {
-                    size = 2;
-                    // special case for 2.5, requires an extra decimal
-                    if (norm > 2.25 && (maxDec == null || dec + 1 <= maxDec)) {
-                        size = 2.5;
-                        ++dec;
-                    }
-                }
-                else if (norm < 7.5)
-                    size = 5;
-                else
-                    size = 10;
-
-                size *= magn;
-                
-                if (opts.minTickSize != null && size < opts.minTickSize)
-                    size = opts.minTickSize;
-
-                axis.tickDecimals = Math.max(0, maxDec != null ? maxDec : dec);
-                axis.tickSize = opts.tickSize || size;
-
-                generator = function (axis) {
-                    var ticks = [];
-
-                    // spew out all possible ticks
-                    var start = floorInBase(axis.min, axis.tickSize),
-                        i = 0, v = Number.NaN, prev;
-                    do {
-                        prev = v;
-                        v = start + i * axis.tickSize;
-                        ticks.push(v);
-                        ++i;
-                    } while (v < axis.max && v != prev);
-                    return ticks;
-                };
-
-                formatter = function (v, axis) {
-                    return v.toFixed(axis.tickDecimals);
-                };
-            }
-
-            if (opts.alignTicksWithAxis != null) {
-                var otherAxis = (axis.direction == "x" ? xaxes : yaxes)[opts.alignTicksWithAxis - 1];
-                if (otherAxis && otherAxis.used && otherAxis != axis) {
-                    // consider snapping min/max to outermost nice ticks
-                    var niceTicks = generator(axis);
-                    if (niceTicks.length > 0) {
-                        if (opts.min == null)
-                            axis.min = Math.min(axis.min, niceTicks[0]);
-                        if (opts.max == null && niceTicks.length > 1)
-                            axis.max = Math.max(axis.max, niceTicks[niceTicks.length - 1]);
-                    }
-                    
-                    generator = function (axis) {
-                        // copy ticks, scaled to this axis
-                        var ticks = [], v, i;
-                        for (i = 0; i < otherAxis.ticks.length; ++i) {
-                            v = (otherAxis.ticks[i].v - otherAxis.min) / (otherAxis.max - otherAxis.min);
-                            v = axis.min + v * (axis.max - axis.min);
-                            ticks.push(v);
-                        }
-                        return ticks;
-                    };
-                    
-                    // we might need an extra decimal since forced
-                    // ticks don't necessarily fit naturally
-                    if (axis.mode != "time" && opts.tickDecimals == null) {
-                        var extraDec = Math.max(0, -Math.floor(Math.log(delta) / Math.LN10) + 1),
-                            ts = generator(axis);
-
-                        // only proceed if the tick interval rounded
-                        // with an extra decimal doesn't give us a
-                        // zero at end
-                        if (!(ts.length > 1 && /\..*0$/.test((ts[1] - ts[0]).toFixed(extraDec))))
-                            axis.tickDecimals = extraDec;
-                    }
-                }
-            }
-
-            axis.tickGenerator = generator;
-            if ($.isFunction(opts.tickFormatter))
-                axis.tickFormatter = function (v, axis) { return "" + opts.tickFormatter(v, axis); };
-            else
-                axis.tickFormatter = formatter;
-        }
-        
-        function setTicks(axis) {
-            var oticks = axis.options.ticks, ticks = [];
-            if (oticks == null || (typeof oticks == "number" && oticks > 0))
-                ticks = axis.tickGenerator(axis);
-            else if (oticks) {
-                if ($.isFunction(oticks))
-                    // generate the ticks
-                    ticks = oticks({ min: axis.min, max: axis.max });
-                else
-                    ticks = oticks;
-            }
-
-            // clean up/labelify the supplied ticks, copy them over
-            var i, v;
-            axis.ticks = [];
-            for (i = 0; i < ticks.length; ++i) {
-                var label = null;
-                var t = ticks[i];
-                if (typeof t == "object") {
-                    v = +t[0];
-                    if (t.length > 1)
-                        label = t[1];
-                }
-                else
-                    v = +t;
-                if (label == null)
-                    label = axis.tickFormatter(v, axis);
-                if (!isNaN(v))
-                    axis.ticks.push({ v: v, label: label });
-            }
-        }
-
-        function snapRangeToTicks(axis, ticks) {
-            if (axis.options.autoscaleMargin && ticks.length > 0) {
-                // snap to ticks
-                if (axis.options.min == null)
-                    axis.min = Math.min(axis.min, ticks[0].v);
-                if (axis.options.max == null && ticks.length > 1)
-                    axis.max = Math.max(axis.max, ticks[ticks.length - 1].v);
-            }
-        }
-      
-        function draw() {
-            ctx.clearRect(0, 0, canvasWidth, canvasHeight);
-
-            var grid = options.grid;
-
-            // draw background, if any
-            if (grid.show && grid.backgroundColor)
-                drawBackground();
-            
-            if (grid.show && !grid.aboveData)
-                drawGrid();
-
-            for (var i = 0; i < series.length; ++i) {
-                executeHooks(hooks.drawSeries, [ctx, series[i]]);
-                drawSeries(series[i]);
-            }
-
-            executeHooks(hooks.draw, [ctx]);
-            
-            if (grid.show && grid.aboveData)
-                drawGrid();
-        }
-
-        function extractRange(ranges, coord) {
-            var axis, from, to, key, axes = allAxes();
-
-            for (i = 0; i < axes.length; ++i) {
-                axis = axes[i];
-                if (axis.direction == coord) {
-                    key = coord + axis.n + "axis";
-                    if (!ranges[key] && axis.n == 1)
-                        key = coord + "axis"; // support x1axis as xaxis
-                    if (ranges[key]) {
-                        from = ranges[key].from;
-                        to = ranges[key].to;
-                        break;
-                    }
-                }
-            }
-
-            // backwards-compat stuff - to be removed in future
-            if (!ranges[key]) {
-                axis = coord == "x" ? xaxes[0] : yaxes[0];
-                from = ranges[coord + "1"];
-                to = ranges[coord + "2"];
-            }
-
-            // auto-reverse as an added bonus
-            if (from != null && to != null && from > to) {
-                var tmp = from;
-                from = to;
-                to = tmp;
-            }
-            
-            return { from: from, to: to, axis: axis };
-        }
-        
-        function drawBackground() {
-            ctx.save();
-            ctx.translate(plotOffset.left, plotOffset.top);
-
-            ctx.fillStyle = getColorOrGradient(options.grid.backgroundColor, plotHeight, 0, "rgba(255, 255, 255, 0)");
-            ctx.fillRect(0, 0, plotWidth, plotHeight);
-            ctx.restore();
-        }
-
-        function drawGrid() {
-            var i;
-            
-            ctx.save();
-            ctx.translate(plotOffset.left, plotOffset.top);
-
-            // draw markings
-            var markings = options.grid.markings;
-            if (markings) {
-                if ($.isFunction(markings)) {
-                    var axes = plot.getAxes();
-                    // xmin etc. is backwards compatibility, to be
-                    // removed in the future
-                    axes.xmin = axes.xaxis.min;
-                    axes.xmax = axes.xaxis.max;
-                    axes.ymin = axes.yaxis.min;
-                    axes.ymax = axes.yaxis.max;
-                    
-                    markings = markings(axes);
-                }
-
-                for (i = 0; i < markings.length; ++i) {
-                    var m = markings[i],
-                        xrange = extractRange(m, "x"),
-                        yrange = extractRange(m, "y");
-
-                    // fill in missing
-                    if (xrange.from == null)
-                        xrange.from = xrange.axis.min;
-                    if (xrange.to == null)
-                        xrange.to = xrange.axis.max;
-                    if (yrange.from == null)
-                        yrange.from = yrange.axis.min;
-                    if (yrange.to == null)
-                        yrange.to = yrange.axis.max;
-
-                    // clip
-                    if (xrange.to < xrange.axis.min || xrange.from > xrange.axis.max ||
-                        yrange.to < yrange.axis.min || yrange.from > yrange.axis.max)
-                        continue;
-
-                    xrange.from = Math.max(xrange.from, xrange.axis.min);
-                    xrange.to = Math.min(xrange.to, xrange.axis.max);
-                    yrange.from = Math.max(yrange.from, yrange.axis.min);
-                    yrange.to = Math.min(yrange.to, yrange.axis.max);
-
-                    if (xrange.from == xrange.to && yrange.from == yrange.to)
-                        continue;
-
-                    // then draw
-                    xrange.from = xrange.axis.p2c(xrange.from);
-                    xrange.to = xrange.axis.p2c(xrange.to);
-                    yrange.from = yrange.axis.p2c(yrange.from);
-                    yrange.to = yrange.axis.p2c(yrange.to);
-                    
-                    if (xrange.from == xrange.to || yrange.from == yrange.to) {
-                        // draw line
-                        ctx.beginPath();
-                        ctx.strokeStyle = m.color || options.grid.markingsColor;
-                        ctx.lineWidth = m.lineWidth || options.grid.markingsLineWidth;
-                        ctx.moveTo(xrange.from, yrange.from);
-                        ctx.lineTo(xrange.to, yrange.to);
-                        ctx.stroke();
-                    }
-                    else {
-                        // fill area
-                        ctx.fillStyle = m.color || options.grid.markingsColor;
-                        ctx.fillRect(xrange.from, yrange.to,
-                                     xrange.to - xrange.from,
-                                     yrange.from - yrange.to);
-                    }
-                }
-            }
-            
-            // draw the ticks
-            var axes = allAxes(), bw = options.grid.borderWidth;
-
-            for (var j = 0; j < axes.length; ++j) {
-                var axis = axes[j], box = axis.box,
-                    t = axis.tickLength, x, y, xoff, yoff;
-                if (!axis.show || axis.ticks.length == 0)
-                    continue;
-                
-                ctx.strokeStyle = axis.options.tickColor || $.color.parse(axis.options.color).scale('a', 0.22).toString();
-                ctx.lineWidth = 1;
-
-                // find the edges
-                if (axis.direction == "x") {
-                    x = 0;
-                    if (t == "full")
-                        y = (axis.position == "top" ? 0 : plotHeight);
-                    else
-                        y = box.top - plotOffset.top + (axis.position == "top" ? box.height : 0);
-                }
-                else {
-                    y = 0;
-                    if (t == "full")
-                        x = (axis.position == "left" ? 0 : plotWidth);
-                    else
-                        x = box.left - plotOffset.left + (axis.position == "left" ? box.width : 0);
-                }
-                
-                // draw tick bar
-                if (!axis.innermost) {
-                    ctx.beginPath();
-                    xoff = yoff = 0;
-                    if (axis.direction == "x")
-                        xoff = plotWidth;
-                    else
-                        yoff = plotHeight;
-                    
-                    if (ctx.lineWidth == 1) {
-                        x = Math.floor(x) + 0.5;
-                        y = Math.floor(y) + 0.5;
-                    }
-
-                    ctx.moveTo(x, y);
-                    ctx.lineTo(x + xoff, y + yoff);
-                    ctx.stroke();
-                }
-
-                // draw ticks
-                ctx.beginPath();
-                for (i = 0; i < axis.ticks.length; ++i) {
-                    var v = axis.ticks[i].v;
-                    
-                    xoff = yoff = 0;
-
-                    if (v < axis.min || v > axis.max
-                        // skip those lying on the axes if we got a border
-                        || (t == "full" && bw > 0
-                            && (v == axis.min || v == axis.max)))
-                        continue;
-
-                    if (axis.direction == "x") {
-                        x = axis.p2c(v);
-                        yoff = t == "full" ? -plotHeight : t;
-                        
-                        if (axis.position == "top")
-                            yoff = -yoff;
-                    }
-                    else {
-                        y = axis.p2c(v);
-                        xoff = t == "full" ? -plotWidth : t;
-                        
-                        if (axis.position == "left")
-                            xoff = -xoff;
-                    }
-
-                    if (ctx.lineWidth == 1) {
-                        if (axis.direction == "x")
-                            x = Math.floor(x) + 0.5;
-                        else
-                            y = Math.floor(y) + 0.5;
-                    }
-
-                    ctx.moveTo(x, y);
-                    ctx.lineTo(x + xoff, y + yoff);
-                }
-                
-                ctx.stroke();
-            }
-            
-            
-            // draw border
-            if (bw) {
-                ctx.lineWidth = bw;
-                ctx.strokeStyle = options.grid.borderColor;
-                ctx.strokeRect(-bw/2, -bw/2, plotWidth + bw, plotHeight + bw);
-            }
-
-            ctx.restore();
-        }
-
-        function insertAxisLabels() {
-            placeholder.find(".tickLabels").remove();
-            
-            var html = ['<div class="tickLabels" style="font-size:smaller">'];
-
-            var axes = allAxes();
-            for (var j = 0; j < axes.length; ++j) {
-                var axis = axes[j], box = axis.box;
-                if (!axis.show)
-                    continue;
-                //debug: html.push('<div style="position:absolute;opacity:0.10;background-color:red;left:' + box.left + 'px;top:' + box.top + 'px;width:' + box.width +  'px;height:' + box.height + 'px"></div>')
-                html.push('<div class="' + axis.direction + 'Axis ' + axis.direction + axis.n + 'Axis" style="color:' + axis.options.color + '">');
-                for (var i = 0; i < axis.ticks.length; ++i) {
-                    var tick = axis.ticks[i];
-                    if (!tick.label || tick.v < axis.min || tick.v > axis.max)
-                        continue;
-
-                    var pos = {}, align;
-                    
-                    if (axis.direction == "x") {
-                        align = "center";
-                        pos.left = Math.round(plotOffset.left + axis.p2c(tick.v) - axis.labelWidth/2);
-                        if (axis.position == "bottom")
-                            pos.top = box.top + box.padding;
-                        else
-                            pos.bottom = canvasHeight - (box.top + box.height - box.padding);
-                    }
-                    else {
-                        pos.top = Math.round(plotOffset.top + axis.p2c(tick.v) - axis.labelHeight/2);
-                        if (axis.position == "left") {
-                            pos.right = canvasWidth - (box.left + box.width - box.padding)
-                            align = "right";
-                        }
-                        else {
-                            pos.left = box.left + box.padding;
-                            align = "left";
-                        }
-                    }
-
-                    pos.width = axis.labelWidth;
-
-                    var style = ["position:absolute", "text-align:" + align ];
-                    for (var a in pos)
-                        style.push(a + ":" + pos[a] + "px")
-                    
-                    html.push('<div class="tickLabel" style="' + style.join(';') + '">' + tick.label + '</div>');
-                }
-                html.push('</div>');
-            }
-
-            html.push('</div>');
-
-            placeholder.append(html.join(""));
-        }
-
-        function drawSeries(series) {
-            if (series.lines.show)
-                drawSeriesLines(series);
-            if (series.bars.show)
-                drawSeriesBars(series);
-            if (series.points.show)
-                drawSeriesPoints(series);
-        }
-        
-        function drawSeriesLines(series) {
-            function plotLine(datapoints, xoffset, yoffset, axisx, axisy) {
-                var points = datapoints.points,
-                    ps = datapoints.pointsize,
-                    prevx = null, prevy = null;
-                
-                ctx.beginPath();
-                for (var i = ps; i < points.length; i += ps) {
-                    var x1 = points[i - ps], y1 = points[i - ps + 1],
-                        x2 = points[i], y2 = points[i + 1];
-                    
-                    if (x1 == null || x2 == null)
-                        continue;
-
-                    // clip with ymin
-                    if (y1 <= y2 && y1 < axisy.min) {
-                        if (y2 < axisy.min)
-                            continue;   // line segment is outside
-                        // compute new intersection point
-                        x1 = (axisy.min - y1) / (y2 - y1) * (x2 - x1) + x1;
-                        y1 = axisy.min;
-                    }
-                    else if (y2 <= y1 && y2 < axisy.min) {
-                        if (y1 < axisy.min)
-                            continue;
-                        x2 = (axisy.min - y1) / (y2 - y1) * (x2 - x1) + x1;
-                        y2 = axisy.min;
-                    }
-
-                    // clip with ymax
-                    if (y1 >= y2 && y1 > axisy.max) {
-                        if (y2 > axisy.max)
-                            continue;
-                        x1 = (axisy.max - y1) / (y2 - y1) * (x2 - x1) + x1;
-                        y1 = axisy.max;
-                    }
-                    else if (y2 >= y1 && y2 > axisy.max) {
-                        if (y1 > axisy.max)
-                            continue;
-                        x2 = (axisy.max - y1) / (y2 - y1) * (x2 - x1) + x1;
-                        y2 = axisy.max;
-                    }
-
-                    // clip with xmin
-                    if (x1 <= x2 && x1 < axisx.min) {
-                        if (x2 < axisx.min)
-                            continue;
-                        y1 = (axisx.min - x1) / (x2 - x1) * (y2 - y1) + y1;
-                        x1 = axisx.min;
-                    }
-                    else if (x2 <= x1 && x2 < axisx.min) {
-                        if (x1 < axisx.min)
-                            continue;
-                        y2 = (axisx.min - x1) / (x2 - x1) * (y2 - y1) + y1;
-                        x2 = axisx.min;
-                    }
-
-                    // clip with xmax
-                    if (x1 >= x2 && x1 > axisx.max) {
-                        if (x2 > axisx.max)
-                            continue;
-                        y1 = (axisx.max - x1) / (x2 - x1) * (y2 - y1) + y1;
-                        x1 = axisx.max;
-                    }
-                    else if (x2 >= x1 && x2 > axisx.max) {
-                        if (x1 > axisx.max)
-                            continue;
-                        y2 = (axisx.max - x1) / (x2 - x1) * (y2 - y1) + y1;
-                        x2 = axisx.max;
-                    }
-
-                    if (x1 != prevx || y1 != prevy)
-                        ctx.moveTo(axisx.p2c(x1) + xoffset, axisy.p2c(y1) + yoffset);
-                    
-                    prevx = x2;
-                    prevy = y2;
-                    ctx.lineTo(axisx.p2c(x2) + xoffset, axisy.p2c(y2) + yoffset);
-                }
-                ctx.stroke();
-            }
-
-            function plotLineArea(datapoints, axisx, axisy) {
-                var points = datapoints.points,
-                    ps = datapoints.pointsize,
-                    bottom = Math.min(Math.max(0, axisy.min), axisy.max),
-                    i = 0, top, areaOpen = false,
-                    ypos = 1, segmentStart = 0, segmentEnd = 0;
-
-                // we process each segment in two turns, first forward
-                // direction to sketch out top, then once we hit the
-                // end we go backwards to sketch the bottom
-                while (true) {
-                    if (ps > 0 && i > points.length + ps)
-                        break;
-
-                    i += ps; // ps is negative if going backwards
-
-                    var x1 = points[i - ps],
-                        y1 = points[i - ps + ypos],
-                        x2 = points[i], y2 = points[i + ypos];
-
-                    if (areaOpen) {
-                        if (ps > 0 && x1 != null && x2 == null) {
-                            // at turning point
-                            segmentEnd = i;
-                            ps = -ps;
-                            ypos = 2;
-                            continue;
-                        }
-
-                        if (ps < 0 && i == segmentStart + ps) {
-                            // done with the reverse sweep
-                            ctx.fill();
-                            areaOpen = false;
-                            ps = -ps;
-                            ypos = 1;
-                            i = segmentStart = segmentEnd + ps;
-                            continue;
-                        }
-                    }
-
-                    if (x1 == null || x2 == null)
-                        continue;
-
-                    // clip x values
-                    
-                    // clip with xmin
-                    if (x1 <= x2 && x1 < axisx.min) {
-                        if (x2 < axisx.min)
-                            continue;
-                        y1 = (axisx.min - x1) / (x2 - x1) * (y2 - y1) + y1;
-                        x1 = axisx.min;
-                    }
-                    else if (x2 <= x1 && x2 < axisx.min) {
-                        if (x1 < axisx.min)
-                            continue;
-                        y2 = (axisx.min - x1) / (x2 - x1) * (y2 - y1) + y1;
-                        x2 = axisx.min;
-                    }
-
-                    // clip with xmax
-                    if (x1 >= x2 && x1 > axisx.max) {
-                        if (x2 > axisx.max)
-                            continue;
-                        y1 = (axisx.max - x1) / (x2 - x1) * (y2 - y1) + y1;
-                        x1 = axisx.max;
-                    }
-                    else if (x2 >= x1 && x2 > axisx.max) {
-                        if (x1 > axisx.max)
-                            continue;
-                        y2 = (axisx.max - x1) / (x2 - x1) * (y2 - y1) + y1;
-                        x2 = axisx.max;
-                    }
-
-                    if (!areaOpen) {
-                        // open area
-                        ctx.beginPath();
-                        ctx.moveTo(axisx.p2c(x1), axisy.p2c(bottom));
-                        areaOpen = true;
-                    }
-                    
-                    // now first check the case where both is outside
-                    if (y1 >= axisy.max && y2 >= axisy.max) {
-                        ctx.lineTo(axisx.p2c(x1), axisy.p2c(axisy.max));
-                        ctx.lineTo(axisx.p2c(x2), axisy.p2c(axisy.max));
-                        continue;
-                    }
-                    else if (y1 <= axisy.min && y2 <= axisy.min) {
-                        ctx.lineTo(axisx.p2c(x1), axisy.p2c(axisy.min));
-                        ctx.lineTo(axisx.p2c(x2), axisy.p2c(axisy.min));
-                        continue;
-                    }
-                    
-                    // else it's a bit more complicated, there might
-                    // be a flat maxed out rectangle first, then a
-                    // triangular cutout or reverse; to find these
-                    // keep track of the current x values
-                    var x1old = x1, x2old = x2;
-
-                    // clip the y values, without shortcutting, we
-                    // go through all cases in turn
-                    
-                    // clip with ymin
-                    if (y1 <= y2 && y1 < axisy.min && y2 >= axisy.min) {
-                        x1 = (axisy.min - y1) / (y2 - y1) * (x2 - x1) + x1;
-                        y1 = axisy.min;
-                    }
-                    else if (y2 <= y1 && y2 < axisy.min && y1 >= axisy.min) {
-                        x2 = (axisy.min - y1) / (y2 - y1) * (x2 - x1) + x1;
-                        y2 = axisy.min;
-                    }
-
-                    // clip with ymax
-                    if (y1 >= y2 && y1 > axisy.max && y2 <= axisy.max) {
-                        x1 = (axisy.max - y1) / (y2 - y1) * (x2 - x1) + x1;
-                        y1 = axisy.max;
-                    }
-                    else if (y2 >= y1 && y2 > axisy.max && y1 <= axisy.max) {
-                        x2 = (axisy.max - y1) / (y2 - y1) * (x2 - x1) + x1;
-                        y2 = axisy.max;
-                    }
-
-                    // if the x value was changed we got a rectangle
-                    // to fill
-                    if (x1 != x1old) {
-                        ctx.lineTo(axisx.p2c(x1old), axisy.p2c(y1));
-                        // it goes to (x1, y1), but we fill that below
-                    }
-                    
-                    // fill triangular section, this sometimes result
-                    // in redundant points if (x1, y1) hasn't changed
-                    // from previous line to, but we just ignore that
-                    ctx.lineTo(axisx.p2c(x1), axisy.p2c(y1));
-                    ctx.lineTo(axisx.p2c(x2), axisy.p2c(y2));
-
-                    // fill the other rectangle if it's there
-                    if (x2 != x2old) {
-                        ctx.lineTo(axisx.p2c(x2), axisy.p2c(y2));
-                        ctx.lineTo(axisx.p2c(x2old), axisy.p2c(y2));
-                    }
-                }
-            }
-
-            ctx.save();
-            ctx.translate(plotOffset.left, plotOffset.top);
-            ctx.lineJoin = "round";
-
-            var lw = series.lines.lineWidth,
-                sw = series.shadowSize;
-            // FIXME: consider another form of shadow when filling is turned on
-            if (lw > 0 && sw > 0) {
-                // draw shadow as a thick and thin line with transparency
-                ctx.lineWidth = sw;
-                ctx.strokeStyle = "rgba(0,0,0,0.1)";
-                // position shadow at angle from the mid of line
-                var angle = Math.PI/18;
-                plotLine(series.datapoints, Math.sin(angle) * (lw/2 + sw/2), Math.cos(angle) * (lw/2 + sw/2), series.xaxis, series.yaxis);
-                ctx.lineWidth = sw/2;
-                plotLine(series.datapoints, Math.sin(angle) * (lw/2 + sw/4), Math.cos(angle) * (lw/2 + sw/4), series.xaxis, series.yaxis);
-            }
-
-            ctx.lineWidth = lw;
-            ctx.strokeStyle = series.color;
-            var fillStyle = getFillStyle(series.lines, series.color, 0, plotHeight);
-            if (fillStyle) {
-                ctx.fillStyle = fillStyle;
-                plotLineArea(series.datapoints, series.xaxis, series.yaxis);
-            }
-
-            if (lw > 0)
-                plotLine(series.datapoints, 0, 0, series.xaxis, series.yaxis);
-            ctx.restore();
-        }
-
-        function drawSeriesPoints(series) {
-            function plotPoints(datapoints, radius, fillStyle, offset, shadow, axisx, axisy, symbol) {
-                var points = datapoints.points, ps = datapoints.pointsize;
-
-                for (var i = 0; i < points.length; i += ps) {
-                    var x = points[i], y = points[i + 1];
-                    if (x == null || x < axisx.min || x > axisx.max || y < axisy.min || y > axisy.max)
-                        continue;
-                    
-                    ctx.beginPath();
-                    x = axisx.p2c(x);
-                    y = axisy.p2c(y) + offset;
-                    if (symbol == "circle")
-                        ctx.arc(x, y, radius, 0, shadow ? Math.PI : Math.PI * 2, false);
-                    else
-                        symbol(ctx, x, y, radius, shadow);
-                    ctx.closePath();
-                    
-                    if (fillStyle) {
-                        ctx.fillStyle = fillStyle;
-                        ctx.fill();
-                    }
-                    ctx.stroke();
-                }
-            }
-            
-            ctx.save();
-            ctx.translate(plotOffset.left, plotOffset.top);
-
-            var lw = series.points.lineWidth,
-                sw = series.shadowSize,
-                radius = series.points.radius,
-                symbol = series.points.symbol;
-            if (lw > 0 && sw > 0) {
-                // draw shadow in two steps
-                var w = sw / 2;
-                ctx.lineWidth = w;
-                ctx.strokeStyle = "rgba(0,0,0,0.1)";
-                plotPoints(series.datapoints, radius, null, w + w/2, true,
-                           series.xaxis, series.yaxis, symbol);
-
-                ctx.strokeStyle = "rgba(0,0,0,0.2)";
-                plotPoints(series.datapoints, radius, null, w/2, true,
-                           series.xaxis, series.yaxis, symbol);
-            }
-
-            ctx.lineWidth = lw;
-            ctx.strokeStyle = series.color;
-            plotPoints(series.datapoints, radius,
-                       getFillStyle(series.points, series.color), 0, false,
-                       series.xaxis, series.yaxis, symbol);
-            ctx.restore();
-        }
-
-        function drawBar(x, y, b, barLeft, barRight, offset, fillStyleCallback, axisx, axisy, c, horizontal, lineWidth) {
-            var left, right, bottom, top,
-                drawLeft, drawRight, drawTop, drawBottom,
-                tmp;
-
-            // in horizontal mode, we start the bar from the left
-            // instead of from the bottom so it appears to be
-            // horizontal rather than vertical
-            if (horizontal) {
-                drawBottom = drawRight = drawTop = true;
-                drawLeft = false;
-                left = b;
-                right = x;
-                top = y + barLeft;
-                bottom = y + barRight;
-
-                // account for negative bars
-                if (right < left) {
-                    tmp = right;
-                    right = left;
-                    left = tmp;
-                    drawLeft = true;
-                    drawRight = false;
-                }
-            }
-            else {
-                drawLeft = drawRight = drawTop = true;
-                drawBottom = false;
-                left = x + barLeft;
-                right = x + barRight;
-                bottom = b;
-                top = y;
-
-                // account for negative bars
-                if (top < bottom) {
-                    tmp = top;
-                    top = bottom;
-                    bottom = tmp;
-                    drawBottom = true;
-                    drawTop = false;
-                }
-            }
-           
-            // clip
-            if (right < axisx.min || left > axisx.max ||
-                top < axisy.min || bottom > axisy.max)
-                return;
-            
-            if (left < axisx.min) {
-                left = axisx.min;
-                drawLeft = false;
-            }
-
-            if (right > axisx.max) {
-                right = axisx.max;
-                drawRight = false;
-            }
-
-            if (bottom < axisy.min) {
-                bottom = axisy.min;
-                drawBottom = false;
-            }
-            
-            if (top > axisy.max) {
-                top = axisy.max;
-                drawTop = false;
-            }
-
-            left = axisx.p2c(left);
-            bottom = axisy.p2c(bottom);
-            right = axisx.p2c(right);
-            top = axisy.p2c(top);
-            
-            // fill the bar
-            if (fillStyleCallback) {
-                c.beginPath();
-                c.moveTo(left, bottom);
-                c.lineTo(left, top);
-                c.lineTo(right, top);
-                c.lineTo(right, bottom);
-                c.fillStyle = fillStyleCallback(bottom, top);
-                c.fill();
-            }
-
-            // draw outline
-            if (lineWidth > 0 && (drawLeft || drawRight || drawTop || drawBottom)) {
-                c.beginPath();
-
-                // FIXME: inline moveTo is buggy with excanvas
-                c.moveTo(left, bottom + offset);
-                if (drawLeft)
-                    c.lineTo(left, top + offset);
-                else
-                    c.moveTo(left, top + offset);
-                if (drawTop)
-                    c.lineTo(right, top + offset);
-                else
-                    c.moveTo(right, top + offset);
-                if (drawRight)
-                    c.lineTo(right, bottom + offset);
-                else
-                    c.moveTo(right, bottom + offset);
-                if (drawBottom)
-                    c.lineTo(left, bottom + offset);
-                else
-                    c.moveTo(left, bottom + offset);
-                c.stroke();
-            }
-        }
-        
-        function drawSeriesBars(series) {
-            function plotBars(datapoints, barLeft, barRight, offset, fillStyleCallback, axisx, axisy) {
-                var points = datapoints.points, ps = datapoints.pointsize;
-                
-                for (var i = 0; i < points.length; i += ps) {
-                    if (points[i] == null)
-                        continue;
-                    drawBar(points[i], points[i + 1], points[i + 2], barLeft, barRight, offset, fillStyleCallback, axisx, axisy, ctx, series.bars.horizontal, series.bars.lineWidth);
-                }
-            }
-
-            ctx.save();
-            ctx.translate(plotOffset.left, plotOffset.top);
-
-            // FIXME: figure out a way to add shadows (for instance along the right edge)
-            ctx.lineWidth = series.bars.lineWidth;
-            ctx.strokeStyle = series.color;
-            var barLeft = series.bars.align == "left" ? 0 : -series.bars.barWidth/2;
-            var fillStyleCallback = series.bars.fill ? function (bottom, top) { return getFillStyle(series.bars, series.color, bottom, top); } : null;
-            plotBars(series.datapoints, barLeft, barLeft + series.bars.barWidth, 0, fillStyleCallback, series.xaxis, series.yaxis);
-            ctx.restore();
-        }
-
-        function getFillStyle(filloptions, seriesColor, bottom, top) {
-            var fill = filloptions.fill;
-            if (!fill)
-                return null;
-
-            if (filloptions.fillColor)
-                return getColorOrGradient(filloptions.fillColor, bottom, top, seriesColor);
-            
-            var c = $.color.parse(seriesColor);
-            c.a = typeof fill == "number" ? fill : 0.4;
-            c.normalize();
-            return c.toString();
-        }
-        
-        function insertLegend() {
-            placeholder.find(".legend").remove();
-
-            if (!options.legend.show)
-                return;
-            
-            var fragments = [], rowStarted = false,
-                lf = options.legend.labelFormatter, s, label;
-            for (var i = 0; i < series.length; ++i) {
-                s = series[i];
-                label = s.label;
-                if (!label)
-                    continue;
-                
-                if (i % options.legend.noColumns == 0) {
-                    if (rowStarted)
-                        fragments.push('</tr>');
-                    fragments.push('<tr>');
-                    rowStarted = true;
-                }
-
-                if (lf)
-                    label = lf(label, s);
-                
-                fragments.push(
-                    '<td class="legendColorBox"><div style="border:1px solid ' + options.legend.labelBoxBorderColor + ';padding:1px"><div style="width:4px;height:0;border:5px solid ' + s.color + ';overflow:hidden"></div></div></td>' +
-                    '<td class="legendLabel">' + label + '</td>');
-            }
-            if (rowStarted)
-                fragments.push('</tr>');
-            
-            if (fragments.length == 0)
-                return;
-
-            var table = '<table style="font-size:smaller;color:' + options.grid.color + '">' + fragments.join("") + '</table>';
-            if (options.legend.container != null)
-                $(options.legend.container).html(table);
-            else {
-                var pos = "",
-                    p = options.legend.position,
-                    m = options.legend.margin;
-                if (m[0] == null)
-                    m = [m, m];
-                if (p.charAt(0) == "n")
-                    pos += 'top:' + (m[1] + plotOffset.top) + 'px;';
-                else if (p.charAt(0) == "s")
-                    pos += 'bottom:' + (m[1] + plotOffset.bottom) + 'px;';
-                if (p.charAt(1) == "e")
-                    pos += 'right:' + (m[0] + plotOffset.right) + 'px;';
-                else if (p.charAt(1) == "w")
-                    pos += 'left:' + (m[0] + plotOffset.left) + 'px;';
-                var legend = $('<div class="legend">' + table.replace('style="', 'style="position:absolute;' + pos +';') + '</div>').appendTo(placeholder);
-                if (options.legend.backgroundOpacity != 0.0) {
-                    // put in the transparent background
-                    // separately to avoid blended labels and
-                    // label boxes
-                    var c = options.legend.backgroundColor;
-                    if (c == null) {
-                        c = options.grid.backgroundColor;
-                        if (c && typeof c == "string")
-                            c = $.color.parse(c);
-                        else
-                            c = $.color.extract(legend, 'background-color');
-                        c.a = 1;
-                        c = c.toString();
-                    }
-                    var div = legend.children();
-                    $('<div style="position:absolute;width:' + div.width() + 'px;height:' + div.height() + 'px;' + pos +'background-color:' + c + ';"> </div>').prependTo(legend).css('opacity', options.legend.backgroundOpacity);
-                }
-            }
-        }
-
-
-        // interactive features
-        
-        var highlights = [],
-            redrawTimeout = null;
-        
-        // returns the data item the mouse is over, or null if none is found
-        function findNearbyItem(mouseX, mouseY, seriesFilter) {
-            var maxDistance = options.grid.mouseActiveRadius,
-                smallestDistance = maxDistance * maxDistance + 1,
-                item = null, foundPoint = false, i, j;
-
-            for (i = series.length - 1; i >= 0; --i) {
-                if (!seriesFilter(series[i]))
-                    continue;
-                
-                var s = series[i],
-                    axisx = s.xaxis,
-                    axisy = s.yaxis,
-                    points = s.datapoints.points,
-                    ps = s.datapoints.pointsize,
-                    mx = axisx.c2p(mouseX), // precompute some stuff to make the loop faster
-                    my = axisy.c2p(mouseY),
-                    maxx = maxDistance / axisx.scale,
-                    maxy = maxDistance / axisy.scale;
-
-                // with inverse transforms, we can't use the maxx/maxy
-                // optimization, sadly
-                if (axisx.options.inverseTransform)
-                    maxx = Number.MAX_VALUE;
-                if (axisy.options.inverseTransform)
-                    maxy = Number.MAX_VALUE;
-                
-                if (s.lines.show || s.points.show) {
-                    for (j = 0; j < points.length; j += ps) {
-                        var x = points[j], y = points[j + 1];
-                        if (x == null)
-                            continue;
-                        
-                        // For points and lines, the cursor must be within a
-                        // certain distance to the data point
-                        if (x - mx > maxx || x - mx < -maxx ||
-                            y - my > maxy || y - my < -maxy)
-                            continue;
-
-                        // We have to calculate distances in pixels, not in
-                        // data units, because the scales of the axes may be different
-                        var dx = Math.abs(axisx.p2c(x) - mouseX),
-                            dy = Math.abs(axisy.p2c(y) - mouseY),
-                            dist = dx * dx + dy * dy; // we save the sqrt
-
-                        // use <= to ensure last point takes precedence
-                        // (last generally means on top of)
-                        if (dist < smallestDistance) {
-                            smallestDistance = dist;
-                            item = [i, j / ps];
-                        }
-                    }
-                }
-                    
-                if (s.bars.show && !item) { // no other point can be nearby
-                    var barLeft = s.bars.align == "left" ? 0 : -s.bars.barWidth/2,
-                        barRight = barLeft + s.bars.barWidth;
-                    
-                    for (j = 0; j < points.length; j += ps) {
-                        var x = points[j], y = points[j + 1], b = points[j + 2];
-                        if (x == null)
-                            continue;
-  
-                        // for a bar graph, the cursor must be inside the bar
-                        if (series[i].bars.horizontal ? 
-                            (mx <= Math.max(b, x) && mx >= Math.min(b, x) && 
-                             my >= y + barLeft && my <= y + barRight) :
-                            (mx >= x + barLeft && mx <= x + barRight &&
-                             my >= Math.min(b, y) && my <= Math.max(b, y)))
-                                item = [i, j / ps];
-                    }
-                }
-            }
-
-            if (item) {
-                i = item[0];
-                j = item[1];
-                ps = series[i].datapoints.pointsize;
-                
-                return { datapoint: series[i].datapoints.points.slice(j * ps, (j + 1) * ps),
-                         dataIndex: j,
-                         series: series[i],
-                         seriesIndex: i };
-            }
-            
-            return null;
-        }
-
-        function onMouseMove(e) {
-            if (options.grid.hoverable)
-                triggerClickHoverEvent("plothover", e,
-                                       function (s) { return s["hoverable"] != false; });
-        }
-
-        function onMouseLeave(e) {
-            if (options.grid.hoverable)
-                triggerClickHoverEvent("plothover", e,
-                                       function (s) { return false; });
-        }
-
-        function onClick(e) {
-            triggerClickHoverEvent("plotclick", e,
-                                   function (s) { return s["clickable"] != false; });
-        }
-
-        // trigger click or hover event (they send the same parameters
-        // so we share their code)
-        function triggerClickHoverEvent(eventname, event, seriesFilter) {
-            var offset = eventHolder.offset(),
-                canvasX = event.pageX - offset.left - plotOffset.left,
-                canvasY = event.pageY - offset.top - plotOffset.top,
-            pos = canvasToAxisCoords({ left: canvasX, top: canvasY });
-
-            pos.pageX = event.pageX;
-            pos.pageY = event.pageY;
-
-            var item = findNearbyItem(canvasX, canvasY, seriesFilter);
-
-            if (item) {
-                // fill in mouse pos for any listeners out there
-                item.pageX = parseInt(item.series.xaxis.p2c(item.datapoint[0]) + offset.left + plotOffset.left);
-                item.pageY = parseInt(item.series.yaxis.p2c(item.datapoint[1]) + offset.top + plotOffset.top);
-            }
-
-            if (options.grid.autoHighlight) {
-                // clear auto-highlights
-                for (var i = 0; i < highlights.length; ++i) {
-                    var h = highlights[i];
-                    if (h.auto == eventname &&
-                        !(item && h.series == item.series &&
-                          h.point[0] == item.datapoint[0] &&
-                          h.point[1] == item.datapoint[1]))
-                        unhighlight(h.series, h.point);
-                }
-                
-                if (item)
-                    highlight(item.series, item.datapoint, eventname);
-            }
-            
-            placeholder.trigger(eventname, [ pos, item ]);
-        }
-
-        function triggerRedrawOverlay() {
-            if (!redrawTimeout)
-                redrawTimeout = setTimeout(drawOverlay, 30);
-        }
-
-        function drawOverlay() {
-            redrawTimeout = null;
-
-            // draw highlights
-            octx.save();
-            octx.clearRect(0, 0, canvasWidth, canvasHeight);
-            octx.translate(plotOffset.left, plotOffset.top);
-            
-            var i, hi;
-            for (i = 0; i < highlights.length; ++i) {
-                hi = highlights[i];
-
-                if (hi.series.bars.show)
-                    drawBarHighlight(hi.series, hi.point);
-                else
-                    drawPointHighlight(hi.series, hi.point);
-            }
-            octx.restore();
-            
-            executeHooks(hooks.drawOverlay, [octx]);
-        }
-        
-        function highlight(s, point, auto) {
-            if (typeof s == "number")
-                s = series[s];
-
-            if (typeof point == "number") {
-                var ps = s.datapoints.pointsize;
-                point = s.datapoints.points.slice(ps * point, ps * (point + 1));
-            }
-
-            var i = indexOfHighlight(s, point);
-            if (i == -1) {
-                highlights.push({ series: s, point: point, auto: auto });
-
-                triggerRedrawOverlay();
-            }
-            else if (!auto)
-                highlights[i].auto = false;
-        }
-            
-        function unhighlight(s, point) {
-            if (s == null && point == null) {
-                highlights = [];
-                triggerRedrawOverlay();
-            }
-            
-            if (typeof s == "number")
-                s = series[s];
-
-            if (typeof point == "number")
-                point = s.data[point];
-
-            var i = indexOfHighlight(s, point);
-            if (i != -1) {
-                highlights.splice(i, 1);
-
-                triggerRedrawOverlay();
-            }
-        }
-        
-        function indexOfHighlight(s, p) {
-            for (var i = 0; i < highlights.length; ++i) {
-                var h = highlights[i];
-                if (h.series == s && h.point[0] == p[0]
-                    && h.point[1] == p[1])
-                    return i;
-            }
-            return -1;
-        }
-        
-        function drawPointHighlight(series, point) {
-            var x = point[0], y = point[1],
-                axisx = series.xaxis, axisy = series.yaxis;
-            
-            if (x < axisx.min || x > axisx.max || y < axisy.min || y > axisy.max)
-                return;
-            
-            var pointRadius = series.points.radius + series.points.lineWidth / 2;
-            octx.lineWidth = pointRadius;
-            octx.strokeStyle = $.color.parse(series.color).scale('a', 0.5).toString();
-            var radius = 1.5 * pointRadius,
-                x = axisx.p2c(x),
-                y = axisy.p2c(y);
-            
-            octx.beginPath();
-            if (series.points.symbol == "circle")
-                octx.arc(x, y, radius, 0, 2 * Math.PI, false);
-            else
-                series.points.symbol(octx, x, y, radius, false);
-            octx.closePath();
-            octx.stroke();
-        }
-
-        function drawBarHighlight(series, point) {
-            octx.lineWidth = series.bars.lineWidth;
-            octx.strokeStyle = $.color.parse(series.color).scale('a', 0.5).toString();
-            var fillStyle = $.color.parse(series.color).scale('a', 0.5).toString();
-            var barLeft = series.bars.align == "left" ? 0 : -series.bars.barWidth/2;
-            drawBar(point[0], point[1], point[2] || 0, barLeft, barLeft + series.bars.barWidth,
-                    0, function () { return fillStyle; }, series.xaxis, series.yaxis, octx, series.bars.horizontal, series.bars.lineWidth);
-        }
-
-        function getColorOrGradient(spec, bottom, top, defaultColor) {
-            if (typeof spec == "string")
-                return spec;
-            else {
-                // assume this is a gradient spec; IE currently only
-                // supports a simple vertical gradient properly, so that's
-                // what we support too
-                var gradient = ctx.createLinearGradient(0, top, 0, bottom);
-                
-                for (var i = 0, l = spec.colors.length; i < l; ++i) {
-                    var c = spec.colors[i];
-                    if (typeof c != "string") {
-                        var co = $.color.parse(defaultColor);
-                        if (c.brightness != null)
-                            co = co.scale('rgb', c.brightness)
-                        if (c.opacity != null)
-                            co.a *= c.opacity;
-                        c = co.toString();
-                    }
-                    gradient.addColorStop(i / (l - 1), c);
-                }
-                
-                return gradient;
-            }
-        }
-    }
-
-    $.plot = function(placeholder, data, options) {
-        //var t0 = new Date();
-        var plot = new Plot($(placeholder), data, options, $.plot.plugins);
-        //(window.console ? console.log : alert)("time used (msecs): " + ((new Date()).getTime() - t0.getTime()));
-        return plot;
-    };
-
-    $.plot.version = "0.7";
-    
-    $.plot.plugins = [];
-
-    // returns a string with the date d formatted according to fmt
-    $.plot.formatDate = function(d, fmt, monthNames) {
-        var leftPad = function(n) {
-            n = "" + n;
-            return n.length == 1 ? "0" + n : n;
-        };
-        
-        var r = [];
-        var escape = false, padNext = false;
-        var hours = d.getUTCHours();
-        var isAM = hours < 12;
-        if (monthNames == null)
-            monthNames = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"];
-
-        if (fmt.search(/%p|%P/) != -1) {
-            if (hours > 12) {
-                hours = hours - 12;
-            } else if (hours == 0) {
-                hours = 12;
-            }
-        }
-        for (var i = 0; i < fmt.length; ++i) {
-            var c = fmt.charAt(i);
-            
-            if (escape) {
-                switch (c) {
-                case 'h': c = "" + hours; break;
-                case 'H': c = leftPad(hours); break;
-                case 'M': c = leftPad(d.getUTCMinutes()); break;
-                case 'S': c = leftPad(d.getUTCSeconds()); break;
-                case 'd': c = "" + d.getUTCDate(); break;
-                case 'm': c = "" + (d.getUTCMonth() + 1); break;
-                case 'y': c = "" + d.getUTCFullYear(); break;
-                case 'b': c = "" + monthNames[d.getUTCMonth()]; break;
-                case 'p': c = (isAM) ? ("" + "am") : ("" + "pm"); break;
-                case 'P': c = (isAM) ? ("" + "AM") : ("" + "PM"); break;
-                case '0': c = ""; padNext = true; break;
-                }
-                if (c && padNext) {
-                    c = leftPad(c);
-                    padNext = false;
-                }
-                r.push(c);
-                if (!padNext)
-                    escape = false;
-            }
-            else {
-                if (c == "%")
-                    escape = true;
-                else
-                    r.push(c);
-            }
-        }
-        return r.join("");
-    };
-    
-    // round to nearby lower multiple of base
-    function floorInBase(n, base) {
-        return base * Math.floor(n / base);
-    }
-    
-})(jQuery);
diff --git a/src/main/resources/META-INF/resources/designer/lib/plugins/flot/jquery.flot.pie.js b/src/main/resources/META-INF/resources/designer/lib/plugins/flot/jquery.flot.pie.js
deleted file mode 100644 (file)
index b46c03c..0000000
+++ /dev/null
@@ -1,750 +0,0 @@
-/*
-Flot plugin for rendering pie charts. The plugin assumes the data is 
-coming is as a single data value for each series, and each of those 
-values is a positive value or zero (negative numbers don't make 
-any sense and will cause strange effects). The data values do 
-NOT need to be passed in as percentage values because it 
-internally calculates the total and percentages.
-
-* Created by Brian Medendorp, June 2009
-* Updated November 2009 with contributions from: btburnett3, Anthony Aragues and Xavi Ivars
-
-* Changes:
-       2009-10-22: lineJoin set to round
-       2009-10-23: IE full circle fix, donut
-       2009-11-11: Added basic hover from btburnett3 - does not work in IE, and center is off in Chrome and Opera
-       2009-11-17: Added IE hover capability submitted by Anthony Aragues
-       2009-11-18: Added bug fix submitted by Xavi Ivars (issues with arrays when other JS libraries are included as well)
-               
-
-Available options are:
-series: {
-       pie: {
-               show: true/false
-               radius: 0-1 for percentage of fullsize, or a specified pixel length, or 'auto'
-               innerRadius: 0-1 for percentage of fullsize or a specified pixel length, for creating a donut effect
-               startAngle: 0-2 factor of PI used for starting angle (in radians) i.e 3/2 starts at the top, 0 and 2 have the same result
-               tilt: 0-1 for percentage to tilt the pie, where 1 is no tilt, and 0 is completely flat (nothing will show)
-               offset: {
-                       top: integer value to move the pie up or down
-                       left: integer value to move the pie left or right, or 'auto'
-               },
-               stroke: {
-                       color: any hexidecimal color value (other formats may or may not work, so best to stick with something like '#FFF')
-                       width: integer pixel width of the stroke
-               },
-               label: {
-                       show: true/false, or 'auto'
-                       formatter:  a user-defined function that modifies the text/style of the label text
-                       radius: 0-1 for percentage of fullsize, or a specified pixel length
-                       background: {
-                               color: any hexidecimal color value (other formats may or may not work, so best to stick with something like '#000')
-                               opacity: 0-1
-                       },
-                       threshold: 0-1 for the percentage value at which to hide labels (if they're too small)
-               },
-               combine: {
-                       threshold: 0-1 for the percentage value at which to combine slices (if they're too small)
-                       color: any hexidecimal color value (other formats may or may not work, so best to stick with something like '#CCC'), if null, the plugin will automatically use the color of the first slice to be combined
-                       label: any text value of what the combined slice should be labeled
-               }
-               highlight: {
-                       opacity: 0-1
-               }
-       }
-}
-
-More detail and specific examples can be found in the included HTML file.
-
-*/
-
-(function ($) 
-{
-       function init(plot) // this is the "body" of the plugin
-       {
-               var canvas = null;
-               var target = null;
-               var maxRadius = null;
-               var centerLeft = null;
-               var centerTop = null;
-               var total = 0;
-               var redraw = true;
-               var redrawAttempts = 10;
-               var shrink = 0.95;
-               var legendWidth = 0;
-               var processed = false;
-               var raw = false;
-               
-               // interactive variables        
-               var highlights = [];    
-       
-               // add hook to determine if pie plugin in enabled, and then perform necessary operations
-               plot.hooks.processOptions.push(checkPieEnabled);
-               plot.hooks.bindEvents.push(bindEvents); 
-
-               // check to see if the pie plugin is enabled
-               function checkPieEnabled(plot, options)
-               {
-                       if (options.series.pie.show)
-                       {
-                               //disable grid
-                               options.grid.show = false;
-                               
-                               // set labels.show
-                               if (options.series.pie.label.show=='auto')
-                                       if (options.legend.show)
-                                               options.series.pie.label.show = false;
-                                       else
-                                               options.series.pie.label.show = true;
-                               
-                               // set radius
-                               if (options.series.pie.radius=='auto')
-                                       if (options.series.pie.label.show)
-                                               options.series.pie.radius = 3/4;
-                                       else
-                                               options.series.pie.radius = 1;
-                                               
-                               // ensure sane tilt
-                               if (options.series.pie.tilt>1)
-                                       options.series.pie.tilt=1;
-                               if (options.series.pie.tilt<0)
-                                       options.series.pie.tilt=0;
-                       
-                               // add processData hook to do transformations on the data
-                               plot.hooks.processDatapoints.push(processDatapoints);
-                               plot.hooks.drawOverlay.push(drawOverlay);       
-                               
-                               // add draw hook
-                               plot.hooks.draw.push(draw);
-                       }
-               }
-       
-               // bind hoverable events
-               function bindEvents(plot, eventHolder)          
-               {               
-                       var options = plot.getOptions();
-                       
-                       if (options.series.pie.show && options.grid.hoverable)
-                               eventHolder.unbind('mousemove').mousemove(onMouseMove);
-                               
-                       if (options.series.pie.show && options.grid.clickable)
-                               eventHolder.unbind('click').click(onClick);
-               }       
-               
-
-               // debugging function that prints out an object
-               function alertObject(obj)
-               {
-                       var msg = '';
-                       function traverse(obj, depth)
-                       {
-                               if (!depth)
-                                       depth = 0;
-                               for (var i = 0; i < obj.length; ++i)
-                               {
-                                       for (var j=0; j<depth; j++)
-                                               msg += '\t';
-                               
-                                       if( typeof obj[i] == "object")
-                                       {       // its an object
-                                               msg += ''+i+':\n';
-                                               traverse(obj[i], depth+1);
-                                       }
-                                       else
-                                       {       // its a value
-                                               msg += ''+i+': '+obj[i]+'\n';
-                                       }
-                               }
-                       }
-                       traverse(obj);
-                       alert(msg);
-               }
-               
-               function calcTotal(data)
-               {
-                       for (var i = 0; i < data.length; ++i)
-                       {
-                               var item = parseFloat(data[i].data[0][1]);
-                               if (item)
-                                       total += item;
-                       }
-               }       
-               
-               function processDatapoints(plot, series, data, datapoints) 
-               {       
-                       if (!processed)
-                       {
-                               processed = true;
-                       
-                               canvas = plot.getCanvas();
-                               target = $(canvas).parent();
-                               options = plot.getOptions();
-                       
-                               plot.setData(combine(plot.getData()));
-                       }
-               }
-               
-               function setupPie()
-               {
-                       legendWidth = target.children().filter('.legend').children().width();
-               
-                       // calculate maximum radius and center point
-                       maxRadius =  Math.min(canvas.width,(canvas.height/options.series.pie.tilt))/2;
-                       centerTop = (canvas.height/2)+options.series.pie.offset.top;
-                       centerLeft = (canvas.width/2);
-                       
-                       if (options.series.pie.offset.left=='auto')
-                               if (options.legend.position.match('w'))
-                                       centerLeft += legendWidth/2;
-                               else
-                                       centerLeft -= legendWidth/2;
-                       else
-                               centerLeft += options.series.pie.offset.left;
-                                       
-                       if (centerLeft<maxRadius)
-                               centerLeft = maxRadius;
-                       else if (centerLeft>canvas.width-maxRadius)
-                               centerLeft = canvas.width-maxRadius;
-               }
-               
-               function fixData(data)
-               {
-                       for (var i = 0; i < data.length; ++i)
-                       {
-                               if (typeof(data[i].data)=='number')
-                                       data[i].data = [[1,data[i].data]];
-                               else if (typeof(data[i].data)=='undefined' || typeof(data[i].data[0])=='undefined')
-                               {
-                                       if (typeof(data[i].data)!='undefined' && typeof(data[i].data.label)!='undefined')
-                                               data[i].label = data[i].data.label; // fix weirdness coming from flot
-                                       data[i].data = [[1,0]];
-                                       
-                               }
-                       }
-                       return data;
-               }
-               
-               function combine(data)
-               {
-                       data = fixData(data);
-                       calcTotal(data);
-                       var combined = 0;
-                       var numCombined = 0;
-                       var color = options.series.pie.combine.color;
-                       
-                       var newdata = [];
-                       for (var i = 0; i < data.length; ++i)
-                       {
-                               // make sure its a number
-                               data[i].data[0][1] = parseFloat(data[i].data[0][1]);
-                               if (!data[i].data[0][1])
-                                       data[i].data[0][1] = 0;
-                                       
-                               if (data[i].data[0][1]/total<=options.series.pie.combine.threshold)
-                               {
-                                       combined += data[i].data[0][1];
-                                       numCombined++;
-                                       if (!color)
-                                               color = data[i].color;
-                               }                               
-                               else
-                               {
-                                       newdata.push({
-                                               data: [[1,data[i].data[0][1]]], 
-                                               color: data[i].color, 
-                                               label: data[i].label,
-                                               angle: (data[i].data[0][1]*(Math.PI*2))/total,
-                                               percent: (data[i].data[0][1]/total*100)
-                                       });
-                               }
-                       }
-                       if (numCombined>0)
-                               newdata.push({
-                                       data: [[1,combined]], 
-                                       color: color, 
-                                       label: options.series.pie.combine.label,
-                                       angle: (combined*(Math.PI*2))/total,
-                                       percent: (combined/total*100)
-                               });
-                       return newdata;
-               }               
-               
-               function draw(plot, newCtx)
-               {
-                       if (!target) return; // if no series were passed
-                       ctx = newCtx;
-               
-                       setupPie();
-                       var slices = plot.getData();
-               
-                       var attempts = 0;
-                       while (redraw && attempts<redrawAttempts)
-                       {
-                               redraw = false;
-                               if (attempts>0)
-                                       maxRadius *= shrink;
-                               attempts += 1;
-                               clear();
-                               if (options.series.pie.tilt<=0.8)
-                                       drawShadow();
-                               drawPie();
-                       }
-                       if (attempts >= redrawAttempts) {
-                               clear();
-                               target.prepend('<div class="error">Could not draw pie with labels contained inside canvas</div>');
-                       }
-                       
-                       if ( plot.setSeries && plot.insertLegend )
-                       {
-                               plot.setSeries(slices);
-                               plot.insertLegend();
-                       }
-                       
-                       // we're actually done at this point, just defining internal functions at this point
-                       
-                       function clear()
-                       {
-                               ctx.clearRect(0,0,canvas.width,canvas.height);
-                               target.children().filter('.pieLabel, .pieLabelBackground').remove();
-                       }
-                       
-                       function drawShadow()
-                       {
-                               var shadowLeft = 5;
-                               var shadowTop = 15;
-                               var edge = 10;
-                               var alpha = 0.02;
-                       
-                               // set radius
-                               if (options.series.pie.radius>1)
-                                       var radius = options.series.pie.radius;
-                               else
-                                       var radius = maxRadius * options.series.pie.radius;
-                                       
-                               if (radius>=(canvas.width/2)-shadowLeft || radius*options.series.pie.tilt>=(canvas.height/2)-shadowTop || radius<=edge)
-                                       return; // shadow would be outside canvas, so don't draw it
-                       
-                               ctx.save();
-                               ctx.translate(shadowLeft,shadowTop);
-                               ctx.globalAlpha = alpha;
-                               ctx.fillStyle = '#000';
-
-                               // center and rotate to starting position
-                               ctx.translate(centerLeft,centerTop);
-                               ctx.scale(1, options.series.pie.tilt);
-                               
-                               //radius -= edge;
-                               for (var i=1; i<=edge; i++)
-                               {
-                                       ctx.beginPath();
-                                       ctx.arc(0,0,radius,0,Math.PI*2,false);
-                                       ctx.fill();
-                                       radius -= i;
-                               }       
-                               
-                               ctx.restore();
-                       }
-                       
-                       function drawPie()
-                       {
-                               startAngle = Math.PI*options.series.pie.startAngle;
-                               
-                               // set radius
-                               if (options.series.pie.radius>1)
-                                       var radius = options.series.pie.radius;
-                               else
-                                       var radius = maxRadius * options.series.pie.radius;
-                               
-                               // center and rotate to starting position
-                               ctx.save();
-                               ctx.translate(centerLeft,centerTop);
-                               ctx.scale(1, options.series.pie.tilt);
-                               //ctx.rotate(startAngle); // start at top; -- This doesn't work properly in Opera
-                               
-                               // draw slices
-                               ctx.save();
-                               var currentAngle = startAngle;
-                               for (var i = 0; i < slices.length; ++i)
-                               {
-                                       slices[i].startAngle = currentAngle;
-                                       drawSlice(slices[i].angle, slices[i].color, true);
-                               }
-                               ctx.restore();
-                               
-                               // draw slice outlines
-                               ctx.save();
-                               ctx.lineWidth = options.series.pie.stroke.width;
-                               currentAngle = startAngle;
-                               for (var i = 0; i < slices.length; ++i)
-                                       drawSlice(slices[i].angle, options.series.pie.stroke.color, false);
-                               ctx.restore();
-                                       
-                               // draw donut hole
-                               drawDonutHole(ctx);
-                               
-                               // draw labels
-                               if (options.series.pie.label.show)
-                                       drawLabels();
-                               
-                               // restore to original state
-                               ctx.restore();
-                               
-                               function drawSlice(angle, color, fill)
-                               {       
-                                       if (angle<=0)
-                                               return;
-                               
-                                       if (fill)
-                                               ctx.fillStyle = color;
-                                       else
-                                       {
-                                               ctx.strokeStyle = color;
-                                               ctx.lineJoin = 'round';
-                                       }
-                                               
-                                       ctx.beginPath();
-                                       if (Math.abs(angle - Math.PI*2) > 0.000000001)
-                                               ctx.moveTo(0,0); // Center of the pie
-                                       else if ($.browser.msie)
-                                               angle -= 0.0001;
-                                       //ctx.arc(0,0,radius,0,angle,false); // This doesn't work properly in Opera
-                                       ctx.arc(0,0,radius,currentAngle,currentAngle+angle,false);
-                                       ctx.closePath();
-                                       //ctx.rotate(angle); // This doesn't work properly in Opera
-                                       currentAngle += angle;
-                                       
-                                       if (fill)
-                                               ctx.fill();
-                                       else
-                                               ctx.stroke();
-                               }
-                               
-                               function drawLabels()
-                               {
-                                       var currentAngle = startAngle;
-                                       
-                                       // set radius
-                                       if (options.series.pie.label.radius>1)
-                                               var radius = options.series.pie.label.radius;
-                                       else
-                                               var radius = maxRadius * options.series.pie.label.radius;
-                                       
-                                       for (var i = 0; i < slices.length; ++i)
-                                       {
-                                               if (slices[i].percent >= options.series.pie.label.threshold*100)
-                                                       drawLabel(slices[i], currentAngle, i);
-                                               currentAngle += slices[i].angle;
-                                       }
-                                       
-                                       function drawLabel(slice, startAngle, index)
-                                       {
-                                               if (slice.data[0][1]==0)
-                                                       return;
-                                                       
-                                               // format label text
-                                               var lf = options.legend.labelFormatter, text, plf = options.series.pie.label.formatter;
-                                               if (lf)
-                                                       text = lf(slice.label, slice);
-                                               else
-                                                       text = slice.label;
-                                               if (plf)
-                                                       text = plf(text, slice);
-                                                       
-                                               var halfAngle = ((startAngle+slice.angle) + startAngle)/2;
-                                               var x = centerLeft + Math.round(Math.cos(halfAngle) * radius);
-                                               var y = centerTop + Math.round(Math.sin(halfAngle) * radius) * options.series.pie.tilt;
-                                               
-                                               var html = '<span class="pieLabel" id="pieLabel'+index+'" style="position:absolute;top:' + y + 'px;left:' + x + 'px;">' + text + "</span>";
-                                               target.append(html);
-                                               var label = target.children('#pieLabel'+index);
-                                               var labelTop = (y - label.height()/2);
-                                               var labelLeft = (x - label.width()/2);
-                                               label.css('top', labelTop);
-                                               label.css('left', labelLeft);
-                                               
-                                               // check to make sure that the label is not outside the canvas
-                                               if (0-labelTop>0 || 0-labelLeft>0 || canvas.height-(labelTop+label.height())<0 || canvas.width-(labelLeft+label.width())<0)
-                                                       redraw = true;
-                                               
-                                               if (options.series.pie.label.background.opacity != 0) {
-                                                       // put in the transparent background separately to avoid blended labels and label boxes
-                                                       var c = options.series.pie.label.background.color;
-                                                       if (c == null) {
-                                                               c = slice.color;
-                                                       }
-                                                       var pos = 'top:'+labelTop+'px;left:'+labelLeft+'px;';
-                                                       $('<div class="pieLabelBackground" style="position:absolute;width:' + label.width() + 'px;height:' + label.height() + 'px;' + pos +'background-color:' + c + ';"> </div>').insertBefore(label).css('opacity', options.series.pie.label.background.opacity);
-                                               }
-                                       } // end individual label function
-                               } // end drawLabels function
-                       } // end drawPie function
-               } // end draw function
-               
-               // Placed here because it needs to be accessed from multiple locations 
-               function drawDonutHole(layer)
-               {
-                       // draw donut hole
-                       if(options.series.pie.innerRadius > 0)
-                       {
-                               // subtract the center
-                               layer.save();
-                               innerRadius = options.series.pie.innerRadius > 1 ? options.series.pie.innerRadius : maxRadius * options.series.pie.innerRadius;
-                               layer.globalCompositeOperation = 'destination-out'; // this does not work with excanvas, but it will fall back to using the stroke color
-                               layer.beginPath();
-                               layer.fillStyle = options.series.pie.stroke.color;
-                               layer.arc(0,0,innerRadius,0,Math.PI*2,false);
-                               layer.fill();
-                               layer.closePath();
-                               layer.restore();
-                               
-                               // add inner stroke
-                               layer.save();
-                               layer.beginPath();
-                               layer.strokeStyle = options.series.pie.stroke.color;
-                               layer.arc(0,0,innerRadius,0,Math.PI*2,false);
-                               layer.stroke();
-                               layer.closePath();
-                               layer.restore();
-                               // TODO: add extra shadow inside hole (with a mask) if the pie is tilted.
-                       }
-               }
-               
-               //-- Additional Interactive related functions --
-               
-               function isPointInPoly(poly, pt)
-               {
-                       for(var c = false, i = -1, l = poly.length, j = l - 1; ++i < l; j = i)
-                               ((poly[i][1] <= pt[1] && pt[1] < poly[j][1]) || (poly[j][1] <= pt[1] && pt[1]< poly[i][1]))
-                               && (pt[0] < (poly[j][0] - poly[i][0]) * (pt[1] - poly[i][1]) / (poly[j][1] - poly[i][1]) + poly[i][0])
-                               && (c = !c);
-                       return c;
-               }
-               
-               function findNearbySlice(mouseX, mouseY)
-               {
-                       var slices = plot.getData(),
-                               options = plot.getOptions(),
-                               radius = options.series.pie.radius > 1 ? options.series.pie.radius : maxRadius * options.series.pie.radius;
-                       
-                       for (var i = 0; i < slices.length; ++i) 
-                       {
-                               var s = slices[i];      
-                               
-                               if(s.pie.show)
-                               {
-                                       ctx.save();
-                                       ctx.beginPath();
-                                       ctx.moveTo(0,0); // Center of the pie
-                                       //ctx.scale(1, options.series.pie.tilt);        // this actually seems to break everything when here.
-                                       ctx.arc(0,0,radius,s.startAngle,s.startAngle+s.angle,false);
-                                       ctx.closePath();
-                                       x = mouseX-centerLeft;
-                                       y = mouseY-centerTop;
-                                       if(ctx.isPointInPath)
-                                       {
-                                               if (ctx.isPointInPath(mouseX-centerLeft, mouseY-centerTop))
-                                               {
-                                                       //alert('found slice!');
-                                                       ctx.restore();
-                                                       return {datapoint: [s.percent, s.data], dataIndex: 0, series: s, seriesIndex: i};
-                                               }
-                                       }
-                                       else
-                                       {
-                                               // excanvas for IE doesn;t support isPointInPath, this is a workaround. 
-                                               p1X = (radius * Math.cos(s.startAngle));
-                                               p1Y = (radius * Math.sin(s.startAngle));
-                                               p2X = (radius * Math.cos(s.startAngle+(s.angle/4)));
-                                               p2Y = (radius * Math.sin(s.startAngle+(s.angle/4)));
-                                               p3X = (radius * Math.cos(s.startAngle+(s.angle/2)));
-                                               p3Y = (radius * Math.sin(s.startAngle+(s.angle/2)));
-                                               p4X = (radius * Math.cos(s.startAngle+(s.angle/1.5)));
-                                               p4Y = (radius * Math.sin(s.startAngle+(s.angle/1.5)));
-                                               p5X = (radius * Math.cos(s.startAngle+s.angle));
-                                               p5Y = (radius * Math.sin(s.startAngle+s.angle));
-                                               arrPoly = [[0,0],[p1X,p1Y],[p2X,p2Y],[p3X,p3Y],[p4X,p4Y],[p5X,p5Y]];
-                                               arrPoint = [x,y];
-                                               // TODO: perhaps do some mathmatical trickery here with the Y-coordinate to compensate for pie tilt?
-                                               if(isPointInPoly(arrPoly, arrPoint))
-                                               {
-                                                       ctx.restore();
-                                                       return {datapoint: [s.percent, s.data], dataIndex: 0, series: s, seriesIndex: i};
-                                               }                       
-                                       }
-                                       ctx.restore();
-                               }
-                       }
-                       
-                       return null;
-               }
-
-               function onMouseMove(e) 
-               {
-                       triggerClickHoverEvent('plothover', e);
-               }
-               
-        function onClick(e) 
-               {
-                       triggerClickHoverEvent('plotclick', e);
-        }
-
-               // trigger click or hover event (they send the same parameters so we share their code)
-               function triggerClickHoverEvent(eventname, e) 
-               {
-                       var offset = plot.offset(),
-                               canvasX = parseInt(e.pageX - offset.left),
-                               canvasY =  parseInt(e.pageY - offset.top),
-                               item = findNearbySlice(canvasX, canvasY);
-                       
-                       if (options.grid.autoHighlight) 
-                       {
-                               // clear auto-highlights
-                               for (var i = 0; i < highlights.length; ++i) 
-                               {
-                                       var h = highlights[i];
-                                       if (h.auto == eventname && !(item && h.series == item.series))
-                                               unhighlight(h.series);
-                               }
-                       }
-                       
-                       // highlight the slice
-                       if (item) 
-                           highlight(item.series, eventname);
-                               
-                       // trigger any hover bind events
-                       var pos = { pageX: e.pageX, pageY: e.pageY };
-                       target.trigger(eventname, [ pos, item ]);       
-               }
-
-               function highlight(s, auto) 
-               {
-                       if (typeof s == "number")
-                               s = series[s];
-
-                       var i = indexOfHighlight(s);
-                       if (i == -1) 
-                       {
-                               highlights.push({ series: s, auto: auto });
-                               plot.triggerRedrawOverlay();
-                       }
-                       else if (!auto)
-                               highlights[i].auto = false;
-               }
-
-               function unhighlight(s) 
-               {
-                       if (s == null) 
-                       {
-                               highlights = [];
-                               plot.triggerRedrawOverlay();
-                       }
-                       
-                       if (typeof s == "number")
-                               s = series[s];
-
-                       var i = indexOfHighlight(s);
-                       if (i != -1) 
-                       {
-                               highlights.splice(i, 1);
-                               plot.triggerRedrawOverlay();
-                       }
-               }
-
-               function indexOfHighlight(s) 
-               {
-                       for (var i = 0; i < highlights.length; ++i) 
-                       {
-                               var h = highlights[i];
-                               if (h.series == s)
-                                       return i;
-                       }
-                       return -1;
-               }
-
-               function drawOverlay(plot, octx) 
-               {
-                       //alert(options.series.pie.radius);
-                       var options = plot.getOptions();
-                       //alert(options.series.pie.radius);
-                       
-                       var radius = options.series.pie.radius > 1 ? options.series.pie.radius : maxRadius * options.series.pie.radius;
-
-                       octx.save();
-                       octx.translate(centerLeft, centerTop);
-                       octx.scale(1, options.series.pie.tilt);
-                       
-                       for (i = 0; i < highlights.length; ++i) 
-                               drawHighlight(highlights[i].series);
-                       
-                       drawDonutHole(octx);
-
-                       octx.restore();
-
-                       function drawHighlight(series) 
-                       {
-                               if (series.angle < 0) return;
-                               
-                               //octx.fillStyle = parseColor(options.series.pie.highlight.color).scale(null, null, null, options.series.pie.highlight.opacity).toString();
-                               octx.fillStyle = "rgba(255, 255, 255, "+options.series.pie.highlight.opacity+")"; // this is temporary until we have access to parseColor
-                               
-                               octx.beginPath();
-                               if (Math.abs(series.angle - Math.PI*2) > 0.000000001)
-                                       octx.moveTo(0,0); // Center of the pie
-                               octx.arc(0,0,radius,series.startAngle,series.startAngle+series.angle,false);
-                               octx.closePath();
-                               octx.fill();
-                       }
-                       
-               }       
-               
-       } // end init (plugin body)
-       
-       // define pie specific options and their default values
-       var options = {
-               series: {
-                       pie: {
-                               show: false,
-                               radius: 'auto', // actual radius of the visible pie (based on full calculated radius if <=1, or hard pixel value)
-                               innerRadius:0, /* for donut */
-                               startAngle: 3/2,
-                               tilt: 1,
-                               offset: {
-                                       top: 0,
-                                       left: 'auto'
-                               },
-                               stroke: {
-                                       color: '#FFF',
-                                       width: 1
-                               },
-                               label: {
-                                       show: 'auto',
-                                       formatter: function(label, slice){
-                                               return '<div style="font-size:x-small;text-align:center;padding:2px;color:'+slice.color+';">'+label+'<br/>'+Math.round(slice.percent)+'%</div>';
-                                       },      // formatter function
-                                       radius: 1,      // radius at which to place the labels (based on full calculated radius if <=1, or hard pixel value)
-                                       background: {
-                                               color: null,
-                                               opacity: 0
-                                       },
-                                       threshold: 0    // percentage at which to hide the label (i.e. the slice is too narrow)
-                               },
-                               combine: {
-                                       threshold: -1,  // percentage at which to combine little slices into one larger slice
-                                       color: null,    // color to give the new slice (auto-generated if null)
-                                       label: 'Other'  // label to give the new slice
-                               },
-                               highlight: {
-                                       //color: '#FFF',                // will add this functionality once parseColor is available
-                                       opacity: 0.5
-                               }
-                       }
-               }
-       };
-    
-       $.plot.plugins.push({
-               init: init,
-               options: options,
-               name: "pie",
-               version: "1.0"
-       });
-})(jQuery);
diff --git a/src/main/resources/META-INF/resources/designer/lib/plugins/flot/jquery.flot.resize.js b/src/main/resources/META-INF/resources/designer/lib/plugins/flot/jquery.flot.resize.js
deleted file mode 100644 (file)
index 1178425..0000000
+++ /dev/null
@@ -1,60 +0,0 @@
-/* Flot plugin for automatically redrawing plots as the placeholder resizes.
-
-Copyright (c) 2007-2013 IOLA and Ole Laursen.
-Licensed under the MIT license.
-
-It works by listening for changes on the placeholder div (through the jQuery
-resize event plugin) - if the size changes, it will redraw the plot.
-
-There are no options. If you need to disable the plugin for some plots, you
-can just fix the size of their placeholders.
-
-*/
-
-/* Inline dependency:
- * jQuery resize event - v1.1 - 3/14/2010
- * http://benalman.com/projects/jquery-resize-plugin/
- *
- * Copyright (c) 2010 "Cowboy" Ben Alman
- * Dual licensed under the MIT and GPL licenses.
- * http://benalman.com/about/license/
- */
-
-(function($,h,c){var a=$([]),e=$.resize=$.extend($.resize,{}),i,k="setTimeout",j="resize",d=j+"-special-event",b="delay",f="throttleWindow";e[b]=250;e[f]=true;$.event.special[j]={setup:function(){if(!e[f]&&this[k]){return false}var l=$(this);a=a.add(l);$.data(this,d,{w:l.width(),h:l.height()});if(a.length===1){g()}},teardown:function(){if(!e[f]&&this[k]){return false}var l=$(this);a=a.not(l);l.removeData(d);if(!a.length){clearTimeout(i)}},add:function(l){if(!e[f]&&this[k]){return false}var n;function m(s,o,p){var q=$(this),r=$.data(this,d);r.w=o!==c?o:q.width();r.h=p!==c?p:q.height();n.apply(this,arguments)}if($.isFunction(l)){n=l;return m}else{n=l.handler;l.handler=m}}};function g(){i=h[k](function(){a.each(function(){var n=$(this),m=n.width(),l=n.height(),o=$.data(this,d);if(m!==o.w||l!==o.h){n.trigger(j,[o.w=m,o.h=l])}});g()},e[b])}})(jQuery,this);
-
-(function ($) {
-    var options = { }; // no options
-
-    function init(plot) {
-        function onResize() {
-            var placeholder = plot.getPlaceholder();
-
-            // somebody might have hidden us and we can't plot
-            // when we don't have the dimensions
-            if (placeholder.width() == 0 || placeholder.height() == 0)
-                return;
-
-            plot.resize();
-            plot.setupGrid();
-            plot.draw();
-        }
-        
-        function bindEvents(plot, eventHolder) {
-            plot.getPlaceholder().resize(onResize);
-        }
-
-        function shutdown(plot, eventHolder) {
-            plot.getPlaceholder().unbind("resize", onResize);
-        }
-        
-        plot.hooks.bindEvents.push(bindEvents);
-        plot.hooks.shutdown.push(shutdown);
-    }
-    
-    $.plot.plugins.push({
-        init: init,
-        options: options,
-        name: 'resize',
-        version: '1.0'
-    });
-})(jQuery);
\ No newline at end of file
diff --git a/src/main/resources/META-INF/resources/designer/lib/plugins/flot/jquery.flot.tooltip.min.js b/src/main/resources/META-INF/resources/designer/lib/plugins/flot/jquery.flot.tooltip.min.js
deleted file mode 100644 (file)
index 09e3bbf..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-/*
- * jquery.flot.tooltip
- * 
- * description: easy-to-use tooltips for Flot charts
- * version: 0.6.2
- * author: Krzysztof Urbas @krzysu [myviews.pl]
- * website: https://github.com/krzysu/flot.tooltip
- * 
- * build on 2013-09-30
- * released under MIT License, 2012
-*/ 
-(function(t){var o={tooltip:!1,tooltipOpts:{content:"%s | X: %x | Y: %y",xDateFormat:null,yDateFormat:null,shifts:{x:10,y:20},defaultTheme:!0,onHover:function(){}}},i=function(t){this.tipPosition={x:0,y:0},this.init(t)};i.prototype.init=function(o){function i(t){var o={};o.x=t.pageX,o.y=t.pageY,s.updateTooltipPosition(o)}function e(t,o,i){var e=s.getDomElement();if(i){var n;n=s.stringFormat(s.tooltipOptions.content,i),e.html(n),s.updateTooltipPosition({x:o.pageX,y:o.pageY}),e.css({left:s.tipPosition.x+s.tooltipOptions.shifts.x,top:s.tipPosition.y+s.tooltipOptions.shifts.y}).show(),"function"==typeof s.tooltipOptions.onHover&&s.tooltipOptions.onHover(i,e)}else e.hide().html("")}var s=this;o.hooks.bindEvents.push(function(o,n){s.plotOptions=o.getOptions(),s.plotOptions.tooltip!==!1&&void 0!==s.plotOptions.tooltip&&(s.tooltipOptions=s.plotOptions.tooltipOpts,s.getDomElement(),t(o.getPlaceholder()).bind("plothover",e),t(n).bind("mousemove",i))}),o.hooks.shutdown.push(function(o,s){t(o.getPlaceholder()).unbind("plothover",e),t(s).unbind("mousemove",i)})},i.prototype.getDomElement=function(){var o;return t("#flotTip").length>0?o=t("#flotTip"):(o=t("<div />").attr("id","flotTip"),o.appendTo("body").hide().css({position:"absolute"}),this.tooltipOptions.defaultTheme&&o.css({background:"#fff","z-index":"100",padding:"0.4em 0.6em","border-radius":"0.5em","font-size":"0.8em",border:"1px solid #111",display:"none","white-space":"nowrap"})),o},i.prototype.updateTooltipPosition=function(o){var i=t("#flotTip").outerWidth()+this.tooltipOptions.shifts.x,e=t("#flotTip").outerHeight()+this.tooltipOptions.shifts.y;o.x-t(window).scrollLeft()>t(window).innerWidth()-i&&(o.x-=i),o.y-t(window).scrollTop()>t(window).innerHeight()-e&&(o.y-=e),this.tipPosition.x=o.x,this.tipPosition.y=o.y},i.prototype.stringFormat=function(t,o){var i=/%p\.{0,1}(\d{0,})/,e=/%s/,s=/%x\.{0,1}(?:\d{0,})/,n=/%y\.{0,1}(?:\d{0,})/;return"function"==typeof t&&(t=t(o.series.label,o.series.data[o.dataIndex][0],o.series.data[o.dataIndex][1],o)),o.series.percent!==void 0&&(t=this.adjustValPrecision(i,t,o.series.percent)),o.series.label!==void 0&&(t=t.replace(e,o.series.label)),this.isTimeMode("xaxis",o)&&this.isXDateFormat(o)&&(t=t.replace(s,this.timestampToDate(o.series.data[o.dataIndex][0],this.tooltipOptions.xDateFormat))),this.isTimeMode("yaxis",o)&&this.isYDateFormat(o)&&(t=t.replace(n,this.timestampToDate(o.series.data[o.dataIndex][1],this.tooltipOptions.yDateFormat))),"number"==typeof o.series.data[o.dataIndex][0]&&(t=this.adjustValPrecision(s,t,o.series.data[o.dataIndex][0])),"number"==typeof o.series.data[o.dataIndex][1]&&(t=this.adjustValPrecision(n,t,o.series.data[o.dataIndex][1])),o.series.xaxis.tickFormatter!==void 0&&(t=t.replace(s,o.series.xaxis.tickFormatter(o.series.data[o.dataIndex][0],o.series.xaxis))),o.series.yaxis.tickFormatter!==void 0&&(t=t.replace(n,o.series.yaxis.tickFormatter(o.series.data[o.dataIndex][1],o.series.yaxis))),t},i.prototype.isTimeMode=function(t,o){return o.series[t].options.mode!==void 0&&"time"===o.series[t].options.mode},i.prototype.isXDateFormat=function(){return this.tooltipOptions.xDateFormat!==void 0&&null!==this.tooltipOptions.xDateFormat},i.prototype.isYDateFormat=function(){return this.tooltipOptions.yDateFormat!==void 0&&null!==this.tooltipOptions.yDateFormat},i.prototype.timestampToDate=function(o,i){var e=new Date(o);return t.plot.formatDate(e,i)},i.prototype.adjustValPrecision=function(t,o,i){var e,s=o.match(t);return null!==s&&""!==RegExp.$1&&(e=RegExp.$1,i=i.toFixed(e),o=o.replace(t,i)),o};var e=function(t){new i(t)};t.plot.plugins.push({init:e,options:o,name:"tooltip",version:"0.6.1"})})(jQuery);
\ No newline at end of file
diff --git a/src/main/resources/META-INF/resources/designer/lib/plugins/morris/morris-data.js b/src/main/resources/META-INF/resources/designer/lib/plugins/morris/morris-data.js
deleted file mode 100644 (file)
index e5e23f6..0000000
+++ /dev/null
@@ -1,117 +0,0 @@
-$(function() {
-
-    Morris.Area({
-        element: 'morris-area-chart',
-        data: [{
-            period: '2010 Q1',
-            iphone: 2666,
-            ipad: null,
-            itouch: 2647
-        }, {
-            period: '2010 Q2',
-            iphone: 2778,
-            ipad: 2294,
-            itouch: 2441
-        }, {
-            period: '2010 Q3',
-            iphone: 4912,
-            ipad: 1969,
-            itouch: 2501
-        }, {
-            period: '2010 Q4',
-            iphone: 3767,
-            ipad: 3597,
-            itouch: 5689
-        }, {
-            period: '2011 Q1',
-            iphone: 6810,
-            ipad: 1914,
-            itouch: 2293
-        }, {
-            period: '2011 Q2',
-            iphone: 5670,
-            ipad: 4293,
-            itouch: 1881
-        }, {
-            period: '2011 Q3',
-            iphone: 4820,
-            ipad: 3795,
-            itouch: 1588
-        }, {
-            period: '2011 Q4',
-            iphone: 15073,
-            ipad: 5967,
-            itouch: 5175
-        }, {
-            period: '2012 Q1',
-            iphone: 10687,
-            ipad: 4460,
-            itouch: 2028
-        }, {
-            period: '2012 Q2',
-            iphone: 8432,
-            ipad: 5713,
-            itouch: 1791
-        }],
-        xkey: 'period',
-        ykeys: ['iphone', 'ipad', 'itouch'],
-        labels: ['iPhone', 'iPad', 'iPod Touch'],
-        pointSize: 2,
-        hideHover: 'auto',
-        resize: true
-    });
-
-    Morris.Donut({
-        element: 'morris-donut-chart',
-        data: [{
-            label: "Download Sales",
-            value: 12
-        }, {
-            label: "In-Store Sales",
-            value: 30
-        }, {
-            label: "Mail-Order Sales",
-            value: 20
-        }],
-        resize: true
-    });
-
-    Morris.Bar({
-        element: 'morris-bar-chart',
-        data: [{
-            y: '2006',
-            a: 100,
-            b: 90
-        }, {
-            y: '2007',
-            a: 75,
-            b: 65
-        }, {
-            y: '2008',
-            a: 50,
-            b: 40
-        }, {
-            y: '2009',
-            a: 75,
-            b: 65
-        }, {
-            y: '2010',
-            a: 50,
-            b: 40
-        }, {
-            y: '2011',
-            a: 75,
-            b: 65
-        }, {
-            y: '2012',
-            a: 100,
-            b: 90
-        }],
-        xkey: 'y',
-        ykeys: ['a', 'b'],
-        labels: ['Series A', 'Series B'],
-        hideHover: 'auto',
-        resize: true
-    });
-
-});
diff --git a/src/main/resources/META-INF/resources/designer/lib/plugins/morris/morris.js b/src/main/resources/META-INF/resources/designer/lib/plugins/morris/morris.js
deleted file mode 100644 (file)
index 35ad207..0000000
+++ /dev/null
@@ -1,2113 +0,0 @@
-/* @license
-morris.js v0.5.1
-Copyright 2014 Olly Smith All rights reserved.
-Licensed under the BSD-2-Clause License.
-*/
-
-
-(function() {
-  var $, Morris, minutesSpecHelper, secondsSpecHelper,
-    __slice = [].slice,
-    __bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; },
-    __hasProp = {}.hasOwnProperty,
-    __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },
-    __indexOf = [].indexOf || function(item) { for (var i = 0, l = this.length; i < l; i++) { if (i in this && this[i] === item) return i; } return -1; };
-
-  Morris = window.Morris = {};
-
-  $ = jQuery;
-
-  Morris.EventEmitter = (function() {
-    function EventEmitter() {}
-
-    EventEmitter.prototype.on = function(name, handler) {
-      if (this.handlers == null) {
-        this.handlers = {};
-      }
-      if (this.handlers[name] == null) {
-        this.handlers[name] = [];
-      }
-      this.handlers[name].push(handler);
-      return this;
-    };
-
-    EventEmitter.prototype.fire = function() {
-      var args, handler, name, _i, _len, _ref, _results;
-      name = arguments[0], args = 2 <= arguments.length ? __slice.call(arguments, 1) : [];
-      if ((this.handlers != null) && (this.handlers[name] != null)) {
-        _ref = this.handlers[name];
-        _results = [];
-        for (_i = 0, _len = _ref.length; _i < _len; _i++) {
-          handler = _ref[_i];
-          _results.push(handler.apply(null, args));
-        }
-        return _results;
-      }
-    };
-
-    return EventEmitter;
-
-  })();
-
-  Morris.commas = function(num) {
-    var absnum, intnum, ret, strabsnum;
-    if (num != null) {
-      ret = num < 0 ? "-" : "";
-      absnum = Math.abs(num);
-      intnum = Math.floor(absnum).toFixed(0);
-      ret += intnum.replace(/(?=(?:\d{3})+$)(?!^)/g, ',');
-      strabsnum = absnum.toString();
-      if (strabsnum.length > intnum.length) {
-        ret += strabsnum.slice(intnum.length);
-      }
-      return ret;
-    } else {
-      return '-';
-    }
-  };
-
-  Morris.pad2 = function(number) {
-    return (number < 10 ? '0' : '') + number;
-  };
-
-  Morris.Grid = (function(_super) {
-    __extends(Grid, _super);
-
-    function Grid(options) {
-      this.hasToShow = __bind(this.hasToShow, this);
-      this.resizeHandler = __bind(this.resizeHandler, this);
-      var _this = this;
-      if (typeof options.element === 'string') {
-        this.el = $(document.getElementById(options.element));
-      } else {
-        this.el = $(options.element);
-      }
-      if ((this.el == null) || this.el.length === 0) {
-        throw new Error("Graph container element not found");
-      }
-      if (this.el.css('position') === 'static') {
-        this.el.css('position', 'relative');
-      }
-      this.options = $.extend({}, this.gridDefaults, this.defaults || {}, options);
-      if (typeof this.options.units === 'string') {
-        this.options.postUnits = options.units;
-      }
-      this.raphael = new Raphael(this.el[0]);
-      this.elementWidth = null;
-      this.elementHeight = null;
-      this.dirty = false;
-      this.selectFrom = null;
-      if (this.init) {
-        this.init();
-      }
-      this.setData(this.options.data);
-      this.el.bind('mousemove', function(evt) {
-        var left, offset, right, width, x;
-        offset = _this.el.offset();
-        x = evt.pageX - offset.left;
-        if (_this.selectFrom) {
-          left = _this.data[_this.hitTest(Math.min(x, _this.selectFrom))]._x;
-          right = _this.data[_this.hitTest(Math.max(x, _this.selectFrom))]._x;
-          width = right - left;
-          return _this.selectionRect.attr({
-            x: left,
-            width: width
-          });
-        } else {
-          return _this.fire('hovermove', x, evt.pageY - offset.top);
-        }
-      });
-      this.el.bind('mouseleave', function(evt) {
-        if (_this.selectFrom) {
-          _this.selectionRect.hide();
-          _this.selectFrom = null;
-        }
-        return _this.fire('hoverout');
-      });
-      this.el.bind('touchstart touchmove touchend', function(evt) {
-        var offset, touch;
-        touch = evt.originalEvent.touches[0] || evt.originalEvent.changedTouches[0];
-        offset = _this.el.offset();
-        return _this.fire('hovermove', touch.pageX - offset.left, touch.pageY - offset.top);
-      });
-      this.el.bind('click', function(evt) {
-        var offset;
-        offset = _this.el.offset();
-        return _this.fire('gridclick', evt.pageX - offset.left, evt.pageY - offset.top);
-      });
-      if (this.options.rangeSelect) {
-        this.selectionRect = this.raphael.rect(0, 0, 0, this.el.innerHeight()).attr({
-          fill: this.options.rangeSelectColor,
-          stroke: false
-        }).toBack().hide();
-        this.el.bind('mousedown', function(evt) {
-          var offset;
-          offset = _this.el.offset();
-          return _this.startRange(evt.pageX - offset.left);
-        });
-        this.el.bind('mouseup', function(evt) {
-          var offset;
-          offset = _this.el.offset();
-          _this.endRange(evt.pageX - offset.left);
-          return _this.fire('hovermove', evt.pageX - offset.left, evt.pageY - offset.top);
-        });
-      }
-      if (this.options.resize) {
-        $(window).bind('resize', function(evt) {
-          if (_this.timeoutId != null) {
-            window.clearTimeout(_this.timeoutId);
-          }
-          return _this.timeoutId = window.setTimeout(_this.resizeHandler, 100);
-        });
-      }
-      this.el.css('-webkit-tap-highlight-color', 'rgba(0,0,0,0)');
-      if (this.postInit) {
-        this.postInit();
-      }
-    }
-
-    Grid.prototype.gridDefaults = {
-      dateFormat: null,
-      axes: true,
-      grid: true,
-      gridLineColor: '#aaa',
-      gridStrokeWidth: 0.5,
-      gridTextColor: '#888',
-      gridTextSize: 12,
-      gridTextFamily: 'sans-serif',
-      gridTextWeight: 'normal',
-      hideHover: false,
-      yLabelFormat: null,
-      xLabelAngle: 0,
-      numLines: 5,
-      padding: 25,
-      parseTime: true,
-      postUnits: '',
-      preUnits: '',
-      ymax: 'auto',
-      ymin: 'auto 0',
-      goals: [],
-      goalStrokeWidth: 1.0,
-      goalLineColors: ['#666633', '#999966', '#cc6666', '#663333'],
-      events: [],
-      eventStrokeWidth: 1.0,
-      eventLineColors: ['#005a04', '#ccffbb', '#3a5f0b', '#005502'],
-      rangeSelect: null,
-      rangeSelectColor: '#eef',
-      resize: false
-    };
-
-    Grid.prototype.setData = function(data, redraw) {
-      var e, flatEvents, from, idx, index, maxGoal, minGoal, ret, row, step, to, total, y, ykey, ymax, ymin, yval, _i, _len, _ref, _ref1;
-      if (redraw == null) {
-        redraw = true;
-      }
-      this.options.data = data;
-      if ((data == null) || data.length === 0) {
-        this.data = [];
-        this.raphael.clear();
-        if (this.hover != null) {
-          this.hover.hide();
-        }
-        return;
-      }
-      ymax = this.cumulative ? 0 : null;
-      ymin = this.cumulative ? 0 : null;
-      if (this.options.goals.length > 0) {
-        minGoal = Math.min.apply(Math, this.options.goals);
-        maxGoal = Math.max.apply(Math, this.options.goals);
-        ymin = ymin != null ? Math.min(ymin, minGoal) : minGoal;
-        ymax = ymax != null ? Math.max(ymax, maxGoal) : maxGoal;
-      }
-      this.data = (function() {
-        var _i, _len, _results;
-        _results = [];
-        for (index = _i = 0, _len = data.length; _i < _len; index = ++_i) {
-          row = data[index];
-          ret = {
-            src: row
-          };
-          ret.label = row[this.options.xkey];
-          if (this.options.parseTime) {
-            ret.x = Morris.parseDate(ret.label);
-            if (this.options.dateFormat) {
-              ret.label = this.options.dateFormat(ret.x);
-            } else if (typeof ret.label === 'number') {
-              ret.label = new Date(ret.label).toString();
-            }
-          } else {
-            ret.x = index;
-            if (this.options.xLabelFormat) {
-              ret.label = this.options.xLabelFormat(ret);
-            }
-          }
-          total = 0;
-          ret.y = (function() {
-            var _j, _len1, _ref, _results1;
-            _ref = this.options.ykeys;
-            _results1 = [];
-            for (idx = _j = 0, _len1 = _ref.length; _j < _len1; idx = ++_j) {
-              ykey = _ref[idx];
-              yval = row[ykey];
-              if (typeof yval === 'string') {
-                yval = parseFloat(yval);
-              }
-              if ((yval != null) && typeof yval !== 'number') {
-                yval = null;
-              }
-              if ((yval != null) && this.hasToShow(idx)) {
-                if (this.cumulative) {
-                  total += yval;
-                } else {
-                  if (ymax != null) {
-                    ymax = Math.max(yval, ymax);
-                    ymin = Math.min(yval, ymin);
-                  } else {
-                    ymax = ymin = yval;
-                  }
-                }
-              }
-              if (this.cumulative && (total != null)) {
-                ymax = Math.max(total, ymax);
-                ymin = Math.min(total, ymin);
-              }
-              _results1.push(yval);
-            }
-            return _results1;
-          }).call(this);
-          _results.push(ret);
-        }
-        return _results;
-      }).call(this);
-      if (this.options.parseTime) {
-        this.data = this.data.sort(function(a, b) {
-          return (a.x > b.x) - (b.x > a.x);
-        });
-      }
-      this.xmin = this.data[0].x;
-      this.xmax = this.data[this.data.length - 1].x;
-      this.events = [];
-      if (this.options.events.length > 0) {
-        if (this.options.parseTime) {
-          _ref = this.options.events;
-          for (_i = 0, _len = _ref.length; _i < _len; _i++) {
-            e = _ref[_i];
-            if (e instanceof Array) {
-              from = e[0], to = e[1];
-              this.events.push([Morris.parseDate(from), Morris.parseDate(to)]);
-            } else {
-              this.events.push(Morris.parseDate(e));
-            }
-          }
-        } else {
-          this.events = this.options.events;
-        }
-        flatEvents = $.map(this.events, function(e) {
-          return e;
-        });
-        this.xmax = Math.max(this.xmax, Math.max.apply(Math, flatEvents));
-        this.xmin = Math.min(this.xmin, Math.min.apply(Math, flatEvents));
-      }
-      if (this.xmin === this.xmax) {
-        this.xmin -= 1;
-        this.xmax += 1;
-      }
-      this.ymin = this.yboundary('min', ymin);
-      this.ymax = this.yboundary('max', ymax);
-      if (this.ymin === this.ymax) {
-        if (ymin) {
-          this.ymin -= 1;
-        }
-        this.ymax += 1;
-      }
-      if (((_ref1 = this.options.axes) === true || _ref1 === 'both' || _ref1 === 'y') || this.options.grid === true) {
-        if (this.options.ymax === this.gridDefaults.ymax && this.options.ymin === this.gridDefaults.ymin) {
-          this.grid = this.autoGridLines(this.ymin, this.ymax, this.options.numLines);
-          this.ymin = Math.min(this.ymin, this.grid[0]);
-          this.ymax = Math.max(this.ymax, this.grid[this.grid.length - 1]);
-        } else {
-          step = (this.ymax - this.ymin) / (this.options.numLines - 1);
-          this.grid = (function() {
-            var _j, _ref2, _ref3, _results;
-            _results = [];
-            for (y = _j = _ref2 = this.ymin, _ref3 = this.ymax; step > 0 ? _j <= _ref3 : _j >= _ref3; y = _j += step) {
-              _results.push(y);
-            }
-            return _results;
-          }).call(this);
-        }
-      }
-      this.dirty = true;
-      if (redraw) {
-        return this.redraw();
-      }
-    };
-
-    Grid.prototype.yboundary = function(boundaryType, currentValue) {
-      var boundaryOption, suggestedValue;
-      boundaryOption = this.options["y" + boundaryType];
-      if (typeof boundaryOption === 'string') {
-        if (boundaryOption.slice(0, 4) === 'auto') {
-          if (boundaryOption.length > 5) {
-            suggestedValue = parseInt(boundaryOption.slice(5), 10);
-            if (currentValue == null) {
-              return suggestedValue;
-            }
-            return Math[boundaryType](currentValue, suggestedValue);
-          } else {
-            if (currentValue != null) {
-              return currentValue;
-            } else {
-              return 0;
-            }
-          }
-        } else {
-          return parseInt(boundaryOption, 10);
-        }
-      } else {
-        return boundaryOption;
-      }
-    };
-
-    Grid.prototype.autoGridLines = function(ymin, ymax, nlines) {
-      var gmax, gmin, grid, smag, span, step, unit, y, ymag;
-      span = ymax - ymin;
-      ymag = Math.floor(Math.log(span) / Math.log(10));
-      unit = Math.pow(10, ymag);
-      gmin = Math.floor(ymin / unit) * unit;
-      gmax = Math.ceil(ymax / unit) * unit;
-      step = (gmax - gmin) / (nlines - 1);
-      if (unit === 1 && step > 1 && Math.ceil(step) !== step) {
-        step = Math.ceil(step);
-        gmax = gmin + step * (nlines - 1);
-      }
-      if (gmin < 0 && gmax > 0) {
-        gmin = Math.floor(ymin / step) * step;
-        gmax = Math.ceil(ymax / step) * step;
-      }
-      if (step < 1) {
-        smag = Math.floor(Math.log(step) / Math.log(10));
-        grid = (function() {
-          var _i, _results;
-          _results = [];
-          for (y = _i = gmin; step > 0 ? _i <= gmax : _i >= gmax; y = _i += step) {
-            _results.push(parseFloat(y.toFixed(1 - smag)));
-          }
-          return _results;
-        })();
-      } else {
-        grid = (function() {
-          var _i, _results;
-          _results = [];
-          for (y = _i = gmin; step > 0 ? _i <= gmax : _i >= gmax; y = _i += step) {
-            _results.push(y);
-          }
-          return _results;
-        })();
-      }
-      return grid;
-    };
-
-    Grid.prototype._calc = function() {
-      var angle, bottomOffsets, gridLine, h, i, w, yLabelWidths, _ref, _ref1;
-      w = this.el.width();
-      h = this.el.height();
-      if (this.elementWidth !== w || this.elementHeight !== h || this.dirty) {
-        this.elementWidth = w;
-        this.elementHeight = h;
-        this.dirty = false;
-        this.left = this.options.padding;
-        this.right = this.elementWidth - this.options.padding;
-        this.top = this.options.padding;
-        this.bottom = this.elementHeight - this.options.padding;
-        if ((_ref = this.options.axes) === true || _ref === 'both' || _ref === 'y') {
-          yLabelWidths = (function() {
-            var _i, _len, _ref1, _results;
-            _ref1 = this.grid;
-            _results = [];
-            for (_i = 0, _len = _ref1.length; _i < _len; _i++) {
-              gridLine = _ref1[_i];
-              _results.push(this.measureText(this.yAxisFormat(gridLine)).width);
-            }
-            return _results;
-          }).call(this);
-          if (!this.options.horizontal) {
-            this.left += Math.max.apply(Math, yLabelWidths);
-          } else {
-            this.bottom -= Math.max.apply(Math, yLabelWidths);
-          }
-        }
-        if ((_ref1 = this.options.axes) === true || _ref1 === 'both' || _ref1 === 'x') {
-          if (!this.options.horizontal) {
-            angle = -this.options.xLabelAngle;
-          } else {
-            angle = -90;
-          }
-          bottomOffsets = (function() {
-            var _i, _ref2, _results;
-            _results = [];
-            for (i = _i = 0, _ref2 = this.data.length; 0 <= _ref2 ? _i < _ref2 : _i > _ref2; i = 0 <= _ref2 ? ++_i : --_i) {
-              _results.push(this.measureText(this.data[i].label, angle).height);
-            }
-            return _results;
-          }).call(this);
-          if (!this.options.horizontal) {
-            this.bottom -= Math.max.apply(Math, bottomOffsets);
-          } else {
-            this.left += Math.max.apply(Math, bottomOffsets);
-          }
-        }
-        this.width = Math.max(1, this.right - this.left);
-        this.height = Math.max(1, this.bottom - this.top);
-        if (!this.options.horizontal) {
-          this.dx = this.width / (this.xmax - this.xmin);
-          this.dy = this.height / (this.ymax - this.ymin);
-          this.yStart = this.bottom;
-          this.yEnd = this.top;
-          this.xStart = this.left;
-          this.xEnd = this.right;
-          this.xSize = this.width;
-          this.ySize = this.height;
-        } else {
-          this.dx = this.height / (this.xmax - this.xmin);
-          this.dy = this.width / (this.ymax - this.ymin);
-          this.yStart = this.left;
-          this.yEnd = this.right;
-          this.xStart = this.top;
-          this.xEnd = this.bottom;
-          this.xSize = this.height;
-          this.ySize = this.width;
-        }
-        if (this.calc) {
-          return this.calc();
-        }
-      }
-    };
-
-    Grid.prototype.transY = function(y) {
-      if (!this.options.horizontal) {
-        return this.bottom - (y - this.ymin) * this.dy;
-      } else {
-        return this.left + (y - this.ymin) * this.dy;
-      }
-    };
-
-    Grid.prototype.transX = function(x) {
-      if (this.data.length === 1) {
-        return (this.xStart + this.xEnd) / 2;
-      } else {
-        return this.xStart + (x - this.xmin) * this.dx;
-      }
-    };
-
-    Grid.prototype.redraw = function() {
-      this.raphael.clear();
-      this._calc();
-      this.drawGrid();
-      this.drawGoals();
-      this.drawEvents();
-      if (this.draw) {
-        return this.draw();
-      }
-    };
-
-    Grid.prototype.measureText = function(text, angle) {
-      var ret, tt;
-      if (angle == null) {
-        angle = 0;
-      }
-      tt = this.raphael.text(100, 100, text).attr('font-size', this.options.gridTextSize).attr('font-family', this.options.gridTextFamily).attr('font-weight', this.options.gridTextWeight).rotate(angle);
-      ret = tt.getBBox();
-      tt.remove();
-      return ret;
-    };
-
-    Grid.prototype.yAxisFormat = function(label) {
-      return this.yLabelFormat(label, 0);
-    };
-
-    Grid.prototype.yLabelFormat = function(label, i) {
-      if (typeof this.options.yLabelFormat === 'function') {
-        return this.options.yLabelFormat(label, i);
-      } else {
-        return "" + this.options.preUnits + (Morris.commas(label)) + this.options.postUnits;
-      }
-    };
-
-    Grid.prototype.getYAxisLabelX = function() {
-      return this.left - this.options.padding / 2;
-    };
-
-    Grid.prototype.drawGrid = function() {
-      var basePos, lineY, pos, _i, _len, _ref, _ref1, _ref2, _results;
-      if (this.options.grid === false && ((_ref = this.options.axes) !== true && _ref !== 'both' && _ref !== 'y')) {
-        return;
-      }
-      if (!this.options.horizontal) {
-        basePos = this.getYAxisLabelX();
-      } else {
-        basePos = this.getXAxisLabelY();
-      }
-      _ref1 = this.grid;
-      _results = [];
-      for (_i = 0, _len = _ref1.length; _i < _len; _i++) {
-        lineY = _ref1[_i];
-        pos = this.transY(lineY);
-        if ((_ref2 = this.options.axes) === true || _ref2 === 'both' || _ref2 === 'y') {
-          if (!this.options.horizontal) {
-            this.drawYAxisLabel(basePos, pos, this.yAxisFormat(lineY));
-          } else {
-            this.drawXAxisLabel(pos, basePos, this.yAxisFormat(lineY));
-          }
-        }
-        if (this.options.grid) {
-          pos = Math.floor(pos) + 0.5;
-          if (!this.options.horizontal) {
-            _results.push(this.drawGridLine("M" + this.xStart + "," + pos + "H" + this.xEnd));
-          } else {
-            _results.push(this.drawGridLine("M" + pos + "," + this.xStart + "V" + this.xEnd));
-          }
-        } else {
-          _results.push(void 0);
-        }
-      }
-      return _results;
-    };
-
-    Grid.prototype.drawGoals = function() {
-      var color, goal, i, _i, _len, _ref, _results;
-      _ref = this.options.goals;
-      _results = [];
-      for (i = _i = 0, _len = _ref.length; _i < _len; i = ++_i) {
-        goal = _ref[i];
-        color = this.options.goalLineColors[i % this.options.goalLineColors.length];
-        _results.push(this.drawGoal(goal, color));
-      }
-      return _results;
-    };
-
-    Grid.prototype.drawEvents = function() {
-      var color, event, i, _i, _len, _ref, _results;
-      _ref = this.events;
-      _results = [];
-      for (i = _i = 0, _len = _ref.length; _i < _len; i = ++_i) {
-        event = _ref[i];
-        color = this.options.eventLineColors[i % this.options.eventLineColors.length];
-        _results.push(this.drawEvent(event, color));
-      }
-      return _results;
-    };
-
-    Grid.prototype.drawGoal = function(goal, color) {
-      var path, y;
-      y = Math.floor(this.transY(goal)) + 0.5;
-      if (!this.options.horizontal) {
-        path = "M" + this.xStart + "," + y + "H" + this.xEnd;
-      } else {
-        path = "M" + y + "," + this.xStart + "V" + this.xEnd;
-      }
-      return this.raphael.path(path).attr('stroke', color).attr('stroke-width', this.options.goalStrokeWidth);
-    };
-
-    Grid.prototype.drawEvent = function(event, color) {
-      var from, path, to, x;
-      if (event instanceof Array) {
-        from = event[0], to = event[1];
-        from = Math.floor(this.transX(from)) + 0.5;
-        to = Math.floor(this.transX(to)) + 0.5;
-        if (!this.options.horizontal) {
-          return this.raphael.rect(from, this.yEnd, to - from, this.yStart - this.yEnd).attr({
-            fill: color,
-            stroke: false
-          }).toBack();
-        } else {
-          return this.raphael.rect(this.yStart, from, this.yEnd - this.yStart, to - from).attr({
-            fill: color,
-            stroke: false
-          }).toBack();
-        }
-      } else {
-        x = Math.floor(this.transX(event)) + 0.5;
-        if (!this.options.horizontal) {
-          path = "M" + x + "," + this.yStart + "V" + this.yEnd;
-        } else {
-          path = "M" + this.yStart + "," + x + "H" + this.yEnd;
-        }
-        return this.raphael.path(path).attr('stroke', color).attr('stroke-width', this.options.eventStrokeWidth);
-      }
-    };
-
-    Grid.prototype.drawYAxisLabel = function(xPos, yPos, text) {
-      return this.raphael.text(xPos, yPos, text).attr('font-size', this.options.gridTextSize).attr('font-family', this.options.gridTextFamily).attr('font-weight', this.options.gridTextWeight).attr('fill', this.options.gridTextColor).attr('text-anchor', 'end');
-    };
-
-    Grid.prototype.drawGridLine = function(path) {
-      return this.raphael.path(path).attr('stroke', this.options.gridLineColor).attr('stroke-width', this.options.gridStrokeWidth);
-    };
-
-    Grid.prototype.startRange = function(x) {
-      this.hover.hide();
-      this.selectFrom = x;
-      return this.selectionRect.attr({
-        x: x,
-        width: 0
-      }).show();
-    };
-
-    Grid.prototype.endRange = function(x) {
-      var end, start;
-      if (this.selectFrom) {
-        start = Math.min(this.selectFrom, x);
-        end = Math.max(this.selectFrom, x);
-        this.options.rangeSelect.call(this.el, {
-          start: this.data[this.hitTest(start)].x,
-          end: this.data[this.hitTest(end)].x
-        });
-        return this.selectFrom = null;
-      }
-    };
-
-    Grid.prototype.resizeHandler = function() {
-      this.timeoutId = null;
-      this.raphael.setSize(this.el.width(), this.el.height());
-      return this.redraw();
-    };
-
-    Grid.prototype.hasToShow = function(i) {
-      return this.options.shown === true || this.options.shown[i] === true;
-    };
-
-    return Grid;
-
-  })(Morris.EventEmitter);
-
-  Morris.parseDate = function(date) {
-    var isecs, m, msecs, n, o, offsetmins, p, q, r, ret, secs;
-    if (typeof date === 'number') {
-      return date;
-    }
-    m = date.match(/^(\d+) Q(\d)$/);
-    n = date.match(/^(\d+)-(\d+)$/);
-    o = date.match(/^(\d+)-(\d+)-(\d+)$/);
-    p = date.match(/^(\d+) W(\d+)$/);
-    q = date.match(/^(\d+)-(\d+)-(\d+)[ T](\d+):(\d+)(Z|([+-])(\d\d):?(\d\d))?$/);
-    r = date.match(/^(\d+)-(\d+)-(\d+)[ T](\d+):(\d+):(\d+(\.\d+)?)(Z|([+-])(\d\d):?(\d\d))?$/);
-    if (m) {
-      return new Date(parseInt(m[1], 10), parseInt(m[2], 10) * 3 - 1, 1).getTime();
-    } else if (n) {
-      return new Date(parseInt(n[1], 10), parseInt(n[2], 10) - 1, 1).getTime();
-    } else if (o) {
-      return new Date(parseInt(o[1], 10), parseInt(o[2], 10) - 1, parseInt(o[3], 10)).getTime();
-    } else if (p) {
-      ret = new Date(parseInt(p[1], 10), 0, 1);
-      if (ret.getDay() !== 4) {
-        ret.setMonth(0, 1 + ((4 - ret.getDay()) + 7) % 7);
-      }
-      return ret.getTime() + parseInt(p[2], 10) * 604800000;
-    } else if (q) {
-      if (!q[6]) {
-        return new Date(parseInt(q[1], 10), parseInt(q[2], 10) - 1, parseInt(q[3], 10), parseInt(q[4], 10), parseInt(q[5], 10)).getTime();
-      } else {
-        offsetmins = 0;
-        if (q[6] !== 'Z') {
-          offsetmins = parseInt(q[8], 10) * 60 + parseInt(q[9], 10);
-          if (q[7] === '+') {
-            offsetmins = 0 - offsetmins;
-          }
-        }
-        return Date.UTC(parseInt(q[1], 10), parseInt(q[2], 10) - 1, parseInt(q[3], 10), parseInt(q[4], 10), parseInt(q[5], 10) + offsetmins);
-      }
-    } else if (r) {
-      secs = parseFloat(r[6]);
-      isecs = Math.floor(secs);
-      msecs = Math.round((secs - isecs) * 1000);
-      if (!r[8]) {
-        return new Date(parseInt(r[1], 10), parseInt(r[2], 10) - 1, parseInt(r[3], 10), parseInt(r[4], 10), parseInt(r[5], 10), isecs, msecs).getTime();
-      } else {
-        offsetmins = 0;
-        if (r[8] !== 'Z') {
-          offsetmins = parseInt(r[10], 10) * 60 + parseInt(r[11], 10);
-          if (r[9] === '+') {
-            offsetmins = 0 - offsetmins;
-          }
-        }
-        return Date.UTC(parseInt(r[1], 10), parseInt(r[2], 10) - 1, parseInt(r[3], 10), parseInt(r[4], 10), parseInt(r[5], 10) + offsetmins, isecs, msecs);
-      }
-    } else {
-      return new Date(parseInt(date, 10), 0, 1).getTime();
-    }
-  };
-
-  Morris.Hover = (function() {
-    Hover.defaults = {
-      "class": 'morris-hover morris-default-style'
-    };
-
-    function Hover(options) {
-      if (options == null) {
-        options = {};
-      }
-      this.options = $.extend({}, Morris.Hover.defaults, options);
-      this.el = $("<div class='" + this.options["class"] + "'></div>");
-      this.el.hide();
-      this.options.parent.append(this.el);
-    }
-
-    Hover.prototype.update = function(html, x, y, centre_y) {
-      if (!html) {
-        return this.hide();
-      } else {
-        this.html(html);
-        this.show();
-        return this.moveTo(x, y, centre_y);
-      }
-    };
-
-    Hover.prototype.html = function(content) {
-      return this.el.html(content);
-    };
-
-    Hover.prototype.moveTo = function(x, y, centre_y) {
-      var hoverHeight, hoverWidth, left, parentHeight, parentWidth, top;
-      parentWidth = this.options.parent.innerWidth();
-      parentHeight = this.options.parent.innerHeight();
-      hoverWidth = this.el.outerWidth();
-      hoverHeight = this.el.outerHeight();
-      left = Math.min(Math.max(0, x - hoverWidth / 2), parentWidth - hoverWidth);
-      if (y != null) {
-        if (centre_y === true) {
-          top = y - hoverHeight / 2;
-          if (top < 0) {
-            top = 0;
-          }
-        } else {
-          top = y - hoverHeight - 10;
-          if (top < 0) {
-            top = y + 10;
-            if (top + hoverHeight > parentHeight) {
-              top = parentHeight / 2 - hoverHeight / 2;
-            }
-          }
-        }
-      } else {
-        top = parentHeight / 2 - hoverHeight / 2;
-      }
-      return this.el.css({
-        left: left + "px",
-        top: parseInt(top) + "px"
-      });
-    };
-
-    Hover.prototype.show = function() {
-      return this.el.show();
-    };
-
-    Hover.prototype.hide = function() {
-      return this.el.hide();
-    };
-
-    return Hover;
-
-  })();
-
-  Morris.Line = (function(_super) {
-    __extends(Line, _super);
-
-    function Line(options) {
-      this.hilight = __bind(this.hilight, this);
-      this.onHoverOut = __bind(this.onHoverOut, this);
-      this.onHoverMove = __bind(this.onHoverMove, this);
-      this.onGridClick = __bind(this.onGridClick, this);
-      if (!(this instanceof Morris.Line)) {
-        return new Morris.Line(options);
-      }
-      Line.__super__.constructor.call(this, options);
-    }
-
-    Line.prototype.init = function() {
-      if (this.options.hideHover !== 'always') {
-        this.hover = new Morris.Hover({
-          parent: this.el
-        });
-        this.on('hovermove', this.onHoverMove);
-        this.on('hoverout', this.onHoverOut);
-        return this.on('gridclick', this.onGridClick);
-      }
-    };
-
-    Line.prototype.defaults = {
-      lineWidth: 3,
-      pointSize: 4,
-      lineColors: ['#0b62a4', '#7A92A3', '#4da74d', '#afd8f8', '#edc240', '#cb4b4b', '#9440ed'],
-      pointStrokeWidths: [1],
-      pointStrokeColors: ['#ffffff'],
-      pointFillColors: [],
-      smooth: true,
-      shown: true,
-      xLabels: 'auto',
-      xLabelFormat: null,
-      xLabelMargin: 24,
-      hideHover: false,
-      trendLine: false,
-      trendLineWidth: 2,
-      trendLineColors: ['#689bc3', '#a2b3bf', '#64b764']
-    };
-
-    Line.prototype.calc = function() {
-      this.calcPoints();
-      return this.generatePaths();
-    };
-
-    Line.prototype.calcPoints = function() {
-      var row, y, _i, _len, _ref, _results;
-      _ref = this.data;
-      _results = [];
-      for (_i = 0, _len = _ref.length; _i < _len; _i++) {
-        row = _ref[_i];
-        row._x = this.transX(row.x);
-        row._y = (function() {
-          var _j, _len1, _ref1, _results1;
-          _ref1 = row.y;
-          _results1 = [];
-          for (_j = 0, _len1 = _ref1.length; _j < _len1; _j++) {
-            y = _ref1[_j];
-            if (y != null) {
-              _results1.push(this.transY(y));
-            } else {
-              _results1.push(y);
-            }
-          }
-          return _results1;
-        }).call(this);
-        _results.push(row._ymax = Math.min.apply(Math, [this.bottom].concat((function() {
-          var _j, _len1, _ref1, _results1;
-          _ref1 = row._y;
-          _results1 = [];
-          for (_j = 0, _len1 = _ref1.length; _j < _len1; _j++) {
-            y = _ref1[_j];
-            if (y != null) {
-              _results1.push(y);
-            }
-          }
-          return _results1;
-        })())));
-      }
-      return _results;
-    };
-
-    Line.prototype.hitTest = function(x) {
-      var index, r, _i, _len, _ref;
-      if (this.data.length === 0) {
-        return null;
-      }
-      _ref = this.data.slice(1);
-      for (index = _i = 0, _len = _ref.length; _i < _len; index = ++_i) {
-        r = _ref[index];
-        if (x < (r._x + this.data[index]._x) / 2) {
-          break;
-        }
-      }
-      return index;
-    };
-
-    Line.prototype.onGridClick = function(x, y) {
-      var index;
-      index = this.hitTest(x);
-      return this.fire('click', index, this.data[index].src, x, y);
-    };
-
-    Line.prototype.onHoverMove = function(x, y) {
-      var index;
-      index = this.hitTest(x);
-      return this.displayHoverForRow(index);
-    };
-
-    Line.prototype.onHoverOut = function() {
-      if (this.options.hideHover !== false) {
-        return this.displayHoverForRow(null);
-      }
-    };
-
-    Line.prototype.displayHoverForRow = function(index) {
-      var _ref;
-      if (index != null) {
-        (_ref = this.hover).update.apply(_ref, this.hoverContentForRow(index));
-        return this.hilight(index);
-      } else {
-        this.hover.hide();
-        return this.hilight();
-      }
-    };
-
-    Line.prototype.hoverContentForRow = function(index) {
-      var content, j, row, y, _i, _len, _ref;
-      row = this.data[index];
-      content = $("<div class='morris-hover-row-label'>").text(row.label);
-      content = content.prop('outerHTML');
-      _ref = row.y;
-      for (j = _i = 0, _len = _ref.length; _i < _len; j = ++_i) {
-        y = _ref[j];
-        if (this.options.labels[j] === false) {
-          continue;
-        }
-        content += "<div class='morris-hover-point' style='color: " + (this.colorFor(row, j, 'label')) + "'>\n  " + this.options.labels[j] + ":\n  " + (this.yLabelFormat(y, j)) + "\n</div>";
-      }
-      if (typeof this.options.hoverCallback === 'function') {
-        content = this.options.hoverCallback(index, this.options, content, row.src);
-      }
-      return [content, row._x, row._ymax];
-    };
-
-    Line.prototype.generatePaths = function() {
-      var coords, i, r, smooth;
-      return this.paths = (function() {
-        var _i, _ref, _ref1, _results;
-        _results = [];
-        for (i = _i = 0, _ref = this.options.ykeys.length; 0 <= _ref ? _i < _ref : _i > _ref; i = 0 <= _ref ? ++_i : --_i) {
-          smooth = typeof this.options.smooth === "boolean" ? this.options.smooth : (_ref1 = this.options.ykeys[i], __indexOf.call(this.options.smooth, _ref1) >= 0);
-          coords = (function() {
-            var _j, _len, _ref2, _results1;
-            _ref2 = this.data;
-            _results1 = [];
-            for (_j = 0, _len = _ref2.length; _j < _len; _j++) {
-              r = _ref2[_j];
-              if (r._y[i] !== void 0) {
-                _results1.push({
-                  x: r._x,
-                  y: r._y[i]
-                });
-              }
-            }
-            return _results1;
-          }).call(this);
-          if (coords.length > 1) {
-            _results.push(Morris.Line.createPath(coords, smooth, this.bottom));
-          } else {
-            _results.push(null);
-          }
-        }
-        return _results;
-      }).call(this);
-    };
-
-    Line.prototype.draw = function() {
-      var _ref;
-      if ((_ref = this.options.axes) === true || _ref === 'both' || _ref === 'x') {
-        this.drawXAxis();
-      }
-      this.drawSeries();
-      if (this.options.hideHover === false) {
-        return this.displayHoverForRow(this.data.length - 1);
-      }
-    };
-
-    Line.prototype.drawXAxis = function() {
-      var drawLabel, l, labels, prevAngleMargin, prevLabelMargin, row, ypos, _i, _len, _results,
-        _this = this;
-      ypos = this.bottom + this.options.padding / 2;
-      prevLabelMargin = null;
-      prevAngleMargin = null;
-      drawLabel = function(labelText, xpos) {
-        var label, labelBox, margin, offset, textBox;
-        label = _this.drawXAxisLabel(_this.transX(xpos), ypos, labelText);
-        textBox = label.getBBox();
-        label.transform("r" + (-_this.options.xLabelAngle));
-        labelBox = label.getBBox();
-        label.transform("t0," + (labelBox.height / 2) + "...");
-        if (_this.options.xLabelAngle !== 0) {
-          offset = -0.5 * textBox.width * Math.cos(_this.options.xLabelAngle * Math.PI / 180.0);
-          label.transform("t" + offset + ",0...");
-        }
-        labelBox = label.getBBox();
-        if (((prevLabelMargin == null) || prevLabelMargin >= labelBox.x + labelBox.width || (prevAngleMargin != null) && prevAngleMargin >= labelBox.x) && labelBox.x >= 0 && (labelBox.x + labelBox.width) < _this.el.width()) {
-          if (_this.options.xLabelAngle !== 0) {
-            margin = 1.25 * _this.options.gridTextSize / Math.sin(_this.options.xLabelAngle * Math.PI / 180.0);
-            prevAngleMargin = labelBox.x - margin;
-          }
-          return prevLabelMargin = labelBox.x - _this.options.xLabelMargin;
-        } else {
-          return label.remove();
-        }
-      };
-      if (this.options.parseTime) {
-        if (this.data.length === 1 && this.options.xLabels === 'auto') {
-          labels = [[this.data[0].label, this.data[0].x]];
-        } else {
-          labels = Morris.labelSeries(this.xmin, this.xmax, this.width, this.options.xLabels, this.options.xLabelFormat);
-        }
-      } else {
-        labels = (function() {
-          var _i, _len, _ref, _results;
-          _ref = this.data;
-          _results = [];
-          for (_i = 0, _len = _ref.length; _i < _len; _i++) {
-            row = _ref[_i];
-            _results.push([row.label, row.x]);
-          }
-          return _results;
-        }).call(this);
-      }
-      labels.reverse();
-      _results = [];
-      for (_i = 0, _len = labels.length; _i < _len; _i++) {
-        l = labels[_i];
-        _results.push(drawLabel(l[0], l[1]));
-      }
-      return _results;
-    };
-
-    Line.prototype.drawSeries = function() {
-      var i, _i, _j, _ref, _ref1, _results;
-      this.seriesPoints = [];
-      for (i = _i = _ref = this.options.ykeys.length - 1; _ref <= 0 ? _i <= 0 : _i >= 0; i = _ref <= 0 ? ++_i : --_i) {
-        if (this.hasToShow(i)) {
-          if (this.options.trendLine !== false && this.options.trendLine === true || this.options.trendLine[i] === true) {
-            this._drawTrendLine(i);
-          }
-          this._drawLineFor(i);
-        }
-      }
-      _results = [];
-      for (i = _j = _ref1 = this.options.ykeys.length - 1; _ref1 <= 0 ? _j <= 0 : _j >= 0; i = _ref1 <= 0 ? ++_j : --_j) {
-        if (this.hasToShow(i)) {
-          _results.push(this._drawPointFor(i));
-        } else {
-          _results.push(void 0);
-        }
-      }
-      return _results;
-    };
-
-    Line.prototype._drawPointFor = function(index) {
-      var circle, row, _i, _len, _ref, _results;
-      this.seriesPoints[index] = [];
-      _ref = this.data;
-      _results = [];
-      for (_i = 0, _len = _ref.length; _i < _len; _i++) {
-        row = _ref[_i];
-        circle = null;
-        if (row._y[index] != null) {
-          circle = this.drawLinePoint(row._x, row._y[index], this.colorFor(row, index, 'point'), index);
-        }
-        _results.push(this.seriesPoints[index].push(circle));
-      }
-      return _results;
-    };
-
-    Line.prototype._drawLineFor = function(index) {
-      var path;
-      path = this.paths[index];
-      if (path !== null) {
-        return this.drawLinePath(path, this.colorFor(null, index, 'line'), index);
-      }
-    };
-
-    Line.prototype._drawTrendLine = function(index) {
-      var a, b, data, datapoints, path, sum_x, sum_xx, sum_xy, sum_y, val, x, y, _i, _len, _ref;
-      sum_x = 0;
-      sum_y = 0;
-      sum_xx = 0;
-      sum_xy = 0;
-      datapoints = 0;
-      _ref = this.data;
-      for (_i = 0, _len = _ref.length; _i < _len; _i++) {
-        val = _ref[_i];
-        x = val.x;
-        y = val.y[index];
-        if (y === void 0) {
-          continue;
-        }
-        datapoints += 1;
-        sum_x += x;
-        sum_y += y;
-        sum_xx += x * x;
-        sum_xy += x * y;
-      }
-      a = (datapoints * sum_xy - sum_x * sum_y) / (datapoints * sum_xx - sum_x * sum_x);
-      b = (sum_y / datapoints) - ((a * sum_x) / datapoints);
-      data = [{}, {}];
-      data[0].x = this.transX(this.data[0].x);
-      data[0].y = this.transY(this.data[0].x * a + b);
-      data[1].x = this.transX(this.data[this.data.length - 1].x);
-      data[1].y = this.transY(this.data[this.data.length - 1].x * a + b);
-      path = Morris.Line.createPath(data, false, this.bottom);
-      return path = this.raphael.path(path).attr('stroke', this.colorFor(null, index, 'trendLine')).attr('stroke-width', this.options.trendLineWidth);
-    };
-
-    Line.createPath = function(coords, smooth, bottom) {
-      var coord, g, grads, i, ix, lg, path, prevCoord, x1, x2, y1, y2, _i, _len;
-      path = "";
-      if (smooth) {
-        grads = Morris.Line.gradients(coords);
-      }
-      prevCoord = {
-        y: null
-      };
-      for (i = _i = 0, _len = coords.length; _i < _len; i = ++_i) {
-        coord = coords[i];
-        if (coord.y != null) {
-          if (prevCoord.y != null) {
-            if (smooth) {
-              g = grads[i];
-              lg = grads[i - 1];
-              ix = (coord.x - prevCoord.x) / 4;
-              x1 = prevCoord.x + ix;
-              y1 = Math.min(bottom, prevCoord.y + ix * lg);
-              x2 = coord.x - ix;
-              y2 = Math.min(bottom, coord.y - ix * g);
-              path += "C" + x1 + "," + y1 + "," + x2 + "," + y2 + "," + coord.x + "," + coord.y;
-            } else {
-              path += "L" + coord.x + "," + coord.y;
-            }
-          } else {
-            if (!smooth || (grads[i] != null)) {
-              path += "M" + coord.x + "," + coord.y;
-            }
-          }
-        }
-        prevCoord = coord;
-      }
-      return path;
-    };
-
-    Line.gradients = function(coords) {
-      var coord, grad, i, nextCoord, prevCoord, _i, _len, _results;
-      grad = function(a, b) {
-        return (a.y - b.y) / (a.x - b.x);
-      };
-      _results = [];
-      for (i = _i = 0, _len = coords.length; _i < _len; i = ++_i) {
-        coord = coords[i];
-        if (coord.y != null) {
-          nextCoord = coords[i + 1] || {
-            y: null
-          };
-          prevCoord = coords[i - 1] || {
-            y: null
-          };
-          if ((prevCoord.y != null) && (nextCoord.y != null)) {
-            _results.push(grad(prevCoord, nextCoord));
-          } else if (prevCoord.y != null) {
-            _results.push(grad(prevCoord, coord));
-          } else if (nextCoord.y != null) {
-            _results.push(grad(coord, nextCoord));
-          } else {
-            _results.push(null);
-          }
-        } else {
-          _results.push(null);
-        }
-      }
-      return _results;
-    };
-
-    Line.prototype.hilight = function(index) {
-      var i, _i, _j, _ref, _ref1;
-      if (this.prevHilight !== null && this.prevHilight !== index) {
-        for (i = _i = 0, _ref = this.seriesPoints.length - 1; 0 <= _ref ? _i <= _ref : _i >= _ref; i = 0 <= _ref ? ++_i : --_i) {
-          if (this.seriesPoints[i][this.prevHilight]) {
-            this.seriesPoints[i][this.prevHilight].animate(this.pointShrinkSeries(i));
-          }
-        }
-      }
-      if (index !== null && this.prevHilight !== index) {
-        for (i = _j = 0, _ref1 = this.seriesPoints.length - 1; 0 <= _ref1 ? _j <= _ref1 : _j >= _ref1; i = 0 <= _ref1 ? ++_j : --_j) {
-          if (this.seriesPoints[i][index]) {
-            this.seriesPoints[i][index].animate(this.pointGrowSeries(i));
-          }
-        }
-      }
-      return this.prevHilight = index;
-    };
-
-    Line.prototype.colorFor = function(row, sidx, type) {
-      if (typeof this.options.lineColors === 'function') {
-        return this.options.lineColors.call(this, row, sidx, type);
-      } else if (type === 'point') {
-        return this.options.pointFillColors[sidx % this.options.pointFillColors.length] || this.options.lineColors[sidx % this.options.lineColors.length];
-      } else if (type === 'line') {
-        return this.options.lineColors[sidx % this.options.lineColors.length];
-      } else {
-        return this.options.trendLineColors[sidx % this.options.trendLineColors.length];
-      }
-    };
-
-    Line.prototype.drawXAxisLabel = function(xPos, yPos, text) {
-      return this.raphael.text(xPos, yPos, text).attr('font-size', this.options.gridTextSize).attr('font-family', this.options.gridTextFamily).attr('font-weight', this.options.gridTextWeight).attr('fill', this.options.gridTextColor);
-    };
-
-    Line.prototype.drawLinePath = function(path, lineColor, lineIndex) {
-      return this.raphael.path(path).attr('stroke', lineColor).attr('stroke-width', this.lineWidthForSeries(lineIndex));
-    };
-
-    Line.prototype.drawLinePoint = function(xPos, yPos, pointColor, lineIndex) {
-      return this.raphael.circle(xPos, yPos, this.pointSizeForSeries(lineIndex)).attr('fill', pointColor).attr('stroke-width', this.pointStrokeWidthForSeries(lineIndex)).attr('stroke', this.pointStrokeColorForSeries(lineIndex));
-    };
-
-    Line.prototype.pointStrokeWidthForSeries = function(index) {
-      return this.options.pointStrokeWidths[index % this.options.pointStrokeWidths.length];
-    };
-
-    Line.prototype.pointStrokeColorForSeries = function(index) {
-      return this.options.pointStrokeColors[index % this.options.pointStrokeColors.length];
-    };
-
-    Line.prototype.lineWidthForSeries = function(index) {
-      if (this.options.lineWidth instanceof Array) {
-        return this.options.lineWidth[index % this.options.lineWidth.length];
-      } else {
-        return this.options.lineWidth;
-      }
-    };
-
-    Line.prototype.pointSizeForSeries = function(index) {
-      if (this.options.pointSize instanceof Array) {
-        return this.options.pointSize[index % this.options.pointSize.length];
-      } else {
-        return this.options.pointSize;
-      }
-    };
-
-    Line.prototype.pointGrowSeries = function(index) {
-      if (this.pointSizeForSeries(index) === 0) {
-        return;
-      }
-      return Raphael.animation({
-        r: this.pointSizeForSeries(index) + 3
-      }, 25, 'linear');
-    };
-
-    Line.prototype.pointShrinkSeries = function(index) {
-      return Raphael.animation({
-        r: this.pointSizeForSeries(index)
-      }, 25, 'linear');
-    };
-
-    return Line;
-
-  })(Morris.Grid);
-
-  Morris.labelSeries = function(dmin, dmax, pxwidth, specName, xLabelFormat) {
-    var d, d0, ddensity, name, ret, s, spec, t, _i, _len, _ref;
-    ddensity = 200 * (dmax - dmin) / pxwidth;
-    d0 = new Date(dmin);
-    spec = Morris.LABEL_SPECS[specName];
-    if (spec === void 0) {
-      _ref = Morris.AUTO_LABEL_ORDER;
-      for (_i = 0, _len = _ref.length; _i < _len; _i++) {
-        name = _ref[_i];
-        s = Morris.LABEL_SPECS[name];
-        if (ddensity >= s.span) {
-          spec = s;
-          break;
-        }
-      }
-    }
-    if (spec === void 0) {
-      spec = Morris.LABEL_SPECS["second"];
-    }
-    if (xLabelFormat) {
-      spec = $.extend({}, spec, {
-        fmt: xLabelFormat
-      });
-    }
-    d = spec.start(d0);
-    ret = [];
-    while ((t = d.getTime()) <= dmax) {
-      if (t >= dmin) {
-        ret.push([spec.fmt(d), t]);
-      }
-      spec.incr(d);
-    }
-    return ret;
-  };
-
-  minutesSpecHelper = function(interval) {
-    return {
-      span: interval * 60 * 1000,
-      start: function(d) {
-        return new Date(d.getFullYear(), d.getMonth(), d.getDate(), d.getHours());
-      },
-      fmt: function(d) {
-        return "" + (Morris.pad2(d.getHours())) + ":" + (Morris.pad2(d.getMinutes()));
-      },
-      incr: function(d) {
-        return d.setUTCMinutes(d.getUTCMinutes() + interval);
-      }
-    };
-  };
-
-  secondsSpecHelper = function(interval) {
-    return {
-      span: interval * 1000,
-      start: function(d) {
-        return new Date(d.getFullYear(), d.getMonth(), d.getDate(), d.getHours(), d.getMinutes());
-      },
-      fmt: function(d) {
-        return "" + (Morris.pad2(d.getHours())) + ":" + (Morris.pad2(d.getMinutes())) + ":" + (Morris.pad2(d.getSeconds()));
-      },
-      incr: function(d) {
-        return d.setUTCSeconds(d.getUTCSeconds() + interval);
-      }
-    };
-  };
-
-  Morris.LABEL_SPECS = {
-    "decade": {
-      span: 172800000000,
-      start: function(d) {
-        return new Date(d.getFullYear() - d.getFullYear() % 10, 0, 1);
-      },
-      fmt: function(d) {
-        return "" + (d.getFullYear());
-      },
-      incr: function(d) {
-        return d.setFullYear(d.getFullYear() + 10);
-      }
-    },
-    "year": {
-      span: 17280000000,
-      start: function(d) {
-        return new Date(d.getFullYear(), 0, 1);
-      },
-      fmt: function(d) {
-        return "" + (d.getFullYear());
-      },
-      incr: function(d) {
-        return d.setFullYear(d.getFullYear() + 1);
-      }
-    },
-    "month": {
-      span: 2419200000,
-      start: function(d) {
-        return new Date(d.getFullYear(), d.getMonth(), 1);
-      },
-      fmt: function(d) {
-        return "" + (d.getFullYear()) + "-" + (Morris.pad2(d.getMonth() + 1));
-      },
-      incr: function(d) {
-        return d.setMonth(d.getMonth() + 1);
-      }
-    },
-    "week": {
-      span: 604800000,
-      start: function(d) {
-        return new Date(d.getFullYear(), d.getMonth(), d.getDate());
-      },
-      fmt: function(d) {
-        return "" + (d.getFullYear()) + "-" + (Morris.pad2(d.getMonth() + 1)) + "-" + (Morris.pad2(d.getDate()));
-      },
-      incr: function(d) {
-        return d.setDate(d.getDate() + 7);
-      }
-    },
-    "day": {
-      span: 86400000,
-      start: function(d) {
-        return new Date(d.getFullYear(), d.getMonth(), d.getDate());
-      },
-      fmt: function(d) {
-        return "" + (d.getFullYear()) + "-" + (Morris.pad2(d.getMonth() + 1)) + "-" + (Morris.pad2(d.getDate()));
-      },
-      incr: function(d) {
-        return d.setDate(d.getDate() + 1);
-      }
-    },
-    "hour": minutesSpecHelper(60),
-    "30min": minutesSpecHelper(30),
-    "15min": minutesSpecHelper(15),
-    "10min": minutesSpecHelper(10),
-    "5min": minutesSpecHelper(5),
-    "minute": minutesSpecHelper(1),
-    "30sec": secondsSpecHelper(30),
-    "15sec": secondsSpecHelper(15),
-    "10sec": secondsSpecHelper(10),
-    "5sec": secondsSpecHelper(5),
-    "second": secondsSpecHelper(1)
-  };
-
-  Morris.AUTO_LABEL_ORDER = ["decade", "year", "month", "week", "day", "hour", "30min", "15min", "10min", "5min", "minute", "30sec", "15sec", "10sec", "5sec", "second"];
-
-  Morris.Area = (function(_super) {
-    var areaDefaults;
-
-    __extends(Area, _super);
-
-    areaDefaults = {
-      fillOpacity: 'auto',
-      behaveLikeLine: false
-    };
-
-    function Area(options) {
-      var areaOptions;
-      if (!(this instanceof Morris.Area)) {
-        return new Morris.Area(options);
-      }
-      areaOptions = $.extend({}, areaDefaults, options);
-      this.cumulative = !areaOptions.behaveLikeLine;
-      if (areaOptions.fillOpacity === 'auto') {
-        areaOptions.fillOpacity = areaOptions.behaveLikeLine ? .8 : 1;
-      }
-      Area.__super__.constructor.call(this, areaOptions);
-    }
-
-    Area.prototype.calcPoints = function() {
-      var row, total, y, _i, _len, _ref, _results;
-      _ref = this.data;
-      _results = [];
-      for (_i = 0, _len = _ref.length; _i < _len; _i++) {
-        row = _ref[_i];
-        row._x = this.transX(row.x);
-        total = 0;
-        row._y = (function() {
-          var _j, _len1, _ref1, _results1;
-          _ref1 = row.y;
-          _results1 = [];
-          for (_j = 0, _len1 = _ref1.length; _j < _len1; _j++) {
-            y = _ref1[_j];
-            if (this.options.behaveLikeLine) {
-              _results1.push(this.transY(y));
-            } else {
-              total += y || 0;
-              _results1.push(this.transY(total));
-            }
-          }
-          return _results1;
-        }).call(this);
-        _results.push(row._ymax = Math.max.apply(Math, row._y));
-      }
-      return _results;
-    };
-
-    Area.prototype.drawSeries = function() {
-      var i, range, _i, _j, _k, _len, _ref, _ref1, _results, _results1, _results2;
-      this.seriesPoints = [];
-      if (this.options.behaveLikeLine) {
-        range = (function() {
-          _results = [];
-          for (var _i = 0, _ref = this.options.ykeys.length - 1; 0 <= _ref ? _i <= _ref : _i >= _ref; 0 <= _ref ? _i++ : _i--){ _results.push(_i); }
-          return _results;
-        }).apply(this);
-      } else {
-        range = (function() {
-          _results1 = [];
-          for (var _j = _ref1 = this.options.ykeys.length - 1; _ref1 <= 0 ? _j <= 0 : _j >= 0; _ref1 <= 0 ? _j++ : _j--){ _results1.push(_j); }
-          return _results1;
-        }).apply(this);
-      }
-      _results2 = [];
-      for (_k = 0, _len = range.length; _k < _len; _k++) {
-        i = range[_k];
-        this._drawFillFor(i);
-        this._drawLineFor(i);
-        _results2.push(this._drawPointFor(i));
-      }
-      return _results2;
-    };
-
-    Area.prototype._drawFillFor = function(index) {
-      var path;
-      path = this.paths[index];
-      if (path !== null) {
-        path = path + ("L" + (this.transX(this.xmax)) + "," + this.bottom + "L" + (this.transX(this.xmin)) + "," + this.bottom + "Z");
-        return this.drawFilledPath(path, this.fillForSeries(index));
-      }
-    };
-
-    Area.prototype.fillForSeries = function(i) {
-      var color;
-      color = Raphael.rgb2hsl(this.colorFor(this.data[i], i, 'line'));
-      return Raphael.hsl(color.h, this.options.behaveLikeLine ? color.s * 0.9 : color.s * 0.75, Math.min(0.98, this.options.behaveLikeLine ? color.l * 1.2 : color.l * 1.25));
-    };
-
-    Area.prototype.drawFilledPath = function(path, fill) {
-      return this.raphael.path(path).attr('fill', fill).attr('fill-opacity', this.options.fillOpacity).attr('stroke', 'none');
-    };
-
-    return Area;
-
-  })(Morris.Line);
-
-  Morris.Bar = (function(_super) {
-    __extends(Bar, _super);
-
-    function Bar(options) {
-      this.onHoverOut = __bind(this.onHoverOut, this);
-      this.onHoverMove = __bind(this.onHoverMove, this);
-      this.onGridClick = __bind(this.onGridClick, this);
-      if (!(this instanceof Morris.Bar)) {
-        return new Morris.Bar(options);
-      }
-      Bar.__super__.constructor.call(this, $.extend({}, options, {
-        parseTime: false
-      }));
-    }
-
-    Bar.prototype.init = function() {
-      this.cumulative = this.options.stacked;
-      if (this.options.hideHover !== 'always') {
-        this.hover = new Morris.Hover({
-          parent: this.el
-        });
-        this.on('hovermove', this.onHoverMove);
-        this.on('hoverout', this.onHoverOut);
-        return this.on('gridclick', this.onGridClick);
-      }
-    };
-
-    Bar.prototype.defaults = {
-      barSizeRatio: 0.75,
-      barGap: 3,
-      barColors: ['#0b62a4', '#7a92a3', '#4da74d', '#afd8f8', '#edc240', '#cb4b4b', '#9440ed'],
-      barOpacity: 1.0,
-      barRadius: [0, 0, 0, 0],
-      xLabelMargin: 50,
-      horizontal: false,
-      shown: true
-    };
-
-    Bar.prototype.calc = function() {
-      var _ref;
-      this.calcBars();
-      if (this.options.hideHover === false) {
-        return (_ref = this.hover).update.apply(_ref, this.hoverContentForRow(this.data.length - 1));
-      }
-    };
-
-    Bar.prototype.calcBars = function() {
-      var idx, row, y, _i, _len, _ref, _results;
-      _ref = this.data;
-      _results = [];
-      for (idx = _i = 0, _len = _ref.length; _i < _len; idx = ++_i) {
-        row = _ref[idx];
-        row._x = this.xStart + this.xSize * (idx + 0.5) / this.data.length;
-        _results.push(row._y = (function() {
-          var _j, _len1, _ref1, _results1;
-          _ref1 = row.y;
-          _results1 = [];
-          for (_j = 0, _len1 = _ref1.length; _j < _len1; _j++) {
-            y = _ref1[_j];
-            if (y != null) {
-              _results1.push(this.transY(y));
-            } else {
-              _results1.push(null);
-            }
-          }
-          return _results1;
-        }).call(this));
-      }
-      return _results;
-    };
-
-    Bar.prototype.draw = function() {
-      var _ref;
-      if ((_ref = this.options.axes) === true || _ref === 'both' || _ref === 'x') {
-        this.drawXAxis();
-      }
-      return this.drawSeries();
-    };
-
-    Bar.prototype.drawXAxis = function() {
-      var angle, basePos, i, label, labelBox, margin, maxSize, offset, prevAngleMargin, prevLabelMargin, row, size, startPos, textBox, _i, _ref, _results;
-      if (!this.options.horizontal) {
-        basePos = this.getXAxisLabelY();
-      } else {
-        basePos = this.getYAxisLabelX();
-      }
-      prevLabelMargin = null;
-      prevAngleMargin = null;
-      _results = [];
-      for (i = _i = 0, _ref = this.data.length; 0 <= _ref ? _i < _ref : _i > _ref; i = 0 <= _ref ? ++_i : --_i) {
-        row = this.data[this.data.length - 1 - i];
-        if (!this.options.horizontal) {
-          label = this.drawXAxisLabel(row._x, basePos, row.label);
-        } else {
-          label = this.drawYAxisLabel(basePos, row._x - 0.5 * this.options.gridTextSize, row.label);
-        }
-        if (!this.options.horizontal) {
-          angle = this.options.xLabelAngle;
-        } else {
-          angle = 0;
-        }
-        textBox = label.getBBox();
-        label.transform("r" + (-angle));
-        labelBox = label.getBBox();
-        label.transform("t0," + (labelBox.height / 2) + "...");
-        if (angle !== 0) {
-          offset = -0.5 * textBox.width * Math.cos(angle * Math.PI / 180.0);
-          label.transform("t" + offset + ",0...");
-        }
-        if (!this.options.horizontal) {
-          startPos = labelBox.x;
-          size = labelBox.width;
-          maxSize = this.el.width();
-        } else {
-          startPos = labelBox.y;
-          size = labelBox.height;
-          maxSize = this.el.height();
-        }
-        if (((prevLabelMargin == null) || prevLabelMargin >= startPos + size || (prevAngleMargin != null) && prevAngleMargin >= startPos) && startPos >= 0 && (startPos + size) < maxSize) {
-          if (angle !== 0) {
-            margin = 1.25 * this.options.gridTextSize / Math.sin(angle * Math.PI / 180.0);
-            prevAngleMargin = startPos - margin;
-          }
-          if (!this.options.horizontal) {
-            _results.push(prevLabelMargin = startPos - this.options.xLabelMargin);
-          } else {
-            _results.push(prevLabelMargin = startPos);
-          }
-        } else {
-          _results.push(label.remove());
-        }
-      }
-      return _results;
-    };
-
-    Bar.prototype.getXAxisLabelY = function() {
-      return this.bottom + (this.options.xAxisLabelTopPadding || this.options.padding / 2);
-    };
-
-    Bar.prototype.drawSeries = function() {
-      var barWidth, bottom, groupWidth, i, idx, lastTop, left, leftPadding, numBars, row, sidx, size, spaceLeft, top, ypos, zeroPos, _i, _ref;
-      groupWidth = this.xSize / this.options.data.length;
-      if (this.options.stacked) {
-        numBars = 1;
-      } else {
-        numBars = 0;
-        for (i = _i = 0, _ref = this.options.ykeys.length - 1; 0 <= _ref ? _i <= _ref : _i >= _ref; i = 0 <= _ref ? ++_i : --_i) {
-          if (this.hasToShow(i)) {
-            numBars += 1;
-          }
-        }
-      }
-      barWidth = (groupWidth * this.options.barSizeRatio - this.options.barGap * (numBars - 1)) / numBars;
-      if (this.options.barSize) {
-        barWidth = Math.min(barWidth, this.options.barSize);
-      }
-      spaceLeft = groupWidth - barWidth * numBars - this.options.barGap * (numBars - 1);
-      leftPadding = spaceLeft / 2;
-      zeroPos = this.ymin <= 0 && this.ymax >= 0 ? this.transY(0) : null;
-      return this.bars = (function() {
-        var _j, _len, _ref1, _results;
-        _ref1 = this.data;
-        _results = [];
-        for (idx = _j = 0, _len = _ref1.length; _j < _len; idx = ++_j) {
-          row = _ref1[idx];
-          lastTop = 0;
-          _results.push((function() {
-            var _k, _len1, _ref2, _results1;
-            _ref2 = row._y;
-            _results1 = [];
-            for (sidx = _k = 0, _len1 = _ref2.length; _k < _len1; sidx = ++_k) {
-              ypos = _ref2[sidx];
-              if (!this.hasToShow(sidx)) {
-                continue;
-              }
-              if (ypos !== null) {
-                if (zeroPos) {
-                  top = Math.min(ypos, zeroPos);
-                  bottom = Math.max(ypos, zeroPos);
-                } else {
-                  top = ypos;
-                  bottom = this.bottom;
-                }
-                left = this.xStart + idx * groupWidth + leftPadding;
-                if (!this.options.stacked) {
-                  left += sidx * (barWidth + this.options.barGap);
-                }
-                size = bottom - top;
-                if (this.options.verticalGridCondition && this.options.verticalGridCondition(row.x)) {
-                  if (!this.options.horizontal) {
-                    this.drawBar(this.xStart + idx * groupWidth, this.yEnd, groupWidth, this.ySize, this.options.verticalGridColor, this.options.verticalGridOpacity, this.options.barRadius);
-                  } else {
-                    this.drawBar(this.yStart, this.xStart + idx * groupWidth, this.ySize, groupWidth, this.options.verticalGridColor, this.options.verticalGridOpacity, this.options.barRadius);
-                  }
-                }
-                if (this.options.stacked) {
-                  top -= lastTop;
-                }
-                if (!this.options.horizontal) {
-                  this.drawBar(left, top, barWidth, size, this.colorFor(row, sidx, 'bar'), this.options.barOpacity, this.options.barRadius);
-                  _results1.push(lastTop += size);
-                } else {
-                  this.drawBar(top, left, size, barWidth, this.colorFor(row, sidx, 'bar'), this.options.barOpacity, this.options.barRadius);
-                  _results1.push(lastTop -= size);
-                }
-              } else {
-                _results1.push(null);
-              }
-            }
-            return _results1;
-          }).call(this));
-        }
-        return _results;
-      }).call(this);
-    };
-
-    Bar.prototype.colorFor = function(row, sidx, type) {
-      var r, s;
-      if (typeof this.options.barColors === 'function') {
-        r = {
-          x: row.x,
-          y: row.y[sidx],
-          label: row.label
-        };
-        s = {
-          index: sidx,
-          key: this.options.ykeys[sidx],
-          label: this.options.labels[sidx]
-        };
-        return this.options.barColors.call(this, r, s, type);
-      } else {
-        return this.options.barColors[sidx % this.options.barColors.length];
-      }
-    };
-
-    Bar.prototype.hitTest = function(x, y) {
-      var pos;
-      if (this.data.length === 0) {
-        return null;
-      }
-      if (!this.options.horizontal) {
-        pos = x;
-      } else {
-        pos = y;
-      }
-      pos = Math.max(Math.min(pos, this.xEnd), this.xStart);
-      return Math.min(this.data.length - 1, Math.floor((pos - this.xStart) / (this.xSize / this.data.length)));
-    };
-
-    Bar.prototype.onGridClick = function(x, y) {
-      var index;
-      index = this.hitTest(x, y);
-      return this.fire('click', index, this.data[index].src, x, y);
-    };
-
-    Bar.prototype.onHoverMove = function(x, y) {
-      var index, _ref;
-      index = this.hitTest(x, y);
-      return (_ref = this.hover).update.apply(_ref, this.hoverContentForRow(index));
-    };
-
-    Bar.prototype.onHoverOut = function() {
-      if (this.options.hideHover !== false) {
-        return this.hover.hide();
-      }
-    };
-
-    Bar.prototype.hoverContentForRow = function(index) {
-      var content, j, row, x, y, _i, _len, _ref;
-      row = this.data[index];
-      content = $("<div class='morris-hover-row-label'>").text(row.label);
-      content = content.prop('outerHTML');
-      _ref = row.y;
-      for (j = _i = 0, _len = _ref.length; _i < _len; j = ++_i) {
-        y = _ref[j];
-        if (this.options.labels[j] === false) {
-          continue;
-        }
-        content += "<div class='morris-hover-point' style='color: " + (this.colorFor(row, j, 'label')) + "'>\n  " + this.options.labels[j] + ":\n  " + (this.yLabelFormat(y, j)) + "\n</div>";
-      }
-      if (typeof this.options.hoverCallback === 'function') {
-        content = this.options.hoverCallback(index, this.options, content, row.src);
-      }
-      if (!this.options.horizontal) {
-        x = this.left + (index + 0.5) * this.width / this.data.length;
-        return [content, x];
-      } else {
-        x = this.left + 0.5 * this.width;
-        y = this.top + (index + 0.5) * this.height / this.data.length;
-        return [content, x, y, true];
-      }
-    };
-
-    Bar.prototype.drawXAxisLabel = function(xPos, yPos, text) {
-      var label;
-      return label = this.raphael.text(xPos, yPos, text).attr('font-size', this.options.gridTextSize).attr('font-family', this.options.gridTextFamily).attr('font-weight', this.options.gridTextWeight).attr('fill', this.options.gridTextColor);
-    };
-
-    Bar.prototype.drawBar = function(xPos, yPos, width, height, barColor, opacity, radiusArray) {
-      var maxRadius, path;
-      maxRadius = Math.max.apply(Math, radiusArray);
-      if (maxRadius === 0 || maxRadius > height) {
-        path = this.raphael.rect(xPos, yPos, width, height);
-      } else {
-        path = this.raphael.path(this.roundedRect(xPos, yPos, width, height, radiusArray));
-      }
-      return path.attr('fill', barColor).attr('fill-opacity', opacity).attr('stroke', 'none');
-    };
-
-    Bar.prototype.roundedRect = function(x, y, w, h, r) {
-      if (r == null) {
-        r = [0, 0, 0, 0];
-      }
-      return ["M", x, r[0] + y, "Q", x, y, x + r[0], y, "L", x + w - r[1], y, "Q", x + w, y, x + w, y + r[1], "L", x + w, y + h - r[2], "Q", x + w, y + h, x + w - r[2], y + h, "L", x + r[3], y + h, "Q", x, y + h, x, y + h - r[3], "Z"];
-    };
-
-    return Bar;
-
-  })(Morris.Grid);
-
-  Morris.Donut = (function(_super) {
-    __extends(Donut, _super);
-
-    Donut.prototype.defaults = {
-      colors: ['#0B62A4', '#3980B5', '#679DC6', '#95BBD7', '#B0CCE1', '#095791', '#095085', '#083E67', '#052C48', '#042135'],
-      backgroundColor: '#FFFFFF',
-      labelColor: '#000000',
-      formatter: Morris.commas,
-      resize: false
-    };
-
-    function Donut(options) {
-      this.resizeHandler = __bind(this.resizeHandler, this);
-      this.select = __bind(this.select, this);
-      this.click = __bind(this.click, this);
-      var _this = this;
-      if (!(this instanceof Morris.Donut)) {
-        return new Morris.Donut(options);
-      }
-      this.options = $.extend({}, this.defaults, options);
-      if (typeof options.element === 'string') {
-        this.el = $(document.getElementById(options.element));
-      } else {
-        this.el = $(options.element);
-      }
-      if (this.el === null || this.el.length === 0) {
-        throw new Error("Graph placeholder not found.");
-      }
-      if (options.data === void 0 || options.data.length === 0) {
-        return;
-      }
-      this.raphael = new Raphael(this.el[0]);
-      if (this.options.resize) {
-        $(window).bind('resize', function(evt) {
-          if (_this.timeoutId != null) {
-            window.clearTimeout(_this.timeoutId);
-          }
-          return _this.timeoutId = window.setTimeout(_this.resizeHandler, 100);
-        });
-      }
-      this.setData(options.data);
-    }
-
-    Donut.prototype.redraw = function() {
-      var C, cx, cy, i, idx, last, max_value, min, next, seg, total, value, w, _i, _j, _k, _len, _len1, _len2, _ref, _ref1, _ref2, _results;
-      this.raphael.clear();
-      cx = this.el.width() / 2;
-      cy = this.el.height() / 2;
-      w = (Math.min(cx, cy) - 10) / 3;
-      total = 0;
-      _ref = this.values;
-      for (_i = 0, _len = _ref.length; _i < _len; _i++) {
-        value = _ref[_i];
-        total += value;
-      }
-      min = 5 / (2 * w);
-      C = 1.9999 * Math.PI - min * this.data.length;
-      last = 0;
-      idx = 0;
-      this.segments = [];
-      _ref1 = this.values;
-      for (i = _j = 0, _len1 = _ref1.length; _j < _len1; i = ++_j) {
-        value = _ref1[i];
-        next = last + min + C * (value / total);
-        seg = new Morris.DonutSegment(cx, cy, w * 2, w, last, next, this.data[i].color || this.options.colors[idx % this.options.colors.length], this.options.backgroundColor, idx, this.raphael);
-        seg.render();
-        this.segments.push(seg);
-        seg.on('hover', this.select);
-        seg.on('click', this.click);
-        last = next;
-        idx += 1;
-      }
-      this.text1 = this.drawEmptyDonutLabel(cx, cy - 10, this.options.labelColor, 15, 800);
-      this.text2 = this.drawEmptyDonutLabel(cx, cy + 10, this.options.labelColor, 14);
-      max_value = Math.max.apply(Math, this.values);
-      idx = 0;
-      _ref2 = this.values;
-      _results = [];
-      for (_k = 0, _len2 = _ref2.length; _k < _len2; _k++) {
-        value = _ref2[_k];
-        if (value === max_value) {
-          this.select(idx);
-          break;
-        }
-        _results.push(idx += 1);
-      }
-      return _results;
-    };
-
-    Donut.prototype.setData = function(data) {
-      var row;
-      this.data = data;
-      this.values = (function() {
-        var _i, _len, _ref, _results;
-        _ref = this.data;
-        _results = [];
-        for (_i = 0, _len = _ref.length; _i < _len; _i++) {
-          row = _ref[_i];
-          _results.push(parseFloat(row.value));
-        }
-        return _results;
-      }).call(this);
-      return this.redraw();
-    };
-
-    Donut.prototype.click = function(idx) {
-      return this.fire('click', idx, this.data[idx]);
-    };
-
-    Donut.prototype.select = function(idx) {
-      var row, s, segment, _i, _len, _ref;
-      _ref = this.segments;
-      for (_i = 0, _len = _ref.length; _i < _len; _i++) {
-        s = _ref[_i];
-        s.deselect();
-      }
-      segment = this.segments[idx];
-      segment.select();
-      row = this.data[idx];
-      return this.setLabels(row.label, this.options.formatter(row.value, row));
-    };
-
-    Donut.prototype.setLabels = function(label1, label2) {
-      var inner, maxHeightBottom, maxHeightTop, maxWidth, text1bbox, text1scale, text2bbox, text2scale;
-      inner = (Math.min(this.el.width() / 2, this.el.height() / 2) - 10) * 2 / 3;
-      maxWidth = 1.8 * inner;
-      maxHeightTop = inner / 2;
-      maxHeightBottom = inner / 3;
-      this.text1.attr({
-        text: label1,
-        transform: ''
-      });
-      text1bbox = this.text1.getBBox();
-      text1scale = Math.min(maxWidth / text1bbox.width, maxHeightTop / text1bbox.height);
-      this.text1.attr({
-        transform: "S" + text1scale + "," + text1scale + "," + (text1bbox.x + text1bbox.width / 2) + "," + (text1bbox.y + text1bbox.height)
-      });
-      this.text2.attr({
-        text: label2,
-        transform: ''
-      });
-      text2bbox = this.text2.getBBox();
-      text2scale = Math.min(maxWidth / text2bbox.width, maxHeightBottom / text2bbox.height);
-      return this.text2.attr({
-        transform: "S" + text2scale + "," + text2scale + "," + (text2bbox.x + text2bbox.width / 2) + "," + text2bbox.y
-      });
-    };
-
-    Donut.prototype.drawEmptyDonutLabel = function(xPos, yPos, color, fontSize, fontWeight) {
-      var text;
-      text = this.raphael.text(xPos, yPos, '').attr('font-size', fontSize).attr('fill', color);
-      if (fontWeight != null) {
-        text.attr('font-weight', fontWeight);
-      }
-      return text;
-    };
-
-    Donut.prototype.resizeHandler = function() {
-      this.timeoutId = null;
-      this.raphael.setSize(this.el.width(), this.el.height());
-      return this.redraw();
-    };
-
-    return Donut;
-
-  })(Morris.EventEmitter);
-
-  Morris.DonutSegment = (function(_super) {
-    __extends(DonutSegment, _super);
-
-    function DonutSegment(cx, cy, inner, outer, p0, p1, color, backgroundColor, index, raphael) {
-      this.cx = cx;
-      this.cy = cy;
-      this.inner = inner;
-      this.outer = outer;
-      this.color = color;
-      this.backgroundColor = backgroundColor;
-      this.index = index;
-      this.raphael = raphael;
-      this.deselect = __bind(this.deselect, this);
-      this.select = __bind(this.select, this);
-      this.sin_p0 = Math.sin(p0);
-      this.cos_p0 = Math.cos(p0);
-      this.sin_p1 = Math.sin(p1);
-      this.cos_p1 = Math.cos(p1);
-      this.is_long = (p1 - p0) > Math.PI ? 1 : 0;
-      this.path = this.calcSegment(this.inner + 3, this.inner + this.outer - 5);
-      this.selectedPath = this.calcSegment(this.inner + 3, this.inner + this.outer);
-      this.hilight = this.calcArc(this.inner);
-    }
-
-    DonutSegment.prototype.calcArcPoints = function(r) {
-      return [this.cx + r * this.sin_p0, this.cy + r * this.cos_p0, this.cx + r * this.sin_p1, this.cy + r * this.cos_p1];
-    };
-
-    DonutSegment.prototype.calcSegment = function(r1, r2) {
-      var ix0, ix1, iy0, iy1, ox0, ox1, oy0, oy1, _ref, _ref1;
-      _ref = this.calcArcPoints(r1), ix0 = _ref[0], iy0 = _ref[1], ix1 = _ref[2], iy1 = _ref[3];
-      _ref1 = this.calcArcPoints(r2), ox0 = _ref1[0], oy0 = _ref1[1], ox1 = _ref1[2], oy1 = _ref1[3];
-      return ("M" + ix0 + "," + iy0) + ("A" + r1 + "," + r1 + ",0," + this.is_long + ",0," + ix1 + "," + iy1) + ("L" + ox1 + "," + oy1) + ("A" + r2 + "," + r2 + ",0," + this.is_long + ",1," + ox0 + "," + oy0) + "Z";
-    };
-
-    DonutSegment.prototype.calcArc = function(r) {
-      var ix0, ix1, iy0, iy1, _ref;
-      _ref = this.calcArcPoints(r), ix0 = _ref[0], iy0 = _ref[1], ix1 = _ref[2], iy1 = _ref[3];
-      return ("M" + ix0 + "," + iy0) + ("A" + r + "," + r + ",0," + this.is_long + ",0," + ix1 + "," + iy1);
-    };
-
-    DonutSegment.prototype.render = function() {
-      var _this = this;
-      this.arc = this.drawDonutArc(this.hilight, this.color);
-      return this.seg = this.drawDonutSegment(this.path, this.color, this.backgroundColor, function() {
-        return _this.fire('hover', _this.index);
-      }, function() {
-        return _this.fire('click', _this.index);
-      });
-    };
-
-    DonutSegment.prototype.drawDonutArc = function(path, color) {
-      return this.raphael.path(path).attr({
-        stroke: color,
-        'stroke-width': 2,
-        opacity: 0
-      });
-    };
-
-    DonutSegment.prototype.drawDonutSegment = function(path, fillColor, strokeColor, hoverFunction, clickFunction) {
-      return this.raphael.path(path).attr({
-        fill: fillColor,
-        stroke: strokeColor,
-        'stroke-width': 3
-      }).hover(hoverFunction).click(clickFunction);
-    };
-
-    DonutSegment.prototype.select = function() {
-      if (!this.selected) {
-        this.seg.animate({
-          path: this.selectedPath
-        }, 150, '<>');
-        this.arc.animate({
-          opacity: 1
-        }, 150, '<>');
-        return this.selected = true;
-      }
-    };
-
-    DonutSegment.prototype.deselect = function() {
-      if (this.selected) {
-        this.seg.animate({
-          path: this.path
-        }, 150, '<>');
-        this.arc.animate({
-          opacity: 0
-        }, 150, '<>');
-        return this.selected = false;
-      }
-    };
-
-    return DonutSegment;
-
-  })(Morris.EventEmitter);
-
-}).call(this);
diff --git a/src/main/resources/META-INF/resources/designer/lib/plugins/morris/morris.min.js b/src/main/resources/META-INF/resources/designer/lib/plugins/morris/morris.min.js
deleted file mode 100644 (file)
index 819cd67..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-/* @license
-morris.js v0.5.1
-Copyright 2014 Olly Smith All rights reserved.
-Licensed under the BSD-2-Clause License.
-*/
-(function(){var a,b,c,d,e=[].slice,f=function(a,b){return function(){return a.apply(b,arguments)}},g={}.hasOwnProperty,h=function(a,b){function c(){this.constructor=a}for(var d in b)g.call(b,d)&&(a[d]=b[d]);return c.prototype=b.prototype,a.prototype=new c,a.__super__=b.prototype,a},i=[].indexOf||function(a){for(var b=0,c=this.length;c>b;b++)if(b in this&&this[b]===a)return b;return-1};b=window.Morris={},a=jQuery,b.EventEmitter=function(){function a(){}return a.prototype.on=function(a,b){return null==this.handlers&&(this.handlers={}),null==this.handlers[a]&&(this.handlers[a]=[]),this.handlers[a].push(b),this},a.prototype.fire=function(){var a,b,c,d,f,g,h;if(c=arguments[0],a=2<=arguments.length?e.call(arguments,1):[],null!=this.handlers&&null!=this.handlers[c]){for(g=this.handlers[c],h=[],d=0,f=g.length;f>d;d++)b=g[d],h.push(b.apply(null,a));return h}},a}(),b.commas=function(a){var b,c,d,e;return null!=a?(d=0>a?"-":"",b=Math.abs(a),c=Math.floor(b).toFixed(0),d+=c.replace(/(?=(?:\d{3})+$)(?!^)/g,","),e=b.toString(),e.length>c.length&&(d+=e.slice(c.length)),d):"-"},b.pad2=function(a){return(10>a?"0":"")+a},b.Grid=function(c){function d(b){this.hasToShow=f(this.hasToShow,this),this.resizeHandler=f(this.resizeHandler,this);var c=this;if(this.el=a("string"==typeof b.element?document.getElementById(b.element):b.element),null==this.el||0===this.el.length)throw new Error("Graph container element not found");"static"===this.el.css("position")&&this.el.css("position","relative"),this.options=a.extend({},this.gridDefaults,this.defaults||{},b),"string"==typeof this.options.units&&(this.options.postUnits=b.units),this.raphael=new Raphael(this.el[0]),this.elementWidth=null,this.elementHeight=null,this.dirty=!1,this.selectFrom=null,this.init&&this.init(),this.setData(this.options.data),this.el.bind("mousemove",function(a){var b,d,e,f,g;return d=c.el.offset(),g=a.pageX-d.left,c.selectFrom?(b=c.data[c.hitTest(Math.min(g,c.selectFrom))]._x,e=c.data[c.hitTest(Math.max(g,c.selectFrom))]._x,f=e-b,c.selectionRect.attr({x:b,width:f})):c.fire("hovermove",g,a.pageY-d.top)}),this.el.bind("mouseleave",function(){return c.selectFrom&&(c.selectionRect.hide(),c.selectFrom=null),c.fire("hoverout")}),this.el.bind("touchstart touchmove touchend",function(a){var b,d;return d=a.originalEvent.touches[0]||a.originalEvent.changedTouches[0],b=c.el.offset(),c.fire("hovermove",d.pageX-b.left,d.pageY-b.top)}),this.el.bind("click",function(a){var b;return b=c.el.offset(),c.fire("gridclick",a.pageX-b.left,a.pageY-b.top)}),this.options.rangeSelect&&(this.selectionRect=this.raphael.rect(0,0,0,this.el.innerHeight()).attr({fill:this.options.rangeSelectColor,stroke:!1}).toBack().hide(),this.el.bind("mousedown",function(a){var b;return b=c.el.offset(),c.startRange(a.pageX-b.left)}),this.el.bind("mouseup",function(a){var b;return b=c.el.offset(),c.endRange(a.pageX-b.left),c.fire("hovermove",a.pageX-b.left,a.pageY-b.top)})),this.options.resize&&a(window).bind("resize",function(){return null!=c.timeoutId&&window.clearTimeout(c.timeoutId),c.timeoutId=window.setTimeout(c.resizeHandler,100)}),this.el.css("-webkit-tap-highlight-color","rgba(0,0,0,0)"),this.postInit&&this.postInit()}return h(d,c),d.prototype.gridDefaults={dateFormat:null,axes:!0,grid:!0,gridLineColor:"#aaa",gridStrokeWidth:.5,gridTextColor:"#888",gridTextSize:12,gridTextFamily:"sans-serif",gridTextWeight:"normal",hideHover:!1,yLabelFormat:null,xLabelAngle:0,numLines:5,padding:25,parseTime:!0,postUnits:"",preUnits:"",ymax:"auto",ymin:"auto 0",goals:[],goalStrokeWidth:1,goalLineColors:["#666633","#999966","#cc6666","#663333"],events:[],eventStrokeWidth:1,eventLineColors:["#005a04","#ccffbb","#3a5f0b","#005502"],rangeSelect:null,rangeSelectColor:"#eef",resize:!1},d.prototype.setData=function(c,d){var e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y;if(null==d&&(d=!0),this.options.data=c,null==c||0===c.length)return this.data=[],this.raphael.clear(),void(null!=this.hover&&this.hover.hide());if(s=this.cumulative?0:null,t=this.cumulative?0:null,this.options.goals.length>0&&(k=Math.min.apply(Math,this.options.goals),j=Math.max.apply(Math,this.options.goals),t=null!=t?Math.min(t,k):k,s=null!=s?Math.max(s,j):j),this.data=function(){var a,d,e;for(e=[],i=a=0,d=c.length;d>a;i=++a)m=c[i],l={src:m},l.label=m[this.options.xkey],this.options.parseTime?(l.x=b.parseDate(l.label),this.options.dateFormat?l.label=this.options.dateFormat(l.x):"number"==typeof l.label&&(l.label=new Date(l.label).toString())):(l.x=i,this.options.xLabelFormat&&(l.label=this.options.xLabelFormat(l))),p=0,l.y=function(){var a,b,c,d;for(c=this.options.ykeys,d=[],h=a=0,b=c.length;b>a;h=++a)r=c[h],u=m[r],"string"==typeof u&&(u=parseFloat(u)),null!=u&&"number"!=typeof u&&(u=null),null!=u&&this.hasToShow(h)&&(this.cumulative?p+=u:null!=s?(s=Math.max(u,s),t=Math.min(u,t)):s=t=u),this.cumulative&&null!=p&&(s=Math.max(p,s),t=Math.min(p,t)),d.push(u);return d}.call(this),e.push(l);return e}.call(this),this.options.parseTime&&(this.data=this.data.sort(function(a,b){return(a.x>b.x)-(b.x>a.x)})),this.xmin=this.data[0].x,this.xmax=this.data[this.data.length-1].x,this.events=[],this.options.events.length>0){if(this.options.parseTime)for(x=this.options.events,v=0,w=x.length;w>v;v++)e=x[v],e instanceof Array?(g=e[0],o=e[1],this.events.push([b.parseDate(g),b.parseDate(o)])):this.events.push(b.parseDate(e));else this.events=this.options.events;f=a.map(this.events,function(a){return a}),this.xmax=Math.max(this.xmax,Math.max.apply(Math,f)),this.xmin=Math.min(this.xmin,Math.min.apply(Math,f))}return this.xmin===this.xmax&&(this.xmin-=1,this.xmax+=1),this.ymin=this.yboundary("min",t),this.ymax=this.yboundary("max",s),this.ymin===this.ymax&&(t&&(this.ymin-=1),this.ymax+=1),((y=this.options.axes)===!0||"both"===y||"y"===y||this.options.grid===!0)&&(this.options.ymax===this.gridDefaults.ymax&&this.options.ymin===this.gridDefaults.ymin?(this.grid=this.autoGridLines(this.ymin,this.ymax,this.options.numLines),this.ymin=Math.min(this.ymin,this.grid[0]),this.ymax=Math.max(this.ymax,this.grid[this.grid.length-1])):(n=(this.ymax-this.ymin)/(this.options.numLines-1),this.grid=function(){var a,b,c,d;for(d=[],q=a=b=this.ymin,c=this.ymax;n>0?c>=a:a>=c;q=a+=n)d.push(q);return d}.call(this))),this.dirty=!0,d?this.redraw():void 0},d.prototype.yboundary=function(a,b){var c,d;return c=this.options["y"+a],"string"==typeof c?"auto"===c.slice(0,4)?c.length>5?(d=parseInt(c.slice(5),10),null==b?d:Math[a](b,d)):null!=b?b:0:parseInt(c,10):c},d.prototype.autoGridLines=function(a,b,c){var d,e,f,g,h,i,j,k,l;return h=b-a,l=Math.floor(Math.log(h)/Math.log(10)),j=Math.pow(10,l),e=Math.floor(a/j)*j,d=Math.ceil(b/j)*j,i=(d-e)/(c-1),1===j&&i>1&&Math.ceil(i)!==i&&(i=Math.ceil(i),d=e+i*(c-1)),0>e&&d>0&&(e=Math.floor(a/i)*i,d=Math.ceil(b/i)*i),1>i?(g=Math.floor(Math.log(i)/Math.log(10)),f=function(){var a,b;for(b=[],k=a=e;i>0?d>=a:a>=d;k=a+=i)b.push(parseFloat(k.toFixed(1-g)));return b}()):f=function(){var a,b;for(b=[],k=a=e;i>0?d>=a:a>=d;k=a+=i)b.push(k);return b}(),f},d.prototype._calc=function(){var a,b,c,d,e,f,g,h,i;return f=this.el.width(),d=this.el.height(),(this.elementWidth!==f||this.elementHeight!==d||this.dirty)&&(this.elementWidth=f,this.elementHeight=d,this.dirty=!1,this.left=this.options.padding,this.right=this.elementWidth-this.options.padding,this.top=this.options.padding,this.bottom=this.elementHeight-this.options.padding,((h=this.options.axes)===!0||"both"===h||"y"===h)&&(g=function(){var a,b,d,e;for(d=this.grid,e=[],a=0,b=d.length;b>a;a++)c=d[a],e.push(this.measureText(this.yAxisFormat(c)).width);return e}.call(this),this.options.horizontal?this.bottom-=Math.max.apply(Math,g):this.left+=Math.max.apply(Math,g)),((i=this.options.axes)===!0||"both"===i||"x"===i)&&(a=this.options.horizontal?-90:-this.options.xLabelAngle,b=function(){var b,c,d;for(d=[],e=b=0,c=this.data.length;c>=0?c>b:b>c;e=c>=0?++b:--b)d.push(this.measureText(this.data[e].label,a).height);return d}.call(this),this.options.horizontal?this.left+=Math.max.apply(Math,b):this.bottom-=Math.max.apply(Math,b)),this.width=Math.max(1,this.right-this.left),this.height=Math.max(1,this.bottom-this.top),this.options.horizontal?(this.dx=this.height/(this.xmax-this.xmin),this.dy=this.width/(this.ymax-this.ymin),this.yStart=this.left,this.yEnd=this.right,this.xStart=this.top,this.xEnd=this.bottom,this.xSize=this.height,this.ySize=this.width):(this.dx=this.width/(this.xmax-this.xmin),this.dy=this.height/(this.ymax-this.ymin),this.yStart=this.bottom,this.yEnd=this.top,this.xStart=this.left,this.xEnd=this.right,this.xSize=this.width,this.ySize=this.height),this.calc)?this.calc():void 0},d.prototype.transY=function(a){return this.options.horizontal?this.left+(a-this.ymin)*this.dy:this.bottom-(a-this.ymin)*this.dy},d.prototype.transX=function(a){return 1===this.data.length?(this.xStart+this.xEnd)/2:this.xStart+(a-this.xmin)*this.dx},d.prototype.redraw=function(){return this.raphael.clear(),this._calc(),this.drawGrid(),this.drawGoals(),this.drawEvents(),this.draw?this.draw():void 0},d.prototype.measureText=function(a,b){var c,d;return null==b&&(b=0),d=this.raphael.text(100,100,a).attr("font-size",this.options.gridTextSize).attr("font-family",this.options.gridTextFamily).attr("font-weight",this.options.gridTextWeight).rotate(b),c=d.getBBox(),d.remove(),c},d.prototype.yAxisFormat=function(a){return this.yLabelFormat(a,0)},d.prototype.yLabelFormat=function(a,c){return"function"==typeof this.options.yLabelFormat?this.options.yLabelFormat(a,c):""+this.options.preUnits+b.commas(a)+this.options.postUnits},d.prototype.getYAxisLabelX=function(){return this.left-this.options.padding/2},d.prototype.drawGrid=function(){var a,b,c,d,e,f,g,h,i;if(this.options.grid!==!1||(f=this.options.axes)===!0||"both"===f||"y"===f){for(a=this.options.horizontal?this.getXAxisLabelY():this.getYAxisLabelX(),g=this.grid,i=[],d=0,e=g.length;e>d;d++)b=g[d],c=this.transY(b),((h=this.options.axes)===!0||"both"===h||"y"===h)&&(this.options.horizontal?this.drawXAxisLabel(c,a,this.yAxisFormat(b)):this.drawYAxisLabel(a,c,this.yAxisFormat(b))),this.options.grid?(c=Math.floor(c)+.5,i.push(this.options.horizontal?this.drawGridLine("M"+c+","+this.xStart+"V"+this.xEnd):this.drawGridLine("M"+this.xStart+","+c+"H"+this.xEnd))):i.push(void 0);return i}},d.prototype.drawGoals=function(){var a,b,c,d,e,f,g;for(f=this.options.goals,g=[],c=d=0,e=f.length;e>d;c=++d)b=f[c],a=this.options.goalLineColors[c%this.options.goalLineColors.length],g.push(this.drawGoal(b,a));return g},d.prototype.drawEvents=function(){var a,b,c,d,e,f,g;for(f=this.events,g=[],c=d=0,e=f.length;e>d;c=++d)b=f[c],a=this.options.eventLineColors[c%this.options.eventLineColors.length],g.push(this.drawEvent(b,a));return g},d.prototype.drawGoal=function(a,b){var c,d;return d=Math.floor(this.transY(a))+.5,c=this.options.horizontal?"M"+d+","+this.xStart+"V"+this.xEnd:"M"+this.xStart+","+d+"H"+this.xEnd,this.raphael.path(c).attr("stroke",b).attr("stroke-width",this.options.goalStrokeWidth)},d.prototype.drawEvent=function(a,b){var c,d,e,f;return a instanceof Array?(c=a[0],e=a[1],c=Math.floor(this.transX(c))+.5,e=Math.floor(this.transX(e))+.5,this.options.horizontal?this.raphael.rect(this.yStart,c,this.yEnd-this.yStart,e-c).attr({fill:b,stroke:!1}).toBack():this.raphael.rect(c,this.yEnd,e-c,this.yStart-this.yEnd).attr({fill:b,stroke:!1}).toBack()):(f=Math.floor(this.transX(a))+.5,d=this.options.horizontal?"M"+this.yStart+","+f+"H"+this.yEnd:"M"+f+","+this.yStart+"V"+this.yEnd,this.raphael.path(d).attr("stroke",b).attr("stroke-width",this.options.eventStrokeWidth))},d.prototype.drawYAxisLabel=function(a,b,c){return this.raphael.text(a,b,c).attr("font-size",this.options.gridTextSize).attr("font-family",this.options.gridTextFamily).attr("font-weight",this.options.gridTextWeight).attr("fill",this.options.gridTextColor).attr("text-anchor","end")},d.prototype.drawGridLine=function(a){return this.raphael.path(a).attr("stroke",this.options.gridLineColor).attr("stroke-width",this.options.gridStrokeWidth)},d.prototype.startRange=function(a){return this.hover.hide(),this.selectFrom=a,this.selectionRect.attr({x:a,width:0}).show()},d.prototype.endRange=function(a){var b,c;return this.selectFrom?(c=Math.min(this.selectFrom,a),b=Math.max(this.selectFrom,a),this.options.rangeSelect.call(this.el,{start:this.data[this.hitTest(c)].x,end:this.data[this.hitTest(b)].x}),this.selectFrom=null):void 0},d.prototype.resizeHandler=function(){return this.timeoutId=null,this.raphael.setSize(this.el.width(),this.el.height()),this.redraw()},d.prototype.hasToShow=function(a){return this.options.shown===!0||this.options.shown[a]===!0},d}(b.EventEmitter),b.parseDate=function(a){var b,c,d,e,f,g,h,i,j,k,l;return"number"==typeof a?a:(c=a.match(/^(\d+) Q(\d)$/),e=a.match(/^(\d+)-(\d+)$/),f=a.match(/^(\d+)-(\d+)-(\d+)$/),h=a.match(/^(\d+) W(\d+)$/),i=a.match(/^(\d+)-(\d+)-(\d+)[ T](\d+):(\d+)(Z|([+-])(\d\d):?(\d\d))?$/),j=a.match(/^(\d+)-(\d+)-(\d+)[ T](\d+):(\d+):(\d+(\.\d+)?)(Z|([+-])(\d\d):?(\d\d))?$/),c?new Date(parseInt(c[1],10),3*parseInt(c[2],10)-1,1).getTime():e?new Date(parseInt(e[1],10),parseInt(e[2],10)-1,1).getTime():f?new Date(parseInt(f[1],10),parseInt(f[2],10)-1,parseInt(f[3],10)).getTime():h?(k=new Date(parseInt(h[1],10),0,1),4!==k.getDay()&&k.setMonth(0,1+(4-k.getDay()+7)%7),k.getTime()+6048e5*parseInt(h[2],10)):i?i[6]?(g=0,"Z"!==i[6]&&(g=60*parseInt(i[8],10)+parseInt(i[9],10),"+"===i[7]&&(g=0-g)),Date.UTC(parseInt(i[1],10),parseInt(i[2],10)-1,parseInt(i[3],10),parseInt(i[4],10),parseInt(i[5],10)+g)):new Date(parseInt(i[1],10),parseInt(i[2],10)-1,parseInt(i[3],10),parseInt(i[4],10),parseInt(i[5],10)).getTime():j?(l=parseFloat(j[6]),b=Math.floor(l),d=Math.round(1e3*(l-b)),j[8]?(g=0,"Z"!==j[8]&&(g=60*parseInt(j[10],10)+parseInt(j[11],10),"+"===j[9]&&(g=0-g)),Date.UTC(parseInt(j[1],10),parseInt(j[2],10)-1,parseInt(j[3],10),parseInt(j[4],10),parseInt(j[5],10)+g,b,d)):new Date(parseInt(j[1],10),parseInt(j[2],10)-1,parseInt(j[3],10),parseInt(j[4],10),parseInt(j[5],10),b,d).getTime()):new Date(parseInt(a,10),0,1).getTime())},b.Hover=function(){function c(c){null==c&&(c={}),this.options=a.extend({},b.Hover.defaults,c),this.el=a("<div class='"+this.options["class"]+"'></div>"),this.el.hide(),this.options.parent.append(this.el)}return c.defaults={"class":"morris-hover morris-default-style"},c.prototype.update=function(a,b,c,d){return a?(this.html(a),this.show(),this.moveTo(b,c,d)):this.hide()},c.prototype.html=function(a){return this.el.html(a)},c.prototype.moveTo=function(a,b,c){var d,e,f,g,h,i;return h=this.options.parent.innerWidth(),g=this.options.parent.innerHeight(),e=this.el.outerWidth(),d=this.el.outerHeight(),f=Math.min(Math.max(0,a-e/2),h-e),null!=b?c===!0?(i=b-d/2,0>i&&(i=0)):(i=b-d-10,0>i&&(i=b+10,i+d>g&&(i=g/2-d/2))):i=g/2-d/2,this.el.css({left:f+"px",top:parseInt(i)+"px"})},c.prototype.show=function(){return this.el.show()},c.prototype.hide=function(){return this.el.hide()},c}(),b.Line=function(c){function d(a){return this.hilight=f(this.hilight,this),this.onHoverOut=f(this.onHoverOut,this),this.onHoverMove=f(this.onHoverMove,this),this.onGridClick=f(this.onGridClick,this),this instanceof b.Line?void d.__super__.constructor.call(this,a):new b.Line(a)}return h(d,c),d.prototype.init=function(){return"always"!==this.options.hideHover?(this.hover=new b.Hover({parent:this.el}),this.on("hovermove",this.onHoverMove),this.on("hoverout",this.onHoverOut),this.on("gridclick",this.onGridClick)):void 0},d.prototype.defaults={lineWidth:3,pointSize:4,lineColors:["#0b62a4","#7A92A3","#4da74d","#afd8f8","#edc240","#cb4b4b","#9440ed"],pointStrokeWidths:[1],pointStrokeColors:["#ffffff"],pointFillColors:[],smooth:!0,shown:!0,xLabels:"auto",xLabelFormat:null,xLabelMargin:24,hideHover:!1,trendLine:!1,trendLineWidth:2,trendLineColors:["#689bc3","#a2b3bf","#64b764"]},d.prototype.calc=function(){return this.calcPoints(),this.generatePaths()},d.prototype.calcPoints=function(){var a,b,c,d,e,f;for(e=this.data,f=[],c=0,d=e.length;d>c;c++)a=e[c],a._x=this.transX(a.x),a._y=function(){var c,d,e,f;for(e=a.y,f=[],c=0,d=e.length;d>c;c++)b=e[c],f.push(null!=b?this.transY(b):b);return f}.call(this),f.push(a._ymax=Math.min.apply(Math,[this.bottom].concat(function(){var c,d,e,f;for(e=a._y,f=[],c=0,d=e.length;d>c;c++)b=e[c],null!=b&&f.push(b);return f}())));return f},d.prototype.hitTest=function(a){var b,c,d,e,f;if(0===this.data.length)return null;for(f=this.data.slice(1),b=d=0,e=f.length;e>d&&(c=f[b],!(a<(c._x+this.data[b]._x)/2));b=++d);return b},d.prototype.onGridClick=function(a,b){var c;return c=this.hitTest(a),this.fire("click",c,this.data[c].src,a,b)},d.prototype.onHoverMove=function(a){var b;return b=this.hitTest(a),this.displayHoverForRow(b)},d.prototype.onHoverOut=function(){return this.options.hideHover!==!1?this.displayHoverForRow(null):void 0},d.prototype.displayHoverForRow=function(a){var b;return null!=a?((b=this.hover).update.apply(b,this.hoverContentForRow(a)),this.hilight(a)):(this.hover.hide(),this.hilight())},d.prototype.hoverContentForRow=function(b){var c,d,e,f,g,h,i;for(e=this.data[b],c=a("<div class='morris-hover-row-label'>").text(e.label),c=c.prop("outerHTML"),i=e.y,d=g=0,h=i.length;h>g;d=++g)f=i[d],this.options.labels[d]!==!1&&(c+="<div class='morris-hover-point' style='color: "+this.colorFor(e,d,"label")+"'>\n  "+this.options.labels[d]+":\n  "+this.yLabelFormat(f,d)+"\n</div>");return"function"==typeof this.options.hoverCallback&&(c=this.options.hoverCallback(b,this.options,c,e.src)),[c,e._x,e._ymax]},d.prototype.generatePaths=function(){var a,c,d,e;return this.paths=function(){var f,g,h,j;for(j=[],c=f=0,g=this.options.ykeys.length;g>=0?g>f:f>g;c=g>=0?++f:--f)e="boolean"==typeof this.options.smooth?this.options.smooth:(h=this.options.ykeys[c],i.call(this.options.smooth,h)>=0),a=function(){var a,b,e,f;for(e=this.data,f=[],a=0,b=e.length;b>a;a++)d=e[a],void 0!==d._y[c]&&f.push({x:d._x,y:d._y[c]});return f}.call(this),j.push(a.length>1?b.Line.createPath(a,e,this.bottom):null);return j}.call(this)},d.prototype.draw=function(){var a;return((a=this.options.axes)===!0||"both"===a||"x"===a)&&this.drawXAxis(),this.drawSeries(),this.options.hideHover===!1?this.displayHoverForRow(this.data.length-1):void 0},d.prototype.drawXAxis=function(){var a,c,d,e,f,g,h,i,j,k,l=this;for(h=this.bottom+this.options.padding/2,f=null,e=null,a=function(a,b){var c,d,g,i,j;return c=l.drawXAxisLabel(l.transX(b),h,a),j=c.getBBox(),c.transform("r"+-l.options.xLabelAngle),d=c.getBBox(),c.transform("t0,"+d.height/2+"..."),0!==l.options.xLabelAngle&&(i=-.5*j.width*Math.cos(l.options.xLabelAngle*Math.PI/180),c.transform("t"+i+",0...")),d=c.getBBox(),(null==f||f>=d.x+d.width||null!=e&&e>=d.x)&&d.x>=0&&d.x+d.width<l.el.width()?(0!==l.options.xLabelAngle&&(g=1.25*l.options.gridTextSize/Math.sin(l.options.xLabelAngle*Math.PI/180),e=d.x-g),f=d.x-l.options.xLabelMargin):c.remove()},d=this.options.parseTime?1===this.data.length&&"auto"===this.options.xLabels?[[this.data[0].label,this.data[0].x]]:b.labelSeries(this.xmin,this.xmax,this.width,this.options.xLabels,this.options.xLabelFormat):function(){var a,b,c,d;for(c=this.data,d=[],a=0,b=c.length;b>a;a++)g=c[a],d.push([g.label,g.x]);return d}.call(this),d.reverse(),k=[],i=0,j=d.length;j>i;i++)c=d[i],k.push(a(c[0],c[1]));return k},d.prototype.drawSeries=function(){var a,b,c,d,e,f;for(this.seriesPoints=[],a=b=d=this.options.ykeys.length-1;0>=d?0>=b:b>=0;a=0>=d?++b:--b)this.hasToShow(a)&&((this.options.trendLine!==!1&&this.options.trendLine===!0||this.options.trendLine[a]===!0)&&this._drawTrendLine(a),this._drawLineFor(a));for(f=[],a=c=e=this.options.ykeys.length-1;0>=e?0>=c:c>=0;a=0>=e?++c:--c)f.push(this.hasToShow(a)?this._drawPointFor(a):void 0);return f},d.prototype._drawPointFor=function(a){var b,c,d,e,f,g;for(this.seriesPoints[a]=[],f=this.data,g=[],d=0,e=f.length;e>d;d++)c=f[d],b=null,null!=c._y[a]&&(b=this.drawLinePoint(c._x,c._y[a],this.colorFor(c,a,"point"),a)),g.push(this.seriesPoints[a].push(b));return g},d.prototype._drawLineFor=function(a){var b;return b=this.paths[a],null!==b?this.drawLinePath(b,this.colorFor(null,a,"line"),a):void 0},d.prototype._drawTrendLine=function(a){var c,d,e,f,g,h,i,j,k,l,m,n,o,p,q;for(h=0,k=0,i=0,j=0,f=0,q=this.data,o=0,p=q.length;p>o;o++)l=q[o],m=l.x,n=l.y[a],void 0!==n&&(f+=1,h+=m,k+=n,i+=m*m,j+=m*n);return c=(f*j-h*k)/(f*i-h*h),d=k/f-c*h/f,e=[{},{}],e[0].x=this.transX(this.data[0].x),e[0].y=this.transY(this.data[0].x*c+d),e[1].x=this.transX(this.data[this.data.length-1].x),e[1].y=this.transY(this.data[this.data.length-1].x*c+d),g=b.Line.createPath(e,!1,this.bottom),g=this.raphael.path(g).attr("stroke",this.colorFor(null,a,"trendLine")).attr("stroke-width",this.options.trendLineWidth)},d.createPath=function(a,c,d){var e,f,g,h,i,j,k,l,m,n,o,p,q,r;for(k="",c&&(g=b.Line.gradients(a)),l={y:null},h=q=0,r=a.length;r>q;h=++q)e=a[h],null!=e.y&&(null!=l.y?c?(f=g[h],j=g[h-1],i=(e.x-l.x)/4,m=l.x+i,o=Math.min(d,l.y+i*j),n=e.x-i,p=Math.min(d,e.y-i*f),k+="C"+m+","+o+","+n+","+p+","+e.x+","+e.y):k+="L"+e.x+","+e.y:c&&null==g[h]||(k+="M"+e.x+","+e.y)),l=e;return k},d.gradients=function(a){var b,c,d,e,f,g,h,i;for(c=function(a,b){return(a.y-b.y)/(a.x-b.x)},i=[],d=g=0,h=a.length;h>g;d=++g)b=a[d],null!=b.y?(e=a[d+1]||{y:null},f=a[d-1]||{y:null},i.push(null!=f.y&&null!=e.y?c(f,e):null!=f.y?c(f,b):null!=e.y?c(b,e):null)):i.push(null);return i},d.prototype.hilight=function(a){var b,c,d,e,f;if(null!==this.prevHilight&&this.prevHilight!==a)for(b=c=0,e=this.seriesPoints.length-1;e>=0?e>=c:c>=e;b=e>=0?++c:--c)this.seriesPoints[b][this.prevHilight]&&this.seriesPoints[b][this.prevHilight].animate(this.pointShrinkSeries(b));if(null!==a&&this.prevHilight!==a)for(b=d=0,f=this.seriesPoints.length-1;f>=0?f>=d:d>=f;b=f>=0?++d:--d)this.seriesPoints[b][a]&&this.seriesPoints[b][a].animate(this.pointGrowSeries(b));return this.prevHilight=a},d.prototype.colorFor=function(a,b,c){return"function"==typeof this.options.lineColors?this.options.lineColors.call(this,a,b,c):"point"===c?this.options.pointFillColors[b%this.options.pointFillColors.length]||this.options.lineColors[b%this.options.lineColors.length]:"line"===c?this.options.lineColors[b%this.options.lineColors.length]:this.options.trendLineColors[b%this.options.trendLineColors.length]},d.prototype.drawXAxisLabel=function(a,b,c){return this.raphael.text(a,b,c).attr("font-size",this.options.gridTextSize).attr("font-family",this.options.gridTextFamily).attr("font-weight",this.options.gridTextWeight).attr("fill",this.options.gridTextColor)},d.prototype.drawLinePath=function(a,b,c){return this.raphael.path(a).attr("stroke",b).attr("stroke-width",this.lineWidthForSeries(c))},d.prototype.drawLinePoint=function(a,b,c,d){return this.raphael.circle(a,b,this.pointSizeForSeries(d)).attr("fill",c).attr("stroke-width",this.pointStrokeWidthForSeries(d)).attr("stroke",this.pointStrokeColorForSeries(d))},d.prototype.pointStrokeWidthForSeries=function(a){return this.options.pointStrokeWidths[a%this.options.pointStrokeWidths.length]},d.prototype.pointStrokeColorForSeries=function(a){return this.options.pointStrokeColors[a%this.options.pointStrokeColors.length]},d.prototype.lineWidthForSeries=function(a){return this.options.lineWidth instanceof Array?this.options.lineWidth[a%this.options.lineWidth.length]:this.options.lineWidth},d.prototype.pointSizeForSeries=function(a){return this.options.pointSize instanceof Array?this.options.pointSize[a%this.options.pointSize.length]:this.options.pointSize},d.prototype.pointGrowSeries=function(a){return 0!==this.pointSizeForSeries(a)?Raphael.animation({r:this.pointSizeForSeries(a)+3},25,"linear"):void 0},d.prototype.pointShrinkSeries=function(a){return Raphael.animation({r:this.pointSizeForSeries(a)},25,"linear")},d}(b.Grid),b.labelSeries=function(c,d,e,f,g){var h,i,j,k,l,m,n,o,p,q,r;if(j=200*(d-c)/e,i=new Date(c),n=b.LABEL_SPECS[f],void 0===n)for(r=b.AUTO_LABEL_ORDER,p=0,q=r.length;q>p;p++)if(k=r[p],m=b.LABEL_SPECS[k],j>=m.span){n=m;break}for(void 0===n&&(n=b.LABEL_SPECS.second),g&&(n=a.extend({},n,{fmt:g})),h=n.start(i),l=[];(o=h.getTime())<=d;)o>=c&&l.push([n.fmt(h),o]),n.incr(h);return l},c=function(a){return{span:60*a*1e3,start:function(a){return new Date(a.getFullYear(),a.getMonth(),a.getDate(),a.getHours())},fmt:function(a){return""+b.pad2(a.getHours())+":"+b.pad2(a.getMinutes())},incr:function(b){return b.setUTCMinutes(b.getUTCMinutes()+a)}}},d=function(a){return{span:1e3*a,start:function(a){return new Date(a.getFullYear(),a.getMonth(),a.getDate(),a.getHours(),a.getMinutes())},fmt:function(a){return""+b.pad2(a.getHours())+":"+b.pad2(a.getMinutes())+":"+b.pad2(a.getSeconds())},incr:function(b){return b.setUTCSeconds(b.getUTCSeconds()+a)}}},b.LABEL_SPECS={decade:{span:1728e8,start:function(a){return new Date(a.getFullYear()-a.getFullYear()%10,0,1)},fmt:function(a){return""+a.getFullYear()},incr:function(a){return a.setFullYear(a.getFullYear()+10)}},year:{span:1728e7,start:function(a){return new Date(a.getFullYear(),0,1)},fmt:function(a){return""+a.getFullYear()},incr:function(a){return a.setFullYear(a.getFullYear()+1)}},month:{span:24192e5,start:function(a){return new Date(a.getFullYear(),a.getMonth(),1)},fmt:function(a){return""+a.getFullYear()+"-"+b.pad2(a.getMonth()+1)},incr:function(a){return a.setMonth(a.getMonth()+1)}},week:{span:6048e5,start:function(a){return new Date(a.getFullYear(),a.getMonth(),a.getDate())},fmt:function(a){return""+a.getFullYear()+"-"+b.pad2(a.getMonth()+1)+"-"+b.pad2(a.getDate())},incr:function(a){return a.setDate(a.getDate()+7)}},day:{span:864e5,start:function(a){return new Date(a.getFullYear(),a.getMonth(),a.getDate())},fmt:function(a){return""+a.getFullYear()+"-"+b.pad2(a.getMonth()+1)+"-"+b.pad2(a.getDate())},incr:function(a){return a.setDate(a.getDate()+1)}},hour:c(60),"30min":c(30),"15min":c(15),"10min":c(10),"5min":c(5),minute:c(1),"30sec":d(30),"15sec":d(15),"10sec":d(10),"5sec":d(5),second:d(1)},b.AUTO_LABEL_ORDER=["decade","year","month","week","day","hour","30min","15min","10min","5min","minute","30sec","15sec","10sec","5sec","second"],b.Area=function(c){function d(c){var f;return this instanceof b.Area?(f=a.extend({},e,c),this.cumulative=!f.behaveLikeLine,"auto"===f.fillOpacity&&(f.fillOpacity=f.behaveLikeLine?.8:1),void d.__super__.constructor.call(this,f)):new b.Area(c)}var e;return h(d,c),e={fillOpacity:"auto",behaveLikeLine:!1},d.prototype.calcPoints=function(){var a,b,c,d,e,f,g;for(f=this.data,g=[],d=0,e=f.length;e>d;d++)a=f[d],a._x=this.transX(a.x),b=0,a._y=function(){var d,e,f,g;for(f=a.y,g=[],d=0,e=f.length;e>d;d++)c=f[d],this.options.behaveLikeLine?g.push(this.transY(c)):(b+=c||0,g.push(this.transY(b)));return g}.call(this),g.push(a._ymax=Math.max.apply(Math,a._y));return g},d.prototype.drawSeries=function(){var a,b,c,d,e,f,g,h;for(this.seriesPoints=[],b=this.options.behaveLikeLine?function(){f=[];for(var a=0,b=this.options.ykeys.length-1;b>=0?b>=a:a>=b;b>=0?a++:a--)f.push(a);return f}.apply(this):function(){g=[];for(var a=e=this.options.ykeys.length-1;0>=e?0>=a:a>=0;0>=e?a++:a--)g.push(a);return g}.apply(this),h=[],c=0,d=b.length;d>c;c++)a=b[c],this._drawFillFor(a),this._drawLineFor(a),h.push(this._drawPointFor(a));return h},d.prototype._drawFillFor=function(a){var b;return b=this.paths[a],null!==b?(b+="L"+this.transX(this.xmax)+","+this.bottom+"L"+this.transX(this.xmin)+","+this.bottom+"Z",this.drawFilledPath(b,this.fillForSeries(a))):void 0},d.prototype.fillForSeries=function(a){var b;return b=Raphael.rgb2hsl(this.colorFor(this.data[a],a,"line")),Raphael.hsl(b.h,this.options.behaveLikeLine?.9*b.s:.75*b.s,Math.min(.98,this.options.behaveLikeLine?1.2*b.l:1.25*b.l))},d.prototype.drawFilledPath=function(a,b){return this.raphael.path(a).attr("fill",b).attr("fill-opacity",this.options.fillOpacity).attr("stroke","none")},d}(b.Line),b.Bar=function(c){function d(c){return this.onHoverOut=f(this.onHoverOut,this),this.onHoverMove=f(this.onHoverMove,this),this.onGridClick=f(this.onGridClick,this),this instanceof b.Bar?void d.__super__.constructor.call(this,a.extend({},c,{parseTime:!1})):new b.Bar(c)}return h(d,c),d.prototype.init=function(){return this.cumulative=this.options.stacked,"always"!==this.options.hideHover?(this.hover=new b.Hover({parent:this.el}),this.on("hovermove",this.onHoverMove),this.on("hoverout",this.onHoverOut),this.on("gridclick",this.onGridClick)):void 0},d.prototype.defaults={barSizeRatio:.75,barGap:3,barColors:["#0b62a4","#7a92a3","#4da74d","#afd8f8","#edc240","#cb4b4b","#9440ed"],barOpacity:1,barRadius:[0,0,0,0],xLabelMargin:50,horizontal:!1,shown:!0},d.prototype.calc=function(){var a;return this.calcBars(),this.options.hideHover===!1?(a=this.hover).update.apply(a,this.hoverContentForRow(this.data.length-1)):void 0},d.prototype.calcBars=function(){var a,b,c,d,e,f,g;for(f=this.data,g=[],a=d=0,e=f.length;e>d;a=++d)b=f[a],b._x=this.xStart+this.xSize*(a+.5)/this.data.length,g.push(b._y=function(){var a,d,e,f;for(e=b.y,f=[],a=0,d=e.length;d>a;a++)c=e[a],f.push(null!=c?this.transY(c):null);return f}.call(this));return g},d.prototype.draw=function(){var a;return((a=this.options.axes)===!0||"both"===a||"x"===a)&&this.drawXAxis(),this.drawSeries()},d.prototype.drawXAxis=function(){var a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q;for(b=this.options.horizontal?this.getYAxisLabelX():this.getXAxisLabelY(),j=null,i=null,q=[],c=o=0,p=this.data.length;p>=0?p>o:o>p;c=p>=0?++o:--o)k=this.data[this.data.length-1-c],d=this.options.horizontal?this.drawYAxisLabel(b,k._x-.5*this.options.gridTextSize,k.label):this.drawXAxisLabel(k._x,b,k.label),a=this.options.horizontal?0:this.options.xLabelAngle,n=d.getBBox(),d.transform("r"+-a),e=d.getBBox(),d.transform("t0,"+e.height/2+"..."),0!==a&&(h=-.5*n.width*Math.cos(a*Math.PI/180),d.transform("t"+h+",0...")),this.options.horizontal?(m=e.y,l=e.height,g=this.el.height()):(m=e.x,l=e.width,g=this.el.width()),(null==j||j>=m+l||null!=i&&i>=m)&&m>=0&&g>m+l?(0!==a&&(f=1.25*this.options.gridTextSize/Math.sin(a*Math.PI/180),i=m-f),q.push(this.options.horizontal?j=m:j=m-this.options.xLabelMargin)):q.push(d.remove());return q},d.prototype.getXAxisLabelY=function(){return this.bottom+(this.options.xAxisLabelTopPadding||this.options.padding/2)},d.prototype.drawSeries=function(){var a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r;if(c=this.xSize/this.options.data.length,this.options.stacked)i=1;else for(i=0,d=q=0,r=this.options.ykeys.length-1;r>=0?r>=q:q>=r;d=r>=0?++q:--q)this.hasToShow(d)&&(i+=1);return a=(c*this.options.barSizeRatio-this.options.barGap*(i-1))/i,this.options.barSize&&(a=Math.min(a,this.options.barSize)),m=c-a*i-this.options.barGap*(i-1),h=m/2,p=this.ymin<=0&&this.ymax>=0?this.transY(0):null,this.bars=function(){var d,i,m,q;for(m=this.data,q=[],e=d=0,i=m.length;i>d;e=++d)j=m[e],f=0,q.push(function(){var d,i,m,q;for(m=j._y,q=[],k=d=0,i=m.length;i>d;k=++d)o=m[k],this.hasToShow(k)&&(null!==o?(p?(n=Math.min(o,p),b=Math.max(o,p)):(n=o,b=this.bottom),g=this.xStart+e*c+h,this.options.stacked||(g+=k*(a+this.options.barGap)),l=b-n,this.options.verticalGridCondition&&this.options.verticalGridCondition(j.x)&&(this.options.horizontal?this.drawBar(this.yStart,this.xStart+e*c,this.ySize,c,this.options.verticalGridColor,this.options.verticalGridOpacity,this.options.barRadius):this.drawBar(this.xStart+e*c,this.yEnd,c,this.ySize,this.options.verticalGridColor,this.options.verticalGridOpacity,this.options.barRadius)),this.options.stacked&&(n-=f),this.options.horizontal?(this.drawBar(n,g,l,a,this.colorFor(j,k,"bar"),this.options.barOpacity,this.options.barRadius),q.push(f-=l)):(this.drawBar(g,n,a,l,this.colorFor(j,k,"bar"),this.options.barOpacity,this.options.barRadius),q.push(f+=l))):q.push(null));return q}.call(this));return q}.call(this)},d.prototype.colorFor=function(a,b,c){var d,e;return"function"==typeof this.options.barColors?(d={x:a.x,y:a.y[b],label:a.label},e={index:b,key:this.options.ykeys[b],label:this.options.labels[b]},this.options.barColors.call(this,d,e,c)):this.options.barColors[b%this.options.barColors.length]},d.prototype.hitTest=function(a,b){var c;return 0===this.data.length?null:(c=this.options.horizontal?b:a,c=Math.max(Math.min(c,this.xEnd),this.xStart),Math.min(this.data.length-1,Math.floor((c-this.xStart)/(this.xSize/this.data.length))))
-},d.prototype.onGridClick=function(a,b){var c;return c=this.hitTest(a,b),this.fire("click",c,this.data[c].src,a,b)},d.prototype.onHoverMove=function(a,b){var c,d;return c=this.hitTest(a,b),(d=this.hover).update.apply(d,this.hoverContentForRow(c))},d.prototype.onHoverOut=function(){return this.options.hideHover!==!1?this.hover.hide():void 0},d.prototype.hoverContentForRow=function(b){var c,d,e,f,g,h,i,j;for(e=this.data[b],c=a("<div class='morris-hover-row-label'>").text(e.label),c=c.prop("outerHTML"),j=e.y,d=h=0,i=j.length;i>h;d=++h)g=j[d],this.options.labels[d]!==!1&&(c+="<div class='morris-hover-point' style='color: "+this.colorFor(e,d,"label")+"'>\n  "+this.options.labels[d]+":\n  "+this.yLabelFormat(g,d)+"\n</div>");return"function"==typeof this.options.hoverCallback&&(c=this.options.hoverCallback(b,this.options,c,e.src)),this.options.horizontal?(f=this.left+.5*this.width,g=this.top+(b+.5)*this.height/this.data.length,[c,f,g,!0]):(f=this.left+(b+.5)*this.width/this.data.length,[c,f])},d.prototype.drawXAxisLabel=function(a,b,c){var d;return d=this.raphael.text(a,b,c).attr("font-size",this.options.gridTextSize).attr("font-family",this.options.gridTextFamily).attr("font-weight",this.options.gridTextWeight).attr("fill",this.options.gridTextColor)},d.prototype.drawBar=function(a,b,c,d,e,f,g){var h,i;return h=Math.max.apply(Math,g),i=0===h||h>d?this.raphael.rect(a,b,c,d):this.raphael.path(this.roundedRect(a,b,c,d,g)),i.attr("fill",e).attr("fill-opacity",f).attr("stroke","none")},d.prototype.roundedRect=function(a,b,c,d,e){return null==e&&(e=[0,0,0,0]),["M",a,e[0]+b,"Q",a,b,a+e[0],b,"L",a+c-e[1],b,"Q",a+c,b,a+c,b+e[1],"L",a+c,b+d-e[2],"Q",a+c,b+d,a+c-e[2],b+d,"L",a+e[3],b+d,"Q",a,b+d,a,b+d-e[3],"Z"]},d}(b.Grid),b.Donut=function(c){function d(c){this.resizeHandler=f(this.resizeHandler,this),this.select=f(this.select,this),this.click=f(this.click,this);var d=this;if(!(this instanceof b.Donut))return new b.Donut(c);if(this.options=a.extend({},this.defaults,c),this.el=a("string"==typeof c.element?document.getElementById(c.element):c.element),null===this.el||0===this.el.length)throw new Error("Graph placeholder not found.");void 0!==c.data&&0!==c.data.length&&(this.raphael=new Raphael(this.el[0]),this.options.resize&&a(window).bind("resize",function(){return null!=d.timeoutId&&window.clearTimeout(d.timeoutId),d.timeoutId=window.setTimeout(d.resizeHandler,100)}),this.setData(c.data))}return h(d,c),d.prototype.defaults={colors:["#0B62A4","#3980B5","#679DC6","#95BBD7","#B0CCE1","#095791","#095085","#083E67","#052C48","#042135"],backgroundColor:"#FFFFFF",labelColor:"#000000",formatter:b.commas,resize:!1},d.prototype.redraw=function(){var a,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x;for(this.raphael.clear(),c=this.el.width()/2,d=this.el.height()/2,n=(Math.min(c,d)-10)/3,l=0,u=this.values,o=0,r=u.length;r>o;o++)m=u[o],l+=m;for(i=5/(2*n),a=1.9999*Math.PI-i*this.data.length,g=0,f=0,this.segments=[],v=this.values,e=p=0,s=v.length;s>p;e=++p)m=v[e],j=g+i+a*(m/l),k=new b.DonutSegment(c,d,2*n,n,g,j,this.data[e].color||this.options.colors[f%this.options.colors.length],this.options.backgroundColor,f,this.raphael),k.render(),this.segments.push(k),k.on("hover",this.select),k.on("click",this.click),g=j,f+=1;for(this.text1=this.drawEmptyDonutLabel(c,d-10,this.options.labelColor,15,800),this.text2=this.drawEmptyDonutLabel(c,d+10,this.options.labelColor,14),h=Math.max.apply(Math,this.values),f=0,w=this.values,x=[],q=0,t=w.length;t>q;q++){if(m=w[q],m===h){this.select(f);break}x.push(f+=1)}return x},d.prototype.setData=function(a){var b;return this.data=a,this.values=function(){var a,c,d,e;for(d=this.data,e=[],a=0,c=d.length;c>a;a++)b=d[a],e.push(parseFloat(b.value));return e}.call(this),this.redraw()},d.prototype.click=function(a){return this.fire("click",a,this.data[a])},d.prototype.select=function(a){var b,c,d,e,f,g;for(g=this.segments,e=0,f=g.length;f>e;e++)c=g[e],c.deselect();return d=this.segments[a],d.select(),b=this.data[a],this.setLabels(b.label,this.options.formatter(b.value,b))},d.prototype.setLabels=function(a,b){var c,d,e,f,g,h,i,j;return c=2*(Math.min(this.el.width()/2,this.el.height()/2)-10)/3,f=1.8*c,e=c/2,d=c/3,this.text1.attr({text:a,transform:""}),g=this.text1.getBBox(),h=Math.min(f/g.width,e/g.height),this.text1.attr({transform:"S"+h+","+h+","+(g.x+g.width/2)+","+(g.y+g.height)}),this.text2.attr({text:b,transform:""}),i=this.text2.getBBox(),j=Math.min(f/i.width,d/i.height),this.text2.attr({transform:"S"+j+","+j+","+(i.x+i.width/2)+","+i.y})},d.prototype.drawEmptyDonutLabel=function(a,b,c,d,e){var f;return f=this.raphael.text(a,b,"").attr("font-size",d).attr("fill",c),null!=e&&f.attr("font-weight",e),f},d.prototype.resizeHandler=function(){return this.timeoutId=null,this.raphael.setSize(this.el.width(),this.el.height()),this.redraw()},d}(b.EventEmitter),b.DonutSegment=function(a){function b(a,b,c,d,e,g,h,i,j,k){this.cx=a,this.cy=b,this.inner=c,this.outer=d,this.color=h,this.backgroundColor=i,this.index=j,this.raphael=k,this.deselect=f(this.deselect,this),this.select=f(this.select,this),this.sin_p0=Math.sin(e),this.cos_p0=Math.cos(e),this.sin_p1=Math.sin(g),this.cos_p1=Math.cos(g),this.is_long=g-e>Math.PI?1:0,this.path=this.calcSegment(this.inner+3,this.inner+this.outer-5),this.selectedPath=this.calcSegment(this.inner+3,this.inner+this.outer),this.hilight=this.calcArc(this.inner)}return h(b,a),b.prototype.calcArcPoints=function(a){return[this.cx+a*this.sin_p0,this.cy+a*this.cos_p0,this.cx+a*this.sin_p1,this.cy+a*this.cos_p1]},b.prototype.calcSegment=function(a,b){var c,d,e,f,g,h,i,j,k,l;return k=this.calcArcPoints(a),c=k[0],e=k[1],d=k[2],f=k[3],l=this.calcArcPoints(b),g=l[0],i=l[1],h=l[2],j=l[3],"M"+c+","+e+("A"+a+","+a+",0,"+this.is_long+",0,"+d+","+f)+("L"+h+","+j)+("A"+b+","+b+",0,"+this.is_long+",1,"+g+","+i)+"Z"},b.prototype.calcArc=function(a){var b,c,d,e,f;return f=this.calcArcPoints(a),b=f[0],d=f[1],c=f[2],e=f[3],"M"+b+","+d+("A"+a+","+a+",0,"+this.is_long+",0,"+c+","+e)},b.prototype.render=function(){var a=this;return this.arc=this.drawDonutArc(this.hilight,this.color),this.seg=this.drawDonutSegment(this.path,this.color,this.backgroundColor,function(){return a.fire("hover",a.index)},function(){return a.fire("click",a.index)})},b.prototype.drawDonutArc=function(a,b){return this.raphael.path(a).attr({stroke:b,"stroke-width":2,opacity:0})},b.prototype.drawDonutSegment=function(a,b,c,d,e){return this.raphael.path(a).attr({fill:b,stroke:c,"stroke-width":3}).hover(d).click(e)},b.prototype.select=function(){return this.selected?void 0:(this.seg.animate({path:this.selectedPath},150,"<>"),this.arc.animate({opacity:1},150,"<>"),this.selected=!0)},b.prototype.deselect=function(){return this.selected?(this.seg.animate({path:this.path},150,"<>"),this.arc.animate({opacity:0},150,"<>"),this.selected=!1):void 0},b}(b.EventEmitter)}).call(this);
\ No newline at end of file
diff --git a/src/main/resources/META-INF/resources/designer/lib/plugins/morris/raphael.min.js b/src/main/resources/META-INF/resources/designer/lib/plugins/morris/raphael.min.js
deleted file mode 100644 (file)
index b40a005..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-// â”Œâ”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”\90 \\
-// â”‚ Raphaël 2.1.2 - JavaScript Vector Library                          â”‚ \\
-// â”œâ”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”¤ \\
-// â”‚ Copyright Â© 2008-2012 Dmitry Baranovskiy (http://raphaeljs.com)    â”‚ \\
-// â”‚ Copyright Â© 2008-2012 Sencha Labs (http://sencha.com)              â”‚ \\
-// â”œâ”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”¤ \\
-// â”‚ Licensed under the MIT (http://raphaeljs.com/license.html) license.│ \\
-// â””────────────────────────────────────────────────────────────────────┘ \\
-!function(a){var b,c,d="0.4.2",e="hasOwnProperty",f=/[\.\/]/,g="*",h=function(){},i=function(a,b){return a-b},j={n:{}},k=function(a,d){a=String(a);var e,f=c,g=Array.prototype.slice.call(arguments,2),h=k.listeners(a),j=0,l=[],m={},n=[],o=b;b=a,c=0;for(var p=0,q=h.length;q>p;p++)"zIndex"in h[p]&&(l.push(h[p].zIndex),h[p].zIndex<0&&(m[h[p].zIndex]=h[p]));for(l.sort(i);l[j]<0;)if(e=m[l[j++]],n.push(e.apply(d,g)),c)return c=f,n;for(p=0;q>p;p++)if(e=h[p],"zIndex"in e)if(e.zIndex==l[j]){if(n.push(e.apply(d,g)),c)break;do if(j++,e=m[l[j]],e&&n.push(e.apply(d,g)),c)break;while(e)}else m[e.zIndex]=e;else if(n.push(e.apply(d,g)),c)break;return c=f,b=o,n.length?n:null};k._events=j,k.listeners=function(a){var b,c,d,e,h,i,k,l,m=a.split(f),n=j,o=[n],p=[];for(e=0,h=m.length;h>e;e++){for(l=[],i=0,k=o.length;k>i;i++)for(n=o[i].n,c=[n[m[e]],n[g]],d=2;d--;)b=c[d],b&&(l.push(b),p=p.concat(b.f||[]));o=l}return p},k.on=function(a,b){if(a=String(a),"function"!=typeof b)return function(){};for(var c=a.split(f),d=j,e=0,g=c.length;g>e;e++)d=d.n,d=d.hasOwnProperty(c[e])&&d[c[e]]||(d[c[e]]={n:{}});for(d.f=d.f||[],e=0,g=d.f.length;g>e;e++)if(d.f[e]==b)return h;return d.f.push(b),function(a){+a==+a&&(b.zIndex=+a)}},k.f=function(a){var b=[].slice.call(arguments,1);return function(){k.apply(null,[a,null].concat(b).concat([].slice.call(arguments,0)))}},k.stop=function(){c=1},k.nt=function(a){return a?new RegExp("(?:\\.|\\/|^)"+a+"(?:\\.|\\/|$)").test(b):b},k.nts=function(){return b.split(f)},k.off=k.unbind=function(a,b){if(!a)return k._events=j={n:{}},void 0;var c,d,h,i,l,m,n,o=a.split(f),p=[j];for(i=0,l=o.length;l>i;i++)for(m=0;m<p.length;m+=h.length-2){if(h=[m,1],c=p[m].n,o[i]!=g)c[o[i]]&&h.push(c[o[i]]);else for(d in c)c[e](d)&&h.push(c[d]);p.splice.apply(p,h)}for(i=0,l=p.length;l>i;i++)for(c=p[i];c.n;){if(b){if(c.f){for(m=0,n=c.f.length;n>m;m++)if(c.f[m]==b){c.f.splice(m,1);break}!c.f.length&&delete c.f}for(d in c.n)if(c.n[e](d)&&c.n[d].f){var q=c.n[d].f;for(m=0,n=q.length;n>m;m++)if(q[m]==b){q.splice(m,1);break}!q.length&&delete c.n[d].f}}else{delete c.f;for(d in c.n)c.n[e](d)&&c.n[d].f&&delete c.n[d].f}c=c.n}},k.once=function(a,b){var c=function(){return k.unbind(a,c),b.apply(this,arguments)};return k.on(a,c)},k.version=d,k.toString=function(){return"You are running Eve "+d},"undefined"!=typeof module&&module.exports?module.exports=k:"undefined"!=typeof define?define("eve",[],function(){return k}):a.eve=k}(this),function(a,b){"function"==typeof define&&define.amd?define(["eve"],function(c){return b(a,c)}):b(a,a.eve)}(this,function(a,b){function c(a){if(c.is(a,"function"))return u?a():b.on("raphael.DOMload",a);if(c.is(a,V))return c._engine.create[D](c,a.splice(0,3+c.is(a[0],T))).add(a);var d=Array.prototype.slice.call(arguments,0);if(c.is(d[d.length-1],"function")){var e=d.pop();return u?e.call(c._engine.create[D](c,d)):b.on("raphael.DOMload",function(){e.call(c._engine.create[D](c,d))})}return c._engine.create[D](c,arguments)}function d(a){if("function"==typeof a||Object(a)!==a)return a;var b=new a.constructor;for(var c in a)a[z](c)&&(b[c]=d(a[c]));return b}function e(a,b){for(var c=0,d=a.length;d>c;c++)if(a[c]===b)return a.push(a.splice(c,1)[0])}function f(a,b,c){function d(){var f=Array.prototype.slice.call(arguments,0),g=f.join("â\90€"),h=d.cache=d.cache||{},i=d.count=d.count||[];return h[z](g)?(e(i,g),c?c(h[g]):h[g]):(i.length>=1e3&&delete h[i.shift()],i.push(g),h[g]=a[D](b,f),c?c(h[g]):h[g])}return d}function g(){return this.hex}function h(a,b){for(var c=[],d=0,e=a.length;e-2*!b>d;d+=2){var f=[{x:+a[d-2],y:+a[d-1]},{x:+a[d],y:+a[d+1]},{x:+a[d+2],y:+a[d+3]},{x:+a[d+4],y:+a[d+5]}];b?d?e-4==d?f[3]={x:+a[0],y:+a[1]}:e-2==d&&(f[2]={x:+a[0],y:+a[1]},f[3]={x:+a[2],y:+a[3]}):f[0]={x:+a[e-2],y:+a[e-1]}:e-4==d?f[3]=f[2]:d||(f[0]={x:+a[d],y:+a[d+1]}),c.push(["C",(-f[0].x+6*f[1].x+f[2].x)/6,(-f[0].y+6*f[1].y+f[2].y)/6,(f[1].x+6*f[2].x-f[3].x)/6,(f[1].y+6*f[2].y-f[3].y)/6,f[2].x,f[2].y])}return c}function i(a,b,c,d,e){var f=-3*b+9*c-9*d+3*e,g=a*f+6*b-12*c+6*d;return a*g-3*b+3*c}function j(a,b,c,d,e,f,g,h,j){null==j&&(j=1),j=j>1?1:0>j?0:j;for(var k=j/2,l=12,m=[-.1252,.1252,-.3678,.3678,-.5873,.5873,-.7699,.7699,-.9041,.9041,-.9816,.9816],n=[.2491,.2491,.2335,.2335,.2032,.2032,.1601,.1601,.1069,.1069,.0472,.0472],o=0,p=0;l>p;p++){var q=k*m[p]+k,r=i(q,a,c,e,g),s=i(q,b,d,f,h),t=r*r+s*s;o+=n[p]*N.sqrt(t)}return k*o}function k(a,b,c,d,e,f,g,h,i){if(!(0>i||j(a,b,c,d,e,f,g,h)<i)){var k,l=1,m=l/2,n=l-m,o=.01;for(k=j(a,b,c,d,e,f,g,h,n);Q(k-i)>o;)m/=2,n+=(i>k?1:-1)*m,k=j(a,b,c,d,e,f,g,h,n);return n}}function l(a,b,c,d,e,f,g,h){if(!(O(a,c)<P(e,g)||P(a,c)>O(e,g)||O(b,d)<P(f,h)||P(b,d)>O(f,h))){var i=(a*d-b*c)*(e-g)-(a-c)*(e*h-f*g),j=(a*d-b*c)*(f-h)-(b-d)*(e*h-f*g),k=(a-c)*(f-h)-(b-d)*(e-g);if(k){var l=i/k,m=j/k,n=+l.toFixed(2),o=+m.toFixed(2);if(!(n<+P(a,c).toFixed(2)||n>+O(a,c).toFixed(2)||n<+P(e,g).toFixed(2)||n>+O(e,g).toFixed(2)||o<+P(b,d).toFixed(2)||o>+O(b,d).toFixed(2)||o<+P(f,h).toFixed(2)||o>+O(f,h).toFixed(2)))return{x:l,y:m}}}}function m(a,b,d){var e=c.bezierBBox(a),f=c.bezierBBox(b);if(!c.isBBoxIntersect(e,f))return d?0:[];for(var g=j.apply(0,a),h=j.apply(0,b),i=O(~~(g/5),1),k=O(~~(h/5),1),m=[],n=[],o={},p=d?0:[],q=0;i+1>q;q++){var r=c.findDotsAtSegment.apply(c,a.concat(q/i));m.push({x:r.x,y:r.y,t:q/i})}for(q=0;k+1>q;q++)r=c.findDotsAtSegment.apply(c,b.concat(q/k)),n.push({x:r.x,y:r.y,t:q/k});for(q=0;i>q;q++)for(var s=0;k>s;s++){var t=m[q],u=m[q+1],v=n[s],w=n[s+1],x=Q(u.x-t.x)<.001?"y":"x",y=Q(w.x-v.x)<.001?"y":"x",z=l(t.x,t.y,u.x,u.y,v.x,v.y,w.x,w.y);if(z){if(o[z.x.toFixed(4)]==z.y.toFixed(4))continue;o[z.x.toFixed(4)]=z.y.toFixed(4);var A=t.t+Q((z[x]-t[x])/(u[x]-t[x]))*(u.t-t.t),B=v.t+Q((z[y]-v[y])/(w[y]-v[y]))*(w.t-v.t);A>=0&&1.001>=A&&B>=0&&1.001>=B&&(d?p++:p.push({x:z.x,y:z.y,t1:P(A,1),t2:P(B,1)}))}}return p}function n(a,b,d){a=c._path2curve(a),b=c._path2curve(b);for(var e,f,g,h,i,j,k,l,n,o,p=d?0:[],q=0,r=a.length;r>q;q++){var s=a[q];if("M"==s[0])e=i=s[1],f=j=s[2];else{"C"==s[0]?(n=[e,f].concat(s.slice(1)),e=n[6],f=n[7]):(n=[e,f,e,f,i,j,i,j],e=i,f=j);for(var t=0,u=b.length;u>t;t++){var v=b[t];if("M"==v[0])g=k=v[1],h=l=v[2];else{"C"==v[0]?(o=[g,h].concat(v.slice(1)),g=o[6],h=o[7]):(o=[g,h,g,h,k,l,k,l],g=k,h=l);var w=m(n,o,d);if(d)p+=w;else{for(var x=0,y=w.length;y>x;x++)w[x].segment1=q,w[x].segment2=t,w[x].bez1=n,w[x].bez2=o;p=p.concat(w)}}}}}return p}function o(a,b,c,d,e,f){null!=a?(this.a=+a,this.b=+b,this.c=+c,this.d=+d,this.e=+e,this.f=+f):(this.a=1,this.b=0,this.c=0,this.d=1,this.e=0,this.f=0)}function p(){return this.x+H+this.y+H+this.width+" Ã— "+this.height}function q(a,b,c,d,e,f){function g(a){return((l*a+k)*a+j)*a}function h(a,b){var c=i(a,b);return((o*c+n)*c+m)*c}function i(a,b){var c,d,e,f,h,i;for(e=a,i=0;8>i;i++){if(f=g(e)-a,Q(f)<b)return e;if(h=(3*l*e+2*k)*e+j,Q(h)<1e-6)break;e-=f/h}if(c=0,d=1,e=a,c>e)return c;if(e>d)return d;for(;d>c;){if(f=g(e),Q(f-a)<b)return e;a>f?c=e:d=e,e=(d-c)/2+c}return e}var j=3*b,k=3*(d-b)-j,l=1-j-k,m=3*c,n=3*(e-c)-m,o=1-m-n;return h(a,1/(200*f))}function r(a,b){var c=[],d={};if(this.ms=b,this.times=1,a){for(var e in a)a[z](e)&&(d[_(e)]=a[e],c.push(_(e)));c.sort(lb)}this.anim=d,this.top=c[c.length-1],this.percents=c}function s(a,d,e,f,g,h){e=_(e);var i,j,k,l,m,n,p=a.ms,r={},s={},t={};if(f)for(v=0,x=ic.length;x>v;v++){var u=ic[v];if(u.el.id==d.id&&u.anim==a){u.percent!=e?(ic.splice(v,1),k=1):j=u,d.attr(u.totalOrigin);break}}else f=+s;for(var v=0,x=a.percents.length;x>v;v++){if(a.percents[v]==e||a.percents[v]>f*a.top){e=a.percents[v],m=a.percents[v-1]||0,p=p/a.top*(e-m),l=a.percents[v+1],i=a.anim[e];break}f&&d.attr(a.anim[a.percents[v]])}if(i){if(j)j.initstatus=f,j.start=new Date-j.ms*f;else{for(var y in i)if(i[z](y)&&(db[z](y)||d.paper.customAttributes[z](y)))switch(r[y]=d.attr(y),null==r[y]&&(r[y]=cb[y]),s[y]=i[y],db[y]){case T:t[y]=(s[y]-r[y])/p;break;case"colour":r[y]=c.getRGB(r[y]);var A=c.getRGB(s[y]);t[y]={r:(A.r-r[y].r)/p,g:(A.g-r[y].g)/p,b:(A.b-r[y].b)/p};break;case"path":var B=Kb(r[y],s[y]),C=B[1];for(r[y]=B[0],t[y]=[],v=0,x=r[y].length;x>v;v++){t[y][v]=[0];for(var D=1,F=r[y][v].length;F>D;D++)t[y][v][D]=(C[v][D]-r[y][v][D])/p}break;case"transform":var G=d._,H=Pb(G[y],s[y]);if(H)for(r[y]=H.from,s[y]=H.to,t[y]=[],t[y].real=!0,v=0,x=r[y].length;x>v;v++)for(t[y][v]=[r[y][v][0]],D=1,F=r[y][v].length;F>D;D++)t[y][v][D]=(s[y][v][D]-r[y][v][D])/p;else{var K=d.matrix||new o,L={_:{transform:G.transform},getBBox:function(){return d.getBBox(1)}};r[y]=[K.a,K.b,K.c,K.d,K.e,K.f],Nb(L,s[y]),s[y]=L._.transform,t[y]=[(L.matrix.a-K.a)/p,(L.matrix.b-K.b)/p,(L.matrix.c-K.c)/p,(L.matrix.d-K.d)/p,(L.matrix.e-K.e)/p,(L.matrix.f-K.f)/p]}break;case"csv":var M=I(i[y])[J](w),N=I(r[y])[J](w);if("clip-rect"==y)for(r[y]=N,t[y]=[],v=N.length;v--;)t[y][v]=(M[v]-r[y][v])/p;s[y]=M;break;default:for(M=[][E](i[y]),N=[][E](r[y]),t[y]=[],v=d.paper.customAttributes[y].length;v--;)t[y][v]=((M[v]||0)-(N[v]||0))/p}var O=i.easing,P=c.easing_formulas[O];if(!P)if(P=I(O).match(Z),P&&5==P.length){var Q=P;P=function(a){return q(a,+Q[1],+Q[2],+Q[3],+Q[4],p)}}else P=nb;if(n=i.start||a.start||+new Date,u={anim:a,percent:e,timestamp:n,start:n+(a.del||0),status:0,initstatus:f||0,stop:!1,ms:p,easing:P,from:r,diff:t,to:s,el:d,callback:i.callback,prev:m,next:l,repeat:h||a.times,origin:d.attr(),totalOrigin:g},ic.push(u),f&&!j&&!k&&(u.stop=!0,u.start=new Date-p*f,1==ic.length))return kc();k&&(u.start=new Date-u.ms*f),1==ic.length&&jc(kc)}b("raphael.anim.start."+d.id,d,a)}}function t(a){for(var b=0;b<ic.length;b++)ic[b].el.paper==a&&ic.splice(b--,1)}c.version="2.1.2",c.eve=b;var u,v,w=/[, ]+/,x={circle:1,rect:1,path:1,ellipse:1,text:1,image:1},y=/\{(\d+)\}/g,z="hasOwnProperty",A={doc:document,win:a},B={was:Object.prototype[z].call(A.win,"Raphael"),is:A.win.Raphael},C=function(){this.ca=this.customAttributes={}},D="apply",E="concat",F="ontouchstart"in A.win||A.win.DocumentTouch&&A.doc instanceof DocumentTouch,G="",H=" ",I=String,J="split",K="click dblclick mousedown mousemove mouseout mouseover mouseup touchstart touchmove touchend touchcancel"[J](H),L={mousedown:"touchstart",mousemove:"touchmove",mouseup:"touchend"},M=I.prototype.toLowerCase,N=Math,O=N.max,P=N.min,Q=N.abs,R=N.pow,S=N.PI,T="number",U="string",V="array",W=Object.prototype.toString,X=(c._ISURL=/^url\(['"]?([^\)]+?)['"]?\)$/i,/^\s*((#[a-f\d]{6})|(#[a-f\d]{3})|rgba?\(\s*([\d\.]+%?\s*,\s*[\d\.]+%?\s*,\s*[\d\.]+%?(?:\s*,\s*[\d\.]+%?)?)\s*\)|hsba?\(\s*([\d\.]+(?:deg|\xb0|%)?\s*,\s*[\d\.]+%?\s*,\s*[\d\.]+(?:%?\s*,\s*[\d\.]+)?)%?\s*\)|hsla?\(\s*([\d\.]+(?:deg|\xb0|%)?\s*,\s*[\d\.]+%?\s*,\s*[\d\.]+(?:%?\s*,\s*[\d\.]+)?)%?\s*\))\s*$/i),Y={NaN:1,Infinity:1,"-Infinity":1},Z=/^(?:cubic-)?bezier\(([^,]+),([^,]+),([^,]+),([^\)]+)\)/,$=N.round,_=parseFloat,ab=parseInt,bb=I.prototype.toUpperCase,cb=c._availableAttrs={"arrow-end":"none","arrow-start":"none",blur:0,"clip-rect":"0 0 1e9 1e9",cursor:"default",cx:0,cy:0,fill:"#fff","fill-opacity":1,font:'10px "Arial"',"font-family":'"Arial"',"font-size":"10","font-style":"normal","font-weight":400,gradient:0,height:0,href:"http://raphaeljs.com/","letter-spacing":0,opacity:1,path:"M0,0",r:0,rx:0,ry:0,src:"",stroke:"#000","stroke-dasharray":"","stroke-linecap":"butt","stroke-linejoin":"butt","stroke-miterlimit":0,"stroke-opacity":1,"stroke-width":1,target:"_blank","text-anchor":"middle",title:"Raphael",transform:"",width:0,x:0,y:0},db=c._availableAnimAttrs={blur:T,"clip-rect":"csv",cx:T,cy:T,fill:"colour","fill-opacity":T,"font-size":T,height:T,opacity:T,path:"path",r:T,rx:T,ry:T,stroke:"colour","stroke-opacity":T,"stroke-width":T,transform:"transform",width:T,x:T,y:T},eb=/[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*,[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*/,fb={hs:1,rg:1},gb=/,?([achlmqrstvxz]),?/gi,hb=/([achlmrqstvz])[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029,]*((-?\d*\.?\d*(?:e[\-+]?\d+)?[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*,?[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*)+)/gi,ib=/([rstm])[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029,]*((-?\d*\.?\d*(?:e[\-+]?\d+)?[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*,?[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*)+)/gi,jb=/(-?\d*\.?\d*(?:e[\-+]?\d+)?)[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*,?[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*/gi,kb=(c._radial_gradient=/^r(?:\(([^,]+?)[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*,[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*([^\)]+?)\))?/,{}),lb=function(a,b){return _(a)-_(b)},mb=function(){},nb=function(a){return a},ob=c._rectPath=function(a,b,c,d,e){return e?[["M",a+e,b],["l",c-2*e,0],["a",e,e,0,0,1,e,e],["l",0,d-2*e],["a",e,e,0,0,1,-e,e],["l",2*e-c,0],["a",e,e,0,0,1,-e,-e],["l",0,2*e-d],["a",e,e,0,0,1,e,-e],["z"]]:[["M",a,b],["l",c,0],["l",0,d],["l",-c,0],["z"]]},pb=function(a,b,c,d){return null==d&&(d=c),[["M",a,b],["m",0,-d],["a",c,d,0,1,1,0,2*d],["a",c,d,0,1,1,0,-2*d],["z"]]},qb=c._getPath={path:function(a){return a.attr("path")},circle:function(a){var b=a.attrs;return pb(b.cx,b.cy,b.r)},ellipse:function(a){var b=a.attrs;return pb(b.cx,b.cy,b.rx,b.ry)},rect:function(a){var b=a.attrs;return ob(b.x,b.y,b.width,b.height,b.r)},image:function(a){var b=a.attrs;return ob(b.x,b.y,b.width,b.height)},text:function(a){var b=a._getBBox();return ob(b.x,b.y,b.width,b.height)},set:function(a){var b=a._getBBox();return ob(b.x,b.y,b.width,b.height)}},rb=c.mapPath=function(a,b){if(!b)return a;var c,d,e,f,g,h,i;for(a=Kb(a),e=0,g=a.length;g>e;e++)for(i=a[e],f=1,h=i.length;h>f;f+=2)c=b.x(i[f],i[f+1]),d=b.y(i[f],i[f+1]),i[f]=c,i[f+1]=d;return a};if(c._g=A,c.type=A.win.SVGAngle||A.doc.implementation.hasFeature("http://www.w3.org/TR/SVG11/feature#BasicStructure","1.1")?"SVG":"VML","VML"==c.type){var sb,tb=A.doc.createElement("div");if(tb.innerHTML='<v:shape adj="1"/>',sb=tb.firstChild,sb.style.behavior="url(#default#VML)",!sb||"object"!=typeof sb.adj)return c.type=G;tb=null}c.svg=!(c.vml="VML"==c.type),c._Paper=C,c.fn=v=C.prototype=c.prototype,c._id=0,c._oid=0,c.is=function(a,b){return b=M.call(b),"finite"==b?!Y[z](+a):"array"==b?a instanceof Array:"null"==b&&null===a||b==typeof a&&null!==a||"object"==b&&a===Object(a)||"array"==b&&Array.isArray&&Array.isArray(a)||W.call(a).slice(8,-1).toLowerCase()==b},c.angle=function(a,b,d,e,f,g){if(null==f){var h=a-d,i=b-e;return h||i?(180+180*N.atan2(-i,-h)/S+360)%360:0}return c.angle(a,b,f,g)-c.angle(d,e,f,g)},c.rad=function(a){return a%360*S/180},c.deg=function(a){return 180*a/S%360},c.snapTo=function(a,b,d){if(d=c.is(d,"finite")?d:10,c.is(a,V)){for(var e=a.length;e--;)if(Q(a[e]-b)<=d)return a[e]}else{a=+a;var f=b%a;if(d>f)return b-f;if(f>a-d)return b-f+a}return b},c.createUUID=function(a,b){return function(){return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(a,b).toUpperCase()}}(/[xy]/g,function(a){var b=0|16*N.random(),c="x"==a?b:8|3&b;return c.toString(16)}),c.setWindow=function(a){b("raphael.setWindow",c,A.win,a),A.win=a,A.doc=A.win.document,c._engine.initWin&&c._engine.initWin(A.win)};var ub=function(a){if(c.vml){var b,d=/^\s+|\s+$/g;try{var e=new ActiveXObject("htmlfile");e.write("<body>"),e.close(),b=e.body}catch(g){b=createPopup().document.body}var h=b.createTextRange();ub=f(function(a){try{b.style.color=I(a).replace(d,G);var c=h.queryCommandValue("ForeColor");return c=(255&c)<<16|65280&c|(16711680&c)>>>16,"#"+("000000"+c.toString(16)).slice(-6)}catch(e){return"none"}})}else{var i=A.doc.createElement("i");i.title="Raphaël Colour Picker",i.style.display="none",A.doc.body.appendChild(i),ub=f(function(a){return i.style.color=a,A.doc.defaultView.getComputedStyle(i,G).getPropertyValue("color")})}return ub(a)},vb=function(){return"hsb("+[this.h,this.s,this.b]+")"},wb=function(){return"hsl("+[this.h,this.s,this.l]+")"},xb=function(){return this.hex},yb=function(a,b,d){if(null==b&&c.is(a,"object")&&"r"in a&&"g"in a&&"b"in a&&(d=a.b,b=a.g,a=a.r),null==b&&c.is(a,U)){var e=c.getRGB(a);a=e.r,b=e.g,d=e.b}return(a>1||b>1||d>1)&&(a/=255,b/=255,d/=255),[a,b,d]},zb=function(a,b,d,e){a*=255,b*=255,d*=255;var f={r:a,g:b,b:d,hex:c.rgb(a,b,d),toString:xb};return c.is(e,"finite")&&(f.opacity=e),f};c.color=function(a){var b;return c.is(a,"object")&&"h"in a&&"s"in a&&"b"in a?(b=c.hsb2rgb(a),a.r=b.r,a.g=b.g,a.b=b.b,a.hex=b.hex):c.is(a,"object")&&"h"in a&&"s"in a&&"l"in a?(b=c.hsl2rgb(a),a.r=b.r,a.g=b.g,a.b=b.b,a.hex=b.hex):(c.is(a,"string")&&(a=c.getRGB(a)),c.is(a,"object")&&"r"in a&&"g"in a&&"b"in a?(b=c.rgb2hsl(a),a.h=b.h,a.s=b.s,a.l=b.l,b=c.rgb2hsb(a),a.v=b.b):(a={hex:"none"},a.r=a.g=a.b=a.h=a.s=a.v=a.l=-1)),a.toString=xb,a},c.hsb2rgb=function(a,b,c,d){this.is(a,"object")&&"h"in a&&"s"in a&&"b"in a&&(c=a.b,b=a.s,a=a.h,d=a.o),a*=360;var e,f,g,h,i;return a=a%360/60,i=c*b,h=i*(1-Q(a%2-1)),e=f=g=c-i,a=~~a,e+=[i,h,0,0,h,i][a],f+=[h,i,i,h,0,0][a],g+=[0,0,h,i,i,h][a],zb(e,f,g,d)},c.hsl2rgb=function(a,b,c,d){this.is(a,"object")&&"h"in a&&"s"in a&&"l"in a&&(c=a.l,b=a.s,a=a.h),(a>1||b>1||c>1)&&(a/=360,b/=100,c/=100),a*=360;var e,f,g,h,i;return a=a%360/60,i=2*b*(.5>c?c:1-c),h=i*(1-Q(a%2-1)),e=f=g=c-i/2,a=~~a,e+=[i,h,0,0,h,i][a],f+=[h,i,i,h,0,0][a],g+=[0,0,h,i,i,h][a],zb(e,f,g,d)},c.rgb2hsb=function(a,b,c){c=yb(a,b,c),a=c[0],b=c[1],c=c[2];var d,e,f,g;return f=O(a,b,c),g=f-P(a,b,c),d=0==g?null:f==a?(b-c)/g:f==b?(c-a)/g+2:(a-b)/g+4,d=60*((d+360)%6)/360,e=0==g?0:g/f,{h:d,s:e,b:f,toString:vb}},c.rgb2hsl=function(a,b,c){c=yb(a,b,c),a=c[0],b=c[1],c=c[2];var d,e,f,g,h,i;return g=O(a,b,c),h=P(a,b,c),i=g-h,d=0==i?null:g==a?(b-c)/i:g==b?(c-a)/i+2:(a-b)/i+4,d=60*((d+360)%6)/360,f=(g+h)/2,e=0==i?0:.5>f?i/(2*f):i/(2-2*f),{h:d,s:e,l:f,toString:wb}},c._path2string=function(){return this.join(",").replace(gb,"$1")},c._preload=function(a,b){var c=A.doc.createElement("img");c.style.cssText="position:absolute;left:-9999em;top:-9999em",c.onload=function(){b.call(this),this.onload=null,A.doc.body.removeChild(this)},c.onerror=function(){A.doc.body.removeChild(this)},A.doc.body.appendChild(c),c.src=a},c.getRGB=f(function(a){if(!a||(a=I(a)).indexOf("-")+1)return{r:-1,g:-1,b:-1,hex:"none",error:1,toString:g};if("none"==a)return{r:-1,g:-1,b:-1,hex:"none",toString:g};!(fb[z](a.toLowerCase().substring(0,2))||"#"==a.charAt())&&(a=ub(a));var b,d,e,f,h,i,j=a.match(X);return j?(j[2]&&(e=ab(j[2].substring(5),16),d=ab(j[2].substring(3,5),16),b=ab(j[2].substring(1,3),16)),j[3]&&(e=ab((h=j[3].charAt(3))+h,16),d=ab((h=j[3].charAt(2))+h,16),b=ab((h=j[3].charAt(1))+h,16)),j[4]&&(i=j[4][J](eb),b=_(i[0]),"%"==i[0].slice(-1)&&(b*=2.55),d=_(i[1]),"%"==i[1].slice(-1)&&(d*=2.55),e=_(i[2]),"%"==i[2].slice(-1)&&(e*=2.55),"rgba"==j[1].toLowerCase().slice(0,4)&&(f=_(i[3])),i[3]&&"%"==i[3].slice(-1)&&(f/=100)),j[5]?(i=j[5][J](eb),b=_(i[0]),"%"==i[0].slice(-1)&&(b*=2.55),d=_(i[1]),"%"==i[1].slice(-1)&&(d*=2.55),e=_(i[2]),"%"==i[2].slice(-1)&&(e*=2.55),("deg"==i[0].slice(-3)||"°"==i[0].slice(-1))&&(b/=360),"hsba"==j[1].toLowerCase().slice(0,4)&&(f=_(i[3])),i[3]&&"%"==i[3].slice(-1)&&(f/=100),c.hsb2rgb(b,d,e,f)):j[6]?(i=j[6][J](eb),b=_(i[0]),"%"==i[0].slice(-1)&&(b*=2.55),d=_(i[1]),"%"==i[1].slice(-1)&&(d*=2.55),e=_(i[2]),"%"==i[2].slice(-1)&&(e*=2.55),("deg"==i[0].slice(-3)||"°"==i[0].slice(-1))&&(b/=360),"hsla"==j[1].toLowerCase().slice(0,4)&&(f=_(i[3])),i[3]&&"%"==i[3].slice(-1)&&(f/=100),c.hsl2rgb(b,d,e,f)):(j={r:b,g:d,b:e,toString:g},j.hex="#"+(16777216|e|d<<8|b<<16).toString(16).slice(1),c.is(f,"finite")&&(j.opacity=f),j)):{r:-1,g:-1,b:-1,hex:"none",error:1,toString:g}},c),c.hsb=f(function(a,b,d){return c.hsb2rgb(a,b,d).hex}),c.hsl=f(function(a,b,d){return c.hsl2rgb(a,b,d).hex}),c.rgb=f(function(a,b,c){return"#"+(16777216|c|b<<8|a<<16).toString(16).slice(1)}),c.getColor=function(a){var b=this.getColor.start=this.getColor.start||{h:0,s:1,b:a||.75},c=this.hsb2rgb(b.h,b.s,b.b);return b.h+=.075,b.h>1&&(b.h=0,b.s-=.2,b.s<=0&&(this.getColor.start={h:0,s:1,b:b.b})),c.hex},c.getColor.reset=function(){delete this.start},c.parsePathString=function(a){if(!a)return null;var b=Ab(a);if(b.arr)return Cb(b.arr);var d={a:7,c:6,h:1,l:2,m:2,r:4,q:4,s:4,t:2,v:1,z:0},e=[];return c.is(a,V)&&c.is(a[0],V)&&(e=Cb(a)),e.length||I(a).replace(hb,function(a,b,c){var f=[],g=b.toLowerCase();if(c.replace(jb,function(a,b){b&&f.push(+b)}),"m"==g&&f.length>2&&(e.push([b][E](f.splice(0,2))),g="l",b="m"==b?"l":"L"),"r"==g)e.push([b][E](f));else for(;f.length>=d[g]&&(e.push([b][E](f.splice(0,d[g]))),d[g]););}),e.toString=c._path2string,b.arr=Cb(e),e},c.parseTransformString=f(function(a){if(!a)return null;var b=[];return c.is(a,V)&&c.is(a[0],V)&&(b=Cb(a)),b.length||I(a).replace(ib,function(a,c,d){var e=[];M.call(c),d.replace(jb,function(a,b){b&&e.push(+b)}),b.push([c][E](e))}),b.toString=c._path2string,b});var Ab=function(a){var b=Ab.ps=Ab.ps||{};return b[a]?b[a].sleep=100:b[a]={sleep:100},setTimeout(function(){for(var c in b)b[z](c)&&c!=a&&(b[c].sleep--,!b[c].sleep&&delete b[c])}),b[a]};c.findDotsAtSegment=function(a,b,c,d,e,f,g,h,i){var j=1-i,k=R(j,3),l=R(j,2),m=i*i,n=m*i,o=k*a+3*l*i*c+3*j*i*i*e+n*g,p=k*b+3*l*i*d+3*j*i*i*f+n*h,q=a+2*i*(c-a)+m*(e-2*c+a),r=b+2*i*(d-b)+m*(f-2*d+b),s=c+2*i*(e-c)+m*(g-2*e+c),t=d+2*i*(f-d)+m*(h-2*f+d),u=j*a+i*c,v=j*b+i*d,w=j*e+i*g,x=j*f+i*h,y=90-180*N.atan2(q-s,r-t)/S;return(q>s||t>r)&&(y+=180),{x:o,y:p,m:{x:q,y:r},n:{x:s,y:t},start:{x:u,y:v},end:{x:w,y:x},alpha:y}},c.bezierBBox=function(a,b,d,e,f,g,h,i){c.is(a,"array")||(a=[a,b,d,e,f,g,h,i]);var j=Jb.apply(null,a);return{x:j.min.x,y:j.min.y,x2:j.max.x,y2:j.max.y,width:j.max.x-j.min.x,height:j.max.y-j.min.y}},c.isPointInsideBBox=function(a,b,c){return b>=a.x&&b<=a.x2&&c>=a.y&&c<=a.y2},c.isBBoxIntersect=function(a,b){var d=c.isPointInsideBBox;return d(b,a.x,a.y)||d(b,a.x2,a.y)||d(b,a.x,a.y2)||d(b,a.x2,a.y2)||d(a,b.x,b.y)||d(a,b.x2,b.y)||d(a,b.x,b.y2)||d(a,b.x2,b.y2)||(a.x<b.x2&&a.x>b.x||b.x<a.x2&&b.x>a.x)&&(a.y<b.y2&&a.y>b.y||b.y<a.y2&&b.y>a.y)},c.pathIntersection=function(a,b){return n(a,b)},c.pathIntersectionNumber=function(a,b){return n(a,b,1)},c.isPointInsidePath=function(a,b,d){var e=c.pathBBox(a);return c.isPointInsideBBox(e,b,d)&&1==n(a,[["M",b,d],["H",e.x2+10]],1)%2},c._removedFactory=function(a){return function(){b("raphael.log",null,"Raphaël: you are calling to method â€œ"+a+"â€\9d of removed object",a)}};var Bb=c.pathBBox=function(a){var b=Ab(a);if(b.bbox)return d(b.bbox);if(!a)return{x:0,y:0,width:0,height:0,x2:0,y2:0};a=Kb(a);for(var c,e=0,f=0,g=[],h=[],i=0,j=a.length;j>i;i++)if(c=a[i],"M"==c[0])e=c[1],f=c[2],g.push(e),h.push(f);else{var k=Jb(e,f,c[1],c[2],c[3],c[4],c[5],c[6]);g=g[E](k.min.x,k.max.x),h=h[E](k.min.y,k.max.y),e=c[5],f=c[6]}var l=P[D](0,g),m=P[D](0,h),n=O[D](0,g),o=O[D](0,h),p=n-l,q=o-m,r={x:l,y:m,x2:n,y2:o,width:p,height:q,cx:l+p/2,cy:m+q/2};return b.bbox=d(r),r},Cb=function(a){var b=d(a);return b.toString=c._path2string,b},Db=c._pathToRelative=function(a){var b=Ab(a);if(b.rel)return Cb(b.rel);c.is(a,V)&&c.is(a&&a[0],V)||(a=c.parsePathString(a));var d=[],e=0,f=0,g=0,h=0,i=0;"M"==a[0][0]&&(e=a[0][1],f=a[0][2],g=e,h=f,i++,d.push(["M",e,f]));for(var j=i,k=a.length;k>j;j++){var l=d[j]=[],m=a[j];if(m[0]!=M.call(m[0]))switch(l[0]=M.call(m[0]),l[0]){case"a":l[1]=m[1],l[2]=m[2],l[3]=m[3],l[4]=m[4],l[5]=m[5],l[6]=+(m[6]-e).toFixed(3),l[7]=+(m[7]-f).toFixed(3);break;case"v":l[1]=+(m[1]-f).toFixed(3);break;case"m":g=m[1],h=m[2];default:for(var n=1,o=m.length;o>n;n++)l[n]=+(m[n]-(n%2?e:f)).toFixed(3)}else{l=d[j]=[],"m"==m[0]&&(g=m[1]+e,h=m[2]+f);for(var p=0,q=m.length;q>p;p++)d[j][p]=m[p]}var r=d[j].length;switch(d[j][0]){case"z":e=g,f=h;break;case"h":e+=+d[j][r-1];break;case"v":f+=+d[j][r-1];break;default:e+=+d[j][r-2],f+=+d[j][r-1]}}return d.toString=c._path2string,b.rel=Cb(d),d},Eb=c._pathToAbsolute=function(a){var b=Ab(a);if(b.abs)return Cb(b.abs);if(c.is(a,V)&&c.is(a&&a[0],V)||(a=c.parsePathString(a)),!a||!a.length)return[["M",0,0]];var d=[],e=0,f=0,g=0,i=0,j=0;"M"==a[0][0]&&(e=+a[0][1],f=+a[0][2],g=e,i=f,j++,d[0]=["M",e,f]);for(var k,l,m=3==a.length&&"M"==a[0][0]&&"R"==a[1][0].toUpperCase()&&"Z"==a[2][0].toUpperCase(),n=j,o=a.length;o>n;n++){if(d.push(k=[]),l=a[n],l[0]!=bb.call(l[0]))switch(k[0]=bb.call(l[0]),k[0]){case"A":k[1]=l[1],k[2]=l[2],k[3]=l[3],k[4]=l[4],k[5]=l[5],k[6]=+(l[6]+e),k[7]=+(l[7]+f);break;case"V":k[1]=+l[1]+f;break;case"H":k[1]=+l[1]+e;break;case"R":for(var p=[e,f][E](l.slice(1)),q=2,r=p.length;r>q;q++)p[q]=+p[q]+e,p[++q]=+p[q]+f;d.pop(),d=d[E](h(p,m));break;case"M":g=+l[1]+e,i=+l[2]+f;default:for(q=1,r=l.length;r>q;q++)k[q]=+l[q]+(q%2?e:f)}else if("R"==l[0])p=[e,f][E](l.slice(1)),d.pop(),d=d[E](h(p,m)),k=["R"][E](l.slice(-2));else for(var s=0,t=l.length;t>s;s++)k[s]=l[s];switch(k[0]){case"Z":e=g,f=i;break;case"H":e=k[1];break;case"V":f=k[1];break;case"M":g=k[k.length-2],i=k[k.length-1];default:e=k[k.length-2],f=k[k.length-1]}}return d.toString=c._path2string,b.abs=Cb(d),d},Fb=function(a,b,c,d){return[a,b,c,d,c,d]},Gb=function(a,b,c,d,e,f){var g=1/3,h=2/3;return[g*a+h*c,g*b+h*d,g*e+h*c,g*f+h*d,e,f]},Hb=function(a,b,c,d,e,g,h,i,j,k){var l,m=120*S/180,n=S/180*(+e||0),o=[],p=f(function(a,b,c){var d=a*N.cos(c)-b*N.sin(c),e=a*N.sin(c)+b*N.cos(c);return{x:d,y:e}});if(k)y=k[0],z=k[1],w=k[2],x=k[3];else{l=p(a,b,-n),a=l.x,b=l.y,l=p(i,j,-n),i=l.x,j=l.y;var q=(N.cos(S/180*e),N.sin(S/180*e),(a-i)/2),r=(b-j)/2,s=q*q/(c*c)+r*r/(d*d);s>1&&(s=N.sqrt(s),c=s*c,d=s*d);var t=c*c,u=d*d,v=(g==h?-1:1)*N.sqrt(Q((t*u-t*r*r-u*q*q)/(t*r*r+u*q*q))),w=v*c*r/d+(a+i)/2,x=v*-d*q/c+(b+j)/2,y=N.asin(((b-x)/d).toFixed(9)),z=N.asin(((j-x)/d).toFixed(9));y=w>a?S-y:y,z=w>i?S-z:z,0>y&&(y=2*S+y),0>z&&(z=2*S+z),h&&y>z&&(y-=2*S),!h&&z>y&&(z-=2*S)}var A=z-y;if(Q(A)>m){var B=z,C=i,D=j;z=y+m*(h&&z>y?1:-1),i=w+c*N.cos(z),j=x+d*N.sin(z),o=Hb(i,j,c,d,e,0,h,C,D,[z,B,w,x])}A=z-y;var F=N.cos(y),G=N.sin(y),H=N.cos(z),I=N.sin(z),K=N.tan(A/4),L=4/3*c*K,M=4/3*d*K,O=[a,b],P=[a+L*G,b-M*F],R=[i+L*I,j-M*H],T=[i,j];if(P[0]=2*O[0]-P[0],P[1]=2*O[1]-P[1],k)return[P,R,T][E](o);o=[P,R,T][E](o).join()[J](",");for(var U=[],V=0,W=o.length;W>V;V++)U[V]=V%2?p(o[V-1],o[V],n).y:p(o[V],o[V+1],n).x;return U},Ib=function(a,b,c,d,e,f,g,h,i){var j=1-i;return{x:R(j,3)*a+3*R(j,2)*i*c+3*j*i*i*e+R(i,3)*g,y:R(j,3)*b+3*R(j,2)*i*d+3*j*i*i*f+R(i,3)*h}},Jb=f(function(a,b,c,d,e,f,g,h){var i,j=e-2*c+a-(g-2*e+c),k=2*(c-a)-2*(e-c),l=a-c,m=(-k+N.sqrt(k*k-4*j*l))/2/j,n=(-k-N.sqrt(k*k-4*j*l))/2/j,o=[b,h],p=[a,g];return Q(m)>"1e12"&&(m=.5),Q(n)>"1e12"&&(n=.5),m>0&&1>m&&(i=Ib(a,b,c,d,e,f,g,h,m),p.push(i.x),o.push(i.y)),n>0&&1>n&&(i=Ib(a,b,c,d,e,f,g,h,n),p.push(i.x),o.push(i.y)),j=f-2*d+b-(h-2*f+d),k=2*(d-b)-2*(f-d),l=b-d,m=(-k+N.sqrt(k*k-4*j*l))/2/j,n=(-k-N.sqrt(k*k-4*j*l))/2/j,Q(m)>"1e12"&&(m=.5),Q(n)>"1e12"&&(n=.5),m>0&&1>m&&(i=Ib(a,b,c,d,e,f,g,h,m),p.push(i.x),o.push(i.y)),n>0&&1>n&&(i=Ib(a,b,c,d,e,f,g,h,n),p.push(i.x),o.push(i.y)),{min:{x:P[D](0,p),y:P[D](0,o)},max:{x:O[D](0,p),y:O[D](0,o)}}}),Kb=c._path2curve=f(function(a,b){var c=!b&&Ab(a);if(!b&&c.curve)return Cb(c.curve);for(var d=Eb(a),e=b&&Eb(b),f={x:0,y:0,bx:0,by:0,X:0,Y:0,qx:null,qy:null},g={x:0,y:0,bx:0,by:0,X:0,Y:0,qx:null,qy:null},h=(function(a,b,c){var d,e;if(!a)return["C",b.x,b.y,b.x,b.y,b.x,b.y];switch(!(a[0]in{T:1,Q:1})&&(b.qx=b.qy=null),a[0]){case"M":b.X=a[1],b.Y=a[2];break;case"A":a=["C"][E](Hb[D](0,[b.x,b.y][E](a.slice(1))));break;case"S":"C"==c||"S"==c?(d=2*b.x-b.bx,e=2*b.y-b.by):(d=b.x,e=b.y),a=["C",d,e][E](a.slice(1));break;case"T":"Q"==c||"T"==c?(b.qx=2*b.x-b.qx,b.qy=2*b.y-b.qy):(b.qx=b.x,b.qy=b.y),a=["C"][E](Gb(b.x,b.y,b.qx,b.qy,a[1],a[2]));break;case"Q":b.qx=a[1],b.qy=a[2],a=["C"][E](Gb(b.x,b.y,a[1],a[2],a[3],a[4]));break;case"L":a=["C"][E](Fb(b.x,b.y,a[1],a[2]));break;case"H":a=["C"][E](Fb(b.x,b.y,a[1],b.y));break;case"V":a=["C"][E](Fb(b.x,b.y,b.x,a[1]));break;case"Z":a=["C"][E](Fb(b.x,b.y,b.X,b.Y))}return a}),i=function(a,b){if(a[b].length>7){a[b].shift();for(var c=a[b];c.length;)a.splice(b++,0,["C"][E](c.splice(0,6)));a.splice(b,1),l=O(d.length,e&&e.length||0)}},j=function(a,b,c,f,g){a&&b&&"M"==a[g][0]&&"M"!=b[g][0]&&(b.splice(g,0,["M",f.x,f.y]),c.bx=0,c.by=0,c.x=a[g][1],c.y=a[g][2],l=O(d.length,e&&e.length||0))},k=0,l=O(d.length,e&&e.length||0);l>k;k++){d[k]=h(d[k],f),i(d,k),e&&(e[k]=h(e[k],g)),e&&i(e,k),j(d,e,f,g,k),j(e,d,g,f,k);var m=d[k],n=e&&e[k],o=m.length,p=e&&n.length;f.x=m[o-2],f.y=m[o-1],f.bx=_(m[o-4])||f.x,f.by=_(m[o-3])||f.y,g.bx=e&&(_(n[p-4])||g.x),g.by=e&&(_(n[p-3])||g.y),g.x=e&&n[p-2],g.y=e&&n[p-1]}return e||(c.curve=Cb(d)),e?[d,e]:d},null,Cb),Lb=(c._parseDots=f(function(a){for(var b=[],d=0,e=a.length;e>d;d++){var f={},g=a[d].match(/^([^:]*):?([\d\.]*)/);if(f.color=c.getRGB(g[1]),f.color.error)return null;f.color=f.color.hex,g[2]&&(f.offset=g[2]+"%"),b.push(f)}for(d=1,e=b.length-1;e>d;d++)if(!b[d].offset){for(var h=_(b[d-1].offset||0),i=0,j=d+1;e>j;j++)if(b[j].offset){i=b[j].offset;break}i||(i=100,j=e),i=_(i);for(var k=(i-h)/(j-d+1);j>d;d++)h+=k,b[d].offset=h+"%"}return b}),c._tear=function(a,b){a==b.top&&(b.top=a.prev),a==b.bottom&&(b.bottom=a.next),a.next&&(a.next.prev=a.prev),a.prev&&(a.prev.next=a.next)}),Mb=(c._tofront=function(a,b){b.top!==a&&(Lb(a,b),a.next=null,a.prev=b.top,b.top.next=a,b.top=a)},c._toback=function(a,b){b.bottom!==a&&(Lb(a,b),a.next=b.bottom,a.prev=null,b.bottom.prev=a,b.bottom=a)},c._insertafter=function(a,b,c){Lb(a,c),b==c.top&&(c.top=a),b.next&&(b.next.prev=a),a.next=b.next,a.prev=b,b.next=a},c._insertbefore=function(a,b,c){Lb(a,c),b==c.bottom&&(c.bottom=a),b.prev&&(b.prev.next=a),a.prev=b.prev,b.prev=a,a.next=b},c.toMatrix=function(a,b){var c=Bb(a),d={_:{transform:G},getBBox:function(){return c}};return Nb(d,b),d.matrix}),Nb=(c.transformPath=function(a,b){return rb(a,Mb(a,b))},c._extractTransform=function(a,b){if(null==b)return a._.transform;b=I(b).replace(/\.{3}|\u2026/g,a._.transform||G);var d=c.parseTransformString(b),e=0,f=0,g=0,h=1,i=1,j=a._,k=new o;if(j.transform=d||[],d)for(var l=0,m=d.length;m>l;l++){var n,p,q,r,s,t=d[l],u=t.length,v=I(t[0]).toLowerCase(),w=t[0]!=v,x=w?k.invert():0;"t"==v&&3==u?w?(n=x.x(0,0),p=x.y(0,0),q=x.x(t[1],t[2]),r=x.y(t[1],t[2]),k.translate(q-n,r-p)):k.translate(t[1],t[2]):"r"==v?2==u?(s=s||a.getBBox(1),k.rotate(t[1],s.x+s.width/2,s.y+s.height/2),e+=t[1]):4==u&&(w?(q=x.x(t[2],t[3]),r=x.y(t[2],t[3]),k.rotate(t[1],q,r)):k.rotate(t[1],t[2],t[3]),e+=t[1]):"s"==v?2==u||3==u?(s=s||a.getBBox(1),k.scale(t[1],t[u-1],s.x+s.width/2,s.y+s.height/2),h*=t[1],i*=t[u-1]):5==u&&(w?(q=x.x(t[3],t[4]),r=x.y(t[3],t[4]),k.scale(t[1],t[2],q,r)):k.scale(t[1],t[2],t[3],t[4]),h*=t[1],i*=t[2]):"m"==v&&7==u&&k.add(t[1],t[2],t[3],t[4],t[5],t[6]),j.dirtyT=1,a.matrix=k}a.matrix=k,j.sx=h,j.sy=i,j.deg=e,j.dx=f=k.e,j.dy=g=k.f,1==h&&1==i&&!e&&j.bbox?(j.bbox.x+=+f,j.bbox.y+=+g):j.dirtyT=1}),Ob=function(a){var b=a[0];switch(b.toLowerCase()){case"t":return[b,0,0];case"m":return[b,1,0,0,1,0,0];case"r":return 4==a.length?[b,0,a[2],a[3]]:[b,0];case"s":return 5==a.length?[b,1,1,a[3],a[4]]:3==a.length?[b,1,1]:[b,1]}},Pb=c._equaliseTransform=function(a,b){b=I(b).replace(/\.{3}|\u2026/g,a),a=c.parseTransformString(a)||[],b=c.parseTransformString(b)||[];for(var d,e,f,g,h=O(a.length,b.length),i=[],j=[],k=0;h>k;k++){if(f=a[k]||Ob(b[k]),g=b[k]||Ob(f),f[0]!=g[0]||"r"==f[0].toLowerCase()&&(f[2]!=g[2]||f[3]!=g[3])||"s"==f[0].toLowerCase()&&(f[3]!=g[3]||f[4]!=g[4]))return;for(i[k]=[],j[k]=[],d=0,e=O(f.length,g.length);e>d;d++)d in f&&(i[k][d]=f[d]),d in g&&(j[k][d]=g[d])
-}return{from:i,to:j}};c._getContainer=function(a,b,d,e){var f;return f=null!=e||c.is(a,"object")?a:A.doc.getElementById(a),null!=f?f.tagName?null==b?{container:f,width:f.style.pixelWidth||f.offsetWidth,height:f.style.pixelHeight||f.offsetHeight}:{container:f,width:b,height:d}:{container:1,x:a,y:b,width:d,height:e}:void 0},c.pathToRelative=Db,c._engine={},c.path2curve=Kb,c.matrix=function(a,b,c,d,e,f){return new o(a,b,c,d,e,f)},function(a){function b(a){return a[0]*a[0]+a[1]*a[1]}function d(a){var c=N.sqrt(b(a));a[0]&&(a[0]/=c),a[1]&&(a[1]/=c)}a.add=function(a,b,c,d,e,f){var g,h,i,j,k=[[],[],[]],l=[[this.a,this.c,this.e],[this.b,this.d,this.f],[0,0,1]],m=[[a,c,e],[b,d,f],[0,0,1]];for(a&&a instanceof o&&(m=[[a.a,a.c,a.e],[a.b,a.d,a.f],[0,0,1]]),g=0;3>g;g++)for(h=0;3>h;h++){for(j=0,i=0;3>i;i++)j+=l[g][i]*m[i][h];k[g][h]=j}this.a=k[0][0],this.b=k[1][0],this.c=k[0][1],this.d=k[1][1],this.e=k[0][2],this.f=k[1][2]},a.invert=function(){var a=this,b=a.a*a.d-a.b*a.c;return new o(a.d/b,-a.b/b,-a.c/b,a.a/b,(a.c*a.f-a.d*a.e)/b,(a.b*a.e-a.a*a.f)/b)},a.clone=function(){return new o(this.a,this.b,this.c,this.d,this.e,this.f)},a.translate=function(a,b){this.add(1,0,0,1,a,b)},a.scale=function(a,b,c,d){null==b&&(b=a),(c||d)&&this.add(1,0,0,1,c,d),this.add(a,0,0,b,0,0),(c||d)&&this.add(1,0,0,1,-c,-d)},a.rotate=function(a,b,d){a=c.rad(a),b=b||0,d=d||0;var e=+N.cos(a).toFixed(9),f=+N.sin(a).toFixed(9);this.add(e,f,-f,e,b,d),this.add(1,0,0,1,-b,-d)},a.x=function(a,b){return a*this.a+b*this.c+this.e},a.y=function(a,b){return a*this.b+b*this.d+this.f},a.get=function(a){return+this[I.fromCharCode(97+a)].toFixed(4)},a.toString=function(){return c.svg?"matrix("+[this.get(0),this.get(1),this.get(2),this.get(3),this.get(4),this.get(5)].join()+")":[this.get(0),this.get(2),this.get(1),this.get(3),0,0].join()},a.toFilter=function(){return"progid:DXImageTransform.Microsoft.Matrix(M11="+this.get(0)+", M12="+this.get(2)+", M21="+this.get(1)+", M22="+this.get(3)+", Dx="+this.get(4)+", Dy="+this.get(5)+", sizingmethod='auto expand')"},a.offset=function(){return[this.e.toFixed(4),this.f.toFixed(4)]},a.split=function(){var a={};a.dx=this.e,a.dy=this.f;var e=[[this.a,this.c],[this.b,this.d]];a.scalex=N.sqrt(b(e[0])),d(e[0]),a.shear=e[0][0]*e[1][0]+e[0][1]*e[1][1],e[1]=[e[1][0]-e[0][0]*a.shear,e[1][1]-e[0][1]*a.shear],a.scaley=N.sqrt(b(e[1])),d(e[1]),a.shear/=a.scaley;var f=-e[0][1],g=e[1][1];return 0>g?(a.rotate=c.deg(N.acos(g)),0>f&&(a.rotate=360-a.rotate)):a.rotate=c.deg(N.asin(f)),a.isSimple=!(+a.shear.toFixed(9)||a.scalex.toFixed(9)!=a.scaley.toFixed(9)&&a.rotate),a.isSuperSimple=!+a.shear.toFixed(9)&&a.scalex.toFixed(9)==a.scaley.toFixed(9)&&!a.rotate,a.noRotation=!+a.shear.toFixed(9)&&!a.rotate,a},a.toTransformString=function(a){var b=a||this[J]();return b.isSimple?(b.scalex=+b.scalex.toFixed(4),b.scaley=+b.scaley.toFixed(4),b.rotate=+b.rotate.toFixed(4),(b.dx||b.dy?"t"+[b.dx,b.dy]:G)+(1!=b.scalex||1!=b.scaley?"s"+[b.scalex,b.scaley,0,0]:G)+(b.rotate?"r"+[b.rotate,0,0]:G)):"m"+[this.get(0),this.get(1),this.get(2),this.get(3),this.get(4),this.get(5)]}}(o.prototype);var Qb=navigator.userAgent.match(/Version\/(.*?)\s/)||navigator.userAgent.match(/Chrome\/(\d+)/);v.safari="Apple Computer, Inc."==navigator.vendor&&(Qb&&Qb[1]<4||"iP"==navigator.platform.slice(0,2))||"Google Inc."==navigator.vendor&&Qb&&Qb[1]<8?function(){var a=this.rect(-99,-99,this.width+99,this.height+99).attr({stroke:"none"});setTimeout(function(){a.remove()})}:mb;for(var Rb=function(){this.returnValue=!1},Sb=function(){return this.originalEvent.preventDefault()},Tb=function(){this.cancelBubble=!0},Ub=function(){return this.originalEvent.stopPropagation()},Vb=function(a){var b=A.doc.documentElement.scrollTop||A.doc.body.scrollTop,c=A.doc.documentElement.scrollLeft||A.doc.body.scrollLeft;return{x:a.clientX+c,y:a.clientY+b}},Wb=function(){return A.doc.addEventListener?function(a,b,c,d){var e=function(a){var b=Vb(a);return c.call(d,a,b.x,b.y)};if(a.addEventListener(b,e,!1),F&&L[b]){var f=function(b){for(var e=Vb(b),f=b,g=0,h=b.targetTouches&&b.targetTouches.length;h>g;g++)if(b.targetTouches[g].target==a){b=b.targetTouches[g],b.originalEvent=f,b.preventDefault=Sb,b.stopPropagation=Ub;break}return c.call(d,b,e.x,e.y)};a.addEventListener(L[b],f,!1)}return function(){return a.removeEventListener(b,e,!1),F&&L[b]&&a.removeEventListener(L[b],e,!1),!0}}:A.doc.attachEvent?function(a,b,c,d){var e=function(a){a=a||A.win.event;var b=A.doc.documentElement.scrollTop||A.doc.body.scrollTop,e=A.doc.documentElement.scrollLeft||A.doc.body.scrollLeft,f=a.clientX+e,g=a.clientY+b;return a.preventDefault=a.preventDefault||Rb,a.stopPropagation=a.stopPropagation||Tb,c.call(d,a,f,g)};a.attachEvent("on"+b,e);var f=function(){return a.detachEvent("on"+b,e),!0};return f}:void 0}(),Xb=[],Yb=function(a){for(var c,d=a.clientX,e=a.clientY,f=A.doc.documentElement.scrollTop||A.doc.body.scrollTop,g=A.doc.documentElement.scrollLeft||A.doc.body.scrollLeft,h=Xb.length;h--;){if(c=Xb[h],F&&a.touches){for(var i,j=a.touches.length;j--;)if(i=a.touches[j],i.identifier==c.el._drag.id){d=i.clientX,e=i.clientY,(a.originalEvent?a.originalEvent:a).preventDefault();break}}else a.preventDefault();var k,l=c.el.node,m=l.nextSibling,n=l.parentNode,o=l.style.display;A.win.opera&&n.removeChild(l),l.style.display="none",k=c.el.paper.getElementByPoint(d,e),l.style.display=o,A.win.opera&&(m?n.insertBefore(l,m):n.appendChild(l)),k&&b("raphael.drag.over."+c.el.id,c.el,k),d+=g,e+=f,b("raphael.drag.move."+c.el.id,c.move_scope||c.el,d-c.el._drag.x,e-c.el._drag.y,d,e,a)}},Zb=function(a){c.unmousemove(Yb).unmouseup(Zb);for(var d,e=Xb.length;e--;)d=Xb[e],d.el._drag={},b("raphael.drag.end."+d.el.id,d.end_scope||d.start_scope||d.move_scope||d.el,a);Xb=[]},$b=c.el={},_b=K.length;_b--;)!function(a){c[a]=$b[a]=function(b,d){return c.is(b,"function")&&(this.events=this.events||[],this.events.push({name:a,f:b,unbind:Wb(this.shape||this.node||A.doc,a,b,d||this)})),this},c["un"+a]=$b["un"+a]=function(b){for(var d=this.events||[],e=d.length;e--;)d[e].name!=a||!c.is(b,"undefined")&&d[e].f!=b||(d[e].unbind(),d.splice(e,1),!d.length&&delete this.events);return this}}(K[_b]);$b.data=function(a,d){var e=kb[this.id]=kb[this.id]||{};if(0==arguments.length)return e;if(1==arguments.length){if(c.is(a,"object")){for(var f in a)a[z](f)&&this.data(f,a[f]);return this}return b("raphael.data.get."+this.id,this,e[a],a),e[a]}return e[a]=d,b("raphael.data.set."+this.id,this,d,a),this},$b.removeData=function(a){return null==a?kb[this.id]={}:kb[this.id]&&delete kb[this.id][a],this},$b.getData=function(){return d(kb[this.id]||{})},$b.hover=function(a,b,c,d){return this.mouseover(a,c).mouseout(b,d||c)},$b.unhover=function(a,b){return this.unmouseover(a).unmouseout(b)};var ac=[];$b.drag=function(a,d,e,f,g,h){function i(i){(i.originalEvent||i).preventDefault();var j=i.clientX,k=i.clientY,l=A.doc.documentElement.scrollTop||A.doc.body.scrollTop,m=A.doc.documentElement.scrollLeft||A.doc.body.scrollLeft;if(this._drag.id=i.identifier,F&&i.touches)for(var n,o=i.touches.length;o--;)if(n=i.touches[o],this._drag.id=n.identifier,n.identifier==this._drag.id){j=n.clientX,k=n.clientY;break}this._drag.x=j+m,this._drag.y=k+l,!Xb.length&&c.mousemove(Yb).mouseup(Zb),Xb.push({el:this,move_scope:f,start_scope:g,end_scope:h}),d&&b.on("raphael.drag.start."+this.id,d),a&&b.on("raphael.drag.move."+this.id,a),e&&b.on("raphael.drag.end."+this.id,e),b("raphael.drag.start."+this.id,g||f||this,i.clientX+m,i.clientY+l,i)}return this._drag={},ac.push({el:this,start:i}),this.mousedown(i),this},$b.onDragOver=function(a){a?b.on("raphael.drag.over."+this.id,a):b.unbind("raphael.drag.over."+this.id)},$b.undrag=function(){for(var a=ac.length;a--;)ac[a].el==this&&(this.unmousedown(ac[a].start),ac.splice(a,1),b.unbind("raphael.drag.*."+this.id));!ac.length&&c.unmousemove(Yb).unmouseup(Zb),Xb=[]},v.circle=function(a,b,d){var e=c._engine.circle(this,a||0,b||0,d||0);return this.__set__&&this.__set__.push(e),e},v.rect=function(a,b,d,e,f){var g=c._engine.rect(this,a||0,b||0,d||0,e||0,f||0);return this.__set__&&this.__set__.push(g),g},v.ellipse=function(a,b,d,e){var f=c._engine.ellipse(this,a||0,b||0,d||0,e||0);return this.__set__&&this.__set__.push(f),f},v.path=function(a){a&&!c.is(a,U)&&!c.is(a[0],V)&&(a+=G);var b=c._engine.path(c.format[D](c,arguments),this);return this.__set__&&this.__set__.push(b),b},v.image=function(a,b,d,e,f){var g=c._engine.image(this,a||"about:blank",b||0,d||0,e||0,f||0);return this.__set__&&this.__set__.push(g),g},v.text=function(a,b,d){var e=c._engine.text(this,a||0,b||0,I(d));return this.__set__&&this.__set__.push(e),e},v.set=function(a){!c.is(a,"array")&&(a=Array.prototype.splice.call(arguments,0,arguments.length));var b=new mc(a);return this.__set__&&this.__set__.push(b),b.paper=this,b.type="set",b},v.setStart=function(a){this.__set__=a||this.set()},v.setFinish=function(){var a=this.__set__;return delete this.__set__,a},v.setSize=function(a,b){return c._engine.setSize.call(this,a,b)},v.setViewBox=function(a,b,d,e,f){return c._engine.setViewBox.call(this,a,b,d,e,f)},v.top=v.bottom=null,v.raphael=c;var bc=function(a){var b=a.getBoundingClientRect(),c=a.ownerDocument,d=c.body,e=c.documentElement,f=e.clientTop||d.clientTop||0,g=e.clientLeft||d.clientLeft||0,h=b.top+(A.win.pageYOffset||e.scrollTop||d.scrollTop)-f,i=b.left+(A.win.pageXOffset||e.scrollLeft||d.scrollLeft)-g;return{y:h,x:i}};v.getElementByPoint=function(a,b){var c=this,d=c.canvas,e=A.doc.elementFromPoint(a,b);if(A.win.opera&&"svg"==e.tagName){var f=bc(d),g=d.createSVGRect();g.x=a-f.x,g.y=b-f.y,g.width=g.height=1;var h=d.getIntersectionList(g,null);h.length&&(e=h[h.length-1])}if(!e)return null;for(;e.parentNode&&e!=d.parentNode&&!e.raphael;)e=e.parentNode;return e==c.canvas.parentNode&&(e=d),e=e&&e.raphael?c.getById(e.raphaelid):null},v.getElementsByBBox=function(a){var b=this.set();return this.forEach(function(d){c.isBBoxIntersect(d.getBBox(),a)&&b.push(d)}),b},v.getById=function(a){for(var b=this.bottom;b;){if(b.id==a)return b;b=b.next}return null},v.forEach=function(a,b){for(var c=this.bottom;c;){if(a.call(b,c)===!1)return this;c=c.next}return this},v.getElementsByPoint=function(a,b){var c=this.set();return this.forEach(function(d){d.isPointInside(a,b)&&c.push(d)}),c},$b.isPointInside=function(a,b){var d=this.realPath=qb[this.type](this);return this.attr("transform")&&this.attr("transform").length&&(d=c.transformPath(d,this.attr("transform"))),c.isPointInsidePath(d,a,b)},$b.getBBox=function(a){if(this.removed)return{};var b=this._;return a?((b.dirty||!b.bboxwt)&&(this.realPath=qb[this.type](this),b.bboxwt=Bb(this.realPath),b.bboxwt.toString=p,b.dirty=0),b.bboxwt):((b.dirty||b.dirtyT||!b.bbox)&&((b.dirty||!this.realPath)&&(b.bboxwt=0,this.realPath=qb[this.type](this)),b.bbox=Bb(rb(this.realPath,this.matrix)),b.bbox.toString=p,b.dirty=b.dirtyT=0),b.bbox)},$b.clone=function(){if(this.removed)return null;var a=this.paper[this.type]().attr(this.attr());return this.__set__&&this.__set__.push(a),a},$b.glow=function(a){if("text"==this.type)return null;a=a||{};var b={width:(a.width||10)+(+this.attr("stroke-width")||1),fill:a.fill||!1,opacity:a.opacity||.5,offsetx:a.offsetx||0,offsety:a.offsety||0,color:a.color||"#000"},c=b.width/2,d=this.paper,e=d.set(),f=this.realPath||qb[this.type](this);f=this.matrix?rb(f,this.matrix):f;for(var g=1;c+1>g;g++)e.push(d.path(f).attr({stroke:b.color,fill:b.fill?b.color:"none","stroke-linejoin":"round","stroke-linecap":"round","stroke-width":+(b.width/c*g).toFixed(3),opacity:+(b.opacity/c).toFixed(3)}));return e.insertBefore(this).translate(b.offsetx,b.offsety)};var cc=function(a,b,d,e,f,g,h,i,l){return null==l?j(a,b,d,e,f,g,h,i):c.findDotsAtSegment(a,b,d,e,f,g,h,i,k(a,b,d,e,f,g,h,i,l))},dc=function(a,b){return function(d,e,f){d=Kb(d);for(var g,h,i,j,k,l="",m={},n=0,o=0,p=d.length;p>o;o++){if(i=d[o],"M"==i[0])g=+i[1],h=+i[2];else{if(j=cc(g,h,i[1],i[2],i[3],i[4],i[5],i[6]),n+j>e){if(b&&!m.start){if(k=cc(g,h,i[1],i[2],i[3],i[4],i[5],i[6],e-n),l+=["C"+k.start.x,k.start.y,k.m.x,k.m.y,k.x,k.y],f)return l;m.start=l,l=["M"+k.x,k.y+"C"+k.n.x,k.n.y,k.end.x,k.end.y,i[5],i[6]].join(),n+=j,g=+i[5],h=+i[6];continue}if(!a&&!b)return k=cc(g,h,i[1],i[2],i[3],i[4],i[5],i[6],e-n),{x:k.x,y:k.y,alpha:k.alpha}}n+=j,g=+i[5],h=+i[6]}l+=i.shift()+i}return m.end=l,k=a?n:b?m:c.findDotsAtSegment(g,h,i[0],i[1],i[2],i[3],i[4],i[5],1),k.alpha&&(k={x:k.x,y:k.y,alpha:k.alpha}),k}},ec=dc(1),fc=dc(),gc=dc(0,1);c.getTotalLength=ec,c.getPointAtLength=fc,c.getSubpath=function(a,b,c){if(this.getTotalLength(a)-c<1e-6)return gc(a,b).end;var d=gc(a,c,1);return b?gc(d,b).end:d},$b.getTotalLength=function(){var a=this.getPath();if(a)return this.node.getTotalLength?this.node.getTotalLength():ec(a)},$b.getPointAtLength=function(a){var b=this.getPath();if(b)return fc(b,a)},$b.getPath=function(){var a,b=c._getPath[this.type];if("text"!=this.type&&"set"!=this.type)return b&&(a=b(this)),a},$b.getSubpath=function(a,b){var d=this.getPath();if(d)return c.getSubpath(d,a,b)};var hc=c.easing_formulas={linear:function(a){return a},"<":function(a){return R(a,1.7)},">":function(a){return R(a,.48)},"<>":function(a){var b=.48-a/1.04,c=N.sqrt(.1734+b*b),d=c-b,e=R(Q(d),1/3)*(0>d?-1:1),f=-c-b,g=R(Q(f),1/3)*(0>f?-1:1),h=e+g+.5;return 3*(1-h)*h*h+h*h*h},backIn:function(a){var b=1.70158;return a*a*((b+1)*a-b)},backOut:function(a){a-=1;var b=1.70158;return a*a*((b+1)*a+b)+1},elastic:function(a){return a==!!a?a:R(2,-10*a)*N.sin((a-.075)*2*S/.3)+1},bounce:function(a){var b,c=7.5625,d=2.75;return 1/d>a?b=c*a*a:2/d>a?(a-=1.5/d,b=c*a*a+.75):2.5/d>a?(a-=2.25/d,b=c*a*a+.9375):(a-=2.625/d,b=c*a*a+.984375),b}};hc.easeIn=hc["ease-in"]=hc["<"],hc.easeOut=hc["ease-out"]=hc[">"],hc.easeInOut=hc["ease-in-out"]=hc["<>"],hc["back-in"]=hc.backIn,hc["back-out"]=hc.backOut;var ic=[],jc=a.requestAnimationFrame||a.webkitRequestAnimationFrame||a.mozRequestAnimationFrame||a.oRequestAnimationFrame||a.msRequestAnimationFrame||function(a){setTimeout(a,16)},kc=function(){for(var a=+new Date,d=0;d<ic.length;d++){var e=ic[d];if(!e.el.removed&&!e.paused){var f,g,h=a-e.start,i=e.ms,j=e.easing,k=e.from,l=e.diff,m=e.to,n=(e.t,e.el),o={},p={};if(e.initstatus?(h=(e.initstatus*e.anim.top-e.prev)/(e.percent-e.prev)*i,e.status=e.initstatus,delete e.initstatus,e.stop&&ic.splice(d--,1)):e.status=(e.prev+(e.percent-e.prev)*(h/i))/e.anim.top,!(0>h))if(i>h){var q=j(h/i);for(var r in k)if(k[z](r)){switch(db[r]){case T:f=+k[r]+q*i*l[r];break;case"colour":f="rgb("+[lc($(k[r].r+q*i*l[r].r)),lc($(k[r].g+q*i*l[r].g)),lc($(k[r].b+q*i*l[r].b))].join(",")+")";break;case"path":f=[];for(var t=0,u=k[r].length;u>t;t++){f[t]=[k[r][t][0]];for(var v=1,w=k[r][t].length;w>v;v++)f[t][v]=+k[r][t][v]+q*i*l[r][t][v];f[t]=f[t].join(H)}f=f.join(H);break;case"transform":if(l[r].real)for(f=[],t=0,u=k[r].length;u>t;t++)for(f[t]=[k[r][t][0]],v=1,w=k[r][t].length;w>v;v++)f[t][v]=k[r][t][v]+q*i*l[r][t][v];else{var x=function(a){return+k[r][a]+q*i*l[r][a]};f=[["m",x(0),x(1),x(2),x(3),x(4),x(5)]]}break;case"csv":if("clip-rect"==r)for(f=[],t=4;t--;)f[t]=+k[r][t]+q*i*l[r][t];break;default:var y=[][E](k[r]);for(f=[],t=n.paper.customAttributes[r].length;t--;)f[t]=+y[t]+q*i*l[r][t]}o[r]=f}n.attr(o),function(a,c,d){setTimeout(function(){b("raphael.anim.frame."+a,c,d)})}(n.id,n,e.anim)}else{if(function(a,d,e){setTimeout(function(){b("raphael.anim.frame."+d.id,d,e),b("raphael.anim.finish."+d.id,d,e),c.is(a,"function")&&a.call(d)})}(e.callback,n,e.anim),n.attr(m),ic.splice(d--,1),e.repeat>1&&!e.next){for(g in m)m[z](g)&&(p[g]=e.totalOrigin[g]);e.el.attr(p),s(e.anim,e.el,e.anim.percents[0],null,e.totalOrigin,e.repeat-1)}e.next&&!e.stop&&s(e.anim,e.el,e.next,null,e.totalOrigin,e.repeat)}}}c.svg&&n&&n.paper&&n.paper.safari(),ic.length&&jc(kc)},lc=function(a){return a>255?255:0>a?0:a};$b.animateWith=function(a,b,d,e,f,g){var h=this;if(h.removed)return g&&g.call(h),h;var i=d instanceof r?d:c.animation(d,e,f,g);s(i,h,i.percents[0],null,h.attr());for(var j=0,k=ic.length;k>j;j++)if(ic[j].anim==b&&ic[j].el==a){ic[k-1].start=ic[j].start;break}return h},$b.onAnimation=function(a){return a?b.on("raphael.anim.frame."+this.id,a):b.unbind("raphael.anim.frame."+this.id),this},r.prototype.delay=function(a){var b=new r(this.anim,this.ms);return b.times=this.times,b.del=+a||0,b},r.prototype.repeat=function(a){var b=new r(this.anim,this.ms);return b.del=this.del,b.times=N.floor(O(a,0))||1,b},c.animation=function(a,b,d,e){if(a instanceof r)return a;(c.is(d,"function")||!d)&&(e=e||d||null,d=null),a=Object(a),b=+b||0;var f,g,h={};for(g in a)a[z](g)&&_(g)!=g&&_(g)+"%"!=g&&(f=!0,h[g]=a[g]);return f?(d&&(h.easing=d),e&&(h.callback=e),new r({100:h},b)):new r(a,b)},$b.animate=function(a,b,d,e){var f=this;if(f.removed)return e&&e.call(f),f;var g=a instanceof r?a:c.animation(a,b,d,e);return s(g,f,g.percents[0],null,f.attr()),f},$b.setTime=function(a,b){return a&&null!=b&&this.status(a,P(b,a.ms)/a.ms),this},$b.status=function(a,b){var c,d,e=[],f=0;if(null!=b)return s(a,this,-1,P(b,1)),this;for(c=ic.length;c>f;f++)if(d=ic[f],d.el.id==this.id&&(!a||d.anim==a)){if(a)return d.status;e.push({anim:d.anim,status:d.status})}return a?0:e},$b.pause=function(a){for(var c=0;c<ic.length;c++)ic[c].el.id!=this.id||a&&ic[c].anim!=a||b("raphael.anim.pause."+this.id,this,ic[c].anim)!==!1&&(ic[c].paused=!0);return this},$b.resume=function(a){for(var c=0;c<ic.length;c++)if(ic[c].el.id==this.id&&(!a||ic[c].anim==a)){var d=ic[c];b("raphael.anim.resume."+this.id,this,d.anim)!==!1&&(delete d.paused,this.status(d.anim,d.status))}return this},$b.stop=function(a){for(var c=0;c<ic.length;c++)ic[c].el.id!=this.id||a&&ic[c].anim!=a||b("raphael.anim.stop."+this.id,this,ic[c].anim)!==!1&&ic.splice(c--,1);return this},b.on("raphael.remove",t),b.on("raphael.clear",t),$b.toString=function(){return"Raphaël’s object"};var mc=function(a){if(this.items=[],this.length=0,this.type="set",a)for(var b=0,c=a.length;c>b;b++)!a[b]||a[b].constructor!=$b.constructor&&a[b].constructor!=mc||(this[this.items.length]=this.items[this.items.length]=a[b],this.length++)},nc=mc.prototype;nc.push=function(){for(var a,b,c=0,d=arguments.length;d>c;c++)a=arguments[c],!a||a.constructor!=$b.constructor&&a.constructor!=mc||(b=this.items.length,this[b]=this.items[b]=a,this.length++);return this},nc.pop=function(){return this.length&&delete this[this.length--],this.items.pop()},nc.forEach=function(a,b){for(var c=0,d=this.items.length;d>c;c++)if(a.call(b,this.items[c],c)===!1)return this;return this};for(var oc in $b)$b[z](oc)&&(nc[oc]=function(a){return function(){var b=arguments;return this.forEach(function(c){c[a][D](c,b)})}}(oc));return nc.attr=function(a,b){if(a&&c.is(a,V)&&c.is(a[0],"object"))for(var d=0,e=a.length;e>d;d++)this.items[d].attr(a[d]);else for(var f=0,g=this.items.length;g>f;f++)this.items[f].attr(a,b);return this},nc.clear=function(){for(;this.length;)this.pop()},nc.splice=function(a,b){a=0>a?O(this.length+a,0):a,b=O(0,P(this.length-a,b));var c,d=[],e=[],f=[];for(c=2;c<arguments.length;c++)f.push(arguments[c]);for(c=0;b>c;c++)e.push(this[a+c]);for(;c<this.length-a;c++)d.push(this[a+c]);var g=f.length;for(c=0;c<g+d.length;c++)this.items[a+c]=this[a+c]=g>c?f[c]:d[c-g];for(c=this.items.length=this.length-=b-g;this[c];)delete this[c++];return new mc(e)},nc.exclude=function(a){for(var b=0,c=this.length;c>b;b++)if(this[b]==a)return this.splice(b,1),!0},nc.animate=function(a,b,d,e){(c.is(d,"function")||!d)&&(e=d||null);var f,g,h=this.items.length,i=h,j=this;if(!h)return this;e&&(g=function(){!--h&&e.call(j)}),d=c.is(d,U)?d:g;var k=c.animation(a,b,d,g);for(f=this.items[--i].animate(k);i--;)this.items[i]&&!this.items[i].removed&&this.items[i].animateWith(f,k,k),this.items[i]&&!this.items[i].removed||h--;return this},nc.insertAfter=function(a){for(var b=this.items.length;b--;)this.items[b].insertAfter(a);return this},nc.getBBox=function(){for(var a=[],b=[],c=[],d=[],e=this.items.length;e--;)if(!this.items[e].removed){var f=this.items[e].getBBox();a.push(f.x),b.push(f.y),c.push(f.x+f.width),d.push(f.y+f.height)}return a=P[D](0,a),b=P[D](0,b),c=O[D](0,c),d=O[D](0,d),{x:a,y:b,x2:c,y2:d,width:c-a,height:d-b}},nc.clone=function(a){a=this.paper.set();for(var b=0,c=this.items.length;c>b;b++)a.push(this.items[b].clone());return a},nc.toString=function(){return"Raphaël‘s set"},nc.glow=function(a){var b=this.paper.set();return this.forEach(function(c){var d=c.glow(a);null!=d&&d.forEach(function(a){b.push(a)})}),b},nc.isPointInside=function(a,b){var c=!1;return this.forEach(function(d){return d.isPointInside(a,b)?(console.log("runned"),c=!0,!1):void 0}),c},c.registerFont=function(a){if(!a.face)return a;this.fonts=this.fonts||{};var b={w:a.w,face:{},glyphs:{}},c=a.face["font-family"];for(var d in a.face)a.face[z](d)&&(b.face[d]=a.face[d]);if(this.fonts[c]?this.fonts[c].push(b):this.fonts[c]=[b],!a.svg){b.face["units-per-em"]=ab(a.face["units-per-em"],10);for(var e in a.glyphs)if(a.glyphs[z](e)){var f=a.glyphs[e];if(b.glyphs[e]={w:f.w,k:{},d:f.d&&"M"+f.d.replace(/[mlcxtrv]/g,function(a){return{l:"L",c:"C",x:"z",t:"m",r:"l",v:"c"}[a]||"M"})+"z"},f.k)for(var g in f.k)f[z](g)&&(b.glyphs[e].k[g]=f.k[g])}}return a},v.getFont=function(a,b,d,e){if(e=e||"normal",d=d||"normal",b=+b||{normal:400,bold:700,lighter:300,bolder:800}[b]||400,c.fonts){var f=c.fonts[a];if(!f){var g=new RegExp("(^|\\s)"+a.replace(/[^\w\d\s+!~.:_-]/g,G)+"(\\s|$)","i");for(var h in c.fonts)if(c.fonts[z](h)&&g.test(h)){f=c.fonts[h];break}}var i;if(f)for(var j=0,k=f.length;k>j&&(i=f[j],i.face["font-weight"]!=b||i.face["font-style"]!=d&&i.face["font-style"]||i.face["font-stretch"]!=e);j++);return i}},v.print=function(a,b,d,e,f,g,h,i){g=g||"middle",h=O(P(h||0,1),-1),i=O(P(i||1,3),1);var j,k=I(d)[J](G),l=0,m=0,n=G;if(c.is(e,"string")&&(e=this.getFont(e)),e){j=(f||16)/e.face["units-per-em"];for(var o=e.face.bbox[J](w),p=+o[0],q=o[3]-o[1],r=0,s=+o[1]+("baseline"==g?q+ +e.face.descent:q/2),t=0,u=k.length;u>t;t++){if("\n"==k[t])l=0,x=0,m=0,r+=q*i;else{var v=m&&e.glyphs[k[t-1]]||{},x=e.glyphs[k[t]];l+=m?(v.w||e.w)+(v.k&&v.k[k[t]]||0)+e.w*h:0,m=1}x&&x.d&&(n+=c.transformPath(x.d,["t",l*j,r*j,"s",j,j,p,s,"t",(a-p)/j,(b-s)/j]))}}return this.path(n).attr({fill:"#000",stroke:"none"})},v.add=function(a){if(c.is(a,"array"))for(var b,d=this.set(),e=0,f=a.length;f>e;e++)b=a[e]||{},x[z](b.type)&&d.push(this[b.type]().attr(b));return d},c.format=function(a,b){var d=c.is(b,V)?[0][E](b):arguments;return a&&c.is(a,U)&&d.length-1&&(a=a.replace(y,function(a,b){return null==d[++b]?G:d[b]})),a||G},c.fullfill=function(){var a=/\{([^\}]+)\}/g,b=/(?:(?:^|\.)(.+?)(?=\[|\.|$|\()|\[('|")(.+?)\2\])(\(\))?/g,c=function(a,c,d){var e=d;return c.replace(b,function(a,b,c,d,f){b=b||d,e&&(b in e&&(e=e[b]),"function"==typeof e&&f&&(e=e()))}),e=(null==e||e==d?a:e)+""};return function(b,d){return String(b).replace(a,function(a,b){return c(a,b,d)})}}(),c.ninja=function(){return B.was?A.win.Raphael=B.is:delete Raphael,c},c.st=nc,function(a,b,d){function e(){/in/.test(a.readyState)?setTimeout(e,9):c.eve("raphael.DOMload")}null==a.readyState&&a.addEventListener&&(a.addEventListener(b,d=function(){a.removeEventListener(b,d,!1),a.readyState="complete"},!1),a.readyState="loading"),e()}(document,"DOMContentLoaded"),b.on("raphael.DOMload",function(){u=!0}),function(){if(c.svg){var a="hasOwnProperty",b=String,d=parseFloat,e=parseInt,f=Math,g=f.max,h=f.abs,i=f.pow,j=/[, ]+/,k=c.eve,l="",m=" ",n="http://www.w3.org/1999/xlink",o={block:"M5,0 0,2.5 5,5z",classic:"M5,0 0,2.5 5,5 3.5,3 3.5,2z",diamond:"M2.5,0 5,2.5 2.5,5 0,2.5z",open:"M6,1 1,3.5 6,6",oval:"M2.5,0A2.5,2.5,0,0,1,2.5,5 2.5,2.5,0,0,1,2.5,0z"},p={};c.toString=function(){return"Your browser supports SVG.\nYou are running Raphaël "+this.version};var q=function(d,e){if(e){"string"==typeof d&&(d=q(d));for(var f in e)e[a](f)&&("xlink:"==f.substring(0,6)?d.setAttributeNS(n,f.substring(6),b(e[f])):d.setAttribute(f,b(e[f])))}else d=c._g.doc.createElementNS("http://www.w3.org/2000/svg",d),d.style&&(d.style.webkitTapHighlightColor="rgba(0,0,0,0)");return d},r=function(a,e){var j="linear",k=a.id+e,m=.5,n=.5,o=a.node,p=a.paper,r=o.style,s=c._g.doc.getElementById(k);if(!s){if(e=b(e).replace(c._radial_gradient,function(a,b,c){if(j="radial",b&&c){m=d(b),n=d(c);var e=2*(n>.5)-1;i(m-.5,2)+i(n-.5,2)>.25&&(n=f.sqrt(.25-i(m-.5,2))*e+.5)&&.5!=n&&(n=n.toFixed(5)-1e-5*e)}return l}),e=e.split(/\s*\-\s*/),"linear"==j){var t=e.shift();if(t=-d(t),isNaN(t))return null;var u=[0,0,f.cos(c.rad(t)),f.sin(c.rad(t))],v=1/(g(h(u[2]),h(u[3]))||1);u[2]*=v,u[3]*=v,u[2]<0&&(u[0]=-u[2],u[2]=0),u[3]<0&&(u[1]=-u[3],u[3]=0)}var w=c._parseDots(e);if(!w)return null;if(k=k.replace(/[\(\)\s,\xb0#]/g,"_"),a.gradient&&k!=a.gradient.id&&(p.defs.removeChild(a.gradient),delete a.gradient),!a.gradient){s=q(j+"Gradient",{id:k}),a.gradient=s,q(s,"radial"==j?{fx:m,fy:n}:{x1:u[0],y1:u[1],x2:u[2],y2:u[3],gradientTransform:a.matrix.invert()}),p.defs.appendChild(s);for(var x=0,y=w.length;y>x;x++)s.appendChild(q("stop",{offset:w[x].offset?w[x].offset:x?"100%":"0%","stop-color":w[x].color||"#fff"}))}}return q(o,{fill:"url(#"+k+")",opacity:1,"fill-opacity":1}),r.fill=l,r.opacity=1,r.fillOpacity=1,1},s=function(a){var b=a.getBBox(1);q(a.pattern,{patternTransform:a.matrix.invert()+" translate("+b.x+","+b.y+")"})},t=function(d,e,f){if("path"==d.type){for(var g,h,i,j,k,m=b(e).toLowerCase().split("-"),n=d.paper,r=f?"end":"start",s=d.node,t=d.attrs,u=t["stroke-width"],v=m.length,w="classic",x=3,y=3,z=5;v--;)switch(m[v]){case"block":case"classic":case"oval":case"diamond":case"open":case"none":w=m[v];break;case"wide":y=5;break;case"narrow":y=2;break;case"long":x=5;break;case"short":x=2}if("open"==w?(x+=2,y+=2,z+=2,i=1,j=f?4:1,k={fill:"none",stroke:t.stroke}):(j=i=x/2,k={fill:t.stroke,stroke:"none"}),d._.arrows?f?(d._.arrows.endPath&&p[d._.arrows.endPath]--,d._.arrows.endMarker&&p[d._.arrows.endMarker]--):(d._.arrows.startPath&&p[d._.arrows.startPath]--,d._.arrows.startMarker&&p[d._.arrows.startMarker]--):d._.arrows={},"none"!=w){var A="raphael-marker-"+w,B="raphael-marker-"+r+w+x+y;c._g.doc.getElementById(A)?p[A]++:(n.defs.appendChild(q(q("path"),{"stroke-linecap":"round",d:o[w],id:A})),p[A]=1);var C,D=c._g.doc.getElementById(B);D?(p[B]++,C=D.getElementsByTagName("use")[0]):(D=q(q("marker"),{id:B,markerHeight:y,markerWidth:x,orient:"auto",refX:j,refY:y/2}),C=q(q("use"),{"xlink:href":"#"+A,transform:(f?"rotate(180 "+x/2+" "+y/2+") ":l)+"scale("+x/z+","+y/z+")","stroke-width":(1/((x/z+y/z)/2)).toFixed(4)}),D.appendChild(C),n.defs.appendChild(D),p[B]=1),q(C,k);var E=i*("diamond"!=w&&"oval"!=w);f?(g=d._.arrows.startdx*u||0,h=c.getTotalLength(t.path)-E*u):(g=E*u,h=c.getTotalLength(t.path)-(d._.arrows.enddx*u||0)),k={},k["marker-"+r]="url(#"+B+")",(h||g)&&(k.d=c.getSubpath(t.path,g,h)),q(s,k),d._.arrows[r+"Path"]=A,d._.arrows[r+"Marker"]=B,d._.arrows[r+"dx"]=E,d._.arrows[r+"Type"]=w,d._.arrows[r+"String"]=e}else f?(g=d._.arrows.startdx*u||0,h=c.getTotalLength(t.path)-g):(g=0,h=c.getTotalLength(t.path)-(d._.arrows.enddx*u||0)),d._.arrows[r+"Path"]&&q(s,{d:c.getSubpath(t.path,g,h)}),delete d._.arrows[r+"Path"],delete d._.arrows[r+"Marker"],delete d._.arrows[r+"dx"],delete d._.arrows[r+"Type"],delete d._.arrows[r+"String"];for(k in p)if(p[a](k)&&!p[k]){var F=c._g.doc.getElementById(k);F&&F.parentNode.removeChild(F)}}},u={"":[0],none:[0],"-":[3,1],".":[1,1],"-.":[3,1,1,1],"-..":[3,1,1,1,1,1],". ":[1,3],"- ":[4,3],"--":[8,3],"- .":[4,3,1,3],"--.":[8,3,1,3],"--..":[8,3,1,3,1,3]},v=function(a,c,d){if(c=u[b(c).toLowerCase()]){for(var e=a.attrs["stroke-width"]||"1",f={round:e,square:e,butt:0}[a.attrs["stroke-linecap"]||d["stroke-linecap"]]||0,g=[],h=c.length;h--;)g[h]=c[h]*e+(h%2?1:-1)*f;q(a.node,{"stroke-dasharray":g.join(",")})}},w=function(d,f){var i=d.node,k=d.attrs,m=i.style.visibility;i.style.visibility="hidden";for(var o in f)if(f[a](o)){if(!c._availableAttrs[a](o))continue;var p=f[o];switch(k[o]=p,o){case"blur":d.blur(p);break;case"href":case"title":var u=q("title"),w=c._g.doc.createTextNode(p);u.appendChild(w),i.appendChild(u);break;case"target":var x=i.parentNode;if("a"!=x.tagName.toLowerCase()){var u=q("a");x.insertBefore(u,i),u.appendChild(i),x=u}"target"==o?x.setAttributeNS(n,"show","blank"==p?"new":p):x.setAttributeNS(n,o,p);break;case"cursor":i.style.cursor=p;break;case"transform":d.transform(p);break;case"arrow-start":t(d,p);break;case"arrow-end":t(d,p,1);break;case"clip-rect":var z=b(p).split(j);if(4==z.length){d.clip&&d.clip.parentNode.parentNode.removeChild(d.clip.parentNode);var A=q("clipPath"),B=q("rect");A.id=c.createUUID(),q(B,{x:z[0],y:z[1],width:z[2],height:z[3]}),A.appendChild(B),d.paper.defs.appendChild(A),q(i,{"clip-path":"url(#"+A.id+")"}),d.clip=B}if(!p){var C=i.getAttribute("clip-path");if(C){var D=c._g.doc.getElementById(C.replace(/(^url\(#|\)$)/g,l));D&&D.parentNode.removeChild(D),q(i,{"clip-path":l}),delete d.clip}}break;case"path":"path"==d.type&&(q(i,{d:p?k.path=c._pathToAbsolute(p):"M0,0"}),d._.dirty=1,d._.arrows&&("startString"in d._.arrows&&t(d,d._.arrows.startString),"endString"in d._.arrows&&t(d,d._.arrows.endString,1)));break;case"width":if(i.setAttribute(o,p),d._.dirty=1,!k.fx)break;o="x",p=k.x;case"x":k.fx&&(p=-k.x-(k.width||0));case"rx":if("rx"==o&&"rect"==d.type)break;case"cx":i.setAttribute(o,p),d.pattern&&s(d),d._.dirty=1;break;case"height":if(i.setAttribute(o,p),d._.dirty=1,!k.fy)break;o="y",p=k.y;case"y":k.fy&&(p=-k.y-(k.height||0));case"ry":if("ry"==o&&"rect"==d.type)break;case"cy":i.setAttribute(o,p),d.pattern&&s(d),d._.dirty=1;break;case"r":"rect"==d.type?q(i,{rx:p,ry:p}):i.setAttribute(o,p),d._.dirty=1;break;case"src":"image"==d.type&&i.setAttributeNS(n,"href",p);break;case"stroke-width":(1!=d._.sx||1!=d._.sy)&&(p/=g(h(d._.sx),h(d._.sy))||1),d.paper._vbSize&&(p*=d.paper._vbSize),i.setAttribute(o,p),k["stroke-dasharray"]&&v(d,k["stroke-dasharray"],f),d._.arrows&&("startString"in d._.arrows&&t(d,d._.arrows.startString),"endString"in d._.arrows&&t(d,d._.arrows.endString,1));break;case"stroke-dasharray":v(d,p,f);break;case"fill":var E=b(p).match(c._ISURL);if(E){A=q("pattern");var F=q("image");A.id=c.createUUID(),q(A,{x:0,y:0,patternUnits:"userSpaceOnUse",height:1,width:1}),q(F,{x:0,y:0,"xlink:href":E[1]}),A.appendChild(F),function(a){c._preload(E[1],function(){var b=this.offsetWidth,c=this.offsetHeight;q(a,{width:b,height:c}),q(F,{width:b,height:c}),d.paper.safari()})}(A),d.paper.defs.appendChild(A),q(i,{fill:"url(#"+A.id+")"}),d.pattern=A,d.pattern&&s(d);break}var G=c.getRGB(p);if(G.error){if(("circle"==d.type||"ellipse"==d.type||"r"!=b(p).charAt())&&r(d,p)){if("opacity"in k||"fill-opacity"in k){var H=c._g.doc.getElementById(i.getAttribute("fill").replace(/^url\(#|\)$/g,l));if(H){var I=H.getElementsByTagName("stop");q(I[I.length-1],{"stop-opacity":("opacity"in k?k.opacity:1)*("fill-opacity"in k?k["fill-opacity"]:1)})}}k.gradient=p,k.fill="none";break}}else delete f.gradient,delete k.gradient,!c.is(k.opacity,"undefined")&&c.is(f.opacity,"undefined")&&q(i,{opacity:k.opacity}),!c.is(k["fill-opacity"],"undefined")&&c.is(f["fill-opacity"],"undefined")&&q(i,{"fill-opacity":k["fill-opacity"]});G[a]("opacity")&&q(i,{"fill-opacity":G.opacity>1?G.opacity/100:G.opacity});case"stroke":G=c.getRGB(p),i.setAttribute(o,G.hex),"stroke"==o&&G[a]("opacity")&&q(i,{"stroke-opacity":G.opacity>1?G.opacity/100:G.opacity}),"stroke"==o&&d._.arrows&&("startString"in d._.arrows&&t(d,d._.arrows.startString),"endString"in d._.arrows&&t(d,d._.arrows.endString,1));break;case"gradient":("circle"==d.type||"ellipse"==d.type||"r"!=b(p).charAt())&&r(d,p);break;case"opacity":k.gradient&&!k[a]("stroke-opacity")&&q(i,{"stroke-opacity":p>1?p/100:p});case"fill-opacity":if(k.gradient){H=c._g.doc.getElementById(i.getAttribute("fill").replace(/^url\(#|\)$/g,l)),H&&(I=H.getElementsByTagName("stop"),q(I[I.length-1],{"stop-opacity":p}));break}default:"font-size"==o&&(p=e(p,10)+"px");var J=o.replace(/(\-.)/g,function(a){return a.substring(1).toUpperCase()});i.style[J]=p,d._.dirty=1,i.setAttribute(o,p)}}y(d,f),i.style.visibility=m},x=1.2,y=function(d,f){if("text"==d.type&&(f[a]("text")||f[a]("font")||f[a]("font-size")||f[a]("x")||f[a]("y"))){var g=d.attrs,h=d.node,i=h.firstChild?e(c._g.doc.defaultView.getComputedStyle(h.firstChild,l).getPropertyValue("font-size"),10):10;
-if(f[a]("text")){for(g.text=f.text;h.firstChild;)h.removeChild(h.firstChild);for(var j,k=b(f.text).split("\n"),m=[],n=0,o=k.length;o>n;n++)j=q("tspan"),n&&q(j,{dy:i*x,x:g.x}),j.appendChild(c._g.doc.createTextNode(k[n])),h.appendChild(j),m[n]=j}else for(m=h.getElementsByTagName("tspan"),n=0,o=m.length;o>n;n++)n?q(m[n],{dy:i*x,x:g.x}):q(m[0],{dy:0});q(h,{x:g.x,y:g.y}),d._.dirty=1;var p=d._getBBox(),r=g.y-(p.y+p.height/2);r&&c.is(r,"finite")&&q(m[0],{dy:r})}},z=function(a,b){this[0]=this.node=a,a.raphael=!0,this.id=c._oid++,a.raphaelid=this.id,this.matrix=c.matrix(),this.realPath=null,this.paper=b,this.attrs=this.attrs||{},this._={transform:[],sx:1,sy:1,deg:0,dx:0,dy:0,dirty:1},!b.bottom&&(b.bottom=this),this.prev=b.top,b.top&&(b.top.next=this),b.top=this,this.next=null},A=c.el;z.prototype=A,A.constructor=z,c._engine.path=function(a,b){var c=q("path");b.canvas&&b.canvas.appendChild(c);var d=new z(c,b);return d.type="path",w(d,{fill:"none",stroke:"#000",path:a}),d},A.rotate=function(a,c,e){if(this.removed)return this;if(a=b(a).split(j),a.length-1&&(c=d(a[1]),e=d(a[2])),a=d(a[0]),null==e&&(c=e),null==c||null==e){var f=this.getBBox(1);c=f.x+f.width/2,e=f.y+f.height/2}return this.transform(this._.transform.concat([["r",a,c,e]])),this},A.scale=function(a,c,e,f){if(this.removed)return this;if(a=b(a).split(j),a.length-1&&(c=d(a[1]),e=d(a[2]),f=d(a[3])),a=d(a[0]),null==c&&(c=a),null==f&&(e=f),null==e||null==f)var g=this.getBBox(1);return e=null==e?g.x+g.width/2:e,f=null==f?g.y+g.height/2:f,this.transform(this._.transform.concat([["s",a,c,e,f]])),this},A.translate=function(a,c){return this.removed?this:(a=b(a).split(j),a.length-1&&(c=d(a[1])),a=d(a[0])||0,c=+c||0,this.transform(this._.transform.concat([["t",a,c]])),this)},A.transform=function(b){var d=this._;if(null==b)return d.transform;if(c._extractTransform(this,b),this.clip&&q(this.clip,{transform:this.matrix.invert()}),this.pattern&&s(this),this.node&&q(this.node,{transform:this.matrix}),1!=d.sx||1!=d.sy){var e=this.attrs[a]("stroke-width")?this.attrs["stroke-width"]:1;this.attr({"stroke-width":e})}return this},A.hide=function(){return!this.removed&&this.paper.safari(this.node.style.display="none"),this},A.show=function(){return!this.removed&&this.paper.safari(this.node.style.display=""),this},A.remove=function(){if(!this.removed&&this.node.parentNode){var a=this.paper;a.__set__&&a.__set__.exclude(this),k.unbind("raphael.*.*."+this.id),this.gradient&&a.defs.removeChild(this.gradient),c._tear(this,a),"a"==this.node.parentNode.tagName.toLowerCase()?this.node.parentNode.parentNode.removeChild(this.node.parentNode):this.node.parentNode.removeChild(this.node);for(var b in this)this[b]="function"==typeof this[b]?c._removedFactory(b):null;this.removed=!0}},A._getBBox=function(){if("none"==this.node.style.display){this.show();var a=!0}var b={};try{b=this.node.getBBox()}catch(c){}finally{b=b||{}}return a&&this.hide(),b},A.attr=function(b,d){if(this.removed)return this;if(null==b){var e={};for(var f in this.attrs)this.attrs[a](f)&&(e[f]=this.attrs[f]);return e.gradient&&"none"==e.fill&&(e.fill=e.gradient)&&delete e.gradient,e.transform=this._.transform,e}if(null==d&&c.is(b,"string")){if("fill"==b&&"none"==this.attrs.fill&&this.attrs.gradient)return this.attrs.gradient;if("transform"==b)return this._.transform;for(var g=b.split(j),h={},i=0,l=g.length;l>i;i++)b=g[i],h[b]=b in this.attrs?this.attrs[b]:c.is(this.paper.customAttributes[b],"function")?this.paper.customAttributes[b].def:c._availableAttrs[b];return l-1?h:h[g[0]]}if(null==d&&c.is(b,"array")){for(h={},i=0,l=b.length;l>i;i++)h[b[i]]=this.attr(b[i]);return h}if(null!=d){var m={};m[b]=d}else null!=b&&c.is(b,"object")&&(m=b);for(var n in m)k("raphael.attr."+n+"."+this.id,this,m[n]);for(n in this.paper.customAttributes)if(this.paper.customAttributes[a](n)&&m[a](n)&&c.is(this.paper.customAttributes[n],"function")){var o=this.paper.customAttributes[n].apply(this,[].concat(m[n]));this.attrs[n]=m[n];for(var p in o)o[a](p)&&(m[p]=o[p])}return w(this,m),this},A.toFront=function(){if(this.removed)return this;"a"==this.node.parentNode.tagName.toLowerCase()?this.node.parentNode.parentNode.appendChild(this.node.parentNode):this.node.parentNode.appendChild(this.node);var a=this.paper;return a.top!=this&&c._tofront(this,a),this},A.toBack=function(){if(this.removed)return this;var a=this.node.parentNode;return"a"==a.tagName.toLowerCase()?a.parentNode.insertBefore(this.node.parentNode,this.node.parentNode.parentNode.firstChild):a.firstChild!=this.node&&a.insertBefore(this.node,this.node.parentNode.firstChild),c._toback(this,this.paper),this.paper,this},A.insertAfter=function(a){if(this.removed)return this;var b=a.node||a[a.length-1].node;return b.nextSibling?b.parentNode.insertBefore(this.node,b.nextSibling):b.parentNode.appendChild(this.node),c._insertafter(this,a,this.paper),this},A.insertBefore=function(a){if(this.removed)return this;var b=a.node||a[0].node;return b.parentNode.insertBefore(this.node,b),c._insertbefore(this,a,this.paper),this},A.blur=function(a){var b=this;if(0!==+a){var d=q("filter"),e=q("feGaussianBlur");b.attrs.blur=a,d.id=c.createUUID(),q(e,{stdDeviation:+a||1.5}),d.appendChild(e),b.paper.defs.appendChild(d),b._blur=d,q(b.node,{filter:"url(#"+d.id+")"})}else b._blur&&(b._blur.parentNode.removeChild(b._blur),delete b._blur,delete b.attrs.blur),b.node.removeAttribute("filter");return b},c._engine.circle=function(a,b,c,d){var e=q("circle");a.canvas&&a.canvas.appendChild(e);var f=new z(e,a);return f.attrs={cx:b,cy:c,r:d,fill:"none",stroke:"#000"},f.type="circle",q(e,f.attrs),f},c._engine.rect=function(a,b,c,d,e,f){var g=q("rect");a.canvas&&a.canvas.appendChild(g);var h=new z(g,a);return h.attrs={x:b,y:c,width:d,height:e,r:f||0,rx:f||0,ry:f||0,fill:"none",stroke:"#000"},h.type="rect",q(g,h.attrs),h},c._engine.ellipse=function(a,b,c,d,e){var f=q("ellipse");a.canvas&&a.canvas.appendChild(f);var g=new z(f,a);return g.attrs={cx:b,cy:c,rx:d,ry:e,fill:"none",stroke:"#000"},g.type="ellipse",q(f,g.attrs),g},c._engine.image=function(a,b,c,d,e,f){var g=q("image");q(g,{x:c,y:d,width:e,height:f,preserveAspectRatio:"none"}),g.setAttributeNS(n,"href",b),a.canvas&&a.canvas.appendChild(g);var h=new z(g,a);return h.attrs={x:c,y:d,width:e,height:f,src:b},h.type="image",h},c._engine.text=function(a,b,d,e){var f=q("text");a.canvas&&a.canvas.appendChild(f);var g=new z(f,a);return g.attrs={x:b,y:d,"text-anchor":"middle",text:e,font:c._availableAttrs.font,stroke:"none",fill:"#000"},g.type="text",w(g,g.attrs),g},c._engine.setSize=function(a,b){return this.width=a||this.width,this.height=b||this.height,this.canvas.setAttribute("width",this.width),this.canvas.setAttribute("height",this.height),this._viewBox&&this.setViewBox.apply(this,this._viewBox),this},c._engine.create=function(){var a=c._getContainer.apply(0,arguments),b=a&&a.container,d=a.x,e=a.y,f=a.width,g=a.height;if(!b)throw new Error("SVG container not found.");var h,i=q("svg"),j="overflow:hidden;";return d=d||0,e=e||0,f=f||512,g=g||342,q(i,{height:g,version:1.1,width:f,xmlns:"http://www.w3.org/2000/svg"}),1==b?(i.style.cssText=j+"position:absolute;left:"+d+"px;top:"+e+"px",c._g.doc.body.appendChild(i),h=1):(i.style.cssText=j+"position:relative",b.firstChild?b.insertBefore(i,b.firstChild):b.appendChild(i)),b=new c._Paper,b.width=f,b.height=g,b.canvas=i,b.clear(),b._left=b._top=0,h&&(b.renderfix=function(){}),b.renderfix(),b},c._engine.setViewBox=function(a,b,c,d,e){k("raphael.setViewBox",this,this._viewBox,[a,b,c,d,e]);var f,h,i=g(c/this.width,d/this.height),j=this.top,l=e?"meet":"xMinYMin";for(null==a?(this._vbSize&&(i=1),delete this._vbSize,f="0 0 "+this.width+m+this.height):(this._vbSize=i,f=a+m+b+m+c+m+d),q(this.canvas,{viewBox:f,preserveAspectRatio:l});i&&j;)h="stroke-width"in j.attrs?j.attrs["stroke-width"]:1,j.attr({"stroke-width":h}),j._.dirty=1,j._.dirtyT=1,j=j.prev;return this._viewBox=[a,b,c,d,!!e],this},c.prototype.renderfix=function(){var a,b=this.canvas,c=b.style;try{a=b.getScreenCTM()||b.createSVGMatrix()}catch(d){a=b.createSVGMatrix()}var e=-a.e%1,f=-a.f%1;(e||f)&&(e&&(this._left=(this._left+e)%1,c.left=this._left+"px"),f&&(this._top=(this._top+f)%1,c.top=this._top+"px"))},c.prototype.clear=function(){c.eve("raphael.clear",this);for(var a=this.canvas;a.firstChild;)a.removeChild(a.firstChild);this.bottom=this.top=null,(this.desc=q("desc")).appendChild(c._g.doc.createTextNode("Created with Raphaël "+c.version)),a.appendChild(this.desc),a.appendChild(this.defs=q("defs"))},c.prototype.remove=function(){k("raphael.remove",this),this.canvas.parentNode&&this.canvas.parentNode.removeChild(this.canvas);for(var a in this)this[a]="function"==typeof this[a]?c._removedFactory(a):null};var B=c.st;for(var C in A)A[a](C)&&!B[a](C)&&(B[C]=function(a){return function(){var b=arguments;return this.forEach(function(c){c[a].apply(c,b)})}}(C))}}(),function(){if(c.vml){var a="hasOwnProperty",b=String,d=parseFloat,e=Math,f=e.round,g=e.max,h=e.min,i=e.abs,j="fill",k=/[, ]+/,l=c.eve,m=" progid:DXImageTransform.Microsoft",n=" ",o="",p={M:"m",L:"l",C:"c",Z:"x",m:"t",l:"r",c:"v",z:"x"},q=/([clmz]),?([^clmz]*)/gi,r=/ progid:\S+Blur\([^\)]+\)/g,s=/-?[^,\s-]+/g,t="position:absolute;left:0;top:0;width:1px;height:1px",u=21600,v={path:1,rect:1,image:1},w={circle:1,ellipse:1},x=function(a){var d=/[ahqstv]/gi,e=c._pathToAbsolute;if(b(a).match(d)&&(e=c._path2curve),d=/[clmz]/g,e==c._pathToAbsolute&&!b(a).match(d)){var g=b(a).replace(q,function(a,b,c){var d=[],e="m"==b.toLowerCase(),g=p[b];return c.replace(s,function(a){e&&2==d.length&&(g+=d+p["m"==b?"l":"L"],d=[]),d.push(f(a*u))}),g+d});return g}var h,i,j=e(a);g=[];for(var k=0,l=j.length;l>k;k++){h=j[k],i=j[k][0].toLowerCase(),"z"==i&&(i="x");for(var m=1,r=h.length;r>m;m++)i+=f(h[m]*u)+(m!=r-1?",":o);g.push(i)}return g.join(n)},y=function(a,b,d){var e=c.matrix();return e.rotate(-a,.5,.5),{dx:e.x(b,d),dy:e.y(b,d)}},z=function(a,b,c,d,e,f){var g=a._,h=a.matrix,k=g.fillpos,l=a.node,m=l.style,o=1,p="",q=u/b,r=u/c;if(m.visibility="hidden",b&&c){if(l.coordsize=i(q)+n+i(r),m.rotation=f*(0>b*c?-1:1),f){var s=y(f,d,e);d=s.dx,e=s.dy}if(0>b&&(p+="x"),0>c&&(p+=" y")&&(o=-1),m.flip=p,l.coordorigin=d*-q+n+e*-r,k||g.fillsize){var t=l.getElementsByTagName(j);t=t&&t[0],l.removeChild(t),k&&(s=y(f,h.x(k[0],k[1]),h.y(k[0],k[1])),t.position=s.dx*o+n+s.dy*o),g.fillsize&&(t.size=g.fillsize[0]*i(b)+n+g.fillsize[1]*i(c)),l.appendChild(t)}m.visibility="visible"}};c.toString=function(){return"Your browser doesn’t support SVG. Falling down to VML.\nYou are running Raphaël "+this.version};var A=function(a,c,d){for(var e=b(c).toLowerCase().split("-"),f=d?"end":"start",g=e.length,h="classic",i="medium",j="medium";g--;)switch(e[g]){case"block":case"classic":case"oval":case"diamond":case"open":case"none":h=e[g];break;case"wide":case"narrow":j=e[g];break;case"long":case"short":i=e[g]}var k=a.node.getElementsByTagName("stroke")[0];k[f+"arrow"]=h,k[f+"arrowlength"]=i,k[f+"arrowwidth"]=j},B=function(e,i){e.attrs=e.attrs||{};var l=e.node,m=e.attrs,p=l.style,q=v[e.type]&&(i.x!=m.x||i.y!=m.y||i.width!=m.width||i.height!=m.height||i.cx!=m.cx||i.cy!=m.cy||i.rx!=m.rx||i.ry!=m.ry||i.r!=m.r),r=w[e.type]&&(m.cx!=i.cx||m.cy!=i.cy||m.r!=i.r||m.rx!=i.rx||m.ry!=i.ry),s=e;for(var t in i)i[a](t)&&(m[t]=i[t]);if(q&&(m.path=c._getPath[e.type](e),e._.dirty=1),i.href&&(l.href=i.href),i.title&&(l.title=i.title),i.target&&(l.target=i.target),i.cursor&&(p.cursor=i.cursor),"blur"in i&&e.blur(i.blur),(i.path&&"path"==e.type||q)&&(l.path=x(~b(m.path).toLowerCase().indexOf("r")?c._pathToAbsolute(m.path):m.path),"image"==e.type&&(e._.fillpos=[m.x,m.y],e._.fillsize=[m.width,m.height],z(e,1,1,0,0,0))),"transform"in i&&e.transform(i.transform),r){var y=+m.cx,B=+m.cy,D=+m.rx||+m.r||0,E=+m.ry||+m.r||0;l.path=c.format("ar{0},{1},{2},{3},{4},{1},{4},{1}x",f((y-D)*u),f((B-E)*u),f((y+D)*u),f((B+E)*u),f(y*u)),e._.dirty=1}if("clip-rect"in i){var G=b(i["clip-rect"]).split(k);if(4==G.length){G[2]=+G[2]+ +G[0],G[3]=+G[3]+ +G[1];var H=l.clipRect||c._g.doc.createElement("div"),I=H.style;I.clip=c.format("rect({1}px {2}px {3}px {0}px)",G),l.clipRect||(I.position="absolute",I.top=0,I.left=0,I.width=e.paper.width+"px",I.height=e.paper.height+"px",l.parentNode.insertBefore(H,l),H.appendChild(l),l.clipRect=H)}i["clip-rect"]||l.clipRect&&(l.clipRect.style.clip="auto")}if(e.textpath){var J=e.textpath.style;i.font&&(J.font=i.font),i["font-family"]&&(J.fontFamily='"'+i["font-family"].split(",")[0].replace(/^['"]+|['"]+$/g,o)+'"'),i["font-size"]&&(J.fontSize=i["font-size"]),i["font-weight"]&&(J.fontWeight=i["font-weight"]),i["font-style"]&&(J.fontStyle=i["font-style"])}if("arrow-start"in i&&A(s,i["arrow-start"]),"arrow-end"in i&&A(s,i["arrow-end"],1),null!=i.opacity||null!=i["stroke-width"]||null!=i.fill||null!=i.src||null!=i.stroke||null!=i["stroke-width"]||null!=i["stroke-opacity"]||null!=i["fill-opacity"]||null!=i["stroke-dasharray"]||null!=i["stroke-miterlimit"]||null!=i["stroke-linejoin"]||null!=i["stroke-linecap"]){var K=l.getElementsByTagName(j),L=!1;if(K=K&&K[0],!K&&(L=K=F(j)),"image"==e.type&&i.src&&(K.src=i.src),i.fill&&(K.on=!0),(null==K.on||"none"==i.fill||null===i.fill)&&(K.on=!1),K.on&&i.fill){var M=b(i.fill).match(c._ISURL);if(M){K.parentNode==l&&l.removeChild(K),K.rotate=!0,K.src=M[1],K.type="tile";var N=e.getBBox(1);K.position=N.x+n+N.y,e._.fillpos=[N.x,N.y],c._preload(M[1],function(){e._.fillsize=[this.offsetWidth,this.offsetHeight]})}else K.color=c.getRGB(i.fill).hex,K.src=o,K.type="solid",c.getRGB(i.fill).error&&(s.type in{circle:1,ellipse:1}||"r"!=b(i.fill).charAt())&&C(s,i.fill,K)&&(m.fill="none",m.gradient=i.fill,K.rotate=!1)}if("fill-opacity"in i||"opacity"in i){var O=((+m["fill-opacity"]+1||2)-1)*((+m.opacity+1||2)-1)*((+c.getRGB(i.fill).o+1||2)-1);O=h(g(O,0),1),K.opacity=O,K.src&&(K.color="none")}l.appendChild(K);var P=l.getElementsByTagName("stroke")&&l.getElementsByTagName("stroke")[0],Q=!1;!P&&(Q=P=F("stroke")),(i.stroke&&"none"!=i.stroke||i["stroke-width"]||null!=i["stroke-opacity"]||i["stroke-dasharray"]||i["stroke-miterlimit"]||i["stroke-linejoin"]||i["stroke-linecap"])&&(P.on=!0),("none"==i.stroke||null===i.stroke||null==P.on||0==i.stroke||0==i["stroke-width"])&&(P.on=!1);var R=c.getRGB(i.stroke);P.on&&i.stroke&&(P.color=R.hex),O=((+m["stroke-opacity"]+1||2)-1)*((+m.opacity+1||2)-1)*((+R.o+1||2)-1);var S=.75*(d(i["stroke-width"])||1);if(O=h(g(O,0),1),null==i["stroke-width"]&&(S=m["stroke-width"]),i["stroke-width"]&&(P.weight=S),S&&1>S&&(O*=S)&&(P.weight=1),P.opacity=O,i["stroke-linejoin"]&&(P.joinstyle=i["stroke-linejoin"]||"miter"),P.miterlimit=i["stroke-miterlimit"]||8,i["stroke-linecap"]&&(P.endcap="butt"==i["stroke-linecap"]?"flat":"square"==i["stroke-linecap"]?"square":"round"),i["stroke-dasharray"]){var T={"-":"shortdash",".":"shortdot","-.":"shortdashdot","-..":"shortdashdotdot",". ":"dot","- ":"dash","--":"longdash","- .":"dashdot","--.":"longdashdot","--..":"longdashdotdot"};P.dashstyle=T[a](i["stroke-dasharray"])?T[i["stroke-dasharray"]]:o}Q&&l.appendChild(P)}if("text"==s.type){s.paper.canvas.style.display=o;var U=s.paper.span,V=100,W=m.font&&m.font.match(/\d+(?:\.\d*)?(?=px)/);p=U.style,m.font&&(p.font=m.font),m["font-family"]&&(p.fontFamily=m["font-family"]),m["font-weight"]&&(p.fontWeight=m["font-weight"]),m["font-style"]&&(p.fontStyle=m["font-style"]),W=d(m["font-size"]||W&&W[0])||10,p.fontSize=W*V+"px",s.textpath.string&&(U.innerHTML=b(s.textpath.string).replace(/</g,"&#60;").replace(/&/g,"&#38;").replace(/\n/g,"<br>"));var X=U.getBoundingClientRect();s.W=m.w=(X.right-X.left)/V,s.H=m.h=(X.bottom-X.top)/V,s.X=m.x,s.Y=m.y+s.H/2,("x"in i||"y"in i)&&(s.path.v=c.format("m{0},{1}l{2},{1}",f(m.x*u),f(m.y*u),f(m.x*u)+1));for(var Y=["x","y","text","font","font-family","font-weight","font-style","font-size"],Z=0,$=Y.length;$>Z;Z++)if(Y[Z]in i){s._.dirty=1;break}switch(m["text-anchor"]){case"start":s.textpath.style["v-text-align"]="left",s.bbx=s.W/2;break;case"end":s.textpath.style["v-text-align"]="right",s.bbx=-s.W/2;break;default:s.textpath.style["v-text-align"]="center",s.bbx=0}s.textpath.style["v-text-kern"]=!0}},C=function(a,f,g){a.attrs=a.attrs||{};var h=(a.attrs,Math.pow),i="linear",j=".5 .5";if(a.attrs.gradient=f,f=b(f).replace(c._radial_gradient,function(a,b,c){return i="radial",b&&c&&(b=d(b),c=d(c),h(b-.5,2)+h(c-.5,2)>.25&&(c=e.sqrt(.25-h(b-.5,2))*(2*(c>.5)-1)+.5),j=b+n+c),o}),f=f.split(/\s*\-\s*/),"linear"==i){var k=f.shift();if(k=-d(k),isNaN(k))return null}var l=c._parseDots(f);if(!l)return null;if(a=a.shape||a.node,l.length){a.removeChild(g),g.on=!0,g.method="none",g.color=l[0].color,g.color2=l[l.length-1].color;for(var m=[],p=0,q=l.length;q>p;p++)l[p].offset&&m.push(l[p].offset+n+l[p].color);g.colors=m.length?m.join():"0% "+g.color,"radial"==i?(g.type="gradientTitle",g.focus="100%",g.focussize="0 0",g.focusposition=j,g.angle=0):(g.type="gradient",g.angle=(270-k)%360),a.appendChild(g)}return 1},D=function(a,b){this[0]=this.node=a,a.raphael=!0,this.id=c._oid++,a.raphaelid=this.id,this.X=0,this.Y=0,this.attrs={},this.paper=b,this.matrix=c.matrix(),this._={transform:[],sx:1,sy:1,dx:0,dy:0,deg:0,dirty:1,dirtyT:1},!b.bottom&&(b.bottom=this),this.prev=b.top,b.top&&(b.top.next=this),b.top=this,this.next=null},E=c.el;D.prototype=E,E.constructor=D,E.transform=function(a){if(null==a)return this._.transform;var d,e=this.paper._viewBoxShift,f=e?"s"+[e.scale,e.scale]+"-1-1t"+[e.dx,e.dy]:o;e&&(d=a=b(a).replace(/\.{3}|\u2026/g,this._.transform||o)),c._extractTransform(this,f+a);var g,h=this.matrix.clone(),i=this.skew,j=this.node,k=~b(this.attrs.fill).indexOf("-"),l=!b(this.attrs.fill).indexOf("url(");if(h.translate(1,1),l||k||"image"==this.type)if(i.matrix="1 0 0 1",i.offset="0 0",g=h.split(),k&&g.noRotation||!g.isSimple){j.style.filter=h.toFilter();var m=this.getBBox(),p=this.getBBox(1),q=m.x-p.x,r=m.y-p.y;j.coordorigin=q*-u+n+r*-u,z(this,1,1,q,r,0)}else j.style.filter=o,z(this,g.scalex,g.scaley,g.dx,g.dy,g.rotate);else j.style.filter=o,i.matrix=b(h),i.offset=h.offset();return d&&(this._.transform=d),this},E.rotate=function(a,c,e){if(this.removed)return this;if(null!=a){if(a=b(a).split(k),a.length-1&&(c=d(a[1]),e=d(a[2])),a=d(a[0]),null==e&&(c=e),null==c||null==e){var f=this.getBBox(1);c=f.x+f.width/2,e=f.y+f.height/2}return this._.dirtyT=1,this.transform(this._.transform.concat([["r",a,c,e]])),this}},E.translate=function(a,c){return this.removed?this:(a=b(a).split(k),a.length-1&&(c=d(a[1])),a=d(a[0])||0,c=+c||0,this._.bbox&&(this._.bbox.x+=a,this._.bbox.y+=c),this.transform(this._.transform.concat([["t",a,c]])),this)},E.scale=function(a,c,e,f){if(this.removed)return this;if(a=b(a).split(k),a.length-1&&(c=d(a[1]),e=d(a[2]),f=d(a[3]),isNaN(e)&&(e=null),isNaN(f)&&(f=null)),a=d(a[0]),null==c&&(c=a),null==f&&(e=f),null==e||null==f)var g=this.getBBox(1);return e=null==e?g.x+g.width/2:e,f=null==f?g.y+g.height/2:f,this.transform(this._.transform.concat([["s",a,c,e,f]])),this._.dirtyT=1,this},E.hide=function(){return!this.removed&&(this.node.style.display="none"),this},E.show=function(){return!this.removed&&(this.node.style.display=o),this},E._getBBox=function(){return this.removed?{}:{x:this.X+(this.bbx||0)-this.W/2,y:this.Y-this.H,width:this.W,height:this.H}},E.remove=function(){if(!this.removed&&this.node.parentNode){this.paper.__set__&&this.paper.__set__.exclude(this),c.eve.unbind("raphael.*.*."+this.id),c._tear(this,this.paper),this.node.parentNode.removeChild(this.node),this.shape&&this.shape.parentNode.removeChild(this.shape);for(var a in this)this[a]="function"==typeof this[a]?c._removedFactory(a):null;this.removed=!0}},E.attr=function(b,d){if(this.removed)return this;if(null==b){var e={};for(var f in this.attrs)this.attrs[a](f)&&(e[f]=this.attrs[f]);return e.gradient&&"none"==e.fill&&(e.fill=e.gradient)&&delete e.gradient,e.transform=this._.transform,e}if(null==d&&c.is(b,"string")){if(b==j&&"none"==this.attrs.fill&&this.attrs.gradient)return this.attrs.gradient;for(var g=b.split(k),h={},i=0,m=g.length;m>i;i++)b=g[i],h[b]=b in this.attrs?this.attrs[b]:c.is(this.paper.customAttributes[b],"function")?this.paper.customAttributes[b].def:c._availableAttrs[b];return m-1?h:h[g[0]]}if(this.attrs&&null==d&&c.is(b,"array")){for(h={},i=0,m=b.length;m>i;i++)h[b[i]]=this.attr(b[i]);return h}var n;null!=d&&(n={},n[b]=d),null==d&&c.is(b,"object")&&(n=b);for(var o in n)l("raphael.attr."+o+"."+this.id,this,n[o]);if(n){for(o in this.paper.customAttributes)if(this.paper.customAttributes[a](o)&&n[a](o)&&c.is(this.paper.customAttributes[o],"function")){var p=this.paper.customAttributes[o].apply(this,[].concat(n[o]));this.attrs[o]=n[o];for(var q in p)p[a](q)&&(n[q]=p[q])}n.text&&"text"==this.type&&(this.textpath.string=n.text),B(this,n)}return this},E.toFront=function(){return!this.removed&&this.node.parentNode.appendChild(this.node),this.paper&&this.paper.top!=this&&c._tofront(this,this.paper),this},E.toBack=function(){return this.removed?this:(this.node.parentNode.firstChild!=this.node&&(this.node.parentNode.insertBefore(this.node,this.node.parentNode.firstChild),c._toback(this,this.paper)),this)},E.insertAfter=function(a){return this.removed?this:(a.constructor==c.st.constructor&&(a=a[a.length-1]),a.node.nextSibling?a.node.parentNode.insertBefore(this.node,a.node.nextSibling):a.node.parentNode.appendChild(this.node),c._insertafter(this,a,this.paper),this)},E.insertBefore=function(a){return this.removed?this:(a.constructor==c.st.constructor&&(a=a[0]),a.node.parentNode.insertBefore(this.node,a.node),c._insertbefore(this,a,this.paper),this)},E.blur=function(a){var b=this.node.runtimeStyle,d=b.filter;return d=d.replace(r,o),0!==+a?(this.attrs.blur=a,b.filter=d+n+m+".Blur(pixelradius="+(+a||1.5)+")",b.margin=c.format("-{0}px 0 0 -{0}px",f(+a||1.5))):(b.filter=d,b.margin=0,delete this.attrs.blur),this},c._engine.path=function(a,b){var c=F("shape");c.style.cssText=t,c.coordsize=u+n+u,c.coordorigin=b.coordorigin;var d=new D(c,b),e={fill:"none",stroke:"#000"};a&&(e.path=a),d.type="path",d.path=[],d.Path=o,B(d,e),b.canvas.appendChild(c);var f=F("skew");return f.on=!0,c.appendChild(f),d.skew=f,d.transform(o),d},c._engine.rect=function(a,b,d,e,f,g){var h=c._rectPath(b,d,e,f,g),i=a.path(h),j=i.attrs;return i.X=j.x=b,i.Y=j.y=d,i.W=j.width=e,i.H=j.height=f,j.r=g,j.path=h,i.type="rect",i},c._engine.ellipse=function(a,b,c,d,e){var f=a.path();return f.attrs,f.X=b-d,f.Y=c-e,f.W=2*d,f.H=2*e,f.type="ellipse",B(f,{cx:b,cy:c,rx:d,ry:e}),f},c._engine.circle=function(a,b,c,d){var e=a.path();return e.attrs,e.X=b-d,e.Y=c-d,e.W=e.H=2*d,e.type="circle",B(e,{cx:b,cy:c,r:d}),e},c._engine.image=function(a,b,d,e,f,g){var h=c._rectPath(d,e,f,g),i=a.path(h).attr({stroke:"none"}),k=i.attrs,l=i.node,m=l.getElementsByTagName(j)[0];return k.src=b,i.X=k.x=d,i.Y=k.y=e,i.W=k.width=f,i.H=k.height=g,k.path=h,i.type="image",m.parentNode==l&&l.removeChild(m),m.rotate=!0,m.src=b,m.type="tile",i._.fillpos=[d,e],i._.fillsize=[f,g],l.appendChild(m),z(i,1,1,0,0,0),i},c._engine.text=function(a,d,e,g){var h=F("shape"),i=F("path"),j=F("textpath");d=d||0,e=e||0,g=g||"",i.v=c.format("m{0},{1}l{2},{1}",f(d*u),f(e*u),f(d*u)+1),i.textpathok=!0,j.string=b(g),j.on=!0,h.style.cssText=t,h.coordsize=u+n+u,h.coordorigin="0 0";var k=new D(h,a),l={fill:"#000",stroke:"none",font:c._availableAttrs.font,text:g};k.shape=h,k.path=i,k.textpath=j,k.type="text",k.attrs.text=b(g),k.attrs.x=d,k.attrs.y=e,k.attrs.w=1,k.attrs.h=1,B(k,l),h.appendChild(j),h.appendChild(i),a.canvas.appendChild(h);var m=F("skew");return m.on=!0,h.appendChild(m),k.skew=m,k.transform(o),k},c._engine.setSize=function(a,b){var d=this.canvas.style;return this.width=a,this.height=b,a==+a&&(a+="px"),b==+b&&(b+="px"),d.width=a,d.height=b,d.clip="rect(0 "+a+" "+b+" 0)",this._viewBox&&c._engine.setViewBox.apply(this,this._viewBox),this},c._engine.setViewBox=function(a,b,d,e,f){c.eve("raphael.setViewBox",this,this._viewBox,[a,b,d,e,f]);var h,i,j=this.width,k=this.height,l=1/g(d/j,e/k);return f&&(h=k/e,i=j/d,j>d*h&&(a-=(j-d*h)/2/h),k>e*i&&(b-=(k-e*i)/2/i)),this._viewBox=[a,b,d,e,!!f],this._viewBoxShift={dx:-a,dy:-b,scale:l},this.forEach(function(a){a.transform("...")}),this};var F;c._engine.initWin=function(a){var b=a.document;b.createStyleSheet().addRule(".rvml","behavior:url(#default#VML)");try{!b.namespaces.rvml&&b.namespaces.add("rvml","urn:schemas-microsoft-com:vml"),F=function(a){return b.createElement("<rvml:"+a+' class="rvml">')}}catch(c){F=function(a){return b.createElement("<"+a+' xmlns="urn:schemas-microsoft.com:vml" class="rvml">')}}},c._engine.initWin(c._g.win),c._engine.create=function(){var a=c._getContainer.apply(0,arguments),b=a.container,d=a.height,e=a.width,f=a.x,g=a.y;if(!b)throw new Error("VML container not found.");var h=new c._Paper,i=h.canvas=c._g.doc.createElement("div"),j=i.style;return f=f||0,g=g||0,e=e||512,d=d||342,h.width=e,h.height=d,e==+e&&(e+="px"),d==+d&&(d+="px"),h.coordsize=1e3*u+n+1e3*u,h.coordorigin="0 0",h.span=c._g.doc.createElement("span"),h.span.style.cssText="position:absolute;left:-9999em;top:-9999em;padding:0;margin:0;line-height:1;",i.appendChild(h.span),j.cssText=c.format("top:0;left:0;width:{0};height:{1};display:inline-block;position:relative;clip:rect(0 {0} {1} 0);overflow:hidden",e,d),1==b?(c._g.doc.body.appendChild(i),j.left=f+"px",j.top=g+"px",j.position="absolute"):b.firstChild?b.insertBefore(i,b.firstChild):b.appendChild(i),h.renderfix=function(){},h},c.prototype.clear=function(){c.eve("raphael.clear",this),this.canvas.innerHTML=o,this.span=c._g.doc.createElement("span"),this.span.style.cssText="position:absolute;left:-9999em;top:-9999em;padding:0;margin:0;line-height:1;display:inline;",this.canvas.appendChild(this.span),this.bottom=this.top=null},c.prototype.remove=function(){c.eve("raphael.remove",this),this.canvas.parentNode.removeChild(this.canvas);for(var a in this)this[a]="function"==typeof this[a]?c._removedFactory(a):null;return!0};var G=c.st;for(var H in E)E[a](H)&&!G[a](H)&&(G[H]=function(a){return function(){var b=arguments;return this.forEach(function(c){c[a].apply(c,b)})}}(H))}}(),B.was?A.win.Raphael=c:Raphael=c,c});
\ No newline at end of file
diff --git a/src/main/resources/META-INF/resources/designer/lib/slick.js b/src/main/resources/META-INF/resources/designer/lib/slick.js
deleted file mode 100644 (file)
index e302777..0000000
+++ /dev/null
@@ -1,2117 +0,0 @@
-/*
-     _ _      _       _
- ___| (_) ___| | __  (_)___
-/ __| | |/ __| |/ /  | / __|
-\__ \ | | (__|   < _ | \__ \
-|___/_|_|\___|_|\_(_)/ |___/
-                   |__/
-
- Version: 1.3.15
-  Author: Ken Wheeler
- Website: http://kenwheeler.github.io
-    Docs: http://kenwheeler.github.io/slick
-    Repo: http://github.com/kenwheeler/slick
-  Issues: http://github.com/kenwheeler/slick/issues
-
- */
-
-/* global window, document, define, jQuery, setInterval, clearInterval */
-
-(function(factory) {
-    'use strict';
-    if (typeof define === 'function' && define.amd) {
-        define(['jquery'], factory);
-    } else if (typeof exports !== 'undefined') {
-        module.exports = factory(require('jquery'));
-    } else {
-        factory(jQuery);
-    }
-
-}(function($) {
-    'use strict';
-    var Slick = window.Slick || {};
-
-    Slick = (function() {
-
-        var instanceUid = 0;
-
-        function Slick(element, settings) {
-
-            var _ = this,
-                responsiveSettings, breakpoint;
-
-            _.defaults = {
-                accessibility: true,
-                adaptiveHeight: false,
-                appendArrows: $(element),
-                appendDots: $(element),
-                arrows: true,
-                asNavFor: null,
-                prevArrow: '<button type="button" data-role="none" class="slick-prev">Previous</button>',
-                nextArrow: '<button type="button" data-role="none" class="slick-next">Next</button>',
-                autoplay: false,
-                autoplaySpeed: 3000,
-                centerMode: false,
-                centerPadding: '50px',
-                cssEase: 'ease',
-                customPaging: function(slider, i) {
-                    return '<button type="button" data-role="none">' + (i + 1) + '</button>';
-                },
-                dots: false,
-                dotsClass: 'slick-dots',
-                draggable: true,
-                easing: 'linear',
-                fade: false,
-                focusOnSelect: false,
-                infinite: true,
-                initialSlide: 0,
-                lazyLoad: 'ondemand',
-                onBeforeChange: null,
-                onAfterChange: null,
-                onInit: null,
-                onReInit: null,
-                onSetPosition: null,
-                pauseOnHover: true,
-                pauseOnDotsHover: false,
-                respondTo: 'window',
-                responsive: null,
-                rtl: false,
-                slide: 'div',
-                slidesToShow: 1,
-                slidesToScroll: 1,
-                speed: 500,
-                swipe: true,
-                swipeToSlide: false,
-                touchMove: true,
-                touchThreshold: 5,
-                useCSS: true,
-                variableWidth: false,
-                vertical: false,
-                waitForAnimate: true
-            };
-
-            _.initials = {
-                animating: false,
-                dragging: false,
-                autoPlayTimer: null,
-                currentDirection: 0,
-                currentLeft: null,
-                currentSlide: 0,
-                direction: 1,
-                $dots: null,
-                listWidth: null,
-                listHeight: null,
-                loadIndex: 0,
-                $nextArrow: null,
-                $prevArrow: null,
-                slideCount: null,
-                slideWidth: null,
-                $slideTrack: null,
-                $slides: null,
-                sliding: false,
-                slideOffset: 0,
-                swipeLeft: null,
-                $list: null,
-                touchObject: {},
-                transformsEnabled: false
-            };
-
-            $.extend(_, _.initials);
-
-            _.activeBreakpoint = null;
-            _.animType = null;
-            _.animProp = null;
-            _.breakpoints = [];
-            _.breakpointSettings = [];
-            _.cssTransitions = false;
-            _.paused = false;
-            _.positionProp = null;
-            _.respondTo = null;
-            _.shouldClick = true;
-            _.$slider = $(element);
-            _.$slidesCache = null;
-            _.transformType = null;
-            _.transitionType = null;
-            _.windowWidth = 0;
-            _.windowTimer = null;
-
-            _.options = $.extend({}, _.defaults, settings);
-
-            _.currentSlide = _.options.initialSlide;
-
-            _.originalSettings = _.options;
-            responsiveSettings = _.options.responsive || null;
-
-            if (responsiveSettings && responsiveSettings.length > -1) {
-                _.respondTo = _.options.respondTo || "window";
-                for (breakpoint in responsiveSettings) {
-                    if (responsiveSettings.hasOwnProperty(breakpoint)) {
-                        _.breakpoints.push(responsiveSettings[
-                            breakpoint].breakpoint);
-                        _.breakpointSettings[responsiveSettings[
-                            breakpoint].breakpoint] =
-                            responsiveSettings[breakpoint].settings;
-                    }
-                }
-                _.breakpoints.sort(function(a, b) {
-                    return b - a;
-                });
-            }
-
-            _.autoPlay = $.proxy(_.autoPlay, _);
-            _.autoPlayClear = $.proxy(_.autoPlayClear, _);
-            _.changeSlide = $.proxy(_.changeSlide, _);
-            _.clickHandler = $.proxy(_.clickHandler, _);
-            _.selectHandler = $.proxy(_.selectHandler, _);
-            _.setPosition = $.proxy(_.setPosition, _);
-            _.swipeHandler = $.proxy(_.swipeHandler, _);
-            _.dragHandler = $.proxy(_.dragHandler, _);
-            _.keyHandler = $.proxy(_.keyHandler, _);
-            _.autoPlayIterator = $.proxy(_.autoPlayIterator, _);
-
-            _.instanceUid = instanceUid++;
-
-            // A simple way to check for HTML strings
-            // Strict HTML recognition (must start with <)
-            // Extracted from jQuery v1.11 source
-            _.htmlExpr = /^(?:\s*(<[\w\W]+>)[^>]*)$/;
-
-            _.init();
-
-            _.checkResponsive();
-
-        }
-
-        return Slick;
-
-    }());
-
-    Slick.prototype.addSlide = function(markup, index, addBefore) {
-
-        var _ = this;
-
-        if (typeof(index) === 'boolean') {
-            addBefore = index;
-            index = null;
-        } else if (index < 0 || (index >= _.slideCount)) {
-            return false;
-        }
-
-        _.unload();
-
-        if (typeof(index) === 'number') {
-            if (index === 0 && _.$slides.length === 0) {
-                $(markup).appendTo(_.$slideTrack);
-            } else if (addBefore) {
-                $(markup).insertBefore(_.$slides.eq(index));
-            } else {
-                $(markup).insertAfter(_.$slides.eq(index));
-            }
-        } else {
-            if (addBefore === true) {
-                $(markup).prependTo(_.$slideTrack);
-            } else {
-                $(markup).appendTo(_.$slideTrack);
-            }
-        }
-
-        _.$slides = _.$slideTrack.children(this.options.slide);
-
-        _.$slideTrack.children(this.options.slide).detach();
-
-        _.$slideTrack.append(_.$slides);
-
-        _.$slides.each(function(index, element) {
-            $(element).attr("index",index);
-        });
-
-        _.$slidesCache = _.$slides;
-
-        _.reinit();
-
-    };
-
-    Slick.prototype.animateSlide = function(targetLeft, callback) {
-
-        var animProps = {}, _ = this;
-
-        if(_.options.slidesToShow === 1 && _.options.adaptiveHeight === true && _.options.vertical === false) {
-            var targetHeight = _.$slides.eq(_.currentSlide).outerHeight(true);
-            _.$list.animate({height: targetHeight},_.options.speed);
-        }
-
-        if (_.options.rtl === true && _.options.vertical === false) {
-            targetLeft = -targetLeft;
-        }
-        if (_.transformsEnabled === false) {
-            if (_.options.vertical === false) {
-                _.$slideTrack.animate({
-                    left: targetLeft
-                }, _.options.speed, _.options.easing, callback);
-            } else {
-                _.$slideTrack.animate({
-                    top: targetLeft
-                }, _.options.speed, _.options.easing, callback);
-            }
-
-        } else {
-
-            if (_.cssTransitions === false) {
-
-                $({
-                    animStart: _.currentLeft
-                }).animate({
-                    animStart: targetLeft
-                }, {
-                    duration: _.options.speed,
-                    easing: _.options.easing,
-                    step: function(now) {
-                        if (_.options.vertical === false) {
-                            animProps[_.animType] = 'translate(' +
-                                now + 'px, 0px)';
-                            _.$slideTrack.css(animProps);
-                        } else {
-                            animProps[_.animType] = 'translate(0px,' +
-                                now + 'px)';
-                            _.$slideTrack.css(animProps);
-                        }
-                    },
-                    complete: function() {
-                        if (callback) {
-                            callback.call();
-                        }
-                    }
-                });
-
-            } else {
-
-                _.applyTransition();
-
-                if (_.options.vertical === false) {
-                    animProps[_.animType] = 'translate3d(' + targetLeft + 'px, 0px, 0px)';
-                } else {
-                    animProps[_.animType] = 'translate3d(0px,' + targetLeft + 'px, 0px)';
-                }
-                _.$slideTrack.css(animProps);
-
-                if (callback) {
-                    setTimeout(function() {
-
-                        _.disableTransition();
-
-                        callback.call();
-                    }, _.options.speed);
-                }
-
-            }
-
-        }
-
-    };
-
-    Slick.prototype.asNavFor = function(index) {
-        var _ = this, asNavFor = _.options.asNavFor != null ? $(_.options.asNavFor).getSlick() : null;
-        if(asNavFor != null) asNavFor.slideHandler(index, true);
-    };
-
-    Slick.prototype.applyTransition = function(slide) {
-
-        var _ = this,
-            transition = {};
-
-        if (_.options.fade === false) {
-            transition[_.transitionType] = _.transformType + ' ' + _.options.speed + 'ms ' + _.options.cssEase;
-        } else {
-            transition[_.transitionType] = 'opacity ' + _.options.speed + 'ms ' + _.options.cssEase;
-        }
-
-        if (_.options.fade === false) {
-            _.$slideTrack.css(transition);
-        } else {
-            _.$slides.eq(slide).css(transition);
-        }
-
-    };
-
-    Slick.prototype.autoPlay = function() {
-
-        var _ = this;
-
-        if (_.autoPlayTimer) {
-            clearInterval(_.autoPlayTimer);
-        }
-
-        if (_.slideCount > _.options.slidesToShow && _.paused !== true) {
-            _.autoPlayTimer = setInterval(_.autoPlayIterator,
-                _.options.autoplaySpeed);
-        }
-
-    };
-
-    Slick.prototype.autoPlayClear = function() {
-
-        var _ = this;
-        if (_.autoPlayTimer) {
-            clearInterval(_.autoPlayTimer);
-        }
-
-    };
-
-    Slick.prototype.autoPlayIterator = function() {
-
-        var _ = this;
-
-        if (_.options.infinite === false) {
-
-            if (_.direction === 1) {
-
-                if ((_.currentSlide + 1) === _.slideCount -
-                    1) {
-                    _.direction = 0;
-                }
-
-                _.slideHandler(_.currentSlide + _.options.slidesToScroll);
-
-            } else {
-
-                if ((_.currentSlide - 1 === 0)) {
-
-                    _.direction = 1;
-
-                }
-
-                _.slideHandler(_.currentSlide - _.options.slidesToScroll);
-
-            }
-
-        } else {
-
-            _.slideHandler(_.currentSlide + _.options.slidesToScroll);
-
-        }
-
-    };
-
-    Slick.prototype.buildArrows = function() {
-
-        var _ = this;
-
-        if (_.options.arrows === true && _.slideCount > _.options.slidesToShow) {
-
-            _.$prevArrow = $(_.options.prevArrow);
-            _.$nextArrow = $(_.options.nextArrow);
-
-            if (_.htmlExpr.test(_.options.prevArrow)) {
-                _.$prevArrow.appendTo(_.options.appendArrows);
-            }
-
-            if (_.htmlExpr.test(_.options.nextArrow)) {
-                _.$nextArrow.appendTo(_.options.appendArrows);
-            }
-
-            if (_.options.infinite !== true) {
-                _.$prevArrow.addClass('slick-disabled');
-            }
-
-        }
-
-    };
-
-    Slick.prototype.buildDots = function() {
-
-        var _ = this,
-            i, dotString;
-
-        if (_.options.dots === true && _.slideCount > _.options.slidesToShow) {
-
-            dotString = '<ul class="' + _.options.dotsClass + '">';
-
-            for (i = 0; i <= _.getDotCount(); i += 1) {
-                dotString += '<li>' + _.options.customPaging.call(this, _, i) + '</li>';
-            }
-
-            dotString += '</ul>';
-
-            _.$dots = $(dotString).appendTo(
-                _.options.appendDots);
-
-            _.$dots.find('li').first().addClass(
-                'slick-active');
-
-        }
-
-    };
-
-    Slick.prototype.buildOut = function() {
-
-        var _ = this;
-
-        _.$slides = _.$slider.children(_.options.slide +
-            ':not(.slick-cloned)').addClass(
-            'slick-slide');
-        _.slideCount = _.$slides.length;
-
-        _.$slides.each(function(index, element) {
-            $(element).attr("index",index);
-        });
-
-        _.$slidesCache = _.$slides;
-
-        _.$slider.addClass('slick-slider');
-
-        _.$slideTrack = (_.slideCount === 0) ?
-            $('<div class="slick-track"/>').appendTo(_.$slider) :
-            _.$slides.wrapAll('<div class="slick-track"/>').parent();
-
-        _.$list = _.$slideTrack.wrap(
-            '<div class="slick-list"/>').parent();
-        _.$slideTrack.css('opacity', 0);
-
-        if (_.options.centerMode === true) {
-            _.options.slidesToScroll = 1;
-        }
-
-        $('img[data-lazy]', _.$slider).not('[src]').addClass('slick-loading');
-
-        _.setupInfinite();
-
-        _.buildArrows();
-
-        _.buildDots();
-
-        _.updateDots();
-
-        if (_.options.accessibility === true) {
-            _.$list.prop('tabIndex', 0);
-        }
-
-        _.setSlideClasses(typeof this.currentSlide === 'number' ? this.currentSlide : 0);
-
-        if (_.options.draggable === true) {
-            _.$list.addClass('draggable');
-        }
-
-    };
-
-    Slick.prototype.checkResponsive = function() {
-
-        var _ = this,
-            breakpoint, targetBreakpoint, respondToWidth;
-        var sliderWidth = _.$slider.width();
-        var windowWidth = window.innerWidth || $(window).width();
-        if (_.respondTo === "window") {
-          respondToWidth = windowWidth;
-        } else if (_.respondTo === "slider") {
-          respondToWidth = sliderWidth;
-        } else if (_.respondTo === "min") {
-          respondToWidth = Math.min(windowWidth, sliderWidth);
-        }
-
-        if (_.originalSettings.responsive && _.originalSettings
-            .responsive.length > -1 && _.originalSettings.responsive !== null) {
-
-            targetBreakpoint = null;
-
-            for (breakpoint in _.breakpoints) {
-                if (_.breakpoints.hasOwnProperty(breakpoint)) {
-                    if (respondToWidth < _.breakpoints[breakpoint]) {
-                        targetBreakpoint = _.breakpoints[breakpoint];
-                    }
-                }
-            }
-
-            if (targetBreakpoint !== null) {
-                if (_.activeBreakpoint !== null) {
-                    if (targetBreakpoint !== _.activeBreakpoint) {
-                        _.activeBreakpoint =
-                            targetBreakpoint;
-                        _.options = $.extend({}, _.originalSettings,
-                            _.breakpointSettings[
-                                targetBreakpoint]);
-                        _.refresh();
-                    }
-                } else {
-                    _.activeBreakpoint = targetBreakpoint;
-                    _.options = $.extend({}, _.originalSettings,
-                        _.breakpointSettings[
-                            targetBreakpoint]);
-                    _.refresh();
-                }
-            } else {
-                if (_.activeBreakpoint !== null) {
-                    _.activeBreakpoint = null;
-                    _.options = _.originalSettings;
-                    _.refresh();
-                }
-            }
-
-        }
-
-    };
-
-    Slick.prototype.changeSlide = function(event, dontAnimate) {
-
-        var _ = this,
-            $target = $(event.target),
-            indexOffset, slideOffset, unevenOffset,navigables, prevNavigable;
-
-        // If target is a link, prevent default action.
-        $target.is('a') && event.preventDefault();
-
-        unevenOffset = (_.slideCount % _.options.slidesToScroll !== 0);
-        indexOffset = unevenOffset ? 0 : (_.slideCount - _.currentSlide) % _.options.slidesToScroll;
-
-        switch (event.data.message) {
-
-            case 'previous':
-                slideOffset = indexOffset === 0 ? _.options.slidesToScroll : _.options.slidesToShow - indexOffset;
-                if (_.slideCount > _.options.slidesToShow) {
-                    _.slideHandler(_.currentSlide  - slideOffset, false, dontAnimate);
-                }
-                break;
-
-            case 'next':
-                slideOffset = indexOffset === 0 ? _.options.slidesToScroll : indexOffset;
-                if (_.slideCount > _.options.slidesToShow) {
-                    _.slideHandler(_.currentSlide + slideOffset, false, dontAnimate);
-                }
-                break;
-
-            case 'index':
-                var index = event.data.index === 0 ? 0 :
-                    event.data.index || $(event.target).parent().index() * _.options.slidesToScroll;
-
-                navigables = _.getNavigableIndexes();
-                prevNavigable = 0;
-                if(navigables[index] && navigables[index] === index) {
-                    if(index > navigables[navigables.length -1]){
-                        index = navigables[navigables.length -1];
-                    } else {
-                        for(var n in navigables) {
-                            if(index < navigables[n]) {
-                                index = prevNavigable;
-                                break;
-                            }
-                            prevNavigable = navigables[n];
-                        }
-                    }
-                }
-                _.slideHandler(index, false, dontAnimate);
-
-            default:
-                return;
-        }
-
-    };
-
-    Slick.prototype.clickHandler = function(event) {
-
-        var _ = this;
-
-        if(_.shouldClick === false) {
-            event.stopImmediatePropagation();
-            event.stopPropagation();
-            event.preventDefault();
-        }
-
-    }
-
-    Slick.prototype.destroy = function() {
-
-        var _ = this;
-
-        _.autoPlayClear();
-
-        _.touchObject = {};
-
-        $('.slick-cloned', _.$slider).remove();
-        if (_.$dots) {
-            _.$dots.remove();
-        }
-        if (_.$prevArrow && (typeof _.options.prevArrow !== 'object')) {
-            _.$prevArrow.remove();
-        }
-        if (_.$nextArrow && (typeof _.options.nextArrow !== 'object')) {
-            _.$nextArrow.remove();
-        }
-        if (_.$slides.parent().hasClass('slick-track')) {
-            _.$slides.unwrap().unwrap();
-        }
-
-        _.$slides.removeClass(
-            'slick-slide slick-active slick-center slick-visible')
-            .removeAttr('index')
-            .css({
-                position: '',
-                left: '',
-                top: '',
-                zIndex: '',
-                opacity: '',
-                width: ''
-            });
-
-        _.$slider.removeClass('slick-slider');
-        _.$slider.removeClass('slick-initialized');
-
-        _.$list.off('.slick');
-        $(window).off('.slick-' + _.instanceUid);
-        $(document).off('.slick-' + _.instanceUid);
-
-    };
-
-    Slick.prototype.disableTransition = function(slide) {
-
-        var _ = this,
-            transition = {};
-
-        transition[_.transitionType] = "";
-
-        if (_.options.fade === false) {
-            _.$slideTrack.css(transition);
-        } else {
-            _.$slides.eq(slide).css(transition);
-        }
-
-    };
-
-    Slick.prototype.fadeSlide = function(oldSlide, slideIndex, callback) {
-
-        var _ = this;
-
-        if (_.cssTransitions === false) {
-
-            _.$slides.eq(slideIndex).css({
-                zIndex: 1000
-            });
-
-            _.$slides.eq(slideIndex).animate({
-                opacity: 1
-            }, _.options.speed, _.options.easing, callback);
-
-            _.$slides.eq(oldSlide).animate({
-                opacity: 0
-            }, _.options.speed, _.options.easing);
-
-        } else {
-
-            _.applyTransition(slideIndex);
-            _.applyTransition(oldSlide);
-
-            _.$slides.eq(slideIndex).css({
-                opacity: 1,
-                zIndex: 1000
-            });
-
-            _.$slides.eq(oldSlide).css({
-                opacity: 0
-            });
-
-            if (callback) {
-                setTimeout(function() {
-
-                    _.disableTransition(slideIndex);
-                    _.disableTransition(oldSlide);
-
-                    callback.call();
-                }, _.options.speed);
-            }
-
-        }
-
-    };
-
-    Slick.prototype.filterSlides = function(filter) {
-
-        var _ = this;
-
-        if (filter !== null) {
-
-            _.unload();
-
-            _.$slideTrack.children(this.options.slide).detach();
-
-            _.$slidesCache.filter(filter).appendTo(_.$slideTrack);
-
-            _.reinit();
-
-        }
-
-    };
-
-    Slick.prototype.getCurrent = function() {
-
-        var _ = this;
-
-        return _.currentSlide;
-
-    };
-
-    Slick.prototype.getDotCount = function() {
-
-        var _ = this;
-
-        var breakPoint = 0;
-        var counter = 0;
-        var pagerQty = 0;
-
-        if(_.options.infinite === true) {
-            pagerQty = Math.ceil(_.slideCount / _.options.slidesToScroll);
-        } else {
-            while (breakPoint < _.slideCount){
-                ++pagerQty;
-                breakPoint = counter + _.options.slidesToShow;
-                counter += _.options.slidesToScroll <= _.options.slidesToShow ? _.options.slidesToScroll  : _.options.slidesToShow;
-            }
-        }
-
-        return pagerQty - 1;
-
-    };
-
-    Slick.prototype.getLeft = function(slideIndex) {
-
-        var _ = this,
-            targetLeft,
-            verticalHeight,
-            verticalOffset = 0,
-            slideWidth,
-            targetSlide;
-
-        _.slideOffset = 0;
-        verticalHeight = _.$slides.first().outerHeight();
-
-        if (_.options.infinite === true) {
-            if (_.slideCount > _.options.slidesToShow) {
-                _.slideOffset = (_.slideWidth * _.options.slidesToShow) * -1;
-                verticalOffset = (verticalHeight * _.options.slidesToShow) * -1;
-            }
-            if (_.slideCount % _.options.slidesToScroll !== 0) {
-                if (slideIndex + _.options.slidesToScroll > _.slideCount && _.slideCount > _.options.slidesToShow) {
-                    if(slideIndex > _.slideCount) {
-                        _.slideOffset = ((_.options.slidesToShow - (slideIndex - _.slideCount)) * _.slideWidth) * -1;
-                        verticalOffset = ((_.options.slidesToShow - (slideIndex - _.slideCount)) * verticalHeight) * -1;
-                    } else {
-                        _.slideOffset = ((_.slideCount % _.options.slidesToScroll) * _.slideWidth) * -1;
-                        verticalOffset = ((_.slideCount % _.options.slidesToScroll) * verticalHeight) * -1;
-                    }
-                }
-            }
-        } else {
-            if(slideIndex + _.options.slidesToShow > _.slideCount) {
-                _.slideOffset = ((slideIndex + _.options.slidesToShow) - _.slideCount) * _.slideWidth;
-                verticalOffset = ((slideIndex + _.options.slidesToShow) - _.slideCount) * verticalHeight;
-            }
-        }
-
-        if (_.slideCount <= _.options.slidesToShow){
-            _.slideOffset = 0;
-            verticalOffset = 0;
-        }
-
-        if (_.options.centerMode === true && _.options.infinite === true) {
-            _.slideOffset += _.slideWidth * Math.floor(_.options.slidesToShow / 2) - _.slideWidth;
-        } else if (_.options.centerMode === true) {
-            _.slideOffset = 0;
-            _.slideOffset += _.slideWidth * Math.floor(_.options.slidesToShow / 2);
-        }
-
-        if (_.options.vertical === false) {
-            targetLeft = ((slideIndex * _.slideWidth) * -1) + _.slideOffset;
-        } else {
-            targetLeft = ((slideIndex * verticalHeight) * -1) + verticalOffset;
-        }
-
-        if (_.options.variableWidth === true) {
-
-            if(_.slideCount <= _.options.slidesToShow || _.options.infinite === false) {
-                targetSlide = _.$slideTrack.children('.slick-slide').eq(slideIndex);
-            } else {
-                targetSlide = _.$slideTrack.children('.slick-slide').eq(slideIndex + _.options.slidesToShow);
-            }
-            targetLeft = targetSlide[0] ? targetSlide[0].offsetLeft * -1 : 0;
-            if (_.options.centerMode === true) {
-                if(_.options.infinite === false) {
-                    targetSlide = _.$slideTrack.children('.slick-slide').eq(slideIndex);
-                } else {
-                    targetSlide = _.$slideTrack.children('.slick-slide').eq(slideIndex + _.options.slidesToShow + 1);
-                }
-                targetLeft = targetSlide[0] ? targetSlide[0].offsetLeft * -1 : 0;
-                targetLeft += (_.$list.width() - targetSlide.outerWidth()) / 2;
-            }
-        }
-
-         // 1680
-
-        return targetLeft;
-
-    };
-
-    Slick.prototype.getNavigableIndexes = function() {
-
-        var _ = this;
-
-        var breakPoint = 0;
-        var counter = 0;
-        var indexes = [];
-
-        while (breakPoint < _.slideCount){
-            indexes.push(breakPoint);
-            breakPoint = counter + _.options.slidesToScroll;
-            counter += _.options.slidesToScroll <= _.options.slidesToShow ? _.options.slidesToScroll  : _.options.slidesToShow;
-        }
-
-        return indexes;
-
-    };
-
-    Slick.prototype.getSlideCount = function() {
-
-        var _ = this, slidesTraversed;
-
-        if(_.options.swipeToSlide === true) {
-            var swipedSlide = null;
-            _.$slideTrack.find('.slick-slide').each(function(index, slide){
-                if (slide.offsetLeft + ($(slide).outerWidth() / 2) > (_.swipeLeft * -1)) {
-                    swipedSlide = slide;
-                    return false;
-                }
-            });
-            slidesTraversed = Math.abs($(swipedSlide).attr('index') - _.currentSlide);
-            return slidesTraversed;
-        } else {
-            return _.options.slidesToScroll;
-        }
-
-    };
-
-    Slick.prototype.init = function() {
-
-        var _ = this;
-
-        if (!$(_.$slider).hasClass('slick-initialized')) {
-
-            $(_.$slider).addClass('slick-initialized');
-            _.buildOut();
-            _.setProps();
-            _.startLoad();
-            _.loadSlider();
-            _.initializeEvents();
-            _.updateArrows();
-            _.updateDots();
-        }
-
-        if (_.options.onInit !== null) {
-            _.options.onInit.call(this, _);
-        }
-
-    };
-
-    Slick.prototype.initArrowEvents = function() {
-
-        var _ = this;
-
-        if (_.options.arrows === true && _.slideCount > _.options.slidesToShow) {
-            _.$prevArrow.on('click.slick', {
-                message: 'previous'
-            }, _.changeSlide);
-            _.$nextArrow.on('click.slick', {
-                message: 'next'
-            }, _.changeSlide);
-        }
-
-    };
-
-    Slick.prototype.initDotEvents = function() {
-
-        var _ = this;
-
-        if (_.options.dots === true && _.slideCount > _.options.slidesToShow) {
-            $('li', _.$dots).on('click.slick', {
-                message: 'index'
-            }, _.changeSlide);
-        }
-
-        if (_.options.dots === true && _.options.pauseOnDotsHover === true && _.options.autoplay === true) {
-            $('li', _.$dots)
-                .on('mouseenter.slick', function(){
-                    _.paused = true;
-                    _.autoPlayClear();
-                })
-                .on('mouseleave.slick', function(){
-                    _.paused = false;
-                    _.autoPlay();
-                });
-        }
-
-    };
-
-    Slick.prototype.initializeEvents = function() {
-
-        var _ = this;
-
-        _.initArrowEvents();
-
-        _.initDotEvents();
-
-        _.$list.on('touchstart.slick mousedown.slick', {
-            action: 'start'
-        }, _.swipeHandler);
-        _.$list.on('touchmove.slick mousemove.slick', {
-            action: 'move'
-        }, _.swipeHandler);
-        _.$list.on('touchend.slick mouseup.slick', {
-            action: 'end'
-        }, _.swipeHandler);
-        _.$list.on('touchcancel.slick mouseleave.slick', {
-            action: 'end'
-        }, _.swipeHandler);
-
-        _.$list.on('click.slick', _.clickHandler);
-
-        if (_.options.pauseOnHover === true && _.options.autoplay === true) {
-            _.$list.on('mouseenter.slick', function(){
-                _.paused = true;
-                _.autoPlayClear();
-            });
-            _.$list.on('mouseleave.slick', function(){
-                _.paused = false;
-                _.autoPlay();
-            });
-        }
-
-        if(_.options.accessibility === true) {
-            _.$list.on('keydown.slick', _.keyHandler);
-        }
-
-        if(_.options.focusOnSelect === true) {
-            $(_.options.slide, _.$slideTrack).on('click.slick', _.selectHandler);
-        }
-
-        $(window).on('orientationchange.slick.slick-' + _.instanceUid, function() {
-            _.checkResponsive();
-            _.setPosition();
-        });
-
-        $(window).on('resize.slick.slick-' + _.instanceUid, function() {
-            if ($(window).width() !== _.windowWidth) {
-                clearTimeout(_.windowDelay);
-                _.windowDelay = window.setTimeout(function() {
-                    _.windowWidth = $(window).width();
-                    _.checkResponsive();
-                    _.setPosition();
-                }, 50);
-            }
-        });
-
-        $('*[draggable!=true]', _.$slideTrack).on('dragstart', function(e){ e.preventDefault(); })
-
-        $(window).on('load.slick.slick-' + _.instanceUid, _.setPosition);
-        $(document).on('ready.slick.slick-' + _.instanceUid, _.setPosition);
-
-    };
-
-    Slick.prototype.initUI = function() {
-
-        var _ = this;
-
-        if (_.options.arrows === true && _.slideCount > _.options.slidesToShow) {
-
-            _.$prevArrow.show();
-            _.$nextArrow.show();
-
-        }
-
-        if (_.options.dots === true && _.slideCount > _.options.slidesToShow) {
-
-            _.$dots.show();
-
-        }
-
-        if (_.options.autoplay === true) {
-
-            _.autoPlay();
-
-        }
-
-    };
-
-    Slick.prototype.keyHandler = function(event) {
-
-        var _ = this;
-
-        if (event.keyCode === 37 && _.options.accessibility === true) {
-            _.changeSlide({
-                data: {
-                    message: 'previous'
-                }
-            });
-        } else if (event.keyCode === 39 && _.options.accessibility === true) {
-            _.changeSlide({
-                data: {
-                    message: 'next'
-                }
-            });
-        }
-
-    };
-
-    Slick.prototype.lazyLoad = function() {
-
-        var _ = this,
-            loadRange, cloneRange, rangeStart, rangeEnd;
-
-        function loadImages(imagesScope) {
-            $('img[data-lazy]', imagesScope).each(function() {
-                var image = $(this),
-                    imageSource = $(this).attr('data-lazy');
-
-                image
-                  .load(function() { image.animate({ opacity: 1 }, 200); })
-                  .css({ opacity: 0 })
-                  .attr('src', imageSource)
-                  .removeAttr('data-lazy')
-                  .removeClass('slick-loading');
-            });
-        }
-
-        if (_.options.centerMode === true) {
-            if (_.options.infinite === true) {
-                rangeStart = _.currentSlide + (_.options.slidesToShow/2 + 1);
-                rangeEnd = rangeStart + _.options.slidesToShow + 2;
-            } else {
-                rangeStart = Math.max(0, _.currentSlide - (_.options.slidesToShow/2 + 1));
-                rangeEnd = 2 + (_.options.slidesToShow/2 + 1) + _.currentSlide;
-            }
-        } else {
-            rangeStart = _.options.infinite ? _.options.slidesToShow + _.currentSlide : _.currentSlide;
-            rangeEnd = rangeStart + _.options.slidesToShow;
-            if (_.options.fade === true ) {
-                if(rangeStart > 0) rangeStart--;
-                if(rangeEnd <= _.slideCount) rangeEnd++;
-            }
-        }
-
-        loadRange = _.$slider.find('.slick-slide').slice(rangeStart, rangeEnd);
-        loadImages(loadRange);
-
-          if (_.slideCount <= _.options.slidesToShow){
-              cloneRange = _.$slider.find('.slick-slide')
-              loadImages(cloneRange)
-          }else
-        if (_.currentSlide >= _.slideCount - _.options.slidesToShow) {
-            cloneRange = _.$slider.find('.slick-cloned').slice(0, _.options.slidesToShow);
-            loadImages(cloneRange)
-        } else if (_.currentSlide === 0) {
-            cloneRange = _.$slider.find('.slick-cloned').slice(_.options.slidesToShow * -1);
-            loadImages(cloneRange);
-        }
-
-    };
-
-    Slick.prototype.loadSlider = function() {
-
-        var _ = this;
-
-        _.setPosition();
-
-        _.$slideTrack.css({
-            opacity: 1
-        });
-
-        _.$slider.removeClass('slick-loading');
-
-        _.initUI();
-
-        if (_.options.lazyLoad === 'progressive') {
-            _.progressiveLazyLoad();
-        }
-
-    };
-
-    Slick.prototype.postSlide = function(index) {
-
-        var _ = this;
-
-        if (_.options.onAfterChange !== null) {
-            _.options.onAfterChange.call(this, _, index);
-        }
-
-        _.animating = false;
-
-        _.setPosition();
-
-        _.swipeLeft = null;
-
-        if (_.options.autoplay === true && _.paused === false) {
-            _.autoPlay();
-        }
-
-    };
-
-    Slick.prototype.progressiveLazyLoad = function() {
-
-        var _ = this,
-            imgCount, targetImage;
-
-        imgCount = $('img[data-lazy]', _.$slider).length;
-
-        if (imgCount > 0) {
-            targetImage = $('img[data-lazy]', _.$slider).first();
-            targetImage.attr('src', targetImage.attr('data-lazy')).removeClass('slick-loading').load(function() {
-                targetImage.removeAttr('data-lazy');
-                _.progressiveLazyLoad();
-            })
-         .error(function () {
-          targetImage.removeAttr('data-lazy');
-          _.progressiveLazyLoad();
-         });
-        }
-
-    };
-
-    Slick.prototype.refresh = function() {
-
-        var _ = this,
-            currentSlide = _.currentSlide;
-
-        _.destroy();
-
-        $.extend(_, _.initials);
-
-        _.init();
-
-        _.changeSlide({
-            data: {
-                message: 'index',
-                index: currentSlide,
-            }
-        }, true);
-
-    };
-
-    Slick.prototype.reinit = function() {
-
-        var _ = this;
-
-        _.$slides = _.$slideTrack.children(_.options.slide).addClass(
-            'slick-slide');
-
-        _.slideCount = _.$slides.length;
-
-        if (_.currentSlide >= _.slideCount && _.currentSlide !== 0) {
-            _.currentSlide = _.currentSlide - _.options.slidesToScroll;
-        }
-
-        if (_.slideCount <= _.options.slidesToShow) {
-            _.currentSlide = 0;
-        }
-
-        _.setProps();
-
-        _.setupInfinite();
-
-        _.buildArrows();
-
-        _.updateArrows();
-
-        _.initArrowEvents();
-
-        _.buildDots();
-
-        _.updateDots();
-
-        _.initDotEvents();
-
-        if(_.options.focusOnSelect === true) {
-            $(_.options.slide, _.$slideTrack).on('click.slick', _.selectHandler);
-        }
-
-        _.setSlideClasses(0);
-
-        _.setPosition();
-
-        if (_.options.onReInit !== null) {
-            _.options.onReInit.call(this, _);
-        }
-
-    };
-
-    Slick.prototype.removeSlide = function(index, removeBefore, removeAll) {
-
-        var _ = this;
-
-        if (typeof(index) === 'boolean') {
-            removeBefore = index;
-            index = removeBefore === true ? 0 : _.slideCount - 1;
-        } else {
-            index = removeBefore === true ? --index : index;
-        }
-
-        if (_.slideCount < 1 || index < 0 || index > _.slideCount - 1) {
-            return false;
-        }
-
-        _.unload();
-
-        if(removeAll === true) {
-            _.$slideTrack.children().remove();
-        } else {
-            _.$slideTrack.children(this.options.slide).eq(index).remove();
-        }
-
-        _.$slides = _.$slideTrack.children(this.options.slide);
-
-        _.$slideTrack.children(this.options.slide).detach();
-
-        _.$slideTrack.append(_.$slides);
-
-        _.$slidesCache = _.$slides;
-
-        _.reinit();
-
-    };
-
-    Slick.prototype.setCSS = function(position) {
-
-        var _ = this,
-            positionProps = {}, x, y;
-
-        if (_.options.rtl === true) {
-            position = -position;
-        }
-        x = _.positionProp == 'left' ? position + 'px' : '0px';
-        y = _.positionProp == 'top' ? position + 'px' : '0px';
-
-        positionProps[_.positionProp] = position;
-
-        if (_.transformsEnabled === false) {
-            _.$slideTrack.css(positionProps);
-        } else {
-            positionProps = {};
-            if (_.cssTransitions === false) {
-                positionProps[_.animType] = 'translate(' + x + ', ' + y + ')';
-                _.$slideTrack.css(positionProps);
-            } else {
-                positionProps[_.animType] = 'translate3d(' + x + ', ' + y + ', 0px)';
-                _.$slideTrack.css(positionProps);
-            }
-        }
-
-    };
-
-    Slick.prototype.setDimensions = function() {
-
-        var _ = this;
-
-        if (_.options.vertical === false) {
-            if (_.options.centerMode === true) {
-                _.$list.css({
-                    padding: ('0px ' + _.options.centerPadding)
-                });
-            }
-        } else {
-            _.$list.height(_.$slides.first().outerHeight(true) * _.options.slidesToShow);
-            if (_.options.centerMode === true) {
-                _.$list.css({
-                    padding: (_.options.centerPadding + ' 0px')
-                });
-            }
-        }
-
-        _.listWidth = _.$list.width();
-        _.listHeight = _.$list.height();
-
-
-        if(_.options.vertical === false && _.options.variableWidth === false) {
-            _.slideWidth = Math.ceil(_.listWidth / _.options.slidesToShow);
-            _.$slideTrack.width(Math.ceil((_.slideWidth * _.$slideTrack.children('.slick-slide').length)));
-
-        } else if (_.options.variableWidth === true) {
-            var trackWidth = 0;
-            _.slideWidth = Math.ceil(_.listWidth / _.options.slidesToShow);
-            _.$slideTrack.children('.slick-slide').each(function(){
-                trackWidth += Math.ceil($(this).outerWidth(true));
-            });
-            _.$slideTrack.width(Math.ceil(trackWidth) + 1);
-        } else {
-            _.slideWidth = Math.ceil(_.listWidth);
-            _.$slideTrack.height(Math.ceil((_.$slides.first().outerHeight(true) * _.$slideTrack.children('.slick-slide').length)));
-        }
-
-        var offset = _.$slides.first().outerWidth(true) - _.$slides.first().width();
-        if (_.options.variableWidth === false) _.$slideTrack.children('.slick-slide').width(_.slideWidth - offset);
-
-    };
-
-    Slick.prototype.setFade = function() {
-
-        var _ = this,
-            targetLeft;
-
-        _.$slides.each(function(index, element) {
-            targetLeft = (_.slideWidth * index) * -1;
-            if (_.options.rtl === true) {
-                $(element).css({
-                    position: 'relative',
-                    right: targetLeft,
-                    top: 0,
-                    zIndex: 800,
-                    opacity: 0
-                });
-            } else {
-                $(element).css({
-                    position: 'relative',
-                    left: targetLeft,
-                    top: 0,
-                    zIndex: 800,
-                    opacity: 0
-                });
-            }
-        });
-
-        _.$slides.eq(_.currentSlide).css({
-            zIndex: 900,
-            opacity: 1
-        });
-
-    };
-
-    Slick.prototype.setHeight = function() {
-
-        var _ = this;
-
-        if(_.options.slidesToShow === 1 && _.options.adaptiveHeight === true && _.options.vertical === false) {
-            var targetHeight = _.$slides.eq(_.currentSlide).outerHeight(true);
-            _.$list.css('height', targetHeight);
-        }
-
-    };
-
-    Slick.prototype.setPosition = function() {
-
-        var _ = this;
-
-        _.setDimensions();
-
-        _.setHeight();
-
-        if (_.options.fade === false) {
-            _.setCSS(_.getLeft(_.currentSlide));
-        } else {
-            _.setFade();
-        }
-
-        if (_.options.onSetPosition !== null) {
-            _.options.onSetPosition.call(this, _);
-        }
-
-    };
-
-    Slick.prototype.setProps = function() {
-
-        var _ = this,
-            bodyStyle = document.body.style;
-
-        _.positionProp = _.options.vertical === true ? 'top' : 'left';
-
-        if (_.positionProp === 'top') {
-            _.$slider.addClass('slick-vertical');
-        } else {
-            _.$slider.removeClass('slick-vertical');
-        }
-
-        if (bodyStyle.WebkitTransition !== undefined ||
-            bodyStyle.MozTransition !== undefined ||
-            bodyStyle.msTransition !== undefined) {
-            if(_.options.useCSS === true) {
-                _.cssTransitions = true;
-            }
-        }
-
-        if (bodyStyle.OTransform !== undefined) {
-            _.animType = 'OTransform';
-            _.transformType = "-o-transform";
-            _.transitionType = 'OTransition';
-            if (bodyStyle.perspectiveProperty === undefined && bodyStyle.webkitPerspective === undefined) _.animType = false;
-        }
-        if (bodyStyle.MozTransform !== undefined) {
-            _.animType = 'MozTransform';
-            _.transformType = "-moz-transform";
-            _.transitionType = 'MozTransition';
-            if (bodyStyle.perspectiveProperty === undefined && bodyStyle.MozPerspective === undefined) _.animType = false;
-        }
-        if (bodyStyle.webkitTransform !== undefined) {
-            _.animType = 'webkitTransform';
-            _.transformType = "-webkit-transform";
-            _.transitionType = 'webkitTransition';
-            if (bodyStyle.perspectiveProperty === undefined && bodyStyle.webkitPerspective === undefined) _.animType = false;
-        }
-        if (bodyStyle.msTransform !== undefined) {
-            _.animType = 'msTransform';
-            _.transformType = "-ms-transform";
-            _.transitionType = 'msTransition';
-            if (bodyStyle.msTransform === undefined) _.animType = false;
-        }
-        if (bodyStyle.transform !== undefined && _.animType !== false) {
-            _.animType = 'transform';
-            _.transformType = "transform";
-            _.transitionType = 'transition';
-        }
-        _.transformsEnabled = (_.animType !== null && _.animType !== false);
-
-    };
-
-
-    Slick.prototype.setSlideClasses = function(index) {
-
-        var _ = this,
-            centerOffset, allSlides, indexOffset, remainder;
-
-        _.$slider.find('.slick-slide').removeClass('slick-active').removeClass('slick-center');
-        allSlides = _.$slider.find('.slick-slide');
-
-        if (_.options.centerMode === true) {
-
-            centerOffset = Math.floor(_.options.slidesToShow / 2);
-
-            if(_.options.infinite === true) {
-
-                if (index >= centerOffset && index <= (_.slideCount - 1) - centerOffset) {
-                    _.$slides.slice(index - centerOffset, index + centerOffset + 1).addClass('slick-active');
-                } else {
-                    indexOffset = _.options.slidesToShow + index;
-                    allSlides.slice(indexOffset - centerOffset + 1, indexOffset + centerOffset + 2).addClass('slick-active');
-                }
-
-                if (index === 0) {
-                    allSlides.eq(allSlides.length - 1 - _.options.slidesToShow).addClass('slick-center');
-                } else if (index === _.slideCount - 1) {
-                    allSlides.eq(_.options.slidesToShow).addClass('slick-center');
-                }
-
-            }
-
-            _.$slides.eq(index).addClass('slick-center');
-
-        } else {
-
-            if (index >= 0 && index <= (_.slideCount - _.options.slidesToShow)) {
-                _.$slides.slice(index, index + _.options.slidesToShow).addClass('slick-active');
-            } else if ( allSlides.length <= _.options.slidesToShow ) {
-                allSlides.addClass('slick-active');
-            } else {
-                remainder = _.slideCount%_.options.slidesToShow;
-                indexOffset = _.options.infinite === true ? _.options.slidesToShow + index : index;
-                if(_.options.slidesToShow == _.options.slidesToScroll && (_.slideCount - index) < _.options.slidesToShow) {
-                    allSlides.slice(indexOffset-(_.options.slidesToShow-remainder), indexOffset + remainder).addClass('slick-active');
-                } else {
-                    allSlides.slice(indexOffset, indexOffset + _.options.slidesToShow).addClass('slick-active');
-                }
-            }
-
-        }
-
-        if (_.options.lazyLoad === 'ondemand') {
-            _.lazyLoad();
-        }
-
-    };
-
-    Slick.prototype.setupInfinite = function() {
-
-        var _ = this,
-            i, slideIndex, infiniteCount;
-
-        if (_.options.fade === true) {
-            _.options.centerMode = false;
-        }
-
-        if (_.options.infinite === true && _.options.fade === false) {
-
-            slideIndex = null;
-
-            if (_.slideCount > _.options.slidesToShow) {
-
-                if (_.options.centerMode === true) {
-                    infiniteCount = _.options.slidesToShow + 1;
-                } else {
-                    infiniteCount = _.options.slidesToShow;
-                }
-
-                for (i = _.slideCount; i > (_.slideCount -
-                    infiniteCount); i -= 1) {
-                    slideIndex = i - 1;
-                    $(_.$slides[slideIndex]).clone(true).attr('id', '')
-                        .attr('index', slideIndex-_.slideCount)
-                        .prependTo(_.$slideTrack).addClass('slick-cloned');
-                }
-                for (i = 0; i < infiniteCount; i += 1) {
-                    slideIndex = i;
-                    $(_.$slides[slideIndex]).clone(true).attr('id', '')
-                        .attr('index', slideIndex+_.slideCount)
-                        .appendTo(_.$slideTrack).addClass('slick-cloned');
-                }
-                _.$slideTrack.find('.slick-cloned').find('[id]').each(function() {
-                    $(this).attr('id', '');
-                });
-
-            }
-
-        }
-
-    };
-
-    Slick.prototype.selectHandler = function(event) {
-
-        var _ = this;
-        var index = parseInt($(event.target).parents('.slick-slide').attr("index"));
-        if(!index) index = 0;
-
-        if(_.slideCount <= _.options.slidesToShow){
-            _.$slider.find('.slick-slide').removeClass('slick-active');
-            _.$slides.eq(index).addClass('slick-active');
-            if(_.options.centerMode === true) {
-                _.$slider.find('.slick-slide').removeClass('slick-center');
-                _.$slides.eq(index).addClass('slick-center');
-            }
-            _.asNavFor(index);
-            return;
-        }
-        _.slideHandler(index);
-
-    };
-
-    Slick.prototype.slideHandler = function(index,sync,dontAnimate) {
-
-        var targetSlide, animSlide, oldSlide, slideLeft, unevenOffset, targetLeft = null,
-            _ = this;
-
-        sync = sync || false;
-
-        if (_.animating === true && _.options.waitForAnimate === true) {
-            return;
-        }
-
-        if (_.options.fade === true && _.currentSlide === index) {
-            return;
-        }
-
-        if (_.slideCount <= _.options.slidesToShow) {
-            return;
-        }
-
-        if (sync === false) {
-            _.asNavFor(index);
-        }
-
-        targetSlide = index;
-        targetLeft = _.getLeft(targetSlide);
-        slideLeft = _.getLeft(_.currentSlide);
-
-        _.currentLeft = _.swipeLeft === null ? slideLeft : _.swipeLeft;
-
-        if (_.options.infinite === false && _.options.centerMode === false && (index < 0 || index > _.getDotCount() * _.options.slidesToScroll)) {
-            if(_.options.fade === false) {
-                targetSlide = _.currentSlide;
-                if(dontAnimate!==true) {
-                    _.animateSlide(slideLeft, function() {
-                        _.postSlide(targetSlide);
-                    });
-                } else {
-                    _.postSlide(targetSlide);
-                }
-            }
-            return;
-        } else if (_.options.infinite === false && _.options.centerMode === true && (index < 0 || index > (_.slideCount - _.options.slidesToScroll))) {
-            if(_.options.fade === false) {
-                targetSlide = _.currentSlide;
-                if(dontAnimate!==true) {
-                    _.animateSlide(slideLeft, function() {
-                        _.postSlide(targetSlide);
-                    });
-                } else {
-                    _.postSlide(targetSlide);
-                }
-            }
-            return;
-        }
-
-        if (_.options.autoplay === true) {
-            clearInterval(_.autoPlayTimer);
-        }
-
-        if (targetSlide < 0) {
-            if (_.slideCount % _.options.slidesToScroll !== 0) {
-                animSlide = _.slideCount - (_.slideCount % _.options.slidesToScroll);
-            } else {
-                animSlide = _.slideCount + targetSlide;
-            }
-        } else if (targetSlide >= _.slideCount) {
-            if (_.slideCount % _.options.slidesToScroll !== 0) {
-                animSlide = 0;
-            } else {
-                animSlide = targetSlide - _.slideCount;
-            }
-        } else {
-            animSlide = targetSlide;
-        }
-
-        _.animating = true;
-
-        if (_.options.onBeforeChange !== null && index !== _.currentSlide) {
-            _.options.onBeforeChange.call(this, _, _.currentSlide, animSlide);
-        }
-
-        oldSlide = _.currentSlide;
-        _.currentSlide = animSlide;
-
-        _.setSlideClasses(_.currentSlide);
-
-        _.updateDots();
-        _.updateArrows();
-
-        if (_.options.fade === true) {
-            if(dontAnimate!==true) {
-                _.fadeSlide(oldSlide,animSlide, function() {
-                    _.postSlide(animSlide);
-                });
-            } else {
-                _.postSlide(animSlide);
-            }
-            return;
-        }
-
-        if(dontAnimate!==true) {
-            _.animateSlide(targetLeft, function() {
-                _.postSlide(animSlide);
-            });
-        } else {
-            _.postSlide(animSlide);
-        }
-
-    };
-
-    Slick.prototype.startLoad = function() {
-
-        var _ = this;
-
-        if (_.options.arrows === true && _.slideCount > _.options.slidesToShow) {
-
-            _.$prevArrow.hide();
-            _.$nextArrow.hide();
-
-        }
-
-        if (_.options.dots === true && _.slideCount > _.options.slidesToShow) {
-
-            _.$dots.hide();
-
-        }
-
-        _.$slider.addClass('slick-loading');
-
-    };
-
-    Slick.prototype.swipeDirection = function() {
-
-        var xDist, yDist, r, swipeAngle, _ = this;
-
-        xDist = _.touchObject.startX - _.touchObject.curX;
-        yDist = _.touchObject.startY - _.touchObject.curY;
-        r = Math.atan2(yDist, xDist);
-
-        swipeAngle = Math.round(r * 180 / Math.PI);
-        if (swipeAngle < 0) {
-            swipeAngle = 360 - Math.abs(swipeAngle);
-        }
-
-        if ((swipeAngle <= 45) && (swipeAngle >= 0)) {
-            return (_.options.rtl === false ? 'left' : 'right');
-        }
-        if ((swipeAngle <= 360) && (swipeAngle >= 315)) {
-            return (_.options.rtl === false ? 'left' : 'right');
-        }
-        if ((swipeAngle >= 135) && (swipeAngle <= 225)) {
-            return (_.options.rtl === false ? 'right' : 'left');
-        }
-
-        return 'vertical';
-
-    };
-
-    Slick.prototype.swipeEnd = function(event) {
-
-        var _ = this, slideCount;
-
-        _.dragging = false;
-
-        _.shouldClick = (_.touchObject.swipeLength > 10) ? false : true;
-
-        if (_.touchObject.curX === undefined) {
-            return false;
-        }
-
-        if (_.touchObject.swipeLength >= _.touchObject.minSwipe) {
-
-            switch (_.swipeDirection()) {
-                case 'left':
-                    _.slideHandler(_.currentSlide + _.getSlideCount());
-                    _.currentDirection = 0;
-                    _.touchObject = {};
-                    break;
-
-                case 'right':
-                    _.slideHandler(_.currentSlide - _.getSlideCount());
-                    _.currentDirection = 1;
-                    _.touchObject = {};
-                    break;
-            }
-        } else {
-            if(_.touchObject.startX !== _.touchObject.curX) {
-                _.slideHandler(_.currentSlide);
-                _.touchObject = {};
-            }
-        }
-
-    };
-
-    Slick.prototype.swipeHandler = function(event) {
-
-        var _ = this;
-
-        if ((_.options.swipe === false) || ('ontouchend' in document && _.options.swipe === false)) {
-           return;
-        } else if (_.options.draggable === false && event.type.indexOf('mouse') !== -1) {
-           return;
-        }
-
-        _.touchObject.fingerCount = event.originalEvent && event.originalEvent.touches !== undefined ?
-            event.originalEvent.touches.length : 1;
-
-        _.touchObject.minSwipe = _.listWidth / _.options
-            .touchThreshold;
-
-        switch (event.data.action) {
-
-            case 'start':
-                _.swipeStart(event);
-                break;
-
-            case 'move':
-                _.swipeMove(event);
-                break;
-
-            case 'end':
-                _.swipeEnd(event);
-                break;
-
-        }
-
-    };
-
-    Slick.prototype.swipeMove = function(event) {
-
-        var _ = this,
-            curLeft, swipeDirection, positionOffset, touches;
-
-        touches = event.originalEvent !== undefined ? event.originalEvent.touches : null;
-
-        if (!_.dragging || touches && touches.length !== 1) {
-            return false;
-        }
-
-        curLeft = _.getLeft(_.currentSlide);
-
-        _.touchObject.curX = touches !== undefined ? touches[0].pageX : event.clientX;
-        _.touchObject.curY = touches !== undefined ? touches[0].pageY : event.clientY;
-
-        _.touchObject.swipeLength = Math.round(Math.sqrt(
-            Math.pow(_.touchObject.curX - _.touchObject.startX, 2)));
-
-        swipeDirection = _.swipeDirection();
-
-        if (swipeDirection === 'vertical') {
-            return;
-        }
-
-        if (event.originalEvent !== undefined && _.touchObject.swipeLength > 4) {
-            event.preventDefault();
-        }
-
-        positionOffset = (_.options.rtl === false ? 1 : -1) * (_.touchObject.curX > _.touchObject.startX ? 1 : -1);
-
-        if (_.options.vertical === false) {
-            _.swipeLeft = curLeft + _.touchObject.swipeLength * positionOffset;
-        } else {
-            _.swipeLeft = curLeft + (_.touchObject
-                .swipeLength * (_.$list.height() / _.listWidth)) * positionOffset;
-        }
-
-        if (_.options.fade === true || _.options.touchMove === false) {
-            return false;
-        }
-
-        if (_.animating === true) {
-            _.swipeLeft = null;
-            return false;
-        }
-
-        _.setCSS(_.swipeLeft);
-
-    };
-
-    Slick.prototype.swipeStart = function(event) {
-
-        var _ = this,
-            touches;
-
-        if (_.touchObject.fingerCount !== 1 || _.slideCount <= _.options.slidesToShow) {
-            _.touchObject = {};
-            return false;
-        }
-
-        if (event.originalEvent !== undefined && event.originalEvent.touches !== undefined) {
-            touches = event.originalEvent.touches[0];
-        }
-
-        _.touchObject.startX = _.touchObject.curX = touches !== undefined ? touches.pageX : event.clientX;
-        _.touchObject.startY = _.touchObject.curY = touches !== undefined ? touches.pageY : event.clientY;
-
-        _.dragging = true;
-
-    };
-
-    Slick.prototype.unfilterSlides = function() {
-
-        var _ = this;
-
-        if (_.$slidesCache !== null) {
-
-            _.unload();
-
-            _.$slideTrack.children(this.options.slide).detach();
-
-            _.$slidesCache.appendTo(_.$slideTrack);
-
-            _.reinit();
-
-        }
-
-    };
-
-    Slick.prototype.unload = function() {
-
-        var _ = this;
-
-        $('.slick-cloned', _.$slider).remove();
-        if (_.$dots) {
-            _.$dots.remove();
-        }
-        if (_.$prevArrow && (typeof _.options.prevArrow !== 'object')) {
-            _.$prevArrow.remove();
-        }
-        if (_.$nextArrow && (typeof _.options.nextArrow !== 'object')) {
-            _.$nextArrow.remove();
-        }
-        _.$slides.removeClass(
-            'slick-slide slick-active slick-visible').css('width', '');
-
-    };
-
-    Slick.prototype.updateArrows = function() {
-
-        var _ = this, centerOffset;
-
-        centerOffset = Math.floor(_.options.slidesToShow / 2)
-
-        if (_.options.arrows === true && _.options.infinite !==
-            true && _.slideCount > _.options.slidesToShow) {
-            _.$prevArrow.removeClass('slick-disabled');
-            _.$nextArrow.removeClass('slick-disabled');
-            if (_.currentSlide === 0) {
-                _.$prevArrow.addClass('slick-disabled');
-                _.$nextArrow.removeClass('slick-disabled');
-            } else if (_.currentSlide >= _.slideCount - _.options.slidesToShow && _.options.centerMode === false) {
-                _.$nextArrow.addClass('slick-disabled');
-                _.$prevArrow.removeClass('slick-disabled');
-            } else if (_.currentSlide > _.slideCount - _.options.slidesToShow + centerOffset  && _.options.centerMode === true) {
-                _.$nextArrow.addClass('slick-disabled');
-                _.$prevArrow.removeClass('slick-disabled');
-            }
-        }
-
-    };
-
-    Slick.prototype.updateDots = function() {
-
-        var _ = this;
-
-        if (_.$dots !== null) {
-
-            _.$dots.find('li').removeClass('slick-active');
-            _.$dots.find('li').eq(Math.floor(_.currentSlide / _.options.slidesToScroll)).addClass('slick-active');
-
-        }
-
-    };
-
-    $.fn.slick = function(options) {
-        var _ = this;
-        return _.each(function(index, element) {
-
-            element.slick = new Slick(element, options);
-
-        });
-    };
-
-    $.fn.slickAdd = function(slide, slideIndex, addBefore) {
-        var _ = this;
-        return _.each(function(index, element) {
-
-            element.slick.addSlide(slide, slideIndex, addBefore);
-
-        });
-    };
-
-    $.fn.slickCurrentSlide = function() {
-        var _ = this;
-        return _.get(0).slick.getCurrent();
-    };
-
-    $.fn.slickFilter = function(filter) {
-        var _ = this;
-        return _.each(function(index, element) {
-
-            element.slick.filterSlides(filter);
-
-        });
-    };
-
-    $.fn.slickGoTo = function(slide, dontAnimate) {
-        var _ = this;
-        return _.each(function(index, element) {
-
-            element.slick.changeSlide({
-                data: {
-                    message: 'index',
-                    index: parseInt(slide)
-                }
-            }, dontAnimate);
-
-        });
-    };
-
-    $.fn.slickNext = function() {
-        var _ = this;
-        return _.each(function(index, element) {
-
-            element.slick.changeSlide({
-                data: {
-                    message: 'next'
-                }
-            });
-
-        });
-    };
-
-    $.fn.slickPause = function() {
-        var _ = this;
-        return _.each(function(index, element) {
-
-            element.slick.autoPlayClear();
-            element.slick.paused = true;
-
-        });
-    };
-
-    $.fn.slickPlay = function() {
-        var _ = this;
-        return _.each(function(index, element) {
-
-            element.slick.paused = false;
-            element.slick.autoPlay();
-
-        });
-    };
-
-    $.fn.slickPrev = function() {
-        var _ = this;
-        return _.each(function(index, element) {
-
-            element.slick.changeSlide({
-                data: {
-                    message: 'previous'
-                }
-            });
-
-        });
-    };
-
-    $.fn.slickRemove = function(slideIndex, removeBefore) {
-        var _ = this;
-        return _.each(function(index, element) {
-
-            element.slick.removeSlide(slideIndex, removeBefore);
-
-        });
-    };
-
-    $.fn.slickRemoveAll = function() {
-        var _ = this;
-        return _.each(function(index, element) {
-
-            element.slick.removeSlide(null, null, true);
-
-        });
-    };
-
-    $.fn.slickGetOption = function(option) {
-        var _ = this;
-        return _.get(0).slick.options[option];
-    };
-
-    $.fn.slickSetOption = function(option, value, refresh) {
-        var _ = this;
-        return _.each(function(index, element) {
-
-            element.slick.options[option] = value;
-
-            if (refresh === true) {
-                element.slick.unload();
-                element.slick.reinit();
-            }
-
-        });
-    };
-
-    $.fn.slickUnfilter = function() {
-        var _ = this;
-        return _.each(function(index, element) {
-
-            element.slick.unfilterSlides();
-
-        });
-    };
-
-    $.fn.unslick = function() {
-        var _ = this;
-        return _.each(function(index, element) {
-
-          if (element.slick) {
-            element.slick.destroy();
-          }
-
-        });
-    };
-
-    $.fn.getSlick = function() {
-        var s = null;
-        var _ = this;
-        _.each(function(index, element) {
-            s = element.slick;
-        });
-
-        return s;
-    };
-
-}));
diff --git a/src/main/resources/META-INF/resources/designer/lib/translate-substitution.js b/src/main/resources/META-INF/resources/designer/lib/translate-substitution.js
deleted file mode 100644 (file)
index 7722ad9..0000000
+++ /dev/null
@@ -1,60 +0,0 @@
-//== Translate Substitute Module =============================================//
-
-/**
- * For those not using Angular-Translate (pascalprecht.translate), this will sub
- * in for it so we don't have to include Angular-Translate if we don't want to.
- */
-
-var translateSubMod = angular.module('translate.sub',[]);
-
-       /**
-        * $translate Service
-        * Sets up a $translateProvider service to use in your module's config
-        * function.  $translate.Provider syntax is the same as Angular-Translate,
-        * use $translate.Provider.translations(lang,obj) to change the defaults
-        * for modal button, header and message text.
-        */
-       translateSubMod.provider('$translate',[function(){
-               var _translations = []; // object of key/value translation pairs
-               var _current = 'en-US'; // default language
-
-               /**
-                * Translations
-                * Set the internal object of translation key/value pairs.
-                */
-               this.translations = function(lang,obj){
-                       if(angular.isDefined(lang) && angular.isDefined(obj)){
-                               _translations[lang] = angular.copy(obj);
-                               _current = lang;
-                       }
-               }; // end translations
-
-               this.$get = [function(){
-                       return {
-                               /**
-                                * Instant
-                                * Retrieve the translation for the given key, if key not found
-                                * return an empty string.
-                                * Example: $translate.instant('DIALOGS_OK');
-                                */
-                               instant : function(what){
-                                       if(angular.isDefined(what) && angular.isDefined(_translations[_current][what]))
-                                               return _translations[_current][what];
-                                       else
-                                               return '';
-                               } // end instant
-                       }; // end return 
-               }]; // end $get
-
-       }]); // end $translate
-
-       /**
-        * Translate Filter
-        * For use in an Angular template.  
-        * Example: {{"DIALOGS_CLOSE" | translate}}
-        */
-       translateSubMod.filter('translate',['$translate',function($translate){
-               return function(what){
-                       return $translate.instant(what);
-               };
-       }]); // end translate / translate.sub
\ No newline at end of file
diff --git a/src/main/resources/META-INF/resources/designer/lib/ui-grid.js b/src/main/resources/META-INF/resources/designer/lib/ui-grid.js
deleted file mode 100644 (file)
index 55bb3c2..0000000
+++ /dev/null
@@ -1,787 +0,0 @@
-/*! ui-grid - v2.0.7-g7aeb576 - 2013-12-18
-* Copyright (c) 2013 ; Licensed MIT */
-(function(){
-'use strict';
-
-var app = angular.module('ui.grid.body', []);
-
-app.directive('uiGridBody', ['$log', 'GridUtil', function($log, GridUtil) {
-  return {
-    replace: true,
-    priority: 1000,
-    templateUrl: 'ui-grid/ui-grid-body',
-    require: '?^uiGrid',
-    scope: {
-      tableClass: '=uiGridTableClass'
-    },
-    link: function(scope, elm, attrs, uiGridCtrl) {
-      $log.debug('body postlink scope', scope.$id);
-
-      if (uiGridCtrl === undefined) {
-        $log.warn('[ui-grid-body] uiGridCtrl is undefined!');
-      }
-
-      if (uiGridCtrl && typeof(uiGridCtrl.columns) !== 'undefined' && uiGridCtrl.columns) {
-        scope.columns = uiGridCtrl.columns;
-      }
-      if (uiGridCtrl && typeof(uiGridCtrl.gridData) !== 'undefined' && uiGridCtrl.gridData) {
-        scope.gridData = uiGridCtrl.gridData;
-      }
-    }
-  };
-}]);
-
-})();
-(function(){
-'use strict';
-
-var app = angular.module('ui.grid.header', ['ui.grid.util']);
-
-app.directive('uiGridHeader', ['$log', '$templateCache', '$compile', 'GridUtil', function($log, $templateCache, $compile, GridUtil) {
-  return {
-    restrict: 'EA',
-    // templateUrl: 'ui-grid/ui-grid-header',
-    // replace: true,
-    priority: 1000,
-    require: '?^uiGrid',
-    scope: {
-      tableClass: '=uiGridTableClass'
-    },
-    compile: function (elm, attrs) {
-      $log.debug('header compile');
-
-      // If the contents of the grid element are empty, use the default grid template
-      var tmpl;
-      if (elm.html() === '' || /^\s*$/.test(elm.html())) {
-        tmpl = $templateCache.get('ui-grid/ui-grid-header');
-      }
-
-      var preLink = function (scope, elm, attrs) {
-        $log.debug('header prelink scope', scope.$id);
-
-        if (tmpl) {
-          elm.append(tmpl);
-        }
-        $compile(elm.contents())(scope);
-      };
-
-      var postLink = function(scope, elm, attrs, uiGridCtrl) {
-        $log.debug('header postlink scope', scope.$id);
-
-        if (uiGridCtrl === undefined) {
-          $log.warn('[ui-grid-header] uiGridCtrl is undefined!');
-        }
-
-        // Get the column defs from the parent grid controller
-        if (uiGridCtrl && typeof(uiGridCtrl.columns) !== 'undefined' && uiGridCtrl.columns) {
-          scope.columns = uiGridCtrl.columns;
-        }
-
-        // if (tmpl) {
-        //   elm.append(tmpl);
-        //   $compile(elm.contents())(scope);
-        // }
-
-        // scope.$watch('columns', function(n, o) {
-        //    $log.debug('columns change', n, o);
-        //    var contents = elm.contents();
-        //    $compile(contents)(scope);
-        // });
-      };
-
-      return {
-        pre: preLink,
-        post: postLink
-      };
-    }
-  };
-}]);
-
-})();
-(function(){
-// 'use strict';
-
-/**
- * @ngdoc directive
- * @name ui.grid.style.directive:uiGridStyle
- * @element style
- * @restrict A
- *
- * @description
- * Allows us to interpolate expressions in `<style>` elements. Angular doesn't do this by default as it can/will/might? break in IE8.
- *
- * @example
-   <example module="app">
-     <file name="app.js">
-       var app = angular.module('app', ['ui.grid']);
-       
-       app.controller('MainCtrl', ['$scope', function ($scope) {
-         $scope.myStyle = '.blah { color: red }';
-       }]);
-     </file>
-     <file name="index.html">
-       <div ng-controller="MainCtrl">
-         <style ui-grid-style>{{ myStyle }}</style>
-         <span class="blah">I am red.</span>
-       </div>
-     </file>
-   </example>
- */
-
-var app = angular.module('ui.grid.style', []);
-
-app.directive('uiGridStyle', ['$interpolate', '$sce', function($interpolate, $sce) {
-  return {
-    // restrict: 'A',
-    priority: 1000,
-    link: function(scope, element) {
-      var interpolateFn = $interpolate(element.text(), true);
-
-      if (interpolateFn) {
-        scope.$watch(interpolateFn, function(value) {
-          element.text(value);
-        });
-      }
-    }
-  };
-}]);
-
-})();
-(function(){
-'use strict';
-
-var app = angular.module('ui.grid', ['ui.grid.header', 'ui.grid.body', 'ui.grid.style', 'ui.virtual-repeat']);
-
-/**
- *  @ngdoc directive
- *  @name ui.grid.directive:uiGrid
- *  @element div
- *  @restrict EA
- *  @param {array} uiGrid Array of rows to display in the grid
- *  
- *  @description Create a very basic grid.
- *
- *  @example
-    <example module="app">
-      <file name="app.js">
-        var app = angular.module('app', ['ui.grid']);
-
-        app.controller('MainCtrl', ['$scope', function ($scope) {
-          $scope.data = [
-            { name: 'Bob', title: 'CEO' },
-            { name: 'Frank', title: 'Lowly Developer' }
-          ];
-        }]);
-      </file>
-      <file name="index.html">
-        <div ng-controller="MainCtrl">
-          <div ui-grid="data"></div>
-        </div>
-      </file>
-    </example>
- */
-app.directive('uiGrid',
-  [
-    '$compile',
-    '$templateCache',
-    '$log',
-    'GridUtil',
-  function(
-    $compile,
-    $templateCache,
-    $log,
-    GridUtil
-  ) {
-
-    function preLink(scope, elm, attrs) {
-      var options = scope.uiGrid;
-
-      // Create an ID for this grid
-      scope.gridId = GridUtil.newId();
-
-      // Get the grid dimensions from the element
-
-      // Initialize the grid
-
-      // Get the column definitions
-        // Put a watch on them
-
-      console.log('gridId', scope.gridId);
-
-      elm.on('$destroy', function() {
-        // Remove columnDefs watch
-      });
-    }
-    
-    return {
-      templateUrl: 'ui-grid/ui-grid',
-      scope: {
-        uiGrid: '='
-      },
-      compile: function () {
-        return {
-          pre: preLink
-        };
-      },
-      controller: function ($scope, $element, $attrs) {
-        
-      }
-    };
-  }
-]);
-
-})();
-(function(){
-'use strict';
-  
-// (part of the sf.virtualScroll module).
-var mod = angular.module('ui.virtual-repeat', []);
-
-var DONT_WORK_AS_VIEWPORTS = ['TABLE', 'TBODY', 'THEAD', 'TR', 'TFOOT'];
-var DONT_WORK_AS_CONTENT = ['TABLE', 'TBODY', 'THEAD', 'TR', 'TFOOT'];
-var DONT_SET_DISPLAY_BLOCK = ['TABLE', 'TBODY', 'THEAD', 'TR', 'TFOOT'];
-
-// Utility to clip to range
-function clip(value, min, max){
-  if (angular.isArray(value)) {
-    return angular.forEach(value, function(v) {
-      return clip(v, min, max);
-    });
-  }
-
-  return Math.max(min, Math.min(value, max));
-}
-
-mod.directive('uiVirtualRepeat', ['$log', '$rootElement', function($log, $rootElement){
-
-  // Turn the expression supplied to the directive:
-  //
-  //     a in b
-  //
-  // into `{ value: "a", collection: "b" }`
-  function parseRepeatExpression(expression) {
-    var match = expression.match(/^\s*([\$\w]+)\s+in\s+([\S\s]*)$/);
-    if (! match) {
-      throw new Error("Expected uiVirtualRepeat in form of '_item_ in _collection_' but got '" + expression + "'.");
-    }
-    return {
-      value: match[1],
-      collection: match[2]
-    };
-  }
-
-  // Utility to filter out elements by tag name
-  function isTagNameInList(element, list) {
-    var t,
-        tag = element.tagName.toUpperCase();
-
-    for (t = 0; t < list.length; t++) {
-      if (list[t] === tag) {
-        return true;
-      }
-    }
-    return false;
-  }
-
-
-  // Utility to find the viewport/content elements given the start element:
-  function findViewportAndContent(startElement) {
-    /*jshint eqeqeq:false, curly:false */
-    var root = $rootElement[0];
-    var e, n;
-
-    // Somewhere between the grandparent and the root node
-    for (e = startElement.parent().parent()[0]; e !== root; e = e.parentNode) {
-      // is an element
-      if (e.nodeType != 1) break;
-      // that isn't in the blacklist (tables etc.),
-      if (isTagNameInList(e, DONT_WORK_AS_VIEWPORTS)) continue;
-      // has a single child element (the content),
-      if (e.childElementCount != 1) continue;
-      // which is not in the blacklist
-      if (isTagNameInList(e.firstElementChild, DONT_WORK_AS_CONTENT)) continue;
-      // and no text.
-      for (n = e.firstChild; n; n = n.nextSibling) {
-        if (n.nodeType == 3 && /\S/g.test(n.textContent)) {
-          break;
-        }
-      }
-
-      if (n == null) {
-        // That element should work as a viewport.
-        return {
-          viewport: angular.element(e),
-          content: angular.element(e.firstElementChild)
-        };
-      }
-    }
-
-    throw new Error("No suitable viewport element");
-  }
-
-  // Apply explicit height and overflow styles to the viewport element.
-  //
-  // If the viewport has a max-height (inherited or otherwise), set max-height.
-  // Otherwise, set height from the current computed value or use
-  // window.innerHeight as a fallback
-  //
-  function setViewportCSS(viewport) {
-    var viewportCSS = {'overflow': 'auto'};
-
-    var style = window.getComputedStyle ?
-                window.getComputedStyle(viewport[0]) :
-                viewport[0].currentStyle;
-
-    var maxHeight = style && style.getPropertyValue('max-height');
-    var height = style && style.getPropertyValue('height');
-
-    if (maxHeight && maxHeight !== '0px') {
-      viewportCSS.maxHeight = maxHeight;
-    }
-    else if (height && height !== '0px') {
-      viewportCSS.height = height;
-    }
-    else {
-      viewportCSS.height = window.innerHeight;
-    }
-
-    viewport.css(viewportCSS);
-  }
-
-  // Apply explicit styles to the content element to prevent pesky padding
-  // or borders messing with our calculations:
-  function setContentCSS(content) {
-    var contentCSS = {
-      margin: 0,
-      padding: 0,
-      border: 0,
-      'box-sizing': 'border-box'
-    };
-
-    content.css(contentCSS);
-  }
-
-  // TODO: compute outerHeight (padding + border unless box-sizing is border)
-  function computeRowHeight(element) {
-    var style = window.getComputedStyle ?
-                window.getComputedStyle(element) :
-                element.currentStyle;
-
-    var maxHeight = style && style.getPropertyValue('max-height');
-    var height = style && style.getPropertyValue('height');
-
-    if (height && height !== '0px' && height !== 'auto') {
-      // $log.info('Row height is "%s" from css height', height);
-    }
-    else if (maxHeight && maxHeight !== '0px' && maxHeight !== 'none') {
-      height = maxHeight;
-      // $log.info('Row height is "%s" from css max-height', height);
-    }
-    else if (element.clientHeight) {
-      height = element.clientHeight + 'px';
-      // $log.info('Row height is "%s" from client height', height);
-    }
-    else {
-      //throw new Error("Unable to compute height of row");
-      return;
-    }
-
-    angular.element(element).css('height', height);
-
-    return parseInt(height, 10);
-  }
-
-  // The compile gathers information about the declaration. There's not much
-  // else we could do in the compile step as we need a viewport parent that
-  // is exculsively ours - this is only available at link time.
-  function uiVirtualRepeatCompile(element, attr, linker) {
-    var ident = parseRepeatExpression(attr.uiVirtualRepeat);
-    
-    // ----
-
-    // Set up the initial value for our watch expression (which is just the
-    // start and length of the active rows and the collection length) and
-    // adds a listener to handle child scopes based on the active rows.
-    function sfVirtualRepeatPostLink(scope, iterStartElement, attrs) {
-
-      var rendered = [];
-          scope.rendered = rendered;
-
-      var rowHeight = 0;
-      var sticky = false;
-      var dom = findViewportAndContent(iterStartElement);
-      // The list structure is controlled by a few simple (visible) variables:
-      var state = 'ngModel' in attrs ? scope.$eval(attrs.ngModel) : {};
-      //  - The index of the first active element
-      state.firstActive = 0;
-      //  - The index of the first visible element
-      state.firstVisible = 0;
-      //  - The number of elements visible in the viewport.
-      state.visible = 0;
-      // - The number of active elements
-      state.active = 0;
-      // - The total number of elements
-      state.total = 0;
-      // - The point at which we add new elements
-      state.lowWater = state.lowWater || 10;
-      // - The point at which we remove old elements
-      state.highWater = state.highWater || 20;
-      // TODO: now watch the water marks
-
-      setContentCSS(dom.content);
-      setViewportCSS(dom.viewport);
-      // When the user scrolls, we move the `state.firstActive`
-      dom.viewport.bind('scroll', sfVirtualRepeatOnScroll);
-
-      // The watch on the collection is just a watch on the length of the
-      // collection. We don't care if the content changes.
-      scope.$watch(sfVirtualRepeatWatchExpression, sfVirtualRepeatListener, true);
-
-      // and that's the link done! All the action is in the handlers...
-      
-      // ----
-
-      // Apply explicit styles to the item element
-      function setElementCSS(element) {
-        var elementCSS = {
-          // no margin or it'll screw up the height calculations.
-          margin: '0'
-        };
-
-        if (!isTagNameInList(element[0], DONT_SET_DISPLAY_BLOCK)) {
-          // display: block if it's safe to do so
-          elementCSS.display = 'block';
-        }
-
-        if (rowHeight) {
-          elementCSS.height = rowHeight + 'px';
-        }
-
-        element.css(elementCSS);
-      }
-
-      function makeNewScope (idx, collection, containerScope) {
-        var childScope = containerScope.$new();
-        childScope[ident.value] = collection[idx];
-        childScope.$index = idx;
-        childScope.$first = (idx === 0);
-        childScope.$last = (idx === (collection.length - 1));
-        childScope.$middle = !(childScope.$first || childScope.$last);
-        childScope.$watch(function updateChildScopeItem(){
-          childScope[ident.value] = collection[idx];
-        });
-        return childScope;
-      }
-
-      function addElements (start, end, collection, containerScope, insPoint) {
-        var frag = document.createDocumentFragment();
-        var newElements = [], element, idx, childScope;
-
-        for (idx = start; idx !== end; idx++) {
-          childScope = makeNewScope(idx, collection, containerScope);
-          element = linker(childScope, angular.noop);
-          setElementCSS(element);
-          newElements.push(element);
-          frag.appendChild(element[0]);
-        }
-
-        insPoint.after(frag);
-        return newElements;
-      }
-
-      function recomputeActive() {
-        // We want to set the start to the low water mark unless the current
-        // start is already between the low and high water marks.
-        var start = clip(state.firstActive, state.firstVisible - state.lowWater, state.firstVisible - state.highWater);
-        // Similarly for the end
-        var end = clip(state.firstActive + state.active,
-                       state.firstVisible + state.visible + state.lowWater,
-                       state.firstVisible + state.visible + state.highWater );
-        state.firstActive = Math.max(0, start);
-        state.active = Math.min(end, state.total) - state.firstActive;
-      }
-
-      function sfVirtualRepeatOnScroll(evt) {
-        if (!rowHeight) {
-          return;
-        }
-
-        // Enter the angular world for the state change to take effect.
-        scope.$apply(function() {
-          state.firstVisible = Math.floor(evt.target.scrollTop / rowHeight);
-          state.visible = Math.ceil(dom.viewport[0].clientHeight / rowHeight);
-
-          // $log.log('scroll to row %o', state.firstVisible);
-          sticky = evt.target.scrollTop + evt.target.clientHeight >= evt.target.scrollHeight;
-
-          recomputeActive();
-          // $log.log(' state is now %o', state);
-          // $log.log(' sticky = %o', sticky);
-        });
-      }
-
-      function sfVirtualRepeatWatchExpression(scope) {
-        var coll = scope.$eval(ident.collection);
-
-        if (coll.length !== state.total) {
-          state.total = coll.length;
-          recomputeActive();
-        }
-
-        return {
-          start: state.firstActive,
-          active: state.active,
-          len: coll.length
-        };
-      }
-
-      function destroyActiveElements (action, count) {
-        var dead,
-            ii,
-            remover = Array.prototype[action];
-
-        for (ii = 0; ii < count; ii++) {
-          dead = remover.call(rendered);
-          dead.scope().$destroy();
-          dead.remove();
-        }
-      }
-
-      // When the watch expression for the repeat changes, we may need to add
-      // and remove scopes and elements
-      function sfVirtualRepeatListener(newValue, oldValue, scope) {
-        var oldEnd = oldValue.start + oldValue.active,
-            collection = scope.$eval(ident.collection),
-            newElements;
-
-        if (newValue === oldValue) {
-          // $log.info('initial listen');
-          newElements = addElements(newValue.start, oldEnd, collection, scope, iterStartElement);
-          rendered = newElements;
-
-          if (rendered.length) {
-            rowHeight = computeRowHeight(newElements[0][0]);
-          }
-        }
-        else {
-          var newEnd = newValue.start + newValue.active;
-          var forward = newValue.start >= oldValue.start;
-          var delta = forward ? newValue.start - oldValue.start
-                              : oldValue.start - newValue.start;
-          var endDelta = newEnd >= oldEnd ? newEnd - oldEnd : oldEnd - newEnd;
-          var contiguous = delta < (forward ? oldValue.active : newValue.active);
-          // $log.info('change by %o,%o rows %s', delta, endDelta, forward ? 'forward' : 'backward');
-
-          if (!contiguous) {
-            // $log.info('non-contiguous change');
-            destroyActiveElements('pop', rendered.length);
-            rendered = addElements(newValue.start, newEnd, collection, scope, iterStartElement);
-          }
-          else {
-            if (forward) {
-              // $log.info('need to remove from the top');
-              destroyActiveElements('shift', delta);
-            }
-            else if (delta) {
-              // $log.info('need to add at the top');
-              newElements = addElements(
-                newValue.start,
-                oldValue.start,
-                collection, scope, iterStartElement);
-              rendered = newElements.concat(rendered);
-            }
-
-            if (newEnd < oldEnd) {
-              // $log.info('need to remove from the bottom');
-              destroyActiveElements('pop', oldEnd - newEnd);
-            }
-            else if (endDelta) {
-              var lastElement = rendered[rendered.length-1];
-              // $log.info('need to add to the bottom');
-              newElements = addElements(
-                oldEnd,
-                newEnd,
-                collection, scope, lastElement);
-
-              rendered = rendered.concat(newElements);
-            }
-          }
-
-          if (!rowHeight && rendered.length) {
-            rowHeight = computeRowHeight(rendered[0][0]);
-          }
-
-          dom.content.css({'padding-top': newValue.start * rowHeight + 'px'});
-        }
-
-        dom.content.css({'height': newValue.len * rowHeight + 'px'});
-
-        if (sticky) {
-          dom.viewport[0].scrollTop = dom.viewport[0].clientHeight + dom.viewport[0].scrollHeight;
-        }
-
-        scope.rendered = rendered;
-      }
-
-      return;
-    }
-
-    return {
-      post: sfVirtualRepeatPostLink
-    };
-  }
-
-  var directive =  {
-    require: '?ngModel',
-    transclude: 'element',
-    priority: 1000,
-    // terminal: true,
-    compile: uiVirtualRepeatCompile,
-    controller: ['$scope', function ($scope) {
-      this.visibleRows = 0;
-      this.visibleRows = this.visibleRows + 1;
-    }]
-  };
-
-  return directive;
-}]);
-
-}());
-(function() {
-
-var app = angular.module('ui.grid.util', []);
-
-/**
- *  @ngdoc service
- *  @name ui.grid.util.service:GridUtil
- *  
- *  @description Grid utility functions
- */
-app.service('GridUtil', function () {
-
-  var s = {
-
-    /**
-     * @ngdoc method
-     * @name readableColumnName
-     * @methodOf ui.grid.util.service:GridUtil
-     *
-     * @param {string} columnName Column name as a string
-     * @returns {string} Column name appropriately capitalized and split apart
-     *
-       @example
-       <example module="app">
-        <file name="app.js">
-          var app = angular.module('app', ['ui.grid.util']);
-
-          app.controller('MainCtrl', ['$scope', 'GridUtil', function ($scope, GridUtil) {
-            $scope.name = 'firstName';
-            $scope.columnName = function(name) {
-              return GridUtil.readableColumnName(name);
-            };
-          }]);
-        </file>
-        <file name="index.html">
-          <div ng-controller="MainCtrl">
-            <strong>Column name:</strong> <input ng-model="name" />
-            <br>
-            <strong>Output:</strong> <span ng-bind="columnName(name)"></span>
-          </div>
-        </file>
-      </example>
-     */
-    readableColumnName: function (columnName) {
-      // Convert underscores to spaces
-      if (typeof(columnName) === 'undefined' || columnName === undefined || columnName === null) { return columnName; }
-
-      if (typeof(columnName) !== 'string') {
-        columnName = String(columnName);
-      }
-
-      return columnName.replace(/_+/g, ' ')
-        // Replace a completely all-capsed word with a first-letter-capitalized version
-        .replace(/^[A-Z]+$/, function (match) {
-          return angular.lowercase(angular.uppercase(match.charAt(0)) + match.slice(1));
-        })
-        // Capitalize the first letter of words
-        .replace(/(\w+)/g, function (match) {
-          return angular.uppercase(match.charAt(0)) + match.slice(1);
-        })
-        // Put a space in between words that have partial capilizations (i.e. 'firstName' becomes 'First Name')
-        // .replace(/([A-Z]|[A-Z]\w+)([A-Z])/g, "$1 $2");
-        // .replace(/(\w+?|\w)([A-Z])/g, "$1 $2");
-        .replace(/(\w+?(?=[A-Z]))/g, '$1 ');
-    },
-
-    /**
-     * @ngdoc method
-     * @name getColumnsFromData
-     * @methodOf ui.grid.util.service:GridUtil
-     * @description Return a list of column names, given a data set
-     *
-     * @param {string} data Data array for grid
-     * @returns {Object} Column definitions with field accessor and column name
-     *
-     * @example
-       <pre>
-         var data = [
-           { firstName: 'Bob', lastName: 'Jones' },
-           { firstName: 'Frank', lastName: 'Smith' }
-         ];
-
-         var columnDefs = GridUtil.getColumnsFromData(data);
-
-         columnDefs == [
-          {
-            field: 'firstName',
-            name: 'First Name'
-          },
-          {
-            field: 'lastName',
-            name: 'Last Name'
-          }
-         ];
-       </pre>
-     */
-    getColumnsFromData: function (data) {
-      var columnDefs = [];
-
-      var item = data[0];
-      
-      angular.forEach(item, function (prop, propName) {
-        columnDefs.push({
-          field: propName,
-          name: s.readableColumnName(propName)
-        });
-      });
-
-      return columnDefs;
-    },
-
-    /**
-     * @ngdoc method
-     * @name newId
-     * @methodOf ui.grid.util.service:GridUtil
-     * @description Return a unique ID string
-     *
-     * @returns {string} Unique string
-     *
-     * @example
-       <pre>
-        var id = GridUtil.newId();
-
-        # 1387305700482;
-       </pre>
-     */
-    newId: (function() {
-      var seedId = new Date().getTime();
-      return function() {
-          return seedId += 1;
-      };
-    })(),
-  };
-
-  return s;
-});
-
-})();
\ No newline at end of file
diff --git a/src/main/resources/META-INF/resources/designer/lib/ui-grid.min.js b/src/main/resources/META-INF/resources/designer/lib/ui-grid.min.js
deleted file mode 100644 (file)
index 832ad8e..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-/*! ui-grid - v2.0.7-g7aeb576 - 2013-12-18
-* Copyright (c) 2013 ; Licensed MIT */
-!function(){"use strict";var a=angular.module("ui.grid.body",[]);a.directive("uiGridBody",["$log","GridUtil",function(a){return{replace:!0,priority:1e3,templateUrl:"ui-grid/ui-grid-body",require:"?^uiGrid",scope:{tableClass:"=uiGridTableClass"},link:function(b,c,d,e){a.debug("body postlink scope",b.$id),void 0===e&&a.warn("[ui-grid-body] uiGridCtrl is undefined!"),e&&"undefined"!=typeof e.columns&&e.columns&&(b.columns=e.columns),e&&"undefined"!=typeof e.gridData&&e.gridData&&(b.gridData=e.gridData)}}}])}(),function(){"use strict";var a=angular.module("ui.grid.header",["ui.grid.util"]);a.directive("uiGridHeader",["$log","$templateCache","$compile","GridUtil",function(a,b,c){return{restrict:"EA",priority:1e3,require:"?^uiGrid",scope:{tableClass:"=uiGridTableClass"},compile:function(d){a.debug("header compile");var e;(""===d.html()||/^\s*$/.test(d.html()))&&(e=b.get("ui-grid/ui-grid-header"));var f=function(b,d){a.debug("header prelink scope",b.$id),e&&d.append(e),c(d.contents())(b)},g=function(b,c,d,e){a.debug("header postlink scope",b.$id),void 0===e&&a.warn("[ui-grid-header] uiGridCtrl is undefined!"),e&&"undefined"!=typeof e.columns&&e.columns&&(b.columns=e.columns)};return{pre:f,post:g}}}}])}(),function(){var a=angular.module("ui.grid.style",[]);a.directive("uiGridStyle",["$interpolate","$sce",function(a){return{priority:1e3,link:function(b,c){var d=a(c.text(),!0);d&&b.$watch(d,function(a){c.text(a)})}}}])}(),function(){"use strict";var a=angular.module("ui.grid",["ui.grid.header","ui.grid.body","ui.grid.style","ui.virtual-repeat"]);a.directive("uiGrid",["$compile","$templateCache","$log","GridUtil",function(a,b,c,d){function e(a,b){a.uiGrid;a.gridId=d.newId(),console.log("gridId",a.gridId),b.on("$destroy",function(){})}return{templateUrl:"ui-grid/ui-grid",scope:{uiGrid:"="},compile:function(){return{pre:e}},controller:function(){}}}])}(),function(){"use strict";function a(b,c,d){return angular.isArray(b)?angular.forEach(b,function(b){return a(b,c,d)}):Math.max(c,Math.min(b,d))}var b=angular.module("ui.virtual-repeat",[]),c=["TABLE","TBODY","THEAD","TR","TFOOT"],d=["TABLE","TBODY","THEAD","TR","TFOOT"],e=["TABLE","TBODY","THEAD","TR","TFOOT"];b.directive("uiVirtualRepeat",["$log","$rootElement",function(b,f){function g(a){var b=a.match(/^\s*([\$\w]+)\s+in\s+([\S\s]*)$/);if(!b)throw new Error("Expected uiVirtualRepeat in form of '_item_ in _collection_' but got '"+a+"'.");return{value:b[1],collection:b[2]}}function h(a,b){var c,d=a.tagName.toUpperCase();for(c=0;c<b.length;c++)if(b[c]===d)return!0;return!1}function i(a){var b,e,g=f[0];for(b=a.parent().parent()[0];b!==g&&1==b.nodeType;b=b.parentNode)if(!h(b,c)&&1==b.childElementCount&&!h(b.firstElementChild,d)){for(e=b.firstChild;e&&(3!=e.nodeType||!/\S/g.test(e.textContent));e=e.nextSibling);if(null==e)return{viewport:angular.element(b),content:angular.element(b.firstElementChild)}}throw new Error("No suitable viewport element")}function j(a){var b={overflow:"auto"},c=window.getComputedStyle?window.getComputedStyle(a[0]):a[0].currentStyle,d=c&&c.getPropertyValue("max-height"),e=c&&c.getPropertyValue("height");d&&"0px"!==d?b.maxHeight=d:b.height=e&&"0px"!==e?e:window.innerHeight,a.css(b)}function k(a){var b={margin:0,padding:0,border:0,"box-sizing":"border-box"};a.css(b)}function l(a){var b=window.getComputedStyle?window.getComputedStyle(a):a.currentStyle,c=b&&b.getPropertyValue("max-height"),d=b&&b.getPropertyValue("height");if(d&&"0px"!==d&&"auto"!==d);else if(c&&"0px"!==c&&"none"!==c)d=c;else{if(!a.clientHeight)return;d=a.clientHeight+"px"}return angular.element(a).css("height",d),parseInt(d,10)}function m(b,c,d){function f(b,c,f){function g(a){var b={margin:"0"};h(a[0],e)||(b.display="block"),v&&(b.height=v+"px"),a.css(b)}function n(a,b,c){var d=c.$new();return d[m.value]=b[a],d.$index=a,d.$first=0===a,d.$last=a===b.length-1,d.$middle=!(d.$first||d.$last),d.$watch(function(){d[m.value]=b[a]}),d}function o(a,b,c,e,f){var h,i,j,k=document.createDocumentFragment(),l=[];for(i=a;i!==b;i++)j=n(i,c,e),h=d(j,angular.noop),g(h),l.push(h),k.appendChild(h[0]);return f.after(k),l}function p(){var b=a(y.firstActive,y.firstVisible-y.lowWater,y.firstVisible-y.highWater),c=a(y.firstActive+y.active,y.firstVisible+y.visible+y.lowWater,y.firstVisible+y.visible+y.highWater);y.firstActive=Math.max(0,b),y.active=Math.min(c,y.total)-y.firstActive}function q(a){v&&b.$apply(function(){y.firstVisible=Math.floor(a.target.scrollTop/v),y.visible=Math.ceil(x.viewport[0].clientHeight/v),w=a.target.scrollTop+a.target.clientHeight>=a.target.scrollHeight,p()})}function r(a){var b=a.$eval(m.collection);return b.length!==y.total&&(y.total=b.length,p()),{start:y.firstActive,active:y.active,len:b.length}}function s(a,b){var c,d,e=Array.prototype[a];for(d=0;b>d;d++)c=e.call(u),c.scope().$destroy(),c.remove()}function t(a,b,d){var e,f=b.start+b.active,g=d.$eval(m.collection);if(a===b)e=o(a.start,f,g,d,c),u=e,u.length&&(v=l(e[0][0]));else{var h=a.start+a.active,i=a.start>=b.start,j=i?a.start-b.start:b.start-a.start,k=h>=f?h-f:f-h,n=j<(i?b.active:a.active);if(n){if(i?s("shift",j):j&&(e=o(a.start,b.start,g,d,c),u=e.concat(u)),f>h)s("pop",f-h);else if(k){var p=u[u.length-1];e=o(f,h,g,d,p),u=u.concat(e)}}else s("pop",u.length),u=o(a.start,h,g,d,c);!v&&u.length&&(v=l(u[0][0])),x.content.css({"padding-top":a.start*v+"px"})}x.content.css({height:a.len*v+"px"}),w&&(x.viewport[0].scrollTop=x.viewport[0].clientHeight+x.viewport[0].scrollHeight),d.rendered=u}var u=[];b.rendered=u;var v=0,w=!1,x=i(c),y="ngModel"in f?b.$eval(f.ngModel):{};y.firstActive=0,y.firstVisible=0,y.visible=0,y.active=0,y.total=0,y.lowWater=y.lowWater||10,y.highWater=y.highWater||20,k(x.content),j(x.viewport),x.viewport.bind("scroll",q),b.$watch(r,t,!0)}var m=g(c.uiVirtualRepeat);return{post:f}}var n={require:"?ngModel",transclude:"element",priority:1e3,compile:m,controller:["$scope",function(){this.visibleRows=0,this.visibleRows=this.visibleRows+1}]};return n}])}(),function(){var a=angular.module("ui.grid.util",[]);a.service("GridUtil",function(){var a={readableColumnName:function(a){return"undefined"==typeof a||void 0===a||null===a?a:("string"!=typeof a&&(a=String(a)),a.replace(/_+/g," ").replace(/^[A-Z]+$/,function(a){return angular.lowercase(angular.uppercase(a.charAt(0))+a.slice(1))}).replace(/(\w+)/g,function(a){return angular.uppercase(a.charAt(0))+a.slice(1)}).replace(/(\w+?(?=[A-Z]))/g,"$1 "))},getColumnsFromData:function(b){var c=[],d=b[0];return angular.forEach(d,function(b,d){c.push({field:d,name:a.readableColumnName(d)})}),c},newId:function(){var a=(new Date).getTime();return function(){return a+=1}}()};return a})}();
\ No newline at end of file
diff --git a/src/main/resources/META-INF/resources/designer/lib/xml2json.min.js b/src/main/resources/META-INF/resources/designer/lib/xml2json.min.js
deleted file mode 100644 (file)
index 14c5e90..0000000
+++ /dev/null
@@ -1 +0,0 @@
-(function(a,b){if(typeof define==="function"&&define.amd){define([],b);}else{if(typeof exports==="object"){module.exports=b();}else{a.X2JS=b();}}}(this,function(){return function(z){var t="1.2.0";z=z||{};i();u();function i(){if(z.escapeMode===undefined){z.escapeMode=true;}z.attributePrefix=z.attributePrefix||"_";z.arrayAccessForm=z.arrayAccessForm||"none";z.emptyNodeForm=z.emptyNodeForm||"text";if(z.enableToStringFunc===undefined){z.enableToStringFunc=true;}z.arrayAccessFormPaths=z.arrayAccessFormPaths||[];if(z.skipEmptyTextNodesForObj===undefined){z.skipEmptyTextNodesForObj=true;}if(z.stripWhitespaces===undefined){z.stripWhitespaces=true;}z.datetimeAccessFormPaths=z.datetimeAccessFormPaths||[];if(z.useDoubleQuotes===undefined){z.useDoubleQuotes=false;}z.xmlElementsFilter=z.xmlElementsFilter||[];z.jsonPropertiesFilter=z.jsonPropertiesFilter||[];if(z.keepCData===undefined){z.keepCData=false;}}var h={ELEMENT_NODE:1,TEXT_NODE:3,CDATA_SECTION_NODE:4,COMMENT_NODE:8,DOCUMENT_NODE:9};function u(){}function x(B){var C=B.localName;if(C==null){C=B.baseName;}if(C==null||C==""){C=B.nodeName;}return C;}function r(B){return B.prefix;}function s(B){if(typeof(B)=="string"){return B.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&apos;");}else{return B;}}function k(B){return B.replace(/&lt;/g,"<").replace(/&gt;/g,">").replace(/&quot;/g,'"').replace(/&apos;/g,"'").replace(/&amp;/g,"&");}function w(C,F,D,E){var B=0;for(;B<C.length;B++){var G=C[B];if(typeof G==="string"){if(G==E){break;}}else{if(G instanceof RegExp){if(G.test(E)){break;}}else{if(typeof G==="function"){if(G(F,D,E)){break;}}}}}return B!=C.length;}function n(D,B,C){switch(z.arrayAccessForm){case"property":if(!(D[B] instanceof Array)){D[B+"_asArray"]=[D[B]];}else{D[B+"_asArray"]=D[B];}break;}if(!(D[B] instanceof Array)&&z.arrayAccessFormPaths.length>0){if(w(z.arrayAccessFormPaths,D,B,C)){D[B]=[D[B]];}}}function a(G){var E=G.split(/[-T:+Z]/g);var F=new Date(E[0],E[1]-1,E[2]);var D=E[5].split(".");F.setHours(E[3],E[4],D[0]);if(D.length>1){F.setMilliseconds(D[1]);}if(E[6]&&E[7]){var C=E[6]*60+Number(E[7]);var B=/\d\d-\d\d:\d\d$/.test(G)?"-":"+";C=0+(B=="-"?-1*C:C);F.setMinutes(F.getMinutes()-C-F.getTimezoneOffset());}else{if(G.indexOf("Z",G.length-1)!==-1){F=new Date(Date.UTC(F.getFullYear(),F.getMonth(),F.getDate(),F.getHours(),F.getMinutes(),F.getSeconds(),F.getMilliseconds()));}}return F;}function q(D,B,C){if(z.datetimeAccessFormPaths.length>0){var E=C.split(".#")[0];if(w(z.datetimeAccessFormPaths,D,B,E)){return a(D);}else{return D;}}else{return D;}}function b(E,C,B,D){if(C==h.ELEMENT_NODE&&z.xmlElementsFilter.length>0){return w(z.xmlElementsFilter,E,B,D);}else{return true;}}function A(D,J){if(D.nodeType==h.DOCUMENT_NODE){var K=new Object;var B=D.childNodes;for(var L=0;L<B.length;L++){var C=B.item(L);if(C.nodeType==h.ELEMENT_NODE){var I=x(C);K[I]=A(C,I);}}return K;}else{if(D.nodeType==h.ELEMENT_NODE){var K=new Object;K.__cnt=0;var B=D.childNodes;for(var L=0;L<B.length;L++){var C=B.item(L);var I=x(C);if(C.nodeType!=h.COMMENT_NODE){var H=J+"."+I;if(b(K,C.nodeType,I,H)){K.__cnt++;if(K[I]==null){K[I]=A(C,H);n(K,I,H);}else{if(K[I]!=null){if(!(K[I] instanceof Array)){K[I]=[K[I]];n(K,I,H);}}(K[I])[K[I].length]=A(C,H);}}}}for(var E=0;E<D.attributes.length;E++){var F=D.attributes.item(E);K.__cnt++;K[z.attributePrefix+F.name]=F.value;}var G=r(D);if(G!=null&&G!=""){K.__cnt++;K.__prefix=G;}if(K["#text"]!=null){K.__text=K["#text"];if(K.__text instanceof Array){K.__text=K.__text.join("\n");}if(z.stripWhitespaces){K.__text=K.__text.trim();}delete K["#text"];if(z.arrayAccessForm=="property"){delete K["#text_asArray"];}K.__text=q(K.__text,I,J+"."+I);}if(K["#cdata-section"]!=null){K.__cdata=K["#cdata-section"];delete K["#cdata-section"];if(z.arrayAccessForm=="property"){delete K["#cdata-section_asArray"];}}if(K.__cnt==0&&z.emptyNodeForm=="text"){K="";}else{if(K.__cnt==1&&K.__text!=null){K=K.__text;}else{if(K.__cnt==1&&K.__cdata!=null&&!z.keepCData){K=K.__cdata;}else{if(K.__cnt>1&&K.__text!=null&&z.skipEmptyTextNodesForObj){if((z.stripWhitespaces&&K.__text=="")||(K.__text.trim()=="")){delete K.__text;}}}}}delete K.__cnt;if(z.enableToStringFunc&&(K.__text!=null||K.__cdata!=null)){K.toString=function(){return(this.__text!=null?this.__text:"")+(this.__cdata!=null?this.__cdata:"");};}return K;}else{if(D.nodeType==h.TEXT_NODE||D.nodeType==h.CDATA_SECTION_NODE){return D.nodeValue;}}}}function o(I,F,H,C){var E="<"+((I!=null&&I.__prefix!=null)?(I.__prefix+":"):"")+F;if(H!=null){for(var G=0;G<H.length;G++){var D=H[G];var B=I[D];if(z.escapeMode){B=s(B);}E+=" "+D.substr(z.attributePrefix.length)+"=";if(z.useDoubleQuotes){E+='"'+B+'"';}else{E+="'"+B+"'";}}}if(!C){E+=">";}else{E+="/>";}return E;}function j(C,B){return"</"+(C.__prefix!=null?(C.__prefix+":"):"")+B+">";}function v(C,B){return C.indexOf(B,C.length-B.length)!==-1;}function y(C,B){if((z.arrayAccessForm=="property"&&v(B.toString(),("_asArray")))||B.toString().indexOf(z.attributePrefix)==0||B.toString().indexOf("__")==0||(C[B] instanceof Function)){return true;}else{return false;}}function m(D){var C=0;if(D instanceof Object){for(var B in D){if(y(D,B)){continue;}C++;}}return C;}function l(D,B,C){return z.jsonPropertiesFilter.length==0||C==""||w(z.jsonPropertiesFilter,D,B,C);}function c(D){var C=[];if(D instanceof Object){for(var B in D){if(B.toString().indexOf("__")==-1&&B.toString().indexOf(z.attributePrefix)==0){C.push(B);}}}return C;}function g(C){var B="";if(C.__cdata!=null){B+="<![CDATA["+C.__cdata+"]]>";}if(C.__text!=null){if(z.escapeMode){B+=s(C.__text);}else{B+=C.__text;}}return B;}function d(C){var B="";if(C instanceof Object){B+=g(C);}else{if(C!=null){if(z.escapeMode){B+=s(C);}else{B+=C;}}}return B;}function p(C,B){if(C===""){return B;}else{return C+"."+B;}}function f(D,G,F,E){var B="";if(D.length==0){B+=o(D,G,F,true);}else{for(var C=0;C<D.length;C++){B+=o(D[C],G,c(D[C]),false);B+=e(D[C],p(E,G));B+=j(D[C],G);}}return B;}function e(I,H){var B="";var F=m(I);if(F>0){for(var E in I){if(y(I,E)||(H!=""&&!l(I,E,p(H,E)))){continue;}var D=I[E];var G=c(D);if(D==null||D==undefined){B+=o(D,E,G,true);}else{if(D instanceof Object){if(D instanceof Array){B+=f(D,E,G,H);}else{if(D instanceof Date){B+=o(D,E,G,false);B+=D.toISOString();B+=j(D,E);}else{var C=m(D);if(C>0||D.__text!=null||D.__cdata!=null){B+=o(D,E,G,false);B+=e(D,p(H,E));B+=j(D,E);}else{B+=o(D,E,G,true);}}}}else{B+=o(D,E,G,false);B+=d(D);B+=j(D,E);}}}}B+=d(I);return B;}this.parseXmlString=function(D){var F=window.ActiveXObject||"ActiveXObject" in window;if(D===undefined){return null;}var E;if(window.DOMParser){var G=new window.DOMParser();var B=null;if(!F){try{B=G.parseFromString("INVALID","text/xml").getElementsByTagName("parsererror")[0].namespaceURI;}catch(C){B=null;}}try{E=G.parseFromString(D,"text/xml");if(B!=null&&E.getElementsByTagNameNS(B,"parsererror").length>0){E=null;}}catch(C){E=null;}}else{if(D.indexOf("<?")==0){D=D.substr(D.indexOf("?>")+2);}E=new ActiveXObject("Microsoft.XMLDOM");E.async="false";E.loadXML(D);}return E;};this.asArray=function(B){if(B===undefined||B==null){return[];}else{if(B instanceof Array){return B;}else{return[B];}}};this.toXmlDateTime=function(B){if(B instanceof Date){return B.toISOString();}else{if(typeof(B)==="number"){return new Date(B).toISOString();}else{return null;}}};this.asDateTime=function(B){if(typeof(B)=="string"){return a(B);}else{return B;}};this.xml2json=function(B){return A(B);};this.xml_str2json=function(B){var C=this.parseXmlString(B);if(C!=null){return this.xml2json(C);}else{return null;}};this.json2xml_str=function(B){return e(B,"");};this.json2xml=function(C){var B=this.json2xml_str(C);return this.parseXmlString(B);};this.getVersion=function(){return t;};};}));
index 156fba3..2cb937f 100644 (file)
@@ -240,10 +240,7 @@ width: 14px;
 </style>
 <div attribute-test="cldsmodelling" class="container-fluid" ng-controller="ActivityModellingCtrl" style="height: 90vh;margin:0;padding:0;overflow: hidden;">
        <div id="utm-splitter" class="k-content"  style="height: 90vh;overflow: hidden;">
-       <div attribute-test="cldsmodelling2" id="UTMdashboard" kendo-splitter
-               k-panes="[  { collapsible: true, collapsedSize: '0%',size:'0%'},{}]"
-               k-orientation="orientation" k-rebind="orientation"
-    style="height: 90vh;overflow: hidden;margin-left: 2px;margin-right: 2px;">
+       <div attribute-test="cldsmodelling2" id="UTMdashboard" style="height: 90vh;overflow: hidden;margin-left: 2px;margin-right: 2px;">
                <div style="display: none;" id="projectExplorer">
                <!-- clds: remove project explorer - use display: none -->
                <!-- div style="width: 30%; height: 90vh;overflow: hidden;" id="projectExplorer" -->
index 7ae482a..ededa7c 100644 (file)
@@ -311,7 +311,7 @@ function reloadDefaultVariables(isTemp) {
   vf_Services = null;
 }
 
-$(window).load(function() {
+$(window).on('load',function() {
   $.ajax({
     dataType: "json",
     url: '/restservices/clds/v1/clds/properties',
index 7953ccc..71fd981 100644 (file)
@@ -27,9 +27,6 @@
 
 var app = angular.module('clds-app', ['ngRoute',
     'ngResource',
-    'angularjs-dropdown-multiselect',
-    'angularjs-dropdown-multiselect-new',
-    'hljs',
     'ui.bootstrap',
     'angular-loading-bar',
     'ngAnimate',
@@ -44,8 +41,7 @@ var app = angular.module('clds-app', ['ngRoute',
     'ngCookies',
     'ui.bootstrap.modal',
     'ui.grid.exporter',
-    'angucomplete',
-    'kendo.directives',
+    'angucomplete'
   ])
   .config(['cfpLoadingBarProvider', function(cfpLoadingBarProvider) {
 
@@ -511,107 +507,6 @@ var app = angular.module('clds-app', ['ngRoute',
 
         $scope.updatebreadcrumb();
 
-        $scope.createNewProject = function() {
-
-          if ($rootScope.projectName != null) {
-            var dlg = dialogs
-              .confirm('Message',
-                'Do you want to over-write  the project ?');
-
-            dlg.result
-              .then(
-                function(btn) {
-
-                  $scope.clearProject();
-                  var dlg1 = dialogs
-                    .create(
-                      'partials/portfolios/create_new_project.html',
-                      'CreateNewPrjCtrl', {}, {
-                        size: 'sm',
-                        keyboard: true,
-                        backdrop: false,
-                        windowClass: 'my-class'
-                      });
-                  dlg1.result.then(
-                    function(name) {
-
-                      // $scope.name
-                      // = name;
-                    },
-                    function() {
-
-                      // if(angular.equals($scope.name,''))
-                      // $scope.name
-                      // = 'You
-                      // did not
-                      // enter in
-                      // your
-                      // name!';
-                    });
-                },
-                function(btn) {
-
-                  // $modalInstance.close("closed");
-                });
-
-          } else {
-            var dlg = dialogs
-              .create(
-                'partials/portfolios/create_new_project.html',
-                'CreateNewPrjCtrl', {}, {
-                  size: 'lg',
-                  keyboard: true,
-                  backdrop: false,
-                  windowClass: 'my-class'
-                });
-            dlg.result.then(function(name) {
-
-              // $scope.name = name;
-            }, function() {
-
-              // if(angular.equals($scope.name,''))
-              // $scope.name = 'You did not enter in
-              // your name!';
-            });
-
-          }
-        };
-
-        $scope.clearProject = function() {
-
-          $rootScope.projectName = null;
-          $rootScope.revision = -1;
-          // $rootScope.models.length=0;
-          $rootScope.utmModels = $rootScope.$new(true);
-          $rootScope.serviceInfo = $rootScope.$new(true);
-          $rootScope.serviceInfo = null;
-          $rootScope.serviceInputPartInfo = $rootScope
-            .$new(true);
-          $rootScope.serviceOutputPartInfo = $rootScope
-            .$new(true);
-          $rootScope.servicefaultPartInfo = $rootScope
-            .$new(true);
-          $rootScope.isModel = false;
-          $("#paletteDiv").load(
-            './modeler/dist/index.html');
-          $rootScope.isPalette = false;
-          $rootScope.isTestset = false;
-          $rootScope.isRequirementCoverage = false;
-          $rootScope.ispropertyExplorer = false;
-          // $("#propertyDiv").load('./partials/portfolios/Property_Explorer.html');
-          $rootScope.modelName = "";
-          // document.getElementById('propertyExplorer').classList.remove('visible');
-          document.getElementById("modeler_name").textContent = "Activity Modeler";
-          // $( "#propertyExplorer" ).prev().css(
-          // "display", "block" );
-          $("#activity_modeler").prev().css("display",
-            "block");
-          $('div').find('.k-expand-next').click();
-
-          $rootScope.$apply();
-
-        };
-
         $scope.homePage = function() {
 
           $location.path('/dashboard');
@@ -709,25 +604,15 @@ var app = angular.module('clds-app', ['ngRoute',
           $rootScope.isTestset = false;
           $rootScope.isRequirementCoverage = true;
           document.getElementById("modeler_name").textContent = "Test Case / Requirement Coverage";
-          // document.getElementById('propertyExplorer').classList.add('visible');
-          // console.log("modeltestset"+JSON.stringify($rootScope.modeltestset));
-          // $( "#propertyExplorer" ).prev().css(
-          // "display", "none" );
+
           $('div').find('.k-collapse-next').click();
-          // $rootScope.$apply();
+
 
         };
 
         $scope.activityModelling = function() {
-
-          // window.open("./bpmn-js-examples-master/modeler/dist/index.html",
-          // "_self");
-          // $location.path('/activity_modelling');
         };
-        /*
-         * $scope.openProject = function(){
-         * $location.path('/dashboard_upload'); };
-         */
+
 
         $scope.cldsClose = function() {
 
index 5992138..de36477 100644 (file)
@@ -46,10 +46,10 @@ function AuthenticateCtrl($scope, $rootScope, $window, $resource, $http, $locati
         $rootScope.loginuser = data;
       }
       window.localStorage.removeItem("invalidUser");
-      callback && callback();
+      
     }).error(function() {
       $window.localStorage.setItem("invalidUser", true);
-      callback && callback();
+      
     });
   };
 
diff --git a/src/main/resources/META-INF/resources/designer/scripts/kendo.custom.min.js b/src/main/resources/META-INF/resources/designer/scripts/kendo.custom.min.js
deleted file mode 100644 (file)
index a75ceaa..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-/*!
- * Copyright 2017 Telerik AD
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-!function(e,define){define("kendo.core.min",["jquery"],e)}(function(){return function(e,t,n){function i(){}function r(e,t){if(t)return"'"+e.split("'").join("\\'").split('\\"').join('\\\\\\"').replace(/\n/g,"\\n").replace(/\r/g,"\\r").replace(/\t/g,"\\t")+"'";var n=e.charAt(0),i=e.substring(1);return"="===n?"+("+i+")+":":"===n?"+$kendoHtmlEncode("+i+")+":";"+e+";$kendoOutput+="}function o(e,t,n){return e+="",t=t||2,n=t-e.length,n?W[t].substring(0,n)+e:e}function a(e){var t=e.css(ve.support.transitions.css+"box-shadow")||e.css("box-shadow"),n=t?t.match(ze)||[0,0,0,0,0]:[0,0,0,0,0],i=xe.max(+n[3],+(n[4]||0));return{left:-n[1]+i,right:+n[1]+i,bottom:+n[2]+i}}function s(t,n){var i,r,o,a,s,l,u,c=Te.browser,d=ve._outerWidth,f=ve._outerHeight;return t.parent().hasClass("k-animation-container")?(l=t.parent(".k-animation-container"),u=l[0].style,l.is(":hidden")&&l.show(),i=Se.test(u.width)||Se.test(u.height),i||l.css({width:d(t),height:f(t),boxSizing:"content-box",mozBoxSizing:"content-box",webkitBoxSizing:"content-box"})):(r=t[0].style.width,o=t[0].style.height,a=Se.test(r),s=Se.test(o),i=a||s,!a&&(!n||n&&r)&&(r=d(t)),!s&&(!n||n&&o)&&(o=f(t)),t.wrap(e("<div/>").addClass("k-animation-container").css({width:r,height:o})),i&&t.css({width:"100%",height:"100%",boxSizing:"border-box",mozBoxSizing:"border-box",webkitBoxSizing:"border-box"})),c.msie&&xe.floor(c.version)<=7&&(t.css({zoom:1}),t.children(".k-menu").width(t.width())),t.parent()}function l(e){var t=1,n=arguments.length;for(t=1;t<n;t++)u(e,arguments[t]);return e}function u(e,t){var n,i,r,o,a,s=ve.data.ObservableArray,l=ve.data.LazyObservableArray,c=ve.data.DataSource,d=ve.data.HierarchicalDataSource;for(n in t)i=t[n],r=typeof i,o=r===$e&&null!==i?i.constructor:null,o&&o!==Array&&o!==s&&o!==l&&o!==c&&o!==d&&o!==RegExp?i instanceof Date?e[n]=new Date(i.getTime()):O(i.clone)?e[n]=i.clone():(a=e[n],e[n]=typeof a===$e?a||{}:{},u(e[n],i)):r!==Ne&&(e[n]=i);return e}function c(e,t,i){for(var r in t)if(t.hasOwnProperty(r)&&t[r].test(e))return r;return i!==n?i:e}function d(e){return e.replace(/([a-z][A-Z])/g,function(e){return e.charAt(0)+"-"+e.charAt(1).toLowerCase()})}function f(e){return e.replace(/\-(\w)/g,function(e,t){return t.toUpperCase()})}function p(t,n){var i,r={};return document.defaultView&&document.defaultView.getComputedStyle?(i=document.defaultView.getComputedStyle(t,""),n&&e.each(n,function(e,t){r[t]=i.getPropertyValue(t)})):(i=t.currentStyle,n&&e.each(n,function(e,t){r[t]=i[f(t)]})),ve.size(r)||(r=i),r}function h(e){if(e&&e.className&&"string"==typeof e.className&&e.className.indexOf("k-auto-scrollable")>-1)return!0;var t=p(e,["overflow"]).overflow;return"auto"==t||"scroll"==t}function m(t,i){var r,o=Te.browser.webkit,a=Te.browser.mozilla,s=t instanceof e?t[0]:t;if(t)return r=Te.isRtl(t),i===n?r&&o?s.scrollWidth-s.clientWidth-s.scrollLeft:Math.abs(s.scrollLeft):(s.scrollLeft=r&&o?s.scrollWidth-s.clientWidth-i:r&&a?-i:i,n)}function g(e){var t,n=0;for(t in e)e.hasOwnProperty(t)&&"toJSON"!=t&&n++;return n}function v(e,n,i){var r,o,a;return n||(n="offset"),r=e[n](),o={top:r.top,right:r.right,bottom:r.bottom,left:r.left},Te.browser.msie&&(Te.pointers||Te.msPointers)&&!i&&(a=Te.isRtl(e)?1:-1,o.top-=t.pageYOffset+a*document.documentElement.scrollTop,o.left-=t.pageXOffset+a*document.documentElement.scrollLeft),o}function y(e){var t={};return be("string"==typeof e?e.split(" "):e,function(e){t[e]=this}),t}function b(e){return new ve.effects.Element(e)}function w(e,t,n,i){return typeof e===Pe&&(O(t)&&(i=t,t=400,n=!1),O(n)&&(i=n,n=!1),typeof t===He&&(n=t,t=400),e={effects:e,duration:t,reverse:n,complete:i}),ye({effects:{},duration:400,reverse:!1,init:_e,teardown:_e,hide:!1},e,{completeCallback:e.complete,complete:_e})}function k(t,n,i,r,o){for(var a,s=0,l=t.length;s<l;s++)a=e(t[s]),a.queue(function(){U.promise(a,w(n,i,r,o))});return t}function _(e,t,n,i){return t&&(t=t.split(" "),be(t,function(t,n){e.toggleClass(n,i)})),e}function x(e){return(""+e).replace(j,"&amp;").replace(q,"&lt;").replace(G,"&gt;").replace(Y,"&quot;").replace(J,"&#39;")}function M(e,t){var i;return 0===t.indexOf("data")&&(t=t.substring(4),t=t.charAt(0).toLowerCase()+t.substring(1)),t=t.replace(re,"-$1"),i=e.getAttribute("data-"+ve.ns+t),null===i?i=n:"null"===i?i=null:"true"===i?i=!0:"false"===i?i=!1:De.test(i)?i=parseFloat(i):ne.test(i)&&!ie.test(i)&&(i=Function("return ("+i+")")()),i}function T(t,i){var r,o,a={};for(r in i)o=M(t,r),o!==n&&(te.test(r)&&(o="string"==typeof o?ve.template(e("#"+o).html()):t.getAttribute(r)),a[r]=o);return a}function S(t,n){return e.contains(t,n)?-1:1}function E(){var t=e(this);return e.inArray(t.attr("data-"+ve.ns+"role"),["slider","rangeslider"])>-1||t.is(":visible")}function z(e,t){var n=e.nodeName.toLowerCase();return(/input|select|textarea|button|object/.test(n)?!e.disabled:"a"===n?e.href||t:t)&&D(e)}function D(t){return e.expr.filters.visible(t)&&!e(t).parents().addBack().filter(function(){return"hidden"===e.css(this,"visibility")}).length}function C(e,t){return new C.fn.init(e,t)}var P,O,$,A,H,N,L,I,F,V,R,W,B,U,j,q,Y,J,G,Q,X,Z,K,ee,te,ne,ie,re,oe,ae,se,le,ue,ce,de,fe,pe,he,me,ge,ve=t.kendo=t.kendo||{cultures:{}},ye=e.extend,be=e.each,we=e.isArray,ke=e.proxy,_e=e.noop,xe=Math,Me=t.JSON||{},Te={},Se=/%/,Ee=/\{(\d+)(:[^\}]+)?\}/g,ze=/(\d+(?:\.?)\d*)px\s*(\d+(?:\.?)\d*)px\s*(\d+(?:\.?)\d*)px\s*(\d+)?/i,De=/^(\+|-?)\d+(\.?)\d*$/,Ce="function",Pe="string",Oe="number",$e="object",Ae="null",He="boolean",Ne="undefined",Le={},Ie={},Fe=[].slice;ve.version="2017.2.619".replace(/^\s+|\s+$/g,""),i.extend=function(e){var t,n,i=function(){},r=this,o=e&&e.init?e.init:function(){r.apply(this,arguments)};i.prototype=r.prototype,n=o.fn=o.prototype=new i;for(t in e)n[t]=null!=e[t]&&e[t].constructor===Object?ye(!0,{},i.prototype[t],e[t]):e[t];return n.constructor=o,o.extend=r.extend,o},i.prototype._initOptions=function(e){this.options=l({},this.options,e)},O=ve.isFunction=function(e){return"function"==typeof e},$=function(){this._defaultPrevented=!0},A=function(){return this._defaultPrevented===!0},H=i.extend({init:function(){this._events={}},bind:function(e,t,i){var r,o,a,s,l,u=this,c=typeof e===Pe?[e]:e,d=typeof t===Ce;if(t===n){for(r in e)u.bind(r,e[r]);return u}for(r=0,o=c.length;r<o;r++)e=c[r],s=d?t:t[e],s&&(i&&(a=s,s=function(){u.unbind(e,s),a.apply(u,arguments)},s.original=a),l=u._events[e]=u._events[e]||[],l.push(s));return u},one:function(e,t){return this.bind(e,t,!0)},first:function(e,t){var n,i,r,o,a=this,s=typeof e===Pe?[e]:e,l=typeof t===Ce;for(n=0,i=s.length;n<i;n++)e=s[n],r=l?t:t[e],r&&(o=a._events[e]=a._events[e]||[],o.unshift(r));return a},trigger:function(e,t){var n,i,r=this,o=r._events[e];if(o){for(t=t||{},t.sender=r,t._defaultPrevented=!1,t.preventDefault=$,t.isDefaultPrevented=A,o=o.slice(),n=0,i=o.length;n<i;n++)o[n].call(r,t);return t._defaultPrevented===!0}return!1},unbind:function(e,t){var i,r=this,o=r._events[e];if(e===n)r._events={};else if(o)if(t)for(i=o.length-1;i>=0;i--)o[i]!==t&&o[i].original!==t||o.splice(i,1);else r._events[e]=[];return r}}),N=/^\w+/,L=/\$\{([^}]*)\}/g,I=/\\\}/g,F=/__CURLY__/g,V=/\\#/g,R=/__SHARP__/g,W=["","0","00","000","0000"],P={paramName:"data",useWithBlock:!0,render:function(e,t){var n,i,r="";for(n=0,i=t.length;n<i;n++)r+=e(t[n]);return r},compile:function(e,t){var n,i,o,a=ye({},this,t),s=a.paramName,l=s.match(N)[0],u=a.useWithBlock,c="var $kendoOutput, $kendoHtmlEncode = kendo.htmlEncode;";if(O(e))return e;for(c+=u?"with("+s+"){":"",c+="$kendoOutput=",i=e.replace(I,"__CURLY__").replace(L,"#=$kendoHtmlEncode($1)#").replace(F,"}").replace(V,"__SHARP__").split("#"),o=0;o<i.length;o++)c+=r(i[o],o%2===0);c+=u?";}":";",c+="return $kendoOutput;",c=c.replace(R,"#");try{return n=Function(l,c),n._slotCount=Math.floor(i.length/2),n}catch(d){throw Error(ve.format("Invalid template:'{0}' Generated code:'{1}'",e,c))}}},function(){function e(e){return a.lastIndex=0,a.test(e)?'"'+e.replace(a,function(e){var t=s[e];return typeof t===Pe?t:"\\u"+("0000"+e.charCodeAt(0).toString(16)).slice(-4)})+'"':'"'+e+'"'}function t(o,a){var s,u,c,d,f,p,h=n,m=a[o];if(m&&typeof m===$e&&typeof m.toJSON===Ce&&(m=m.toJSON(o)),typeof r===Ce&&(m=r.call(a,o,m)),p=typeof m,p===Pe)return e(m);if(p===Oe)return isFinite(m)?m+"":Ae;if(p===He||p===Ae)return m+"";if(p===$e){if(!m)return Ae;if(n+=i,f=[],"[object Array]"===l.apply(m)){for(d=m.length,s=0;s<d;s++)f[s]=t(s,m)||Ae;return c=0===f.length?"[]":n?"[\n"+n+f.join(",\n"+n)+"\n"+h+"]":"["+f.join(",")+"]",n=h,c}if(r&&typeof r===$e)for(d=r.length,s=0;s<d;s++)typeof r[s]===Pe&&(u=r[s],c=t(u,m),c&&f.push(e(u)+(n?": ":":")+c));else for(u in m)Object.hasOwnProperty.call(m,u)&&(c=t(u,m),c&&f.push(e(u)+(n?": ":":")+c));return c=0===f.length?"{}":n?"{\n"+n+f.join(",\n"+n)+"\n"+h+"}":"{"+f.join(",")+"}",n=h,c}}var n,i,r,a=/[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,s={"\b":"\\b","\t":"\\t","\n":"\\n","\f":"\\f","\r":"\\r",'"':'\\"',"\\":"\\\\"},l={}.toString;typeof Date.prototype.toJSON!==Ce&&(Date.prototype.toJSON=function(){var e=this;return isFinite(e.valueOf())?o(e.getUTCFullYear(),4)+"-"+o(e.getUTCMonth()+1)+"-"+o(e.getUTCDate())+"T"+o(e.getUTCHours())+":"+o(e.getUTCMinutes())+":"+o(e.getUTCSeconds())+"Z":null},String.prototype.toJSON=Number.prototype.toJSON=Boolean.prototype.toJSON=function(){return this.valueOf()}),typeof Me.stringify!==Ce&&(Me.stringify=function(e,o,a){var s;if(n="",i="",typeof a===Oe)for(s=0;s<a;s+=1)i+=" ";else typeof a===Pe&&(i=a);if(r=o,o&&typeof o!==Ce&&(typeof o!==$e||typeof o.length!==Oe))throw Error("JSON.stringify");return t("",{"":e})})}(),function(){function t(e){if(e){if(e.numberFormat)return e;if(typeof e===Pe){var t=ve.cultures;return t[e]||t[e.split("-")[0]]||null}return null}return null}function i(e){return e&&(e=t(e)),e||ve.cultures.current}function r(e,t,r){r=i(r);var a=r.calendars.standard,s=a.days,l=a.months;return t=a.patterns[t]||t,t.replace(c,function(t){var i,r,u;return"d"===t?r=e.getDate():"dd"===t?r=o(e.getDate()):"ddd"===t?r=s.namesAbbr[e.getDay()]:"dddd"===t?r=s.names[e.getDay()]:"M"===t?r=e.getMonth()+1:"MM"===t?r=o(e.getMonth()+1):"MMM"===t?r=l.namesAbbr[e.getMonth()]:"MMMM"===t?r=l.names[e.getMonth()]:"yy"===t?r=o(e.getFullYear()%100):"yyyy"===t?r=o(e.getFullYear(),4):"h"===t?r=e.getHours()%12||12:"hh"===t?r=o(e.getHours()%12||12):"H"===t?r=e.getHours():"HH"===t?r=o(e.getHours()):"m"===t?r=e.getMinutes():"mm"===t?r=o(e.getMinutes()):"s"===t?r=e.getSeconds():"ss"===t?r=o(e.getSeconds()):"f"===t?r=xe.floor(e.getMilliseconds()/100):"ff"===t?(r=e.getMilliseconds(),r>99&&(r=xe.floor(r/10)),r=o(r)):"fff"===t?r=o(e.getMilliseconds(),3):"tt"===t?r=e.getHours()<12?a.AM[0]:a.PM[0]:"zzz"===t?(i=e.getTimezoneOffset(),u=i<0,r=(""+xe.abs(i/60)).split(".")[0],i=xe.abs(i)-60*r,r=(u?"+":"-")+o(r),r+=":"+o(i)):"zz"!==t&&"z"!==t||(r=e.getTimezoneOffset()/60,u=r<0,r=(""+xe.abs(r)).split(".")[0],r=(u?"+":"-")+("zz"===t?o(r):r)),r!==n?r:t.slice(1,t.length-1)})}function a(e,t,r){r=i(r);var o,a,u,c,w,k,_,x,M,T,S,E,z,D,C,P,O,$,A,H,N,L,I,F=r.numberFormat,V=F[m],R=F.decimals,W=F.pattern[0],B=[],U=e<0,j=h,q=h,Y=-1;if(e===n)return h;if(!isFinite(e))return e;if(!t)return r.name.length?e.toLocaleString():""+e;if(w=d.exec(t)){if(t=w[1].toLowerCase(),a="c"===t,u="p"===t,(a||u)&&(F=a?F.currency:F.percent,V=F[m],R=F.decimals,o=F.symbol,W=F.pattern[U?0:1]),c=w[2],c&&(R=+c),"e"===t)return c?e.toExponential(R):e.toExponential();if(u&&(e*=100),e=l(e,R),U=e<0,e=e.split(m),k=e[0],_=e[1],U&&(k=k.substring(1)),q=s(k,0,k.length,F),_&&(q+=V+_),"n"===t&&!U)return q;for(e=h,T=0,S=W.length;T<S;T++)E=W.charAt(T),e+="n"===E?q:"$"===E||"%"===E?o:E;return e}if(U&&(e=-e),(t.indexOf("'")>-1||t.indexOf('"')>-1||t.indexOf("\\")>-1)&&(t=t.replace(f,function(e){var t=e.charAt(0).replace("\\",""),n=e.slice(1).replace(t,"");return B.push(n),b})),t=t.split(";"),U&&t[1])t=t[1],D=!0;else if(0===e){if(t=t[2]||t[0],t.indexOf(v)==-1&&t.indexOf(y)==-1)return t}else t=t[0];if(H=t.indexOf("%"),N=t.indexOf("$"),u=H!=-1,a=N!=-1,u&&(e*=100),a&&"\\"===t[N-1]&&(t=t.split("\\").join(""),a=!1),(a||u)&&(F=a?F.currency:F.percent,V=F[m],R=F.decimals,o=F.symbol),z=t.indexOf(g)>-1,z&&(t=t.replace(p,h)),C=t.indexOf(m),S=t.length,C!=-1?(_=(""+e).split("e"),_=_[1]?l(e,Math.abs(_[1])):_[0],_=_.split(m)[1]||h,O=t.lastIndexOf(y)-C,P=t.lastIndexOf(v)-C,$=O>-1,A=P>-1,T=_.length,$||A||(t=t.substring(0,C)+t.substring(C+1),S=t.length,C=-1,T=0),$&&O>P?T=O:P>O&&(A&&T>P?T=P:$&&T<O&&(T=O)),T>-1&&(e=l(e,T))):e=l(e),P=t.indexOf(v),L=O=t.indexOf(y),Y=P==-1&&O!=-1?O:P!=-1&&O==-1?P:P>O?O:P,P=t.lastIndexOf(v),O=t.lastIndexOf(y),I=P==-1&&O!=-1?O:P!=-1&&O==-1?P:P>O?P:O,Y==S&&(I=Y),Y!=-1){for(q=(""+e).split(m),k=q[0],_=q[1]||h,x=k.length,M=_.length,U&&e*-1>=0&&(U=!1),e=t.substring(0,Y),U&&!D&&(e+="-"),T=Y;T<S;T++){if(E=t.charAt(T),C==-1){if(I-T<x){e+=k;break}}else if(O!=-1&&O<T&&(j=h),C-T<=x&&C-T>-1&&(e+=k,T=C),C===T){e+=(_?V:h)+_,T+=I-C+1;continue}E===y?(e+=E,j=E):E===v&&(e+=j)}if(z&&(e=s(e,Y+(U&&!D?1:0),Math.max(I,x+Y),F)),I>=Y&&(e+=t.substring(I+1)),a||u){for(q=h,T=0,S=e.length;T<S;T++)E=e.charAt(T),q+="$"===E||"%"===E?o:E;e=q}if(S=B.length)for(T=0;T<S;T++)e=e.replace(b,B[T])}return e}var s,l,u,c=/dddd|ddd|dd|d|MMMM|MMM|MM|M|yyyy|yy|HH|H|hh|h|mm|m|fff|ff|f|tt|ss|s|zzz|zz|z|"[^"]*"|'[^']*'/g,d=/^(n|c|p|e)(\d*)$/i,f=/(\\.)|(['][^']*[']?)|(["][^"]*["]?)/g,p=/\,/g,h="",m=".",g=",",v="#",y="0",b="??",w="en-US",k={}.toString;ve.cultures["en-US"]={name:w,numberFormat:{pattern:["-n"],decimals:2,",":",",".":".",groupSize:[3],percent:{pattern:["-n %","n %"],decimals:2,",":",",".":".",groupSize:[3],symbol:"%"},currency:{name:"US Dollar",abbr:"USD",pattern:["($n)","$n"],decimals:2,",":",",".":".",groupSize:[3],symbol:"$"}},calendars:{standard:{days:{names:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],namesAbbr:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],namesShort:["Su","Mo","Tu","We","Th","Fr","Sa"]},months:{names:["January","February","March","April","May","June","July","August","September","October","November","December"],namesAbbr:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]},AM:["AM","am","AM"],PM:["PM","pm","PM"],patterns:{d:"M/d/yyyy",D:"dddd, MMMM dd, yyyy",F:"dddd, MMMM dd, yyyy h:mm:ss tt",g:"M/d/yyyy h:mm tt",G:"M/d/yyyy h:mm:ss tt",m:"MMMM dd",M:"MMMM dd",s:"yyyy'-'MM'-'ddTHH':'mm':'ss",t:"h:mm tt",T:"h:mm:ss tt",u:"yyyy'-'MM'-'dd HH':'mm':'ss'Z'",y:"MMMM, yyyy",Y:"MMMM, yyyy"},"/":"/",":":":",firstDay:0,twoDigitYearMax:2029}}},ve.culture=function(e){var i,r=ve.cultures;return e===n?r.current:(i=t(e)||r[w],i.calendar=i.calendars.standard,r.current=i,n)},ve.findCulture=t,ve.getCulture=i,ve.culture(w),s=function(e,t,i,r){var o,a,s,l,u,c,d=e.indexOf(r[m]),f=r.groupSize.slice(),p=f.shift();if(i=d!==-1?d:i+1,o=e.substring(t,i),a=o.length,a>=p){for(s=a,l=[];s>-1;)if(u=o.substring(s-p,s),u&&l.push(u),s-=p,c=f.shift(),p=c!==n?c:p,0===p){l.push(o.substring(0,s));break}o=l.reverse().join(r[g]),e=e.substring(0,t)+o+e.substring(i)}return e},l=function(e,t){return t=t||0,e=(""+e).split("e"),e=Math.round(+(e[0]+"e"+(e[1]?+e[1]+t:t))),e=(""+e).split("e"),e=+(e[0]+"e"+(e[1]?+e[1]-t:-t)),e.toFixed(Math.min(t,20))},u=function(e,t,i){if(t){if("[object Date]"===k.call(e))return r(e,t,i);if(typeof e===Oe)return a(e,t,i)}return e!==n?e:""},ve.format=function(e){var t=arguments;return e.replace(Ee,function(e,n,i){var r=t[parseInt(n,10)+1];return u(r,i?i.substring(1):"")})},ve._extractFormat=function(e){return"{0:"===e.slice(0,3)&&(e=e.slice(3,e.length-1)),e},ve._activeElement=function(){try{return document.activeElement}catch(e){return document.documentElement.activeElement}},ve._round=l,ve._outerWidth=function(t,n){return e(t).outerWidth(n||!1)||0},ve._outerHeight=function(t,n){return e(t).outerHeight(n||!1)||0},ve.toString=u}(),function(){function t(e,t,n){return!(e>=t&&e<=n)}function i(e){return e.charAt(0)}function r(t){return e.map(t,i)}function o(e,t){t||23!==e.getHours()||e.setHours(e.getHours()+2)}function a(e){for(var t=0,n=e.length,i=[];t<n;t++)i[t]=(e[t]+"").toLowerCase();return i}function s(e){var t,n={};for(t in e)n[t]=a(e[t]);return n}function l(e,i,a){if(!e)return null;var l,u,c,d,f,m,g,v,y,w,k,_,x,M=function(e){for(var t=0;i[N]===e;)t++,N++;return t>0&&(N-=1),t},T=function(t){var n=b[t]||RegExp("^\\d{1,"+t+"}"),i=e.substr(L,t).match(n);return i?(i=i[0],L+=i.length,parseInt(i,10)):null},S=function(t,n){for(var i,r,o,a=0,s=t.length,l=0,u=0;a<s;a++)i=t[a],r=i.length,o=e.substr(L,r),n&&(o=o.toLowerCase()),o==i&&r>l&&(l=r,u=a);return l?(L+=l,u+1):null},E=function(){var t=!1;return e.charAt(L)===i[N]&&(L++,t=!0),t},z=a.calendars.standard,D=null,C=null,P=null,O=null,$=null,A=null,H=null,N=0,L=0,I=!1,F=new Date,V=z.twoDigitYearMax||2029,R=F.getFullYear();for(i||(i="d"),d=z.patterns[i],d&&(i=d),i=i.split(""),c=i.length;N<c;N++)if(l=i[N],I)"'"===l?I=!1:E();else if("d"===l){if(u=M("d"),z._lowerDays||(z._lowerDays=s(z.days)),null!==P&&u>2)continue;if(P=u<3?T(2):S(z._lowerDays[3==u?"namesAbbr":"names"],!0),null===P||t(P,1,31))return null}else if("M"===l){if(u=M("M"),z._lowerMonths||(z._lowerMonths=s(z.months)),C=u<3?T(2):S(z._lowerMonths[3==u?"namesAbbr":"names"],!0),null===C||t(C,1,12))return null;C-=1}else if("y"===l){if(u=M("y"),D=T(u),null===D)return null;2==u&&("string"==typeof V&&(V=R+parseInt(V,10)),D=R-R%100+D,D>V&&(D-=100))}else if("h"===l){if(M("h"),O=T(2),12==O&&(O=0),null===O||t(O,0,11))return null}else if("H"===l){if(M("H"),O=T(2),null===O||t(O,0,23))return null}else if("m"===l){if(M("m"),$=T(2),null===$||t($,0,59))return null}else if("s"===l){if(M("s"),A=T(2),null===A||t(A,0,59))return null}else if("f"===l){if(u=M("f"),x=e.substr(L,u).match(b[3]),H=T(u),null!==H&&(H=parseFloat("0."+x[0],10),H=ve._round(H,3),H*=1e3),null===H||t(H,0,999))return null}else if("t"===l){if(u=M("t"),v=z.AM,y=z.PM,1===u&&(v=r(v),y=r(y)),f=S(y),!f&&!S(v))return null}else if("z"===l){if(m=!0,u=M("z"),"Z"===e.substr(L,1)){E();continue}if(g=e.substr(L,6).match(u>2?h:p),!g)return null;if(g=g[0].split(":"),w=g[0],k=g[1],!k&&w.length>3&&(L=w.length-2,k=w.substring(L),w=w.substring(0,L)),w=parseInt(w,10),t(w,-12,13))return null;if(u>2&&(k=parseInt(k,10),isNaN(k)||t(k,0,59)))return null}else if("'"===l)I=!0,E();else if(!E())return null;return _=null!==O||null!==$||A||null,null===D&&null===C&&null===P&&_?(D=R,C=F.getMonth(),P=F.getDate()):(null===D&&(D=R),null===P&&(P=1)),f&&O<12&&(O+=12),m?(w&&(O+=-w),k&&($+=-k),e=new Date(Date.UTC(D,C,P,O,$,A,H))):(e=new Date(D,C,P,O,$,A,H),o(e,O)),D<100&&e.setFullYear(D),e.getDate()!==P&&m===n?null:e}function u(e){var t="-"===e.substr(0,1)?-1:1;return e=e.substring(1),e=60*parseInt(e.substr(0,2),10)+parseInt(e.substring(2),10),t*e}function c(e){var t,n,i,r=xe.max(v.length,y.length),o=e.calendar.patterns,a=[];for(i=0;i<r;i++){for(t=v[i],n=0;n<t.length;n++)a.push(o[t[n]]);a=a.concat(y[i])}return a}var d=/\u00A0/g,f=/[eE][\-+]?[0-9]+/,p=/[+|\-]\d{1,2}/,h=/[+|\-]\d{1,2}:?\d{2}/,m=/^\/Date\((.*?)\)\/$/,g=/[+-]\d*/,v=[[],["G","g","F"],["D","d","y","m","T","t"]],y=[["yyyy-MM-ddTHH:mm:ss.fffffffzzz","yyyy-MM-ddTHH:mm:ss.fffffff","yyyy-MM-ddTHH:mm:ss.fffzzz","yyyy-MM-ddTHH:mm:ss.fff","ddd MMM dd yyyy HH:mm:ss","yyyy-MM-ddTHH:mm:sszzz","yyyy-MM-ddTHH:mmzzz","yyyy-MM-ddTHH:mmzz","yyyy-MM-ddTHH:mm:ss","yyyy-MM-dd HH:mm:ss","yyyy/MM/dd HH:mm:ss"],["yyyy-MM-ddTHH:mm","yyyy-MM-dd HH:mm","yyyy/MM/dd HH:mm"],["yyyy/MM/dd","yyyy-MM-dd","HH:mm:ss","HH:mm"]],b={2:/^\d{1,2}/,3:/^\d{1,3}/,4:/^\d{4}/},w={}.toString;ve.parseDate=function(e,t,n){var i,r,o,a;if("[object Date]"===w.call(e))return e;if(i=0,r=null,e&&0===e.indexOf("/D")&&(r=m.exec(e)))return r=r[1],a=g.exec(r.substring(1)),r=new Date(parseInt(r,10)),a&&(a=u(a[0]),r=ve.timezone.apply(r,0),r=ve.timezone.convert(r,0,-1*a)),r;for(n=ve.getCulture(n),t||(t=c(n)),t=we(t)?t:[t],o=t.length;i<o;i++)if(r=l(e,t[i],n))return r;return r},ve.parseInt=function(e,t){var n=ve.parseFloat(e,t);return n&&(n=0|n),n},ve.parseFloat=function(e,t,n){if(!e&&0!==e)return null;if(typeof e===Oe)return e;e=""+e,t=ve.getCulture(t);var i,r,o=t.numberFormat,a=o.percent,s=o.currency,l=s.symbol,u=a.symbol,c=e.indexOf("-");return f.test(e)?(e=parseFloat(e.replace(o["."],".")),isNaN(e)&&(e=null),e):c>0?null:(c=c>-1,e.indexOf(l)>-1||n&&n.toLowerCase().indexOf("c")>-1?(o=s,i=o.pattern[0].replace("$",l).split("n"),e.indexOf(i[0])>-1&&e.indexOf(i[1])>-1&&(e=e.replace(i[0],"").replace(i[1],""),c=!0)):e.indexOf(u)>-1&&(r=!0,o=a,l=u),e=e.replace("-","").replace(l,"").replace(d," ").split(o[","].replace(d," ")).join("").replace(o["."],"."),e=parseFloat(e),isNaN(e)?e=null:c&&(e*=-1),e&&r&&(e/=100),e)}}(),function(){var i,r,o,a,s,l,u,d,f;Te._scrollbar=n,Te.scrollbar=function(e){if(isNaN(Te._scrollbar)||e){var t,n=document.createElement("div");return n.style.cssText="overflow:scroll;overflow-x:hidden;zoom:1;clear:both;display:block",n.innerHTML="&nbsp;",document.body.appendChild(n),Te._scrollbar=t=n.offsetWidth-n.scrollWidth,document.body.removeChild(n),t}return Te._scrollbar},Te.isRtl=function(t){return e(t).closest(".k-rtl").length>0},i=document.createElement("table");try{i.innerHTML="<tr><td></td></tr>",Te.tbodyInnerHtml=!0}catch(p){Te.tbodyInnerHtml=!1}Te.touch="ontouchstart"in t,r=document.documentElement.style,o=Te.transitions=!1,a=Te.transforms=!1,s="HTMLElement"in t?HTMLElement.prototype:[],Te.hasHW3D="WebKitCSSMatrix"in t&&"m11"in new t.WebKitCSSMatrix||"MozPerspective"in r||"msPerspective"in r,Te.cssFlexbox="flexWrap"in r||"WebkitFlexWrap"in r||"msFlexWrap"in r,be(["Moz","webkit","O","ms"],function(){var e,t=""+this,n=typeof i.style[t+"Transition"]===Pe;if(n||typeof i.style[t+"Transform"]===Pe)return e=t.toLowerCase(),a={css:"ms"!=e?"-"+e+"-":"",prefix:t,event:"o"===e||"webkit"===e?e:""},n&&(o=a,o.event=o.event?o.event+"TransitionEnd":"transitionend"),!1}),i=null,Te.transforms=a,Te.transitions=o,Te.devicePixelRatio=t.devicePixelRatio===n?1:t.devicePixelRatio;try{Te.screenWidth=t.outerWidth||t.screen?t.screen.availWidth:t.innerWidth,Te.screenHeight=t.outerHeight||t.screen?t.screen.availHeight:t.innerHeight}catch(p){Te.screenWidth=t.screen.availWidth,Te.screenHeight=t.screen.availHeight}Te.detectOS=function(e){var n,i,r=!1,o=[],a=!/mobile safari/i.test(e),s={wp:/(Windows Phone(?: OS)?)\s(\d+)\.(\d+(\.\d+)?)/,fire:/(Silk)\/(\d+)\.(\d+(\.\d+)?)/,android:/(Android|Android.*(?:Opera|Firefox).*?\/)\s*(\d+)\.(\d+(\.\d+)?)/,iphone:/(iPhone|iPod).*OS\s+(\d+)[\._]([\d\._]+)/,ipad:/(iPad).*OS\s+(\d+)[\._]([\d_]+)/,meego:/(MeeGo).+NokiaBrowser\/(\d+)\.([\d\._]+)/,webos:/(webOS)\/(\d+)\.(\d+(\.\d+)?)/,blackberry:/(BlackBerry|BB10).*?Version\/(\d+)\.(\d+(\.\d+)?)/,playbook:/(PlayBook).*?Tablet\s*OS\s*(\d+)\.(\d+(\.\d+)?)/,windows:/(MSIE)\s+(\d+)\.(\d+(\.\d+)?)/,tizen:/(tizen).*?Version\/(\d+)\.(\d+(\.\d+)?)/i,sailfish:/(sailfish).*rv:(\d+)\.(\d+(\.\d+)?).*firefox/i,ffos:/(Mobile).*rv:(\d+)\.(\d+(\.\d+)?).*Firefox/},l={ios:/^i(phone|pad|pod)$/i,android:/^android|fire$/i,blackberry:/^blackberry|playbook/i,windows:/windows/,wp:/wp/,flat:/sailfish|ffos|tizen/i,meego:/meego/},u={tablet:/playbook|ipad|fire/i},d={omini:/Opera\sMini/i,omobile:/Opera\sMobi/i,firefox:/Firefox|Fennec/i,mobilesafari:/version\/.*safari/i,ie:/MSIE|Windows\sPhone/i,chrome:/chrome|crios/i,webkit:/webkit/i};for(i in s)if(s.hasOwnProperty(i)&&(o=e.match(s[i]))){if("windows"==i&&"plugins"in navigator)return!1;r={},r.device=i,r.tablet=c(i,u,!1),r.browser=c(e,d,"default"),r.name=c(i,l),r[r.name]=!0,r.majorVersion=o[2],r.minorVersion=o[3].replace("_","."),n=r.minorVersion.replace(".","").substr(0,2),r.flatVersion=r.majorVersion+n+Array(3-(n.length<3?n.length:2)).join("0"),r.cordova=typeof t.PhoneGap!==Ne||typeof t.cordova!==Ne,r.appMode=t.navigator.standalone||/file|local|wmapp/.test(t.location.protocol)||r.cordova,r.android&&(Te.devicePixelRatio<1.5&&r.flatVersion<400||a)&&(Te.screenWidth>800||Te.screenHeight>800)&&(r.tablet=i);break}return r},l=Te.mobileOS=Te.detectOS(navigator.userAgent),Te.wpDevicePixelRatio=l.wp?screen.width/320:0,Te.hasNativeScrolling=!1,(l.ios||l.android&&l.majorVersion>2||l.wp)&&(Te.hasNativeScrolling=l),Te.delayedClick=function(){if(Te.touch){if(l.ios)return!0;if(l.android)return!Te.browser.chrome||!(Te.browser.version<32)&&!(e("meta[name=viewport]").attr("content")||"").match(/user-scalable=no/i)}return!1},Te.mouseAndTouchPresent=Te.touch&&!(Te.mobileOS.ios||Te.mobileOS.android),Te.detectBrowser=function(e){var t,n=!1,i=[],r={edge:/(edge)[ \/]([\w.]+)/i,webkit:/(chrome)[ \/]([\w.]+)/i,safari:/(webkit)[ \/]([\w.]+)/i,opera:/(opera)(?:.*version|)[ \/]([\w.]+)/i,msie:/(msie\s|trident.*? rv:)([\w.]+)/i,mozilla:/(mozilla)(?:.*? rv:([\w.]+)|)/i};for(t in r)if(r.hasOwnProperty(t)&&(i=e.match(r[t]))){n={},n[t]=!0,n[i[1].toLowerCase().split(" ")[0].split("/")[0]]=!0,n.version=parseInt(document.documentMode||i[2],10);break}return n},Te.browser=Te.detectBrowser(navigator.userAgent),Te.detectClipboardAccess=function(){var e={copy:!!document.queryCommandSupported&&document.queryCommandSupported("copy"),cut:!!document.queryCommandSupported&&document.queryCommandSupported("cut"),paste:!!document.queryCommandSupported&&document.queryCommandSupported("paste")};return Te.browser.chrome&&(e.paste=!1,Te.browser.version>=43&&(e.copy=!0,e.cut=!0)),e},Te.clipboard=Te.detectClipboardAccess(),Te.zoomLevel=function(){var e,n,i;try{return e=Te.browser,n=0,i=document.documentElement,e.msie&&11==e.version&&i.scrollHeight>i.clientHeight&&!Te.touch&&(n=Te.scrollbar()),Te.touch?i.clientWidth/t.innerWidth:e.msie&&e.version>=10?((top||t).document.documentElement.offsetWidth+n)/(top||t).innerWidth:1}catch(r){return 1}},Te.cssBorderSpacing=n!==r.borderSpacing&&!(Te.browser.msie&&Te.browser.version<8),function(t){var n="",i=e(document.documentElement),r=parseInt(t.version,10);t.msie?n="ie":t.mozilla?n="ff":t.safari?n="safari":t.webkit?n="webkit":t.opera?n="opera":t.edge&&(n="edge"),n&&(n="k-"+n+" k-"+n+r),Te.mobileOS&&(n+=" k-mobile"),Te.cssFlexbox||(n+=" k-no-flexbox"),i.addClass(n)}(Te.browser),Te.eventCapture=document.documentElement.addEventListener,u=document.createElement("input"),Te.placeholder="placeholder"in u,Te.propertyChangeEvent="onpropertychange"in u,Te.input=function(){for(var e,t=["number","date","time","month","week","datetime","datetime-local"],n=t.length,i="test",r={},o=0;o<n;o++)e=t[o],u.setAttribute("type",e),u.value=i,r[e.replace("-","")]="text"!==u.type&&u.value!==i;return r}(),u.style.cssText="float:left;",Te.cssFloat=!!u.style.cssFloat,u=null,Te.stableSort=function(){var e,t=513,n=[{index:0,field:"b"}];for(e=1;e<t;e++)n.push({index:e,field:"a"});return n.sort(function(e,t){return e.field>t.field?1:e.field<t.field?-1:0}),1===n[0].index}(),Te.matchesSelector=s.webkitMatchesSelector||s.mozMatchesSelector||s.msMatchesSelector||s.oMatchesSelector||s.matchesSelector||s.matches||function(t){for(var n=document.querySelectorAll?(this.parentNode||document).querySelectorAll(t)||[]:e(t),i=n.length;i--;)if(n[i]==this)return!0;return!1},Te.pushState=t.history&&t.history.pushState,d=document.documentMode,Te.hashChange="onhashchange"in t&&!(Te.browser.msie&&(!d||d<=8)),Te.customElements="registerElement"in t.document,f=Te.browser.chrome,Te.msPointers=!f&&t.MSPointerEvent,Te.pointers=!f&&t.PointerEvent,Te.kineticScrollNeeded=l&&(Te.touch||Te.msPointers||Te.pointers)}(),B={left:{reverse:"right"},right:{reverse:"left"},down:{reverse:"up"},up:{reverse:"down"},top:{reverse:"bottom"},bottom:{reverse:"top"},"in":{reverse:"out"},out:{reverse:"in"}},U={},e.extend(U,{enabled:!0,Element:function(t){this.element=e(t)},promise:function(e,t){e.is(":visible")||e.css({display:e.data("olddisplay")||"block"}).css("display"),t.hide&&e.data("olddisplay",e.css("display")).hide(),t.init&&t.init(),t.completeCallback&&t.completeCallback(e),e.dequeue()},disable:function(){this.enabled=!1,this.promise=this.promiseShim},enable:function(){this.enabled=!0,this.promise=this.animatedPromise}}),U.promiseShim=U.promise,"kendoAnimate"in e.fn||ye(e.fn,{kendoStop:function(e,t){return this.stop(e,t)},kendoAnimate:function(e,t,n,i){return k(this,e,t,n,i)},kendoAddClass:function(e,t){return ve.toggleClass(this,e,t,!0)},kendoRemoveClass:function(e,t){return ve.toggleClass(this,e,t,!1)},kendoToggleClass:function(e,t,n){return ve.toggleClass(this,e,t,n)}}),j=/&/g,q=/</g,Y=/"/g,J=/'/g,G=/>/g,Q=function(e){return e.target},Te.touch&&(Q=function(e){var t="originalEvent"in e?e.originalEvent.changedTouches:"changedTouches"in e?e.changedTouches:null;return t?document.elementFromPoint(t[0].clientX,t[0].clientY):e.target},be(["swipe","swipeLeft","swipeRight","swipeUp","swipeDown","doubleTap","tap"],function(t,n){e.fn[n]=function(e){return this.bind(n,e)}})),Te.touch?Te.mobileOS?(Te.mousedown="touchstart",Te.mouseup="touchend",Te.mousemove="touchmove",Te.mousecancel="touchcancel",Te.click="touchend",Te.resize="orientationchange"):(Te.mousedown="mousedown touchstart",Te.mouseup="mouseup touchend",Te.mousemove="mousemove touchmove",Te.mousecancel="mouseleave touchcancel",Te.click="click",Te.resize="resize"):Te.pointers?(Te.mousemove="pointermove",Te.mousedown="pointerdown",Te.mouseup="pointerup",Te.mousecancel="pointercancel",Te.click="pointerup",Te.resize="orientationchange resize"):Te.msPointers?(Te.mousemove="MSPointerMove",Te.mousedown="MSPointerDown",Te.mouseup="MSPointerUp",Te.mousecancel="MSPointerCancel",Te.click="MSPointerUp",Te.resize="orientationchange resize"):(Te.mousemove="mousemove",Te.mousedown="mousedown",Te.mouseup="mouseup",Te.mousecancel="mouseleave",Te.click="click",Te.resize="resize"),X=function(e,t){var n,i,r,o,a=t||"d",s=1;for(i=0,r=e.length;i<r;i++)o=e[i],""!==o&&(n=o.indexOf("["),0!==n&&(n==-1?o="."+o:(s++,o="."+o.substring(0,n)+" || {})"+o.substring(n))),s++,a+=o+(i<r-1?" || {})":")"));return Array(s).join("(")+a},Z=/^([a-z]+:)?\/\//i,ye(ve,{widgets:[],_widgetRegisteredCallbacks:[],ui:ve.ui||{},fx:ve.fx||b,effects:ve.effects||U,mobile:ve.mobile||{},data:ve.data||{},dataviz:ve.dataviz||{},drawing:ve.drawing||{},spreadsheet:{messages:{}},keys:{INSERT:45,DELETE:46,BACKSPACE:8,TAB:9,ENTER:13,ESC:27,LEFT:37,UP:38,RIGHT:39,DOWN:40,END:35,HOME:36,SPACEBAR:32,PAGEUP:33,PAGEDOWN:34,F2:113,F10:121,F12:123,NUMPAD_PLUS:107,NUMPAD_MINUS:109,NUMPAD_DOT:110},support:ve.support||Te,animate:ve.animate||k,ns:"",attr:function(e){return"data-"+ve.ns+e},getShadows:a,wrap:s,deepExtend:l,getComputedStyles:p,webComponents:ve.webComponents||[],isScrollable:h,scrollLeft:m,size:g,toCamelCase:f,toHyphens:d,getOffset:ve.getOffset||v,parseEffects:ve.parseEffects||y,toggleClass:ve.toggleClass||_,directions:ve.directions||B,Observable:H,Class:i,Template:P,template:ke(P.compile,P),render:ke(P.render,P),stringify:ke(Me.stringify,Me),eventTarget:Q,htmlEncode:x,isLocalUrl:function(e){return e&&!Z.test(e)},expr:function(e,t,n){return e=e||"",typeof t==Pe&&(n=t,t=!1),n=n||"d",e&&"["!==e.charAt(0)&&(e="."+e),t?(e=e.replace(/"([^.]*)\.([^"]*)"/g,'"$1_$DOT$_$2"'),e=e.replace(/'([^.]*)\.([^']*)'/g,"'$1_$DOT$_$2'"),e=X(e.split("."),n),e=e.replace(/_\$DOT\$_/g,".")):e=n+e,e},getter:function(e,t){var n=e+t;return Le[n]=Le[n]||Function("d","return "+ve.expr(e,t))},setter:function(e){return Ie[e]=Ie[e]||Function("d,value",ve.expr(e)+"=value")},accessor:function(e){return{get:ve.getter(e),set:ve.setter(e)}},guid:function(){var e,t,n="";for(e=0;e<32;e++)t=16*xe.random()|0,8!=e&&12!=e&&16!=e&&20!=e||(n+="-"),n+=(12==e?4:16==e?3&t|8:t).toString(16);return n},roleSelector:function(e){return e.replace(/(\S+)/g,"["+ve.attr("role")+"=$1],").slice(0,-1)},directiveSelector:function(e){var t,n=e.split(" ");if(n)for(t=0;t<n.length;t++)"view"!=n[t]&&(n[t]=n[t].replace(/(\w*)(view|bar|strip|over)$/,"$1-$2"));return n.join(" ").replace(/(\S+)/g,"kendo-mobile-$1,").slice(0,-1)},triggeredByInput:function(e){return/^(label|input|textarea|select)$/i.test(e.target.tagName)},onWidgetRegistered:function(e){for(var t=0,n=ve.widgets.length;t<n;t++)e(ve.widgets[t]);ve._widgetRegisteredCallbacks.push(e)},logToConsole:function(e,i){var r=t.console;!ve.suppressLog&&n!==r&&r.log&&r[i||"log"](e)}}),K=H.extend({init:function(e,t){var n,i=this;i.element=ve.jQuery(e).handler(i),i.angular("init",t),
-H.fn.init.call(i),n=t?t.dataSource:null,n&&(t=ye({},t,{dataSource:{}})),t=i.options=ye(!0,{},i.options,t),n&&(t.dataSource=n),i.element.attr(ve.attr("role"))||i.element.attr(ve.attr("role"),(t.name||"").toLowerCase()),i.element.data("kendo"+t.prefix+t.name,i),i.bind(i.events,t)},events:[],options:{prefix:""},_hasBindingTarget:function(){return!!this.element[0].kendoBindingTarget},_tabindex:function(e){e=e||this.wrapper;var t=this.element,n="tabindex",i=e.attr(n)||t.attr(n);t.removeAttr(n),e.attr(n,isNaN(i)?0:i)},setOptions:function(t){this._setEvents(t),e.extend(this.options,t)},_setEvents:function(e){for(var t,n=this,i=0,r=n.events.length;i<r;i++)t=n.events[i],n.options[t]&&e[t]&&n.unbind(t,n.options[t]);n.bind(n.events,e)},resize:function(e){var t=this.getSize(),n=this._size;(e||(t.width>0||t.height>0)&&(!n||t.width!==n.width||t.height!==n.height))&&(this._size=t,this._resize(t,e),this.trigger("resize",t))},getSize:function(){return ve.dimensions(this.element)},size:function(e){return e?(this.setSize(e),n):this.getSize()},setSize:e.noop,_resize:e.noop,destroy:function(){var e=this;e.element.removeData("kendo"+e.options.prefix+e.options.name),e.element.removeData("handler"),e.unbind()},_destroy:function(){this.destroy()},angular:function(){},_muteAngularRebind:function(e){this._muteRebind=!0,e.call(this),this._muteRebind=!1}}),ee=K.extend({dataItems:function(){return this.dataSource.flatView()},_angularItems:function(t){var n=this;n.angular(t,function(){return{elements:n.items(),data:e.map(n.dataItems(),function(e){return{dataItem:e}})}})}}),ve.dimensions=function(e,t){var n=e[0];return t&&e.css(t),{width:n.offsetWidth,height:n.offsetHeight}},ve.notify=_e,te=/template$/i,ne=/^\s*(?:\{(?:.|\r\n|\n)*\}|\[(?:.|\r\n|\n)*\])\s*$/,ie=/^\{(\d+)(:[^\}]+)?\}|^\[[A-Za-z_]+\]$/,re=/([A-Z])/g,ve.initWidget=function(i,r,o){var a,s,l,u,c,d,f,p,h,m,g,v,y;if(o?o.roles&&(o=o.roles):o=ve.ui.roles,i=i.nodeType?i:i[0],d=i.getAttribute("data-"+ve.ns+"role")){h=d.indexOf(".")===-1,l=h?o[d]:ve.getter(d)(t),g=e(i).data(),v=l?"kendo"+l.fn.options.prefix+l.fn.options.name:"",m=h?RegExp("^kendo.*"+d+"$","i"):RegExp("^"+v+"$","i");for(y in g)if(y.match(m)){if(y!==v)return g[y];a=g[y]}if(l){for(p=M(i,"dataSource"),r=e.extend({},T(i,l.fn.options),r),p&&(r.dataSource=typeof p===Pe?ve.getter(p)(t):p),u=0,c=l.fn.events.length;u<c;u++)s=l.fn.events[u],f=M(i,s),f!==n&&(r[s]=ve.getter(f)(t));return a?e.isEmptyObject(r)||a.setOptions(r):a=new l(i,r),a}}},ve.rolesFromNamespaces=function(e){var t,n,i=[];for(e[0]||(e=[ve.ui,ve.dataviz.ui]),t=0,n=e.length;t<n;t++)i[t]=e[t].roles;return ye.apply(null,[{}].concat(i.reverse()))},ve.init=function(t){var n=ve.rolesFromNamespaces(Fe.call(arguments,1));e(t).find("[data-"+ve.ns+"role]").addBack().each(function(){ve.initWidget(this,{},n)})},ve.destroy=function(t){e(t).find("[data-"+ve.ns+"role]").addBack().each(function(){var t,n=e(this).data();for(t in n)0===t.indexOf("kendo")&&typeof n[t].destroy===Ce&&n[t].destroy()})},ve.resize=function(t,n){var i,r=e(t).find("[data-"+ve.ns+"role]").addBack().filter(E);r.length&&(i=e.makeArray(r),i.sort(S),e.each(i,function(){var t=ve.widgetInstance(e(this));t&&t.resize(n)}))},ve.parseOptions=T,ye(ve.ui,{Widget:K,DataBoundWidget:ee,roles:{},progress:function(t,n){var i,r,o,a,s=t.find(".k-loading-mask"),l=ve.support,u=l.browser;n?s.length||(i=l.isRtl(t),r=i?"right":"left",a=t.scrollLeft(),o=u.webkit&&i?t[0].scrollWidth-t.width()-2*a:0,s=e("<div class='k-loading-mask'><span class='k-loading-text'>"+ve.ui.progress.messages.loading+"</span><div class='k-loading-image'/><div class='k-loading-color'/></div>").width("100%").height("100%").css("top",t.scrollTop()).css(r,Math.abs(a)+o).prependTo(t)):s&&s.remove()},plugin:function(t,i,r){var o,a,s,l,u=t.fn.options.name;for(i=i||ve.ui,r=r||"",i[u]=t,i.roles[u.toLowerCase()]=t,o="getKendo"+r+u,u="kendo"+r+u,a={name:u,widget:t,prefix:r||""},ve.widgets.push(a),s=0,l=ve._widgetRegisteredCallbacks.length;s<l;s++)ve._widgetRegisteredCallbacks[s](a);e.fn[u]=function(i){var r,o=this;return typeof i===Pe?(r=Fe.call(arguments,1),this.each(function(){var t,a,s=e.data(this,u);if(!s)throw Error(ve.format("Cannot call method '{0}' of {1} before it is initialized",i,u));if(t=s[i],typeof t!==Ce)throw Error(ve.format("Cannot find method '{0}' of {1}",i,u));if(a=t.apply(s,r),a!==n)return o=a,!1})):this.each(function(){return new t(this,i)}),o},e.fn[u].widget=t,e.fn[o]=function(){return this.data(u)}}}),ve.ui.progress.messages={loading:"Loading..."},oe={bind:function(){return this},nullObject:!0,options:{}},ae=K.extend({init:function(e,t){K.fn.init.call(this,e,t),this.element.autoApplyNS(),this.wrapper=this.element,this.element.addClass("km-widget")},destroy:function(){K.fn.destroy.call(this),this.element.kendoDestroy()},options:{prefix:"Mobile"},events:[],view:function(){var e=this.element.closest(ve.roleSelector("view splitview modalview drawer"));return ve.widgetInstance(e,ve.mobile.ui)||oe},viewHasNativeScrolling:function(){var e=this.view();return e&&e.options.useNativeScrolling},container:function(){var e=this.element.closest(ve.roleSelector("view layout modalview drawer splitview"));return ve.widgetInstance(e.eq(0),ve.mobile.ui)||oe}}),ye(ve.mobile,{init:function(e){ve.init(e,ve.mobile.ui,ve.ui,ve.dataviz.ui)},appLevelNativeScrolling:function(){return ve.mobile.application&&ve.mobile.application.options&&ve.mobile.application.options.useNativeScrolling},roles:{},ui:{Widget:ae,DataBoundWidget:ee.extend(ae.prototype),roles:{},plugin:function(e){ve.ui.plugin(e,ve.mobile.ui,"Mobile")}}}),l(ve.dataviz,{init:function(e){ve.init(e,ve.dataviz.ui)},ui:{roles:{},themes:{},views:[],plugin:function(e){ve.ui.plugin(e,ve.dataviz.ui)}},roles:{}}),ve.touchScroller=function(t,n){return n||(n={}),n.useNative=!0,e(t).map(function(t,i){return i=e(i),!(!Te.kineticScrollNeeded||!ve.mobile.ui.Scroller||i.data("kendoMobileScroller"))&&(i.kendoMobileScroller(n),i.data("kendoMobileScroller"))})[0]},ve.preventDefault=function(e){e.preventDefault()},ve.widgetInstance=function(e,n){var i,r,o,a,s=e.data(ve.ns+"role"),l=[];if(s){if("content"===s&&(s="scroller"),n)if(n[0])for(i=0,r=n.length;i<r;i++)l.push(n[i].roles[s]);else l.push(n.roles[s]);else l=[ve.ui.roles[s],ve.dataviz.ui.roles[s],ve.mobile.ui.roles[s]];for(s.indexOf(".")>=0&&(l=[ve.getter(s)(t)]),i=0,r=l.length;i<r;i++)if(o=l[i],o&&(a=e.data("kendo"+o.fn.options.prefix+o.fn.options.name)))return a}},ve.onResize=function(n){var i=n;return Te.mobileOS.android&&(i=function(){setTimeout(n,600)}),e(t).on(Te.resize,i),i},ve.unbindResize=function(n){e(t).off(Te.resize,n)},ve.attrValue=function(e,t){return e.data(ve.ns+t)},ve.days={Sunday:0,Monday:1,Tuesday:2,Wednesday:3,Thursday:4,Friday:5,Saturday:6},e.extend(e.expr[":"],{kendoFocusable:function(t){var n=e.attr(t,"tabindex");return z(t,!isNaN(n)&&n>-1)}}),se=["mousedown","mousemove","mouseenter","mouseleave","mouseover","mouseout","mouseup","click"],le="label, input, [data-rel=external]",ue={setupMouseMute:function(){var t,n=0,i=se.length,r=document.documentElement;if(!ue.mouseTrap&&Te.eventCapture)for(ue.mouseTrap=!0,ue.bustClick=!1,ue.captureMouse=!1,t=function(t){ue.captureMouse&&("click"===t.type?ue.bustClick&&!e(t.target).is(le)&&(t.preventDefault(),t.stopPropagation()):t.stopPropagation())};n<i;n++)r.addEventListener(se[n],t,!0)},muteMouse:function(e){ue.captureMouse=!0,e.data.bustClick&&(ue.bustClick=!0),clearTimeout(ue.mouseTrapTimeoutID)},unMuteMouse:function(){clearTimeout(ue.mouseTrapTimeoutID),ue.mouseTrapTimeoutID=setTimeout(function(){ue.captureMouse=!1,ue.bustClick=!1},400)}},ce={down:"touchstart mousedown",move:"mousemove touchmove",up:"mouseup touchend touchcancel",cancel:"mouseleave touchcancel"},Te.touch&&(Te.mobileOS.ios||Te.mobileOS.android)?ce={down:"touchstart",move:"touchmove",up:"touchend touchcancel",cancel:"touchcancel"}:Te.pointers?ce={down:"pointerdown",move:"pointermove",up:"pointerup",cancel:"pointercancel pointerleave"}:Te.msPointers&&(ce={down:"MSPointerDown",move:"MSPointerMove",up:"MSPointerUp",cancel:"MSPointerCancel MSPointerLeave"}),!Te.msPointers||"onmspointerenter"in t||e.each({MSPointerEnter:"MSPointerOver",MSPointerLeave:"MSPointerOut"},function(t,n){e.event.special[t]={delegateType:n,bindType:n,handle:function(t){var i,r=this,o=t.relatedTarget,a=t.handleObj;return o&&(o===r||e.contains(r,o))||(t.type=a.origType,i=a.handler.apply(this,arguments),t.type=n),i}}}),de=function(e){return ce[e]||e},fe=/([^ ]+)/g,ve.applyEventMap=function(e,t){return e=e.replace(fe,de),t&&(e=e.replace(fe,"$1."+t)),e},pe=e.fn.on,ye(!0,C,e),C.fn=C.prototype=new e,C.fn.constructor=C,C.fn.init=function(t,n){return n&&n instanceof e&&!(n instanceof C)&&(n=C(n)),e.fn.init.call(this,t,n,he)},C.fn.init.prototype=C.fn,he=C(document),ye(C.fn,{handler:function(e){return this.data("handler",e),this},autoApplyNS:function(e){return this.data("kendoNS",e||ve.guid()),this},on:function(){var e,t,n,i,r,o,a=this,s=a.data("kendoNS");return 1===arguments.length?pe.call(a,arguments[0]):(e=a,t=Fe.call(arguments),typeof t[t.length-1]===Ne&&t.pop(),n=t[t.length-1],i=ve.applyEventMap(t[0],s),Te.mouseAndTouchPresent&&i.search(/mouse|click/)>-1&&this[0]!==document.documentElement&&(ue.setupMouseMute(),r=2===t.length?null:t[1],o=i.indexOf("click")>-1&&i.indexOf("touchend")>-1,pe.call(this,{touchstart:ue.muteMouse,touchend:ue.unMuteMouse},r,{bustClick:o})),typeof n===Pe&&(e=a.data("handler"),n=e[n],t[t.length-1]=function(t){n.call(e,t)}),t[0]=i,pe.apply(a,t),a)},kendoDestroy:function(e){return e=e||this.data("kendoNS"),e&&this.off("."+e),this}}),ve.jQuery=C,ve.eventMap=ce,ve.timezone=function(){function e(e,t){var n,i,r,o=t[3],a=t[4],s=t[5],l=t[8];return l||(t[8]=l={}),l[e]?l[e]:(isNaN(a)?0===a.indexOf("last")?(n=new Date(Date.UTC(e,c[o]+1,1,s[0]-24,s[1],s[2],0)),i=d[a.substr(4,3)],r=n.getUTCDay(),n.setUTCDate(n.getUTCDate()+i-r-(i>r?7:0))):a.indexOf(">=")>=0&&(n=new Date(Date.UTC(e,c[o],a.substr(5),s[0],s[1],s[2],0)),i=d[a.substr(0,3)],r=n.getUTCDay(),n.setUTCDate(n.getUTCDate()+i-r+(i<r?7:0))):n=new Date(Date.UTC(e,c[o],a,s[0],s[1],s[2],0)),l[e]=n)}function t(t,n,i){var r,o,a,s;return(n=n[i])?(a=new Date(t).getUTCFullYear(),n=jQuery.grep(n,function(e){var t=e[0],n=e[1];return t<=a&&(n>=a||t==a&&"only"==n||"max"==n)}),n.push(t),n.sort(function(t,n){return"number"!=typeof t&&(t=+e(a,t)),"number"!=typeof n&&(n=+e(a,n)),t-n}),s=n[jQuery.inArray(t,n)-1]||n[n.length-1],isNaN(s)?s:null):(r=i.split(":"),o=0,r.length>1&&(o=60*r[0]+ +r[1]),[-1e6,"max","-","Jan",1,[0,0,0],o,"-"])}function n(e,t,n){var i,r,o,a=t[n];if("string"==typeof a&&(a=t[a]),!a)throw Error('Timezone "'+n+'" is either incorrect, or kendo.timezones.min.js is not included.');for(i=a.length-1;i>=0&&(r=a[i][3],!(r&&e>r));i--);if(o=a[i+1],!o)throw Error('Timezone "'+n+'" not found on '+e+".");return o}function i(e,i,r,o){typeof e!=Oe&&(e=Date.UTC(e.getFullYear(),e.getMonth(),e.getDate(),e.getHours(),e.getMinutes(),e.getSeconds(),e.getMilliseconds()));var a=n(e,i,o);return{zone:a,rule:t(e,r,a[1])}}function r(e,t){var n,r,o;return"Etc/UTC"==t||"Etc/GMT"==t?0:(n=i(e,this.zones,this.rules,t),r=n.zone,o=n.rule,ve.parseFloat(o?r[0]-o[6]:r[0]))}function o(e,t){var n=i(e,this.zones,this.rules,t),r=n.zone,o=n.rule,a=r[2];return a.indexOf("/")>=0?a.split("/")[o&&+o[6]?1:0]:a.indexOf("%s")>=0?a.replace("%s",o&&"-"!=o[7]?o[7]:""):a}function a(e,t,n){var i,r;return typeof t==Pe&&(t=this.offset(e,t)),typeof n==Pe&&(n=this.offset(e,n)),i=e.getTimezoneOffset(),e=new Date(e.getTime()+6e4*(t-n)),r=e.getTimezoneOffset(),new Date(e.getTime()+6e4*(r-i))}function s(e,t){return this.convert(e,e.getTimezoneOffset(),t)}function l(e,t){return this.convert(e,t,e.getTimezoneOffset())}function u(e){return this.apply(new Date(e),"Etc/UTC")}var c={Jan:0,Feb:1,Mar:2,Apr:3,May:4,Jun:5,Jul:6,Aug:7,Sep:8,Oct:9,Nov:10,Dec:11},d={Sun:0,Mon:1,Tue:2,Wed:3,Thu:4,Fri:5,Sat:6};return{zones:{},rules:{},offset:r,convert:a,apply:s,remove:l,abbr:o,toLocalDate:u}}(),ve.date=function(){function e(e,t){return 0===t&&23===e.getHours()&&(e.setHours(e.getHours()+2),!0)}function t(t,n,i){var r=t.getHours();i=i||1,n=(n-t.getDay()+7*i)%7,t.setDate(t.getDate()+n),e(t,r)}function n(e,n,i){return e=new Date(e),t(e,n,i),e}function i(e){return new Date(e.getFullYear(),e.getMonth(),1)}function r(e){var t=new Date(e.getFullYear(),e.getMonth()+1,0),n=i(e),r=Math.abs(t.getTimezoneOffset()-n.getTimezoneOffset());return r&&t.setHours(n.getHours()+r/60),t}function o(e,t){return 1!==t?p(n(e,t,-1),4):p(e,4-(e.getDay()||7))}function a(e,t){var n=new Date(e.getFullYear(),0,1,(-6)),i=o(e,t),r=i.getTime()-n.getTime(),a=Math.floor(r/w);return 1+Math.floor(a/7)}function s(e,t){var n=p(e,-7),i=p(e,7),r=a(e,t);return 0===r?a(n,t)+1:53===r&&a(i,t)>1?1:r}function l(t){return t=new Date(t.getFullYear(),t.getMonth(),t.getDate(),0,0,0),e(t,0),t}function u(e){return Date.UTC(e.getFullYear(),e.getMonth(),e.getDate(),e.getHours(),e.getMinutes(),e.getSeconds(),e.getMilliseconds())}function c(e){return e.getTime()-l(e)}function d(e,t,n){var i,r=c(t),o=c(n);return!e||r==o||(t>=n&&(n+=w),i=c(e),r>i&&(i+=w),o<r&&(o+=w),i>=r&&i<=o)}function f(e,t,n){var i,r=t.getTime(),o=n.getTime();return r>=o&&(o+=w),i=e.getTime(),i>=r&&i<=o}function p(t,n){var i=t.getHours();return t=new Date(t),h(t,n*w),e(t,i),t}function h(e,t,n){var i,r=e.getTimezoneOffset();e.setTime(e.getTime()+t),n||(i=e.getTimezoneOffset()-r,e.setTime(e.getTime()+i*b))}function m(t,n){return t=new Date(ve.date.getDate(t).getTime()+ve.date.getMilliseconds(n)),e(t,n.getHours()),t}function g(){return l(new Date)}function v(e){return l(e).getTime()==g().getTime()}function y(e){var t=new Date(1980,1,1,0,0,0);return e&&t.setHours(e.getHours(),e.getMinutes(),e.getSeconds(),e.getMilliseconds()),t}var b=6e4,w=864e5;return{adjustDST:e,dayOfWeek:n,setDayOfWeek:t,getDate:l,isInDateRange:f,isInTimeRange:d,isToday:v,nextDay:function(e){return p(e,1)},previousDay:function(e){return p(e,-1)},toUtcTime:u,MS_PER_DAY:w,MS_PER_HOUR:60*b,MS_PER_MINUTE:b,setTime:h,setHours:m,addDays:p,today:g,toInvariantTime:y,firstDayOfMonth:i,lastDayOfMonth:r,weekInYear:s,getMilliseconds:c}}(),ve.stripWhitespace=function(e){var t,n,i;if(document.createNodeIterator)for(t=document.createNodeIterator(e,NodeFilter.SHOW_TEXT,function(t){return t.parentNode==e?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_REJECT},!1);t.nextNode();)t.referenceNode&&!t.referenceNode.textContent.trim()&&t.referenceNode.parentNode.removeChild(t.referenceNode);else for(n=0;n<e.childNodes.length;n++)i=e.childNodes[n],3!=i.nodeType||/\S/.test(i.nodeValue)||(e.removeChild(i),n--),1==i.nodeType&&ve.stripWhitespace(i)},me=t.requestAnimationFrame||t.webkitRequestAnimationFrame||t.mozRequestAnimationFrame||t.oRequestAnimationFrame||t.msRequestAnimationFrame||function(e){setTimeout(e,1e3/60)},ve.animationFrame=function(e){me.call(t,e)},ge=[],ve.queueAnimation=function(e){ge[ge.length]=e,1===ge.length&&ve.runNextAnimation()},ve.runNextAnimation=function(){ve.animationFrame(function(){ge[0]&&(ge.shift()(),ge[0]&&ve.runNextAnimation())})},ve.parseQueryStringParams=function(e){for(var t=e.split("?")[1]||"",n={},i=t.split(/&|=/),r=i.length,o=0;o<r;o+=2)""!==i[o]&&(n[decodeURIComponent(i[o])]=decodeURIComponent(i[o+1]));return n},ve.elementUnderCursor=function(e){if(n!==e.x.client)return document.elementFromPoint(e.x.client,e.y.client)},ve.wheelDeltaY=function(e){var t,i=e.originalEvent,r=i.wheelDeltaY;return i.wheelDelta?(r===n||r)&&(t=i.wheelDelta):i.detail&&i.axis===i.VERTICAL_AXIS&&(t=10*-i.detail),t},ve.throttle=function(e,t){var i,r,o=0;return!t||t<=0?e:(r=function(){function r(){e.apply(a,l),o=+new Date}var a=this,s=+new Date-o,l=arguments;return o?(i&&clearTimeout(i),s>t?r():i=setTimeout(r,t-s),n):r()},r.cancel=function(){clearTimeout(i)},r)},ve.caret=function(t,i,r){var o,a,s,l,u,c=i!==n;if(r===n&&(r=i),t[0]&&(t=t[0]),!c||!t.disabled){try{t.selectionStart!==n?c?(t.focus(),a=Te.mobileOS,a.wp||a.android?setTimeout(function(){t.setSelectionRange(i,r)},0):t.setSelectionRange(i,r)):i=[t.selectionStart,t.selectionEnd]:document.selection&&(e(t).is(":visible")&&t.focus(),o=t.createTextRange(),c?(o.collapse(!0),o.moveStart("character",i),o.moveEnd("character",r-i),o.select()):(s=o.duplicate(),o.moveToBookmark(document.selection.createRange().getBookmark()),s.setEndPoint("EndToStart",o),l=s.text.length,u=l+o.text.length,i=[l,u]))}catch(d){i=[]}return i}},ve.compileMobileDirective=function(e,n){var i=t.angular;return e.attr("data-"+ve.ns+"role",e[0].tagName.toLowerCase().replace("kendo-mobile-","").replace("-","")),i.element(e).injector().invoke(["$compile",function(t){t(e)(n),/^\$(digest|apply)$/.test(n.$$phase)||n.$digest()}]),ve.widgetInstance(e,ve.mobile.ui)},ve.antiForgeryTokens=function(){var t={},i=e("meta[name=csrf-token],meta[name=_csrf]").attr("content"),r=e("meta[name=csrf-param],meta[name=_csrf_header]").attr("content");return e("input[name^='__RequestVerificationToken']").each(function(){t[this.name]=this.value}),r!==n&&i!==n&&(t[r]=i),t},ve.cycleForm=function(e){function t(e){var t=ve.widgetInstance(e);t&&t.focus?t.focus():e.focus()}var n=e.find("input, .k-widget").first(),i=e.find("button, .k-button").last();i.on("keydown",function(e){e.keyCode!=ve.keys.TAB||e.shiftKey||(e.preventDefault(),t(n))}),n.on("keydown",function(e){e.keyCode==ve.keys.TAB&&e.shiftKey&&(e.preventDefault(),t(i))})},function(){function n(t,n,i,r){var o,a,s=e("<form>").attr({action:i,method:"POST",target:r}),l=ve.antiForgeryTokens();l.fileName=n,o=t.split(";base64,"),l.contentType=o[0].replace("data:",""),l.base64=o[1];for(a in l)l.hasOwnProperty(a)&&e("<input>").attr({value:l[a],name:a,type:"hidden"}).appendTo(s);s.appendTo("body").submit().remove()}function i(e,t){var n,i,r,o,a,s=e;if("string"==typeof e){for(n=e.split(";base64,"),i=n[0],r=atob(n[1]),o=new Uint8Array(r.length),a=0;a<r.length;a++)o[a]=r.charCodeAt(a);s=new Blob([o.buffer],{type:i})}navigator.msSaveBlob(s,t)}function r(e,n){t.Blob&&e instanceof Blob&&(e=URL.createObjectURL(e)),o.download=n,o.href=e;var i=document.createEvent("MouseEvents");i.initMouseEvent("click",!0,!1,t,0,0,0,0,0,!1,!1,!1,!1,0,null),o.dispatchEvent(i),setTimeout(function(){URL.revokeObjectURL(e)})}var o=document.createElement("a"),a="download"in o&&!ve.support.browser.edge;ve.saveAs=function(e){var t=n;e.forceProxy||(a?t=r:navigator.msSaveBlob&&(t=i)),t(e.dataURI,e.fileName,e.proxyURL,e.proxyTarget)}}(),ve.proxyModelSetters=function(e){var t={};return Object.keys(e||{}).forEach(function(n){Object.defineProperty(t,n,{get:function(){return e[n]},set:function(t){e[n]=t,e.dirty=!0}})}),t}}(jQuery,window),window.kendo},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("kendo.userevents.min",["kendo.core.min"],e)}(function(){return function(e,t){function n(e,t){var n=e.x.location,i=e.y.location,r=t.x.location,o=t.y.location,a=n-r,s=i-o;return{center:{x:(n+r)/2,y:(i+o)/2},distance:Math.sqrt(a*a+s*s)}}function i(e){var t,n,i,r=[],o=e.originalEvent,s=e.currentTarget,l=0;if(e.api)r.push({id:2,event:e,target:e.target,currentTarget:e.target,location:e,type:"api"});else if(e.type.match(/touch/))for(n=o?o.changedTouches:[],t=n.length;l<t;l++)i=n[l],r.push({location:i,event:e,target:i.target,currentTarget:s,id:i.identifier,type:"touch"});else r.push(a.pointers||a.msPointers?{location:o,event:e,target:e.target,currentTarget:s,id:o.pointerId,type:"pointer"}:{id:1,event:e,target:e.target,currentTarget:s,location:e,type:"mouse"});return r}function r(e){for(var t=o.eventMap.up.split(" "),n=0,i=t.length;n<i;n++)e(t[n])}var o=window.kendo,a=o.support,s=o.Class,l=o.Observable,u=e.now,c=e.extend,d=a.mobileOS,f=d&&d.android,p=800,h=a.browser.msie?5:0,m="press",g="hold",v="select",y="start",b="move",w="end",k="cancel",_="tap",x="release",M="gesturestart",T="gesturechange",S="gestureend",E="gesturetap",z={api:0,touch:0,mouse:9,pointer:9},D=!a.touch||a.mouseAndTouchPresent,C=s.extend({init:function(e,t){var n=this;n.axis=e,n._updateLocationData(t),n.startLocation=n.location,n.velocity=n.delta=0,n.timeStamp=u()},move:function(e){var t=this,n=e["page"+t.axis],i=u(),r=i-t.timeStamp||1;!n&&f||(t.delta=n-t.location,t._updateLocationData(e),t.initialDelta=n-t.startLocation,t.velocity=t.delta/r,t.timeStamp=i)},_updateLocationData:function(e){var t=this,n=t.axis;t.location=e["page"+n],t.client=e["client"+n],t.screen=e["screen"+n]}}),P=s.extend({init:function(e,t,n){c(this,{x:new C("X",n.location),y:new C("Y",n.location),type:n.type,useClickAsTap:e.useClickAsTap,threshold:e.threshold||z[n.type],userEvents:e,target:t,currentTarget:n.currentTarget,initialTouch:n.target,id:n.id,pressEvent:n,_moved:!1,_finished:!1})},press:function(){this._holdTimeout=setTimeout(e.proxy(this,"_hold"),this.userEvents.minHold),this._trigger(m,this.pressEvent)},_hold:function(){this._trigger(g,this.pressEvent)},move:function(e){var t=this;if(!t._finished){if(t.x.move(e.location),t.y.move(e.location),!t._moved){if(t._withinIgnoreThreshold())return;if(O.current&&O.current!==t.userEvents)return t.dispose();t._start(e)}t._finished||t._trigger(b,e)}},end:function(e){this.endTime=u(),this._finished||(this._finished=!0,this._trigger(x,e),this._moved?this._trigger(w,e):this.useClickAsTap||this._trigger(_,e),clearTimeout(this._holdTimeout),this.dispose())},dispose:function(){var t=this.userEvents,n=t.touches;this._finished=!0,this.pressEvent=null,clearTimeout(this._holdTimeout),n.splice(e.inArray(this,n),1)},skip:function(){this.dispose()},cancel:function(){this.dispose()},isMoved:function(){return this._moved},_start:function(e){clearTimeout(this._holdTimeout),this.startTime=u(),this._moved=!0,this._trigger(y,e)},_trigger:function(e,t){var n=this,i=t.event,r={touch:n,x:n.x,y:n.y,target:n.target,event:i};n.userEvents.notify(e,r)&&i.preventDefault()},_withinIgnoreThreshold:function(){var e=this.x.initialDelta,t=this.y.initialDelta;return Math.sqrt(e*e+t*t)<=this.threshold}}),O=l.extend({init:function(t,n){var i,s,u,d=this,f=o.guid();n=n||{},i=d.filter=n.filter,d.threshold=n.threshold||h,d.minHold=n.minHold||p,d.touches=[],d._maxTouches=n.multiTouch?2:1,d.allowSelection=n.allowSelection,d.captureUpIfMoved=n.captureUpIfMoved,d.useClickAsTap=!n.fastTap&&!a.delayedClick(),d.eventNS=f,t=e(t).handler(d),l.fn.init.call(d),c(d,{element:t,surface:e(n.global&&D?t[0].ownerDocument.documentElement:n.surface||t),stopPropagation:n.stopPropagation,pressed:!1}),d.surface.handler(d).on(o.applyEventMap("move",f),"_move").on(o.applyEventMap("up cancel",f),"_end"),t.on(o.applyEventMap("down",f),i,"_start"),d.useClickAsTap&&t.on(o.applyEventMap("click",f),i,"_click"),(a.pointers||a.msPointers)&&(a.browser.version<11?t.css("-ms-touch-action","pinch-zoom double-tap-zoom"):t.css("touch-action",n.touchAction||"none")),n.preventDragEvent&&t.on(o.applyEventMap("dragstart",f),o.preventDefault),t.on(o.applyEventMap("mousedown",f),i,{root:t},"_select"),d.captureUpIfMoved&&a.eventCapture&&(s=d.surface[0],u=e.proxy(d.preventIfMoving,d),r(function(e){s.addEventListener(e,u,!0)})),d.bind([m,g,_,y,b,w,x,k,M,T,S,E,v],n)},preventIfMoving:function(e){this._isMoved()&&e.preventDefault()},destroy:function(){var e,t=this;t._destroyed||(t._destroyed=!0,t.captureUpIfMoved&&a.eventCapture&&(e=t.surface[0],r(function(n){e.removeEventListener(n,t.preventIfMoving)})),t.element.kendoDestroy(t.eventNS),t.surface.kendoDestroy(t.eventNS),t.element.removeData("handler"),t.surface.removeData("handler"),t._disposeAll(),t.unbind(),delete t.surface,delete t.element,delete t.currentTarget)},capture:function(){O.current=this},cancel:function(){this._disposeAll(),this.trigger(k)},notify:function(e,t){var i=this,r=i.touches;if(this._isMultiTouch()){switch(e){case b:e=T;break;case w:e=S;break;case _:e=E}c(t,{touches:r},n(r[0],r[1]))}return this.trigger(e,c(t,{type:e}))},press:function(e,t,n){this._apiCall("_start",e,t,n)},move:function(e,t){this._apiCall("_move",e,t)},end:function(e,t){this._apiCall("_end",e,t)},_isMultiTouch:function(){return this.touches.length>1},_maxTouchesReached:function(){return this.touches.length>=this._maxTouches},_disposeAll:function(){for(var e=this.touches;e.length>0;)e.pop().dispose()},_isMoved:function(){return e.grep(this.touches,function(e){return e.isMoved()}).length},_select:function(e){this.allowSelection&&!this.trigger(v,{event:e})||e.preventDefault()},_start:function(t){var n,r,o=this,a=0,s=o.filter,l=i(t),u=l.length,c=t.which;if(!(c&&c>1||o._maxTouchesReached()))for(O.current=null,o.currentTarget=t.currentTarget,o.stopPropagation&&t.stopPropagation();a<u&&!o._maxTouchesReached();a++)r=l[a],n=s?e(r.currentTarget):o.element,n.length&&(r=new P(o,n,r),o.touches.push(r),r.press(),o._isMultiTouch()&&o.notify("gesturestart",{}))},_move:function(e){this._eachTouch("move",e)},_end:function(e){this._eachTouch("end",e)},_click:function(t){var n={touch:{initialTouch:t.target,target:e(t.currentTarget),endTime:u(),x:{location:t.pageX,client:t.clientX},y:{location:t.pageY,client:t.clientY}},x:t.pageX,y:t.pageY,target:e(t.currentTarget),event:t,type:"tap"};this.trigger("tap",n)&&t.preventDefault()},_eachTouch:function(e,t){var n,r,o,a,s=this,l={},u=i(t),c=s.touches;for(n=0;n<c.length;n++)r=c[n],l[r.id]=r;for(n=0;n<u.length;n++)o=u[n],a=l[o.id],a&&a[e](o)},_apiCall:function(t,n,i,r){this[t]({api:!0,pageX:n,pageY:i,clientX:n,clientY:i,target:e(r||this.element)[0],stopPropagation:e.noop,preventDefault:e.noop})}});O.defaultThreshold=function(e){h=e},O.minHold=function(e){p=e},o.getTouches=i,o.touchDelta=n,o.UserEvents=O}(window.kendo.jQuery),window.kendo},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("kendo.draganddrop.min",["kendo.core.min","kendo.userevents.min"],e)}(function(){return function(e,t){function n(t,n){try{return e.contains(t,n)||t==n}catch(i){return!1}}function i(e,t){return parseInt(e.css(t),10)||0}function r(e,t){return Math.min(Math.max(e,t.min),t.max)}function o(e,t){var n=z(e),r=y._outerWidth,o=y._outerHeight,a=n.left+i(e,"borderLeftWidth")+i(e,"paddingLeft"),s=n.top+i(e,"borderTopWidth")+i(e,"paddingTop"),l=a+e.width()-r(t,!0),u=s+e.height()-o(t,!0);return{x:{min:a,max:l},y:{min:s,max:u}}}function a(n,i,r){for(var o,a,s=0,l=i&&i.length,u=r&&r.length;n&&n.parentNode;){for(s=0;s<l;s++)if(o=i[s],o.element[0]===n)return{target:o,targetElement:n};for(s=0;s<u;s++)if(a=r[s],e.contains(a.element[0],n)&&b.matchesSelector.call(n,a.options.filter))return{target:a,targetElement:n};n=n.parentNode}return t}function s(e,t){var n,i=t.options.group,r=e[i];if(x.fn.destroy.call(t),r.length>1){for(n=0;n<r.length;n++)if(r[n]==t){r.splice(n,1);break}}else r.length=0,delete e[i]}function l(e){var t,n,i,r=u()[0];return e[0]===r?(n=r.scrollTop,i=r.scrollLeft,{top:n,left:i,bottom:n+k.height(),right:i+k.width()}):(t=e.offset(),t.bottom=t.top+e.height(),t.right=t.left+e.width(),t)}function u(){return e(y.support.browser.chrome?w.body:w.documentElement)}function c(t){var n,i=u();if(!t||t===w.body||t===w.documentElement)return i;for(n=e(t)[0];n&&!y.isScrollable(n)&&n!==w.body;)n=n.parentNode;return n===w.body?i:e(n)}function d(e,t,n){var i={x:0,y:0},r=50;return e-n.left<r?i.x=-(r-(e-n.left)):n.right-e<r&&(i.x=r-(n.right-e)),t-n.top<r?i.y=-(r-(t-n.top)):n.bottom-t<r&&(i.y=r-(n.bottom-t)),i}var f,p,h,m,g,v,y=window.kendo,b=y.support,w=window.document,k=e(window),_=y.Class,x=y.ui.Widget,M=y.Observable,T=y.UserEvents,S=e.proxy,E=e.extend,z=y.getOffset,D={},C={},P={},O=y.elementUnderCursor,$="keyup",A="change",H="dragstart",N="hold",L="drag",I="dragend",F="dragcancel",V="hintDestroyed",R="dragenter",W="dragleave",B="drop",U=M.extend({init:function(t,n){var i=this,r=t[0];i.capture=!1,r.addEventListener?(e.each(y.eventMap.down.split(" "),function(){r.addEventListener(this,S(i._press,i),!0)}),e.each(y.eventMap.up.split(" "),function(){r.addEventListener(this,S(i._release,i),!0)})):(e.each(y.eventMap.down.split(" "),function(){r.attachEvent(this,S(i._press,i))}),e.each(y.eventMap.up.split(" "),function(){r.attachEvent(this,S(i._release,i))})),M.fn.init.call(i),i.bind(["press","release"],n||{})},captureNext:function(){this.capture=!0},cancelCapture:function(){this.capture=!1},_press:function(e){var t=this;t.trigger("press"),t.capture&&e.preventDefault()},_release:function(e){var t=this;t.trigger("release"),t.capture&&(e.preventDefault(),t.cancelCapture())}}),j=M.extend({init:function(t){var n=this;M.fn.init.call(n),n.forcedEnabled=!1,e.extend(n,t),n.scale=1,n.horizontal?(n.measure="offsetWidth",n.scrollSize="scrollWidth",n.axis="x"):(n.measure="offsetHeight",n.scrollSize="scrollHeight",n.axis="y")},makeVirtual:function(){e.extend(this,{virtual:!0,forcedEnabled:!0,_virtualMin:0,_virtualMax:0})},virtualSize:function(e,t){this._virtualMin===e&&this._virtualMax===t||(this._virtualMin=e,this._virtualMax=t,this.update())},outOfBounds:function(e){return e>this.max||e<this.min},forceEnabled:function(){this.forcedEnabled=!0},getSize:function(){return this.container[0][this.measure]},getTotal:function(){return this.element[0][this.scrollSize]},rescale:function(e){this.scale=e},update:function(e){var t=this,n=t.virtual?t._virtualMax:t.getTotal(),i=n*t.scale,r=t.getSize();(0!==n||t.forcedEnabled)&&(t.max=t.virtual?-t._virtualMin:0,t.size=r,t.total=i,t.min=Math.min(t.max,r-i),t.minScale=r/n,t.centerOffset=(i-r)/2,t.enabled=t.forcedEnabled||i>r,e||t.trigger(A,t))}}),q=M.extend({init:function(e){var t=this;M.fn.init.call(t),t.x=new j(E({horizontal:!0},e)),t.y=new j(E({horizontal:!1},e)),t.container=e.container,t.forcedMinScale=e.minScale,t.maxScale=e.maxScale||100,t.bind(A,e)},rescale:function(e){this.x.rescale(e),this.y.rescale(e),this.refresh()},centerCoordinates:function(){return{x:Math.min(0,-this.x.centerOffset),y:Math.min(0,-this.y.centerOffset)}},refresh:function(){var e=this;e.x.update(),e.y.update(),e.enabled=e.x.enabled||e.y.enabled,e.minScale=e.forcedMinScale||Math.min(e.x.minScale,e.y.minScale),e.fitScale=Math.max(e.x.minScale,e.y.minScale),e.trigger(A)}}),Y=M.extend({init:function(e){var t=this;E(t,e),M.fn.init.call(t)},outOfBounds:function(){return this.dimension.outOfBounds(this.movable[this.axis])},dragMove:function(e){var t=this,n=t.dimension,i=t.axis,r=t.movable,o=r[i]+e;n.enabled&&((o<n.min&&e<0||o>n.max&&e>0)&&(e*=t.resistance),r.translateAxis(i,e),t.trigger(A,t))}}),J=_.extend({init:function(t){var n,i,r,o,a=this;E(a,{elastic:!0},t),r=a.elastic?.5:0,o=a.movable,a.x=n=new Y({axis:"x",dimension:a.dimensions.x,resistance:r,movable:o}),a.y=i=new Y({axis:"y",dimension:a.dimensions.y,resistance:r,movable:o}),a.userEvents.bind(["press","move","end","gesturestart","gesturechange"],{gesturestart:function(e){a.gesture=e,a.offset=a.dimensions.container.offset()},press:function(t){e(t.event.target).closest("a").is("[data-navigate-on-press=true]")&&t.sender.cancel()},gesturechange:function(e){var t,r,s,l=a.gesture,u=l.center,c=e.center,d=e.distance/l.distance,f=a.dimensions.minScale,p=a.dimensions.maxScale;o.scale<=f&&d<1&&(d+=.8*(1-d)),o.scale*d>=p&&(d=p/o.scale),r=o.x+a.offset.left,s=o.y+a.offset.top,t={x:(r-u.x)*d+c.x-r,y:(s-u.y)*d+c.y-s},o.scaleWith(d),n.dragMove(t.x),i.dragMove(t.y),a.dimensions.rescale(o.scale),a.gesture=e,e.preventDefault()},move:function(e){e.event.target.tagName.match(/textarea|input/i)||(n.dimension.enabled||i.dimension.enabled?(n.dragMove(e.x.delta),i.dragMove(e.y.delta),e.preventDefault()):e.touch.skip())},end:function(e){e.preventDefault()}})}}),G=b.transitions.prefix+"Transform";p=b.hasHW3D?function(e,t,n){return"translate3d("+e+"px,"+t+"px,0) scale("+n+")"}:function(e,t,n){return"translate("+e+"px,"+t+"px) scale("+n+")"},h=M.extend({init:function(t){var n=this;M.fn.init.call(n),n.element=e(t),n.element[0].style.webkitTransformOrigin="left top",n.x=0,n.y=0,n.scale=1,n._saveCoordinates(p(n.x,n.y,n.scale))},translateAxis:function(e,t){this[e]+=t,this.refresh()},scaleTo:function(e){this.scale=e,this.refresh()},scaleWith:function(e){this.scale*=e,this.refresh()},translate:function(e){this.x+=e.x,this.y+=e.y,this.refresh()},moveAxis:function(e,t){this[e]=t,this.refresh()},moveTo:function(e){E(this,e),this.refresh()},refresh:function(){
-var e,t=this,n=t.x,i=t.y;t.round&&(n=Math.round(n),i=Math.round(i)),e=p(n,i,t.scale),e!=t.coordinates&&(y.support.browser.msie&&y.support.browser.version<10?(t.element[0].style.position="absolute",t.element[0].style.left=t.x+"px",t.element[0].style.top=t.y+"px"):t.element[0].style[G]=e,t._saveCoordinates(e),t.trigger(A))},_saveCoordinates:function(e){this.coordinates=e}}),m=x.extend({init:function(e,t){var n,i=this;x.fn.init.call(i,e,t),n=i.options.group,n in C?C[n].push(i):C[n]=[i]},events:[R,W,B],options:{name:"DropTarget",group:"default"},destroy:function(){s(C,this)},_trigger:function(e,t){var n=this,i=D[n.options.group];if(i)return n.trigger(e,E({},t.event,{draggable:i,dropTarget:t.dropTarget}))},_over:function(e){this._trigger(R,e)},_out:function(e){this._trigger(W,e)},_drop:function(e){var t=this,n=D[t.options.group];n&&(n.dropped=!t._trigger(B,e))}}),m.destroyGroup=function(e){var t,n=C[e]||P[e];if(n){for(t=0;t<n.length;t++)x.fn.destroy.call(n[t]);n.length=0,delete C[e],delete P[e]}},m._cache=C,g=m.extend({init:function(e,t){var n,i=this;x.fn.init.call(i,e,t),n=i.options.group,n in P?P[n].push(i):P[n]=[i]},destroy:function(){s(P,this)},options:{name:"DropTargetArea",group:"default",filter:null}}),v=x.extend({init:function(e,t){var n=this;x.fn.init.call(n,e,t),n._activated=!1,n.userEvents=new T(n.element,{global:!0,allowSelection:!0,filter:n.options.filter,threshold:n.options.distance,start:S(n._start,n),hold:S(n._hold,n),move:S(n._drag,n),end:S(n._end,n),cancel:S(n._cancel,n),select:S(n._select,n)}),n._afterEndHandler=S(n._afterEnd,n),n._captureEscape=S(n._captureEscape,n)},events:[N,H,L,I,F,V],options:{name:"Draggable",distance:y.support.touch?0:5,group:"default",cursorOffset:null,axis:null,container:null,filter:null,ignore:null,holdToDrag:!1,autoScroll:!1,dropped:!1},cancelHold:function(){this._activated=!1},_captureEscape:function(e){var t=this;e.keyCode===y.keys.ESC&&(t._trigger(F,{event:e}),t.userEvents.cancel())},_updateHint:function(t){var n,i=this,o=i.options,a=i.boundaries,s=o.axis,l=i.options.cursorOffset;l?n={left:t.x.location+l.left,top:t.y.location+l.top}:(i.hintOffset.left+=t.x.delta,i.hintOffset.top+=t.y.delta,n=e.extend({},i.hintOffset)),a&&(n.top=r(n.top,a.y),n.left=r(n.left,a.x)),"x"===s?delete n.top:"y"===s&&delete n.left,i.hint.css(n)},_shouldIgnoreTarget:function(t){var n=this.options.ignore;return n&&e(t).is(n)},_select:function(e){this._shouldIgnoreTarget(e.event.target)||e.preventDefault()},_start:function(n){var i,r=this,a=r.options,s=a.container,l=a.hint;return this._shouldIgnoreTarget(n.touch.initialTouch)||a.holdToDrag&&!r._activated?(r.userEvents.cancel(),t):(r.currentTarget=n.target,r.currentTargetOffset=z(r.currentTarget),l&&(r.hint&&r.hint.stop(!0,!0).remove(),r.hint=y.isFunction(l)?e(l.call(r,r.currentTarget)):l,i=z(r.currentTarget),r.hintOffset=i,r.hint.css({position:"absolute",zIndex:2e4,left:i.left,top:i.top}).appendTo(w.body),r.angular("compile",function(){r.hint.removeAttr("ng-repeat");for(var t=e(n.target);!t.data("$$kendoScope")&&t.length;)t=t.parent();return{elements:r.hint.get(),scopeFrom:t.data("$$kendoScope")}})),D[a.group]=r,r.dropped=!1,s&&(r.boundaries=o(s,r.hint)),e(w).on($,r._captureEscape),r._trigger(H,n)&&(r.userEvents.cancel(),r._afterEnd()),r.userEvents.capture(),t)},_hold:function(e){this.currentTarget=e.target,this._trigger(N,e)?this.userEvents.cancel():this._activated=!0},_drag:function(t){var n,i;t.preventDefault(),n=this._elementUnderCursor(t),this.options.autoScroll&&this._cursorElement!==n&&(this._scrollableParent=c(n),this._cursorElement=n),this._lastEvent=t,this._processMovement(t,n),this.options.autoScroll&&this._scrollableParent[0]&&(i=d(t.x.location,t.y.location,l(this._scrollableParent)),this._scrollCompenstation=e.extend({},this.hintOffset),this._scrollVelocity=i,0===i.y&&0===i.x?(clearInterval(this._scrollInterval),this._scrollInterval=null):this._scrollInterval||(this._scrollInterval=setInterval(e.proxy(this,"_autoScroll"),50))),this.hint&&this._updateHint(t)},_processMovement:function(n,i){this._withDropTarget(i,function(i,r){if(!i)return f&&(f._trigger(W,E(n,{dropTarget:e(f.targetElement)})),f=null),t;if(f){if(r===f.targetElement)return;f._trigger(W,E(n,{dropTarget:e(f.targetElement)}))}i._trigger(R,E(n,{dropTarget:e(r)})),f=E(i,{targetElement:r})}),this._trigger(L,E(n,{dropTarget:f,elementUnderCursor:i}))},_autoScroll:function(){var e,t,n,i,r,o,a,s,l=this._scrollableParent[0],c=this._scrollVelocity,d=this._scrollCompenstation;l&&(e=this._elementUnderCursor(this._lastEvent),this._processMovement(this._lastEvent,e),i=l===u()[0],i?(t=w.body.scrollHeight>k.height(),n=w.body.scrollWidth>k.width()):(t=l.offsetHeight<=l.scrollHeight,n=l.offsetWidth<=l.scrollWidth),r=l.scrollTop+c.y,o=t&&r>0&&r<l.scrollHeight,a=l.scrollLeft+c.x,s=n&&a>0&&a<l.scrollWidth,o&&(l.scrollTop+=c.y),s&&(l.scrollLeft+=c.x),this.hint&&i&&(s||o)&&(o&&(d.top+=c.y),s&&(d.left+=c.x),this.hint.css(d)))},_end:function(t){this._withDropTarget(this._elementUnderCursor(t),function(n,i){n&&(n._drop(E({},t,{dropTarget:e(i)})),f=null)}),this._cancel(this._trigger(I,t))},_cancel:function(e){var t=this;t._scrollableParent=null,this._cursorElement=null,clearInterval(this._scrollInterval),t._activated=!1,t.hint&&!t.dropped?setTimeout(function(){t.hint.stop(!0,!0),e?t._afterEndHandler():t.hint.animate(t.currentTargetOffset,"fast",t._afterEndHandler)},0):t._afterEnd()},_trigger:function(e,t){var n=this;return n.trigger(e,E({},t.event,{x:t.x,y:t.y,currentTarget:n.currentTarget,initialTarget:t.touch?t.touch.initialTouch:null,dropTarget:t.dropTarget,elementUnderCursor:t.elementUnderCursor}))},_elementUnderCursor:function(e){var t=O(e),i=this.hint;return i&&n(i[0],t)&&(i.hide(),t=O(e),t||(t=O(e)),i.show()),t},_withDropTarget:function(e,t){var n,i=this.options.group,r=C[i],o=P[i];(r&&r.length||o&&o.length)&&(n=a(e,r,o),n?t(n.target,n.targetElement):t())},destroy:function(){var e=this;x.fn.destroy.call(e),e._afterEnd(),e.userEvents.destroy(),this._scrollableParent=null,this._cursorElement=null,clearInterval(this._scrollInterval),e.currentTarget=null},_afterEnd:function(){var t=this;t.hint&&t.hint.remove(),delete D[t.options.group],t.trigger("destroy"),t.trigger(V),e(w).off($,t._captureEscape)}}),y.ui.plugin(m),y.ui.plugin(g),y.ui.plugin(v),y.TapCapture=U,y.containerBoundaries=o,E(y.ui,{Pane:J,PaneDimensions:q,Movable:h}),y.ui.Draggable.utils={autoScrollVelocity:d,scrollableViewPort:l,findScrollableParent:c}}(window.kendo.jQuery),window.kendo},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("kendo.resizable.min",["kendo.core.min","kendo.draganddrop.min"],e)}(function(){return function(e,t){var n=window.kendo,i=n.ui,r=i.Widget,o=e.proxy,a=n.isFunction,s=e.extend,l="horizontal",u="vertical",c="start",d="resize",f="resizeend",p=r.extend({init:function(e,t){var n=this;r.fn.init.call(n,e,t),n.orientation=n.options.orientation.toLowerCase()!=u?l:u,n._positionMouse=n.orientation==l?"x":"y",n._position=n.orientation==l?"left":"top",n._sizingDom=n.orientation==l?"outerWidth":"outerHeight",n.draggable=new i.Draggable(t.draggableElement||e,{distance:1,filter:t.handle,drag:o(n._resize,n),dragcancel:o(n._cancel,n),dragstart:o(n._start,n),dragend:o(n._stop,n)}),n.userEvents=n.draggable.userEvents},events:[d,f,c],options:{name:"Resizable",orientation:l},resize:function(){},_max:function(e){var n=this,i=n.hint?n.hint[n._sizingDom]():0,r=n.options.max;return a(r)?r(e):r!==t?n._initialElementPosition+r-i:r},_min:function(e){var n=this,i=n.options.min;return a(i)?i(e):i!==t?n._initialElementPosition+i:i},_start:function(t){var n=this,i=n.options.hint,r=e(t.currentTarget);n._initialElementPosition=r.position()[n._position],n._initialMousePosition=t[n._positionMouse].startLocation,i&&(n.hint=a(i)?e(i(r)):i,n.hint.css({position:"absolute"}).css(n._position,n._initialElementPosition).appendTo(n.element)),n.trigger(c,t),n._maxPosition=n._max(t),n._minPosition=n._min(t),e(document.body).css("cursor",r.css("cursor"))},_resize:function(e){var n,i=this,r=i._maxPosition,o=i._minPosition,a=i._initialElementPosition+(e[i._positionMouse].location-i._initialMousePosition);n=o!==t?Math.max(o,a):a,i.position=n=r!==t?Math.min(r,n):n,i.hint&&i.hint.toggleClass(i.options.invalidClass||"",n==r||n==o).css(i._position,n),i.resizing=!0,i.trigger(d,s(e,{position:n}))},_stop:function(t){var n=this;n.hint&&n.hint.remove(),n.resizing=!1,n.trigger(f,s(t,{position:n.position})),e(document.body).css("cursor","")},_cancel:function(e){var n=this;n.hint&&(n.position=t,n.hint.css(n._position,n._initialElementPosition),n._stop(e))},destroy:function(){var e=this;r.fn.destroy.call(e),e.draggable&&e.draggable.destroy()},press:function(e){if(e){var t=e.position(),n=this;n.userEvents.press(t.left,t.top,e[0]),n.targetPosition=t,n.target=e}},move:function(e){var n=this,i=n._position,r=n.targetPosition,o=n.position;o===t&&(o=r[i]),r[i]=o+e,n.userEvents.move(r.left,r.top)},end:function(){this.userEvents.end(),this.target=this.position=t}});n.ui.plugin(p)}(window.kendo.jQuery),window.kendo},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("kendo.splitter.min",["kendo.resizable.min"],e)}(function(){return function(e,t){function n(e){return v.test(e)}function i(e){return g.test(e)||/^\d+$/.test(e)}function r(e){return!n(e)&&!i(e)}function o(e,t){var i=parseInt(e,10);return n(e)&&(i=Math.floor(i*t/100)),i}function a(e,n){return function(i,r){var o,a=this.element.find(i).data(D);return 1==arguments.length?a[e]:(a[e]=r,n&&(o=this.element.data("kendo"+this.options.name),o.resize(!0)),t)}}function s(e){var t=this,n=e.orientation;t.owner=e,t._element=e.element,t.orientation=n,p(t,n===T?u:l),t._resizable=new c.ui.Resizable(e.element,{orientation:n,handle:".k-splitbar-draggable-"+n+"[data-marker="+e._marker+"]",hint:h(t._createHint,t),start:h(t._start,t),max:h(t._max,t),min:h(t._min,t),invalidClass:"k-restricted-size-"+n,resizeend:h(t._stop,t)})}var l,u,c=window.kendo,d=c.ui,f=c.keys,p=e.extend,h=e.proxy,m=d.Widget,g=/^\d+(\.\d+)?px$/i,v=/^\d+(\.\d+)?%$/i,y=".kendoSplitter",b="expand",w="collapse",k="contentLoad",_="error",x="resize",M="layoutChange",T="horizontal",S="vertical",E="mouseenter",z="click",D="pane",C="mouseleave",P="k-state-focused",O="k-"+D,$="."+O,A=m.extend({init:function(e,t){var n,i=this;m.fn.init.call(i,e,t),i.wrapper=i.element,n=i.options.orientation.toLowerCase()!=S,i.orientation=n?T:S,i._dimension=n?"width":"height",i._keys={decrease:n?f.LEFT:f.UP,increase:n?f.RIGHT:f.DOWN},i._resizeStep=10,i._marker=c.guid().substring(0,8),i._initPanes(),i.resizing=new s(i),i.element.triggerHandler("init"+y)},events:[b,w,k,_,x,M],_addOverlays:function(){this._panes().append("<div class='k-splitter-overlay k-overlay' />")},_removeOverlays:function(){this._panes().children(".k-splitter-overlay").remove()},_attachEvents:function(){var t=this,n=t.options.orientation;t.element.children(".k-splitbar-draggable-"+n).on("keydown"+y,h(t._keydown,t)).on("mousedown"+y,function(e){e.currentTarget.focus()}).on("focus"+y,function(t){e(t.currentTarget).addClass(P)}).on("blur"+y,function(n){e(n.currentTarget).removeClass(P),t.resizing&&t.resizing.end()}).on(E+y,function(){e(this).addClass("k-splitbar-"+t.orientation+"-hover")}).on(C+y,function(){e(this).removeClass("k-splitbar-"+t.orientation+"-hover")}).on("mousedown"+y,h(t._addOverlays,t)).end().children(".k-splitbar").on("dblclick"+y,h(t._togglePane,t)).children(".k-collapse-next, .k-collapse-prev").on(z+y,t._arrowClick(w)).end().children(".k-expand-next, .k-expand-prev").on(z+y,t._arrowClick(b)).end().end(),e(window).on("resize"+y+t._marker,h(t.resize,t,!1)),e(document).on("mouseup"+y+t._marker,h(t._removeOverlays,t))},_detachEvents:function(){var t=this;t.element.children(".k-splitbar-draggable-"+t.orientation).off(y).end().children(".k-splitbar").off("dblclick"+y).children(".k-collapse-next, .k-collapse-prev, .k-expand-next, .k-expand-prev").off(y),e(window).off(y+t._marker),e(document).off(y+t._marker)},options:{name:"Splitter",orientation:T,panes:[]},destroy:function(){m.fn.destroy.call(this),this._detachEvents(),this.resizing&&this.resizing.destroy(),c.destroy(this.element),this.wrapper=this.element=null},_keydown:function(t){var n,i=this,r=t.keyCode,o=i.resizing,a=e(t.currentTarget),s=i._keys,l=r===s.increase,u=r===s.decrease;l||u?(t.ctrlKey?(n=a[u?"next":"prev"](),o&&o.isResizing()&&o.end(),n[i._dimension]()?i._triggerAction(w,a[u?"prev":"next"]()):i._triggerAction(b,n)):o&&o.move((u?-1:1)*i._resizeStep,a),t.preventDefault()):r===f.ENTER&&o&&(o.end(),t.preventDefault())},_initPanes:function(){var e=this.options.panes||[],t=this;this.element.addClass("k-widget").addClass("k-splitter").children().each(function(n,i){"script"!=i.nodeName.toLowerCase()&&t._initPane(i,e[n])}),this.resize()},_initPane:function(t,n){t=e(t).attr("role","group").addClass(O),t.data(D,n?n:{}).toggleClass("k-scrollable",!n||n.scrollable!==!1),this.ajaxRequest(t)},ajaxRequest:function(e,t,n){var i,r=this;e=r.element.find(e),i=e.data(D),t=t||i.contentUrl,t&&(e.append("<span class='k-icon k-i-loading k-pane-loading' />"),c.isLocalUrl(t)?jQuery.ajax({url:t,data:n||{},type:"GET",dataType:"html",success:function(t){r.angular("cleanup",function(){return{elements:e.get()}}),e.html(t),r.angular("compile",function(){return{elements:e.get()}}),r.trigger(k,{pane:e[0]})},error:function(t,n){r.trigger(_,{pane:e[0],status:n,xhr:t})}}):e.removeClass("k-scrollable").html("<iframe src='"+t+"' frameborder='0' class='k-content-frame'>This page requires frames in order to show content</iframe>"))},_triggerAction:function(e,t){this.trigger(e,{pane:t[0]})||this[e](t[0])},_togglePane:function(t){var n,i=this,r=e(t.target);r.closest(".k-splitter")[0]==i.element[0]&&(n=r.children(".k-icon:not(.k-resize-handle)"),1===n.length&&(n.is(".k-collapse-prev")?i._triggerAction(w,r.prev()):n.is(".k-collapse-next")?i._triggerAction(w,r.next()):n.is(".k-expand-prev")?i._triggerAction(b,r.prev()):n.is(".k-expand-next")&&i._triggerAction(b,r.next())))},_arrowClick:function(t){var n=this;return function(i){var r,o=e(i.target);o.closest(".k-splitter")[0]==n.element[0]&&(r=o.is(".k-"+t+"-prev")?o.parent().prev():o.parent().next(),n._triggerAction(t,r))}},_updateSplitBar:function(e,t,n){var i=function(e,t){return t?"<div class='k-icon "+e+"' />":""},r=this.orientation,o=t.resizable!==!1&&n.resizable!==!1,a=t.collapsible,s=t.collapsed,l=n.collapsible,u=n.collapsed;e.addClass("k-splitbar k-state-default k-splitbar-"+r).attr("role","separator").attr("aria-expanded",!(s||u)).removeClass("k-splitbar-"+r+"-hover").toggleClass("k-splitbar-draggable-"+r,o&&!s&&!u).toggleClass("k-splitbar-static-"+r,!o&&!a&&!l).html(i("k-collapse-prev k-i-arrow-60-up",a&&!s&&!u&&r==S)+i("k-collapse-prev k-i-arrow-60-left",a&&!s&&!u&&r==T)+i("k-expand-prev k-i-arrow-60-down",a&&s&&!u&&r==S)+i("k-expand-prev k-i-arrow-60-right",a&&s&&!u&&r==T)+i("k-resize-handle k-i-hbar",o&&r==S)+i("k-resize-handle k-i-vbar",o&&r==T)+i("k-collapse-next k-i-arrow-60-down",l&&!u&&!s&&r==S)+i("k-collapse-next k-i-arrow-60-right",l&&!u&&!s&&r==T)+i("k-expand-next k-i-arrow-60-up",l&&u&&!s&&r==S)+i("k-expand-next k-i-arrow-60-left",l&&u&&!s&&r==T)),o||a||l||e.removeAttr("tabindex")},_updateSplitBars:function(){var t=this;this.element.children(".k-splitbar").each(function(){var n=e(this),i=n.prevAll($).first().data(D),r=n.nextAll($).first().data(D);r&&t._updateSplitBar(n,i,r)})},_removeSplitBars:function(){this.element.children(".k-splitbar").remove()},_panes:function(){return this.element?this.element.children($):e()},_resize:function(){var n,i,a,s,l,u,d,f,p,h,m=this,g=m.element,v=g.children($),y=m.orientation==T,b=g.children(".k-splitbar"),w=b.length,k=y?"width":"height",_=g[k]();m.wrapper.addClass("k-splitter-resizing"),0===w?(w=v.length-1,v.slice(0,w).after("<div tabindex='0' class='k-splitbar' data-marker='"+m._marker+"' />"),m._updateSplitBars(),b=g.children(".k-splitbar")):m._updateSplitBars(),b.each(function(){_-=this[y?"offsetWidth":"offsetHeight"]}),n=0,i=0,a=e(),v.css({position:"absolute",top:0})[k](function(){var s,l=e(this),u=l.data(D)||{};if(l.removeClass("k-state-collapsed"),u.collapsed)s=u.collapsedSize?o(u.collapsedSize,_):0,l.css("overflow","hidden").addClass("k-state-collapsed");else{if(r(u.size))return a=a.add(this),t;s=o(u.size,_)}return i++,n+=s,s}),_-=n,s=a.length,l=Math.floor(_/s),a.slice(0,s-1).css(k,l).end().eq(s-1).css(k,_-(s-1)*l),u=0,d=y?"height":"width",f=y?"left":"top",p=y?"offsetWidth":"offsetHeight",0===s&&(h=v.filter(function(){return!(e(this).data(D)||{}).collapsed}).last(),h[k](_+h[0][p])),g.children().css(d,g[d]()).each(function(e,t){"script"!=t.tagName.toLowerCase()&&(t.style[f]=Math.floor(u)+"px",u+=t[p])}),m._detachEvents(),m._attachEvents(),m.wrapper.removeClass("k-splitter-resizing"),c.resize(v),m.trigger(M)},toggle:function(e,n){var i,r=this;e=r.element.find(e),i=e.data(D),(n||i.collapsible)&&(1==arguments.length&&(n=i.collapsed!==t&&i.collapsed),i.collapsed=!n,i.collapsed?e.css("overflow","hidden"):e.css("overflow",""),r.resize(!0))},collapse:function(e){this.toggle(e,!1)},expand:function(e){this.toggle(e,!0)},_addPane:function(e,t,n){var i=this;return n.length&&(i.options.panes.splice(t,0,e),i._initPane(n,e),i._removeSplitBars(),i.resize(!0)),n},append:function(t){t=t||{};var n=this,i=e("<div />").appendTo(n.element);return n._addPane(t,n.options.panes.length,i)},insertBefore:function(t,n){n=e(n),t=t||{};var i=this,r=i.wrapper.children(".k-pane").index(n),o=e("<div />").insertBefore(e(n));return i._addPane(t,r,o)},insertAfter:function(t,n){n=e(n),t=t||{};var i=this,r=i.wrapper.children(".k-pane").index(n),o=e("<div />").insertAfter(e(n));return i._addPane(t,r+1,o)},remove:function(t){t=e(t);var n=this;return t.length&&(c.destroy(t),t.each(function(t,i){n.options.panes.splice(n.wrapper.children(".k-pane").index(i),1),e(i).remove()}),n._removeSplitBars(),n.options.panes.length&&n.resize(!0)),n},size:a("size",!0),min:a("min"),max:a("max")});d.plugin(A),l={sizingProperty:"height",sizingDomProperty:"offsetHeight",alternateSizingProperty:"width",positioningProperty:"top",mousePositioningProperty:"pageY"},u={sizingProperty:"width",sizingDomProperty:"offsetWidth",alternateSizingProperty:"height",positioningProperty:"left",mousePositioningProperty:"pageX"},s.prototype={press:function(e){this._resizable.press(e)},move:function(e,t){this.pressed||(this.press(t),this.pressed=!0),this._resizable.target||this._resizable.press(t),this._resizable.move(e)},end:function(){this._resizable.end(),this.pressed=!1},destroy:function(){this._resizable.destroy(),this._resizable=this._element=this.owner=null},isResizing:function(){return this._resizable.resizing},_createHint:function(t){var n=this;return e("<div class='k-ghost-splitbar k-ghost-splitbar-"+n.orientation+" k-state-default' />").css(n.alternateSizingProperty,t[n.alternateSizingProperty]())},_start:function(t){var n=this,r=e(t.currentTarget),o=r.prev(),a=r.next(),s=o.data(D),l=a.data(D),u=parseInt(o[0].style[n.positioningProperty],10),c=parseInt(a[0].style[n.positioningProperty],10)+a[0][n.sizingDomProperty]-r[0][n.sizingDomProperty],d=parseInt(n._element.css(n.sizingProperty),10),f=function(e){var t=parseInt(e,10);return(i(e)?t:d*t/100)||0},p=f(s.min),h=f(s.max)||c-u,m=f(l.min),g=f(l.max)||c-u;n.previousPane=o,n.nextPane=a,n._maxPosition=Math.min(c-m,u+h),n._minPosition=Math.max(u+p,c-g)},_max:function(){return this._maxPosition},_min:function(){return this._minPosition},_stop:function(t){var n,i,o,a,s,l,u,d,f=this,p=e(t.currentTarget),h=f.owner;return h._panes().children(".k-splitter-overlay").remove(),t.keyCode!==c.keys.ESC&&(n=t.position,i=p.prev(),o=p.next(),a=i.data(D),s=o.data(D),l=n-parseInt(i[0].style[f.positioningProperty],10),u=parseInt(o[0].style[f.positioningProperty],10)+o[0][f.sizingDomProperty]-n-p[0][f.sizingDomProperty],d=f._element.children($).filter(function(){return r(e(this).data(D).size)}).length,(!r(a.size)||d>1)&&(r(a.size)&&d--,a.size=l+"px"),(!r(s.size)||d>1)&&(s.size=u+"px"),h.resize(!0)),!1}}}(window.kendo.jQuery),window.kendo},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("kendo.angular.min",["kendo.core.min"],e)}(function(){return function(e,t,n){"use strict";function i(e){var t=S;try{return S=function(e){return e()},e()}finally{S=t}}function r(t,i,r,u,c,g){function v(){var n,g,v,y,b,x,T;return r.kRebind&&(n=e(e(i)[0].cloneNode(!0))),M=o(t,i,r,u,_).options,i.is("select")&&!function(t){if(t.length>0){var n=e(t[0]);!/\S/.test(n.text())&&/^\?/.test(n.val())&&n.remove()}}(i[0].options),g=_.call(i,D=M).data(u),l(g,t,r,u,c),t.$emit("kendoWidgetCreated",g),v=p(t,g),r.kRebind&&m(g,t,i,n,r.kRebind,v,r),r.kNgDisabled&&(y=r.kNgDisabled,b=t.$eval(y),b&&g.enable(!b),a(g,t,i,y)),r.kNgReadonly&&(x=r.kNgReadonly,T=t.$eval(x),T&&g.readonly(T),s(g,t,i,x)),r.kNgModel&&f(g,t,r.kNgModel),w&&d(g,t,i,w,k),g&&h(g,i),g}var y,b,w,k,_,x,M,T,E,z,C,P,O,$;if(!(i instanceof jQuery))throw Error("The Kendo UI directives require jQuery to be available before AngularJS. Please include jquery before angular in the document.");if(y=r.kNgDelay,b=t.$eval(y),g=g||[],w=g[0],k=g[1],_=e(i)[u],!_)return window.console.error("Could not find: "+u),null;if(x=o(t,i,r,u,_),M=x.options,x.unresolved.length){for(T=[],E=0,z=x.unresolved.length;E<z;E++)C=x.unresolved[E],P=e.Deferred(function(e){var i=t.$watch(C.path,function(t){t!==n&&(i(),e.resolve())})}).promise(),T.push(P);return e.when.apply(null,T).then(v),n}return y&&!b?(O=t.$root||t,$=function(){var e=t.$watch(y,function(t){t!==n&&(e(),i.removeAttr(r.$attr.kNgDelay),y=null,S(v))})},/^\$(digest|apply)$/.test(O.$$phase)?$():t.$apply($),n):v()}function o(i,r,o,a,s){function l(e,r){var o=t.copy(i.$eval(r));o===n?h.push({option:e,path:r}):u[e]=o}var u,c,d,f,p=a.replace(/^kendo/,""),h=[],m=o.kOptions||o.options,g=i.$eval(m);return m&&g===n&&h.push({option:"options",path:m}),u=t.extend({},o.defaultOptions,g),c=s.widget.prototype.options,d=s.widget.prototype.events,e.each(o,function(e,t){var n,i,r,o;"source"!==e&&"kDataSource"!==e&&"kScopeField"!==e&&"scopeField"!==e&&(n="data"+e.charAt(0).toUpperCase()+e.slice(1),0===e.indexOf("on")&&(i=e.replace(/^on./,function(e){return e.charAt(2).toLowerCase()}),d.indexOf(i)>-1&&(u[i]=t)),c.hasOwnProperty(n)?l(n,t):c.hasOwnProperty(e)&&!O[e]?l(e,t):P[e]||(r=e.match(/^k(On)?([A-Z].*)/),r&&(o=r[2].charAt(0).toLowerCase()+r[2].slice(1),r[1]&&"kOnLabel"!=e?u[o]=t:("kOnLabel"==e&&(o="onLabel"),l(o,t)))))}),f=o.kDataSource||o.source,f&&(u.dataSource=C(i,r,p,f)),u.$angular=[i],{options:u,unresolved:h}}function a(e,t,i,r){return kendo.ui.PanelBar&&e instanceof kendo.ui.PanelBar||kendo.ui.Menu&&e instanceof kendo.ui.Menu?(z.warn("k-ng-disabled specified on a widget that does not have the enable() method: "+e.options.name),n):(t.$watch(r,function(t,n){t!=n&&e.enable(!t)}),n)}function s(e,t,i,r){return"function"!=typeof e.readonly?(z.warn("k-ng-readonly specified on a widget that does not have the readonly() method: "+e.options.name),n):(t.$watch(r,function(t,n){t!=n&&e.readonly(t)}),n)}function l(e,t,n,i,r){if(n[r]){var o=T(n[r]).assign;if(!o)throw Error(r+" attribute used but expression in it is not assignable: "+n[i]);o(t,e)}}function u(e){return/checkbox|radio/i.test(e.attr("type"))?e.prop("checked"):e.val()}function c(e){return $.test(e[0].tagName)}function d(e,t,i,r,o){var a,s,l,d,f;e.value&&(s=!1,a=c(i)?function(){return u(i)}:function(){return e.value()},l=function(){var i=r.$viewValue;i===n&&(i=r.$modelValue),i===n&&(i=null),s=!0,setTimeout(function(){if(s=!1,e){var n=t[e.element.attr("k-ng-model")];n&&(i=n),e.options.autoBind!==!1||e.listView.bound()?e.value(i):i&&e.value(i)}},0)},r.$render=l,setTimeout(function(){r.$render!==l&&(r.$render=l)()}),c(i)&&i.on("change",function(){s=!0}),d=function(e){return function(){var n;s&&!i.is("select")||(e&&o&&(n=o.$pristine),r.$setViewValue(a()),e&&(r.$setPristine(),n&&o.$setPristine()),w(t))}},e.first("change",d(!1)),e.first("spin",d(!1)),kendo.ui.AutoComplete&&e instanceof kendo.ui.AutoComplete||e.first("dataBound",d(!0)),f=a(),isNaN(r.$viewValue)||f==r.$viewValue||(r.$isEmpty(r.$viewValue)?null!=f&&""!==f&&f!=r.$viewValue&&r.$setViewValue(f):e.value(r.$viewValue)),r.$setPristine())}function f(t,i,r){var o,a,s,l,u,c,d,f,p,h;return"function"!=typeof t.value?(z.warn("k-ng-model specified on a widget that does not have the value() method: "+t.options.name),n):(o=e(t.element).parents("form"),a=kendo.getter(o.attr("name"),!0)(i),s=T(r),l=s.assign,u=!1,c=kendo.ui.MultiSelect&&t instanceof kendo.ui.MultiSelect,d=function(e){return e&&c?e.length:0},f=d(s(i)),t.$angular_setLogicValue(s(i)),p=function(e,i){e===n&&(e=null),u||e==i&&d(e)==f||(f=d(e),t.$angular_setLogicValue(e))},c?i.$watchCollection(r,p):i.$watch(r,p),h=function(){u=!0,a&&a.$pristine&&a.$setDirty(),w(i,function(){l(i,t.$angular_getLogicValue()),f=d(s(i))}),u=!1},t.first("change",h),t.first("spin",h),n)}function p(e,t){var n=e.$on("$destroy",function(){n(),t&&(kendo.destroy(t.element),t=null)});return n}function h(t,n){function i(){a.disconnect()}function r(){a.observe(e(n)[0],{attributes:!0})}var o,a;window.MutationObserver&&t.wrapper&&(o=[].slice.call(e(n)[0].classList),a=new MutationObserver(function(n){i(),t&&(n.forEach(function(n){var i,r=e(t.wrapper)[0];switch(n.attributeName){case"class":i=[].slice.call(n.target.classList),i.forEach(function(e){o.indexOf(e)<0&&(r.classList.add(e),kendo.ui.ComboBox&&t instanceof kendo.ui.ComboBox&&t.input[0].classList.add(e))}),o.forEach(function(e){i.indexOf(e)<0&&(r.classList.remove(e),kendo.ui.ComboBox&&t instanceof kendo.ui.ComboBox&&t.input[0].classList.remove(e))}),o=i;break;case"disabled":"function"!=typeof t.enable||t.element.attr("readonly")||t.enable(!e(n.target).attr("disabled"));break;case"readonly":"function"!=typeof t.readonly||t.element.attr("disabled")||t.readonly(!!e(n.target).attr("readonly"))}}),r())}),r(),t.first("destroy",i))}function m(t,n,i,r,o,a,s){var l=n.$watch(o,function(o,u){var c,d,f,p,h;t._muteRebind||o===u||(l(),s._cleanUp&&s._cleanUp(),c=I[t.options.name],c&&c.forEach(function(t){var i=n.$eval(s["k"+t]);i&&r.append(e(i).attr(kendo.toHyphens("k"+t),""))}),d=e(t.wrapper)[0],f=e(t.element)[0],p="Upload"===t.options.name,p&&(i=e(f)),h=i.injector().get("$compile"),t._destroy(),a&&a(),t=null,f&&(d&&d.parentNode.replaceChild(f,d),e(i).replaceWith(r)),h(r)(n))},!0);w(n)}function g(e,t){return function(n,i){return e.call(t,n,i)}}function v(e,t){this[e]=kendo.stringify(t)}function y(e,n){function i(e,t){x.directive(e,["directiveFactory",function(n){return n.create(t,e)}])}var r,o,a,s,l=n?"Mobile":"";l+=e.fn.options.name,r=l,o="kendo"+l.charAt(0)+l.substr(1).toLowerCase(),l="kendo"+l,a=l.replace(/([A-Z])/g,"-$1"),H.indexOf(l.replace("kendo",""))==-1&&(s=l===o?[l]:[l,o],t.forEach(s,function(e){x.directive(e,function(){return{restrict:"E",replace:!0,template:function(e,t){var n=A[r]||"div",i=t.kScopeField||t.scopeField;return"<"+n+" "+a+(i?'="'+i+'"':"")+">"+e.html()+"</"+n+">"}}})})),N.indexOf(l.replace("kendo",""))>-1||(i(l,l),o!=l&&i(o,l))}function b(t){return t=e(t),kendo.widgetInstance(t,kendo.ui)||kendo.widgetInstance(t,kendo.mobile.ui)||kendo.widgetInstance(t,kendo.dataviz.ui)}function w(e,t){var n=e.$root||e,i=/^\$(digest|apply)$/.test(n.$$phase);t?i?t():n.$apply(t):i||n.$digest()}function k(t,n){t.$destroy(),n&&e(n).removeData("$scope").removeData("$$kendoScope").removeData("$isolateScope").removeData("$isolateScopeNoTemplate").removeClass("ng-scope")}function _(n,i,r){var o,a,s;if(e.isArray(n))return t.forEach(n,function(e){_(e,i,r)});if("string"==typeof n){for(o=n.split("."),a=kendo;a&&o.length>0;)a=a[o.shift()];if(!a)return L.push([n,i,r]),!1;n=a.prototype}return s=n[i],n[i]=function(){var e=this,t=arguments;return r.apply({self:e,next:function(){return s.apply(e,arguments.length>0?arguments:t)}},t)},!0}var x,M,T,S,E,z,D,C,P,O,$,A,H,N,L,I;t&&t.injector&&(x=t.module("kendo.directives",[]),M=t.injector(["ng"]),T=M.get("$parse"),S=M.get("$timeout"),z=M.get("$log"),C=function(){var e={TreeList:"TreeListDataSource",TreeView:"HierarchicalDataSource",Scheduler:"SchedulerDataSource",PivotGrid:"PivotDataSource",PivotConfigurator:"PivotDataSource",PanelBar:"HierarchicalDataSource",Menu:"$PLAIN",ContextMenu:"$PLAIN"},t=function(e,t){return"$PLAIN"==t?e:kendo.data[t].create(e)};return function(n,i,r,o){var a=e[r]||"DataSource",s=n.$eval(o),l=t(s,a);return n.$watch(o,function(e){var n,r=b(i);r&&"function"==typeof r.setDataSource&&e!==s&&(n=t(e,a),r.setDataSource(n),s=e)}),l}}(),P={kDataSource:!0,kOptions:!0,kRebind:!0,kNgModel:!0,kNgDelay:!0},O={name:!0,title:!0,style:!0},$=/^(input|select|textarea)$/i,x.factory("directiveFactory",["$compile",function(t){var n,i,o=!1;return E=t,i=function(t,i){return{restrict:"AC",require:["?ngModel","^?form"],scope:!1,controller:["$scope","$attrs","$element",function(e,t){this.template=g(v,t),t._cleanUp=g(function(){this.template=null,t._cleanUp=null},this)}],link:function(a,s,l,u){var c,d=e(s),f=t.replace(/([A-Z])/g,"-$1");d.attr(f,d.attr("data-"+f)),d[0].removeAttribute("data-"+f),c=r(a,s,l,t,i,u),c&&(n&&clearTimeout(n),n=setTimeout(function(){a.$emit("kendoRendered"),o||(o=!0,e("form").each(function(){var t=e(this).controller("form");t&&t.$setPristine()}))}))}}},{create:i}}]),A={Editor:"textarea",NumericTextBox:"input",DatePicker:"input",DateTimePicker:"input",TimePicker:"input",AutoComplete:"input",ColorPicker:"input",MaskedTextBox:"input",MultiSelect:"input",Upload:"input",Validator:"form",Button:"button",MobileButton:"a",MobileBackButton:"a",MobileDetailButton:"a",ListView:"ul",MobileListView:"ul",PanelBar:"ul",TreeView:"ul",Menu:"ul",ContextMenu:"ul",ActionSheet:"ul"},H=["MobileView","MobileDrawer","MobileLayout","MobileSplitView","MobilePane","MobileModalView"],N=["MobileApplication","MobileView","MobileModalView","MobileLayout","MobileActionSheet","MobileDrawer","MobileSplitView","MobilePane","MobileScrollView","MobilePopOver"],t.forEach(["MobileNavBar","MobileButton","MobileBackButton","MobileDetailButton","MobileTabStrip","MobileScrollView","MobileScroller"],function(e){N.push(e),e="kendo"+e,x.directive(e,function(){return{restrict:"A",link:function(t,n,i){r(t,n,i,e,e)}}})}),L=[],kendo.onWidgetRegistered(function(t){L=e.grep(L,function(e){return!_.apply(null,e)}),y(t.widget,"Mobile"==t.prefix)}),_(["ui.Widget","mobile.ui.Widget"],"angular",function(r,o){var a,s=this.self;return"init"==r?(!o&&D&&(o=D),D=null,o&&o.$angular&&(s.$angular_scope=o.$angular[0],s.$angular_init(s.element,o)),n):(a=s.$angular_scope,a&&i(function(){var i,l,u=o(),c=u.elements,d=u.data;if(c.length>0)switch(r){case"cleanup":t.forEach(c,function(t){var n=e(t).data("$$kendoScope");n&&n!==a&&n.$$kendoScope&&k(n,t)});break;case"compile":i=s.element.injector(),l=i?i.get("$compile"):E,t.forEach(c,function(t,i){var r,o;u.scopeFrom?r=u.scopeFrom:(o=d&&d[i],o!==n?(r=e.extend(a.$new(),o),r.$$kendoScope=!0):r=a),e(t).data("$$kendoScope",r),l(t)(r)}),w(a)}}),n)}),_("ui.Widget","$angular_getLogicValue",function(){return this.self.value()}),_("ui.Widget","$angular_setLogicValue",function(e){this.self.value(e)}),_("ui.Select","$angular_getLogicValue",function(){var e=this.self.dataItem(),t=this.self.options.dataValueField;return e?this.self.options.valuePrimitive?t?e[t]:e:e.toJSON():null}),_("ui.Select","$angular_setLogicValue",function(e){var t=this.self,i=t.options,r=i.dataValueField,o=i.text||"";e===n&&(e=""),r&&!i.valuePrimitive&&e&&(o=e[i.dataTextField]||"",e=e[r||i.dataTextField]),t.options.autoBind!==!1||t.listView.bound()?t.value(e):!o&&e&&i.valuePrimitive?t.value(e):t._preselect(e,o)}),_("ui.MultiSelect","$angular_getLogicValue",function(){var t=this.self.dataItems().slice(0),n=this.self.options.dataValueField;return n&&this.self.options.valuePrimitive&&(t=e.map(t,function(e){return e[n]})),t}),_("ui.MultiSelect","$angular_setLogicValue",function(t){var n,i,r,o;null==t&&(t=[]),n=this.self,i=n.options,r=i.dataValueField,o=t,r&&!i.valuePrimitive&&(t=e.map(t,function(e){return e[r]})),
-i.autoBind!==!1||i.valuePrimitive||n.listView.bound()?n.value(t):n._preselect(o,t)}),_("ui.AutoComplete","$angular_getLogicValue",function(){var e,t,n,i,r,o=this.self.options,a=this.self.value().split(o.separator),s=o.valuePrimitive,l=this.self.listView.selectedDataItems(),u=[];for(e=0,t=l.length;e<t;e++)for(n=l[e],i=o.dataTextField?n[o.dataTextField]:n,r=0;r<a.length;r++)if(i===a[r]){u.push(s?i:n.toJSON());break}return u}),_("ui.AutoComplete","$angular_setLogicValue",function(t){null==t&&(t=[]);var i=this.self,r=i.options.dataTextField;r&&!i.options.valuePrimitive&&(t=t.length!==n?e.map(t,function(e){return e[r]}):t[r]),i.value(t)}),_("ui.Widget","$angular_init",function(t,n){var i,r,o,a,s=this.self;if(n&&!e.isArray(n))for(i=s.$angular_scope,r=s.events.length;--r>=0;)o=s.events[r],a=n[o],a&&"string"==typeof a&&(n[o]=s.$angular_makeEventHandler(o,i,a))}),_("ui.Widget","$angular_makeEventHandler",function(e,t,n){return n=T(n),function(e){w(t,function(){n(t,{kendoEvent:e})})}}),_(["ui.Grid","ui.ListView","ui.TreeView","ui.PanelBar"],"$angular_makeEventHandler",function(e,n,i){return"change"!=e?this.next():(i=T(i),function(e){var r,o,a,s,l,u,c,d,f,p=e.sender,h=p.options,m={kendoEvent:e};for(t.isString(h.selectable)&&(r=h.selectable.indexOf("cell")!==-1,o=h.selectable.indexOf("multiple")!==-1),a=m.selected=this.select(),s=m.data=[],l=m.columns=[],c=0;c<a.length;c++)d=r?a[c].parentNode:a[c],f=p.dataItem(d),r?(t.element.inArray(f,s)<0&&s.push(f),u=t.element(a[c]).index(),t.element.inArray(u,l)<0&&l.push(u)):s.push(f);o||(m.dataItem=m.data=s[0],m.angularDataItem=kendo.proxyModelSetters(m.dataItem),m.selected=a[0]),w(n,function(){i(n,m)})})}),_("ui.Grid","$angular_init",function(i,r){if(this.next(),r.columns){var o=e.extend({},kendo.Template,r.templateSettings);t.forEach(r.columns,function(e){!e.field||e.template||e.format||e.values||e.encoded!==n&&!e.encoded||(e.template="<span ng-bind='"+kendo.expr(e.field,"dataItem")+"'>#: "+kendo.expr(e.field,o.paramName)+"#</span>")})}}),_("mobile.ui.ButtonGroup","value",function(e){var t=this.self;return null!=e&&(t.select(t.element.children("li.km-button").eq(e)),t.trigger("change"),t.trigger("select",{index:t.selectedIndex})),t.selectedIndex}),_("mobile.ui.ButtonGroup","_select",function(){this.next(),this.self.trigger("change")}),x.directive("kendoMobileApplication",function(){return{terminal:!0,link:function(e,t,n){r(e,t,n,"kendoMobileApplication","kendoMobileApplication")}}}).directive("kendoMobileView",function(){return{scope:!0,link:{pre:function(e,t,n){n.defaultOptions=e.viewOptions,n._instance=r(e,t,n,"kendoMobileView","kendoMobileView")},post:function(e,t,n){n._instance._layout(),n._instance._scroller()}}}}).directive("kendoMobileDrawer",function(){return{scope:!0,link:{pre:function(e,t,n){n.defaultOptions=e.viewOptions,n._instance=r(e,t,n,"kendoMobileDrawer","kendoMobileDrawer")},post:function(e,t,n){n._instance._layout(),n._instance._scroller()}}}}).directive("kendoMobileModalView",function(){return{scope:!0,link:{pre:function(e,t,n){n.defaultOptions=e.viewOptions,n._instance=r(e,t,n,"kendoMobileModalView","kendoMobileModalView")},post:function(e,t,n){n._instance._layout(),n._instance._scroller()}}}}).directive("kendoMobileSplitView",function(){return{terminal:!0,link:{pre:function(e,t,n){n.defaultOptions=e.viewOptions,n._instance=r(e,t,n,"kendoMobileSplitView","kendoMobileSplitView")},post:function(e,t,n){n._instance._layout()}}}}).directive("kendoMobilePane",function(){return{terminal:!0,link:{pre:function(e,t,n){n.defaultOptions=e.viewOptions,r(e,t,n,"kendoMobilePane","kendoMobilePane")}}}}).directive("kendoMobileLayout",function(){return{link:{pre:function(e,t,n){r(e,t,n,"kendoMobileLayout","kendoMobileLayout")}}}}).directive("kendoMobileActionSheet",function(){return{restrict:"A",link:function(t,n,i){n.find("a[k-action]").each(function(){e(this).attr("data-"+kendo.ns+"action",e(this).attr("k-action"))}),r(t,n,i,"kendoMobileActionSheet","kendoMobileActionSheet")}}}).directive("kendoMobilePopOver",function(){return{terminal:!0,link:{pre:function(e,t,n){n.defaultOptions=e.viewOptions,r(e,t,n,"kendoMobilePopOver","kendoMobilePopOver")}}}}).directive("kendoViewTitle",function(){return{restrict:"E",replace:!0,template:function(e){return"<span data-"+kendo.ns+"role='view-title'>"+e.html()+"</span>"}}}).directive("kendoMobileHeader",function(){return{restrict:"E",link:function(e,t){t.addClass("km-header").attr("data-role","header")}}}).directive("kendoMobileFooter",function(){return{restrict:"E",link:function(e,t){t.addClass("km-footer").attr("data-role","footer")}}}).directive("kendoMobileScrollViewPage",function(){return{restrict:"E",replace:!0,template:function(e){return"<div data-"+kendo.ns+"role='page'>"+e.html()+"</div>"}}}),t.forEach(["align","icon","rel","transition","actionsheetContext"],function(e){var t="k"+e.slice(0,1).toUpperCase()+e.slice(1);x.directive(t,function(){return{restrict:"A",priority:2,link:function(n,i,r){i.attr(kendo.attr(kendo.toHyphens(e)),n.$eval(r[t]))}}})}),I={TreeMap:["Template"],MobileListView:["HeaderTemplate","Template"],MobileScrollView:["EmptyTemplate","Template"],Grid:["AltRowTemplate","DetailTemplate","RowTemplate"],ListView:["EditTemplate","Template","AltTemplate"],Pager:["SelectTemplate","LinkTemplate"],PivotGrid:["ColumnHeaderTemplate","DataCellTemplate","RowHeaderTemplate"],Scheduler:["AllDayEventTemplate","DateHeaderTemplate","EventTemplate","MajorTimeHeaderTemplate","MinorTimeHeaderTemplate"],PanelBar:["Template"],TreeView:["Template"],Validator:["ErrorTemplate"]},function(){var e={};t.forEach(I,function(n,i){t.forEach(n,function(t){e[t]||(e[t]=[]),e[t].push("?^^kendo"+i)})}),t.forEach(e,function(e,t){var n="k"+t,i=kendo.toHyphens(n);x.directive(n,function(){return{restrict:"A",require:e,terminal:!0,compile:function(t,r){if(""===r[n]){t.removeAttr(i);var o=t[0].outerHTML;return function(t,r,a,s){for(var l;!l&&s.length;)l=s.shift();l?(l.template(n,o),r.remove()):z.warn(i+" without a matching parent widget found. It can be one of the following: "+e.join(", "))}}}}})})}())}(window.kendo.jQuery,window.angular),window.kendo},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()});
-//# sourceMappingURL=kendo.custom.min.js.map
index d7df56a..d5d2832 100644 (file)
@@ -586,12 +586,18 @@ body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-b
 <li><a href="#_produces_20">2.20.5. Produces</a></li>
 </ul>
 </li>
-<li><a href="#_user_username_get">2.21. GET /user/{userName}</a>
+<li><a href="#_healthcheck_get">2.21. GET /healthcheck</a>
 <ul class="sectlevel3">
 <li><a href="#_description_17">2.21.1. Description</a></li>
-<li><a href="#_parameters_14">2.21.2. Parameters</a></li>
-<li><a href="#_responses_21">2.21.3. Responses</a></li>
-<li><a href="#_produces_21">2.21.4. Produces</a></li>
+<li><a href="#_responses_21">2.21.2. Responses</a></li>
+<li><a href="#_produces_21">2.21.3. Produces</a></li>
+</ul>
+</li>
+<li><a href="#_user_getuser_get">2.22. GET /user/getUser</a>
+<ul class="sectlevel3">
+<li><a href="#_description_18">2.22.1. Description</a></li>
+<li><a href="#_responses_22">2.22.2. Responses</a></li>
+<li><a href="#_produces_22">2.22.3. Produces</a></li>
 </ul>
 </li>
 </ul>
@@ -619,7 +625,7 @@ body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-b
 <div class="sect2">
 <h3 id="_version_information"><a class="anchor" href="#_version_information"></a>1.1. Version information</h3>
 <div class="paragraph">
-<p><em>Version</em> : 2.0.2-SNAPSHOT</p>
+<p><em>Version</em> : 3.0.0-SNAPSHOT</p>
 </div>
 </div>
 <div class="sect2">
@@ -1943,40 +1949,63 @@ body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-b
 </div>
 </div>
 <div class="sect2">
-<h3 id="_user_username_get"><a class="anchor" href="#_user_username_get"></a>2.21. GET /user/{userName}</h3>
+<h3 id="_healthcheck_get"><a class="anchor" href="#_healthcheck_get"></a>2.21. GET /healthcheck</h3>
 <div class="sect3">
 <h4 id="_description_17"><a class="anchor" href="#_description_17"></a>2.21.1. Description</h4>
 <div class="paragraph">
-<p>REST service that returns the username.</p>
+<p>REST service that retrieves clds healthcheck information.</p>
 </div>
 </div>
 <div class="sect3">
-<h4 id="_parameters_14"><a class="anchor" href="#_parameters_14"></a>2.21.2. Parameters</h4>
+<h4 id="_responses_21"><a class="anchor" href="#_responses_21"></a>2.21.2. Responses</h4>
 <table class="tableblock frame-all grid-all spread">
 <colgroup>
-<col style="width: 22%;">
-<col style="width: 33%;">
-<col style="width: 44%;">
+<col style="width: 10%;">
+<col style="width: 70%;">
+<col style="width: 20%;">
 </colgroup>
 <thead>
 <tr>
-<th class="tableblock halign-left valign-middle">Type</th>
-<th class="tableblock halign-left valign-middle">Name</th>
+<th class="tableblock halign-left valign-middle">HTTP Code</th>
+<th class="tableblock halign-left valign-middle">Description</th>
 <th class="tableblock halign-left valign-middle">Schema</th>
 </tr>
 </thead>
 <tbody>
 <tr>
-<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>Path</strong></p></td>
-<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>userName</strong><br>
-<em>required</em></p></td>
-<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>200</strong></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">OK</p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><a href="#_cldshealthcheck">CldsHealthCheck</a></p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>500</strong></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">Internal Server Error</p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><a href="#_cldshealthcheck">CldsHealthCheck</a></p></td>
 </tr>
 </tbody>
 </table>
 </div>
 <div class="sect3">
-<h4 id="_responses_21"><a class="anchor" href="#_responses_21"></a>2.21.3. Responses</h4>
+<h4 id="_produces_21"><a class="anchor" href="#_produces_21"></a>2.21.3. Produces</h4>
+<div class="ulist">
+<ul>
+<li>
+<p><code>application/json</code></p>
+</li>
+</ul>
+</div>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_user_getuser_get"><a class="anchor" href="#_user_getuser_get"></a>2.22. GET /user/getUser</h3>
+<div class="sect3">
+<h4 id="_description_18"><a class="anchor" href="#_description_18"></a>2.22.1. Description</h4>
+<div class="paragraph">
+<p>REST service that returns the username.</p>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_responses_22"><a class="anchor" href="#_responses_22"></a>2.22.2. Responses</h4>
 <table class="tableblock frame-all grid-all spread">
 <colgroup>
 <col style="width: 10%;">
@@ -2000,7 +2029,7 @@ body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-b
 </table>
 </div>
 <div class="sect3">
-<h4 id="_produces_21"><a class="anchor" href="#_produces_21"></a>2.21.4. Produces</h4>
+<h4 id="_produces_22"><a class="anchor" href="#_produces_22"></a>2.22.3. Produces</h4>
 <div class="ulist">
 <ul>
 <li>
@@ -2508,7 +2537,7 @@ body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-b
 </div>
 <div id="footer">
 <div id="footer-text">
-Last updated 2018-05-23 19:48:36 +02:00
+Last updated 2018-06-05 12:10:11 +02:00
 </div>
 </div>
 </body>