From dec0a4ad6852f759b5901a4166bb08a717e4c530 Mon Sep 17 00:00:00 2001 From: tranjennie Date: Tue, 3 Oct 2023 16:11:48 -0700 Subject: [PATCH] Updates --- 404.html | 5 - 404.html.gz | Bin 1346 -> 0 bytes asset-manifest.json | 17 + .../geotab-drive-partner-add-ins-icon.svg | 1 - .../geotab-drive-partner-add-ons-icon.svg | 1 - assets/images/pillar.svg | 1 - assets/images/pulse2.svg | 1 - .../apple-touch-icon-144-precomposed.png | Bin 539 -> 0 bytes assets/javascript/index.js | 137 - assets/javascript/index.js.map | 1 - assets/stylesheets/style-7593abd5bb.min.css | 6 - .../stylesheets/style-7593abd5bb.min.css.gz | Bin 22677 -> 0 bytes assets/stylesheets/style.css | 9566 ----------- assets/stylesheets/style.css.map | 1 - crossdomain.xml | 15 - favicon.ico | Bin 4286 -> 3870 bytes hardware/addon-protocols/ble/index.html | 6 - hardware/addon-protocols/ble/index.html.gz | Bin 7030 -> 0 bytes hardware/addon-protocols/can/index.html | 28 - hardware/addon-protocols/can/index.html.gz | Bin 6397 -> 0 bytes hardware/addon-protocols/rs232-usb/index.html | 92 - .../addon-protocols/rs232-usb/index.html.gz | Bin 16262 -> 0 bytes hardware/addon-protocols/rs232-usb_0.png | Bin 44620 -> 0 bytes .../hardware-design-guide/index.html | 5 - .../hardware-design-guide/index.html.gz | Bin 5397 -> 0 bytes .../hardware-design-guide_0.png | Bin 91378 -> 0 bytes .../hardware-design-guide_1.png | Bin 26829 -> 0 bytes .../hardware-design-guide_2.png | Bin 7123 -> 0 bytes .../hardware-design-guide_3.png | Bin 20352 -> 0 bytes .../hardware-design-guide_4.png | Bin 30555 -> 0 bytes .../hardware-design-guide_5.png | Bin 22231 -> 0 bytes .../messaging-protocol/index.html | 5 - .../messaging-protocol/index.html.gz | Bin 8909 -> 0 bytes .../hardware-add-on-data-types/index.html | 5 - .../hardware-add-on-data-types/index.html.gz | Bin 3433 -> 0 bytes hardware/introduction/index.html | 5 - hardware/introduction/index.html.gz | Bin 5299 -> 0 bytes hardware/samples/python/index.html | 139 - hardware/samples/python/index.html.gz | Bin 5317 -> 0 bytes humans.txt | 16 - index.html | 6 +- index.html.gz | Bin 3660 -> 0 bytes logo192.png | Bin 0 -> 5347 bytes logo512.png | Bin 0 -> 9664 bytes manifest.json | 25 + myadmin-sdk/MyAdminApiLib.zip | Bin 43070 -> 0 bytes myadmin-sdk/api/reference/index.html | 1264 -- myadmin-sdk/api/reference/index.html.gz | Bin 15939 -> 0 bytes .../code-samples/dotnet-examples/index.html | 94 - .../dotnet-examples/index.html.gz | Bin 4491 -> 0 bytes .../javascript-examples/index.html | 77 - .../javascript-examples/index.html.gz | Bin 4824 -> 0 bytes .../code-samples/myadminApiExample.png | Bin 32739 -> 0 bytes myadmin-sdk/guides/concepts/index.html | 117 - myadmin-sdk/guides/concepts/index.html.gz | Bin 6843 -> 0 bytes myadmin-sdk/guides/getting-started/index.html | 5 - .../guides/getting-started/index.html.gz | Bin 4620 -> 0 bytes .../guides/third-party-diagnostic-codes.png | Bin 17282 -> 0 bytes .../using-third-party-devices/index.html | 94 - .../using-third-party-devices/index.html.gz | Bin 11022 -> 0 bytes .../guides/using-with-dotnet/index.html | 17 - .../guides/using-with-dotnet/index.html.gz | Bin 4539 -> 0 bytes .../guides/using-with-javascript/index.html | 26 - .../using-with-javascript/index.html.gz | Bin 4484 -> 0 bytes myadmin-sdk/introduction/index.html | 5 - myadmin-sdk/introduction/index.html.gz | Bin 4106 -> 0 bytes myadmin-sdk/myAdminApi.js | 55 - myadmin-sdk/new/index.html | 5 - myadmin-sdk/new/index.html.gz | Bin 9163 -> 0 bytes redirects.json | 1 - resources/new/index.html | 61 - resources/new/index.html.gz | Bin 36309 -> 0 bytes resources/toolkits/index.html | 5 - resources/toolkits/index.html.gz | Bin 3522 -> 0 bytes robots.txt | 8 +- sitemap.xml | 326 - software/api/clients/index.html | 75 - software/api/clients/index.html.gz | Bin 5285 -> 0 bytes software/api/codebase/api.js | 636 - software/api/codebase/console.css | 82 - software/api/codebase/console.js | 274 - software/api/codebase/githubApi.js | 189 - software/api/codebase/iframe.html | 188 - software/api/codebase/iframe.html.gz | Bin 1649 -> 0 bytes software/api/codebase/main.css | 256 - software/api/codebase/promise.js | 174 - .../codebase/third-party/Base64.js/LICENSE | 14 - .../third-party/Base64.js/base64.min.js | 1 - .../api/codebase/third-party/JSON-js/cycle.js | 172 - software/api/codebase/third-party/ace/LICENSE | 24 - .../codebase/third-party/ace/src-min/ace.js | 11 - .../third-party/ace/src-min/mode-css.js | 1 - .../third-party/ace/src-min/mode-html.js | 1 - .../ace/src-min/mode-javascript.js | 1 - .../third-party/ace/src-min/theme-chrome.js | 1 - .../third-party/ace/src-min/worker-css.js | 1 - .../third-party/ace/src-min/worker-html.js | 1 - .../ace/src-min/worker-javascript.js | 1 - .../api/codebase/third-party/github/LICENSE | 25 - .../api/codebase/third-party/github/github.js | 851 - .../third-party/github/underscore-min.js | 6 - software/api/components/index.js | 5 - software/api/components/toolbar/index.js | 3 - software/api/helpers.js | 38 - software/api/logger.js | 14 - software/api/reference/index.html | 1264 -- software/api/reference/index.html.gz | Bin 15943 -> 0 bytes software/api/runner-bundle.js | 75 - software/api/runner.css | 201 - software/api/runner.html | 5 - software/api/runner.html.gz | Bin 1720 -> 0 bytes software/api/runner.js | 833 - .../config.json | 7 - .../sample.css | 0 .../sample.html | 0 .../sample.html.gz | Bin 20 -> 0 bytes .../sample.js | 38 - software/api/samples/add-driver/config.json | 7 - software/api/samples/add-driver/sample.css | 0 software/api/samples/add-driver/sample.html | 1 - .../api/samples/add-driver/sample.html.gz | Bin 156 -> 0 bytes software/api/samples/add-driver/sample.js | 43 - software/api/samples/api-call/config.json | 7 - software/api/samples/api-call/sample.css | 0 software/api/samples/api-call/sample.html | 0 software/api/samples/api-call/sample.html.gz | Bin 20 -> 0 bytes software/api/samples/api-call/sample.js | 9 - .../samples/calculate-fuel-usage/config.json | 7 - .../samples/calculate-fuel-usage/sample.css | 0 .../samples/calculate-fuel-usage/sample.html | 1 - .../calculate-fuel-usage/sample.html.gz | Bin 97 -> 0 bytes .../samples/calculate-fuel-usage/sample.js | 80 - .../config.json | 7 - .../sample.css | 0 .../sample.html | 0 .../sample.html.gz | Bin 20 -> 0 bytes .../sample.js | 58 - .../config.json | 7 - .../sample.css | 0 .../sample.html | 0 .../sample.html.gz | Bin 20 -> 0 bytes .../sample.js | 26 - .../api/samples/device-location/config.json | 7 - .../api/samples/device-location/sample.css | 4 - .../api/samples/device-location/sample.html | 1 - .../samples/device-location/sample.html.gz | Bin 129 -> 0 bytes .../api/samples/device-location/sample.js | 37 - .../config.json | 7 - .../sample.css | 0 .../sample.html | 0 .../sample.html.gz | Bin 20 -> 0 bytes .../sample.js | 24 - .../config.json | 7 - .../sample.css | 0 .../sample.html | 1 - .../sample.html.gz | Bin 92 -> 0 bytes .../sample.js | 87 - .../config.json | 7 - .../sample.css | 0 .../sample.html | 1 - .../sample.html.gz | Bin 92 -> 0 bytes .../sample.js | 56 - .../config.json | 7 - .../sample.css | 0 .../sample.html | 1 - .../sample.html.gz | Bin 92 -> 0 bytes .../sample.js | 67 - .../samples/generate-addin-guid/config.json | 7 - .../samples/generate-addin-guid/sample.css | 0 .../samples/generate-addin-guid/sample.html | 0 .../generate-addin-guid/sample.html.gz | Bin 20 -> 0 bytes .../api/samples/generate-addin-guid/sample.js | 29 - .../config.json | 7 - .../sample.css | 0 .../sample.html | 0 .../sample.html.gz | Bin 20 -> 0 bytes .../sample.js | 35 - .../config.json | 7 - .../sample.css | 0 .../sample.html | 1 - .../sample.html.gz | Bin 103 -> 0 bytes .../sample.js | 42 - .../config.json | 7 - .../sample.css | 0 .../sample.html | 1 - .../sample.html.gz | Bin 102 -> 0 bytes .../sample.js | 48 - .../samples/get-fuel-tax-details/config.json | 7 - .../samples/get-fuel-tax-details/sample.css | 0 .../samples/get-fuel-tax-details/sample.html | 0 .../get-fuel-tax-details/sample.html.gz | Bin 20 -> 0 bytes .../samples/get-fuel-tax-details/sample.js | 35 - .../config.json | 7 - .../sample.css | 0 .../sample.html | 0 .../sample.html.gz | Bin 20 -> 0 bytes .../get-lightweight-device-response/sample.js | 14 - .../config.json | 7 - .../sample.css | 0 .../sample.html | 0 .../sample.html.gz | Bin 20 -> 0 bytes .../sample.js | 50 - .../get-zone-stop-exceptions/config.json | 7 - .../get-zone-stop-exceptions/sample.css | 0 .../get-zone-stop-exceptions/sample.html | 1 - .../get-zone-stop-exceptions/sample.html.gz | Bin 100 -> 0 bytes .../get-zone-stop-exceptions/sample.js | 42 - .../hos-availability-search/config.json | 7 - .../hos-availability-search/sample.css | 18 - .../hos-availability-search/sample.html | 1 - .../hos-availability-search/sample.html.gz | Bin 149 -> 0 bytes .../samples/hos-availability-search/sample.js | 63 - .../import-usa-states-as-zones/config.json | 7 - .../import-usa-states-as-zones/sample.css | 0 .../import-usa-states-as-zones/sample.html | 0 .../import-usa-states-as-zones/sample.html.gz | Bin 20 -> 0 bytes .../import-usa-states-as-zones/sample.js | 36 - .../api/samples/manipulate-user/config.json | 7 - .../api/samples/manipulate-user/sample.css | 0 .../api/samples/manipulate-user/sample.html | 1 - .../samples/manipulate-user/sample.html.gz | Bin 130 -> 0 bytes .../api/samples/manipulate-user/sample.js | 64 - .../config.json | 7 - .../sample.css | 0 .../sample.html | 1 - .../sample.html.gz | Bin 116 -> 0 bytes .../sample.js | 46 - software/api/samples/new/config.json | 7 - software/api/samples/new/sample.css | 1 - software/api/samples/new/sample.html | 0 software/api/samples/new/sample.html.gz | Bin 20 -> 0 bytes software/api/samples/new/sample.js | 2 - .../config.json | 7 - .../sample.css | 0 .../sample.html | 1 - .../sample.html.gz | Bin 122 -> 0 bytes .../sample.js | 37 - software/api/spin/spin.min.js | 2 - software/api/utils.js | 107 - software/dotnet-samples/index.html | 5 - software/dotnet-samples/index.html.gz | Bin 4900 -> 0 bytes software/guides/MyAdmin-and-DIG-flow.jpg | Bin 37482 -> 0 bytes software/guides/addin-storage/index.html | 220 - software/guides/addin-storage/index.html.gz | Bin 8745 -> 0 bytes software/guides/concepts/index.html | 349 - software/guides/concepts/index.html.gz | Bin 16617 -> 0 bytes software/guides/concepts_0.png | Bin 34227 -> 0 bytes .../custom-telematics-devices/index.html | 5 - .../custom-telematics-devices/index.html.gz | Bin 4361 -> 0 bytes software/guides/data-feed/index.html | 5 - software/guides/data-feed/index.html.gz | Bin 7126 -> 0 bytes software/guides/data-feed_0.png | Bin 46408 -> 0 bytes .../addin-icon-validator.html | 271 - .../addin-icon-validator.html.gz | Bin 2359 -> 0 bytes software/guides/developing-addins/index.html | 233 - .../guides/developing-addins/index.html.gz | Bin 15483 -> 0 bytes software/guides/developing-addins_0.png | Bin 13947 -> 0 bytes software/guides/developing-addins_1.png | Bin 7952 -> 0 bytes software/guides/developing-addins_2.png | Bin 22176 -> 0 bytes software/guides/developing-addins_3.png | Bin 374482 -> 0 bytes software/guides/drive-addins/index.html | 51 - software/guides/drive-addins/index.html.gz | Bin 9271 -> 0 bytes software/guides/drive-addins_0.png | Bin 40399 -> 0 bytes .../guides/geotab-data-connector/index.html | 116 - .../geotab-data-connector/index.html.gz | Bin 5630 -> 0 bytes software/guides/getting-started/index.html | 5 - software/guides/getting-started/index.html.gz | Bin 4736 -> 0 bytes software/guides/go-device-logging/index.html | 5 - .../guides/go-device-logging/index.html.gz | Bin 7438 -> 0 bytes software/guides/go-device-logging_0.png | Bin 14725 -> 0 bytes software/guides/map-add-ins-docs-1.jpg | Bin 101364 -> 0 bytes software/guides/map-add-ins-docs-2.jpg | Bin 208781 -> 0 bytes software/guides/map-add-ins-docs-3.jpg | Bin 37664 -> 0 bytes software/guides/map-add-ins-docs-4.jpg | Bin 55315 -> 0 bytes software/guides/map-add-ins-docs/index.html | 63 - .../guides/map-add-ins-docs/index.html.gz | Bin 11681 -> 0 bytes software/guides/mygeotab-urls/index.html | 5 - software/guides/mygeotab-urls/index.html.gz | Bin 6895 -> 0 bytes software/guides/power-bi/index.html | 5 - software/guides/power-bi/index.html.gz | Bin 3601 -> 0 bytes .../guides/third-party-devices/index.html | 5 - .../guides/third-party-devices/index.html.gz | Bin 3349 -> 0 bytes software/guides/using-go-devices/index.html | 29 - .../guides/using-go-devices/index.html.gz | Bin 5351 -> 0 bytes software/guides/using-go-devices_0.png | Bin 29269 -> 0 bytes software/guides/using-in-dotnet/index.html | 54 - software/guides/using-in-dotnet/index.html.gz | Bin 6006 -> 0 bytes software/guides/using-in-dotnet_0.png | Bin 6485 -> 0 bytes software/guides/using-in-java/index.html | 100 - software/guides/using-in-java/index.html.gz | Bin 6189 -> 0 bytes .../guides/using-in-javascript/index.html | 46 - .../guides/using-in-javascript/index.html.gz | Bin 5627 -> 0 bytes software/introduction/index.html | 5 - software/introduction/index.html.gz | Bin 5829 -> 0 bytes software/js-samples/addDriver.html | 80 - software/js-samples/addDriver.html.gz | Bin 2213 -> 0 bytes software/js-samples/addZone.html | 159 - software/js-samples/addZone.html.gz | Bin 3197 -> 0 bytes .../js-samples/css/JavaScriptExamples.css | 793 - software/js-samples/dataFeed.html | 140 - software/js-samples/dataFeed.html.gz | Bin 2658 -> 0 bytes software/js-samples/displayOdometer.html | 213 - software/js-samples/displayOdometer.html.gz | Bin 2989 -> 0 bytes software/js-samples/getCount.html | 19 - software/js-samples/getCount.html.gz | Bin 1496 -> 0 bytes software/js-samples/getLocation.html | 64 - software/js-samples/getLocation.html.gz | Bin 2150 -> 0 bytes software/js-samples/images/advanced-pill.svg | 7 - software/js-samples/images/beginner-pill.svg | 7 - .../js-samples/images/intermediate-pill.svg | 7 - software/js-samples/importDevices.html | 253 - software/js-samples/importDevices.html.gz | Bin 3718 -> 0 bytes software/js-samples/importGroups.html | 131 - software/js-samples/importGroups.html.gz | Bin 2538 -> 0 bytes software/js-samples/importHosLogs.html | 47 - software/js-samples/importHosLogs.html.gz | Bin 2064 -> 0 bytes software/js-samples/importRoutePlan.html | 202 - software/js-samples/importRoutePlan.html.gz | Bin 3642 -> 0 bytes software/js-samples/importRoutes.html | 102 - software/js-samples/importRoutes.html.gz | Bin 2698 -> 0 bytes software/js-samples/importUsers.html | 646 - software/js-samples/importUsers.html.gz | Bin 12591 -> 0 bytes software/js-samples/importZones.html | 229 - software/js-samples/importZones.html.gz | Bin 3831 -> 0 bytes software/js-samples/index.html | 5 - software/js-samples/index.html.gz | Bin 5658 -> 0 bytes software/js-samples/js/api.js | 539 - .../js/leaflet/images/layers-2x.png | Bin 1259 -> 0 bytes .../js-samples/js/leaflet/images/layers.png | Bin 696 -> 0 bytes .../js/leaflet/images/marker-icon-2x.png | Bin 1940 -> 0 bytes .../js/leaflet/images/marker-icon.png | Bin 1140 -> 0 bytes .../js/leaflet/images/marker-shadow.png | Bin 483 -> 0 bytes software/js-samples/js/leaflet/leaflet-src.js | 13170 ---------------- .../js-samples/js/leaflet/leaflet-src.map | 1 - software/js-samples/js/leaflet/leaflet.css | 624 - software/js-samples/js/leaflet/leaflet.js | 9 - software/js-samples/js/login.js | 296 - .../js/mapbox/images/icons-000000@2x.png | Bin 1353 -> 0 bytes .../js/mapbox/images/icons-ffffff@2x.png | Bin 1353 -> 0 bytes .../js-samples/js/mapbox/images/icons.svg | 273 - software/js-samples/js/mapbox/mapbox.css | 1 - software/js-samples/js/mapbox/mapbox.js | 65 - software/js-samples/moveZone.html | 138 - software/js-samples/moveZone.html.gz | Bin 2804 -> 0 bytes software/js-samples/pollTextMessages.html | 245 - software/js-samples/pollTextMessages.html.gz | Bin 3417 -> 0 bytes software/js-samples/sendTextMessage.html | 195 - software/js-samples/sendTextMessage.html.gz | Bin 3755 -> 0 bytes software/js-samples/showTrips.html | 130 - software/js-samples/showTrips.html.gz | Bin 2583 -> 0 bytes software/js-samples/singleSignOn.html | 65 - software/js-samples/singleSignOn.html.gz | Bin 2057 -> 0 bytes software/js-samples/starterKit.html | 44 - software/js-samples/starterKit.html.gz | Bin 1323 -> 0 bytes software/js-samples/statusDataSampler.html | 189 - software/js-samples/statusDataSampler.html.gz | Bin 2874 -> 0 bytes .../js-samples/templates/import-routes.xls | Bin 3782656 -> 0 bytes .../templates/import-users-template.xlsx | Bin 785425 -> 0 bytes software/js-samples/toolTemplate.html | 1 - software/js-samples/toolTemplate.html.gz | Bin 1568 -> 0 bytes static/css/main.737c598d.css | 2 + static/css/main.737c598d.css.map | 1 + static/js/main.ba7d0bb0.js | 3 + .../js/main.ba7d0bb0.js.LICENSE.txt | 34 +- static/js/main.ba7d0bb0.js.map | 1 + ...Image.5905db5b0fe682d79bb749c091f630b3.svg | 10 + ...Image.0183273ffd207c12d4a3a81260df07c2.svg | 9 + ...Image.0d9ebbda0334f0b9c8258ec367b66107.svg | 16 + ...Image.9138c989e562dc3146d7c04795e8794c.svg | 9 + 369 files changed, 118 insertions(+), 39688 deletions(-) delete mode 100644 404.html delete mode 100644 404.html.gz create mode 100644 asset-manifest.json delete mode 100644 assets/images/geotab-drive-partner-add-ins-icon.svg delete mode 100644 assets/images/geotab-drive-partner-add-ons-icon.svg delete mode 100644 assets/images/pillar.svg delete mode 100644 assets/images/pulse2.svg delete mode 100644 assets/images/touch/apple-touch-icon-144-precomposed.png delete mode 100644 assets/javascript/index.js delete mode 100644 assets/javascript/index.js.map delete mode 100644 assets/stylesheets/style-7593abd5bb.min.css delete mode 100644 assets/stylesheets/style-7593abd5bb.min.css.gz delete mode 100644 assets/stylesheets/style.css delete mode 100644 assets/stylesheets/style.css.map delete mode 100644 crossdomain.xml delete mode 100644 hardware/addon-protocols/ble/index.html delete mode 100644 hardware/addon-protocols/ble/index.html.gz delete mode 100644 hardware/addon-protocols/can/index.html delete mode 100644 hardware/addon-protocols/can/index.html.gz delete mode 100644 hardware/addon-protocols/rs232-usb/index.html delete mode 100644 hardware/addon-protocols/rs232-usb/index.html.gz delete mode 100644 hardware/addon-protocols/rs232-usb_0.png delete mode 100644 hardware/developing-an-iox/hardware-design-guide/index.html delete mode 100644 hardware/developing-an-iox/hardware-design-guide/index.html.gz delete mode 100644 hardware/developing-an-iox/hardware-design-guide_0.png delete mode 100644 hardware/developing-an-iox/hardware-design-guide_1.png delete mode 100644 hardware/developing-an-iox/hardware-design-guide_2.png delete mode 100644 hardware/developing-an-iox/hardware-design-guide_3.png delete mode 100644 hardware/developing-an-iox/hardware-design-guide_4.png delete mode 100644 hardware/developing-an-iox/hardware-design-guide_5.png delete mode 100644 hardware/developing-an-iox/messaging-protocol/index.html delete mode 100644 hardware/developing-an-iox/messaging-protocol/index.html.gz delete mode 100644 hardware/hardware-add-on-data-types/index.html delete mode 100644 hardware/hardware-add-on-data-types/index.html.gz delete mode 100644 hardware/introduction/index.html delete mode 100644 hardware/introduction/index.html.gz delete mode 100644 hardware/samples/python/index.html delete mode 100644 hardware/samples/python/index.html.gz delete mode 100644 humans.txt delete mode 100644 index.html.gz create mode 100644 logo192.png create mode 100644 logo512.png create mode 100644 manifest.json delete mode 100644 myadmin-sdk/MyAdminApiLib.zip delete mode 100644 myadmin-sdk/api/reference/index.html delete mode 100644 myadmin-sdk/api/reference/index.html.gz delete mode 100644 myadmin-sdk/code-samples/dotnet-examples/index.html delete mode 100644 myadmin-sdk/code-samples/dotnet-examples/index.html.gz delete mode 100644 myadmin-sdk/code-samples/javascript-examples/index.html delete mode 100644 myadmin-sdk/code-samples/javascript-examples/index.html.gz delete mode 100644 myadmin-sdk/code-samples/myadminApiExample.png delete mode 100644 myadmin-sdk/guides/concepts/index.html delete mode 100644 myadmin-sdk/guides/concepts/index.html.gz delete mode 100644 myadmin-sdk/guides/getting-started/index.html delete mode 100644 myadmin-sdk/guides/getting-started/index.html.gz delete mode 100644 myadmin-sdk/guides/third-party-diagnostic-codes.png delete mode 100644 myadmin-sdk/guides/using-third-party-devices/index.html delete mode 100644 myadmin-sdk/guides/using-third-party-devices/index.html.gz delete mode 100644 myadmin-sdk/guides/using-with-dotnet/index.html delete mode 100644 myadmin-sdk/guides/using-with-dotnet/index.html.gz delete mode 100644 myadmin-sdk/guides/using-with-javascript/index.html delete mode 100644 myadmin-sdk/guides/using-with-javascript/index.html.gz delete mode 100644 myadmin-sdk/introduction/index.html delete mode 100644 myadmin-sdk/introduction/index.html.gz delete mode 100644 myadmin-sdk/myAdminApi.js delete mode 100644 myadmin-sdk/new/index.html delete mode 100644 myadmin-sdk/new/index.html.gz delete mode 100644 redirects.json delete mode 100644 resources/new/index.html delete mode 100644 resources/new/index.html.gz delete mode 100644 resources/toolkits/index.html delete mode 100644 resources/toolkits/index.html.gz delete mode 100644 sitemap.xml delete mode 100644 software/api/clients/index.html delete mode 100644 software/api/clients/index.html.gz delete mode 100644 software/api/codebase/api.js delete mode 100644 software/api/codebase/console.css delete mode 100644 software/api/codebase/console.js delete mode 100644 software/api/codebase/githubApi.js delete mode 100644 software/api/codebase/iframe.html delete mode 100644 software/api/codebase/iframe.html.gz delete mode 100644 software/api/codebase/main.css delete mode 100644 software/api/codebase/promise.js delete mode 100644 software/api/codebase/third-party/Base64.js/LICENSE delete mode 100644 software/api/codebase/third-party/Base64.js/base64.min.js delete mode 100644 software/api/codebase/third-party/JSON-js/cycle.js delete mode 100644 software/api/codebase/third-party/ace/LICENSE delete mode 100644 software/api/codebase/third-party/ace/src-min/ace.js delete mode 100644 software/api/codebase/third-party/ace/src-min/mode-css.js delete mode 100644 software/api/codebase/third-party/ace/src-min/mode-html.js delete mode 100644 software/api/codebase/third-party/ace/src-min/mode-javascript.js delete mode 100644 software/api/codebase/third-party/ace/src-min/theme-chrome.js delete mode 100644 software/api/codebase/third-party/ace/src-min/worker-css.js delete mode 100644 software/api/codebase/third-party/ace/src-min/worker-html.js delete mode 100644 software/api/codebase/third-party/ace/src-min/worker-javascript.js delete mode 100644 software/api/codebase/third-party/github/LICENSE delete mode 100644 software/api/codebase/third-party/github/github.js delete mode 100644 software/api/codebase/third-party/github/underscore-min.js delete mode 100644 software/api/components/index.js delete mode 100644 software/api/components/toolbar/index.js delete mode 100644 software/api/helpers.js delete mode 100644 software/api/logger.js delete mode 100644 software/api/reference/index.html delete mode 100644 software/api/reference/index.html.gz delete mode 100644 software/api/runner-bundle.js delete mode 100644 software/api/runner.css delete mode 100644 software/api/runner.html delete mode 100644 software/api/runner.html.gz delete mode 100644 software/api/runner.js delete mode 100644 software/api/samples/add-driver-with-nothing-clearance/config.json delete mode 100644 software/api/samples/add-driver-with-nothing-clearance/sample.css delete mode 100644 software/api/samples/add-driver-with-nothing-clearance/sample.html delete mode 100644 software/api/samples/add-driver-with-nothing-clearance/sample.html.gz delete mode 100644 software/api/samples/add-driver-with-nothing-clearance/sample.js delete mode 100644 software/api/samples/add-driver/config.json delete mode 100644 software/api/samples/add-driver/sample.css delete mode 100644 software/api/samples/add-driver/sample.html delete mode 100644 software/api/samples/add-driver/sample.html.gz delete mode 100644 software/api/samples/add-driver/sample.js delete mode 100644 software/api/samples/api-call/config.json delete mode 100644 software/api/samples/api-call/sample.css delete mode 100644 software/api/samples/api-call/sample.html delete mode 100644 software/api/samples/api-call/sample.html.gz delete mode 100644 software/api/samples/api-call/sample.js delete mode 100644 software/api/samples/calculate-fuel-usage/config.json delete mode 100644 software/api/samples/calculate-fuel-usage/sample.css delete mode 100644 software/api/samples/calculate-fuel-usage/sample.html delete mode 100644 software/api/samples/calculate-fuel-usage/sample.html.gz delete mode 100644 software/api/samples/calculate-fuel-usage/sample.js delete mode 100644 software/api/samples/create-10-groups-and-add-devices/config.json delete mode 100644 software/api/samples/create-10-groups-and-add-devices/sample.css delete mode 100644 software/api/samples/create-10-groups-and-add-devices/sample.html delete mode 100644 software/api/samples/create-10-groups-and-add-devices/sample.html.gz delete mode 100644 software/api/samples/create-10-groups-and-add-devices/sample.js delete mode 100644 software/api/samples/current-location-and-driving-status/config.json delete mode 100644 software/api/samples/current-location-and-driving-status/sample.css delete mode 100644 software/api/samples/current-location-and-driving-status/sample.html delete mode 100644 software/api/samples/current-location-and-driving-status/sample.html.gz delete mode 100644 software/api/samples/current-location-and-driving-status/sample.js delete mode 100644 software/api/samples/device-location/config.json delete mode 100644 software/api/samples/device-location/sample.css delete mode 100644 software/api/samples/device-location/sample.html delete mode 100644 software/api/samples/device-location/sample.html.gz delete mode 100644 software/api/samples/device-location/sample.js delete mode 100644 software/api/samples/dvir-unrepaired-defects-last-month/config.json delete mode 100644 software/api/samples/dvir-unrepaired-defects-last-month/sample.css delete mode 100644 software/api/samples/dvir-unrepaired-defects-last-month/sample.html delete mode 100644 software/api/samples/dvir-unrepaired-defects-last-month/sample.html.gz delete mode 100644 software/api/samples/dvir-unrepaired-defects-last-month/sample.js delete mode 100644 software/api/samples/filter-out-non-valid-position-log-records/config.json delete mode 100644 software/api/samples/filter-out-non-valid-position-log-records/sample.css delete mode 100644 software/api/samples/filter-out-non-valid-position-log-records/sample.html delete mode 100644 software/api/samples/filter-out-non-valid-position-log-records/sample.html.gz delete mode 100644 software/api/samples/filter-out-non-valid-position-log-records/sample.js delete mode 100644 software/api/samples/find-current-live-address-of-driver/config.json delete mode 100644 software/api/samples/find-current-live-address-of-driver/sample.css delete mode 100644 software/api/samples/find-current-live-address-of-driver/sample.html delete mode 100644 software/api/samples/find-current-live-address-of-driver/sample.html.gz delete mode 100644 software/api/samples/find-current-live-address-of-driver/sample.js delete mode 100644 software/api/samples/find-month-with-the-longest-distance-driven/config.json delete mode 100644 software/api/samples/find-month-with-the-longest-distance-driven/sample.css delete mode 100644 software/api/samples/find-month-with-the-longest-distance-driven/sample.html delete mode 100644 software/api/samples/find-month-with-the-longest-distance-driven/sample.html.gz delete mode 100644 software/api/samples/find-month-with-the-longest-distance-driven/sample.js delete mode 100644 software/api/samples/generate-addin-guid/config.json delete mode 100644 software/api/samples/generate-addin-guid/sample.css delete mode 100644 software/api/samples/generate-addin-guid/sample.html delete mode 100644 software/api/samples/generate-addin-guid/sample.html.gz delete mode 100644 software/api/samples/generate-addin-guid/sample.js delete mode 100644 software/api/samples/get-all-unbroken-exceptions-for-the-last-week/config.json delete mode 100644 software/api/samples/get-all-unbroken-exceptions-for-the-last-week/sample.css delete mode 100644 software/api/samples/get-all-unbroken-exceptions-for-the-last-week/sample.html delete mode 100644 software/api/samples/get-all-unbroken-exceptions-for-the-last-week/sample.html.gz delete mode 100644 software/api/samples/get-all-unbroken-exceptions-for-the-last-week/sample.js delete mode 100644 software/api/samples/get-count-of-stops-at-client-zone/config.json delete mode 100644 software/api/samples/get-count-of-stops-at-client-zone/sample.css delete mode 100644 software/api/samples/get-count-of-stops-at-client-zone/sample.html delete mode 100644 software/api/samples/get-count-of-stops-at-client-zone/sample.html.gz delete mode 100644 software/api/samples/get-count-of-stops-at-client-zone/sample.js delete mode 100644 software/api/samples/get-device-speeds-and-road-speeds/config.json delete mode 100644 software/api/samples/get-device-speeds-and-road-speeds/sample.css delete mode 100644 software/api/samples/get-device-speeds-and-road-speeds/sample.html delete mode 100644 software/api/samples/get-device-speeds-and-road-speeds/sample.html.gz delete mode 100644 software/api/samples/get-device-speeds-and-road-speeds/sample.js delete mode 100644 software/api/samples/get-fuel-tax-details/config.json delete mode 100644 software/api/samples/get-fuel-tax-details/sample.css delete mode 100644 software/api/samples/get-fuel-tax-details/sample.html delete mode 100644 software/api/samples/get-fuel-tax-details/sample.html.gz delete mode 100644 software/api/samples/get-fuel-tax-details/sample.js delete mode 100644 software/api/samples/get-lightweight-device-response/config.json delete mode 100644 software/api/samples/get-lightweight-device-response/sample.css delete mode 100644 software/api/samples/get-lightweight-device-response/sample.html delete mode 100644 software/api/samples/get-lightweight-device-response/sample.html.gz delete mode 100644 software/api/samples/get-lightweight-device-response/sample.js delete mode 100644 software/api/samples/get-odometer-and-vin-for-vehicles-in-a-group/config.json delete mode 100644 software/api/samples/get-odometer-and-vin-for-vehicles-in-a-group/sample.css delete mode 100644 software/api/samples/get-odometer-and-vin-for-vehicles-in-a-group/sample.html delete mode 100644 software/api/samples/get-odometer-and-vin-for-vehicles-in-a-group/sample.html.gz delete mode 100644 software/api/samples/get-odometer-and-vin-for-vehicles-in-a-group/sample.js delete mode 100644 software/api/samples/get-zone-stop-exceptions/config.json delete mode 100644 software/api/samples/get-zone-stop-exceptions/sample.css delete mode 100644 software/api/samples/get-zone-stop-exceptions/sample.html delete mode 100644 software/api/samples/get-zone-stop-exceptions/sample.html.gz delete mode 100644 software/api/samples/get-zone-stop-exceptions/sample.js delete mode 100644 software/api/samples/hos-availability-search/config.json delete mode 100644 software/api/samples/hos-availability-search/sample.css delete mode 100644 software/api/samples/hos-availability-search/sample.html delete mode 100644 software/api/samples/hos-availability-search/sample.html.gz delete mode 100644 software/api/samples/hos-availability-search/sample.js delete mode 100644 software/api/samples/import-usa-states-as-zones/config.json delete mode 100644 software/api/samples/import-usa-states-as-zones/sample.css delete mode 100644 software/api/samples/import-usa-states-as-zones/sample.html delete mode 100644 software/api/samples/import-usa-states-as-zones/sample.html.gz delete mode 100644 software/api/samples/import-usa-states-as-zones/sample.js delete mode 100644 software/api/samples/manipulate-user/config.json delete mode 100644 software/api/samples/manipulate-user/sample.css delete mode 100644 software/api/samples/manipulate-user/sample.html delete mode 100644 software/api/samples/manipulate-user/sample.html.gz delete mode 100644 software/api/samples/manipulate-user/sample.js delete mode 100644 software/api/samples/move-vehicle-to-group-and-enable-speed-buzzing/config.json delete mode 100644 software/api/samples/move-vehicle-to-group-and-enable-speed-buzzing/sample.css delete mode 100644 software/api/samples/move-vehicle-to-group-and-enable-speed-buzzing/sample.html delete mode 100644 software/api/samples/move-vehicle-to-group-and-enable-speed-buzzing/sample.html.gz delete mode 100644 software/api/samples/move-vehicle-to-group-and-enable-speed-buzzing/sample.js delete mode 100644 software/api/samples/new/config.json delete mode 100644 software/api/samples/new/sample.css delete mode 100644 software/api/samples/new/sample.html delete mode 100644 software/api/samples/new/sample.html.gz delete mode 100644 software/api/samples/new/sample.js delete mode 100644 software/api/samples/replace-existing-vehicle-with-new-go-device/config.json delete mode 100644 software/api/samples/replace-existing-vehicle-with-new-go-device/sample.css delete mode 100644 software/api/samples/replace-existing-vehicle-with-new-go-device/sample.html delete mode 100644 software/api/samples/replace-existing-vehicle-with-new-go-device/sample.html.gz delete mode 100644 software/api/samples/replace-existing-vehicle-with-new-go-device/sample.js delete mode 100644 software/api/spin/spin.min.js delete mode 100644 software/api/utils.js delete mode 100644 software/dotnet-samples/index.html delete mode 100644 software/dotnet-samples/index.html.gz delete mode 100644 software/guides/MyAdmin-and-DIG-flow.jpg delete mode 100644 software/guides/addin-storage/index.html delete mode 100644 software/guides/addin-storage/index.html.gz delete mode 100644 software/guides/concepts/index.html delete mode 100644 software/guides/concepts/index.html.gz delete mode 100644 software/guides/concepts_0.png delete mode 100644 software/guides/custom-telematics-devices/index.html delete mode 100644 software/guides/custom-telematics-devices/index.html.gz delete mode 100644 software/guides/data-feed/index.html delete mode 100644 software/guides/data-feed/index.html.gz delete mode 100644 software/guides/data-feed_0.png delete mode 100644 software/guides/developing-addins/addin-icon-validator.html delete mode 100644 software/guides/developing-addins/addin-icon-validator.html.gz delete mode 100644 software/guides/developing-addins/index.html delete mode 100644 software/guides/developing-addins/index.html.gz delete mode 100644 software/guides/developing-addins_0.png delete mode 100644 software/guides/developing-addins_1.png delete mode 100644 software/guides/developing-addins_2.png delete mode 100644 software/guides/developing-addins_3.png delete mode 100644 software/guides/drive-addins/index.html delete mode 100644 software/guides/drive-addins/index.html.gz delete mode 100644 software/guides/drive-addins_0.png delete mode 100644 software/guides/geotab-data-connector/index.html delete mode 100644 software/guides/geotab-data-connector/index.html.gz delete mode 100644 software/guides/getting-started/index.html delete mode 100644 software/guides/getting-started/index.html.gz delete mode 100644 software/guides/go-device-logging/index.html delete mode 100644 software/guides/go-device-logging/index.html.gz delete mode 100644 software/guides/go-device-logging_0.png delete mode 100644 software/guides/map-add-ins-docs-1.jpg delete mode 100644 software/guides/map-add-ins-docs-2.jpg delete mode 100644 software/guides/map-add-ins-docs-3.jpg delete mode 100644 software/guides/map-add-ins-docs-4.jpg delete mode 100644 software/guides/map-add-ins-docs/index.html delete mode 100644 software/guides/map-add-ins-docs/index.html.gz delete mode 100644 software/guides/mygeotab-urls/index.html delete mode 100644 software/guides/mygeotab-urls/index.html.gz delete mode 100644 software/guides/power-bi/index.html delete mode 100644 software/guides/power-bi/index.html.gz delete mode 100644 software/guides/third-party-devices/index.html delete mode 100644 software/guides/third-party-devices/index.html.gz delete mode 100644 software/guides/using-go-devices/index.html delete mode 100644 software/guides/using-go-devices/index.html.gz delete mode 100644 software/guides/using-go-devices_0.png delete mode 100644 software/guides/using-in-dotnet/index.html delete mode 100644 software/guides/using-in-dotnet/index.html.gz delete mode 100644 software/guides/using-in-dotnet_0.png delete mode 100644 software/guides/using-in-java/index.html delete mode 100644 software/guides/using-in-java/index.html.gz delete mode 100644 software/guides/using-in-javascript/index.html delete mode 100644 software/guides/using-in-javascript/index.html.gz delete mode 100644 software/introduction/index.html delete mode 100644 software/introduction/index.html.gz delete mode 100644 software/js-samples/addDriver.html delete mode 100644 software/js-samples/addDriver.html.gz delete mode 100644 software/js-samples/addZone.html delete mode 100644 software/js-samples/addZone.html.gz delete mode 100644 software/js-samples/css/JavaScriptExamples.css delete mode 100644 software/js-samples/dataFeed.html delete mode 100644 software/js-samples/dataFeed.html.gz delete mode 100644 software/js-samples/displayOdometer.html delete mode 100644 software/js-samples/displayOdometer.html.gz delete mode 100644 software/js-samples/getCount.html delete mode 100644 software/js-samples/getCount.html.gz delete mode 100644 software/js-samples/getLocation.html delete mode 100644 software/js-samples/getLocation.html.gz delete mode 100644 software/js-samples/images/advanced-pill.svg delete mode 100644 software/js-samples/images/beginner-pill.svg delete mode 100644 software/js-samples/images/intermediate-pill.svg delete mode 100644 software/js-samples/importDevices.html delete mode 100644 software/js-samples/importDevices.html.gz delete mode 100644 software/js-samples/importGroups.html delete mode 100644 software/js-samples/importGroups.html.gz delete mode 100644 software/js-samples/importHosLogs.html delete mode 100644 software/js-samples/importHosLogs.html.gz delete mode 100644 software/js-samples/importRoutePlan.html delete mode 100644 software/js-samples/importRoutePlan.html.gz delete mode 100644 software/js-samples/importRoutes.html delete mode 100644 software/js-samples/importRoutes.html.gz delete mode 100644 software/js-samples/importUsers.html delete mode 100644 software/js-samples/importUsers.html.gz delete mode 100644 software/js-samples/importZones.html delete mode 100644 software/js-samples/importZones.html.gz delete mode 100644 software/js-samples/index.html delete mode 100644 software/js-samples/index.html.gz delete mode 100644 software/js-samples/js/api.js delete mode 100644 software/js-samples/js/leaflet/images/layers-2x.png delete mode 100644 software/js-samples/js/leaflet/images/layers.png delete mode 100644 software/js-samples/js/leaflet/images/marker-icon-2x.png delete mode 100644 software/js-samples/js/leaflet/images/marker-icon.png delete mode 100644 software/js-samples/js/leaflet/images/marker-shadow.png delete mode 100644 software/js-samples/js/leaflet/leaflet-src.js delete mode 100644 software/js-samples/js/leaflet/leaflet-src.map delete mode 100644 software/js-samples/js/leaflet/leaflet.css delete mode 100644 software/js-samples/js/leaflet/leaflet.js delete mode 100644 software/js-samples/js/login.js delete mode 100644 software/js-samples/js/mapbox/images/icons-000000@2x.png delete mode 100644 software/js-samples/js/mapbox/images/icons-ffffff@2x.png delete mode 100644 software/js-samples/js/mapbox/images/icons.svg delete mode 100644 software/js-samples/js/mapbox/mapbox.css delete mode 100644 software/js-samples/js/mapbox/mapbox.js delete mode 100644 software/js-samples/moveZone.html delete mode 100644 software/js-samples/moveZone.html.gz delete mode 100644 software/js-samples/pollTextMessages.html delete mode 100644 software/js-samples/pollTextMessages.html.gz delete mode 100644 software/js-samples/sendTextMessage.html delete mode 100644 software/js-samples/sendTextMessage.html.gz delete mode 100644 software/js-samples/showTrips.html delete mode 100644 software/js-samples/showTrips.html.gz delete mode 100644 software/js-samples/singleSignOn.html delete mode 100644 software/js-samples/singleSignOn.html.gz delete mode 100644 software/js-samples/starterKit.html delete mode 100644 software/js-samples/starterKit.html.gz delete mode 100644 software/js-samples/statusDataSampler.html delete mode 100644 software/js-samples/statusDataSampler.html.gz delete mode 100644 software/js-samples/templates/import-routes.xls delete mode 100644 software/js-samples/templates/import-users-template.xlsx delete mode 100644 software/js-samples/toolTemplate.html delete mode 100644 software/js-samples/toolTemplate.html.gz create mode 100644 static/css/main.737c598d.css create mode 100644 static/css/main.737c598d.css.map create mode 100644 static/js/main.ba7d0bb0.js rename software/api/runner-bundle.js.LICENSE.txt => static/js/main.ba7d0bb0.js.LICENSE.txt (73%) create mode 100644 static/js/main.ba7d0bb0.js.map create mode 100644 static/media/driveImage.5905db5b0fe682d79bb749c091f630b3.svg create mode 100644 static/media/hardwareImage.0183273ffd207c12d4a3a81260df07c2.svg create mode 100644 static/media/myadminImage.0d9ebbda0334f0b9c8258ec367b66107.svg create mode 100644 static/media/mygeotabImage.9138c989e562dc3146d7c04795e8794c.svg diff --git a/404.html b/404.html deleted file mode 100644 index 6e293d0b3..000000000 --- a/404.html +++ /dev/null @@ -1,5 +0,0 @@ -404: Page not found | Geotab Developers

404: Page not found

Sorry, we've misplaced that URL or it's pointing to something that doesn't exist. Head back home to try finding it again.

\ No newline at end of file diff --git a/404.html.gz b/404.html.gz deleted file mode 100644 index d2a10fa66cc36bfbb09ffe9752c4c0dfde17ee22..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1346 zcmV-I1-<$oiwFP!000001HD#lZ`(Ey{=Q$q>cbSHdP!=hNgd1W(gxjzt}B+L>rfO0 zC7vZZ6seMw95>B>-%*ldrO94U3=0rh67L?~J@@cVvj;DJeSY@Gn-fylQp{)WN(7a8 zaw72wD4Wkpu#{v4)dp-*+eLWTzbmY*LikkkCV3a0{}4V`WkoGd1&~Zh3(_XuPbUem z9K7B|(h`z}!>Ur+Zmm|F*&<=k@C?HCA>fi*PDN-kDj?ZI0F!B6Sz>gSxSh>3j;ok1!@W}-5Z%oJ8 z-hSNqFU@=wcROr$n(r)XnOUyn&MIJm2}Hn0SF88pL*g!9zP$f%HpR}BpW8Ar zmTK!yzavD#ioBo}c1BSS_KcT!7eIsQPFu^R@vlcm4b^0kFlTZipu|;kygsA(YvgIi zjNb2l2oP(D7MTV_>y2ib8_h?=#`602*#2ge!W z_#56nMC90(MEffb_jNzsC?Rj zZ0+ya{FY*AZHpoPSpl2S&VZKp?I4sB?u`q`kLRaDNCsX0D6b(dH^guY4yxg3L#$H5 zU`U#9G|DkiE_1Ttwjd}Tu4*({S7@jfn~>0#)tNQXeR2Iy`wA{Ehz5~lc)BD)+NdjuTCSbV#6+CEJM`wp*vyMTHJ*Dtr#xBkBz4C(~N3%V`u8JqYZvTWO>6MqswME;ph3mB z-S1-}@UZ-Y6#usH-u1S%+^EplwE$B9*iMG62Q@g+OuSv|@56)rCu5qj{WOhAE~Ctt zZ-x5G*A)>$tLm%>IhHQ0G+^7UlmUi}eg>25O(vK4e;1pVNQ#MD=lBi~x(vahO6G%o zJ%cs3S#60k_6Fb!+PGH{UT^?*13y&^bt~0|MZVDP(6}Mu{o@3Yrmcb-A%ljGTLRAu zo9vQq*6)&*pM-H!3A&zQlYpa!8=i8(?Rr{p#sEJ-;%;-i*~a6d1dS2WhGYWiNl>~? zilemq3E{G$l7%JPykJyckOjX4hMZL-&D%E~X-{E-Mm%p%)-gp`+JpAKsYa{;V+08) z^OlW!%2RP6sE$mN_lb^oH>u-YA1w>HbaD?xkqL(#mdyy zy1qS38Xa>igC;B#dFXib2$H{f+cuBh4^JWu1x=kIwn-DmTyO504sv&!fqtzOn)^yZ z1N`YQU14a`OUD(3@l8=GBm|4KH+T&Ha@Hfj-h5W|w!-P~RB62q$O`-hNZINn!((C# zYRUO;uZU|l);FY5*mGRFv5FXl?Y3wioEcMKq;Cmaa$_TcrS0lS=0D;Nm^iXupo=5d zxm&$PnMmdUxFs~Fc>HH^h52D#w?09KwO`VPc1tlj!{zO-$+$aDaXXd%1l*n%P;m \ No newline at end of file diff --git a/assets/images/geotab-drive-partner-add-ons-icon.svg b/assets/images/geotab-drive-partner-add-ons-icon.svg deleted file mode 100644 index 631b8f66f..000000000 --- a/assets/images/geotab-drive-partner-add-ons-icon.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/assets/images/pillar.svg b/assets/images/pillar.svg deleted file mode 100644 index 1c4996a4d..000000000 --- a/assets/images/pillar.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/assets/images/pulse2.svg b/assets/images/pulse2.svg deleted file mode 100644 index 7cee14372..000000000 --- a/assets/images/pulse2.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/assets/images/touch/apple-touch-icon-144-precomposed.png b/assets/images/touch/apple-touch-icon-144-precomposed.png deleted file mode 100644 index 29ec2f1b02549fe0c6292ecbd2fb6c239a353bac..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 539 zcmeAS@N?(olHy`uVBq!ia0vp^6F``Q8Ax83A=Cw=j01c^T-7vm^$kocEo__|U46X# z!a~B6;*xSQb1Ta#+nU>^Oq{Z4{-RCmHy+x5@XE!@&z?N}|NsBpJB-;342+9CT^vIy zZoRz~yRKP5pzR?ei{Q`O|Fh1!o_C$yr<;3-$8&!CEk`L4N_ zrWikb!mjgj8;4Bz^R2$Scl7o@&D`;O>4o?ifA_rHwwFclrcUKGHV2o+-8WWUWS;og zrCq5*ru>?jtH9ekwJyR(^xn)?%Sd+c6n2>^xU#8i^42)m07Zh)uy3511o~MbY_*j#ghJnIr&Lq8si+(nw&1Bw^-87@R*0@Vy z=kueE0TZnqoENC<{BOwc$Y%MyckK^tj;?5|nR-{Qiq~i%M}BzWf}%h586HoQ(kot- zx4r%Rx5nAKQR$-Bf}Bj%0I?rcW_(#E1$CKMot*6R-qG}Uf~QVeV$F{~njSyjtYubc zU|`~a6EC`Bp47cMky);F{Mps~!nZtb(}Z9B{?FXJV0q8pi>Dje{(oWNP=JIpD6qdo a|7GN>Tqn|^%GCgjZ3a(QKbLh*2~7YArS4$> diff --git a/assets/javascript/index.js b/assets/javascript/index.js deleted file mode 100644 index a9d8fc8d0..000000000 --- a/assets/javascript/index.js +++ /dev/null @@ -1,137 +0,0 @@ -"use strict"; - -var anchorForId = function anchorForId(id) { - var anchor = document.createElement("a"); - anchor.className = "header-link"; - anchor.href = "#" + id; - anchor.innerHTML = "Permalink"; - anchor.title = "Permalink"; - return anchor; -}; -var linkifyAnchors = function linkifyAnchors(level, containingElement) { - var headers = containingElement.getElementsByTagName("h" + level); - for (var h = 0; h < headers.length; h++) { - var header = headers[h]; - if (typeof header.id !== "undefined" && header.id !== "") { - header.className += " header"; - header.appendChild(anchorForId(header.id)); - } - } -}; -var setupSidebarToggle = function setupSidebarToggle() { - var toggleClass = " active"; - var toggler = document.querySelector("#toggler"); - var wrapper = document.querySelector("#wrapper"); - toggler.addEventListener("click", function (e) { - e.preventDefault(); - if (wrapper.className.indexOf(toggleClass) > -1) { - wrapper.className = wrapper.className.replace(toggleClass, ""); - } else { - wrapper.className += toggleClass; - } - }); - if (window.location.pathname.indexOf("/software/api/runner.html") > -1) { - toggler.style.display = 'none'; - } -}; -window.addEventListener("DOMContentLoaded", function () { - var contentBlock = document.querySelector("article"); - if (!contentBlock) { - return; - } - for (var level = 2; level <= 3; level++) { - linkifyAnchors(level, contentBlock); - } - setupSidebarToggle(); - scrollSidebar(); -}); -(function (document, history, location) { - var HISTORY_SUPPORT = !!(history && history.pushState); - var anchorScrolls = { - ANCHOR_REGEX: /^#[^ ]+$/, - OFFSET_HEIGHT_PX: 60, - /** - * Establish events, and fix initial scroll position if a hash is provided. - */ - init: function init() { - this.scrollToCurrent(); - window.addEventListener("hashchange", this.scrollToCurrent.bind(this)); - document.body.addEventListener("click", this.delegateAnchors.bind(this)); - }, - /** - * Return the offset amount to deduct from the normal scroll position. - * Modify as appropriate to allow for dynamic calculations - */ - getFixedOffset: function getFixedOffset() { - return this.OFFSET_HEIGHT_PX; - }, - /** - * If the provided href is an anchor which resolves to an element on the - * page, scroll to it. - * @param {String} href - * @return {Boolean} - Was the href an anchor. - */ - scrollIfAnchor: function scrollIfAnchor(href, pushToHistory) { - var match, rect, anchorOffset; - if (!this.ANCHOR_REGEX.test(href)) { - return false; - } - match = document.getElementById(href.slice(1)); - if (match) { - rect = match.getBoundingClientRect(); - anchorOffset = window.pageYOffset + rect.top - this.getFixedOffset(); - window.scrollTo(window.pageXOffset, anchorOffset); - - // Add the state to history as-per normal anchor links - if (HISTORY_SUPPORT && pushToHistory) { - history.pushState({}, document.title, location.pathname + href); - } - } - return !!match; - }, - /** - * Attempt to scroll to the current location's hash. - */ - scrollToCurrent: function scrollToCurrent() { - this.scrollIfAnchor(window.location.hash); - }, - /** - * If the click event's target was an anchor, fix the scroll position. - */ - delegateAnchors: function delegateAnchors(e) { - var elem = e.target; - if (elem.nodeName === "A" && this.scrollIfAnchor(elem.getAttribute("href"), true)) { - e.preventDefault(); - } - } - }; - window.addEventListener("DOMContentLoaded", anchorScrolls.init.bind(anchorScrolls)); -})(window.document, window.history, window.location); -function scrollSidebar() { - /** - * Scroll the sidebar link to top, depending which one was clicked - */ - var pathName = window.location.pathname; - var links = document.querySelectorAll("a[href=\"".concat(pathName, "\"]")); - if ((links === null || links === void 0 ? void 0 : links.length) > 0) { - links[0].scrollIntoView(); - } - - /** - * Alternatively, scroll the sidebar to positions, depending on the path of - * the active page - */ - // let pathName = window.location.pathname; - // let softwareApiPosition = 810; - // let hardwarePosition = 1210; - // let myadminPosition = 1760; - // if (pathName.includes("/software/api")||pathName.includes("/software/js-samples")) { - // //TODO: consider different browsers - // document.getElementById("sidebar-wrapper").scrollTop = softwareApiPosition; - // } else if (pathName.includes("/hardware/")) { - // document.getElementById("sidebar-wrapper").scrollTop = hardwarePosition; - // } else if (pathName.includes("/myadmin-sdk/")) { - // document.getElementById("sidebar-wrapper").scrollTop = myadminPosition; - // } else {} -} -//# sourceMappingURL=index.js.map diff --git a/assets/javascript/index.js.map b/assets/javascript/index.js.map deleted file mode 100644 index 487c93a44..000000000 --- a/assets/javascript/index.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["main.js"],"names":["anchorForId","id","anchor","document","createElement","className","href","innerHTML","title","linkifyAnchors","level","containingElement","headers","getElementsByTagName","h","length","header","appendChild","setupSidebarToggle","toggleClass","toggler","querySelector","wrapper","addEventListener","e","preventDefault","indexOf","replace","window","location","pathname","style","display","contentBlock","scrollSidebar","history","HISTORY_SUPPORT","pushState","anchorScrolls","ANCHOR_REGEX","OFFSET_HEIGHT_PX","init","scrollToCurrent","bind","body","delegateAnchors","getFixedOffset","scrollIfAnchor","pushToHistory","match","rect","anchorOffset","test","getElementById","slice","getBoundingClientRect","pageYOffset","top","scrollTo","pageXOffset","hash","elem","target","nodeName","getAttribute","pathName","links","querySelectorAll","scrollIntoView"],"mappings":"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","file":"index.js","sourcesContent":["var anchorForId = function (id) {\n var anchor = document.createElement(\"a\");\n anchor.className = \"header-link\";\n anchor.href = \"#\" + id;\n anchor.innerHTML = `Permalink`;\n anchor.title = \"Permalink\";\n return anchor;\n};\n\nvar linkifyAnchors = function (level, containingElement) {\n var headers = containingElement.getElementsByTagName(\"h\" + level);\n for (var h = 0; h < headers.length; h++) {\n var header = headers[h];\n\n if (typeof header.id !== \"undefined\" && header.id !== \"\") {\n header.className += \" header\";\n header.appendChild(anchorForId(header.id));\n }\n }\n};\n\nvar setupSidebarToggle = function () {\n const toggleClass = \" active\";\n var toggler = document.querySelector(\"#toggler\");\n var wrapper = document.querySelector(\"#wrapper\");\n toggler.addEventListener(\"click\", (e) => {\n e.preventDefault();\n if (wrapper.className.indexOf(toggleClass) > -1) {\n wrapper.className = wrapper.className.replace(toggleClass, \"\");\n } else {\n wrapper.className += toggleClass;\n }\n });\n if (window.location.pathname.indexOf(\"/software/api/runner.html\") > -1) {\n toggler.style.display = 'none';\n }\n};\n\nwindow.addEventListener(\"DOMContentLoaded\", () => {\n var contentBlock = document.querySelector(\"article\");\n if (!contentBlock) {\n return;\n }\n for (var level = 2; level <= 3; level++) {\n linkifyAnchors(level, contentBlock);\n }\n setupSidebarToggle();\n scrollSidebar();\n});\n\n(function (document, history, location) {\n var HISTORY_SUPPORT = !!(history && history.pushState);\n\n var anchorScrolls = {\n ANCHOR_REGEX: /^#[^ ]+$/,\n OFFSET_HEIGHT_PX: 60,\n\n /**\n * Establish events, and fix initial scroll position if a hash is provided.\n */\n init: function () {\n this.scrollToCurrent();\n window.addEventListener(\"hashchange\", this.scrollToCurrent.bind(this));\n document.body.addEventListener(\"click\", this.delegateAnchors.bind(this));\n },\n\n /**\n * Return the offset amount to deduct from the normal scroll position.\n * Modify as appropriate to allow for dynamic calculations\n */\n getFixedOffset: function () {\n return this.OFFSET_HEIGHT_PX;\n },\n\n /**\n * If the provided href is an anchor which resolves to an element on the\n * page, scroll to it.\n * @param {String} href\n * @return {Boolean} - Was the href an anchor.\n */\n scrollIfAnchor: function (href, pushToHistory) {\n var match, rect, anchorOffset;\n\n if (!this.ANCHOR_REGEX.test(href)) {\n return false;\n }\n\n match = document.getElementById(href.slice(1));\n\n if (match) {\n rect = match.getBoundingClientRect();\n anchorOffset = window.pageYOffset + rect.top - this.getFixedOffset();\n window.scrollTo(window.pageXOffset, anchorOffset);\n\n // Add the state to history as-per normal anchor links\n if (HISTORY_SUPPORT && pushToHistory) {\n history.pushState({}, document.title, location.pathname + href);\n }\n }\n\n return !!match;\n },\n\n /**\n * Attempt to scroll to the current location's hash.\n */\n scrollToCurrent: function () {\n this.scrollIfAnchor(window.location.hash);\n },\n\n /**\n * If the click event's target was an anchor, fix the scroll position.\n */\n delegateAnchors: function (e) {\n var elem = e.target;\n\n if (\n elem.nodeName === \"A\" &&\n this.scrollIfAnchor(elem.getAttribute(\"href\"), true)\n ) {\n e.preventDefault();\n }\n }\n };\n\n window.addEventListener(\n \"DOMContentLoaded\", anchorScrolls.init.bind(anchorScrolls)\n );\n})(window.document, window.history, window.location);\n\nfunction scrollSidebar() {\n /**\n * Scroll the sidebar link to top, depending which one was clicked\n */\n let pathName = window.location.pathname;\n let links = document.querySelectorAll(`a[href=\"${pathName}\"]`);\n if (links?.length > 0) {\n links[0].scrollIntoView();\n }\n\n /**\n * Alternatively, scroll the sidebar to positions, depending on the path of\n * the active page\n */\n// let pathName = window.location.pathname;\n// let softwareApiPosition = 810;\n// let hardwarePosition = 1210;\n// let myadminPosition = 1760;\n// if (pathName.includes(\"/software/api\")||pathName.includes(\"/software/js-samples\")) {\n// //TODO: consider different browsers\n// document.getElementById(\"sidebar-wrapper\").scrollTop = softwareApiPosition;\n// } else if (pathName.includes(\"/hardware/\")) {\n// document.getElementById(\"sidebar-wrapper\").scrollTop = hardwarePosition;\n// } else if (pathName.includes(\"/myadmin-sdk/\")) {\n// document.getElementById(\"sidebar-wrapper\").scrollTop = myadminPosition;\n// } else {}\n }\n"]} \ No newline at end of file diff --git a/assets/stylesheets/style-7593abd5bb.min.css b/assets/stylesheets/style-7593abd5bb.min.css deleted file mode 100644 index 190ce30f9..000000000 --- a/assets/stylesheets/style-7593abd5bb.min.css +++ /dev/null @@ -1,6 +0,0 @@ -@charset "UTF-8";/*! - * Bootstrap v4.0.0-beta.2 (https://getbootstrap.com) - * Copyright 2011-2017 The Bootstrap Authors - * Copyright 2011-2017 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - */:root{--blue:#007bff;--indigo:#6610f2;--purple:#6f42c1;--pink:#e83e8c;--red:#dc3545;--orange:#fd7e14;--yellow:#ffc107;--green:#28a745;--teal:#20c997;--cyan:#17a2b8;--white:#fff;--gray:#868e96;--gray-dark:#343a40;--primary:#007bff;--secondary:#868e96;--success:#28a745;--info:#17a2b8;--warning:#ffc107;--danger:#dc3545;--light:#f8f9fa;--dark:#343a40;--breakpoint-xs:0;--breakpoint-sm:576px;--breakpoint-md:768px;--breakpoint-lg:992px;--breakpoint-xl:1200px;--font-family-sans-serif:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";--font-family-monospace:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace}@media print{*,::after,::before{text-shadow:none!important;-webkit-box-shadow:none!important;box-shadow:none!important}a,a:visited{text-decoration:underline}abbr[title]::after{content:" (" attr(title) ")"}pre{white-space:pre-wrap!important}blockquote,pre{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}img,tr{page-break-inside:avoid}h2,h3,p{orphans:3;widows:3}h2,h3{page-break-after:avoid}.navbar{display:none}.badge,.beta,.legacy{border:1px solid #000}.table,table{border-collapse:collapse!important}.table td,.table th,table td,table th{background-color:#fff!important}.table-bordered td,.table-bordered th,table td,table th{border:1px solid #ddd!important}}*,::after,::before{-webkit-box-sizing:border-box;box-sizing:border-box}html{font-family:sans-serif;line-height:1.15;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;-ms-overflow-style:scrollbar;-webkit-tap-highlight-color:transparent}@-ms-viewport{width:device-width}article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";font-size:1rem;font-weight:400;line-height:1.5;color:#212529;text-align:left;background-color:#fff}[tabindex="-1"]:focus{outline:0!important}hr{-webkit-box-sizing:content-box;box-sizing:content-box;height:0;overflow:visible}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem}p{margin-top:0;margin-bottom:1rem}abbr[data-original-title],abbr[title]{text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted;cursor:help;border-bottom:0}address{margin-bottom:1rem;font-style:normal;line-height:inherit}dl,ol,ul{margin-top:0;margin-bottom:1rem}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}dfn{font-style:italic}b,strong{font-weight:bolder}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:#007bff;text-decoration:none;background-color:transparent;-webkit-text-decoration-skip:objects}a:hover{color:#0056b3;text-decoration:underline}a:not([href]):not([tabindex]){color:inherit;text-decoration:none}a:not([href]):not([tabindex]):focus,a:not([href]):not([tabindex]):hover{color:inherit;text-decoration:none}a:not([href]):not([tabindex]):focus{outline:0}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}pre{margin-top:0;margin-bottom:1rem;overflow:auto;-ms-overflow-style:scrollbar}figure{margin:0 0 1rem}img{vertical-align:middle;border-style:none}svg:not(:root){overflow:hidden}[role=button],a,area,button,input:not([type=range]),label,select,summary,textarea{-ms-touch-action:manipulation;touch-action:manipulation}table{border-collapse:collapse}caption{padding-top:.75rem;padding-bottom:.75rem;color:#868e96;text-align:left;caption-side:bottom}th{text-align:inherit}label{display:inline-block;margin-bottom:.5rem}button{border-radius:0}button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}button,input,optgroup,select,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,input{overflow:visible}button,select{text-transform:none}[type=reset],[type=submit],button,html [type=button]{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{padding:0;border-style:none}input[type=checkbox],input[type=radio]{-webkit-box-sizing:border-box;box-sizing:border-box;padding:0}input[type=date],input[type=datetime-local],input[type=month],input[type=time]{-webkit-appearance:listbox}textarea{overflow:auto;resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;max-width:100%;padding:0;margin-bottom:.5rem;font-size:1.5rem;line-height:inherit;color:inherit;white-space:normal}progress{vertical-align:baseline}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:none}[type=search]::-webkit-search-cancel-button,[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}summary{display:list-item}template{display:none}[hidden]{display:none!important}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{margin-bottom:.5rem;font-family:inherit;font-weight:500;line-height:1.2;color:inherit}.h1,h1{font-size:2.5rem}.h2,h2{font-size:2rem}.h3,h3{font-size:1.75rem}.h4,h4{font-size:1.5rem}.h5,h5{font-size:1.25rem}.h6,h6{font-size:1rem}.lead{font-size:1.25rem;font-weight:300}.display-1{font-size:6rem;font-weight:300;line-height:1.2}.display-2{font-size:5.5rem;font-weight:300;line-height:1.2}.display-3{font-size:4.5rem;font-weight:300;line-height:1.2}.display-4{font-size:3.5rem;font-weight:300;line-height:1.2}hr{margin-top:1rem;margin-bottom:1rem;border:0;border-top:1px solid rgba(0,0,0,.1)}.small,small{font-size:80%;font-weight:400}.mark,mark{padding:.2em;background-color:#fcf8e3}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none}.list-inline-item{display:inline-block}.list-inline-item:not(:last-child){margin-right:.5rem}.initialism{font-size:90%;text-transform:uppercase}.blockquote{margin-bottom:1rem;font-size:1.25rem}.blockquote-footer{display:block;font-size:80%;color:#868e96}.blockquote-footer::before{content:"— "}.img-fluid{max-width:100%;height:auto}.img-thumbnail,main img:not(.welcome){padding:.25rem;background-color:#fff;border:1px solid #dee2e6;border-radius:.25rem;max-width:100%;height:auto}.figure{display:inline-block}.figure-img{margin-bottom:.5rem;line-height:1}.figure-caption{font-size:90%;color:#868e96}code,kbd,pre,samp{font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace}code{padding:.2rem .4rem;font-size:90%;color:#bd4147;background-color:#f8f9fa;border-radius:.25rem}a>code{padding:0;color:inherit;background-color:inherit}kbd{padding:.2rem .4rem;font-size:90%;color:#fff;background-color:#212529;border-radius:.2rem}kbd kbd{padding:0;font-size:100%;font-weight:700}pre{display:block;font-size:90%;color:#212529}pre code{padding:0;font-size:inherit;color:inherit;background-color:transparent;border-radius:0}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{width:100%;padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}@media (min-width:576px){.container{max-width:540px}}@media (min-width:768px){.container{max-width:720px}}@media (min-width:992px){.container{max-width:960px}}@media (min-width:1200px){.container{max-width:1140px}}.container-fluid{width:100%;padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}.row{display:-ms-flexbox;display:-webkit-box;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-right:-15px;margin-left:-15px}.no-gutters{margin-right:0;margin-left:0}.no-gutters>.col,.no-gutters>[class*=col-]{padding-right:0;padding-left:0}.col,.col-1,.col-10,.col-11,.col-12,.col-2,.col-3,.col-4,.col-5,.col-6,.col-7,.col-8,.col-9,.col-auto,.col-lg,.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-auto,.col-md,.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-auto,.col-sm,.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-auto,.col-xl,.col-xl-1,.col-xl-10,.col-xl-11,.col-xl-12,.col-xl-2,.col-xl-3,.col-xl-4,.col-xl-5,.col-xl-6,.col-xl-7,.col-xl-8,.col-xl-9,.col-xl-auto{position:relative;width:100%;min-height:1px;padding-right:15px;padding-left:15px}.col{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;-webkit-box-flex:1;flex-grow:1;max-width:100%}.col-auto{-ms-flex:0 0 auto;-webkit-box-flex:0;flex:0 0 auto;width:auto;max-width:none}.col-1{-ms-flex:0 0 8.333333%;-webkit-box-flex:0;flex:0 0 8.333333%;max-width:8.333333%}.col-2{-ms-flex:0 0 16.666667%;-webkit-box-flex:0;flex:0 0 16.666667%;max-width:16.666667%}.col-3{-ms-flex:0 0 25%;-webkit-box-flex:0;flex:0 0 25%;max-width:25%}.col-4{-ms-flex:0 0 33.333333%;-webkit-box-flex:0;flex:0 0 33.333333%;max-width:33.333333%}.col-5{-ms-flex:0 0 41.666667%;-webkit-box-flex:0;flex:0 0 41.666667%;max-width:41.666667%}.col-6{-ms-flex:0 0 50%;-webkit-box-flex:0;flex:0 0 50%;max-width:50%}.col-7{-ms-flex:0 0 58.333333%;-webkit-box-flex:0;flex:0 0 58.333333%;max-width:58.333333%}.col-8{-ms-flex:0 0 66.666667%;-webkit-box-flex:0;flex:0 0 66.666667%;max-width:66.666667%}.col-9{-ms-flex:0 0 75%;-webkit-box-flex:0;flex:0 0 75%;max-width:75%}.col-10{-ms-flex:0 0 83.333333%;-webkit-box-flex:0;flex:0 0 83.333333%;max-width:83.333333%}.col-11{-ms-flex:0 0 91.666667%;-webkit-box-flex:0;flex:0 0 91.666667%;max-width:91.666667%}.col-12{-ms-flex:0 0 100%;-webkit-box-flex:0;flex:0 0 100%;max-width:100%}.order-first{-ms-flex-order:-1;-webkit-box-ordinal-group:0;order:-1}.order-1{-ms-flex-order:1;-webkit-box-ordinal-group:2;order:1}.order-2{-ms-flex-order:2;-webkit-box-ordinal-group:3;order:2}.order-3{-ms-flex-order:3;-webkit-box-ordinal-group:4;order:3}.order-4{-ms-flex-order:4;-webkit-box-ordinal-group:5;order:4}.order-5{-ms-flex-order:5;-webkit-box-ordinal-group:6;order:5}.order-6{-ms-flex-order:6;-webkit-box-ordinal-group:7;order:6}.order-7{-ms-flex-order:7;-webkit-box-ordinal-group:8;order:7}.order-8{-ms-flex-order:8;-webkit-box-ordinal-group:9;order:8}.order-9{-ms-flex-order:9;-webkit-box-ordinal-group:10;order:9}.order-10{-ms-flex-order:10;-webkit-box-ordinal-group:11;order:10}.order-11{-ms-flex-order:11;-webkit-box-ordinal-group:12;order:11}.order-12{-ms-flex-order:12;-webkit-box-ordinal-group:13;order:12}.offset-1{margin-left:8.333333%}.offset-2{margin-left:16.666667%}.offset-3{margin-left:25%}.offset-4{margin-left:33.333333%}.offset-5{margin-left:41.666667%}.offset-6{margin-left:50%}.offset-7{margin-left:58.333333%}.offset-8{margin-left:66.666667%}.offset-9{margin-left:75%}.offset-10{margin-left:83.333333%}.offset-11{margin-left:91.666667%}@media (min-width:576px){.col-sm{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;-webkit-box-flex:1;flex-grow:1;max-width:100%}.col-sm-auto{-ms-flex:0 0 auto;-webkit-box-flex:0;flex:0 0 auto;width:auto;max-width:none}.col-sm-1{-ms-flex:0 0 8.333333%;-webkit-box-flex:0;flex:0 0 8.333333%;max-width:8.333333%}.col-sm-2{-ms-flex:0 0 16.666667%;-webkit-box-flex:0;flex:0 0 16.666667%;max-width:16.666667%}.col-sm-3{-ms-flex:0 0 25%;-webkit-box-flex:0;flex:0 0 25%;max-width:25%}.col-sm-4{-ms-flex:0 0 33.333333%;-webkit-box-flex:0;flex:0 0 33.333333%;max-width:33.333333%}.col-sm-5{-ms-flex:0 0 41.666667%;-webkit-box-flex:0;flex:0 0 41.666667%;max-width:41.666667%}.col-sm-6{-ms-flex:0 0 50%;-webkit-box-flex:0;flex:0 0 50%;max-width:50%}.col-sm-7{-ms-flex:0 0 58.333333%;-webkit-box-flex:0;flex:0 0 58.333333%;max-width:58.333333%}.col-sm-8{-ms-flex:0 0 66.666667%;-webkit-box-flex:0;flex:0 0 66.666667%;max-width:66.666667%}.col-sm-9{-ms-flex:0 0 75%;-webkit-box-flex:0;flex:0 0 75%;max-width:75%}.col-sm-10{-ms-flex:0 0 83.333333%;-webkit-box-flex:0;flex:0 0 83.333333%;max-width:83.333333%}.col-sm-11{-ms-flex:0 0 91.666667%;-webkit-box-flex:0;flex:0 0 91.666667%;max-width:91.666667%}.col-sm-12{-ms-flex:0 0 100%;-webkit-box-flex:0;flex:0 0 100%;max-width:100%}.order-sm-first{-ms-flex-order:-1;-webkit-box-ordinal-group:0;order:-1}.order-sm-1{-ms-flex-order:1;-webkit-box-ordinal-group:2;order:1}.order-sm-2{-ms-flex-order:2;-webkit-box-ordinal-group:3;order:2}.order-sm-3{-ms-flex-order:3;-webkit-box-ordinal-group:4;order:3}.order-sm-4{-ms-flex-order:4;-webkit-box-ordinal-group:5;order:4}.order-sm-5{-ms-flex-order:5;-webkit-box-ordinal-group:6;order:5}.order-sm-6{-ms-flex-order:6;-webkit-box-ordinal-group:7;order:6}.order-sm-7{-ms-flex-order:7;-webkit-box-ordinal-group:8;order:7}.order-sm-8{-ms-flex-order:8;-webkit-box-ordinal-group:9;order:8}.order-sm-9{-ms-flex-order:9;-webkit-box-ordinal-group:10;order:9}.order-sm-10{-ms-flex-order:10;-webkit-box-ordinal-group:11;order:10}.order-sm-11{-ms-flex-order:11;-webkit-box-ordinal-group:12;order:11}.order-sm-12{-ms-flex-order:12;-webkit-box-ordinal-group:13;order:12}.offset-sm-0{margin-left:0}.offset-sm-1{margin-left:8.333333%}.offset-sm-2{margin-left:16.666667%}.offset-sm-3{margin-left:25%}.offset-sm-4{margin-left:33.333333%}.offset-sm-5{margin-left:41.666667%}.offset-sm-6{margin-left:50%}.offset-sm-7{margin-left:58.333333%}.offset-sm-8{margin-left:66.666667%}.offset-sm-9{margin-left:75%}.offset-sm-10{margin-left:83.333333%}.offset-sm-11{margin-left:91.666667%}}@media (min-width:768px){.col-md{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;-webkit-box-flex:1;flex-grow:1;max-width:100%}.col-md-auto{-ms-flex:0 0 auto;-webkit-box-flex:0;flex:0 0 auto;width:auto;max-width:none}.col-md-1{-ms-flex:0 0 8.333333%;-webkit-box-flex:0;flex:0 0 8.333333%;max-width:8.333333%}.col-md-2{-ms-flex:0 0 16.666667%;-webkit-box-flex:0;flex:0 0 16.666667%;max-width:16.666667%}.col-md-3{-ms-flex:0 0 25%;-webkit-box-flex:0;flex:0 0 25%;max-width:25%}.col-md-4{-ms-flex:0 0 33.333333%;-webkit-box-flex:0;flex:0 0 33.333333%;max-width:33.333333%}.col-md-5{-ms-flex:0 0 41.666667%;-webkit-box-flex:0;flex:0 0 41.666667%;max-width:41.666667%}.col-md-6{-ms-flex:0 0 50%;-webkit-box-flex:0;flex:0 0 50%;max-width:50%}.col-md-7{-ms-flex:0 0 58.333333%;-webkit-box-flex:0;flex:0 0 58.333333%;max-width:58.333333%}.col-md-8{-ms-flex:0 0 66.666667%;-webkit-box-flex:0;flex:0 0 66.666667%;max-width:66.666667%}.col-md-9{-ms-flex:0 0 75%;-webkit-box-flex:0;flex:0 0 75%;max-width:75%}.col-md-10{-ms-flex:0 0 83.333333%;-webkit-box-flex:0;flex:0 0 83.333333%;max-width:83.333333%}.col-md-11{-ms-flex:0 0 91.666667%;-webkit-box-flex:0;flex:0 0 91.666667%;max-width:91.666667%}.col-md-12{-ms-flex:0 0 100%;-webkit-box-flex:0;flex:0 0 100%;max-width:100%}.order-md-first{-ms-flex-order:-1;-webkit-box-ordinal-group:0;order:-1}.order-md-1{-ms-flex-order:1;-webkit-box-ordinal-group:2;order:1}.order-md-2{-ms-flex-order:2;-webkit-box-ordinal-group:3;order:2}.order-md-3{-ms-flex-order:3;-webkit-box-ordinal-group:4;order:3}.order-md-4{-ms-flex-order:4;-webkit-box-ordinal-group:5;order:4}.order-md-5{-ms-flex-order:5;-webkit-box-ordinal-group:6;order:5}.order-md-6{-ms-flex-order:6;-webkit-box-ordinal-group:7;order:6}.order-md-7{-ms-flex-order:7;-webkit-box-ordinal-group:8;order:7}.order-md-8{-ms-flex-order:8;-webkit-box-ordinal-group:9;order:8}.order-md-9{-ms-flex-order:9;-webkit-box-ordinal-group:10;order:9}.order-md-10{-ms-flex-order:10;-webkit-box-ordinal-group:11;order:10}.order-md-11{-ms-flex-order:11;-webkit-box-ordinal-group:12;order:11}.order-md-12{-ms-flex-order:12;-webkit-box-ordinal-group:13;order:12}.offset-md-0{margin-left:0}.offset-md-1{margin-left:8.333333%}.offset-md-2{margin-left:16.666667%}.offset-md-3{margin-left:25%}.offset-md-4{margin-left:33.333333%}.offset-md-5{margin-left:41.666667%}.offset-md-6{margin-left:50%}.offset-md-7{margin-left:58.333333%}.offset-md-8{margin-left:66.666667%}.offset-md-9{margin-left:75%}.offset-md-10{margin-left:83.333333%}.offset-md-11{margin-left:91.666667%}}@media (min-width:992px){.col-lg{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;-webkit-box-flex:1;flex-grow:1;max-width:100%}.col-lg-auto{-ms-flex:0 0 auto;-webkit-box-flex:0;flex:0 0 auto;width:auto;max-width:none}.col-lg-1{-ms-flex:0 0 8.333333%;-webkit-box-flex:0;flex:0 0 8.333333%;max-width:8.333333%}.col-lg-2{-ms-flex:0 0 16.666667%;-webkit-box-flex:0;flex:0 0 16.666667%;max-width:16.666667%}.col-lg-3{-ms-flex:0 0 25%;-webkit-box-flex:0;flex:0 0 25%;max-width:25%}.col-lg-4{-ms-flex:0 0 33.333333%;-webkit-box-flex:0;flex:0 0 33.333333%;max-width:33.333333%}.col-lg-5{-ms-flex:0 0 41.666667%;-webkit-box-flex:0;flex:0 0 41.666667%;max-width:41.666667%}.col-lg-6{-ms-flex:0 0 50%;-webkit-box-flex:0;flex:0 0 50%;max-width:50%}.col-lg-7{-ms-flex:0 0 58.333333%;-webkit-box-flex:0;flex:0 0 58.333333%;max-width:58.333333%}.col-lg-8{-ms-flex:0 0 66.666667%;-webkit-box-flex:0;flex:0 0 66.666667%;max-width:66.666667%}.col-lg-9{-ms-flex:0 0 75%;-webkit-box-flex:0;flex:0 0 75%;max-width:75%}.col-lg-10{-ms-flex:0 0 83.333333%;-webkit-box-flex:0;flex:0 0 83.333333%;max-width:83.333333%}.col-lg-11{-ms-flex:0 0 91.666667%;-webkit-box-flex:0;flex:0 0 91.666667%;max-width:91.666667%}.col-lg-12{-ms-flex:0 0 100%;-webkit-box-flex:0;flex:0 0 100%;max-width:100%}.order-lg-first{-ms-flex-order:-1;-webkit-box-ordinal-group:0;order:-1}.order-lg-1{-ms-flex-order:1;-webkit-box-ordinal-group:2;order:1}.order-lg-2{-ms-flex-order:2;-webkit-box-ordinal-group:3;order:2}.order-lg-3{-ms-flex-order:3;-webkit-box-ordinal-group:4;order:3}.order-lg-4{-ms-flex-order:4;-webkit-box-ordinal-group:5;order:4}.order-lg-5{-ms-flex-order:5;-webkit-box-ordinal-group:6;order:5}.order-lg-6{-ms-flex-order:6;-webkit-box-ordinal-group:7;order:6}.order-lg-7{-ms-flex-order:7;-webkit-box-ordinal-group:8;order:7}.order-lg-8{-ms-flex-order:8;-webkit-box-ordinal-group:9;order:8}.order-lg-9{-ms-flex-order:9;-webkit-box-ordinal-group:10;order:9}.order-lg-10{-ms-flex-order:10;-webkit-box-ordinal-group:11;order:10}.order-lg-11{-ms-flex-order:11;-webkit-box-ordinal-group:12;order:11}.order-lg-12{-ms-flex-order:12;-webkit-box-ordinal-group:13;order:12}.offset-lg-0{margin-left:0}.offset-lg-1{margin-left:8.333333%}.offset-lg-2{margin-left:16.666667%}.offset-lg-3{margin-left:25%}.offset-lg-4{margin-left:33.333333%}.offset-lg-5{margin-left:41.666667%}.offset-lg-6{margin-left:50%}.offset-lg-7{margin-left:58.333333%}.offset-lg-8{margin-left:66.666667%}.offset-lg-9{margin-left:75%}.offset-lg-10{margin-left:83.333333%}.offset-lg-11{margin-left:91.666667%}}@media (min-width:1200px){.col-xl{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;-webkit-box-flex:1;flex-grow:1;max-width:100%}.col-xl-auto{-ms-flex:0 0 auto;-webkit-box-flex:0;flex:0 0 auto;width:auto;max-width:none}.col-xl-1{-ms-flex:0 0 8.333333%;-webkit-box-flex:0;flex:0 0 8.333333%;max-width:8.333333%}.col-xl-2{-ms-flex:0 0 16.666667%;-webkit-box-flex:0;flex:0 0 16.666667%;max-width:16.666667%}.col-xl-3{-ms-flex:0 0 25%;-webkit-box-flex:0;flex:0 0 25%;max-width:25%}.col-xl-4{-ms-flex:0 0 33.333333%;-webkit-box-flex:0;flex:0 0 33.333333%;max-width:33.333333%}.col-xl-5{-ms-flex:0 0 41.666667%;-webkit-box-flex:0;flex:0 0 41.666667%;max-width:41.666667%}.col-xl-6{-ms-flex:0 0 50%;-webkit-box-flex:0;flex:0 0 50%;max-width:50%}.col-xl-7{-ms-flex:0 0 58.333333%;-webkit-box-flex:0;flex:0 0 58.333333%;max-width:58.333333%}.col-xl-8{-ms-flex:0 0 66.666667%;-webkit-box-flex:0;flex:0 0 66.666667%;max-width:66.666667%}.col-xl-9{-ms-flex:0 0 75%;-webkit-box-flex:0;flex:0 0 75%;max-width:75%}.col-xl-10{-ms-flex:0 0 83.333333%;-webkit-box-flex:0;flex:0 0 83.333333%;max-width:83.333333%}.col-xl-11{-ms-flex:0 0 91.666667%;-webkit-box-flex:0;flex:0 0 91.666667%;max-width:91.666667%}.col-xl-12{-ms-flex:0 0 100%;-webkit-box-flex:0;flex:0 0 100%;max-width:100%}.order-xl-first{-ms-flex-order:-1;-webkit-box-ordinal-group:0;order:-1}.order-xl-1{-ms-flex-order:1;-webkit-box-ordinal-group:2;order:1}.order-xl-2{-ms-flex-order:2;-webkit-box-ordinal-group:3;order:2}.order-xl-3{-ms-flex-order:3;-webkit-box-ordinal-group:4;order:3}.order-xl-4{-ms-flex-order:4;-webkit-box-ordinal-group:5;order:4}.order-xl-5{-ms-flex-order:5;-webkit-box-ordinal-group:6;order:5}.order-xl-6{-ms-flex-order:6;-webkit-box-ordinal-group:7;order:6}.order-xl-7{-ms-flex-order:7;-webkit-box-ordinal-group:8;order:7}.order-xl-8{-ms-flex-order:8;-webkit-box-ordinal-group:9;order:8}.order-xl-9{-ms-flex-order:9;-webkit-box-ordinal-group:10;order:9}.order-xl-10{-ms-flex-order:10;-webkit-box-ordinal-group:11;order:10}.order-xl-11{-ms-flex-order:11;-webkit-box-ordinal-group:12;order:11}.order-xl-12{-ms-flex-order:12;-webkit-box-ordinal-group:13;order:12}.offset-xl-0{margin-left:0}.offset-xl-1{margin-left:8.333333%}.offset-xl-2{margin-left:16.666667%}.offset-xl-3{margin-left:25%}.offset-xl-4{margin-left:33.333333%}.offset-xl-5{margin-left:41.666667%}.offset-xl-6{margin-left:50%}.offset-xl-7{margin-left:58.333333%}.offset-xl-8{margin-left:66.666667%}.offset-xl-9{margin-left:75%}.offset-xl-10{margin-left:83.333333%}.offset-xl-11{margin-left:91.666667%}}.table,table{width:100%;max-width:100%;margin-bottom:1rem;background-color:transparent}.table td,.table th,table td,table th{padding:.75rem;vertical-align:top;border-top:1px solid #e9ecef}.table thead th,table thead th{vertical-align:bottom;border-bottom:2px solid #e9ecef}.table tbody+tbody,table tbody+tbody{border-top:2px solid #e9ecef}.table .table,.table table,table .table,table table{background-color:#fff}.table-sm td,.table-sm th{padding:.3rem}.table-bordered,table{border:1px solid #e9ecef}.table-bordered td,.table-bordered th,table td,table th{border:1px solid #e9ecef}.table-bordered thead td,.table-bordered thead th,table thead td,table thead th{border-bottom-width:2px}.table-striped tbody tr:nth-of-type(odd){background-color:rgba(0,0,0,.05)}.table-hover tbody tr:hover{background-color:rgba(0,0,0,.075)}.table-primary,.table-primary>td,.table-primary>th{background-color:#b8daff}.table-hover .table-primary:hover{background-color:#9fcdff}.table-hover .table-primary:hover>td,.table-hover .table-primary:hover>th{background-color:#9fcdff}.table-secondary,.table-secondary>td,.table-secondary>th{background-color:#dddfe2}.table-hover .table-secondary:hover{background-color:#cfd2d6}.table-hover .table-secondary:hover>td,.table-hover .table-secondary:hover>th{background-color:#cfd2d6}.table-success,.table-success>td,.table-success>th{background-color:#c3e6cb}.table-hover .table-success:hover{background-color:#b1dfbb}.table-hover .table-success:hover>td,.table-hover .table-success:hover>th{background-color:#b1dfbb}.table-info,.table-info>td,.table-info>th{background-color:#bee5eb}.table-hover .table-info:hover{background-color:#abdde5}.table-hover .table-info:hover>td,.table-hover .table-info:hover>th{background-color:#abdde5}.table-warning,.table-warning>td,.table-warning>th{background-color:#ffeeba}.table-hover .table-warning:hover{background-color:#ffe8a1}.table-hover .table-warning:hover>td,.table-hover .table-warning:hover>th{background-color:#ffe8a1}.table-danger,.table-danger>td,.table-danger>th{background-color:#f5c6cb}.table-hover .table-danger:hover{background-color:#f1b0b7}.table-hover .table-danger:hover>td,.table-hover .table-danger:hover>th{background-color:#f1b0b7}.table-light,.table-light>td,.table-light>th{background-color:#fdfdfe}.table-hover .table-light:hover{background-color:#ececf6}.table-hover .table-light:hover>td,.table-hover .table-light:hover>th{background-color:#ececf6}.table-dark,.table-dark>td,.table-dark>th{background-color:#c6c8ca}.table-hover .table-dark:hover{background-color:#b9bbbe}.table-hover .table-dark:hover>td,.table-hover .table-dark:hover>th{background-color:#b9bbbe}.table-active,.table-active>td,.table-active>th{background-color:rgba(0,0,0,.075)}.table-hover .table-active:hover{background-color:rgba(0,0,0,.075)}.table-hover .table-active:hover>td,.table-hover .table-active:hover>th{background-color:rgba(0,0,0,.075)}.table .thead-dark th,table .thead-dark th{color:#fff;background-color:#212529;border-color:#32383e}.table .thead-light th,table .thead-light th{color:#495057;background-color:#e9ecef;border-color:#e9ecef}.table-dark{color:#fff;background-color:#212529}.table-dark td,.table-dark th,.table-dark thead th{border-color:#32383e}.table-dark.table-bordered,table.table-dark{border:0}.table-dark.table-striped tbody tr:nth-of-type(odd){background-color:rgba(255,255,255,.05)}.table-dark.table-hover tbody tr:hover{background-color:rgba(255,255,255,.075)}@media (max-width:575.99px){.table-responsive-sm{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}.table-responsive-sm.table-bordered,table.table-responsive-sm{border:0}}@media (max-width:767.99px){.table-responsive-md{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}.table-responsive-md.table-bordered,table.table-responsive-md{border:0}}@media (max-width:991.99px){.table-responsive-lg{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}.table-responsive-lg.table-bordered,table.table-responsive-lg{border:0}}@media (max-width:1199.99px){.table-responsive-xl{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}.table-responsive-xl.table-bordered,table.table-responsive-xl{border:0}}.table-responsive,table{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}.table-responsive.table-bordered,table{border:0}.form-control{display:block;width:100%;padding:.375rem .75rem;font-size:1rem;line-height:1.5;color:#495057;background-color:#fff;background-clip:padding-box;border:1px solid #ced4da;border-radius:.25rem;-webkit-transition:border-color .15s ease-in-out,-webkit-box-shadow .15s ease-in-out;transition:border-color .15s ease-in-out,-webkit-box-shadow .15s ease-in-out;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out,-webkit-box-shadow .15s ease-in-out}.form-control::-ms-expand{background-color:transparent;border:0}.form-control:focus{color:#495057;background-color:#fff;border-color:#80bdff;outline:0;-webkit-box-shadow:0 0 0 .2rem rgba(0,123,255,.25);box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.form-control::-webkit-input-placeholder{color:#868e96;opacity:1}.form-control:-ms-input-placeholder{color:#868e96;opacity:1}.form-control::-ms-input-placeholder{color:#868e96;opacity:1}.form-control::-moz-placeholder{color:#868e96;opacity:1}.form-control::placeholder{color:#868e96;opacity:1}.form-control:disabled,.form-control[readonly]{background-color:#e9ecef;opacity:1}select.form-control:not([size]):not([multiple]){height:calc(2.25rem + 2px)}select.form-control:focus::-ms-value{color:#495057;background-color:#fff}.form-control-file,.form-control-range{display:block}.col-form-label{padding-top:calc(.375rem + 1px);padding-bottom:calc(.375rem + 1px);margin-bottom:0;font-size:inherit;line-height:1.5}.col-form-label-lg{padding-top:calc(.5rem + 1px);padding-bottom:calc(.5rem + 1px);font-size:1.25rem;line-height:1.5}.col-form-label-sm{padding-top:calc(.25rem + 1px);padding-bottom:calc(.25rem + 1px);font-size:.875rem;line-height:1.5}.form-control-plaintext{display:block;width:100%;padding-top:.375rem;padding-bottom:.375rem;margin-bottom:0;line-height:1.5;background-color:transparent;border:solid transparent;border-width:1px 0}.form-control-plaintext.form-control-lg,.form-control-plaintext.form-control-sm,.input-group-lg>.form-control-plaintext.form-control,.input-group-lg>.form-control-plaintext.input-group-addon,.input-group-lg>.input-group-btn>.form-control-plaintext.btn,.input-group-lg>.input-group-btn>.form-control-plaintext.member-runner-link,.input-group-sm>.form-control-plaintext.form-control,.input-group-sm>.form-control-plaintext.input-group-addon,.input-group-sm>.input-group-btn>.form-control-plaintext.btn,.input-group-sm>.input-group-btn>.form-control-plaintext.member-runner-link{padding-right:0;padding-left:0}.form-control-sm,.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn,.input-group-sm>.input-group-btn>.member-runner-link{padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.input-group-sm>.input-group-btn>select.btn:not([size]):not([multiple]),.input-group-sm>.input-group-btn>select.member-runner-link:not([size]):not([multiple]),.input-group-sm>select.form-control:not([size]):not([multiple]),.input-group-sm>select.input-group-addon:not([size]):not([multiple]),select.form-control-sm:not([size]):not([multiple]){height:calc(1.8125rem + 2px)}.form-control-lg,.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn,.input-group-lg>.input-group-btn>.member-runner-link{padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}.input-group-lg>.input-group-btn>select.btn:not([size]):not([multiple]),.input-group-lg>.input-group-btn>select.member-runner-link:not([size]):not([multiple]),.input-group-lg>select.form-control:not([size]):not([multiple]),.input-group-lg>select.input-group-addon:not([size]):not([multiple]),select.form-control-lg:not([size]):not([multiple]){height:calc(2.875rem + 2px)}.form-group{margin-bottom:1rem}.form-text{display:block;margin-top:.25rem}.form-row{display:-ms-flexbox;display:-webkit-box;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-right:-5px;margin-left:-5px}.form-row>.col,.form-row>[class*=col-]{padding-right:5px;padding-left:5px}.form-check{position:relative;display:block;margin-bottom:.5rem}.form-check.disabled .form-check-label{color:#868e96}.form-check-label{padding-left:1.25rem;margin-bottom:0}.form-check-input{position:absolute;margin-top:.25rem;margin-left:-1.25rem}.form-check-inline{display:inline-block;margin-right:.75rem}.form-check-inline .form-check-label{vertical-align:middle}.valid-feedback{display:none;margin-top:.25rem;font-size:80%;color:#28a745}.valid-tooltip{position:absolute;top:100%;z-index:5;display:none;width:250px;padding:.5rem;margin-top:.1rem;font-size:.875rem;line-height:1;color:#fff;background-color:rgba(40,167,69,.8);border-radius:.2rem}.custom-select.is-valid,.form-control.is-valid,.was-validated .custom-select:valid,.was-validated .form-control:valid{border-color:#28a745}.custom-select.is-valid:focus,.form-control.is-valid:focus,.was-validated .custom-select:valid:focus,.was-validated .form-control:valid:focus{border-color:#28a745;-webkit-box-shadow:0 0 0 .2rem rgba(40,167,69,.25);box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.custom-select.is-valid~.valid-feedback,.custom-select.is-valid~.valid-tooltip,.form-control.is-valid~.valid-feedback,.form-control.is-valid~.valid-tooltip,.was-validated .custom-select:valid~.valid-feedback,.was-validated .custom-select:valid~.valid-tooltip,.was-validated .form-control:valid~.valid-feedback,.was-validated .form-control:valid~.valid-tooltip{display:block}.form-check-input.is-valid+.form-check-label,.was-validated .form-check-input:valid+.form-check-label{color:#28a745}.custom-control-input.is-valid~.custom-control-indicator,.was-validated .custom-control-input:valid~.custom-control-indicator{background-color:#71dd8a}.custom-control-input.is-valid~.custom-control-description,.was-validated .custom-control-input:valid~.custom-control-description{color:#28a745}.custom-control-input.is-valid:checked~.custom-control-indicator,.was-validated .custom-control-input:valid:checked~.custom-control-indicator{background-color:#34ce57}.custom-control-input.is-valid:focus~.custom-control-indicator,.was-validated .custom-control-input:valid:focus~.custom-control-indicator{-webkit-box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(40,167,69,.25);box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(40,167,69,.25)}.custom-file-input.is-valid~.custom-file-control,.was-validated .custom-file-input:valid~.custom-file-control{border-color:#28a745}.custom-file-input.is-valid~.custom-file-control::before,.was-validated .custom-file-input:valid~.custom-file-control::before{border-color:inherit}.custom-file-input.is-valid:focus~.custom-file-control,.was-validated .custom-file-input:valid:focus~.custom-file-control{-webkit-box-shadow:0 0 0 .2rem rgba(40,167,69,.25);box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.invalid-feedback{display:none;margin-top:.25rem;font-size:80%;color:#dc3545}.invalid-tooltip{position:absolute;top:100%;z-index:5;display:none;width:250px;padding:.5rem;margin-top:.1rem;font-size:.875rem;line-height:1;color:#fff;background-color:rgba(220,53,69,.8);border-radius:.2rem}.custom-select.is-invalid,.form-control.is-invalid,.was-validated .custom-select:invalid,.was-validated .form-control:invalid{border-color:#dc3545}.custom-select.is-invalid:focus,.form-control.is-invalid:focus,.was-validated .custom-select:invalid:focus,.was-validated .form-control:invalid:focus{border-color:#dc3545;-webkit-box-shadow:0 0 0 .2rem rgba(220,53,69,.25);box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.custom-select.is-invalid~.invalid-feedback,.custom-select.is-invalid~.invalid-tooltip,.form-control.is-invalid~.invalid-feedback,.form-control.is-invalid~.invalid-tooltip,.was-validated .custom-select:invalid~.invalid-feedback,.was-validated .custom-select:invalid~.invalid-tooltip,.was-validated .form-control:invalid~.invalid-feedback,.was-validated .form-control:invalid~.invalid-tooltip{display:block}.form-check-input.is-invalid+.form-check-label,.was-validated .form-check-input:invalid+.form-check-label{color:#dc3545}.custom-control-input.is-invalid~.custom-control-indicator,.was-validated .custom-control-input:invalid~.custom-control-indicator{background-color:#efa2a9}.custom-control-input.is-invalid~.custom-control-description,.was-validated .custom-control-input:invalid~.custom-control-description{color:#dc3545}.custom-control-input.is-invalid:checked~.custom-control-indicator,.was-validated .custom-control-input:invalid:checked~.custom-control-indicator{background-color:#e4606d}.custom-control-input.is-invalid:focus~.custom-control-indicator,.was-validated .custom-control-input:invalid:focus~.custom-control-indicator{-webkit-box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(220,53,69,.25);box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(220,53,69,.25)}.custom-file-input.is-invalid~.custom-file-control,.was-validated .custom-file-input:invalid~.custom-file-control{border-color:#dc3545}.custom-file-input.is-invalid~.custom-file-control::before,.was-validated .custom-file-input:invalid~.custom-file-control::before{border-color:inherit}.custom-file-input.is-invalid:focus~.custom-file-control,.was-validated .custom-file-input:invalid:focus~.custom-file-control{-webkit-box-shadow:0 0 0 .2rem rgba(220,53,69,.25);box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.form-inline{display:-ms-flexbox;display:-webkit-box;display:flex;-ms-flex-flow:row wrap;-webkit-box-orient:horizontal;-webkit-box-direction:normal;flex-flow:row wrap;-ms-flex-align:center;-webkit-box-align:center;align-items:center}.form-inline .form-check{width:100%}@media (min-width:576px){.form-inline label{display:-ms-flexbox;display:-webkit-box;display:flex;-ms-flex-align:center;-webkit-box-align:center;align-items:center;-ms-flex-pack:center;-webkit-box-pack:center;justify-content:center;margin-bottom:0}.form-inline .form-group{display:-ms-flexbox;display:-webkit-box;display:flex;-ms-flex:0 0 auto;-webkit-box-flex:0;flex:0 0 auto;-ms-flex-flow:row wrap;-webkit-box-orient:horizontal;-webkit-box-direction:normal;flex-flow:row wrap;-ms-flex-align:center;-webkit-box-align:center;align-items:center;margin-bottom:0}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-plaintext{display:inline-block}.form-inline .input-group{width:auto}.form-inline .form-check{display:-ms-flexbox;display:-webkit-box;display:flex;-ms-flex-align:center;-webkit-box-align:center;align-items:center;-ms-flex-pack:center;-webkit-box-pack:center;justify-content:center;width:auto;margin-top:0;margin-bottom:0}.form-inline .form-check-label{padding-left:0}.form-inline .form-check-input{position:relative;margin-top:0;margin-right:.25rem;margin-left:0}.form-inline .custom-control{display:-ms-flexbox;display:-webkit-box;display:flex;-ms-flex-align:center;-webkit-box-align:center;align-items:center;-ms-flex-pack:center;-webkit-box-pack:center;justify-content:center;padding-left:0}.form-inline .custom-control-indicator{position:static;display:inline-block;margin-right:.25rem;vertical-align:text-bottom}.form-inline .has-feedback .form-control-feedback{top:0}}.btn,.member-runner-link{display:inline-block;font-weight:400;text-align:center;white-space:nowrap;vertical-align:middle;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;border:1px solid transparent;padding:.375rem .75rem;font-size:1rem;line-height:1.5;border-radius:.25rem;-webkit-transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,-webkit-box-shadow .15s ease-in-out;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,-webkit-box-shadow .15s ease-in-out;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out,-webkit-box-shadow .15s ease-in-out}.btn:focus,.btn:hover,.member-runner-link:focus,.member-runner-link:hover{text-decoration:none}.btn.focus,.btn:focus,.focus.member-runner-link,.member-runner-link:focus{outline:0;-webkit-box-shadow:0 0 0 .2rem rgba(0,123,255,.25);box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.btn.disabled,.btn:disabled,.disabled.member-runner-link,.member-runner-link:disabled{opacity:.65}.btn:not([disabled]):not(.disabled).active,.btn:not([disabled]):not(.disabled):active,.member-runner-link:not([disabled]):not(.disabled).active,.member-runner-link:not([disabled]):not(.disabled):active{background-image:none}a.btn.disabled,a.disabled.member-runner-link,fieldset[disabled] a.btn,fieldset[disabled] a.member-runner-link{pointer-events:none}.btn-primary,.member-runner-link{color:#fff;background-color:#007bff;border-color:#007bff}.btn-primary:hover,.member-runner-link:hover{color:#fff;background-color:#0069d9;border-color:#0062cc}.btn-primary.focus,.btn-primary:focus,.focus.member-runner-link,.member-runner-link:focus{-webkit-box-shadow:0 0 0 .2rem rgba(0,123,255,.5);box-shadow:0 0 0 .2rem rgba(0,123,255,.5)}.btn-primary.disabled,.btn-primary:disabled,.disabled.member-runner-link,.member-runner-link:disabled{background-color:#007bff;border-color:#007bff}.btn-primary:not([disabled]):not(.disabled).active,.btn-primary:not([disabled]):not(.disabled):active,.member-runner-link:not([disabled]):not(.disabled).active,.member-runner-link:not([disabled]):not(.disabled):active,.show>.btn-primary.dropdown-toggle,.show>.dropdown-toggle.member-runner-link{color:#fff;background-color:#0062cc;border-color:#005cbf;-webkit-box-shadow:0 0 0 .2rem rgba(0,123,255,.5);box-shadow:0 0 0 .2rem rgba(0,123,255,.5)}.btn-secondary{color:#fff;background-color:#868e96;border-color:#868e96}.btn-secondary:hover{color:#fff;background-color:#727b84;border-color:#6c757d}.btn-secondary.focus,.btn-secondary:focus{-webkit-box-shadow:0 0 0 .2rem rgba(134,142,150,.5);box-shadow:0 0 0 .2rem rgba(134,142,150,.5)}.btn-secondary.disabled,.btn-secondary:disabled{background-color:#868e96;border-color:#868e96}.btn-secondary:not([disabled]):not(.disabled).active,.btn-secondary:not([disabled]):not(.disabled):active,.show>.btn-secondary.dropdown-toggle{color:#fff;background-color:#6c757d;border-color:#666e76;-webkit-box-shadow:0 0 0 .2rem rgba(134,142,150,.5);box-shadow:0 0 0 .2rem rgba(134,142,150,.5)}.btn-success{color:#fff;background-color:#28a745;border-color:#28a745}.btn-success:hover{color:#fff;background-color:#218838;border-color:#1e7e34}.btn-success.focus,.btn-success:focus{-webkit-box-shadow:0 0 0 .2rem rgba(40,167,69,.5);box-shadow:0 0 0 .2rem rgba(40,167,69,.5)}.btn-success.disabled,.btn-success:disabled{background-color:#28a745;border-color:#28a745}.btn-success:not([disabled]):not(.disabled).active,.btn-success:not([disabled]):not(.disabled):active,.show>.btn-success.dropdown-toggle{color:#fff;background-color:#1e7e34;border-color:#1c7430;-webkit-box-shadow:0 0 0 .2rem rgba(40,167,69,.5);box-shadow:0 0 0 .2rem rgba(40,167,69,.5)}.btn-info{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-info:hover{color:#fff;background-color:#138496;border-color:#117a8b}.btn-info.focus,.btn-info:focus{-webkit-box-shadow:0 0 0 .2rem rgba(23,162,184,.5);box-shadow:0 0 0 .2rem rgba(23,162,184,.5)}.btn-info.disabled,.btn-info:disabled{background-color:#17a2b8;border-color:#17a2b8}.btn-info:not([disabled]):not(.disabled).active,.btn-info:not([disabled]):not(.disabled):active,.show>.btn-info.dropdown-toggle{color:#fff;background-color:#117a8b;border-color:#10707f;-webkit-box-shadow:0 0 0 .2rem rgba(23,162,184,.5);box-shadow:0 0 0 .2rem rgba(23,162,184,.5)}.btn-warning{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-warning:hover{color:#212529;background-color:#e0a800;border-color:#d39e00}.btn-warning.focus,.btn-warning:focus{-webkit-box-shadow:0 0 0 .2rem rgba(255,193,7,.5);box-shadow:0 0 0 .2rem rgba(255,193,7,.5)}.btn-warning.disabled,.btn-warning:disabled{background-color:#ffc107;border-color:#ffc107}.btn-warning:not([disabled]):not(.disabled).active,.btn-warning:not([disabled]):not(.disabled):active,.show>.btn-warning.dropdown-toggle{color:#212529;background-color:#d39e00;border-color:#c69500;-webkit-box-shadow:0 0 0 .2rem rgba(255,193,7,.5);box-shadow:0 0 0 .2rem rgba(255,193,7,.5)}.btn-danger{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-danger:hover{color:#fff;background-color:#c82333;border-color:#bd2130}.btn-danger.focus,.btn-danger:focus{-webkit-box-shadow:0 0 0 .2rem rgba(220,53,69,.5);box-shadow:0 0 0 .2rem rgba(220,53,69,.5)}.btn-danger.disabled,.btn-danger:disabled{background-color:#dc3545;border-color:#dc3545}.btn-danger:not([disabled]):not(.disabled).active,.btn-danger:not([disabled]):not(.disabled):active,.show>.btn-danger.dropdown-toggle{color:#fff;background-color:#bd2130;border-color:#b21f2d;-webkit-box-shadow:0 0 0 .2rem rgba(220,53,69,.5);box-shadow:0 0 0 .2rem rgba(220,53,69,.5)}.btn-light{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-light:hover{color:#212529;background-color:#e2e6ea;border-color:#dae0e5}.btn-light.focus,.btn-light:focus{-webkit-box-shadow:0 0 0 .2rem rgba(248,249,250,.5);box-shadow:0 0 0 .2rem rgba(248,249,250,.5)}.btn-light.disabled,.btn-light:disabled{background-color:#f8f9fa;border-color:#f8f9fa}.btn-light:not([disabled]):not(.disabled).active,.btn-light:not([disabled]):not(.disabled):active,.show>.btn-light.dropdown-toggle{color:#212529;background-color:#dae0e5;border-color:#d3d9df;-webkit-box-shadow:0 0 0 .2rem rgba(248,249,250,.5);box-shadow:0 0 0 .2rem rgba(248,249,250,.5)}.btn-dark{color:#fff;background-color:#343a40;border-color:#343a40}.btn-dark:hover{color:#fff;background-color:#23272b;border-color:#1d2124}.btn-dark.focus,.btn-dark:focus{-webkit-box-shadow:0 0 0 .2rem rgba(52,58,64,.5);box-shadow:0 0 0 .2rem rgba(52,58,64,.5)}.btn-dark.disabled,.btn-dark:disabled{background-color:#343a40;border-color:#343a40}.btn-dark:not([disabled]):not(.disabled).active,.btn-dark:not([disabled]):not(.disabled):active,.show>.btn-dark.dropdown-toggle{color:#fff;background-color:#1d2124;border-color:#171a1d;-webkit-box-shadow:0 0 0 .2rem rgba(52,58,64,.5);box-shadow:0 0 0 .2rem rgba(52,58,64,.5)}.btn-outline-primary{color:#007bff;background-color:transparent;background-image:none;border-color:#007bff}.btn-outline-primary:hover{color:#fff;background-color:#007bff;border-color:#007bff}.btn-outline-primary.focus,.btn-outline-primary:focus{-webkit-box-shadow:0 0 0 .2rem rgba(0,123,255,.5);box-shadow:0 0 0 .2rem rgba(0,123,255,.5)}.btn-outline-primary.disabled,.btn-outline-primary:disabled{color:#007bff;background-color:transparent}.btn-outline-primary:not([disabled]):not(.disabled).active,.btn-outline-primary:not([disabled]):not(.disabled):active,.show>.btn-outline-primary.dropdown-toggle{color:#212529;background-color:#007bff;border-color:#007bff;-webkit-box-shadow:0 0 0 .2rem rgba(0,123,255,.5);box-shadow:0 0 0 .2rem rgba(0,123,255,.5)}.btn-outline-secondary{color:#868e96;background-color:transparent;background-image:none;border-color:#868e96}.btn-outline-secondary:hover{color:#fff;background-color:#868e96;border-color:#868e96}.btn-outline-secondary.focus,.btn-outline-secondary:focus{-webkit-box-shadow:0 0 0 .2rem rgba(134,142,150,.5);box-shadow:0 0 0 .2rem rgba(134,142,150,.5)}.btn-outline-secondary.disabled,.btn-outline-secondary:disabled{color:#868e96;background-color:transparent}.btn-outline-secondary:not([disabled]):not(.disabled).active,.btn-outline-secondary:not([disabled]):not(.disabled):active,.show>.btn-outline-secondary.dropdown-toggle{color:#212529;background-color:#868e96;border-color:#868e96;-webkit-box-shadow:0 0 0 .2rem rgba(134,142,150,.5);box-shadow:0 0 0 .2rem rgba(134,142,150,.5)}.btn-outline-success{color:#28a745;background-color:transparent;background-image:none;border-color:#28a745}.btn-outline-success:hover{color:#fff;background-color:#28a745;border-color:#28a745}.btn-outline-success.focus,.btn-outline-success:focus{-webkit-box-shadow:0 0 0 .2rem rgba(40,167,69,.5);box-shadow:0 0 0 .2rem rgba(40,167,69,.5)}.btn-outline-success.disabled,.btn-outline-success:disabled{color:#28a745;background-color:transparent}.btn-outline-success:not([disabled]):not(.disabled).active,.btn-outline-success:not([disabled]):not(.disabled):active,.show>.btn-outline-success.dropdown-toggle{color:#212529;background-color:#28a745;border-color:#28a745;-webkit-box-shadow:0 0 0 .2rem rgba(40,167,69,.5);box-shadow:0 0 0 .2rem rgba(40,167,69,.5)}.btn-outline-info{color:#17a2b8;background-color:transparent;background-image:none;border-color:#17a2b8}.btn-outline-info:hover{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-outline-info.focus,.btn-outline-info:focus{-webkit-box-shadow:0 0 0 .2rem rgba(23,162,184,.5);box-shadow:0 0 0 .2rem rgba(23,162,184,.5)}.btn-outline-info.disabled,.btn-outline-info:disabled{color:#17a2b8;background-color:transparent}.btn-outline-info:not([disabled]):not(.disabled).active,.btn-outline-info:not([disabled]):not(.disabled):active,.show>.btn-outline-info.dropdown-toggle{color:#212529;background-color:#17a2b8;border-color:#17a2b8;-webkit-box-shadow:0 0 0 .2rem rgba(23,162,184,.5);box-shadow:0 0 0 .2rem rgba(23,162,184,.5)}.btn-outline-warning{color:#ffc107;background-color:transparent;background-image:none;border-color:#ffc107}.btn-outline-warning:hover{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-outline-warning.focus,.btn-outline-warning:focus{-webkit-box-shadow:0 0 0 .2rem rgba(255,193,7,.5);box-shadow:0 0 0 .2rem rgba(255,193,7,.5)}.btn-outline-warning.disabled,.btn-outline-warning:disabled{color:#ffc107;background-color:transparent}.btn-outline-warning:not([disabled]):not(.disabled).active,.btn-outline-warning:not([disabled]):not(.disabled):active,.show>.btn-outline-warning.dropdown-toggle{color:#212529;background-color:#ffc107;border-color:#ffc107;-webkit-box-shadow:0 0 0 .2rem rgba(255,193,7,.5);box-shadow:0 0 0 .2rem rgba(255,193,7,.5)}.btn-outline-danger{color:#dc3545;background-color:transparent;background-image:none;border-color:#dc3545}.btn-outline-danger:hover{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-outline-danger.focus,.btn-outline-danger:focus{-webkit-box-shadow:0 0 0 .2rem rgba(220,53,69,.5);box-shadow:0 0 0 .2rem rgba(220,53,69,.5)}.btn-outline-danger.disabled,.btn-outline-danger:disabled{color:#dc3545;background-color:transparent}.btn-outline-danger:not([disabled]):not(.disabled).active,.btn-outline-danger:not([disabled]):not(.disabled):active,.show>.btn-outline-danger.dropdown-toggle{color:#212529;background-color:#dc3545;border-color:#dc3545;-webkit-box-shadow:0 0 0 .2rem rgba(220,53,69,.5);box-shadow:0 0 0 .2rem rgba(220,53,69,.5)}.btn-outline-light{color:#f8f9fa;background-color:transparent;background-image:none;border-color:#f8f9fa}.btn-outline-light:hover{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light.focus,.btn-outline-light:focus{-webkit-box-shadow:0 0 0 .2rem rgba(248,249,250,.5);box-shadow:0 0 0 .2rem rgba(248,249,250,.5)}.btn-outline-light.disabled,.btn-outline-light:disabled{color:#f8f9fa;background-color:transparent}.btn-outline-light:not([disabled]):not(.disabled).active,.btn-outline-light:not([disabled]):not(.disabled):active,.show>.btn-outline-light.dropdown-toggle{color:#fff;background-color:#f8f9fa;border-color:#f8f9fa;-webkit-box-shadow:0 0 0 .2rem rgba(248,249,250,.5);box-shadow:0 0 0 .2rem rgba(248,249,250,.5)}.btn-outline-dark{color:#343a40;background-color:transparent;background-image:none;border-color:#343a40}.btn-outline-dark:hover{color:#fff;background-color:#343a40;border-color:#343a40}.btn-outline-dark.focus,.btn-outline-dark:focus{-webkit-box-shadow:0 0 0 .2rem rgba(52,58,64,.5);box-shadow:0 0 0 .2rem rgba(52,58,64,.5)}.btn-outline-dark.disabled,.btn-outline-dark:disabled{color:#343a40;background-color:transparent}.btn-outline-dark:not([disabled]):not(.disabled).active,.btn-outline-dark:not([disabled]):not(.disabled):active,.show>.btn-outline-dark.dropdown-toggle{color:#212529;background-color:#343a40;border-color:#343a40;-webkit-box-shadow:0 0 0 .2rem rgba(52,58,64,.5);box-shadow:0 0 0 .2rem rgba(52,58,64,.5)}.btn-link{font-weight:400;color:#007bff;background-color:transparent}.btn-link:hover{color:#0056b3;text-decoration:underline;background-color:transparent;border-color:transparent}.btn-link.focus,.btn-link:focus{text-decoration:underline;border-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link.disabled,.btn-link:disabled{color:#868e96}.btn-group-lg>.btn,.btn-group-lg>.member-runner-link,.btn-lg{padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}.btn-group-sm>.btn,.btn-sm,.member-runner-link{padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:.5rem}input[type=button].btn-block,input[type=reset].btn-block,input[type=submit].btn-block{width:100%}.fade{opacity:0;-webkit-transition:opacity .15s linear;transition:opacity .15s linear}.fade.show{opacity:1}.collapse{display:none}.collapse.show{display:block}tr.collapse.show{display:table-row}tbody.collapse.show{display:table-row-group}.collapsing{position:relative;height:0;overflow:hidden;-webkit-transition:height .35s ease;transition:height .35s ease}.dropdown,.dropup{position:relative}.dropdown-toggle::after{display:inline-block;width:0;height:0;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid;border-right:.3em solid transparent;border-bottom:0;border-left:.3em solid transparent}.dropdown-toggle:empty::after{margin-left:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:10rem;padding:.5rem 0;margin:.125rem 0 0;font-size:1rem;color:#212529;text-align:left;list-style:none;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.15);border-radius:.25rem}.dropup .dropdown-menu{margin-top:0;margin-bottom:.125rem}.dropup .dropdown-toggle::after{display:inline-block;width:0;height:0;margin-left:.255em;vertical-align:.255em;content:"";border-top:0;border-right:.3em solid transparent;border-bottom:.3em solid;border-left:.3em solid transparent}.dropup .dropdown-toggle:empty::after{margin-left:0}.dropright .dropdown-menu{margin-top:0;margin-left:.125rem}.dropright .dropdown-toggle::after{display:inline-block;width:0;height:0;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-bottom:.3em solid transparent;border-left:.3em solid}.dropright .dropdown-toggle:empty::after{margin-left:0}.dropright .dropdown-toggle::after{vertical-align:0}.dropleft .dropdown-menu{margin-top:0;margin-right:.125rem}.dropleft .dropdown-toggle::after{display:inline-block;width:0;height:0;margin-left:.255em;vertical-align:.255em;content:""}.dropleft .dropdown-toggle::after{display:none}.dropleft .dropdown-toggle::before{display:inline-block;width:0;height:0;margin-right:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:.3em solid;border-bottom:.3em solid transparent}.dropleft .dropdown-toggle:empty::after{margin-left:0}.dropleft .dropdown-toggle::before{vertical-align:0}.dropdown-divider{height:0;margin:.5rem 0;overflow:hidden;border-top:1px solid #e9ecef}.dropdown-item{display:block;width:100%;padding:.25rem 1.5rem;clear:both;font-weight:400;color:#212529;text-align:inherit;white-space:nowrap;background-color:transparent;border:0}.dropdown-item:focus,.dropdown-item:hover{color:#16181b;text-decoration:none;background-color:#f8f9fa}.dropdown-item.active,.dropdown-item:active{color:#fff;text-decoration:none;background-color:#007bff}.dropdown-item.disabled,.dropdown-item:disabled{color:#868e96;background-color:transparent}.dropdown-menu.show{display:block}.dropdown-header{display:block;padding:.5rem 1.5rem;margin-bottom:0;font-size:.875rem;color:#868e96;white-space:nowrap}.btn-group,.btn-group-vertical{position:relative;display:-ms-inline-flexbox;display:-webkit-inline-box;display:inline-flex;vertical-align:middle}.btn-group-vertical>.btn,.btn-group-vertical>.member-runner-link,.btn-group>.btn,.btn-group>.member-runner-link{position:relative;-ms-flex:0 1 auto;-webkit-box-flex:0;flex:0 1 auto}.btn-group-vertical>.btn:hover,.btn-group-vertical>.member-runner-link:hover,.btn-group>.btn:hover,.btn-group>.member-runner-link:hover{z-index:1}.btn-group-vertical>.active.member-runner-link,.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group-vertical>.member-runner-link:active,.btn-group-vertical>.member-runner-link:focus,.btn-group>.active.member-runner-link,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus,.btn-group>.member-runner-link:active,.btn-group>.member-runner-link:focus{z-index:1}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn+.member-runner-link,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group,.btn-group .btn-group+.member-runner-link,.btn-group .member-runner-link+.btn,.btn-group .member-runner-link+.btn-group,.btn-group .member-runner-link+.member-runner-link,.btn-group-vertical .btn+.btn,.btn-group-vertical .btn+.btn-group,.btn-group-vertical .btn+.member-runner-link,.btn-group-vertical .btn-group+.btn,.btn-group-vertical .btn-group+.btn-group,.btn-group-vertical .btn-group+.member-runner-link,.btn-group-vertical .member-runner-link+.btn,.btn-group-vertical .member-runner-link+.btn-group,.btn-group-vertical .member-runner-link+.member-runner-link{margin-left:-1px}.btn-toolbar{display:-ms-flexbox;display:-webkit-box;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-pack:start;-webkit-box-pack:start;justify-content:flex-start}.btn-toolbar .input-group{width:auto}.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle),.btn-group>.member-runner-link:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.btn-group>.btn:first-child,.btn-group>.member-runner-link:first-child{margin-left:0}.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle),.btn-group>.member-runner-link:first-child:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child),.btn-group>.member-runner-link:last-child:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.btn-group>.btn-group{float:left}.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn,.btn-group>.btn-group:not(:first-child):not(:last-child)>.member-runner-link{border-radius:0}.btn-group>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group>.btn-group:first-child:not(:last-child)>.dropdown-toggle,.btn-group>.btn-group:first-child:not(:last-child)>.member-runner-link:last-child{border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:last-child:not(:first-child)>.btn:first-child,.btn-group>.btn-group:last-child:not(:first-child)>.member-runner-link:first-child{border-top-left-radius:0;border-bottom-left-radius:0}.dropdown-toggle-split{padding-right:.5625rem;padding-left:.5625rem}.dropdown-toggle-split::after{margin-left:0}.btn-group-sm>.btn+.dropdown-toggle-split,.btn-group-sm>.member-runner-link+.dropdown-toggle-split,.btn-sm+.dropdown-toggle-split,.member-runner-link+.dropdown-toggle-split{padding-right:.375rem;padding-left:.375rem}.btn-group-lg>.btn+.dropdown-toggle-split,.btn-group-lg>.member-runner-link+.dropdown-toggle-split,.btn-lg+.dropdown-toggle-split{padding-right:.75rem;padding-left:.75rem}.btn-group-vertical{-ms-flex-direction:column;-webkit-box-orient:vertical;-webkit-box-direction:normal;flex-direction:column;-ms-flex-align:start;-webkit-box-align:start;align-items:flex-start;-ms-flex-pack:center;-webkit-box-pack:center;justify-content:center}.btn-group-vertical .btn,.btn-group-vertical .btn-group,.btn-group-vertical .member-runner-link{width:100%}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn+.member-runner-link,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group,.btn-group-vertical>.btn-group+.member-runner-link,.btn-group-vertical>.member-runner-link+.btn,.btn-group-vertical>.member-runner-link+.btn-group,.btn-group-vertical>.member-runner-link+.member-runner-link{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:not(:first-child):not(:last-child),.btn-group-vertical>.member-runner-link:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child),.btn-group-vertical>.member-runner-link:first-child:not(:last-child){border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child),.btn-group-vertical>.member-runner-link:last-child:not(:first-child){border-top-left-radius:0;border-top-right-radius:0}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn,.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.member-runner-link{border-radius:0}.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.member-runner-link:last-child{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child,.btn-group-vertical>.btn-group:last-child:not(:first-child)>.member-runner-link:first-child{border-top-left-radius:0;border-top-right-radius:0}.btn-group-toggle>.btn,.btn-group-toggle>.btn-group>.btn,.btn-group-toggle>.btn-group>.member-runner-link,.btn-group-toggle>.member-runner-link{margin-bottom:0}.btn-group-toggle>.btn input[type=checkbox],.btn-group-toggle>.btn input[type=radio],.btn-group-toggle>.btn-group>.btn input[type=checkbox],.btn-group-toggle>.btn-group>.btn input[type=radio],.btn-group-toggle>.member-runner-link input[type=checkbox],.btn-group-toggle>.member-runner-link input[type=radio]{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.input-group{position:relative;display:-ms-flexbox;display:-webkit-box;display:flex;-ms-flex-align:stretch;-webkit-box-align:stretch;align-items:stretch;width:100%}.input-group .form-control{position:relative;z-index:1;-ms-flex:1 1 auto;-webkit-box-flex:1;flex:1 1 auto;width:1%;margin-bottom:0}.input-group .form-control:active,.input-group .form-control:focus,.input-group .form-control:hover{z-index:2}.input-group .custom-file,.input-group .custom-select,.input-group .form-control,.input-group-addon,.input-group-btn{display:-ms-flexbox;display:-webkit-box;display:flex;-ms-flex-align:center;-webkit-box-align:center;align-items:center}.input-group .custom-file:not(:first-child):not(:last-child),.input-group .custom-select:not(:first-child):not(:last-child),.input-group .form-control:not(:first-child):not(:last-child),.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child){border-radius:0}.input-group .custom-file{display:-ms-flexbox;display:-webkit-box;display:flex;-ms-flex-align:center;-webkit-box-align:center;align-items:center}.input-group .custom-file,.input-group .custom-select{width:100%}.input-group-addon,.input-group-btn{white-space:nowrap}.input-group-addon{padding:.375rem .75rem;margin-bottom:0;font-size:1rem;font-weight:400;line-height:1.5;color:#495057;text-align:center;background-color:#e9ecef;border:1px solid #ced4da;border-radius:.25rem}.input-group-addon.form-control-sm,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.input-group-addon.btn,.input-group-sm>.input-group-btn>.input-group-addon.member-runner-link{padding:.25rem .5rem;font-size:.875rem;border-radius:.2rem}.input-group-addon.form-control-lg,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.input-group-addon.btn,.input-group-lg>.input-group-btn>.input-group-addon.member-runner-link{padding:.5rem 1rem;font-size:1.25rem;border-radius:.3rem}.input-group-addon input[type=checkbox],.input-group-addon input[type=radio]{margin-top:0}.input-group .custom-file:not(:last-child) .custom-file-control::before,.input-group .custom-select:not(:last-child),.input-group .form-control:not(:last-child),.input-group-addon:not(:last-child),.input-group-btn:not(:first-child)>.btn-group:not(:last-child)>.btn,.input-group-btn:not(:first-child)>.btn-group:not(:last-child)>.member-runner-link,.input-group-btn:not(:first-child)>.btn:not(:last-child):not(.dropdown-toggle),.input-group-btn:not(:first-child)>.member-runner-link:not(:last-child):not(.dropdown-toggle),.input-group-btn:not(:last-child)>.btn,.input-group-btn:not(:last-child)>.btn-group>.btn,.input-group-btn:not(:last-child)>.btn-group>.member-runner-link,.input-group-btn:not(:last-child)>.dropdown-toggle,.input-group-btn:not(:last-child)>.member-runner-link{border-top-right-radius:0;border-bottom-right-radius:0}.input-group-addon:not(:last-child){border-right:0}.input-group .custom-file:not(:first-child) .custom-file-control,.input-group .custom-select:not(:first-child),.input-group .form-control:not(:first-child),.input-group-addon:not(:first-child),.input-group-btn:not(:first-child)>.btn,.input-group-btn:not(:first-child)>.btn-group>.btn,.input-group-btn:not(:first-child)>.btn-group>.member-runner-link,.input-group-btn:not(:first-child)>.dropdown-toggle,.input-group-btn:not(:first-child)>.member-runner-link,.input-group-btn:not(:last-child)>.btn-group:not(:first-child)>.btn,.input-group-btn:not(:last-child)>.btn-group:not(:first-child)>.member-runner-link,.input-group-btn:not(:last-child)>.btn:not(:first-child),.input-group-btn:not(:last-child)>.member-runner-link:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.custom-file+.input-group-addon:not(:first-child),.custom-select+.input-group-addon:not(:first-child),.form-control+.input-group-addon:not(:first-child){border-left:0}.input-group-btn{position:relative;-ms-flex-align:stretch;-webkit-box-align:stretch;align-items:stretch;font-size:0;white-space:nowrap}.input-group-btn>.btn,.input-group-btn>.member-runner-link{position:relative}.input-group-btn>.btn+.btn,.input-group-btn>.btn+.member-runner-link,.input-group-btn>.member-runner-link+.btn,.input-group-btn>.member-runner-link+.member-runner-link{margin-left:-1px}.input-group-btn>.btn:active,.input-group-btn>.btn:focus,.input-group-btn>.btn:hover,.input-group-btn>.member-runner-link:active,.input-group-btn>.member-runner-link:focus,.input-group-btn>.member-runner-link:hover{z-index:2}.input-group-btn:first-child>.btn+.btn,.input-group-btn:first-child>.btn+.member-runner-link,.input-group-btn:first-child>.member-runner-link+.btn,.input-group-btn:first-child>.member-runner-link+.member-runner-link{margin-left:0}.input-group-btn:not(:last-child)>.btn,.input-group-btn:not(:last-child)>.btn-group,.input-group-btn:not(:last-child)>.member-runner-link{margin-right:-1px}.input-group-btn:not(:first-child)>.btn,.input-group-btn:not(:first-child)>.btn-group,.input-group-btn:not(:first-child)>.member-runner-link{z-index:1;margin-left:0}.input-group-btn:not(:first-child)>.btn-group:first-child,.input-group-btn:not(:first-child)>.btn:first-child,.input-group-btn:not(:first-child)>.member-runner-link:first-child{margin-left:-1px}.input-group-btn:not(:first-child)>.btn-group:active,.input-group-btn:not(:first-child)>.btn-group:focus,.input-group-btn:not(:first-child)>.btn-group:hover,.input-group-btn:not(:first-child)>.btn:active,.input-group-btn:not(:first-child)>.btn:focus,.input-group-btn:not(:first-child)>.btn:hover,.input-group-btn:not(:first-child)>.member-runner-link:active,.input-group-btn:not(:first-child)>.member-runner-link:focus,.input-group-btn:not(:first-child)>.member-runner-link:hover{z-index:2}.custom-control{position:relative;display:-ms-inline-flexbox;display:-webkit-inline-box;display:inline-flex;min-height:1.5rem;padding-left:1.5rem;margin-right:1rem}.custom-control-input{position:absolute;z-index:-1;opacity:0}.custom-control-input:checked~.custom-control-indicator{color:#fff;background-color:#007bff}.custom-control-input:focus~.custom-control-indicator{-webkit-box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(0,123,255,.25);box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(0,123,255,.25)}.custom-control-input:active~.custom-control-indicator{color:#fff;background-color:#b3d7ff}.custom-control-input:disabled~.custom-control-indicator{background-color:#e9ecef}.custom-control-input:disabled~.custom-control-description{color:#868e96}.custom-control-indicator{position:absolute;top:.25rem;left:0;display:block;width:1rem;height:1rem;pointer-events:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-color:#dee2e6}.custom-control-indicator::before{display:block;width:1rem;height:1rem;content:"";background-repeat:no-repeat;background-position:center center;background-size:50% 50%}.custom-checkbox .custom-control-indicator{border-radius:.25rem}.custom-checkbox .custom-control-input:checked~.custom-control-indicator{background-color:#007bff}.custom-checkbox .custom-control-input:checked~.custom-control-indicator::before{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26 2.974 7.25 8 2.193z'/%3E%3C/svg%3E")}.custom-checkbox .custom-control-input:indeterminate~.custom-control-indicator{background-color:#007bff}.custom-checkbox .custom-control-input:indeterminate~.custom-control-indicator::before{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 4'%3E%3Cpath stroke='%23fff' d='M0 2h4'/%3E%3C/svg%3E")}.custom-radio .custom-control-indicator{border-radius:50%}.custom-radio .custom-control-input:checked~.custom-control-indicator{background-color:#007bff}.custom-radio .custom-control-input:checked~.custom-control-indicator::before{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3E%3Ccircle r='3' fill='%23fff'/%3E%3C/svg%3E")}.custom-controls-stacked{display:-ms-flexbox;display:-webkit-box;display:flex;-ms-flex-direction:column;-webkit-box-orient:vertical;-webkit-box-direction:normal;flex-direction:column}.custom-controls-stacked .custom-control{margin-bottom:.25rem}.custom-controls-stacked .custom-control+.custom-control{margin-left:0}.custom-select{display:inline-block;max-width:100%;height:calc(2.25rem + 2px);padding:.375rem 1.75rem .375rem .75rem;line-height:1.5;color:#495057;vertical-align:middle;background:#fff url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3E%3Cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3E%3C/svg%3E") no-repeat right .75rem center;background-size:8px 10px;border:1px solid #ced4da;border-radius:.25rem;-webkit-appearance:none;-moz-appearance:none;appearance:none}.custom-select:focus{border-color:#80bdff;outline:0;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.075),0 0 0 .2rem rgba(0,123,255,.25);box-shadow:inset 0 1px 2px rgba(0,0,0,.075),0 0 0 .2rem rgba(0,123,255,.25)}.custom-select:focus::-ms-value{color:#495057;background-color:#fff}.custom-select[multiple],.custom-select[size]:not([size="1"]){height:auto;padding-right:.75rem;background-image:none}.custom-select:disabled{color:#868e96;background-color:#e9ecef}.custom-select::-ms-expand{opacity:0}.custom-select-sm{height:calc(1.8125rem + 2px);padding-top:.375rem;padding-bottom:.375rem;font-size:75%}.custom-select-lg{height:calc(2.875rem + 2px);padding-top:.375rem;padding-bottom:.375rem;font-size:125%}.custom-file{position:relative;display:inline-block;max-width:100%;height:calc(2.25rem + 2px);margin-bottom:0}.custom-file-input{min-width:14rem;max-width:100%;height:calc(2.25rem + 2px);margin:0;opacity:0}.custom-file-input:focus~.custom-file-control{border-color:#80bdff;-webkit-box-shadow:0 0 0 .2rem rgba(0,123,255,.25);box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.custom-file-input:focus~.custom-file-control::before{border-color:#80bdff}.custom-file-control{position:absolute;top:0;right:0;left:0;height:calc(2.25rem + 2px);padding:.375rem .75rem;line-height:1.5;color:#495057;pointer-events:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-color:#fff;border:1px solid #ced4da;border-radius:.25rem}.custom-file-control:lang(en):empty::after{content:"Choose file..."}.custom-file-control::before{position:absolute;top:-1px;right:-1px;bottom:-1px;z-index:1;display:block;height:calc(2.25rem + 2px);padding:.375rem .75rem;line-height:1.5;color:#495057;background-color:#e9ecef;border:1px solid #ced4da;border-radius:0 .25rem .25rem 0}.custom-file-control:lang(en)::before{content:"Browse"}.nav{display:-ms-flexbox;display:-webkit-box;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none}.nav-link{display:block;padding:.5rem 1rem}.nav-link:focus,.nav-link:hover{text-decoration:none}.nav-link.disabled{color:#868e96}.nav-tabs{border-bottom:1px solid #dee2e6}.nav-tabs .nav-item{margin-bottom:-1px}.nav-tabs .nav-link{border:1px solid transparent;border-top-left-radius:.25rem;border-top-right-radius:.25rem}.nav-tabs .nav-link:focus,.nav-tabs .nav-link:hover{border-color:#e9ecef #e9ecef #dee2e6}.nav-tabs .nav-link.disabled{color:#868e96;background-color:transparent;border-color:transparent}.nav-tabs .nav-item.show .nav-link,.nav-tabs .nav-link.active{color:#495057;background-color:#fff;border-color:#dee2e6 #dee2e6 #fff}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.nav-pills .nav-link{border-radius:.25rem}.nav-pills .nav-link.active,.nav-pills .show>.nav-link{color:#fff;background-color:#007bff}.nav-fill .nav-item{-ms-flex:1 1 auto;-webkit-box-flex:1;flex:1 1 auto;text-align:center}.nav-justified .nav-item{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;-webkit-box-flex:1;flex-grow:1;text-align:center}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.navbar{position:relative;display:-ms-flexbox;display:-webkit-box;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-align:center;-webkit-box-align:center;align-items:center;-ms-flex-pack:justify;-webkit-box-pack:justify;justify-content:space-between;padding:.5rem 1rem}.navbar>.container,.navbar>.container-fluid{display:-ms-flexbox;display:-webkit-box;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-align:center;-webkit-box-align:center;align-items:center;-ms-flex-pack:justify;-webkit-box-pack:justify;justify-content:space-between}.navbar-brand{display:inline-block;padding-top:.3125rem;padding-bottom:.3125rem;margin-right:1rem;font-size:1.25rem;line-height:inherit;white-space:nowrap}.navbar-brand:focus,.navbar-brand:hover{text-decoration:none}.navbar-nav{display:-ms-flexbox;display:-webkit-box;display:flex;-ms-flex-direction:column;-webkit-box-orient:vertical;-webkit-box-direction:normal;flex-direction:column;padding-left:0;margin-bottom:0;list-style:none}.navbar-nav .nav-link{padding-right:0;padding-left:0}.navbar-nav .dropdown-menu{position:static;float:none}.navbar-text{display:inline-block;padding-top:.5rem;padding-bottom:.5rem}.navbar-collapse{-ms-flex-preferred-size:100%;flex-basis:100%;-ms-flex-positive:1;-webkit-box-flex:1;flex-grow:1;-ms-flex-align:center;-webkit-box-align:center;align-items:center}.navbar-toggler{padding:.25rem .75rem;font-size:1.25rem;line-height:1;background-color:transparent;border:1px solid transparent;border-radius:.25rem}.navbar-toggler:focus,.navbar-toggler:hover{text-decoration:none}.navbar-toggler-icon{display:inline-block;width:1.5em;height:1.5em;vertical-align:middle;content:"";background:no-repeat center center;background-size:100% 100%}@media (max-width:575.99px){.navbar-expand-sm>.container,.navbar-expand-sm>.container-fluid{padding-right:0;padding-left:0}}@media (min-width:576px){.navbar-expand-sm{-ms-flex-flow:row nowrap;-webkit-box-orient:horizontal;-webkit-box-direction:normal;flex-flow:row nowrap;-ms-flex-pack:start;-webkit-box-pack:start;justify-content:flex-start}.navbar-expand-sm .navbar-nav{-ms-flex-direction:row;-webkit-box-orient:horizontal;-webkit-box-direction:normal;flex-direction:row}.navbar-expand-sm .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-sm .navbar-nav .dropdown-menu-right{right:0;left:auto}.navbar-expand-sm .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-sm>.container,.navbar-expand-sm>.container-fluid{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-sm .navbar-collapse{display:-ms-flexbox!important;display:-webkit-box!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-sm .navbar-toggler{display:none}.navbar-expand-sm .dropup .dropdown-menu{top:auto;bottom:100%}}@media (max-width:767.99px){.navbar-expand-md>.container,.navbar-expand-md>.container-fluid{padding-right:0;padding-left:0}}@media (min-width:768px){.navbar-expand-md{-ms-flex-flow:row nowrap;-webkit-box-orient:horizontal;-webkit-box-direction:normal;flex-flow:row nowrap;-ms-flex-pack:start;-webkit-box-pack:start;justify-content:flex-start}.navbar-expand-md .navbar-nav{-ms-flex-direction:row;-webkit-box-orient:horizontal;-webkit-box-direction:normal;flex-direction:row}.navbar-expand-md .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-md .navbar-nav .dropdown-menu-right{right:0;left:auto}.navbar-expand-md .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-md>.container,.navbar-expand-md>.container-fluid{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-md .navbar-collapse{display:-ms-flexbox!important;display:-webkit-box!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-md .navbar-toggler{display:none}.navbar-expand-md .dropup .dropdown-menu{top:auto;bottom:100%}}@media (max-width:991.99px){.navbar-expand-lg>.container,.navbar-expand-lg>.container-fluid{padding-right:0;padding-left:0}}@media (min-width:992px){.navbar-expand-lg{-ms-flex-flow:row nowrap;-webkit-box-orient:horizontal;-webkit-box-direction:normal;flex-flow:row nowrap;-ms-flex-pack:start;-webkit-box-pack:start;justify-content:flex-start}.navbar-expand-lg .navbar-nav{-ms-flex-direction:row;-webkit-box-orient:horizontal;-webkit-box-direction:normal;flex-direction:row}.navbar-expand-lg .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-lg .navbar-nav .dropdown-menu-right{right:0;left:auto}.navbar-expand-lg .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-lg>.container,.navbar-expand-lg>.container-fluid{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-lg .navbar-collapse{display:-ms-flexbox!important;display:-webkit-box!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-lg .navbar-toggler{display:none}.navbar-expand-lg .dropup .dropdown-menu{top:auto;bottom:100%}}@media (max-width:1199.99px){.navbar-expand-xl>.container,.navbar-expand-xl>.container-fluid{padding-right:0;padding-left:0}}@media (min-width:1200px){.navbar-expand-xl{-ms-flex-flow:row nowrap;-webkit-box-orient:horizontal;-webkit-box-direction:normal;flex-flow:row nowrap;-ms-flex-pack:start;-webkit-box-pack:start;justify-content:flex-start}.navbar-expand-xl .navbar-nav{-ms-flex-direction:row;-webkit-box-orient:horizontal;-webkit-box-direction:normal;flex-direction:row}.navbar-expand-xl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xl .navbar-nav .dropdown-menu-right{right:0;left:auto}.navbar-expand-xl .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-xl>.container,.navbar-expand-xl>.container-fluid{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-xl .navbar-collapse{display:-ms-flexbox!important;display:-webkit-box!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-xl .navbar-toggler{display:none}.navbar-expand-xl .dropup .dropdown-menu{top:auto;bottom:100%}}.navbar-expand{-ms-flex-flow:row nowrap;-webkit-box-orient:horizontal;-webkit-box-direction:normal;flex-flow:row nowrap;-ms-flex-pack:start;-webkit-box-pack:start;justify-content:flex-start}.navbar-expand>.container,.navbar-expand>.container-fluid{padding-right:0;padding-left:0}.navbar-expand .navbar-nav{-ms-flex-direction:row;-webkit-box-orient:horizontal;-webkit-box-direction:normal;flex-direction:row}.navbar-expand .navbar-nav .dropdown-menu{position:absolute}.navbar-expand .navbar-nav .dropdown-menu-right{right:0;left:auto}.navbar-expand .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand>.container,.navbar-expand>.container-fluid{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand .navbar-collapse{display:-ms-flexbox!important;display:-webkit-box!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand .navbar-toggler{display:none}.navbar-expand .dropup .dropdown-menu{top:auto;bottom:100%}.navbar-light .navbar-brand{color:rgba(0,0,0,.9)}.navbar-light .navbar-brand:focus,.navbar-light .navbar-brand:hover{color:rgba(0,0,0,.9)}.navbar-light .navbar-nav .nav-link{color:rgba(0,0,0,.5)}.navbar-light .navbar-nav .nav-link:focus,.navbar-light .navbar-nav .nav-link:hover{color:rgba(0,0,0,.7)}.navbar-light .navbar-nav .nav-link.disabled{color:rgba(0,0,0,.3)}.navbar-light .navbar-nav .active>.nav-link,.navbar-light .navbar-nav .nav-link.active,.navbar-light .navbar-nav .nav-link.show,.navbar-light .navbar-nav .show>.nav-link{color:rgba(0,0,0,.9)}.navbar-light .navbar-toggler{color:rgba(0,0,0,.5);border-color:rgba(0,0,0,.1)}.navbar-light .navbar-toggler-icon{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='rgba(0, 0, 0, 0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E")}.navbar-light .navbar-text{color:rgba(0,0,0,.5)}.navbar-light .navbar-text a{color:rgba(0,0,0,.9)}.navbar-light .navbar-text a:focus,.navbar-light .navbar-text a:hover{color:rgba(0,0,0,.9)}.navbar-dark .navbar-brand{color:#fff}.navbar-dark .navbar-brand:focus,.navbar-dark .navbar-brand:hover{color:#fff}.navbar-dark .navbar-nav .nav-link{color:rgba(255,255,255,.5)}.navbar-dark .navbar-nav .nav-link:focus,.navbar-dark .navbar-nav .nav-link:hover{color:rgba(255,255,255,.75)}.navbar-dark .navbar-nav .nav-link.disabled{color:rgba(255,255,255,.25)}.navbar-dark .navbar-nav .active>.nav-link,.navbar-dark .navbar-nav .nav-link.active,.navbar-dark .navbar-nav .nav-link.show,.navbar-dark .navbar-nav .show>.nav-link{color:#fff}.navbar-dark .navbar-toggler{color:rgba(255,255,255,.5);border-color:rgba(255,255,255,.1)}.navbar-dark .navbar-toggler-icon{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='rgba(255, 255, 255, 0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E")}.navbar-dark .navbar-text{color:rgba(255,255,255,.5)}.navbar-dark .navbar-text a{color:#fff}.navbar-dark .navbar-text a:focus,.navbar-dark .navbar-text a:hover{color:#fff}.card,.member{position:relative;display:-ms-flexbox;display:-webkit-box;display:flex;-ms-flex-direction:column;-webkit-box-orient:vertical;-webkit-box-direction:normal;flex-direction:column;min-width:0;word-wrap:break-word;background-color:#fff;background-clip:border-box;border:1px solid rgba(0,0,0,.125);border-radius:.25rem}.card>hr,.member>hr{margin-right:0;margin-left:0}.card>.list-group:first-child .list-group-item:first-child,.member>.list-group:first-child .list-group-item:first-child{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.card>.list-group:last-child .list-group-item:last-child,.member>.list-group:last-child .list-group-item:last-child{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.card-body,.member-info{-ms-flex:1 1 auto;-webkit-box-flex:1;flex:1 1 auto;padding:1.25rem}.card-title{margin-bottom:.75rem}.card-subtitle{margin-top:-.375rem;margin-bottom:0}.card-text:last-child{margin-bottom:0}.card-link:hover{text-decoration:none}.card-link+.card-link{margin-left:1.25rem}.card-header{padding:.75rem 1.25rem;margin-bottom:0;background-color:rgba(0,0,0,.03);border-bottom:1px solid rgba(0,0,0,.125)}.card-header:first-child{border-radius:calc(.25rem - 1px) calc(.25rem - 1px) 0 0}.card-header+.list-group .list-group-item:first-child{border-top:0}.card-footer{padding:.75rem 1.25rem;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.125)}.card-footer:last-child{border-radius:0 0 calc(.25rem - 1px) calc(.25rem - 1px)}.card-header-tabs{margin-right:-.625rem;margin-bottom:-.75rem;margin-left:-.625rem;border-bottom:0}.card-header-pills{margin-right:-.625rem;margin-left:-.625rem}.card-img-overlay{position:absolute;top:0;right:0;bottom:0;left:0;padding:1.25rem}.card-img{width:100%;border-radius:calc(.25rem - 1px)}.card-img-top{width:100%;border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.card-img-bottom{width:100%;border-bottom-right-radius:calc(.25rem - 1px);border-bottom-left-radius:calc(.25rem - 1px)}.card-deck{display:-ms-flexbox;display:-webkit-box;display:flex;-ms-flex-direction:column;-webkit-box-orient:vertical;-webkit-box-direction:normal;flex-direction:column}.card-deck .card,.card-deck .member{margin-bottom:15px}@media (min-width:576px){.card-deck{-ms-flex-flow:row wrap;-webkit-box-orient:horizontal;-webkit-box-direction:normal;flex-flow:row wrap;margin-right:-15px;margin-left:-15px}.card-deck .card,.card-deck .member{display:-ms-flexbox;display:-webkit-box;display:flex;-ms-flex:1 0 0%;-webkit-box-flex:1;flex:1 0 0%;-ms-flex-direction:column;-webkit-box-orient:vertical;-webkit-box-direction:normal;flex-direction:column;margin-right:15px;margin-bottom:0;margin-left:15px}}.card-group{display:-ms-flexbox;display:-webkit-box;display:flex;-ms-flex-direction:column;-webkit-box-orient:vertical;-webkit-box-direction:normal;flex-direction:column}.card-group>.card,.card-group>.member{margin-bottom:15px}@media (min-width:576px){.card-group{-ms-flex-flow:row wrap;-webkit-box-orient:horizontal;-webkit-box-direction:normal;flex-flow:row wrap}.card-group>.card,.card-group>.member{-ms-flex:1 0 0%;-webkit-box-flex:1;flex:1 0 0%;margin-bottom:0}.card-group>.card+.card,.card-group>.card+.member,.card-group>.member+.card,.card-group>.member+.member{margin-left:0;border-left:0}.card-group>.card:first-child,.card-group>.member:first-child{border-top-right-radius:0;border-bottom-right-radius:0}.card-group>.card:first-child .card-header,.card-group>.card:first-child .card-img-top,.card-group>.member:first-child .card-header,.card-group>.member:first-child .card-img-top{border-top-right-radius:0}.card-group>.card:first-child .card-footer,.card-group>.card:first-child .card-img-bottom,.card-group>.member:first-child .card-footer,.card-group>.member:first-child .card-img-bottom{border-bottom-right-radius:0}.card-group>.card:last-child,.card-group>.member:last-child{border-top-left-radius:0;border-bottom-left-radius:0}.card-group>.card:last-child .card-header,.card-group>.card:last-child .card-img-top,.card-group>.member:last-child .card-header,.card-group>.member:last-child .card-img-top{border-top-left-radius:0}.card-group>.card:last-child .card-footer,.card-group>.card:last-child .card-img-bottom,.card-group>.member:last-child .card-footer,.card-group>.member:last-child .card-img-bottom{border-bottom-left-radius:0}.card-group>.card:only-child,.card-group>.member:only-child{border-radius:.25rem}.card-group>.card:only-child .card-header,.card-group>.card:only-child .card-img-top,.card-group>.member:only-child .card-header,.card-group>.member:only-child .card-img-top{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.card-group>.card:only-child .card-footer,.card-group>.card:only-child .card-img-bottom,.card-group>.member:only-child .card-footer,.card-group>.member:only-child .card-img-bottom{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.card-group>.card:not(:first-child):not(:last-child):not(:only-child),.card-group>.member:not(:first-child):not(:last-child):not(:only-child){border-radius:0}.card-group>.card:not(:first-child):not(:last-child):not(:only-child) .card-footer,.card-group>.card:not(:first-child):not(:last-child):not(:only-child) .card-header,.card-group>.card:not(:first-child):not(:last-child):not(:only-child) .card-img-bottom,.card-group>.card:not(:first-child):not(:last-child):not(:only-child) .card-img-top,.card-group>.member:not(:first-child):not(:last-child):not(:only-child) .card-footer,.card-group>.member:not(:first-child):not(:last-child):not(:only-child) .card-header,.card-group>.member:not(:first-child):not(:last-child):not(:only-child) .card-img-bottom,.card-group>.member:not(:first-child):not(:last-child):not(:only-child) .card-img-top{border-radius:0}}.card-columns .card,.card-columns .member{margin-bottom:.75rem}@media (min-width:576px){.card-columns{-webkit-column-count:3;-moz-column-count:3;column-count:3;-webkit-column-gap:1.25rem;-moz-column-gap:1.25rem;column-gap:1.25rem}.card-columns .card,.card-columns .member{display:inline-block;width:100%}}.breadcrumb{display:-ms-flexbox;display:-webkit-box;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;padding:.75rem 1rem;margin-bottom:1rem;list-style:none;background-color:#e9ecef;border-radius:.25rem}.breadcrumb-item+.breadcrumb-item::before{display:inline-block;padding-right:.5rem;padding-left:.5rem;color:#868e96;content:"/"}.breadcrumb-item+.breadcrumb-item:hover::before{text-decoration:underline}.breadcrumb-item+.breadcrumb-item:hover::before{text-decoration:none}.breadcrumb-item.active{color:#868e96}.pagination{display:-ms-flexbox;display:-webkit-box;display:flex;padding-left:0;list-style:none;border-radius:.25rem}.page-link{position:relative;display:block;padding:.5rem .75rem;margin-left:-1px;line-height:1.25;color:#007bff;background-color:#fff;border:1px solid #dee2e6}.page-link:focus,.page-link:hover{color:#0056b3;text-decoration:none;background-color:#e9ecef;border-color:#dee2e6}.page-item:first-child .page-link{margin-left:0;border-top-left-radius:.25rem;border-bottom-left-radius:.25rem}.page-item:last-child .page-link{border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}.page-item.active .page-link{z-index:1;color:#fff;background-color:#007bff;border-color:#007bff}.page-item.disabled .page-link{color:#868e96;pointer-events:none;background-color:#fff;border-color:#dee2e6}.pagination-lg .page-link{padding:.75rem 1.5rem;font-size:1.25rem;line-height:1.5}.pagination-lg .page-item:first-child .page-link{border-top-left-radius:.3rem;border-bottom-left-radius:.3rem}.pagination-lg .page-item:last-child .page-link{border-top-right-radius:.3rem;border-bottom-right-radius:.3rem}.pagination-sm .page-link{padding:.25rem .5rem;font-size:.875rem;line-height:1.5}.pagination-sm .page-item:first-child .page-link{border-top-left-radius:.2rem;border-bottom-left-radius:.2rem}.pagination-sm .page-item:last-child .page-link{border-top-right-radius:.2rem;border-bottom-right-radius:.2rem}.badge,.beta,.legacy{display:inline-block;padding:.25em .4em;font-size:75%;font-weight:700;line-height:1;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25rem}.badge:empty,.beta:empty,.legacy:empty{display:none}.btn .badge,.btn .beta,.btn .legacy,.member-runner-link .badge,.member-runner-link .beta,.member-runner-link .legacy{position:relative;top:-1px}.badge-pill,.beta,.legacy{padding-right:.6em;padding-left:.6em;border-radius:10rem}.badge-primary{color:#fff;background-color:#007bff}.badge-primary[href]:focus,.badge-primary[href]:hover{color:#fff;text-decoration:none;background-color:#0062cc}.badge-secondary{color:#fff;background-color:#868e96}.badge-secondary[href]:focus,.badge-secondary[href]:hover{color:#fff;text-decoration:none;background-color:#6c757d}.badge-success{color:#fff;background-color:#28a745}.badge-success[href]:focus,.badge-success[href]:hover{color:#fff;text-decoration:none;background-color:#1e7e34}.badge-info,.beta,.legacy{color:#fff;background-color:#17a2b8}.badge-info[href]:focus,.badge-info[href]:hover,[href].beta:focus,[href].beta:hover,[href].legacy:focus,[href].legacy:hover{color:#fff;text-decoration:none;background-color:#117a8b}.badge-warning{color:#212529;background-color:#ffc107}.badge-warning[href]:focus,.badge-warning[href]:hover{color:#212529;text-decoration:none;background-color:#d39e00}.badge-danger{color:#fff;background-color:#dc3545}.badge-danger[href]:focus,.badge-danger[href]:hover{color:#fff;text-decoration:none;background-color:#bd2130}.badge-light{color:#212529;background-color:#f8f9fa}.badge-light[href]:focus,.badge-light[href]:hover{color:#212529;text-decoration:none;background-color:#dae0e5}.badge-dark{color:#fff;background-color:#343a40}.badge-dark[href]:focus,.badge-dark[href]:hover{color:#fff;text-decoration:none;background-color:#1d2124}.jumbotron{padding:2rem 1rem;margin-bottom:2rem;background-color:#e9ecef;border-radius:.3rem}@media (min-width:576px){.jumbotron{padding:4rem 2rem}}.jumbotron-fluid{padding-right:0;padding-left:0;border-radius:0}.alert{position:relative;padding:.75rem 1.25rem;margin-bottom:1rem;border:1px solid transparent;border-radius:.25rem}.alert-heading{color:inherit}.alert-link{font-weight:700}.alert-dismissible{padding-right:4rem}.alert-dismissible .close{position:absolute;top:0;right:0;padding:.75rem 1.25rem;color:inherit}.alert-primary{color:#004085;background-color:#cce5ff;border-color:#b8daff}.alert-primary hr{border-top-color:#9fcdff}.alert-primary .alert-link{color:#002752}.alert-secondary{color:#464a4e;background-color:#e7e8ea;border-color:#dddfe2}.alert-secondary hr{border-top-color:#cfd2d6}.alert-secondary .alert-link{color:#2e3133}.alert-success{color:#155724;background-color:#d4edda;border-color:#c3e6cb}.alert-success hr{border-top-color:#b1dfbb}.alert-success .alert-link{color:#0b2e13}.alert-info{color:#0c5460;background-color:#d1ecf1;border-color:#bee5eb}.alert-info hr{border-top-color:#abdde5}.alert-info .alert-link{color:#062c33}.alert-warning{color:#856404;background-color:#fff3cd;border-color:#ffeeba}.alert-warning hr{border-top-color:#ffe8a1}.alert-warning .alert-link{color:#533f03}.alert-danger{color:#721c24;background-color:#f8d7da;border-color:#f5c6cb}.alert-danger hr{border-top-color:#f1b0b7}.alert-danger .alert-link{color:#491217}.alert-light{color:#818182;background-color:#fefefe;border-color:#fdfdfe}.alert-light hr{border-top-color:#ececf6}.alert-light .alert-link{color:#686868}.alert-dark{color:#1b1e21;background-color:#d6d8d9;border-color:#c6c8ca}.alert-dark hr{border-top-color:#b9bbbe}.alert-dark .alert-link{color:#040505}@-webkit-keyframes progress-bar-stripes{from{background-position:1rem 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:1rem 0}to{background-position:0 0}}.progress{display:-ms-flexbox;display:-webkit-box;display:flex;height:1rem;overflow:hidden;font-size:.75rem;background-color:#e9ecef;border-radius:.25rem}.progress-bar{display:-ms-flexbox;display:-webkit-box;display:flex;-ms-flex-direction:column;-webkit-box-orient:vertical;-webkit-box-direction:normal;flex-direction:column;-ms-flex-pack:center;-webkit-box-pack:center;justify-content:center;color:#fff;text-align:center;background-color:#007bff;-webkit-transition:width .6s ease;transition:width .6s ease}.progress-bar-striped{background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-size:1rem 1rem}.progress-bar-animated{-webkit-animation:progress-bar-stripes 1s linear infinite;animation:progress-bar-stripes 1s linear infinite}.media{display:-ms-flexbox;display:-webkit-box;display:flex;-ms-flex-align:start;-webkit-box-align:start;align-items:flex-start}.media-body{-ms-flex:1;-webkit-box-flex:1;flex:1}.list-group{display:-ms-flexbox;display:-webkit-box;display:flex;-ms-flex-direction:column;-webkit-box-orient:vertical;-webkit-box-direction:normal;flex-direction:column;padding-left:0;margin-bottom:0}.list-group-item-action{width:100%;color:#495057;text-align:inherit}.list-group-item-action:focus,.list-group-item-action:hover{color:#495057;text-decoration:none;background-color:#f8f9fa}.list-group-item-action:active{color:#212529;background-color:#e9ecef}.list-group-item{position:relative;display:block;padding:.75rem 1.25rem;margin-bottom:-1px;background-color:#fff;border:1px solid rgba(0,0,0,.125)}.list-group-item:first-child{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.list-group-item:focus,.list-group-item:hover{text-decoration:none}.list-group-item.disabled,.list-group-item:disabled{color:#868e96;background-color:#fff}.list-group-item.active{z-index:1;color:#fff;background-color:#007bff;border-color:#007bff}.list-group-flush .list-group-item{border-right:0;border-left:0;border-radius:0}.list-group-flush:first-child .list-group-item:first-child{border-top:0}.list-group-flush:last-child .list-group-item:last-child{border-bottom:0}.list-group-item-primary{color:#004085;background-color:#b8daff}a.list-group-item-primary,button.list-group-item-primary{color:#004085}a.list-group-item-primary:focus,a.list-group-item-primary:hover,button.list-group-item-primary:focus,button.list-group-item-primary:hover{color:#004085;background-color:#9fcdff}a.list-group-item-primary.active,button.list-group-item-primary.active{color:#fff;background-color:#004085;border-color:#004085}.list-group-item-secondary{color:#464a4e;background-color:#dddfe2}a.list-group-item-secondary,button.list-group-item-secondary{color:#464a4e}a.list-group-item-secondary:focus,a.list-group-item-secondary:hover,button.list-group-item-secondary:focus,button.list-group-item-secondary:hover{color:#464a4e;background-color:#cfd2d6}a.list-group-item-secondary.active,button.list-group-item-secondary.active{color:#fff;background-color:#464a4e;border-color:#464a4e}.list-group-item-success{color:#155724;background-color:#c3e6cb}a.list-group-item-success,button.list-group-item-success{color:#155724}a.list-group-item-success:focus,a.list-group-item-success:hover,button.list-group-item-success:focus,button.list-group-item-success:hover{color:#155724;background-color:#b1dfbb}a.list-group-item-success.active,button.list-group-item-success.active{color:#fff;background-color:#155724;border-color:#155724}.list-group-item-info{color:#0c5460;background-color:#bee5eb}a.list-group-item-info,button.list-group-item-info{color:#0c5460}a.list-group-item-info:focus,a.list-group-item-info:hover,button.list-group-item-info:focus,button.list-group-item-info:hover{color:#0c5460;background-color:#abdde5}a.list-group-item-info.active,button.list-group-item-info.active{color:#fff;background-color:#0c5460;border-color:#0c5460}.list-group-item-warning{color:#856404;background-color:#ffeeba}a.list-group-item-warning,button.list-group-item-warning{color:#856404}a.list-group-item-warning:focus,a.list-group-item-warning:hover,button.list-group-item-warning:focus,button.list-group-item-warning:hover{color:#856404;background-color:#ffe8a1}a.list-group-item-warning.active,button.list-group-item-warning.active{color:#fff;background-color:#856404;border-color:#856404}.list-group-item-danger{color:#721c24;background-color:#f5c6cb}a.list-group-item-danger,button.list-group-item-danger{color:#721c24}a.list-group-item-danger:focus,a.list-group-item-danger:hover,button.list-group-item-danger:focus,button.list-group-item-danger:hover{color:#721c24;background-color:#f1b0b7}a.list-group-item-danger.active,button.list-group-item-danger.active{color:#fff;background-color:#721c24;border-color:#721c24}.list-group-item-light{color:#818182;background-color:#fdfdfe}a.list-group-item-light,button.list-group-item-light{color:#818182}a.list-group-item-light:focus,a.list-group-item-light:hover,button.list-group-item-light:focus,button.list-group-item-light:hover{color:#818182;background-color:#ececf6}a.list-group-item-light.active,button.list-group-item-light.active{color:#fff;background-color:#818182;border-color:#818182}.list-group-item-dark{color:#1b1e21;background-color:#c6c8ca}a.list-group-item-dark,button.list-group-item-dark{color:#1b1e21}a.list-group-item-dark:focus,a.list-group-item-dark:hover,button.list-group-item-dark:focus,button.list-group-item-dark:hover{color:#1b1e21;background-color:#b9bbbe}a.list-group-item-dark.active,button.list-group-item-dark.active{color:#fff;background-color:#1b1e21;border-color:#1b1e21}.close{float:right;font-size:1.5rem;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:.5}.close:focus,.close:hover{color:#000;text-decoration:none;opacity:.75}button.close{padding:0;background-color:transparent;border:0;-webkit-appearance:none}.modal-open{overflow:hidden}.modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;display:none;overflow:hidden;outline:0}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{position:relative;width:auto;margin:.5rem;pointer-events:none}.modal.fade .modal-dialog{transition:-webkit-transform .3s ease-out;-webkit-transition:-webkit-transform .3s ease-out;transition:transform .3s ease-out;transition:transform .3s ease-out,-webkit-transform .3s ease-out;-webkit-transform:translate(0,-25%);transform:translate(0,-25%)}.modal.show .modal-dialog{-webkit-transform:translate(0,0);transform:translate(0,0)}.modal-dialog-centered{display:-ms-flexbox;display:-webkit-box;display:flex;-ms-flex-align:center;-webkit-box-align:center;align-items:center;min-height:calc(100% - 1rem)}.modal-content{position:relative;display:-ms-flexbox;display:-webkit-box;display:flex;-ms-flex-direction:column;-webkit-box-orient:vertical;-webkit-box-direction:normal;flex-direction:column;width:100%;pointer-events:auto;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.3rem;outline:0}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}.modal-backdrop.fade{opacity:0}.modal-backdrop.show{opacity:.5}.modal-header{display:-ms-flexbox;display:-webkit-box;display:flex;-ms-flex-align:start;-webkit-box-align:start;align-items:flex-start;-ms-flex-pack:justify;-webkit-box-pack:justify;justify-content:space-between;padding:1rem;border-bottom:1px solid #e9ecef;border-top-left-radius:.3rem;border-top-right-radius:.3rem}.modal-header .close{padding:1rem;margin:-1rem -1rem -1rem auto}.modal-title{margin-bottom:0;line-height:1.5}.modal-body{position:relative;-ms-flex:1 1 auto;-webkit-box-flex:1;flex:1 1 auto;padding:1rem}.modal-footer{display:-ms-flexbox;display:-webkit-box;display:flex;-ms-flex-align:center;-webkit-box-align:center;align-items:center;-ms-flex-pack:end;-webkit-box-pack:end;justify-content:flex-end;padding:1rem;border-top:1px solid #e9ecef}.modal-footer>:not(:first-child){margin-left:.25rem}.modal-footer>:not(:last-child){margin-right:.25rem}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:576px){.modal-dialog{max-width:500px;margin:1.75rem auto}.modal-dialog-centered{min-height:calc(100% - 3.5rem)}.modal-sm{max-width:300px}}@media (min-width:992px){.modal-lg{max-width:800px}}.tooltip{position:absolute;z-index:1070;display:block;margin:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;opacity:0}.tooltip.show{opacity:.9}.tooltip .arrow{position:absolute;display:block;width:.4rem;height:.4rem}.tooltip .arrow::before{position:absolute;border-color:transparent;border-style:solid}.tooltip.bs-tooltip-auto[x-placement^=top],.tooltip.bs-tooltip-top{padding:.4rem 0}.tooltip.bs-tooltip-auto[x-placement^=top] .arrow,.tooltip.bs-tooltip-top .arrow{bottom:0}.tooltip.bs-tooltip-auto[x-placement^=top] .arrow::before,.tooltip.bs-tooltip-top .arrow::before{margin-left:-.4rem;content:"";border-width:.4rem .4rem 0;border-top-color:#000}.tooltip.bs-tooltip-auto[x-placement^=right],.tooltip.bs-tooltip-right{padding:0 .4rem}.tooltip.bs-tooltip-auto[x-placement^=right] .arrow,.tooltip.bs-tooltip-right .arrow{left:0}.tooltip.bs-tooltip-auto[x-placement^=right] .arrow::before,.tooltip.bs-tooltip-right .arrow::before{margin-top:-.4rem;content:"";border-width:.4rem .4rem .4rem 0;border-right-color:#000}.tooltip.bs-tooltip-auto[x-placement^=bottom],.tooltip.bs-tooltip-bottom{padding:.4rem 0}.tooltip.bs-tooltip-auto[x-placement^=bottom] .arrow,.tooltip.bs-tooltip-bottom .arrow{top:0}.tooltip.bs-tooltip-auto[x-placement^=bottom] .arrow::before,.tooltip.bs-tooltip-bottom .arrow::before{margin-left:-.4rem;content:"";border-width:0 .4rem .4rem;border-bottom-color:#000}.tooltip.bs-tooltip-auto[x-placement^=left],.tooltip.bs-tooltip-left{padding:0 .4rem}.tooltip.bs-tooltip-auto[x-placement^=left] .arrow,.tooltip.bs-tooltip-left .arrow{right:0}.tooltip.bs-tooltip-auto[x-placement^=left] .arrow::before,.tooltip.bs-tooltip-left .arrow::before{right:0;margin-top:-.4rem;content:"";border-width:.4rem 0 .4rem .4rem;border-left-color:#000}.tooltip-inner{max-width:200px;padding:.25rem .5rem;color:#fff;text-align:center;background-color:#000;border-radius:.25rem}.popover{position:absolute;top:0;left:0;z-index:1060;display:block;max-width:276px;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.3rem}.popover .arrow{position:absolute;display:block;width:.8rem;height:.4rem}.popover .arrow::after,.popover .arrow::before{position:absolute;display:block;border-color:transparent;border-style:solid}.popover .arrow::before{content:"";border-width:.8rem}.popover .arrow::after{content:"";border-width:.8rem}.popover.bs-popover-auto[x-placement^=top],.popover.bs-popover-top{margin-bottom:.8rem}.popover.bs-popover-auto[x-placement^=top] .arrow,.popover.bs-popover-top .arrow{bottom:0}.popover.bs-popover-auto[x-placement^=top] .arrow::after,.popover.bs-popover-auto[x-placement^=top] .arrow::before,.popover.bs-popover-top .arrow::after,.popover.bs-popover-top .arrow::before{border-bottom-width:0}.popover.bs-popover-auto[x-placement^=top] .arrow::before,.popover.bs-popover-top .arrow::before{bottom:-.8rem;margin-left:-.8rem;border-top-color:rgba(0,0,0,.25)}.popover.bs-popover-auto[x-placement^=top] .arrow::after,.popover.bs-popover-top .arrow::after{bottom:calc((.8rem - 1px) * -1);margin-left:-.8rem;border-top-color:#fff}.popover.bs-popover-auto[x-placement^=right],.popover.bs-popover-right{margin-left:.8rem}.popover.bs-popover-auto[x-placement^=right] .arrow,.popover.bs-popover-right .arrow{left:0}.popover.bs-popover-auto[x-placement^=right] .arrow::after,.popover.bs-popover-auto[x-placement^=right] .arrow::before,.popover.bs-popover-right .arrow::after,.popover.bs-popover-right .arrow::before{margin-top:-.8rem;border-left-width:0}.popover.bs-popover-auto[x-placement^=right] .arrow::before,.popover.bs-popover-right .arrow::before{left:-.8rem;border-right-color:rgba(0,0,0,.25)}.popover.bs-popover-auto[x-placement^=right] .arrow::after,.popover.bs-popover-right .arrow::after{left:calc((.8rem - 1px) * -1);border-right-color:#fff}.popover.bs-popover-auto[x-placement^=bottom],.popover.bs-popover-bottom{margin-top:.8rem}.popover.bs-popover-auto[x-placement^=bottom] .arrow,.popover.bs-popover-bottom .arrow{top:0}.popover.bs-popover-auto[x-placement^=bottom] .arrow::after,.popover.bs-popover-auto[x-placement^=bottom] .arrow::before,.popover.bs-popover-bottom .arrow::after,.popover.bs-popover-bottom .arrow::before{margin-left:-.8rem;border-top-width:0}.popover.bs-popover-auto[x-placement^=bottom] .arrow::before,.popover.bs-popover-bottom .arrow::before{top:-.8rem;border-bottom-color:rgba(0,0,0,.25)}.popover.bs-popover-auto[x-placement^=bottom] .arrow::after,.popover.bs-popover-bottom .arrow::after{top:calc((.8rem - 1px) * -1);border-bottom-color:#fff}.popover.bs-popover-auto[x-placement^=bottom] .popover-header::before,.popover.bs-popover-bottom .popover-header::before{position:absolute;top:0;left:50%;display:block;width:20px;margin-left:-10px;content:"";border-bottom:1px solid #f7f7f7}.popover.bs-popover-auto[x-placement^=left],.popover.bs-popover-left{margin-right:.8rem}.popover.bs-popover-auto[x-placement^=left] .arrow,.popover.bs-popover-left .arrow{right:0}.popover.bs-popover-auto[x-placement^=left] .arrow::after,.popover.bs-popover-auto[x-placement^=left] .arrow::before,.popover.bs-popover-left .arrow::after,.popover.bs-popover-left .arrow::before{margin-top:-.8rem;border-right-width:0}.popover.bs-popover-auto[x-placement^=left] .arrow::before,.popover.bs-popover-left .arrow::before{right:-.8rem;border-left-color:rgba(0,0,0,.25)}.popover.bs-popover-auto[x-placement^=left] .arrow::after,.popover.bs-popover-left .arrow::after{right:calc((.8rem - 1px) * -1);border-left-color:#fff}.popover-header{padding:.5rem .75rem;margin-bottom:0;font-size:1rem;color:inherit;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-top-left-radius:calc(.3rem - 1px);border-top-right-radius:calc(.3rem - 1px)}.popover-header:empty{display:none}.popover-body{padding:.5rem .75rem;color:#212529}.carousel{position:relative}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-item{position:relative;display:none;-ms-flex-align:center;-webkit-box-align:center;align-items:center;width:100%;transition:-webkit-transform .6s ease;-webkit-transition:-webkit-transform .6s ease;transition:transform .6s ease;transition:transform .6s ease,-webkit-transform .6s ease;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-perspective:1000px;perspective:1000px}.carousel-item-next,.carousel-item-prev,.carousel-item.active{display:block}.carousel-item-next,.carousel-item-prev{position:absolute;top:0}.carousel-item-next.carousel-item-left,.carousel-item-prev.carousel-item-right{-webkit-transform:translateX(0);transform:translateX(0)}@supports (transform-style:preserve-3d){.carousel-item-next.carousel-item-left,.carousel-item-prev.carousel-item-right{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}.active.carousel-item-right,.carousel-item-next{-webkit-transform:translateX(100%);transform:translateX(100%)}@supports (transform-style:preserve-3d){.active.carousel-item-right,.carousel-item-next{-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}}.active.carousel-item-left,.carousel-item-prev{-webkit-transform:translateX(-100%);transform:translateX(-100%)}@supports (transform-style:preserve-3d){.active.carousel-item-left,.carousel-item-prev{-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}}.carousel-control-next,.carousel-control-prev{position:absolute;top:0;bottom:0;display:-ms-flexbox;display:-webkit-box;display:flex;-ms-flex-align:center;-webkit-box-align:center;align-items:center;-ms-flex-pack:center;-webkit-box-pack:center;justify-content:center;width:15%;color:#fff;text-align:center;opacity:.5}.carousel-control-next:focus,.carousel-control-next:hover,.carousel-control-prev:focus,.carousel-control-prev:hover{color:#fff;text-decoration:none;outline:0;opacity:.9}.carousel-control-prev{left:0}.carousel-control-next{right:0}.carousel-control-next-icon,.carousel-control-prev-icon{display:inline-block;width:20px;height:20px;background:transparent no-repeat center center;background-size:100% 100%}.carousel-control-prev-icon{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 8 8'%3E%3Cpath d='M5.25 0l-4 4 4 4 1.5-1.5-2.5-2.5 2.5-2.5-1.5-1.5z'/%3E%3C/svg%3E")}.carousel-control-next-icon{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 8 8'%3E%3Cpath d='M2.75 0l-1.5 1.5 2.5 2.5-2.5 2.5 1.5 1.5 4-4-4-4z'/%3E%3C/svg%3E")}.carousel-indicators{position:absolute;right:0;bottom:10px;left:0;z-index:15;display:-ms-flexbox;display:-webkit-box;display:flex;-ms-flex-pack:center;-webkit-box-pack:center;justify-content:center;padding-left:0;margin-right:15%;margin-left:15%;list-style:none}.carousel-indicators li{position:relative;-ms-flex:0 1 auto;-webkit-box-flex:0;flex:0 1 auto;width:30px;height:3px;margin-right:3px;margin-left:3px;text-indent:-999px;background-color:rgba(255,255,255,.5)}.carousel-indicators li::before{position:absolute;top:-10px;left:0;display:inline-block;width:100%;height:10px;content:""}.carousel-indicators li::after{position:absolute;bottom:-10px;left:0;display:inline-block;width:100%;height:10px;content:""}.carousel-indicators .active{background-color:#fff}.carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center}.align-baseline{vertical-align:baseline!important}.align-top{vertical-align:top!important}.align-middle{vertical-align:middle!important}.align-bottom{vertical-align:bottom!important}.align-text-bottom{vertical-align:text-bottom!important}.align-text-top{vertical-align:text-top!important}.bg-primary{background-color:#007bff!important}a.bg-primary:focus,a.bg-primary:hover{background-color:#0062cc!important}.bg-secondary{background-color:#868e96!important}a.bg-secondary:focus,a.bg-secondary:hover{background-color:#6c757d!important}.bg-success{background-color:#28a745!important}a.bg-success:focus,a.bg-success:hover{background-color:#1e7e34!important}.bg-info{background-color:#17a2b8!important}a.bg-info:focus,a.bg-info:hover{background-color:#117a8b!important}.bg-warning{background-color:#ffc107!important}a.bg-warning:focus,a.bg-warning:hover{background-color:#d39e00!important}.bg-danger{background-color:#dc3545!important}a.bg-danger:focus,a.bg-danger:hover{background-color:#bd2130!important}.bg-light,blockquote{background-color:#f8f9fa!important}a.bg-light:focus,a.bg-light:hover{background-color:#dae0e5!important}.bg-dark{background-color:#343a40!important}a.bg-dark:focus,a.bg-dark:hover{background-color:#1d2124!important}.bg-white{background-color:#fff!important}.bg-transparent{background-color:transparent!important}.border{border:1px solid #e9ecef!important}.border-0{border:0!important}.border-top-0{border-top:0!important}.border-right-0{border-right:0!important}.border-bottom-0{border-bottom:0!important}.border-left-0{border-left:0!important}.border-primary{border-color:#007bff!important}.border-secondary{border-color:#868e96!important}.border-success{border-color:#28a745!important}.border-info{border-color:#17a2b8!important}.border-warning{border-color:#ffc107!important}.border-danger{border-color:#dc3545!important}.border-light{border-color:#f8f9fa!important}.border-dark{border-color:#343a40!important}.border-white{border-color:#fff!important}.rounded{border-radius:.25rem!important}.rounded-top{border-top-left-radius:.25rem!important;border-top-right-radius:.25rem!important}.rounded-right{border-top-right-radius:.25rem!important;border-bottom-right-radius:.25rem!important}.rounded-bottom{border-bottom-right-radius:.25rem!important;border-bottom-left-radius:.25rem!important}.rounded-left{border-top-left-radius:.25rem!important;border-bottom-left-radius:.25rem!important}.rounded-circle{border-radius:50%!important}.rounded-0{border-radius:0!important}.clearfix::after{display:block;clear:both;content:""}.d-none{display:none!important}.d-inline{display:inline!important}.d-inline-block{display:inline-block!important}.d-block{display:block!important}.d-table{display:table!important}.d-table-row{display:table-row!important}.d-table-cell{display:table-cell!important}.d-flex{display:-ms-flexbox!important;display:-webkit-box!important;display:flex!important}.d-inline-flex{display:-ms-inline-flexbox!important;display:-webkit-inline-box!important;display:inline-flex!important}@media (min-width:576px){.d-sm-none{display:none!important}.d-sm-inline{display:inline!important}.d-sm-inline-block{display:inline-block!important}.d-sm-block{display:block!important}.d-sm-table{display:table!important}.d-sm-table-row{display:table-row!important}.d-sm-table-cell{display:table-cell!important}.d-sm-flex{display:-ms-flexbox!important;display:-webkit-box!important;display:flex!important}.d-sm-inline-flex{display:-ms-inline-flexbox!important;display:-webkit-inline-box!important;display:inline-flex!important}}@media (min-width:768px){.d-md-none{display:none!important}.d-md-inline{display:inline!important}.d-md-inline-block{display:inline-block!important}.d-md-block{display:block!important}.d-md-table{display:table!important}.d-md-table-row{display:table-row!important}.d-md-table-cell{display:table-cell!important}.d-md-flex{display:-ms-flexbox!important;display:-webkit-box!important;display:flex!important}.d-md-inline-flex{display:-ms-inline-flexbox!important;display:-webkit-inline-box!important;display:inline-flex!important}}@media (min-width:992px){.d-lg-none{display:none!important}.d-lg-inline{display:inline!important}.d-lg-inline-block{display:inline-block!important}.d-lg-block{display:block!important}.d-lg-table{display:table!important}.d-lg-table-row{display:table-row!important}.d-lg-table-cell{display:table-cell!important}.d-lg-flex{display:-ms-flexbox!important;display:-webkit-box!important;display:flex!important}.d-lg-inline-flex{display:-ms-inline-flexbox!important;display:-webkit-inline-box!important;display:inline-flex!important}}@media (min-width:1200px){.d-xl-none{display:none!important}.d-xl-inline{display:inline!important}.d-xl-inline-block{display:inline-block!important}.d-xl-block{display:block!important}.d-xl-table{display:table!important}.d-xl-table-row{display:table-row!important}.d-xl-table-cell{display:table-cell!important}.d-xl-flex{display:-ms-flexbox!important;display:-webkit-box!important;display:flex!important}.d-xl-inline-flex{display:-ms-inline-flexbox!important;display:-webkit-inline-box!important;display:inline-flex!important}}.d-print-block{display:none!important}@media print{.d-print-block{display:block!important}}.d-print-inline{display:none!important}@media print{.d-print-inline{display:inline!important}}.d-print-inline-block{display:none!important}@media print{.d-print-inline-block{display:inline-block!important}}@media print{.d-print-none{display:none!important}}.embed-responsive{position:relative;display:block;width:100%;padding:0;overflow:hidden}.embed-responsive::before{display:block;content:""}.embed-responsive .embed-responsive-item,.embed-responsive embed,.embed-responsive iframe,.embed-responsive object,.embed-responsive video{position:absolute;top:0;bottom:0;left:0;width:100%;height:100%;border:0}.embed-responsive-21by9::before{padding-top:42.857143%}.embed-responsive-16by9::before{padding-top:56.25%}.embed-responsive-4by3::before{padding-top:75%}.embed-responsive-1by1::before{padding-top:100%}.flex-row{-ms-flex-direction:row!important;-webkit-box-orient:horizontal!important;-webkit-box-direction:normal!important;flex-direction:row!important}.flex-column{-ms-flex-direction:column!important;-webkit-box-orient:vertical!important;-webkit-box-direction:normal!important;flex-direction:column!important}.flex-row-reverse{-ms-flex-direction:row-reverse!important;-webkit-box-orient:horizontal!important;-webkit-box-direction:reverse!important;flex-direction:row-reverse!important}.flex-column-reverse{-ms-flex-direction:column-reverse!important;-webkit-box-orient:vertical!important;-webkit-box-direction:reverse!important;flex-direction:column-reverse!important}.flex-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.justify-content-start{-ms-flex-pack:start!important;-webkit-box-pack:start!important;justify-content:flex-start!important}.justify-content-end{-ms-flex-pack:end!important;-webkit-box-pack:end!important;justify-content:flex-end!important}.justify-content-center{-ms-flex-pack:center!important;-webkit-box-pack:center!important;justify-content:center!important}.justify-content-between{-ms-flex-pack:justify!important;-webkit-box-pack:justify!important;justify-content:space-between!important}.justify-content-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-start{-ms-flex-align:start!important;-webkit-box-align:start!important;align-items:flex-start!important}.align-items-end{-ms-flex-align:end!important;-webkit-box-align:end!important;align-items:flex-end!important}.align-items-center{-ms-flex-align:center!important;-webkit-box-align:center!important;align-items:center!important}.align-items-baseline{-ms-flex-align:baseline!important;-webkit-box-align:baseline!important;align-items:baseline!important}.align-items-stretch{-ms-flex-align:stretch!important;-webkit-box-align:stretch!important;align-items:stretch!important}.align-content-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}@media (min-width:576px){.flex-sm-row{-ms-flex-direction:row!important;-webkit-box-orient:horizontal!important;-webkit-box-direction:normal!important;flex-direction:row!important}.flex-sm-column{-ms-flex-direction:column!important;-webkit-box-orient:vertical!important;-webkit-box-direction:normal!important;flex-direction:column!important}.flex-sm-row-reverse{-ms-flex-direction:row-reverse!important;-webkit-box-orient:horizontal!important;-webkit-box-direction:reverse!important;flex-direction:row-reverse!important}.flex-sm-column-reverse{-ms-flex-direction:column-reverse!important;-webkit-box-orient:vertical!important;-webkit-box-direction:reverse!important;flex-direction:column-reverse!important}.flex-sm-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-sm-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-sm-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.justify-content-sm-start{-ms-flex-pack:start!important;-webkit-box-pack:start!important;justify-content:flex-start!important}.justify-content-sm-end{-ms-flex-pack:end!important;-webkit-box-pack:end!important;justify-content:flex-end!important}.justify-content-sm-center{-ms-flex-pack:center!important;-webkit-box-pack:center!important;justify-content:center!important}.justify-content-sm-between{-ms-flex-pack:justify!important;-webkit-box-pack:justify!important;justify-content:space-between!important}.justify-content-sm-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-sm-start{-ms-flex-align:start!important;-webkit-box-align:start!important;align-items:flex-start!important}.align-items-sm-end{-ms-flex-align:end!important;-webkit-box-align:end!important;align-items:flex-end!important}.align-items-sm-center{-ms-flex-align:center!important;-webkit-box-align:center!important;align-items:center!important}.align-items-sm-baseline{-ms-flex-align:baseline!important;-webkit-box-align:baseline!important;align-items:baseline!important}.align-items-sm-stretch{-ms-flex-align:stretch!important;-webkit-box-align:stretch!important;align-items:stretch!important}.align-content-sm-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-sm-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-sm-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-sm-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-sm-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-sm-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-sm-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-sm-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-sm-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-sm-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-sm-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-sm-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}}@media (min-width:768px){.flex-md-row{-ms-flex-direction:row!important;-webkit-box-orient:horizontal!important;-webkit-box-direction:normal!important;flex-direction:row!important}.flex-md-column{-ms-flex-direction:column!important;-webkit-box-orient:vertical!important;-webkit-box-direction:normal!important;flex-direction:column!important}.flex-md-row-reverse{-ms-flex-direction:row-reverse!important;-webkit-box-orient:horizontal!important;-webkit-box-direction:reverse!important;flex-direction:row-reverse!important}.flex-md-column-reverse{-ms-flex-direction:column-reverse!important;-webkit-box-orient:vertical!important;-webkit-box-direction:reverse!important;flex-direction:column-reverse!important}.flex-md-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-md-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-md-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.justify-content-md-start{-ms-flex-pack:start!important;-webkit-box-pack:start!important;justify-content:flex-start!important}.justify-content-md-end{-ms-flex-pack:end!important;-webkit-box-pack:end!important;justify-content:flex-end!important}.justify-content-md-center{-ms-flex-pack:center!important;-webkit-box-pack:center!important;justify-content:center!important}.justify-content-md-between{-ms-flex-pack:justify!important;-webkit-box-pack:justify!important;justify-content:space-between!important}.justify-content-md-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-md-start{-ms-flex-align:start!important;-webkit-box-align:start!important;align-items:flex-start!important}.align-items-md-end{-ms-flex-align:end!important;-webkit-box-align:end!important;align-items:flex-end!important}.align-items-md-center{-ms-flex-align:center!important;-webkit-box-align:center!important;align-items:center!important}.align-items-md-baseline{-ms-flex-align:baseline!important;-webkit-box-align:baseline!important;align-items:baseline!important}.align-items-md-stretch{-ms-flex-align:stretch!important;-webkit-box-align:stretch!important;align-items:stretch!important}.align-content-md-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-md-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-md-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-md-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-md-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-md-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-md-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-md-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-md-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-md-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-md-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-md-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}}@media (min-width:992px){.flex-lg-row{-ms-flex-direction:row!important;-webkit-box-orient:horizontal!important;-webkit-box-direction:normal!important;flex-direction:row!important}.flex-lg-column{-ms-flex-direction:column!important;-webkit-box-orient:vertical!important;-webkit-box-direction:normal!important;flex-direction:column!important}.flex-lg-row-reverse{-ms-flex-direction:row-reverse!important;-webkit-box-orient:horizontal!important;-webkit-box-direction:reverse!important;flex-direction:row-reverse!important}.flex-lg-column-reverse{-ms-flex-direction:column-reverse!important;-webkit-box-orient:vertical!important;-webkit-box-direction:reverse!important;flex-direction:column-reverse!important}.flex-lg-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-lg-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-lg-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.justify-content-lg-start{-ms-flex-pack:start!important;-webkit-box-pack:start!important;justify-content:flex-start!important}.justify-content-lg-end{-ms-flex-pack:end!important;-webkit-box-pack:end!important;justify-content:flex-end!important}.justify-content-lg-center{-ms-flex-pack:center!important;-webkit-box-pack:center!important;justify-content:center!important}.justify-content-lg-between{-ms-flex-pack:justify!important;-webkit-box-pack:justify!important;justify-content:space-between!important}.justify-content-lg-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-lg-start{-ms-flex-align:start!important;-webkit-box-align:start!important;align-items:flex-start!important}.align-items-lg-end{-ms-flex-align:end!important;-webkit-box-align:end!important;align-items:flex-end!important}.align-items-lg-center{-ms-flex-align:center!important;-webkit-box-align:center!important;align-items:center!important}.align-items-lg-baseline{-ms-flex-align:baseline!important;-webkit-box-align:baseline!important;align-items:baseline!important}.align-items-lg-stretch{-ms-flex-align:stretch!important;-webkit-box-align:stretch!important;align-items:stretch!important}.align-content-lg-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-lg-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-lg-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-lg-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-lg-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-lg-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-lg-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-lg-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-lg-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-lg-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-lg-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-lg-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}}@media (min-width:1200px){.flex-xl-row{-ms-flex-direction:row!important;-webkit-box-orient:horizontal!important;-webkit-box-direction:normal!important;flex-direction:row!important}.flex-xl-column{-ms-flex-direction:column!important;-webkit-box-orient:vertical!important;-webkit-box-direction:normal!important;flex-direction:column!important}.flex-xl-row-reverse{-ms-flex-direction:row-reverse!important;-webkit-box-orient:horizontal!important;-webkit-box-direction:reverse!important;flex-direction:row-reverse!important}.flex-xl-column-reverse{-ms-flex-direction:column-reverse!important;-webkit-box-orient:vertical!important;-webkit-box-direction:reverse!important;flex-direction:column-reverse!important}.flex-xl-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-xl-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-xl-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.justify-content-xl-start{-ms-flex-pack:start!important;-webkit-box-pack:start!important;justify-content:flex-start!important}.justify-content-xl-end{-ms-flex-pack:end!important;-webkit-box-pack:end!important;justify-content:flex-end!important}.justify-content-xl-center{-ms-flex-pack:center!important;-webkit-box-pack:center!important;justify-content:center!important}.justify-content-xl-between{-ms-flex-pack:justify!important;-webkit-box-pack:justify!important;justify-content:space-between!important}.justify-content-xl-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-xl-start{-ms-flex-align:start!important;-webkit-box-align:start!important;align-items:flex-start!important}.align-items-xl-end{-ms-flex-align:end!important;-webkit-box-align:end!important;align-items:flex-end!important}.align-items-xl-center{-ms-flex-align:center!important;-webkit-box-align:center!important;align-items:center!important}.align-items-xl-baseline{-ms-flex-align:baseline!important;-webkit-box-align:baseline!important;align-items:baseline!important}.align-items-xl-stretch{-ms-flex-align:stretch!important;-webkit-box-align:stretch!important;align-items:stretch!important}.align-content-xl-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-xl-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-xl-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-xl-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-xl-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-xl-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-xl-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-xl-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-xl-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-xl-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-xl-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-xl-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}}.float-left{float:left!important}.float-right{float:right!important}.float-none{float:none!important}@media (min-width:576px){.float-sm-left{float:left!important}.float-sm-right{float:right!important}.float-sm-none{float:none!important}}@media (min-width:768px){.float-md-left{float:left!important}.float-md-right{float:right!important}.float-md-none{float:none!important}}@media (min-width:992px){.float-lg-left{float:left!important}.float-lg-right{float:right!important}.float-lg-none{float:none!important}}@media (min-width:1200px){.float-xl-left{float:left!important}.float-xl-right{float:right!important}.float-xl-none{float:none!important}}.position-static{position:static!important}.position-relative{position:relative!important}.position-absolute{position:absolute!important}.position-fixed{position:fixed!important}.position-sticky{position:sticky!important}.fixed-top{position:fixed;top:0;right:0;left:0;z-index:1030}.fixed-bottom{position:fixed;right:0;bottom:0;left:0;z-index:1030}@supports (position:sticky){.sticky-top{position:sticky;top:0;z-index:1020}}.sr-only{position:absolute;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;-webkit-clip-path:inset(50%);clip-path:inset(50%);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;overflow:visible;clip:auto;white-space:normal;-webkit-clip-path:none;clip-path:none}.w-25{width:25%!important}.w-50{width:50%!important}.w-75{width:75%!important}.w-100{width:100%!important}.h-25{height:25%!important}.h-50{height:50%!important}.h-75{height:75%!important}.h-100{height:100%!important}.mw-100{max-width:100%!important}.mh-100{max-height:100%!important}.m-0{margin:0!important}.mt-0,.my-0{margin-top:0!important}.mr-0,.mx-0{margin-right:0!important}.mb-0,.my-0{margin-bottom:0!important}.ml-0,.mx-0{margin-left:0!important}.m-1{margin:.25rem!important}.mt-1,.my-1{margin-top:.25rem!important}.mr-1,.mx-1{margin-right:.25rem!important}.mb-1,.my-1{margin-bottom:.25rem!important}.ml-1,.mx-1{margin-left:.25rem!important}.m-2{margin:.5rem!important}.mt-2,.my-2{margin-top:.5rem!important}.mr-2,.mx-2{margin-right:.5rem!important}.mb-2,.my-2{margin-bottom:.5rem!important}.ml-2,.mx-2{margin-left:.5rem!important}.m-3{margin:1rem!important}.mt-3,.my-3{margin-top:1rem!important}.mr-3,.mx-3{margin-right:1rem!important}.mb-3,.my-3{margin-bottom:1rem!important}.ml-3,.mx-3{margin-left:1rem!important}.m-4{margin:1.5rem!important}.mt-4,.my-4{margin-top:1.5rem!important}.mr-4,.mx-4{margin-right:1.5rem!important}.mb-4,.my-4{margin-bottom:1.5rem!important}.ml-4,.mx-4{margin-left:1.5rem!important}.m-5{margin:3rem!important}.mt-5,.my-5{margin-top:3rem!important}.mr-5,.mx-5{margin-right:3rem!important}.mb-5,.my-5{margin-bottom:3rem!important}.ml-5,.mx-5{margin-left:3rem!important}.p-0{padding:0!important}.pt-0,.py-0{padding-top:0!important}.pr-0,.px-0{padding-right:0!important}.pb-0,.py-0{padding-bottom:0!important}.pl-0,.px-0{padding-left:0!important}.p-1{padding:.25rem!important}.pt-1,.py-1{padding-top:.25rem!important}.pr-1,.px-1{padding-right:.25rem!important}.pb-1,.py-1{padding-bottom:.25rem!important}.pl-1,.px-1{padding-left:.25rem!important}.p-2{padding:.5rem!important}.pt-2,.py-2{padding-top:.5rem!important}.pr-2,.px-2{padding-right:.5rem!important}.pb-2,.py-2{padding-bottom:.5rem!important}.pl-2,.px-2{padding-left:.5rem!important}.p-3{padding:1rem!important}.pt-3,.py-3{padding-top:1rem!important}.pr-3,.px-3{padding-right:1rem!important}.pb-3,.py-3{padding-bottom:1rem!important}.pl-3,.px-3{padding-left:1rem!important}.p-4{padding:1.5rem!important}.pt-4,.py-4{padding-top:1.5rem!important}.pr-4,.px-4{padding-right:1.5rem!important}.pb-4,.py-4{padding-bottom:1.5rem!important}.pl-4,.px-4{padding-left:1.5rem!important}.p-5{padding:3rem!important}.pt-5,.py-5{padding-top:3rem!important}.pr-5,.px-5{padding-right:3rem!important}.pb-5,.py-5{padding-bottom:3rem!important}.pl-5,.px-5{padding-left:3rem!important}.m-auto{margin:auto!important}.mt-auto,.my-auto{margin-top:auto!important}.mr-auto,.mx-auto{margin-right:auto!important}.mb-auto,.my-auto{margin-bottom:auto!important}.ml-auto,.mx-auto{margin-left:auto!important}@media (min-width:576px){.m-sm-0{margin:0!important}.mt-sm-0,.my-sm-0{margin-top:0!important}.mr-sm-0,.mx-sm-0{margin-right:0!important}.mb-sm-0,.my-sm-0{margin-bottom:0!important}.ml-sm-0,.mx-sm-0{margin-left:0!important}.m-sm-1{margin:.25rem!important}.mt-sm-1,.my-sm-1{margin-top:.25rem!important}.mr-sm-1,.mx-sm-1{margin-right:.25rem!important}.mb-sm-1,.my-sm-1{margin-bottom:.25rem!important}.ml-sm-1,.mx-sm-1{margin-left:.25rem!important}.m-sm-2{margin:.5rem!important}.mt-sm-2,.my-sm-2{margin-top:.5rem!important}.mr-sm-2,.mx-sm-2{margin-right:.5rem!important}.mb-sm-2,.my-sm-2{margin-bottom:.5rem!important}.ml-sm-2,.mx-sm-2{margin-left:.5rem!important}.m-sm-3{margin:1rem!important}.mt-sm-3,.my-sm-3{margin-top:1rem!important}.mr-sm-3,.mx-sm-3{margin-right:1rem!important}.mb-sm-3,.my-sm-3{margin-bottom:1rem!important}.ml-sm-3,.mx-sm-3{margin-left:1rem!important}.m-sm-4{margin:1.5rem!important}.mt-sm-4,.my-sm-4{margin-top:1.5rem!important}.mr-sm-4,.mx-sm-4{margin-right:1.5rem!important}.mb-sm-4,.my-sm-4{margin-bottom:1.5rem!important}.ml-sm-4,.mx-sm-4{margin-left:1.5rem!important}.m-sm-5{margin:3rem!important}.mt-sm-5,.my-sm-5{margin-top:3rem!important}.mr-sm-5,.mx-sm-5{margin-right:3rem!important}.mb-sm-5,.my-sm-5{margin-bottom:3rem!important}.ml-sm-5,.mx-sm-5{margin-left:3rem!important}.p-sm-0{padding:0!important}.pt-sm-0,.py-sm-0{padding-top:0!important}.pr-sm-0,.px-sm-0{padding-right:0!important}.pb-sm-0,.py-sm-0{padding-bottom:0!important}.pl-sm-0,.px-sm-0{padding-left:0!important}.p-sm-1{padding:.25rem!important}.pt-sm-1,.py-sm-1{padding-top:.25rem!important}.pr-sm-1,.px-sm-1{padding-right:.25rem!important}.pb-sm-1,.py-sm-1{padding-bottom:.25rem!important}.pl-sm-1,.px-sm-1{padding-left:.25rem!important}.p-sm-2{padding:.5rem!important}.pt-sm-2,.py-sm-2{padding-top:.5rem!important}.pr-sm-2,.px-sm-2{padding-right:.5rem!important}.pb-sm-2,.py-sm-2{padding-bottom:.5rem!important}.pl-sm-2,.px-sm-2{padding-left:.5rem!important}.p-sm-3{padding:1rem!important}.pt-sm-3,.py-sm-3{padding-top:1rem!important}.pr-sm-3,.px-sm-3{padding-right:1rem!important}.pb-sm-3,.py-sm-3{padding-bottom:1rem!important}.pl-sm-3,.px-sm-3{padding-left:1rem!important}.p-sm-4{padding:1.5rem!important}.pt-sm-4,.py-sm-4{padding-top:1.5rem!important}.pr-sm-4,.px-sm-4{padding-right:1.5rem!important}.pb-sm-4,.py-sm-4{padding-bottom:1.5rem!important}.pl-sm-4,.px-sm-4{padding-left:1.5rem!important}.p-sm-5{padding:3rem!important}.pt-sm-5,.py-sm-5{padding-top:3rem!important}.pr-sm-5,.px-sm-5{padding-right:3rem!important}.pb-sm-5,.py-sm-5{padding-bottom:3rem!important}.pl-sm-5,.px-sm-5{padding-left:3rem!important}.m-sm-auto{margin:auto!important}.mt-sm-auto,.my-sm-auto{margin-top:auto!important}.mr-sm-auto,.mx-sm-auto{margin-right:auto!important}.mb-sm-auto,.my-sm-auto{margin-bottom:auto!important}.ml-sm-auto,.mx-sm-auto{margin-left:auto!important}}@media (min-width:768px){.m-md-0{margin:0!important}.mt-md-0,.my-md-0{margin-top:0!important}.mr-md-0,.mx-md-0{margin-right:0!important}.mb-md-0,.my-md-0{margin-bottom:0!important}.ml-md-0,.mx-md-0{margin-left:0!important}.m-md-1{margin:.25rem!important}.mt-md-1,.my-md-1{margin-top:.25rem!important}.mr-md-1,.mx-md-1{margin-right:.25rem!important}.mb-md-1,.my-md-1{margin-bottom:.25rem!important}.ml-md-1,.mx-md-1{margin-left:.25rem!important}.m-md-2{margin:.5rem!important}.mt-md-2,.my-md-2{margin-top:.5rem!important}.mr-md-2,.mx-md-2{margin-right:.5rem!important}.mb-md-2,.my-md-2{margin-bottom:.5rem!important}.ml-md-2,.mx-md-2{margin-left:.5rem!important}.m-md-3{margin:1rem!important}.mt-md-3,.my-md-3{margin-top:1rem!important}.mr-md-3,.mx-md-3{margin-right:1rem!important}.mb-md-3,.my-md-3{margin-bottom:1rem!important}.ml-md-3,.mx-md-3{margin-left:1rem!important}.m-md-4{margin:1.5rem!important}.mt-md-4,.my-md-4{margin-top:1.5rem!important}.mr-md-4,.mx-md-4{margin-right:1.5rem!important}.mb-md-4,.my-md-4{margin-bottom:1.5rem!important}.ml-md-4,.mx-md-4{margin-left:1.5rem!important}.m-md-5{margin:3rem!important}.mt-md-5,.my-md-5{margin-top:3rem!important}.mr-md-5,.mx-md-5{margin-right:3rem!important}.mb-md-5,.my-md-5{margin-bottom:3rem!important}.ml-md-5,.mx-md-5{margin-left:3rem!important}.p-md-0{padding:0!important}.pt-md-0,.py-md-0{padding-top:0!important}.pr-md-0,.px-md-0{padding-right:0!important}.pb-md-0,.py-md-0{padding-bottom:0!important}.pl-md-0,.px-md-0{padding-left:0!important}.p-md-1{padding:.25rem!important}.pt-md-1,.py-md-1{padding-top:.25rem!important}.pr-md-1,.px-md-1{padding-right:.25rem!important}.pb-md-1,.py-md-1{padding-bottom:.25rem!important}.pl-md-1,.px-md-1{padding-left:.25rem!important}.p-md-2{padding:.5rem!important}.pt-md-2,.py-md-2{padding-top:.5rem!important}.pr-md-2,.px-md-2{padding-right:.5rem!important}.pb-md-2,.py-md-2{padding-bottom:.5rem!important}.pl-md-2,.px-md-2{padding-left:.5rem!important}.p-md-3{padding:1rem!important}.pt-md-3,.py-md-3{padding-top:1rem!important}.pr-md-3,.px-md-3{padding-right:1rem!important}.pb-md-3,.py-md-3{padding-bottom:1rem!important}.pl-md-3,.px-md-3{padding-left:1rem!important}.p-md-4{padding:1.5rem!important}.pt-md-4,.py-md-4{padding-top:1.5rem!important}.pr-md-4,.px-md-4{padding-right:1.5rem!important}.pb-md-4,.py-md-4{padding-bottom:1.5rem!important}.pl-md-4,.px-md-4{padding-left:1.5rem!important}.p-md-5{padding:3rem!important}.pt-md-5,.py-md-5{padding-top:3rem!important}.pr-md-5,.px-md-5{padding-right:3rem!important}.pb-md-5,.py-md-5{padding-bottom:3rem!important}.pl-md-5,.px-md-5{padding-left:3rem!important}.m-md-auto{margin:auto!important}.mt-md-auto,.my-md-auto{margin-top:auto!important}.mr-md-auto,.mx-md-auto{margin-right:auto!important}.mb-md-auto,.my-md-auto{margin-bottom:auto!important}.ml-md-auto,.mx-md-auto{margin-left:auto!important}}@media (min-width:992px){.m-lg-0{margin:0!important}.mt-lg-0,.my-lg-0{margin-top:0!important}.mr-lg-0,.mx-lg-0{margin-right:0!important}.mb-lg-0,.my-lg-0{margin-bottom:0!important}.ml-lg-0,.mx-lg-0{margin-left:0!important}.m-lg-1{margin:.25rem!important}.mt-lg-1,.my-lg-1{margin-top:.25rem!important}.mr-lg-1,.mx-lg-1{margin-right:.25rem!important}.mb-lg-1,.my-lg-1{margin-bottom:.25rem!important}.ml-lg-1,.mx-lg-1{margin-left:.25rem!important}.m-lg-2{margin:.5rem!important}.mt-lg-2,.my-lg-2{margin-top:.5rem!important}.mr-lg-2,.mx-lg-2{margin-right:.5rem!important}.mb-lg-2,.my-lg-2{margin-bottom:.5rem!important}.ml-lg-2,.mx-lg-2{margin-left:.5rem!important}.m-lg-3{margin:1rem!important}.mt-lg-3,.my-lg-3{margin-top:1rem!important}.mr-lg-3,.mx-lg-3{margin-right:1rem!important}.mb-lg-3,.my-lg-3{margin-bottom:1rem!important}.ml-lg-3,.mx-lg-3{margin-left:1rem!important}.m-lg-4{margin:1.5rem!important}.mt-lg-4,.my-lg-4{margin-top:1.5rem!important}.mr-lg-4,.mx-lg-4{margin-right:1.5rem!important}.mb-lg-4,.my-lg-4{margin-bottom:1.5rem!important}.ml-lg-4,.mx-lg-4{margin-left:1.5rem!important}.m-lg-5{margin:3rem!important}.mt-lg-5,.my-lg-5{margin-top:3rem!important}.mr-lg-5,.mx-lg-5{margin-right:3rem!important}.mb-lg-5,.my-lg-5{margin-bottom:3rem!important}.ml-lg-5,.mx-lg-5{margin-left:3rem!important}.p-lg-0{padding:0!important}.pt-lg-0,.py-lg-0{padding-top:0!important}.pr-lg-0,.px-lg-0{padding-right:0!important}.pb-lg-0,.py-lg-0{padding-bottom:0!important}.pl-lg-0,.px-lg-0{padding-left:0!important}.p-lg-1{padding:.25rem!important}.pt-lg-1,.py-lg-1{padding-top:.25rem!important}.pr-lg-1,.px-lg-1{padding-right:.25rem!important}.pb-lg-1,.py-lg-1{padding-bottom:.25rem!important}.pl-lg-1,.px-lg-1{padding-left:.25rem!important}.p-lg-2{padding:.5rem!important}.pt-lg-2,.py-lg-2{padding-top:.5rem!important}.pr-lg-2,.px-lg-2{padding-right:.5rem!important}.pb-lg-2,.py-lg-2{padding-bottom:.5rem!important}.pl-lg-2,.px-lg-2{padding-left:.5rem!important}.p-lg-3{padding:1rem!important}.pt-lg-3,.py-lg-3{padding-top:1rem!important}.pr-lg-3,.px-lg-3{padding-right:1rem!important}.pb-lg-3,.py-lg-3{padding-bottom:1rem!important}.pl-lg-3,.px-lg-3{padding-left:1rem!important}.p-lg-4{padding:1.5rem!important}.pt-lg-4,.py-lg-4{padding-top:1.5rem!important}.pr-lg-4,.px-lg-4{padding-right:1.5rem!important}.pb-lg-4,.py-lg-4{padding-bottom:1.5rem!important}.pl-lg-4,.px-lg-4{padding-left:1.5rem!important}.p-lg-5{padding:3rem!important}.pt-lg-5,.py-lg-5{padding-top:3rem!important}.pr-lg-5,.px-lg-5{padding-right:3rem!important}.pb-lg-5,.py-lg-5{padding-bottom:3rem!important}.pl-lg-5,.px-lg-5{padding-left:3rem!important}.m-lg-auto{margin:auto!important}.mt-lg-auto,.my-lg-auto{margin-top:auto!important}.mr-lg-auto,.mx-lg-auto{margin-right:auto!important}.mb-lg-auto,.my-lg-auto{margin-bottom:auto!important}.ml-lg-auto,.mx-lg-auto{margin-left:auto!important}}@media (min-width:1200px){.m-xl-0{margin:0!important}.mt-xl-0,.my-xl-0{margin-top:0!important}.mr-xl-0,.mx-xl-0{margin-right:0!important}.mb-xl-0,.my-xl-0{margin-bottom:0!important}.ml-xl-0,.mx-xl-0{margin-left:0!important}.m-xl-1{margin:.25rem!important}.mt-xl-1,.my-xl-1{margin-top:.25rem!important}.mr-xl-1,.mx-xl-1{margin-right:.25rem!important}.mb-xl-1,.my-xl-1{margin-bottom:.25rem!important}.ml-xl-1,.mx-xl-1{margin-left:.25rem!important}.m-xl-2{margin:.5rem!important}.mt-xl-2,.my-xl-2{margin-top:.5rem!important}.mr-xl-2,.mx-xl-2{margin-right:.5rem!important}.mb-xl-2,.my-xl-2{margin-bottom:.5rem!important}.ml-xl-2,.mx-xl-2{margin-left:.5rem!important}.m-xl-3{margin:1rem!important}.mt-xl-3,.my-xl-3{margin-top:1rem!important}.mr-xl-3,.mx-xl-3{margin-right:1rem!important}.mb-xl-3,.my-xl-3{margin-bottom:1rem!important}.ml-xl-3,.mx-xl-3{margin-left:1rem!important}.m-xl-4{margin:1.5rem!important}.mt-xl-4,.my-xl-4{margin-top:1.5rem!important}.mr-xl-4,.mx-xl-4{margin-right:1.5rem!important}.mb-xl-4,.my-xl-4{margin-bottom:1.5rem!important}.ml-xl-4,.mx-xl-4{margin-left:1.5rem!important}.m-xl-5{margin:3rem!important}.mt-xl-5,.my-xl-5{margin-top:3rem!important}.mr-xl-5,.mx-xl-5{margin-right:3rem!important}.mb-xl-5,.my-xl-5{margin-bottom:3rem!important}.ml-xl-5,.mx-xl-5{margin-left:3rem!important}.p-xl-0{padding:0!important}.pt-xl-0,.py-xl-0{padding-top:0!important}.pr-xl-0,.px-xl-0{padding-right:0!important}.pb-xl-0,.py-xl-0{padding-bottom:0!important}.pl-xl-0,.px-xl-0{padding-left:0!important}.p-xl-1{padding:.25rem!important}.pt-xl-1,.py-xl-1{padding-top:.25rem!important}.pr-xl-1,.px-xl-1{padding-right:.25rem!important}.pb-xl-1,.py-xl-1{padding-bottom:.25rem!important}.pl-xl-1,.px-xl-1{padding-left:.25rem!important}.p-xl-2{padding:.5rem!important}.pt-xl-2,.py-xl-2{padding-top:.5rem!important}.pr-xl-2,.px-xl-2{padding-right:.5rem!important}.pb-xl-2,.py-xl-2{padding-bottom:.5rem!important}.pl-xl-2,.px-xl-2{padding-left:.5rem!important}.p-xl-3{padding:1rem!important}.pt-xl-3,.py-xl-3{padding-top:1rem!important}.pr-xl-3,.px-xl-3{padding-right:1rem!important}.pb-xl-3,.py-xl-3{padding-bottom:1rem!important}.pl-xl-3,.px-xl-3{padding-left:1rem!important}.p-xl-4{padding:1.5rem!important}.pt-xl-4,.py-xl-4{padding-top:1.5rem!important}.pr-xl-4,.px-xl-4{padding-right:1.5rem!important}.pb-xl-4,.py-xl-4{padding-bottom:1.5rem!important}.pl-xl-4,.px-xl-4{padding-left:1.5rem!important}.p-xl-5{padding:3rem!important}.pt-xl-5,.py-xl-5{padding-top:3rem!important}.pr-xl-5,.px-xl-5{padding-right:3rem!important}.pb-xl-5,.py-xl-5{padding-bottom:3rem!important}.pl-xl-5,.px-xl-5{padding-left:3rem!important}.m-xl-auto{margin:auto!important}.mt-xl-auto,.my-xl-auto{margin-top:auto!important}.mr-xl-auto,.mx-xl-auto{margin-right:auto!important}.mb-xl-auto,.my-xl-auto{margin-bottom:auto!important}.ml-xl-auto,.mx-xl-auto{margin-left:auto!important}}.text-justify{text-align:justify!important}.text-nowrap{white-space:nowrap!important}.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.text-left{text-align:left!important}.text-right{text-align:right!important}.text-center{text-align:center!important}@media (min-width:576px){.text-sm-left{text-align:left!important}.text-sm-right{text-align:right!important}.text-sm-center{text-align:center!important}}@media (min-width:768px){.text-md-left{text-align:left!important}.text-md-right{text-align:right!important}.text-md-center{text-align:center!important}}@media (min-width:992px){.text-lg-left{text-align:left!important}.text-lg-right{text-align:right!important}.text-lg-center{text-align:center!important}}@media (min-width:1200px){.text-xl-left{text-align:left!important}.text-xl-right{text-align:right!important}.text-xl-center{text-align:center!important}}.text-lowercase{text-transform:lowercase!important}.text-uppercase{text-transform:uppercase!important}.text-capitalize{text-transform:capitalize!important}.font-weight-light{font-weight:300!important}.font-weight-normal{font-weight:400!important}.font-weight-bold{font-weight:700!important}.font-italic{font-style:italic!important}.text-white{color:#fff!important}.text-primary{color:#007bff!important}a.text-primary:focus,a.text-primary:hover{color:#0062cc!important}.text-secondary{color:#868e96!important}a.text-secondary:focus,a.text-secondary:hover{color:#6c757d!important}.text-success{color:#28a745!important}a.text-success:focus,a.text-success:hover{color:#1e7e34!important}.text-info{color:#17a2b8!important}a.text-info:focus,a.text-info:hover{color:#117a8b!important}.text-warning{color:#ffc107!important}a.text-warning:focus,a.text-warning:hover{color:#d39e00!important}.text-danger{color:#dc3545!important}a.text-danger:focus,a.text-danger:hover{color:#bd2130!important}.text-light{color:#f8f9fa!important}a.text-light:focus,a.text-light:hover{color:#dae0e5!important}.text-dark{color:#343a40!important}a.text-dark:focus,a.text-dark:hover{color:#1d2124!important}.member-namespace,.member-type,.text-muted{color:#868e96!important}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.visible{visibility:visible!important}.invisible{visibility:hidden!important}.highlight{background:#f6f8fa;padding:1rem 0 .1rem 1rem;margin-bottom:1rem}.highlight .c{color:#998;font-style:italic}.highlight .err{color:#a61717;background-color:#e3d2d2}.highlight .k{font-weight:700}.highlight .o{font-weight:700}.highlight .cm{color:#998;font-style:italic}.highlight .cp{color:#999;font-weight:700}.highlight .c1{color:#998;font-style:italic}.highlight .cs{color:#999;font-weight:700;font-style:italic}.highlight .gd{color:#000;background-color:#fdd}.highlight .gd .x{color:#000;background-color:#faa}.highlight .ge{font-style:italic}.highlight .gr{color:#a00}.highlight .gh{color:#999}.highlight .gi{color:#000;background-color:#dfd}.highlight .gi .x{color:#000;background-color:#afa}.highlight .go{color:#888}.highlight .gp{color:#555}.highlight .gs{font-weight:700}.highlight .gu{color:#aaa}.highlight .gt{color:#a00}.highlight .kc{font-weight:700}.highlight .kd{font-weight:700}.highlight .kp{font-weight:700}.highlight .kr{font-weight:700}.highlight .kt{color:#458;font-weight:700}.highlight .m{color:#099}.highlight .s{color:#d14}.highlight .na{color:teal}.highlight .nb{color:#0086b3}.highlight .nc{color:#458;font-weight:700}.highlight .no{color:teal}.highlight .ni{color:purple}.highlight .ne{color:#900;font-weight:700}.highlight .nf{color:#900;font-weight:700}.highlight .nn{color:#555}.highlight .nt{color:navy}.highlight .nv{color:teal}.highlight .ow{font-weight:700}.highlight .w{color:#bbb}.highlight .mf{color:#099}.highlight .mh{color:#099}.highlight .mi{color:#099}.highlight .mo{color:#099}.highlight .sb{color:#d14}.highlight .sc{color:#d14}.highlight .sd{color:#d14}.highlight .s2{color:#d14}.highlight .se{color:#d14}.highlight .sh{color:#d14}.highlight .si{color:#d14}.highlight .sx{color:#d14}.highlight .sr{color:#009926}.highlight .s1{color:#d14}.highlight .ss{color:#990073}.highlight .bp{color:#999}.highlight .vc{color:teal}.highlight .vg{color:teal}.highlight .vi{color:teal}.highlight .il{color:#099}.highlight .hll{background-color:#ffc}.highlight .c{color:green}.highlight .err{border:1px solid red}.highlight .k{color:#00f}.highlight .ch{color:green}.highlight .cm{color:green}.highlight .cp{color:#00f}.highlight .cpf{color:green}.highlight .c1{color:green}.highlight .cs{color:green}.highlight .ge{font-style:italic}.highlight .gh{font-weight:700}.highlight .gp{font-weight:700}.highlight .gs{font-weight:700}.highlight .gu{font-weight:700}.highlight .kc{color:#00f}.highlight .kd{color:#00f}.highlight .kn{color:#00f}.highlight .kp{color:#00f}.highlight .kr{color:#00f}.highlight .kt{color:#2b91af}.highlight .s{color:#a31515}.highlight .nc{color:#2b91af}.highlight .ow{color:#00f}.highlight .sa{color:#a31515}.highlight .sb{color:#a31515}.highlight .sc{color:#a31515}.highlight .dl{color:#a31515}.highlight .sd{color:#a31515}.highlight .s2{color:#a31515}.highlight .se{color:#a31515}.highlight .sh{color:#a31515}.highlight .si{color:#a31515}.highlight .sx{color:#a31515}.highlight .sr{color:#a31515}.highlight .s1{color:#a31515}.highlight .ss{color:#a31515}body{padding-top:56px;width:100%;height:100%}footer{position:fixed;bottom:0;width:100%;background-color:#56a1d5;color:#222;font-size:.8em;padding-left:1rem}footer a{color:#222!important}main{height:calc(100% - 74px);width:100%;-webkit-transition:all .4s ease 0s;transition:all .4s ease 0s}main .h1,main h1{margin-top:1.5rem;text-transform:capitalize}main .h2,main h2{margin-top:3rem;text-transform:capitalize}main .h3,main .h4,main .h5,main .h6,main h3,main h4,main h5,main h6{margin-top:2rem;text-transform:capitalize}main ul ul{margin-bottom:1em}main article{margin-bottom:5rem}code{overflow-wrap:break-word;word-wrap:break-word;-ms-word-break:break-all;word-break:break-all;word-break:break-word}blockquote{padding:1rem;border-left:3px solid #0b4b77}blockquote p{margin:0}.bg-dark{background-color:#0b4b77!important}.btn-primary,.member-runner-link{background-color:#0275d8;border-color:#3983c3}.btn-primary:hover,.member-runner-link:hover{background-color:#3983c3}.embed-responsive{margin-bottom:2rem;max-width:800px}.jumbotron img{width:1em;height:1em}.jumbotron{margin-bottom:3em}.welcome{max-height:350px}.header .header-link{opacity:0;-webkit-transition:opacity .2s linear;transition:opacity .2s linear}.header-link:hover,.header:hover .header-link:not(:hover){opacity:1}.beta{font-size:.8rem;font-weight:400;background-color:#0275d8}.legacy{font-size:.8rem;font-weight:400;background-color:#ea1f56}.sticky-warning{position:sticky;top:0;z-index:1031}.member{margin:1rem 0}.member-name{margin-top:auto}.member-info table{margin-bottom:0}.member-namespace{font-size:.8rem;font-weight:400}.member-type{display:none}.member-runner-link{float:right}.member-parameters-list ul{margin:0}.member-parameters-list-param.enum-property{text-transform:capitalize}@media (min-width:768px){#api-reference-search{position:sticky;z-index:1040;top:.5rem;max-width:30rem;float:right}}.autocomplete{position:absolute;border:1px solid #ddd;background-color:#fff;color:#444;list-style:none;padding:2px;margin:0;cursor:pointer;z-index:10000;max-height:300px;overflow-y:auto;overflow-x:hidden;border-radius:3px;-webkit-transform:translateZ(0);min-width:200px}.autocompleteActive{font-size:.9em;max-height:50%;overflow-x:hidden;overflow-y:auto;padding:2px .4em;line-height:1.5em}.autocompleteStatic{font-weight:700;margin:.8em 0 .2em;background:#f7f7f7;overflow:auto;padding:2px .4em;line-height:1.5em}.autocompleteLink{text-decoration:none;display:block;color:#000}.autocompleteActive.activeHover{background-color:#0073ea}.autocompleteActive.activeHover>.autocompleteLink{color:#fff}#wrapper{padding-left:250px;-webkit-transition:all .4s ease 0s;transition:all .4s ease 0s}#sidebar-wrapper{margin-left:-250px;top:56px;left:250px;width:250px;position:fixed;height:calc(100% - 56px);overflow-y:auto;overflow-x:hidden;z-index:1000;-webkit-transition:all .4s ease 0s;transition:all .4s ease 0s;border-right:1px solid #eee;padding:30px 0}#wrapper.active{padding-left:0}#wrapper.active #sidebar-wrapper{left:0}.sidebar{position:absolute;width:250px;list-style:none;margin:0;padding:0}.sidebar h4,.sidebar h5{padding-left:16px}.sidebar .nav-item{width:100%}.sidebar .nav-item+.nav-item{margin-left:0}.sidebar .nav-link{border-radius:0}.sidebar h5:first-of-type{margin-top:10px}@media (max-width:767px){#wrapper{padding-left:0}#sidebar-wrapper{left:0}#wrapper.active{position:relative;left:250px}#wrapper.active #sidebar-wrapper{left:250px;width:250px;-webkit-transition:all .4s ease 0s;transition:all .4s ease 0s}}a{color:#006fe6} \ No newline at end of file diff --git a/assets/stylesheets/style-7593abd5bb.min.css.gz b/assets/stylesheets/style-7593abd5bb.min.css.gz deleted file mode 100644 index a5a73cacf79aad1c53c906be8afb42b7a37a899a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 22677 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 code { - padding: 0; - color: inherit; - background-color: inherit; -} - -kbd { - padding: 0.2rem 0.4rem; - font-size: 90%; - color: #fff; - background-color: #212529; - border-radius: 0.2rem; -} - -kbd kbd { - padding: 0; - font-size: 100%; - font-weight: 700; -} - -pre { - display: block; - font-size: 90%; - color: #212529; -} - -pre code { - padding: 0; - font-size: inherit; - color: inherit; - background-color: transparent; - border-radius: 0; -} - -.pre-scrollable { - max-height: 340px; - overflow-y: scroll; -} - -.container { - width: 100%; - padding-right: 15px; - padding-left: 15px; - margin-right: auto; - margin-left: auto; -} - -@media (min-width: 576px) { - .container { - max-width: 540px; - } -} -@media (min-width: 768px) { - .container { - max-width: 720px; - } -} -@media (min-width: 992px) { - .container { - max-width: 960px; - } -} -@media (min-width: 1200px) { - .container { - max-width: 1140px; - } -} -.container-fluid { - width: 100%; - padding-right: 15px; - padding-left: 15px; - margin-right: auto; - margin-left: auto; -} - -.row { - display: -ms-flexbox; - display: -webkit-box; - display: flex; - -ms-flex-wrap: wrap; - flex-wrap: wrap; - margin-right: -15px; - margin-left: -15px; -} - -.no-gutters { - margin-right: 0; - margin-left: 0; -} - -.no-gutters > .col, -.no-gutters > [class*=col-] { - padding-right: 0; - padding-left: 0; -} - -.col-1, .col-2, .col-3, .col-4, .col-5, .col-6, .col-7, .col-8, .col-9, .col-10, .col-11, .col-12, .col, -.col-auto, .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12, .col-sm, -.col-sm-auto, .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12, .col-md, -.col-md-auto, .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12, .col-lg, -.col-lg-auto, .col-xl-1, .col-xl-2, .col-xl-3, .col-xl-4, .col-xl-5, .col-xl-6, .col-xl-7, .col-xl-8, .col-xl-9, .col-xl-10, .col-xl-11, .col-xl-12, .col-xl, -.col-xl-auto { - position: relative; - width: 100%; - min-height: 1px; - padding-right: 15px; - padding-left: 15px; -} - -.col { - -ms-flex-preferred-size: 0; - flex-basis: 0; - -ms-flex-positive: 1; - -webkit-box-flex: 1; - flex-grow: 1; - max-width: 100%; -} - -.col-auto { - -ms-flex: 0 0 auto; - -webkit-box-flex: 0; - flex: 0 0 auto; - width: auto; - max-width: none; -} - -.col-1 { - -ms-flex: 0 0 8.333333%; - -webkit-box-flex: 0; - flex: 0 0 8.333333%; - max-width: 8.333333%; -} - -.col-2 { - -ms-flex: 0 0 16.666667%; - -webkit-box-flex: 0; - flex: 0 0 16.666667%; - max-width: 16.666667%; -} - -.col-3 { - -ms-flex: 0 0 25%; - -webkit-box-flex: 0; - flex: 0 0 25%; - max-width: 25%; -} - -.col-4 { - -ms-flex: 0 0 33.333333%; - -webkit-box-flex: 0; - flex: 0 0 33.333333%; - max-width: 33.333333%; -} - -.col-5 { - -ms-flex: 0 0 41.666667%; - -webkit-box-flex: 0; - flex: 0 0 41.666667%; - max-width: 41.666667%; -} - -.col-6 { - -ms-flex: 0 0 50%; - -webkit-box-flex: 0; - flex: 0 0 50%; - max-width: 50%; -} - -.col-7 { - -ms-flex: 0 0 58.333333%; - -webkit-box-flex: 0; - flex: 0 0 58.333333%; - max-width: 58.333333%; -} - -.col-8 { - -ms-flex: 0 0 66.666667%; - -webkit-box-flex: 0; - flex: 0 0 66.666667%; - max-width: 66.666667%; -} - -.col-9 { - -ms-flex: 0 0 75%; - -webkit-box-flex: 0; - flex: 0 0 75%; - max-width: 75%; -} - -.col-10 { - -ms-flex: 0 0 83.333333%; - -webkit-box-flex: 0; - flex: 0 0 83.333333%; - max-width: 83.333333%; -} - -.col-11 { - -ms-flex: 0 0 91.666667%; - -webkit-box-flex: 0; - flex: 0 0 91.666667%; - max-width: 91.666667%; -} - -.col-12 { - -ms-flex: 0 0 100%; - -webkit-box-flex: 0; - flex: 0 0 100%; - max-width: 100%; -} - -.order-first { - -ms-flex-order: -1; - -webkit-box-ordinal-group: 0; - order: -1; -} - -.order-1 { - -ms-flex-order: 1; - -webkit-box-ordinal-group: 2; - order: 1; -} - -.order-2 { - -ms-flex-order: 2; - -webkit-box-ordinal-group: 3; - order: 2; -} - -.order-3 { - -ms-flex-order: 3; - -webkit-box-ordinal-group: 4; - order: 3; -} - -.order-4 { - -ms-flex-order: 4; - -webkit-box-ordinal-group: 5; - order: 4; -} - -.order-5 { - -ms-flex-order: 5; - -webkit-box-ordinal-group: 6; - order: 5; -} - -.order-6 { - -ms-flex-order: 6; - -webkit-box-ordinal-group: 7; - order: 6; -} - -.order-7 { - -ms-flex-order: 7; - -webkit-box-ordinal-group: 8; - order: 7; -} - -.order-8 { - -ms-flex-order: 8; - -webkit-box-ordinal-group: 9; - order: 8; -} - -.order-9 { - -ms-flex-order: 9; - -webkit-box-ordinal-group: 10; - order: 9; -} - -.order-10 { - -ms-flex-order: 10; - -webkit-box-ordinal-group: 11; - order: 10; -} - -.order-11 { - -ms-flex-order: 11; - -webkit-box-ordinal-group: 12; - order: 11; -} - -.order-12 { - -ms-flex-order: 12; - -webkit-box-ordinal-group: 13; - order: 12; -} - -.offset-1 { - margin-left: 8.333333%; -} - -.offset-2 { - margin-left: 16.666667%; -} - -.offset-3 { - margin-left: 25%; -} - -.offset-4 { - margin-left: 33.333333%; -} - -.offset-5 { - margin-left: 41.666667%; -} - -.offset-6 { - margin-left: 50%; -} - -.offset-7 { - margin-left: 58.333333%; -} - -.offset-8 { - margin-left: 66.666667%; -} - -.offset-9 { - margin-left: 75%; -} - -.offset-10 { - margin-left: 83.333333%; -} - -.offset-11 { - margin-left: 91.666667%; -} - -@media (min-width: 576px) { - .col-sm { - -ms-flex-preferred-size: 0; - flex-basis: 0; - -ms-flex-positive: 1; - -webkit-box-flex: 1; - flex-grow: 1; - max-width: 100%; - } - .col-sm-auto { - -ms-flex: 0 0 auto; - -webkit-box-flex: 0; - flex: 0 0 auto; - width: auto; - max-width: none; - } - .col-sm-1 { - -ms-flex: 0 0 8.333333%; - -webkit-box-flex: 0; - flex: 0 0 8.333333%; - max-width: 8.333333%; - } - .col-sm-2 { - -ms-flex: 0 0 16.666667%; - -webkit-box-flex: 0; - flex: 0 0 16.666667%; - max-width: 16.666667%; - } - .col-sm-3 { - -ms-flex: 0 0 25%; - -webkit-box-flex: 0; - flex: 0 0 25%; - max-width: 25%; - } - .col-sm-4 { - -ms-flex: 0 0 33.333333%; - -webkit-box-flex: 0; - flex: 0 0 33.333333%; - max-width: 33.333333%; - } - .col-sm-5 { - -ms-flex: 0 0 41.666667%; - -webkit-box-flex: 0; - flex: 0 0 41.666667%; - max-width: 41.666667%; - } - .col-sm-6 { - -ms-flex: 0 0 50%; - -webkit-box-flex: 0; - flex: 0 0 50%; - max-width: 50%; - } - .col-sm-7 { - -ms-flex: 0 0 58.333333%; - -webkit-box-flex: 0; - flex: 0 0 58.333333%; - max-width: 58.333333%; - } - .col-sm-8 { - -ms-flex: 0 0 66.666667%; - -webkit-box-flex: 0; - flex: 0 0 66.666667%; - max-width: 66.666667%; - } - .col-sm-9 { - -ms-flex: 0 0 75%; - -webkit-box-flex: 0; - flex: 0 0 75%; - max-width: 75%; - } - .col-sm-10 { - -ms-flex: 0 0 83.333333%; - -webkit-box-flex: 0; - flex: 0 0 83.333333%; - max-width: 83.333333%; - } - .col-sm-11 { - -ms-flex: 0 0 91.666667%; - -webkit-box-flex: 0; - flex: 0 0 91.666667%; - max-width: 91.666667%; - } - .col-sm-12 { - -ms-flex: 0 0 100%; - -webkit-box-flex: 0; - flex: 0 0 100%; - max-width: 100%; - } - .order-sm-first { - -ms-flex-order: -1; - -webkit-box-ordinal-group: 0; - order: -1; - } - .order-sm-1 { - -ms-flex-order: 1; - -webkit-box-ordinal-group: 2; - order: 1; - } - .order-sm-2 { - -ms-flex-order: 2; - -webkit-box-ordinal-group: 3; - order: 2; - } - .order-sm-3 { - -ms-flex-order: 3; - -webkit-box-ordinal-group: 4; - order: 3; - } - .order-sm-4 { - -ms-flex-order: 4; - -webkit-box-ordinal-group: 5; - order: 4; - } - .order-sm-5 { - -ms-flex-order: 5; - -webkit-box-ordinal-group: 6; - order: 5; - } - .order-sm-6 { - -ms-flex-order: 6; - -webkit-box-ordinal-group: 7; - order: 6; - } - .order-sm-7 { - -ms-flex-order: 7; - -webkit-box-ordinal-group: 8; - order: 7; - } - .order-sm-8 { - -ms-flex-order: 8; - -webkit-box-ordinal-group: 9; - order: 8; - } - .order-sm-9 { - -ms-flex-order: 9; - -webkit-box-ordinal-group: 10; - order: 9; - } - .order-sm-10 { - -ms-flex-order: 10; - -webkit-box-ordinal-group: 11; - order: 10; - } - .order-sm-11 { - -ms-flex-order: 11; - -webkit-box-ordinal-group: 12; - order: 11; - } - .order-sm-12 { - -ms-flex-order: 12; - -webkit-box-ordinal-group: 13; - order: 12; - } - .offset-sm-0 { - margin-left: 0; - } - .offset-sm-1 { - margin-left: 8.333333%; - } - .offset-sm-2 { - margin-left: 16.666667%; - } - .offset-sm-3 { - margin-left: 25%; - } - .offset-sm-4 { - margin-left: 33.333333%; - } - .offset-sm-5 { - margin-left: 41.666667%; - } - .offset-sm-6 { - margin-left: 50%; - } - .offset-sm-7 { - margin-left: 58.333333%; - } - .offset-sm-8 { - margin-left: 66.666667%; - } - .offset-sm-9 { - margin-left: 75%; - } - .offset-sm-10 { - margin-left: 83.333333%; - } - .offset-sm-11 { - margin-left: 91.666667%; - } -} -@media (min-width: 768px) { - .col-md { - -ms-flex-preferred-size: 0; - flex-basis: 0; - -ms-flex-positive: 1; - -webkit-box-flex: 1; - flex-grow: 1; - max-width: 100%; - } - .col-md-auto { - -ms-flex: 0 0 auto; - -webkit-box-flex: 0; - flex: 0 0 auto; - width: auto; - max-width: none; - } - .col-md-1 { - -ms-flex: 0 0 8.333333%; - -webkit-box-flex: 0; - flex: 0 0 8.333333%; - max-width: 8.333333%; - } - .col-md-2 { - -ms-flex: 0 0 16.666667%; - -webkit-box-flex: 0; - flex: 0 0 16.666667%; - max-width: 16.666667%; - } - .col-md-3 { - -ms-flex: 0 0 25%; - -webkit-box-flex: 0; - flex: 0 0 25%; - max-width: 25%; - } - .col-md-4 { - -ms-flex: 0 0 33.333333%; - -webkit-box-flex: 0; - flex: 0 0 33.333333%; - max-width: 33.333333%; - } - .col-md-5 { - -ms-flex: 0 0 41.666667%; - -webkit-box-flex: 0; - flex: 0 0 41.666667%; - max-width: 41.666667%; - } - .col-md-6 { - -ms-flex: 0 0 50%; - -webkit-box-flex: 0; - flex: 0 0 50%; - max-width: 50%; - } - .col-md-7 { - -ms-flex: 0 0 58.333333%; - -webkit-box-flex: 0; - flex: 0 0 58.333333%; - max-width: 58.333333%; - } - .col-md-8 { - -ms-flex: 0 0 66.666667%; - -webkit-box-flex: 0; - flex: 0 0 66.666667%; - max-width: 66.666667%; - } - .col-md-9 { - -ms-flex: 0 0 75%; - -webkit-box-flex: 0; - flex: 0 0 75%; - max-width: 75%; - } - .col-md-10 { - -ms-flex: 0 0 83.333333%; - -webkit-box-flex: 0; - flex: 0 0 83.333333%; - max-width: 83.333333%; - } - .col-md-11 { - -ms-flex: 0 0 91.666667%; - -webkit-box-flex: 0; - flex: 0 0 91.666667%; - max-width: 91.666667%; - } - .col-md-12 { - -ms-flex: 0 0 100%; - -webkit-box-flex: 0; - flex: 0 0 100%; - max-width: 100%; - } - .order-md-first { - -ms-flex-order: -1; - -webkit-box-ordinal-group: 0; - order: -1; - } - .order-md-1 { - -ms-flex-order: 1; - -webkit-box-ordinal-group: 2; - order: 1; - } - .order-md-2 { - -ms-flex-order: 2; - -webkit-box-ordinal-group: 3; - order: 2; - } - .order-md-3 { - -ms-flex-order: 3; - -webkit-box-ordinal-group: 4; - order: 3; - } - .order-md-4 { - -ms-flex-order: 4; - -webkit-box-ordinal-group: 5; - order: 4; - } - .order-md-5 { - -ms-flex-order: 5; - -webkit-box-ordinal-group: 6; - order: 5; - } - .order-md-6 { - -ms-flex-order: 6; - -webkit-box-ordinal-group: 7; - order: 6; - } - .order-md-7 { - -ms-flex-order: 7; - -webkit-box-ordinal-group: 8; - order: 7; - } - .order-md-8 { - -ms-flex-order: 8; - -webkit-box-ordinal-group: 9; - order: 8; - } - .order-md-9 { - -ms-flex-order: 9; - -webkit-box-ordinal-group: 10; - order: 9; - } - .order-md-10 { - -ms-flex-order: 10; - -webkit-box-ordinal-group: 11; - order: 10; - } - .order-md-11 { - -ms-flex-order: 11; - -webkit-box-ordinal-group: 12; - order: 11; - } - .order-md-12 { - -ms-flex-order: 12; - -webkit-box-ordinal-group: 13; - order: 12; - } - .offset-md-0 { - margin-left: 0; - } - .offset-md-1 { - margin-left: 8.333333%; - } - .offset-md-2 { - margin-left: 16.666667%; - } - .offset-md-3 { - margin-left: 25%; - } - .offset-md-4 { - margin-left: 33.333333%; - } - .offset-md-5 { - margin-left: 41.666667%; - } - .offset-md-6 { - margin-left: 50%; - } - .offset-md-7 { - margin-left: 58.333333%; - } - .offset-md-8 { - margin-left: 66.666667%; - } - .offset-md-9 { - margin-left: 75%; - } - .offset-md-10 { - margin-left: 83.333333%; - } - .offset-md-11 { - margin-left: 91.666667%; - } -} -@media (min-width: 992px) { - .col-lg { - -ms-flex-preferred-size: 0; - flex-basis: 0; - -ms-flex-positive: 1; - -webkit-box-flex: 1; - flex-grow: 1; - max-width: 100%; - } - .col-lg-auto { - -ms-flex: 0 0 auto; - -webkit-box-flex: 0; - flex: 0 0 auto; - width: auto; - max-width: none; - } - .col-lg-1 { - -ms-flex: 0 0 8.333333%; - -webkit-box-flex: 0; - flex: 0 0 8.333333%; - max-width: 8.333333%; - } - .col-lg-2 { - -ms-flex: 0 0 16.666667%; - -webkit-box-flex: 0; - flex: 0 0 16.666667%; - max-width: 16.666667%; - } - .col-lg-3 { - -ms-flex: 0 0 25%; - -webkit-box-flex: 0; - flex: 0 0 25%; - max-width: 25%; - } - .col-lg-4 { - -ms-flex: 0 0 33.333333%; - -webkit-box-flex: 0; - flex: 0 0 33.333333%; - max-width: 33.333333%; - } - .col-lg-5 { - -ms-flex: 0 0 41.666667%; - -webkit-box-flex: 0; - flex: 0 0 41.666667%; - max-width: 41.666667%; - } - .col-lg-6 { - -ms-flex: 0 0 50%; - -webkit-box-flex: 0; - flex: 0 0 50%; - max-width: 50%; - } - .col-lg-7 { - -ms-flex: 0 0 58.333333%; - -webkit-box-flex: 0; - flex: 0 0 58.333333%; - max-width: 58.333333%; - } - .col-lg-8 { - -ms-flex: 0 0 66.666667%; - -webkit-box-flex: 0; - flex: 0 0 66.666667%; - max-width: 66.666667%; - } - .col-lg-9 { - -ms-flex: 0 0 75%; - -webkit-box-flex: 0; - flex: 0 0 75%; - max-width: 75%; - } - .col-lg-10 { - -ms-flex: 0 0 83.333333%; - -webkit-box-flex: 0; - flex: 0 0 83.333333%; - max-width: 83.333333%; - } - .col-lg-11 { - -ms-flex: 0 0 91.666667%; - -webkit-box-flex: 0; - flex: 0 0 91.666667%; - max-width: 91.666667%; - } - .col-lg-12 { - -ms-flex: 0 0 100%; - -webkit-box-flex: 0; - flex: 0 0 100%; - max-width: 100%; - } - .order-lg-first { - -ms-flex-order: -1; - -webkit-box-ordinal-group: 0; - order: -1; - } - .order-lg-1 { - -ms-flex-order: 1; - -webkit-box-ordinal-group: 2; - order: 1; - } - .order-lg-2 { - -ms-flex-order: 2; - -webkit-box-ordinal-group: 3; - order: 2; - } - .order-lg-3 { - -ms-flex-order: 3; - -webkit-box-ordinal-group: 4; - order: 3; - } - .order-lg-4 { - -ms-flex-order: 4; - -webkit-box-ordinal-group: 5; - order: 4; - } - .order-lg-5 { - -ms-flex-order: 5; - -webkit-box-ordinal-group: 6; - order: 5; - } - .order-lg-6 { - -ms-flex-order: 6; - -webkit-box-ordinal-group: 7; - order: 6; - } - .order-lg-7 { - -ms-flex-order: 7; - -webkit-box-ordinal-group: 8; - order: 7; - } - .order-lg-8 { - -ms-flex-order: 8; - -webkit-box-ordinal-group: 9; - order: 8; - } - .order-lg-9 { - -ms-flex-order: 9; - -webkit-box-ordinal-group: 10; - order: 9; - } - .order-lg-10 { - -ms-flex-order: 10; - -webkit-box-ordinal-group: 11; - order: 10; - } - .order-lg-11 { - -ms-flex-order: 11; - -webkit-box-ordinal-group: 12; - order: 11; - } - .order-lg-12 { - -ms-flex-order: 12; - -webkit-box-ordinal-group: 13; - order: 12; - } - .offset-lg-0 { - margin-left: 0; - } - .offset-lg-1 { - margin-left: 8.333333%; - } - .offset-lg-2 { - margin-left: 16.666667%; - } - .offset-lg-3 { - margin-left: 25%; - } - .offset-lg-4 { - margin-left: 33.333333%; - } - .offset-lg-5 { - margin-left: 41.666667%; - } - .offset-lg-6 { - margin-left: 50%; - } - .offset-lg-7 { - margin-left: 58.333333%; - } - .offset-lg-8 { - margin-left: 66.666667%; - } - .offset-lg-9 { - margin-left: 75%; - } - .offset-lg-10 { - margin-left: 83.333333%; - } - .offset-lg-11 { - margin-left: 91.666667%; - } -} -@media (min-width: 1200px) { - .col-xl { - -ms-flex-preferred-size: 0; - flex-basis: 0; - -ms-flex-positive: 1; - -webkit-box-flex: 1; - flex-grow: 1; - max-width: 100%; - } - .col-xl-auto { - -ms-flex: 0 0 auto; - -webkit-box-flex: 0; - flex: 0 0 auto; - width: auto; - max-width: none; - } - .col-xl-1 { - -ms-flex: 0 0 8.333333%; - -webkit-box-flex: 0; - flex: 0 0 8.333333%; - max-width: 8.333333%; - } - .col-xl-2 { - -ms-flex: 0 0 16.666667%; - -webkit-box-flex: 0; - flex: 0 0 16.666667%; - max-width: 16.666667%; - } - .col-xl-3 { - -ms-flex: 0 0 25%; - -webkit-box-flex: 0; - flex: 0 0 25%; - max-width: 25%; - } - .col-xl-4 { - -ms-flex: 0 0 33.333333%; - -webkit-box-flex: 0; - flex: 0 0 33.333333%; - max-width: 33.333333%; - } - .col-xl-5 { - -ms-flex: 0 0 41.666667%; - -webkit-box-flex: 0; - flex: 0 0 41.666667%; - max-width: 41.666667%; - } - .col-xl-6 { - -ms-flex: 0 0 50%; - -webkit-box-flex: 0; - flex: 0 0 50%; - max-width: 50%; - } - .col-xl-7 { - -ms-flex: 0 0 58.333333%; - -webkit-box-flex: 0; - flex: 0 0 58.333333%; - max-width: 58.333333%; - } - .col-xl-8 { - -ms-flex: 0 0 66.666667%; - -webkit-box-flex: 0; - flex: 0 0 66.666667%; - max-width: 66.666667%; - } - .col-xl-9 { - -ms-flex: 0 0 75%; - -webkit-box-flex: 0; - flex: 0 0 75%; - max-width: 75%; - } - .col-xl-10 { - -ms-flex: 0 0 83.333333%; - -webkit-box-flex: 0; - flex: 0 0 83.333333%; - max-width: 83.333333%; - } - .col-xl-11 { - -ms-flex: 0 0 91.666667%; - -webkit-box-flex: 0; - flex: 0 0 91.666667%; - max-width: 91.666667%; - } - .col-xl-12 { - -ms-flex: 0 0 100%; - -webkit-box-flex: 0; - flex: 0 0 100%; - max-width: 100%; - } - .order-xl-first { - -ms-flex-order: -1; - -webkit-box-ordinal-group: 0; - order: -1; - } - .order-xl-1 { - -ms-flex-order: 1; - -webkit-box-ordinal-group: 2; - order: 1; - } - .order-xl-2 { - -ms-flex-order: 2; - -webkit-box-ordinal-group: 3; - order: 2; - } - .order-xl-3 { - -ms-flex-order: 3; - -webkit-box-ordinal-group: 4; - order: 3; - } - .order-xl-4 { - -ms-flex-order: 4; - -webkit-box-ordinal-group: 5; - order: 4; - } - .order-xl-5 { - -ms-flex-order: 5; - -webkit-box-ordinal-group: 6; - order: 5; - } - .order-xl-6 { - -ms-flex-order: 6; - -webkit-box-ordinal-group: 7; - order: 6; - } - .order-xl-7 { - -ms-flex-order: 7; - -webkit-box-ordinal-group: 8; - order: 7; - } - .order-xl-8 { - -ms-flex-order: 8; - -webkit-box-ordinal-group: 9; - order: 8; - } - .order-xl-9 { - -ms-flex-order: 9; - -webkit-box-ordinal-group: 10; - order: 9; - } - .order-xl-10 { - -ms-flex-order: 10; - -webkit-box-ordinal-group: 11; - order: 10; - } - .order-xl-11 { - -ms-flex-order: 11; - -webkit-box-ordinal-group: 12; - order: 11; - } - .order-xl-12 { - -ms-flex-order: 12; - -webkit-box-ordinal-group: 13; - order: 12; - } - .offset-xl-0 { - margin-left: 0; - } - .offset-xl-1 { - margin-left: 8.333333%; - } - .offset-xl-2 { - margin-left: 16.666667%; - } - .offset-xl-3 { - margin-left: 25%; - } - .offset-xl-4 { - margin-left: 33.333333%; - } - .offset-xl-5 { - margin-left: 41.666667%; - } - .offset-xl-6 { - margin-left: 50%; - } - .offset-xl-7 { - margin-left: 58.333333%; - } - .offset-xl-8 { - margin-left: 66.666667%; - } - .offset-xl-9 { - margin-left: 75%; - } - .offset-xl-10 { - margin-left: 83.333333%; - } - .offset-xl-11 { - margin-left: 91.666667%; - } -} -.table, table { - width: 100%; - max-width: 100%; - margin-bottom: 1rem; - background-color: transparent; -} - -.table th, table th, -.table td, -table td { - padding: 0.75rem; - vertical-align: top; - border-top: 1px solid #e9ecef; -} - -.table thead th, table thead th { - vertical-align: bottom; - border-bottom: 2px solid #e9ecef; -} - -.table tbody + tbody, table tbody + tbody { - border-top: 2px solid #e9ecef; -} - -.table .table, table .table, .table table, table table { - background-color: #fff; -} - -.table-sm th, -.table-sm td { - padding: 0.3rem; -} - -.table-bordered, table { - border: 1px solid #e9ecef; -} - -.table-bordered th, table th, -.table-bordered td, -table td { - border: 1px solid #e9ecef; -} - -.table-bordered thead th, table thead th, -.table-bordered thead td, -table thead td { - border-bottom-width: 2px; -} - -.table-striped tbody tr:nth-of-type(odd) { - background-color: rgba(0, 0, 0, 0.05); -} - -.table-hover tbody tr:hover { - background-color: rgba(0, 0, 0, 0.075); -} - -.table-primary, -.table-primary > th, -.table-primary > td { - background-color: #b8daff; -} - -.table-hover .table-primary:hover { - background-color: #9fcdff; -} - -.table-hover .table-primary:hover > td, -.table-hover .table-primary:hover > th { - background-color: #9fcdff; -} - -.table-secondary, -.table-secondary > th, -.table-secondary > td { - background-color: #dddfe2; -} - -.table-hover .table-secondary:hover { - background-color: #cfd2d6; -} - -.table-hover .table-secondary:hover > td, -.table-hover .table-secondary:hover > th { - background-color: #cfd2d6; -} - -.table-success, -.table-success > th, -.table-success > td { - background-color: #c3e6cb; -} - -.table-hover .table-success:hover { - background-color: #b1dfbb; -} - -.table-hover .table-success:hover > td, -.table-hover .table-success:hover > th { - background-color: #b1dfbb; -} - -.table-info, -.table-info > th, -.table-info > td { - background-color: #bee5eb; -} - -.table-hover .table-info:hover { - background-color: #abdde5; -} - -.table-hover .table-info:hover > td, -.table-hover .table-info:hover > th { - background-color: #abdde5; -} - -.table-warning, -.table-warning > th, -.table-warning > td { - background-color: #ffeeba; -} - -.table-hover .table-warning:hover { - background-color: #ffe8a1; -} - -.table-hover .table-warning:hover > td, -.table-hover .table-warning:hover > th { - background-color: #ffe8a1; -} - -.table-danger, -.table-danger > th, -.table-danger > td { - background-color: #f5c6cb; -} - -.table-hover .table-danger:hover { - background-color: #f1b0b7; -} - -.table-hover .table-danger:hover > td, -.table-hover .table-danger:hover > th { - background-color: #f1b0b7; -} - -.table-light, -.table-light > th, -.table-light > td { - background-color: #fdfdfe; -} - -.table-hover .table-light:hover { - background-color: #ececf6; -} - -.table-hover .table-light:hover > td, -.table-hover .table-light:hover > th { - background-color: #ececf6; -} - -.table-dark, -.table-dark > th, -.table-dark > td { - background-color: #c6c8ca; -} - -.table-hover .table-dark:hover { - background-color: #b9bbbe; -} - -.table-hover .table-dark:hover > td, -.table-hover .table-dark:hover > th { - background-color: #b9bbbe; -} - -.table-active, -.table-active > th, -.table-active > td { - background-color: rgba(0, 0, 0, 0.075); -} - -.table-hover .table-active:hover { - background-color: rgba(0, 0, 0, 0.075); -} - -.table-hover .table-active:hover > td, -.table-hover .table-active:hover > th { - background-color: rgba(0, 0, 0, 0.075); -} - -.table .thead-dark th, table .thead-dark th { - color: #fff; - background-color: #212529; - border-color: #32383e; -} - -.table .thead-light th, table .thead-light th { - color: #495057; - background-color: #e9ecef; - border-color: #e9ecef; -} - -.table-dark { - color: #fff; - background-color: #212529; -} - -.table-dark th, -.table-dark td, -.table-dark thead th { - border-color: #32383e; -} - -.table-dark.table-bordered, table.table-dark { - border: 0; -} - -.table-dark.table-striped tbody tr:nth-of-type(odd) { - background-color: rgba(255, 255, 255, 0.05); -} - -.table-dark.table-hover tbody tr:hover { - background-color: rgba(255, 255, 255, 0.075); -} - -@media (max-width: 575.99px) { - .table-responsive-sm { - display: block; - width: 100%; - overflow-x: auto; - -webkit-overflow-scrolling: touch; - -ms-overflow-style: -ms-autohiding-scrollbar; - } - .table-responsive-sm.table-bordered, table.table-responsive-sm { - border: 0; - } -} -@media (max-width: 767.99px) { - .table-responsive-md { - display: block; - width: 100%; - overflow-x: auto; - -webkit-overflow-scrolling: touch; - -ms-overflow-style: -ms-autohiding-scrollbar; - } - .table-responsive-md.table-bordered, table.table-responsive-md { - border: 0; - } -} -@media (max-width: 991.99px) { - .table-responsive-lg { - display: block; - width: 100%; - overflow-x: auto; - -webkit-overflow-scrolling: touch; - -ms-overflow-style: -ms-autohiding-scrollbar; - } - .table-responsive-lg.table-bordered, table.table-responsive-lg { - border: 0; - } -} -@media (max-width: 1199.99px) { - .table-responsive-xl { - display: block; - width: 100%; - overflow-x: auto; - -webkit-overflow-scrolling: touch; - -ms-overflow-style: -ms-autohiding-scrollbar; - } - .table-responsive-xl.table-bordered, table.table-responsive-xl { - border: 0; - } -} -.table-responsive, table { - display: block; - width: 100%; - overflow-x: auto; - -webkit-overflow-scrolling: touch; - -ms-overflow-style: -ms-autohiding-scrollbar; -} - -.table-responsive.table-bordered, table { - border: 0; -} - -.form-control { - display: block; - width: 100%; - padding: 0.375rem 0.75rem; - font-size: 1rem; - line-height: 1.5; - color: #495057; - background-color: #fff; - background-clip: padding-box; - border: 1px solid #ced4da; - border-radius: 0.25rem; - -webkit-transition: border-color 0.15s ease-in-out, -webkit-box-shadow 0.15s ease-in-out; - transition: border-color 0.15s ease-in-out, -webkit-box-shadow 0.15s ease-in-out; - transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; - transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out, -webkit-box-shadow 0.15s ease-in-out; -} - -.form-control::-ms-expand { - background-color: transparent; - border: 0; -} - -.form-control:focus { - color: #495057; - background-color: #fff; - border-color: #80bdff; - outline: 0; - -webkit-box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25); - box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25); -} - -.form-control::-webkit-input-placeholder { - color: #868e96; - opacity: 1; -} - -.form-control:-ms-input-placeholder { - color: #868e96; - opacity: 1; -} - -.form-control::-ms-input-placeholder { - color: #868e96; - opacity: 1; -} - -.form-control::-moz-placeholder { - color: #868e96; - opacity: 1; -} - -.form-control::placeholder { - color: #868e96; - opacity: 1; -} - -.form-control:disabled, .form-control[readonly] { - background-color: #e9ecef; - opacity: 1; -} - -select.form-control:not([size]):not([multiple]) { - height: calc(2.25rem + 2px); -} - -select.form-control:focus::-ms-value { - color: #495057; - background-color: #fff; -} - -.form-control-file, -.form-control-range { - display: block; -} - -.col-form-label { - padding-top: calc(0.375rem + 1px); - padding-bottom: calc(0.375rem + 1px); - margin-bottom: 0; - font-size: inherit; - line-height: 1.5; -} - -.col-form-label-lg { - padding-top: calc(0.5rem + 1px); - padding-bottom: calc(0.5rem + 1px); - font-size: 1.25rem; - line-height: 1.5; -} - -.col-form-label-sm { - padding-top: calc(0.25rem + 1px); - padding-bottom: calc(0.25rem + 1px); - font-size: 0.875rem; - line-height: 1.5; -} - -.form-control-plaintext { - display: block; - width: 100%; - padding-top: 0.375rem; - padding-bottom: 0.375rem; - margin-bottom: 0; - line-height: 1.5; - background-color: transparent; - border: solid transparent; - border-width: 1px 0; -} - -.form-control-plaintext.form-control-sm, .input-group-sm > .form-control-plaintext.form-control, -.input-group-sm > .form-control-plaintext.input-group-addon, -.input-group-sm > .input-group-btn > .form-control-plaintext.btn, -.input-group-sm > .input-group-btn > .form-control-plaintext.member-runner-link, .form-control-plaintext.form-control-lg, .input-group-lg > .form-control-plaintext.form-control, -.input-group-lg > .form-control-plaintext.input-group-addon, -.input-group-lg > .input-group-btn > .form-control-plaintext.btn, -.input-group-lg > .input-group-btn > .form-control-plaintext.member-runner-link { - padding-right: 0; - padding-left: 0; -} - -.form-control-sm, .input-group-sm > .form-control, -.input-group-sm > .input-group-addon, -.input-group-sm > .input-group-btn > .btn, -.input-group-sm > .input-group-btn > .member-runner-link { - padding: 0.25rem 0.5rem; - font-size: 0.875rem; - line-height: 1.5; - border-radius: 0.2rem; -} - -select.form-control-sm:not([size]):not([multiple]), .input-group-sm > select.form-control:not([size]):not([multiple]), -.input-group-sm > select.input-group-addon:not([size]):not([multiple]), -.input-group-sm > .input-group-btn > select.btn:not([size]):not([multiple]), -.input-group-sm > .input-group-btn > select.member-runner-link:not([size]):not([multiple]) { - height: calc(1.8125rem + 2px); -} - -.form-control-lg, .input-group-lg > .form-control, -.input-group-lg > .input-group-addon, -.input-group-lg > .input-group-btn > .btn, -.input-group-lg > .input-group-btn > .member-runner-link { - padding: 0.5rem 1rem; - font-size: 1.25rem; - line-height: 1.5; - border-radius: 0.3rem; -} - -select.form-control-lg:not([size]):not([multiple]), .input-group-lg > select.form-control:not([size]):not([multiple]), -.input-group-lg > select.input-group-addon:not([size]):not([multiple]), -.input-group-lg > .input-group-btn > select.btn:not([size]):not([multiple]), -.input-group-lg > .input-group-btn > select.member-runner-link:not([size]):not([multiple]) { - height: calc(2.875rem + 2px); -} - -.form-group { - margin-bottom: 1rem; -} - -.form-text { - display: block; - margin-top: 0.25rem; -} - -.form-row { - display: -ms-flexbox; - display: -webkit-box; - display: flex; - -ms-flex-wrap: wrap; - flex-wrap: wrap; - margin-right: -5px; - margin-left: -5px; -} - -.form-row > .col, -.form-row > [class*=col-] { - padding-right: 5px; - padding-left: 5px; -} - -.form-check { - position: relative; - display: block; - margin-bottom: 0.5rem; -} - -.form-check.disabled .form-check-label { - color: #868e96; -} - -.form-check-label { - padding-left: 1.25rem; - margin-bottom: 0; -} - -.form-check-input { - position: absolute; - margin-top: 0.25rem; - margin-left: -1.25rem; -} - -.form-check-inline { - display: inline-block; - margin-right: 0.75rem; -} - -.form-check-inline .form-check-label { - vertical-align: middle; -} - -.valid-feedback { - display: none; - margin-top: 0.25rem; - font-size: 80%; - color: #28a745; -} - -.valid-tooltip { - position: absolute; - top: 100%; - z-index: 5; - display: none; - width: 250px; - padding: 0.5rem; - margin-top: 0.1rem; - font-size: 0.875rem; - line-height: 1; - color: #fff; - background-color: rgba(40, 167, 69, 0.8); - border-radius: 0.2rem; -} - -.was-validated .form-control:valid, .form-control.is-valid, .was-validated .custom-select:valid, -.custom-select.is-valid { - border-color: #28a745; -} - -.was-validated .form-control:valid:focus, .form-control.is-valid:focus, .was-validated .custom-select:valid:focus, -.custom-select.is-valid:focus { - border-color: #28a745; - -webkit-box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.25); - box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.25); -} - -.was-validated .form-control:valid ~ .valid-feedback, -.was-validated .form-control:valid ~ .valid-tooltip, .form-control.is-valid ~ .valid-feedback, -.form-control.is-valid ~ .valid-tooltip, .was-validated .custom-select:valid ~ .valid-feedback, -.was-validated .custom-select:valid ~ .valid-tooltip, -.custom-select.is-valid ~ .valid-feedback, -.custom-select.is-valid ~ .valid-tooltip { - display: block; -} - -.was-validated .form-check-input:valid + .form-check-label, .form-check-input.is-valid + .form-check-label { - color: #28a745; -} - -.was-validated .custom-control-input:valid ~ .custom-control-indicator, .custom-control-input.is-valid ~ .custom-control-indicator { - background-color: #71dd8a; -} - -.was-validated .custom-control-input:valid ~ .custom-control-description, .custom-control-input.is-valid ~ .custom-control-description { - color: #28a745; -} - -.was-validated .custom-control-input:valid:checked ~ .custom-control-indicator, .custom-control-input.is-valid:checked ~ .custom-control-indicator { - background-color: #34ce57; -} - -.was-validated .custom-control-input:valid:focus ~ .custom-control-indicator, .custom-control-input.is-valid:focus ~ .custom-control-indicator { - -webkit-box-shadow: 0 0 0 1px #fff, 0 0 0 0.2rem rgba(40, 167, 69, 0.25); - box-shadow: 0 0 0 1px #fff, 0 0 0 0.2rem rgba(40, 167, 69, 0.25); -} - -.was-validated .custom-file-input:valid ~ .custom-file-control, .custom-file-input.is-valid ~ .custom-file-control { - border-color: #28a745; -} - -.was-validated .custom-file-input:valid ~ .custom-file-control::before, .custom-file-input.is-valid ~ .custom-file-control::before { - border-color: inherit; -} - -.was-validated .custom-file-input:valid:focus ~ .custom-file-control, .custom-file-input.is-valid:focus ~ .custom-file-control { - -webkit-box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.25); - box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.25); -} - -.invalid-feedback { - display: none; - margin-top: 0.25rem; - font-size: 80%; - color: #dc3545; -} - -.invalid-tooltip { - position: absolute; - top: 100%; - z-index: 5; - display: none; - width: 250px; - padding: 0.5rem; - margin-top: 0.1rem; - font-size: 0.875rem; - line-height: 1; - color: #fff; - background-color: rgba(220, 53, 69, 0.8); - border-radius: 0.2rem; -} - -.was-validated .form-control:invalid, .form-control.is-invalid, .was-validated .custom-select:invalid, -.custom-select.is-invalid { - border-color: #dc3545; -} - -.was-validated .form-control:invalid:focus, .form-control.is-invalid:focus, .was-validated .custom-select:invalid:focus, -.custom-select.is-invalid:focus { - border-color: #dc3545; - -webkit-box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.25); - box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.25); -} - -.was-validated .form-control:invalid ~ .invalid-feedback, -.was-validated .form-control:invalid ~ .invalid-tooltip, .form-control.is-invalid ~ .invalid-feedback, -.form-control.is-invalid ~ .invalid-tooltip, .was-validated .custom-select:invalid ~ .invalid-feedback, -.was-validated .custom-select:invalid ~ .invalid-tooltip, -.custom-select.is-invalid ~ .invalid-feedback, -.custom-select.is-invalid ~ .invalid-tooltip { - display: block; -} - -.was-validated .form-check-input:invalid + .form-check-label, .form-check-input.is-invalid + .form-check-label { - color: #dc3545; -} - -.was-validated .custom-control-input:invalid ~ .custom-control-indicator, .custom-control-input.is-invalid ~ .custom-control-indicator { - background-color: #efa2a9; -} - -.was-validated .custom-control-input:invalid ~ .custom-control-description, .custom-control-input.is-invalid ~ .custom-control-description { - color: #dc3545; -} - -.was-validated .custom-control-input:invalid:checked ~ .custom-control-indicator, .custom-control-input.is-invalid:checked ~ .custom-control-indicator { - background-color: #e4606d; -} - -.was-validated .custom-control-input:invalid:focus ~ .custom-control-indicator, .custom-control-input.is-invalid:focus ~ .custom-control-indicator { - -webkit-box-shadow: 0 0 0 1px #fff, 0 0 0 0.2rem rgba(220, 53, 69, 0.25); - box-shadow: 0 0 0 1px #fff, 0 0 0 0.2rem rgba(220, 53, 69, 0.25); -} - -.was-validated .custom-file-input:invalid ~ .custom-file-control, .custom-file-input.is-invalid ~ .custom-file-control { - border-color: #dc3545; -} - -.was-validated .custom-file-input:invalid ~ .custom-file-control::before, .custom-file-input.is-invalid ~ .custom-file-control::before { - border-color: inherit; -} - -.was-validated .custom-file-input:invalid:focus ~ .custom-file-control, .custom-file-input.is-invalid:focus ~ .custom-file-control { - -webkit-box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.25); - box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.25); -} - -.form-inline { - display: -ms-flexbox; - display: -webkit-box; - display: flex; - -ms-flex-flow: row wrap; - -webkit-box-orient: horizontal; - -webkit-box-direction: normal; - flex-flow: row wrap; - -ms-flex-align: center; - -webkit-box-align: center; - align-items: center; -} - -.form-inline .form-check { - width: 100%; -} - -@media (min-width: 576px) { - .form-inline label { - display: -ms-flexbox; - display: -webkit-box; - display: flex; - -ms-flex-align: center; - -webkit-box-align: center; - align-items: center; - -ms-flex-pack: center; - -webkit-box-pack: center; - justify-content: center; - margin-bottom: 0; - } - .form-inline .form-group { - display: -ms-flexbox; - display: -webkit-box; - display: flex; - -ms-flex: 0 0 auto; - -webkit-box-flex: 0; - flex: 0 0 auto; - -ms-flex-flow: row wrap; - -webkit-box-orient: horizontal; - -webkit-box-direction: normal; - flex-flow: row wrap; - -ms-flex-align: center; - -webkit-box-align: center; - align-items: center; - margin-bottom: 0; - } - .form-inline .form-control { - display: inline-block; - width: auto; - vertical-align: middle; - } - .form-inline .form-control-plaintext { - display: inline-block; - } - .form-inline .input-group { - width: auto; - } - .form-inline .form-check { - display: -ms-flexbox; - display: -webkit-box; - display: flex; - -ms-flex-align: center; - -webkit-box-align: center; - align-items: center; - -ms-flex-pack: center; - -webkit-box-pack: center; - justify-content: center; - width: auto; - margin-top: 0; - margin-bottom: 0; - } - .form-inline .form-check-label { - padding-left: 0; - } - .form-inline .form-check-input { - position: relative; - margin-top: 0; - margin-right: 0.25rem; - margin-left: 0; - } - .form-inline .custom-control { - display: -ms-flexbox; - display: -webkit-box; - display: flex; - -ms-flex-align: center; - -webkit-box-align: center; - align-items: center; - -ms-flex-pack: center; - -webkit-box-pack: center; - justify-content: center; - padding-left: 0; - } - .form-inline .custom-control-indicator { - position: static; - display: inline-block; - margin-right: 0.25rem; - vertical-align: text-bottom; - } - .form-inline .has-feedback .form-control-feedback { - top: 0; - } -} -.btn, .member-runner-link { - display: inline-block; - font-weight: 400; - text-align: center; - white-space: nowrap; - vertical-align: middle; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; - border: 1px solid transparent; - padding: 0.375rem 0.75rem; - font-size: 1rem; - line-height: 1.5; - border-radius: 0.25rem; - -webkit-transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, -webkit-box-shadow 0.15s ease-in-out; - transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, -webkit-box-shadow 0.15s ease-in-out; - transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; - transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out, -webkit-box-shadow 0.15s ease-in-out; -} - -.btn:focus, .member-runner-link:focus, .btn:hover, .member-runner-link:hover { - text-decoration: none; -} - -.btn:focus, .member-runner-link:focus, .btn.focus, .focus.member-runner-link { - outline: 0; - -webkit-box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25); - box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25); -} - -.btn.disabled, .disabled.member-runner-link, .btn:disabled, .member-runner-link:disabled { - opacity: 0.65; -} - -.btn:not([disabled]):not(.disabled):active, .member-runner-link:not([disabled]):not(.disabled):active, .btn:not([disabled]):not(.disabled).active, .member-runner-link:not([disabled]):not(.disabled).active { - background-image: none; -} - -a.btn.disabled, a.disabled.member-runner-link, -fieldset[disabled] a.btn, -fieldset[disabled] a.member-runner-link { - pointer-events: none; -} - -.btn-primary, .member-runner-link { - color: #fff; - background-color: #007bff; - border-color: #007bff; -} - -.btn-primary:hover, .member-runner-link:hover { - color: #fff; - background-color: #0069d9; - border-color: #0062cc; -} - -.btn-primary:focus, .member-runner-link:focus, .btn-primary.focus, .focus.member-runner-link { - -webkit-box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.5); - box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.5); -} - -.btn-primary.disabled, .disabled.member-runner-link, .btn-primary:disabled, .member-runner-link:disabled { - background-color: #007bff; - border-color: #007bff; -} - -.btn-primary:not([disabled]):not(.disabled):active, .member-runner-link:not([disabled]):not(.disabled):active, .btn-primary:not([disabled]):not(.disabled).active, .member-runner-link:not([disabled]):not(.disabled).active, -.show > .btn-primary.dropdown-toggle, -.show > .dropdown-toggle.member-runner-link { - color: #fff; - background-color: #0062cc; - border-color: #005cbf; - -webkit-box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.5); - box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.5); -} - -.btn-secondary { - color: #fff; - background-color: #868e96; - border-color: #868e96; -} - -.btn-secondary:hover { - color: #fff; - background-color: #727b84; - border-color: #6c757d; -} - -.btn-secondary:focus, .btn-secondary.focus { - -webkit-box-shadow: 0 0 0 0.2rem rgba(134, 142, 150, 0.5); - box-shadow: 0 0 0 0.2rem rgba(134, 142, 150, 0.5); -} - -.btn-secondary.disabled, .btn-secondary:disabled { - background-color: #868e96; - border-color: #868e96; -} - -.btn-secondary:not([disabled]):not(.disabled):active, .btn-secondary:not([disabled]):not(.disabled).active, -.show > .btn-secondary.dropdown-toggle { - color: #fff; - background-color: #6c757d; - border-color: #666e76; - -webkit-box-shadow: 0 0 0 0.2rem rgba(134, 142, 150, 0.5); - box-shadow: 0 0 0 0.2rem rgba(134, 142, 150, 0.5); -} - -.btn-success { - color: #fff; - background-color: #28a745; - border-color: #28a745; -} - -.btn-success:hover { - color: #fff; - background-color: #218838; - border-color: #1e7e34; -} - -.btn-success:focus, .btn-success.focus { - -webkit-box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.5); - box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.5); -} - -.btn-success.disabled, .btn-success:disabled { - background-color: #28a745; - border-color: #28a745; -} - -.btn-success:not([disabled]):not(.disabled):active, .btn-success:not([disabled]):not(.disabled).active, -.show > .btn-success.dropdown-toggle { - color: #fff; - background-color: #1e7e34; - border-color: #1c7430; - -webkit-box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.5); - box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.5); -} - -.btn-info { - color: #fff; - background-color: #17a2b8; - border-color: #17a2b8; -} - -.btn-info:hover { - color: #fff; - background-color: #138496; - border-color: #117a8b; -} - -.btn-info:focus, .btn-info.focus { - -webkit-box-shadow: 0 0 0 0.2rem rgba(23, 162, 184, 0.5); - box-shadow: 0 0 0 0.2rem rgba(23, 162, 184, 0.5); -} - -.btn-info.disabled, .btn-info:disabled { - background-color: #17a2b8; - border-color: #17a2b8; -} - -.btn-info:not([disabled]):not(.disabled):active, .btn-info:not([disabled]):not(.disabled).active, -.show > .btn-info.dropdown-toggle { - color: #fff; - background-color: #117a8b; - border-color: #10707f; - -webkit-box-shadow: 0 0 0 0.2rem rgba(23, 162, 184, 0.5); - box-shadow: 0 0 0 0.2rem rgba(23, 162, 184, 0.5); -} - -.btn-warning { - color: #212529; - background-color: #ffc107; - border-color: #ffc107; -} - -.btn-warning:hover { - color: #212529; - background-color: #e0a800; - border-color: #d39e00; -} - -.btn-warning:focus, .btn-warning.focus { - -webkit-box-shadow: 0 0 0 0.2rem rgba(255, 193, 7, 0.5); - box-shadow: 0 0 0 0.2rem rgba(255, 193, 7, 0.5); -} - -.btn-warning.disabled, .btn-warning:disabled { - background-color: #ffc107; - border-color: #ffc107; -} - -.btn-warning:not([disabled]):not(.disabled):active, .btn-warning:not([disabled]):not(.disabled).active, -.show > .btn-warning.dropdown-toggle { - color: #212529; - background-color: #d39e00; - border-color: #c69500; - -webkit-box-shadow: 0 0 0 0.2rem rgba(255, 193, 7, 0.5); - box-shadow: 0 0 0 0.2rem rgba(255, 193, 7, 0.5); -} - -.btn-danger { - color: #fff; - background-color: #dc3545; - border-color: #dc3545; -} - -.btn-danger:hover { - color: #fff; - background-color: #c82333; - border-color: #bd2130; -} - -.btn-danger:focus, .btn-danger.focus { - -webkit-box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.5); - box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.5); -} - -.btn-danger.disabled, .btn-danger:disabled { - background-color: #dc3545; - border-color: #dc3545; -} - -.btn-danger:not([disabled]):not(.disabled):active, .btn-danger:not([disabled]):not(.disabled).active, -.show > .btn-danger.dropdown-toggle { - color: #fff; - background-color: #bd2130; - border-color: #b21f2d; - -webkit-box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.5); - box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.5); -} - -.btn-light { - color: #212529; - background-color: #f8f9fa; - border-color: #f8f9fa; -} - -.btn-light:hover { - color: #212529; - background-color: #e2e6ea; - border-color: #dae0e5; -} - -.btn-light:focus, .btn-light.focus { - -webkit-box-shadow: 0 0 0 0.2rem rgba(248, 249, 250, 0.5); - box-shadow: 0 0 0 0.2rem rgba(248, 249, 250, 0.5); -} - -.btn-light.disabled, .btn-light:disabled { - background-color: #f8f9fa; - border-color: #f8f9fa; -} - -.btn-light:not([disabled]):not(.disabled):active, .btn-light:not([disabled]):not(.disabled).active, -.show > .btn-light.dropdown-toggle { - color: #212529; - background-color: #dae0e5; - border-color: #d3d9df; - -webkit-box-shadow: 0 0 0 0.2rem rgba(248, 249, 250, 0.5); - box-shadow: 0 0 0 0.2rem rgba(248, 249, 250, 0.5); -} - -.btn-dark { - color: #fff; - background-color: #343a40; - border-color: #343a40; -} - -.btn-dark:hover { - color: #fff; - background-color: #23272b; - border-color: #1d2124; -} - -.btn-dark:focus, .btn-dark.focus { - -webkit-box-shadow: 0 0 0 0.2rem rgba(52, 58, 64, 0.5); - box-shadow: 0 0 0 0.2rem rgba(52, 58, 64, 0.5); -} - -.btn-dark.disabled, .btn-dark:disabled { - background-color: #343a40; - border-color: #343a40; -} - -.btn-dark:not([disabled]):not(.disabled):active, .btn-dark:not([disabled]):not(.disabled).active, -.show > .btn-dark.dropdown-toggle { - color: #fff; - background-color: #1d2124; - border-color: #171a1d; - -webkit-box-shadow: 0 0 0 0.2rem rgba(52, 58, 64, 0.5); - box-shadow: 0 0 0 0.2rem rgba(52, 58, 64, 0.5); -} - -.btn-outline-primary { - color: #007bff; - background-color: transparent; - background-image: none; - border-color: #007bff; -} - -.btn-outline-primary:hover { - color: #fff; - background-color: #007bff; - border-color: #007bff; -} - -.btn-outline-primary:focus, .btn-outline-primary.focus { - -webkit-box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.5); - box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.5); -} - -.btn-outline-primary.disabled, .btn-outline-primary:disabled { - color: #007bff; - background-color: transparent; -} - -.btn-outline-primary:not([disabled]):not(.disabled):active, .btn-outline-primary:not([disabled]):not(.disabled).active, -.show > .btn-outline-primary.dropdown-toggle { - color: #212529; - background-color: #007bff; - border-color: #007bff; - -webkit-box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.5); - box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.5); -} - -.btn-outline-secondary { - color: #868e96; - background-color: transparent; - background-image: none; - border-color: #868e96; -} - -.btn-outline-secondary:hover { - color: #fff; - background-color: #868e96; - border-color: #868e96; -} - -.btn-outline-secondary:focus, .btn-outline-secondary.focus { - -webkit-box-shadow: 0 0 0 0.2rem rgba(134, 142, 150, 0.5); - box-shadow: 0 0 0 0.2rem rgba(134, 142, 150, 0.5); -} - -.btn-outline-secondary.disabled, .btn-outline-secondary:disabled { - color: #868e96; - background-color: transparent; -} - -.btn-outline-secondary:not([disabled]):not(.disabled):active, .btn-outline-secondary:not([disabled]):not(.disabled).active, -.show > .btn-outline-secondary.dropdown-toggle { - color: #212529; - background-color: #868e96; - border-color: #868e96; - -webkit-box-shadow: 0 0 0 0.2rem rgba(134, 142, 150, 0.5); - box-shadow: 0 0 0 0.2rem rgba(134, 142, 150, 0.5); -} - -.btn-outline-success { - color: #28a745; - background-color: transparent; - background-image: none; - border-color: #28a745; -} - -.btn-outline-success:hover { - color: #fff; - background-color: #28a745; - border-color: #28a745; -} - -.btn-outline-success:focus, .btn-outline-success.focus { - -webkit-box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.5); - box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.5); -} - -.btn-outline-success.disabled, .btn-outline-success:disabled { - color: #28a745; - background-color: transparent; -} - -.btn-outline-success:not([disabled]):not(.disabled):active, .btn-outline-success:not([disabled]):not(.disabled).active, -.show > .btn-outline-success.dropdown-toggle { - color: #212529; - background-color: #28a745; - border-color: #28a745; - -webkit-box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.5); - box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.5); -} - -.btn-outline-info { - color: #17a2b8; - background-color: transparent; - background-image: none; - border-color: #17a2b8; -} - -.btn-outline-info:hover { - color: #fff; - background-color: #17a2b8; - border-color: #17a2b8; -} - -.btn-outline-info:focus, .btn-outline-info.focus { - -webkit-box-shadow: 0 0 0 0.2rem rgba(23, 162, 184, 0.5); - box-shadow: 0 0 0 0.2rem rgba(23, 162, 184, 0.5); -} - -.btn-outline-info.disabled, .btn-outline-info:disabled { - color: #17a2b8; - background-color: transparent; -} - -.btn-outline-info:not([disabled]):not(.disabled):active, .btn-outline-info:not([disabled]):not(.disabled).active, -.show > .btn-outline-info.dropdown-toggle { - color: #212529; - background-color: #17a2b8; - border-color: #17a2b8; - -webkit-box-shadow: 0 0 0 0.2rem rgba(23, 162, 184, 0.5); - box-shadow: 0 0 0 0.2rem rgba(23, 162, 184, 0.5); -} - -.btn-outline-warning { - color: #ffc107; - background-color: transparent; - background-image: none; - border-color: #ffc107; -} - -.btn-outline-warning:hover { - color: #212529; - background-color: #ffc107; - border-color: #ffc107; -} - -.btn-outline-warning:focus, .btn-outline-warning.focus { - -webkit-box-shadow: 0 0 0 0.2rem rgba(255, 193, 7, 0.5); - box-shadow: 0 0 0 0.2rem rgba(255, 193, 7, 0.5); -} - -.btn-outline-warning.disabled, .btn-outline-warning:disabled { - color: #ffc107; - background-color: transparent; -} - -.btn-outline-warning:not([disabled]):not(.disabled):active, .btn-outline-warning:not([disabled]):not(.disabled).active, -.show > .btn-outline-warning.dropdown-toggle { - color: #212529; - background-color: #ffc107; - border-color: #ffc107; - -webkit-box-shadow: 0 0 0 0.2rem rgba(255, 193, 7, 0.5); - box-shadow: 0 0 0 0.2rem rgba(255, 193, 7, 0.5); -} - -.btn-outline-danger { - color: #dc3545; - background-color: transparent; - background-image: none; - border-color: #dc3545; -} - -.btn-outline-danger:hover { - color: #fff; - background-color: #dc3545; - border-color: #dc3545; -} - -.btn-outline-danger:focus, .btn-outline-danger.focus { - -webkit-box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.5); - box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.5); -} - -.btn-outline-danger.disabled, .btn-outline-danger:disabled { - color: #dc3545; - background-color: transparent; -} - -.btn-outline-danger:not([disabled]):not(.disabled):active, .btn-outline-danger:not([disabled]):not(.disabled).active, -.show > .btn-outline-danger.dropdown-toggle { - color: #212529; - background-color: #dc3545; - border-color: #dc3545; - -webkit-box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.5); - box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.5); -} - -.btn-outline-light { - color: #f8f9fa; - background-color: transparent; - background-image: none; - border-color: #f8f9fa; -} - -.btn-outline-light:hover { - color: #212529; - background-color: #f8f9fa; - border-color: #f8f9fa; -} - -.btn-outline-light:focus, .btn-outline-light.focus { - -webkit-box-shadow: 0 0 0 0.2rem rgba(248, 249, 250, 0.5); - box-shadow: 0 0 0 0.2rem rgba(248, 249, 250, 0.5); -} - -.btn-outline-light.disabled, .btn-outline-light:disabled { - color: #f8f9fa; - background-color: transparent; -} - -.btn-outline-light:not([disabled]):not(.disabled):active, .btn-outline-light:not([disabled]):not(.disabled).active, -.show > .btn-outline-light.dropdown-toggle { - color: #fff; - background-color: #f8f9fa; - border-color: #f8f9fa; - -webkit-box-shadow: 0 0 0 0.2rem rgba(248, 249, 250, 0.5); - box-shadow: 0 0 0 0.2rem rgba(248, 249, 250, 0.5); -} - -.btn-outline-dark { - color: #343a40; - background-color: transparent; - background-image: none; - border-color: #343a40; -} - -.btn-outline-dark:hover { - color: #fff; - background-color: #343a40; - border-color: #343a40; -} - -.btn-outline-dark:focus, .btn-outline-dark.focus { - -webkit-box-shadow: 0 0 0 0.2rem rgba(52, 58, 64, 0.5); - box-shadow: 0 0 0 0.2rem rgba(52, 58, 64, 0.5); -} - -.btn-outline-dark.disabled, .btn-outline-dark:disabled { - color: #343a40; - background-color: transparent; -} - -.btn-outline-dark:not([disabled]):not(.disabled):active, .btn-outline-dark:not([disabled]):not(.disabled).active, -.show > .btn-outline-dark.dropdown-toggle { - color: #212529; - background-color: #343a40; - border-color: #343a40; - -webkit-box-shadow: 0 0 0 0.2rem rgba(52, 58, 64, 0.5); - box-shadow: 0 0 0 0.2rem rgba(52, 58, 64, 0.5); -} - -.btn-link { - font-weight: 400; - color: #007bff; - background-color: transparent; -} - -.btn-link:hover { - color: #0056b3; - text-decoration: underline; - background-color: transparent; - border-color: transparent; -} - -.btn-link:focus, .btn-link.focus { - text-decoration: underline; - border-color: transparent; - -webkit-box-shadow: none; - box-shadow: none; -} - -.btn-link:disabled, .btn-link.disabled { - color: #868e96; -} - -.btn-lg, .btn-group-lg > .btn, .btn-group-lg > .member-runner-link { - padding: 0.5rem 1rem; - font-size: 1.25rem; - line-height: 1.5; - border-radius: 0.3rem; -} - -.btn-sm, .member-runner-link, .btn-group-sm > .btn { - padding: 0.25rem 0.5rem; - font-size: 0.875rem; - line-height: 1.5; - border-radius: 0.2rem; -} - -.btn-block { - display: block; - width: 100%; -} - -.btn-block + .btn-block { - margin-top: 0.5rem; -} - -input[type=submit].btn-block, -input[type=reset].btn-block, -input[type=button].btn-block { - width: 100%; -} - -.fade { - opacity: 0; - -webkit-transition: opacity 0.15s linear; - transition: opacity 0.15s linear; -} - -.fade.show { - opacity: 1; -} - -.collapse { - display: none; -} - -.collapse.show { - display: block; -} - -tr.collapse.show { - display: table-row; -} - -tbody.collapse.show { - display: table-row-group; -} - -.collapsing { - position: relative; - height: 0; - overflow: hidden; - -webkit-transition: height 0.35s ease; - transition: height 0.35s ease; -} - -.dropup, -.dropdown { - position: relative; -} - -.dropdown-toggle::after { - display: inline-block; - width: 0; - height: 0; - margin-left: 0.255em; - vertical-align: 0.255em; - content: ""; - border-top: 0.3em solid; - border-right: 0.3em solid transparent; - border-bottom: 0; - border-left: 0.3em solid transparent; -} - -.dropdown-toggle:empty::after { - margin-left: 0; -} - -.dropdown-menu { - position: absolute; - top: 100%; - left: 0; - z-index: 1000; - display: none; - float: left; - min-width: 10rem; - padding: 0.5rem 0; - margin: 0.125rem 0 0; - font-size: 1rem; - color: #212529; - text-align: left; - list-style: none; - background-color: #fff; - background-clip: padding-box; - border: 1px solid rgba(0, 0, 0, 0.15); - border-radius: 0.25rem; -} - -.dropup .dropdown-menu { - margin-top: 0; - margin-bottom: 0.125rem; -} - -.dropup .dropdown-toggle::after { - display: inline-block; - width: 0; - height: 0; - margin-left: 0.255em; - vertical-align: 0.255em; - content: ""; - border-top: 0; - border-right: 0.3em solid transparent; - border-bottom: 0.3em solid; - border-left: 0.3em solid transparent; -} - -.dropup .dropdown-toggle:empty::after { - margin-left: 0; -} - -.dropright .dropdown-menu { - margin-top: 0; - margin-left: 0.125rem; -} - -.dropright .dropdown-toggle::after { - display: inline-block; - width: 0; - height: 0; - margin-left: 0.255em; - vertical-align: 0.255em; - content: ""; - border-top: 0.3em solid transparent; - border-bottom: 0.3em solid transparent; - border-left: 0.3em solid; -} - -.dropright .dropdown-toggle:empty::after { - margin-left: 0; -} - -.dropright .dropdown-toggle::after { - vertical-align: 0; -} - -.dropleft .dropdown-menu { - margin-top: 0; - margin-right: 0.125rem; -} - -.dropleft .dropdown-toggle::after { - display: inline-block; - width: 0; - height: 0; - margin-left: 0.255em; - vertical-align: 0.255em; - content: ""; -} - -.dropleft .dropdown-toggle::after { - display: none; -} - -.dropleft .dropdown-toggle::before { - display: inline-block; - width: 0; - height: 0; - margin-right: 0.255em; - vertical-align: 0.255em; - content: ""; - border-top: 0.3em solid transparent; - border-right: 0.3em solid; - border-bottom: 0.3em solid transparent; -} - -.dropleft .dropdown-toggle:empty::after { - margin-left: 0; -} - -.dropleft .dropdown-toggle::before { - vertical-align: 0; -} - -.dropdown-divider { - height: 0; - margin: 0.5rem 0; - overflow: hidden; - border-top: 1px solid #e9ecef; -} - -.dropdown-item { - display: block; - width: 100%; - padding: 0.25rem 1.5rem; - clear: both; - font-weight: 400; - color: #212529; - text-align: inherit; - white-space: nowrap; - background-color: transparent; - border: 0; -} - -.dropdown-item:focus, .dropdown-item:hover { - color: #16181b; - text-decoration: none; - background-color: #f8f9fa; -} - -.dropdown-item.active, .dropdown-item:active { - color: #fff; - text-decoration: none; - background-color: #007bff; -} - -.dropdown-item.disabled, .dropdown-item:disabled { - color: #868e96; - background-color: transparent; -} - -.dropdown-menu.show { - display: block; -} - -.dropdown-header { - display: block; - padding: 0.5rem 1.5rem; - margin-bottom: 0; - font-size: 0.875rem; - color: #868e96; - white-space: nowrap; -} - -.btn-group, -.btn-group-vertical { - position: relative; - display: -ms-inline-flexbox; - display: -webkit-inline-box; - display: inline-flex; - vertical-align: middle; -} - -.btn-group > .btn, .btn-group > .member-runner-link, -.btn-group-vertical > .btn, -.btn-group-vertical > .member-runner-link { - position: relative; - -ms-flex: 0 1 auto; - -webkit-box-flex: 0; - flex: 0 1 auto; -} - -.btn-group > .btn:hover, .btn-group > .member-runner-link:hover, -.btn-group-vertical > .btn:hover, -.btn-group-vertical > .member-runner-link:hover { - z-index: 1; -} - -.btn-group > .btn:focus, .btn-group > .member-runner-link:focus, .btn-group > .btn:active, .btn-group > .member-runner-link:active, .btn-group > .btn.active, .btn-group > .active.member-runner-link, -.btn-group-vertical > .btn:focus, -.btn-group-vertical > .member-runner-link:focus, -.btn-group-vertical > .btn:active, -.btn-group-vertical > .member-runner-link:active, -.btn-group-vertical > .btn.active, -.btn-group-vertical > .active.member-runner-link { - z-index: 1; -} - -.btn-group .btn + .btn, .btn-group .member-runner-link + .btn, .btn-group .btn + .member-runner-link, .btn-group .member-runner-link + .member-runner-link, -.btn-group .btn + .btn-group, -.btn-group .member-runner-link + .btn-group, -.btn-group .btn-group + .btn, -.btn-group .btn-group + .member-runner-link, -.btn-group .btn-group + .btn-group, -.btn-group-vertical .btn + .btn, -.btn-group-vertical .member-runner-link + .btn, -.btn-group-vertical .btn + .member-runner-link, -.btn-group-vertical .member-runner-link + .member-runner-link, -.btn-group-vertical .btn + .btn-group, -.btn-group-vertical .member-runner-link + .btn-group, -.btn-group-vertical .btn-group + .btn, -.btn-group-vertical .btn-group + .member-runner-link, -.btn-group-vertical .btn-group + .btn-group { - margin-left: -1px; -} - -.btn-toolbar { - display: -ms-flexbox; - display: -webkit-box; - display: flex; - -ms-flex-wrap: wrap; - flex-wrap: wrap; - -ms-flex-pack: start; - -webkit-box-pack: start; - justify-content: flex-start; -} - -.btn-toolbar .input-group { - width: auto; -} - -.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle), .btn-group > .member-runner-link:not(:first-child):not(:last-child):not(.dropdown-toggle) { - border-radius: 0; -} - -.btn-group > .btn:first-child, .btn-group > .member-runner-link:first-child { - margin-left: 0; -} - -.btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle), .btn-group > .member-runner-link:first-child:not(:last-child):not(.dropdown-toggle) { - border-top-right-radius: 0; - border-bottom-right-radius: 0; -} - -.btn-group > .btn:last-child:not(:first-child), .btn-group > .member-runner-link:last-child:not(:first-child), -.btn-group > .dropdown-toggle:not(:first-child) { - border-top-left-radius: 0; - border-bottom-left-radius: 0; -} - -.btn-group > .btn-group { - float: left; -} - -.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn, .btn-group > .btn-group:not(:first-child):not(:last-child) > .member-runner-link { - border-radius: 0; -} - -.btn-group > .btn-group:first-child:not(:last-child) > .btn:last-child, .btn-group > .btn-group:first-child:not(:last-child) > .member-runner-link:last-child, -.btn-group > .btn-group:first-child:not(:last-child) > .dropdown-toggle { - border-top-right-radius: 0; - border-bottom-right-radius: 0; -} - -.btn-group > .btn-group:last-child:not(:first-child) > .btn:first-child, .btn-group > .btn-group:last-child:not(:first-child) > .member-runner-link:first-child { - border-top-left-radius: 0; - border-bottom-left-radius: 0; -} - -.dropdown-toggle-split { - padding-right: 0.5625rem; - padding-left: 0.5625rem; -} - -.dropdown-toggle-split::after { - margin-left: 0; -} - -.btn-sm + .dropdown-toggle-split, .member-runner-link + .dropdown-toggle-split, .btn-group-sm > .btn + .dropdown-toggle-split, .btn-group-sm > .member-runner-link + .dropdown-toggle-split { - padding-right: 0.375rem; - padding-left: 0.375rem; -} - -.btn-lg + .dropdown-toggle-split, .btn-group-lg > .btn + .dropdown-toggle-split, .btn-group-lg > .member-runner-link + .dropdown-toggle-split { - padding-right: 0.75rem; - padding-left: 0.75rem; -} - -.btn-group-vertical { - -ms-flex-direction: column; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - flex-direction: column; - -ms-flex-align: start; - -webkit-box-align: start; - align-items: flex-start; - -ms-flex-pack: center; - -webkit-box-pack: center; - justify-content: center; -} - -.btn-group-vertical .btn, .btn-group-vertical .member-runner-link, -.btn-group-vertical .btn-group { - width: 100%; -} - -.btn-group-vertical > .btn + .btn, .btn-group-vertical > .member-runner-link + .btn, .btn-group-vertical > .btn + .member-runner-link, .btn-group-vertical > .member-runner-link + .member-runner-link, -.btn-group-vertical > .btn + .btn-group, -.btn-group-vertical > .member-runner-link + .btn-group, -.btn-group-vertical > .btn-group + .btn, -.btn-group-vertical > .btn-group + .member-runner-link, -.btn-group-vertical > .btn-group + .btn-group { - margin-top: -1px; - margin-left: 0; -} - -.btn-group-vertical > .btn:not(:first-child):not(:last-child), .btn-group-vertical > .member-runner-link:not(:first-child):not(:last-child) { - border-radius: 0; -} - -.btn-group-vertical > .btn:first-child:not(:last-child), .btn-group-vertical > .member-runner-link:first-child:not(:last-child) { - border-bottom-right-radius: 0; - border-bottom-left-radius: 0; -} - -.btn-group-vertical > .btn:last-child:not(:first-child), .btn-group-vertical > .member-runner-link:last-child:not(:first-child) { - border-top-left-radius: 0; - border-top-right-radius: 0; -} - -.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn, .btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .member-runner-link { - border-radius: 0; -} - -.btn-group-vertical > .btn-group:first-child:not(:last-child) > .btn:last-child, .btn-group-vertical > .btn-group:first-child:not(:last-child) > .member-runner-link:last-child, -.btn-group-vertical > .btn-group:first-child:not(:last-child) > .dropdown-toggle { - border-bottom-right-radius: 0; - border-bottom-left-radius: 0; -} - -.btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child, .btn-group-vertical > .btn-group:last-child:not(:first-child) > .member-runner-link:first-child { - border-top-left-radius: 0; - border-top-right-radius: 0; -} - -.btn-group-toggle > .btn, .btn-group-toggle > .member-runner-link, -.btn-group-toggle > .btn-group > .btn, -.btn-group-toggle > .btn-group > .member-runner-link { - margin-bottom: 0; -} - -.btn-group-toggle > .btn input[type=radio], .btn-group-toggle > .member-runner-link input[type=radio], -.btn-group-toggle > .btn input[type=checkbox], -.btn-group-toggle > .member-runner-link input[type=checkbox], -.btn-group-toggle > .btn-group > .btn input[type=radio], -.btn-group-toggle > .btn-group > .btn input[type=checkbox] { - position: absolute; - clip: rect(0, 0, 0, 0); - pointer-events: none; -} - -.input-group { - position: relative; - display: -ms-flexbox; - display: -webkit-box; - display: flex; - -ms-flex-align: stretch; - -webkit-box-align: stretch; - align-items: stretch; - width: 100%; -} - -.input-group .form-control { - position: relative; - z-index: 1; - -ms-flex: 1 1 auto; - -webkit-box-flex: 1; - flex: 1 1 auto; - width: 1%; - margin-bottom: 0; -} - -.input-group .form-control:focus, .input-group .form-control:active, .input-group .form-control:hover { - z-index: 2; -} - -.input-group-addon, -.input-group-btn, -.input-group .form-control, -.input-group .custom-select, -.input-group .custom-file { - display: -ms-flexbox; - display: -webkit-box; - display: flex; - -ms-flex-align: center; - -webkit-box-align: center; - align-items: center; -} - -.input-group-addon:not(:first-child):not(:last-child), -.input-group-btn:not(:first-child):not(:last-child), -.input-group .form-control:not(:first-child):not(:last-child), -.input-group .custom-select:not(:first-child):not(:last-child), -.input-group .custom-file:not(:first-child):not(:last-child) { - border-radius: 0; -} - -.input-group .custom-file { - display: -ms-flexbox; - display: -webkit-box; - display: flex; - -ms-flex-align: center; - -webkit-box-align: center; - align-items: center; -} - -.input-group .custom-select, -.input-group .custom-file { - width: 100%; -} - -.input-group-addon, -.input-group-btn { - white-space: nowrap; -} - -.input-group-addon { - padding: 0.375rem 0.75rem; - margin-bottom: 0; - font-size: 1rem; - font-weight: 400; - line-height: 1.5; - color: #495057; - text-align: center; - background-color: #e9ecef; - border: 1px solid #ced4da; - border-radius: 0.25rem; -} - -.input-group-addon.form-control-sm, -.input-group-sm > .input-group-addon, -.input-group-sm > .input-group-btn > .input-group-addon.btn, -.input-group-sm > .input-group-btn > .input-group-addon.member-runner-link { - padding: 0.25rem 0.5rem; - font-size: 0.875rem; - border-radius: 0.2rem; -} - -.input-group-addon.form-control-lg, -.input-group-lg > .input-group-addon, -.input-group-lg > .input-group-btn > .input-group-addon.btn, -.input-group-lg > .input-group-btn > .input-group-addon.member-runner-link { - padding: 0.5rem 1rem; - font-size: 1.25rem; - border-radius: 0.3rem; -} - -.input-group-addon input[type=radio], -.input-group-addon input[type=checkbox] { - margin-top: 0; -} - -.input-group .form-control:not(:last-child), -.input-group .custom-select:not(:last-child), -.input-group .custom-file:not(:last-child) .custom-file-control::before, -.input-group-addon:not(:last-child), -.input-group-btn:not(:last-child) > .btn, -.input-group-btn:not(:last-child) > .member-runner-link, -.input-group-btn:not(:last-child) > .btn-group > .btn, -.input-group-btn:not(:last-child) > .btn-group > .member-runner-link, -.input-group-btn:not(:last-child) > .dropdown-toggle, -.input-group-btn:not(:first-child) > .btn:not(:last-child):not(.dropdown-toggle), -.input-group-btn:not(:first-child) > .member-runner-link:not(:last-child):not(.dropdown-toggle), -.input-group-btn:not(:first-child) > .btn-group:not(:last-child) > .btn, -.input-group-btn:not(:first-child) > .btn-group:not(:last-child) > .member-runner-link { - border-top-right-radius: 0; - border-bottom-right-radius: 0; -} - -.input-group-addon:not(:last-child) { - border-right: 0; -} - -.input-group .form-control:not(:first-child), -.input-group .custom-select:not(:first-child), -.input-group .custom-file:not(:first-child) .custom-file-control, -.input-group-addon:not(:first-child), -.input-group-btn:not(:first-child) > .btn, -.input-group-btn:not(:first-child) > .member-runner-link, -.input-group-btn:not(:first-child) > .btn-group > .btn, -.input-group-btn:not(:first-child) > .btn-group > .member-runner-link, -.input-group-btn:not(:first-child) > .dropdown-toggle, -.input-group-btn:not(:last-child) > .btn:not(:first-child), -.input-group-btn:not(:last-child) > .member-runner-link:not(:first-child), -.input-group-btn:not(:last-child) > .btn-group:not(:first-child) > .btn, -.input-group-btn:not(:last-child) > .btn-group:not(:first-child) > .member-runner-link { - border-top-left-radius: 0; - border-bottom-left-radius: 0; -} - -.form-control + .input-group-addon:not(:first-child), -.custom-select + .input-group-addon:not(:first-child), -.custom-file + .input-group-addon:not(:first-child) { - border-left: 0; -} - -.input-group-btn { - position: relative; - -ms-flex-align: stretch; - -webkit-box-align: stretch; - align-items: stretch; - font-size: 0; - white-space: nowrap; -} - -.input-group-btn > .btn, .input-group-btn > .member-runner-link { - position: relative; -} - -.input-group-btn > .btn + .btn, .input-group-btn > .member-runner-link + .btn, .input-group-btn > .btn + .member-runner-link, .input-group-btn > .member-runner-link + .member-runner-link { - margin-left: -1px; -} - -.input-group-btn > .btn:focus, .input-group-btn > .member-runner-link:focus, .input-group-btn > .btn:active, .input-group-btn > .member-runner-link:active, .input-group-btn > .btn:hover, .input-group-btn > .member-runner-link:hover { - z-index: 2; -} - -.input-group-btn:first-child > .btn + .btn, .input-group-btn:first-child > .member-runner-link + .btn, .input-group-btn:first-child > .btn + .member-runner-link, .input-group-btn:first-child > .member-runner-link + .member-runner-link { - margin-left: 0; -} - -.input-group-btn:not(:last-child) > .btn, .input-group-btn:not(:last-child) > .member-runner-link, -.input-group-btn:not(:last-child) > .btn-group { - margin-right: -1px; -} - -.input-group-btn:not(:first-child) > .btn, .input-group-btn:not(:first-child) > .member-runner-link, -.input-group-btn:not(:first-child) > .btn-group { - z-index: 1; - margin-left: 0; -} - -.input-group-btn:not(:first-child) > .btn:first-child, .input-group-btn:not(:first-child) > .member-runner-link:first-child, -.input-group-btn:not(:first-child) > .btn-group:first-child { - margin-left: -1px; -} - -.input-group-btn:not(:first-child) > .btn:focus, .input-group-btn:not(:first-child) > .member-runner-link:focus, .input-group-btn:not(:first-child) > .btn:active, .input-group-btn:not(:first-child) > .member-runner-link:active, .input-group-btn:not(:first-child) > .btn:hover, .input-group-btn:not(:first-child) > .member-runner-link:hover, -.input-group-btn:not(:first-child) > .btn-group:focus, -.input-group-btn:not(:first-child) > .btn-group:active, -.input-group-btn:not(:first-child) > .btn-group:hover { - z-index: 2; -} - -.custom-control { - position: relative; - display: -ms-inline-flexbox; - display: -webkit-inline-box; - display: inline-flex; - min-height: 1.5rem; - padding-left: 1.5rem; - margin-right: 1rem; -} - -.custom-control-input { - position: absolute; - z-index: -1; - opacity: 0; -} - -.custom-control-input:checked ~ .custom-control-indicator { - color: #fff; - background-color: #007bff; -} - -.custom-control-input:focus ~ .custom-control-indicator { - -webkit-box-shadow: 0 0 0 1px #fff, 0 0 0 0.2rem rgba(0, 123, 255, 0.25); - box-shadow: 0 0 0 1px #fff, 0 0 0 0.2rem rgba(0, 123, 255, 0.25); -} - -.custom-control-input:active ~ .custom-control-indicator { - color: #fff; - background-color: #b3d7ff; -} - -.custom-control-input:disabled ~ .custom-control-indicator { - background-color: #e9ecef; -} - -.custom-control-input:disabled ~ .custom-control-description { - color: #868e96; -} - -.custom-control-indicator { - position: absolute; - top: 0.25rem; - left: 0; - display: block; - width: 1rem; - height: 1rem; - pointer-events: none; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; - background-color: #dee2e6; -} - -.custom-control-indicator::before { - display: block; - width: 1rem; - height: 1rem; - content: ""; - background-repeat: no-repeat; - background-position: center center; - background-size: 50% 50%; -} - -.custom-checkbox .custom-control-indicator { - border-radius: 0.25rem; -} - -.custom-checkbox .custom-control-input:checked ~ .custom-control-indicator { - background-color: #007bff; -} - -.custom-checkbox .custom-control-input:checked ~ .custom-control-indicator::before { - background-image: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26 2.974 7.25 8 2.193z'/%3E%3C/svg%3E"); -} - -.custom-checkbox .custom-control-input:indeterminate ~ .custom-control-indicator { - background-color: #007bff; -} - -.custom-checkbox .custom-control-input:indeterminate ~ .custom-control-indicator::before { - background-image: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 4'%3E%3Cpath stroke='%23fff' d='M0 2h4'/%3E%3C/svg%3E"); -} - -.custom-radio .custom-control-indicator { - border-radius: 50%; -} - -.custom-radio .custom-control-input:checked ~ .custom-control-indicator { - background-color: #007bff; -} - -.custom-radio .custom-control-input:checked ~ .custom-control-indicator::before { - background-image: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3E%3Ccircle r='3' fill='%23fff'/%3E%3C/svg%3E"); -} - -.custom-controls-stacked { - display: -ms-flexbox; - display: -webkit-box; - display: flex; - -ms-flex-direction: column; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - flex-direction: column; -} - -.custom-controls-stacked .custom-control { - margin-bottom: 0.25rem; -} - -.custom-controls-stacked .custom-control + .custom-control { - margin-left: 0; -} - -.custom-select { - display: inline-block; - max-width: 100%; - height: calc(2.25rem + 2px); - padding: 0.375rem 1.75rem 0.375rem 0.75rem; - line-height: 1.5; - color: #495057; - vertical-align: middle; - background: #fff url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3E%3Cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3E%3C/svg%3E") no-repeat right 0.75rem center; - background-size: 8px 10px; - border: 1px solid #ced4da; - border-radius: 0.25rem; - -webkit-appearance: none; - -moz-appearance: none; - appearance: none; -} - -.custom-select:focus { - border-color: #80bdff; - outline: 0; - -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.075), 0 0 0 0.2rem rgba(0, 123, 255, 0.25); - box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.075), 0 0 0 0.2rem rgba(0, 123, 255, 0.25); -} - -.custom-select:focus::-ms-value { - color: #495057; - background-color: #fff; -} - -.custom-select[multiple], .custom-select[size]:not([size="1"]) { - height: auto; - padding-right: 0.75rem; - background-image: none; -} - -.custom-select:disabled { - color: #868e96; - background-color: #e9ecef; -} - -.custom-select::-ms-expand { - opacity: 0; -} - -.custom-select-sm { - height: calc(1.8125rem + 2px); - padding-top: 0.375rem; - padding-bottom: 0.375rem; - font-size: 75%; -} - -.custom-select-lg { - height: calc(2.875rem + 2px); - padding-top: 0.375rem; - padding-bottom: 0.375rem; - font-size: 125%; -} - -.custom-file { - position: relative; - display: inline-block; - max-width: 100%; - height: calc(2.25rem + 2px); - margin-bottom: 0; -} - -.custom-file-input { - min-width: 14rem; - max-width: 100%; - height: calc(2.25rem + 2px); - margin: 0; - opacity: 0; -} - -.custom-file-input:focus ~ .custom-file-control { - border-color: #80bdff; - -webkit-box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25); - box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25); -} - -.custom-file-input:focus ~ .custom-file-control::before { - border-color: #80bdff; -} - -.custom-file-control { - position: absolute; - top: 0; - right: 0; - left: 0; - height: calc(2.25rem + 2px); - padding: 0.375rem 0.75rem; - line-height: 1.5; - color: #495057; - pointer-events: none; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; - background-color: #fff; - border: 1px solid #ced4da; - border-radius: 0.25rem; -} - -.custom-file-control:lang(en):empty::after { - content: "Choose file..."; -} - -.custom-file-control::before { - position: absolute; - top: -1px; - right: -1px; - bottom: -1px; - z-index: 1; - display: block; - height: calc(2.25rem + 2px); - padding: 0.375rem 0.75rem; - line-height: 1.5; - color: #495057; - background-color: #e9ecef; - border: 1px solid #ced4da; - border-radius: 0 0.25rem 0.25rem 0; -} - -.custom-file-control:lang(en)::before { - content: "Browse"; -} - -.nav { - display: -ms-flexbox; - display: -webkit-box; - display: flex; - -ms-flex-wrap: wrap; - flex-wrap: wrap; - padding-left: 0; - margin-bottom: 0; - list-style: none; -} - -.nav-link { - display: block; - padding: 0.5rem 1rem; -} - -.nav-link:focus, .nav-link:hover { - text-decoration: none; -} - -.nav-link.disabled { - color: #868e96; -} - -.nav-tabs { - border-bottom: 1px solid #dee2e6; -} - -.nav-tabs .nav-item { - margin-bottom: -1px; -} - -.nav-tabs .nav-link { - border: 1px solid transparent; - border-top-left-radius: 0.25rem; - border-top-right-radius: 0.25rem; -} - -.nav-tabs .nav-link:focus, .nav-tabs .nav-link:hover { - border-color: #e9ecef #e9ecef #dee2e6; -} - -.nav-tabs .nav-link.disabled { - color: #868e96; - background-color: transparent; - border-color: transparent; -} - -.nav-tabs .nav-link.active, -.nav-tabs .nav-item.show .nav-link { - color: #495057; - background-color: #fff; - border-color: #dee2e6 #dee2e6 #fff; -} - -.nav-tabs .dropdown-menu { - margin-top: -1px; - border-top-left-radius: 0; - border-top-right-radius: 0; -} - -.nav-pills .nav-link { - border-radius: 0.25rem; -} - -.nav-pills .nav-link.active, -.nav-pills .show > .nav-link { - color: #fff; - background-color: #007bff; -} - -.nav-fill .nav-item { - -ms-flex: 1 1 auto; - -webkit-box-flex: 1; - flex: 1 1 auto; - text-align: center; -} - -.nav-justified .nav-item { - -ms-flex-preferred-size: 0; - flex-basis: 0; - -ms-flex-positive: 1; - -webkit-box-flex: 1; - flex-grow: 1; - text-align: center; -} - -.tab-content > .tab-pane { - display: none; -} - -.tab-content > .active { - display: block; -} - -.navbar { - position: relative; - display: -ms-flexbox; - display: -webkit-box; - display: flex; - -ms-flex-wrap: wrap; - flex-wrap: wrap; - -ms-flex-align: center; - -webkit-box-align: center; - align-items: center; - -ms-flex-pack: justify; - -webkit-box-pack: justify; - justify-content: space-between; - padding: 0.5rem 1rem; -} - -.navbar > .container, -.navbar > .container-fluid { - display: -ms-flexbox; - display: -webkit-box; - display: flex; - -ms-flex-wrap: wrap; - flex-wrap: wrap; - -ms-flex-align: center; - -webkit-box-align: center; - align-items: center; - -ms-flex-pack: justify; - -webkit-box-pack: justify; - justify-content: space-between; -} - -.navbar-brand { - display: inline-block; - padding-top: 0.3125rem; - padding-bottom: 0.3125rem; - margin-right: 1rem; - font-size: 1.25rem; - line-height: inherit; - white-space: nowrap; -} - -.navbar-brand:focus, .navbar-brand:hover { - text-decoration: none; -} - -.navbar-nav { - display: -ms-flexbox; - display: -webkit-box; - display: flex; - -ms-flex-direction: column; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - flex-direction: column; - padding-left: 0; - margin-bottom: 0; - list-style: none; -} - -.navbar-nav .nav-link { - padding-right: 0; - padding-left: 0; -} - -.navbar-nav .dropdown-menu { - position: static; - float: none; -} - -.navbar-text { - display: inline-block; - padding-top: 0.5rem; - padding-bottom: 0.5rem; -} - -.navbar-collapse { - -ms-flex-preferred-size: 100%; - flex-basis: 100%; - -ms-flex-positive: 1; - -webkit-box-flex: 1; - flex-grow: 1; - -ms-flex-align: center; - -webkit-box-align: center; - align-items: center; -} - -.navbar-toggler { - padding: 0.25rem 0.75rem; - font-size: 1.25rem; - line-height: 1; - background-color: transparent; - border: 1px solid transparent; - border-radius: 0.25rem; -} - -.navbar-toggler:focus, .navbar-toggler:hover { - text-decoration: none; -} - -.navbar-toggler-icon { - display: inline-block; - width: 1.5em; - height: 1.5em; - vertical-align: middle; - content: ""; - background: no-repeat center center; - background-size: 100% 100%; -} - -@media (max-width: 575.99px) { - .navbar-expand-sm > .container, -.navbar-expand-sm > .container-fluid { - padding-right: 0; - padding-left: 0; - } -} -@media (min-width: 576px) { - .navbar-expand-sm { - -ms-flex-flow: row nowrap; - -webkit-box-orient: horizontal; - -webkit-box-direction: normal; - flex-flow: row nowrap; - -ms-flex-pack: start; - -webkit-box-pack: start; - justify-content: flex-start; - } - .navbar-expand-sm .navbar-nav { - -ms-flex-direction: row; - -webkit-box-orient: horizontal; - -webkit-box-direction: normal; - flex-direction: row; - } - .navbar-expand-sm .navbar-nav .dropdown-menu { - position: absolute; - } - .navbar-expand-sm .navbar-nav .dropdown-menu-right { - right: 0; - left: auto; - } - .navbar-expand-sm .navbar-nav .nav-link { - padding-right: 0.5rem; - padding-left: 0.5rem; - } - .navbar-expand-sm > .container, -.navbar-expand-sm > .container-fluid { - -ms-flex-wrap: nowrap; - flex-wrap: nowrap; - } - .navbar-expand-sm .navbar-collapse { - display: -ms-flexbox !important; - display: -webkit-box !important; - display: flex !important; - -ms-flex-preferred-size: auto; - flex-basis: auto; - } - .navbar-expand-sm .navbar-toggler { - display: none; - } - .navbar-expand-sm .dropup .dropdown-menu { - top: auto; - bottom: 100%; - } -} -@media (max-width: 767.99px) { - .navbar-expand-md > .container, -.navbar-expand-md > .container-fluid { - padding-right: 0; - padding-left: 0; - } -} -@media (min-width: 768px) { - .navbar-expand-md { - -ms-flex-flow: row nowrap; - -webkit-box-orient: horizontal; - -webkit-box-direction: normal; - flex-flow: row nowrap; - -ms-flex-pack: start; - -webkit-box-pack: start; - justify-content: flex-start; - } - .navbar-expand-md .navbar-nav { - -ms-flex-direction: row; - -webkit-box-orient: horizontal; - -webkit-box-direction: normal; - flex-direction: row; - } - .navbar-expand-md .navbar-nav .dropdown-menu { - position: absolute; - } - .navbar-expand-md .navbar-nav .dropdown-menu-right { - right: 0; - left: auto; - } - .navbar-expand-md .navbar-nav .nav-link { - padding-right: 0.5rem; - padding-left: 0.5rem; - } - .navbar-expand-md > .container, -.navbar-expand-md > .container-fluid { - -ms-flex-wrap: nowrap; - flex-wrap: nowrap; - } - .navbar-expand-md .navbar-collapse { - display: -ms-flexbox !important; - display: -webkit-box !important; - display: flex !important; - -ms-flex-preferred-size: auto; - flex-basis: auto; - } - .navbar-expand-md .navbar-toggler { - display: none; - } - .navbar-expand-md .dropup .dropdown-menu { - top: auto; - bottom: 100%; - } -} -@media (max-width: 991.99px) { - .navbar-expand-lg > .container, -.navbar-expand-lg > .container-fluid { - padding-right: 0; - padding-left: 0; - } -} -@media (min-width: 992px) { - .navbar-expand-lg { - -ms-flex-flow: row nowrap; - -webkit-box-orient: horizontal; - -webkit-box-direction: normal; - flex-flow: row nowrap; - -ms-flex-pack: start; - -webkit-box-pack: start; - justify-content: flex-start; - } - .navbar-expand-lg .navbar-nav { - -ms-flex-direction: row; - -webkit-box-orient: horizontal; - -webkit-box-direction: normal; - flex-direction: row; - } - .navbar-expand-lg .navbar-nav .dropdown-menu { - position: absolute; - } - .navbar-expand-lg .navbar-nav .dropdown-menu-right { - right: 0; - left: auto; - } - .navbar-expand-lg .navbar-nav .nav-link { - padding-right: 0.5rem; - padding-left: 0.5rem; - } - .navbar-expand-lg > .container, -.navbar-expand-lg > .container-fluid { - -ms-flex-wrap: nowrap; - flex-wrap: nowrap; - } - .navbar-expand-lg .navbar-collapse { - display: -ms-flexbox !important; - display: -webkit-box !important; - display: flex !important; - -ms-flex-preferred-size: auto; - flex-basis: auto; - } - .navbar-expand-lg .navbar-toggler { - display: none; - } - .navbar-expand-lg .dropup .dropdown-menu { - top: auto; - bottom: 100%; - } -} -@media (max-width: 1199.99px) { - .navbar-expand-xl > .container, -.navbar-expand-xl > .container-fluid { - padding-right: 0; - padding-left: 0; - } -} -@media (min-width: 1200px) { - .navbar-expand-xl { - -ms-flex-flow: row nowrap; - -webkit-box-orient: horizontal; - -webkit-box-direction: normal; - flex-flow: row nowrap; - -ms-flex-pack: start; - -webkit-box-pack: start; - justify-content: flex-start; - } - .navbar-expand-xl .navbar-nav { - -ms-flex-direction: row; - -webkit-box-orient: horizontal; - -webkit-box-direction: normal; - flex-direction: row; - } - .navbar-expand-xl .navbar-nav .dropdown-menu { - position: absolute; - } - .navbar-expand-xl .navbar-nav .dropdown-menu-right { - right: 0; - left: auto; - } - .navbar-expand-xl .navbar-nav .nav-link { - padding-right: 0.5rem; - padding-left: 0.5rem; - } - .navbar-expand-xl > .container, -.navbar-expand-xl > .container-fluid { - -ms-flex-wrap: nowrap; - flex-wrap: nowrap; - } - .navbar-expand-xl .navbar-collapse { - display: -ms-flexbox !important; - display: -webkit-box !important; - display: flex !important; - -ms-flex-preferred-size: auto; - flex-basis: auto; - } - .navbar-expand-xl .navbar-toggler { - display: none; - } - .navbar-expand-xl .dropup .dropdown-menu { - top: auto; - bottom: 100%; - } -} -.navbar-expand { - -ms-flex-flow: row nowrap; - -webkit-box-orient: horizontal; - -webkit-box-direction: normal; - flex-flow: row nowrap; - -ms-flex-pack: start; - -webkit-box-pack: start; - justify-content: flex-start; -} - -.navbar-expand > .container, -.navbar-expand > .container-fluid { - padding-right: 0; - padding-left: 0; -} - -.navbar-expand .navbar-nav { - -ms-flex-direction: row; - -webkit-box-orient: horizontal; - -webkit-box-direction: normal; - flex-direction: row; -} - -.navbar-expand .navbar-nav .dropdown-menu { - position: absolute; -} - -.navbar-expand .navbar-nav .dropdown-menu-right { - right: 0; - left: auto; -} - -.navbar-expand .navbar-nav .nav-link { - padding-right: 0.5rem; - padding-left: 0.5rem; -} - -.navbar-expand > .container, -.navbar-expand > .container-fluid { - -ms-flex-wrap: nowrap; - flex-wrap: nowrap; -} - -.navbar-expand .navbar-collapse { - display: -ms-flexbox !important; - display: -webkit-box !important; - display: flex !important; - -ms-flex-preferred-size: auto; - flex-basis: auto; -} - -.navbar-expand .navbar-toggler { - display: none; -} - -.navbar-expand .dropup .dropdown-menu { - top: auto; - bottom: 100%; -} - -.navbar-light .navbar-brand { - color: rgba(0, 0, 0, 0.9); -} - -.navbar-light .navbar-brand:focus, .navbar-light .navbar-brand:hover { - color: rgba(0, 0, 0, 0.9); -} - -.navbar-light .navbar-nav .nav-link { - color: rgba(0, 0, 0, 0.5); -} - -.navbar-light .navbar-nav .nav-link:focus, .navbar-light .navbar-nav .nav-link:hover { - color: rgba(0, 0, 0, 0.7); -} - -.navbar-light .navbar-nav .nav-link.disabled { - color: rgba(0, 0, 0, 0.3); -} - -.navbar-light .navbar-nav .show > .nav-link, -.navbar-light .navbar-nav .active > .nav-link, -.navbar-light .navbar-nav .nav-link.show, -.navbar-light .navbar-nav .nav-link.active { - color: rgba(0, 0, 0, 0.9); -} - -.navbar-light .navbar-toggler { - color: rgba(0, 0, 0, 0.5); - border-color: rgba(0, 0, 0, 0.1); -} - -.navbar-light .navbar-toggler-icon { - background-image: url("data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='rgba(0, 0, 0, 0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E"); -} - -.navbar-light .navbar-text { - color: rgba(0, 0, 0, 0.5); -} - -.navbar-light .navbar-text a { - color: rgba(0, 0, 0, 0.9); -} - -.navbar-light .navbar-text a:focus, .navbar-light .navbar-text a:hover { - color: rgba(0, 0, 0, 0.9); -} - -.navbar-dark .navbar-brand { - color: #fff; -} - -.navbar-dark .navbar-brand:focus, .navbar-dark .navbar-brand:hover { - color: #fff; -} - -.navbar-dark .navbar-nav .nav-link { - color: rgba(255, 255, 255, 0.5); -} - -.navbar-dark .navbar-nav .nav-link:focus, .navbar-dark .navbar-nav .nav-link:hover { - color: rgba(255, 255, 255, 0.75); -} - -.navbar-dark .navbar-nav .nav-link.disabled { - color: rgba(255, 255, 255, 0.25); -} - -.navbar-dark .navbar-nav .show > .nav-link, -.navbar-dark .navbar-nav .active > .nav-link, -.navbar-dark .navbar-nav .nav-link.show, -.navbar-dark .navbar-nav .nav-link.active { - color: #fff; -} - -.navbar-dark .navbar-toggler { - color: rgba(255, 255, 255, 0.5); - border-color: rgba(255, 255, 255, 0.1); -} - -.navbar-dark .navbar-toggler-icon { - background-image: url("data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='rgba(255, 255, 255, 0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E"); -} - -.navbar-dark .navbar-text { - color: rgba(255, 255, 255, 0.5); -} - -.navbar-dark .navbar-text a { - color: #fff; -} - -.navbar-dark .navbar-text a:focus, .navbar-dark .navbar-text a:hover { - color: #fff; -} - -.card, .member { - position: relative; - display: -ms-flexbox; - display: -webkit-box; - display: flex; - -ms-flex-direction: column; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - flex-direction: column; - min-width: 0; - word-wrap: break-word; - background-color: #fff; - background-clip: border-box; - border: 1px solid rgba(0, 0, 0, 0.125); - border-radius: 0.25rem; -} - -.card > hr, .member > hr { - margin-right: 0; - margin-left: 0; -} - -.card > .list-group:first-child .list-group-item:first-child, .member > .list-group:first-child .list-group-item:first-child { - border-top-left-radius: 0.25rem; - border-top-right-radius: 0.25rem; -} - -.card > .list-group:last-child .list-group-item:last-child, .member > .list-group:last-child .list-group-item:last-child { - border-bottom-right-radius: 0.25rem; - border-bottom-left-radius: 0.25rem; -} - -.card-body, .member-info { - -ms-flex: 1 1 auto; - -webkit-box-flex: 1; - flex: 1 1 auto; - padding: 1.25rem; -} - -.card-title { - margin-bottom: 0.75rem; -} - -.card-subtitle { - margin-top: -0.375rem; - margin-bottom: 0; -} - -.card-text:last-child { - margin-bottom: 0; -} - -.card-link:hover { - text-decoration: none; -} - -.card-link + .card-link { - margin-left: 1.25rem; -} - -.card-header { - padding: 0.75rem 1.25rem; - margin-bottom: 0; - background-color: rgba(0, 0, 0, 0.03); - border-bottom: 1px solid rgba(0, 0, 0, 0.125); -} - -.card-header:first-child { - border-radius: calc(0.25rem - 1px) calc(0.25rem - 1px) 0 0; -} - -.card-header + .list-group .list-group-item:first-child { - border-top: 0; -} - -.card-footer { - padding: 0.75rem 1.25rem; - background-color: rgba(0, 0, 0, 0.03); - border-top: 1px solid rgba(0, 0, 0, 0.125); -} - -.card-footer:last-child { - border-radius: 0 0 calc(0.25rem - 1px) calc(0.25rem - 1px); -} - -.card-header-tabs { - margin-right: -0.625rem; - margin-bottom: -0.75rem; - margin-left: -0.625rem; - border-bottom: 0; -} - -.card-header-pills { - margin-right: -0.625rem; - margin-left: -0.625rem; -} - -.card-img-overlay { - position: absolute; - top: 0; - right: 0; - bottom: 0; - left: 0; - padding: 1.25rem; -} - -.card-img { - width: 100%; - border-radius: calc(0.25rem - 1px); -} - -.card-img-top { - width: 100%; - border-top-left-radius: calc(0.25rem - 1px); - border-top-right-radius: calc(0.25rem - 1px); -} - -.card-img-bottom { - width: 100%; - border-bottom-right-radius: calc(0.25rem - 1px); - border-bottom-left-radius: calc(0.25rem - 1px); -} - -.card-deck { - display: -ms-flexbox; - display: -webkit-box; - display: flex; - -ms-flex-direction: column; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - flex-direction: column; -} - -.card-deck .card, .card-deck .member { - margin-bottom: 15px; -} - -@media (min-width: 576px) { - .card-deck { - -ms-flex-flow: row wrap; - -webkit-box-orient: horizontal; - -webkit-box-direction: normal; - flex-flow: row wrap; - margin-right: -15px; - margin-left: -15px; - } - .card-deck .card, .card-deck .member { - display: -ms-flexbox; - display: -webkit-box; - display: flex; - -ms-flex: 1 0 0%; - -webkit-box-flex: 1; - flex: 1 0 0%; - -ms-flex-direction: column; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - flex-direction: column; - margin-right: 15px; - margin-bottom: 0; - margin-left: 15px; - } -} -.card-group { - display: -ms-flexbox; - display: -webkit-box; - display: flex; - -ms-flex-direction: column; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - flex-direction: column; -} - -.card-group > .card, .card-group > .member { - margin-bottom: 15px; -} - -@media (min-width: 576px) { - .card-group { - -ms-flex-flow: row wrap; - -webkit-box-orient: horizontal; - -webkit-box-direction: normal; - flex-flow: row wrap; - } - .card-group > .card, .card-group > .member { - -ms-flex: 1 0 0%; - -webkit-box-flex: 1; - flex: 1 0 0%; - margin-bottom: 0; - } - .card-group > .card + .card, .card-group > .member + .card, .card-group > .card + .member, .card-group > .member + .member { - margin-left: 0; - border-left: 0; - } - .card-group > .card:first-child, .card-group > .member:first-child { - border-top-right-radius: 0; - border-bottom-right-radius: 0; - } - .card-group > .card:first-child .card-img-top, .card-group > .member:first-child .card-img-top, -.card-group > .card:first-child .card-header, -.card-group > .member:first-child .card-header { - border-top-right-radius: 0; - } - .card-group > .card:first-child .card-img-bottom, .card-group > .member:first-child .card-img-bottom, -.card-group > .card:first-child .card-footer, -.card-group > .member:first-child .card-footer { - border-bottom-right-radius: 0; - } - .card-group > .card:last-child, .card-group > .member:last-child { - border-top-left-radius: 0; - border-bottom-left-radius: 0; - } - .card-group > .card:last-child .card-img-top, .card-group > .member:last-child .card-img-top, -.card-group > .card:last-child .card-header, -.card-group > .member:last-child .card-header { - border-top-left-radius: 0; - } - .card-group > .card:last-child .card-img-bottom, .card-group > .member:last-child .card-img-bottom, -.card-group > .card:last-child .card-footer, -.card-group > .member:last-child .card-footer { - border-bottom-left-radius: 0; - } - .card-group > .card:only-child, .card-group > .member:only-child { - border-radius: 0.25rem; - } - .card-group > .card:only-child .card-img-top, .card-group > .member:only-child .card-img-top, -.card-group > .card:only-child .card-header, -.card-group > .member:only-child .card-header { - border-top-left-radius: 0.25rem; - border-top-right-radius: 0.25rem; - } - .card-group > .card:only-child .card-img-bottom, .card-group > .member:only-child .card-img-bottom, -.card-group > .card:only-child .card-footer, -.card-group > .member:only-child .card-footer { - border-bottom-right-radius: 0.25rem; - border-bottom-left-radius: 0.25rem; - } - .card-group > .card:not(:first-child):not(:last-child):not(:only-child), .card-group > .member:not(:first-child):not(:last-child):not(:only-child) { - border-radius: 0; - } - .card-group > .card:not(:first-child):not(:last-child):not(:only-child) .card-img-top, .card-group > .member:not(:first-child):not(:last-child):not(:only-child) .card-img-top, -.card-group > .card:not(:first-child):not(:last-child):not(:only-child) .card-img-bottom, -.card-group > .member:not(:first-child):not(:last-child):not(:only-child) .card-img-bottom, -.card-group > .card:not(:first-child):not(:last-child):not(:only-child) .card-header, -.card-group > .member:not(:first-child):not(:last-child):not(:only-child) .card-header, -.card-group > .card:not(:first-child):not(:last-child):not(:only-child) .card-footer, -.card-group > .member:not(:first-child):not(:last-child):not(:only-child) .card-footer { - border-radius: 0; - } -} -.card-columns .card, .card-columns .member { - margin-bottom: 0.75rem; -} - -@media (min-width: 576px) { - .card-columns { - -webkit-column-count: 3; - -moz-column-count: 3; - column-count: 3; - -webkit-column-gap: 1.25rem; - -moz-column-gap: 1.25rem; - column-gap: 1.25rem; - } - .card-columns .card, .card-columns .member { - display: inline-block; - width: 100%; - } -} -.breadcrumb { - display: -ms-flexbox; - display: -webkit-box; - display: flex; - -ms-flex-wrap: wrap; - flex-wrap: wrap; - padding: 0.75rem 1rem; - margin-bottom: 1rem; - list-style: none; - background-color: #e9ecef; - border-radius: 0.25rem; -} - -.breadcrumb-item + .breadcrumb-item::before { - display: inline-block; - padding-right: 0.5rem; - padding-left: 0.5rem; - color: #868e96; - content: "/"; -} - -.breadcrumb-item + .breadcrumb-item:hover::before { - text-decoration: underline; -} - -.breadcrumb-item + .breadcrumb-item:hover::before { - text-decoration: none; -} - -.breadcrumb-item.active { - color: #868e96; -} - -.pagination { - display: -ms-flexbox; - display: -webkit-box; - display: flex; - padding-left: 0; - list-style: none; - border-radius: 0.25rem; -} - -.page-link { - position: relative; - display: block; - padding: 0.5rem 0.75rem; - margin-left: -1px; - line-height: 1.25; - color: #007bff; - background-color: #fff; - border: 1px solid #dee2e6; -} - -.page-link:focus, .page-link:hover { - color: #0056b3; - text-decoration: none; - background-color: #e9ecef; - border-color: #dee2e6; -} - -.page-item:first-child .page-link { - margin-left: 0; - border-top-left-radius: 0.25rem; - border-bottom-left-radius: 0.25rem; -} - -.page-item:last-child .page-link { - border-top-right-radius: 0.25rem; - border-bottom-right-radius: 0.25rem; -} - -.page-item.active .page-link { - z-index: 1; - color: #fff; - background-color: #007bff; - border-color: #007bff; -} - -.page-item.disabled .page-link { - color: #868e96; - pointer-events: none; - background-color: #fff; - border-color: #dee2e6; -} - -.pagination-lg .page-link { - padding: 0.75rem 1.5rem; - font-size: 1.25rem; - line-height: 1.5; -} - -.pagination-lg .page-item:first-child .page-link { - border-top-left-radius: 0.3rem; - border-bottom-left-radius: 0.3rem; -} - -.pagination-lg .page-item:last-child .page-link { - border-top-right-radius: 0.3rem; - border-bottom-right-radius: 0.3rem; -} - -.pagination-sm .page-link { - padding: 0.25rem 0.5rem; - font-size: 0.875rem; - line-height: 1.5; -} - -.pagination-sm .page-item:first-child .page-link { - border-top-left-radius: 0.2rem; - border-bottom-left-radius: 0.2rem; -} - -.pagination-sm .page-item:last-child .page-link { - border-top-right-radius: 0.2rem; - border-bottom-right-radius: 0.2rem; -} - -.badge, .legacy, .beta { - display: inline-block; - padding: 0.25em 0.4em; - font-size: 75%; - font-weight: 700; - line-height: 1; - text-align: center; - white-space: nowrap; - vertical-align: baseline; - border-radius: 0.25rem; -} - -.badge:empty, .legacy:empty, .beta:empty { - display: none; -} - -.btn .badge, .member-runner-link .badge, .btn .legacy, .member-runner-link .legacy, .btn .beta, .member-runner-link .beta { - position: relative; - top: -1px; -} - -.badge-pill, .legacy, .beta { - padding-right: 0.6em; - padding-left: 0.6em; - border-radius: 10rem; -} - -.badge-primary { - color: #fff; - background-color: #007bff; -} - -.badge-primary[href]:focus, .badge-primary[href]:hover { - color: #fff; - text-decoration: none; - background-color: #0062cc; -} - -.badge-secondary { - color: #fff; - background-color: #868e96; -} - -.badge-secondary[href]:focus, .badge-secondary[href]:hover { - color: #fff; - text-decoration: none; - background-color: #6c757d; -} - -.badge-success { - color: #fff; - background-color: #28a745; -} - -.badge-success[href]:focus, .badge-success[href]:hover { - color: #fff; - text-decoration: none; - background-color: #1e7e34; -} - -.badge-info, .legacy, .beta { - color: #fff; - background-color: #17a2b8; -} - -.badge-info[href]:focus, [href].legacy:focus, [href].beta:focus, .badge-info[href]:hover, [href].legacy:hover, [href].beta:hover { - color: #fff; - text-decoration: none; - background-color: #117a8b; -} - -.badge-warning { - color: #212529; - background-color: #ffc107; -} - -.badge-warning[href]:focus, .badge-warning[href]:hover { - color: #212529; - text-decoration: none; - background-color: #d39e00; -} - -.badge-danger { - color: #fff; - background-color: #dc3545; -} - -.badge-danger[href]:focus, .badge-danger[href]:hover { - color: #fff; - text-decoration: none; - background-color: #bd2130; -} - -.badge-light { - color: #212529; - background-color: #f8f9fa; -} - -.badge-light[href]:focus, .badge-light[href]:hover { - color: #212529; - text-decoration: none; - background-color: #dae0e5; -} - -.badge-dark { - color: #fff; - background-color: #343a40; -} - -.badge-dark[href]:focus, .badge-dark[href]:hover { - color: #fff; - text-decoration: none; - background-color: #1d2124; -} - -.jumbotron { - padding: 2rem 1rem; - margin-bottom: 2rem; - background-color: #e9ecef; - border-radius: 0.3rem; -} - -@media (min-width: 576px) { - .jumbotron { - padding: 4rem 2rem; - } -} -.jumbotron-fluid { - padding-right: 0; - padding-left: 0; - border-radius: 0; -} - -.alert { - position: relative; - padding: 0.75rem 1.25rem; - margin-bottom: 1rem; - border: 1px solid transparent; - border-radius: 0.25rem; -} - -.alert-heading { - color: inherit; -} - -.alert-link { - font-weight: 700; -} - -.alert-dismissible { - padding-right: 4rem; -} - -.alert-dismissible .close { - position: absolute; - top: 0; - right: 0; - padding: 0.75rem 1.25rem; - color: inherit; -} - -.alert-primary { - color: #004085; - background-color: #cce5ff; - border-color: #b8daff; -} - -.alert-primary hr { - border-top-color: #9fcdff; -} - -.alert-primary .alert-link { - color: #002752; -} - -.alert-secondary { - color: #464a4e; - background-color: #e7e8ea; - border-color: #dddfe2; -} - -.alert-secondary hr { - border-top-color: #cfd2d6; -} - -.alert-secondary .alert-link { - color: #2e3133; -} - -.alert-success { - color: #155724; - background-color: #d4edda; - border-color: #c3e6cb; -} - -.alert-success hr { - border-top-color: #b1dfbb; -} - -.alert-success .alert-link { - color: #0b2e13; -} - -.alert-info { - color: #0c5460; - background-color: #d1ecf1; - border-color: #bee5eb; -} - -.alert-info hr { - border-top-color: #abdde5; -} - -.alert-info .alert-link { - color: #062c33; -} - -.alert-warning { - color: #856404; - background-color: #fff3cd; - border-color: #ffeeba; -} - -.alert-warning hr { - border-top-color: #ffe8a1; -} - -.alert-warning .alert-link { - color: #533f03; -} - -.alert-danger { - color: #721c24; - background-color: #f8d7da; - border-color: #f5c6cb; -} - -.alert-danger hr { - border-top-color: #f1b0b7; -} - -.alert-danger .alert-link { - color: #491217; -} - -.alert-light { - color: #818182; - background-color: #fefefe; - border-color: #fdfdfe; -} - -.alert-light hr { - border-top-color: #ececf6; -} - -.alert-light .alert-link { - color: #686868; -} - -.alert-dark { - color: #1b1e21; - background-color: #d6d8d9; - border-color: #c6c8ca; -} - -.alert-dark hr { - border-top-color: #b9bbbe; -} - -.alert-dark .alert-link { - color: #040505; -} - -@-webkit-keyframes progress-bar-stripes { - from { - background-position: 1rem 0; - } - to { - background-position: 0 0; - } -} -@keyframes progress-bar-stripes { - from { - background-position: 1rem 0; - } - to { - background-position: 0 0; - } -} -.progress { - display: -ms-flexbox; - display: -webkit-box; - display: flex; - height: 1rem; - overflow: hidden; - font-size: 0.75rem; - background-color: #e9ecef; - border-radius: 0.25rem; -} - -.progress-bar { - display: -ms-flexbox; - display: -webkit-box; - display: flex; - -ms-flex-direction: column; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - flex-direction: column; - -ms-flex-pack: center; - -webkit-box-pack: center; - justify-content: center; - color: #fff; - text-align: center; - background-color: #007bff; - -webkit-transition: width 0.6s ease; - transition: width 0.6s ease; -} - -.progress-bar-striped { - background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-size: 1rem 1rem; -} - -.progress-bar-animated { - -webkit-animation: progress-bar-stripes 1s linear infinite; - animation: progress-bar-stripes 1s linear infinite; -} - -.media { - display: -ms-flexbox; - display: -webkit-box; - display: flex; - -ms-flex-align: start; - -webkit-box-align: start; - align-items: flex-start; -} - -.media-body { - -ms-flex: 1; - -webkit-box-flex: 1; - flex: 1; -} - -.list-group { - display: -ms-flexbox; - display: -webkit-box; - display: flex; - -ms-flex-direction: column; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - flex-direction: column; - padding-left: 0; - margin-bottom: 0; -} - -.list-group-item-action { - width: 100%; - color: #495057; - text-align: inherit; -} - -.list-group-item-action:focus, .list-group-item-action:hover { - color: #495057; - text-decoration: none; - background-color: #f8f9fa; -} - -.list-group-item-action:active { - color: #212529; - background-color: #e9ecef; -} - -.list-group-item { - position: relative; - display: block; - padding: 0.75rem 1.25rem; - margin-bottom: -1px; - background-color: #fff; - border: 1px solid rgba(0, 0, 0, 0.125); -} - -.list-group-item:first-child { - border-top-left-radius: 0.25rem; - border-top-right-radius: 0.25rem; -} - -.list-group-item:last-child { - margin-bottom: 0; - border-bottom-right-radius: 0.25rem; - border-bottom-left-radius: 0.25rem; -} - -.list-group-item:focus, .list-group-item:hover { - text-decoration: none; -} - -.list-group-item.disabled, .list-group-item:disabled { - color: #868e96; - background-color: #fff; -} - -.list-group-item.active { - z-index: 1; - color: #fff; - background-color: #007bff; - border-color: #007bff; -} - -.list-group-flush .list-group-item { - border-right: 0; - border-left: 0; - border-radius: 0; -} - -.list-group-flush:first-child .list-group-item:first-child { - border-top: 0; -} - -.list-group-flush:last-child .list-group-item:last-child { - border-bottom: 0; -} - -.list-group-item-primary { - color: #004085; - background-color: #b8daff; -} - -a.list-group-item-primary, -button.list-group-item-primary { - color: #004085; -} - -a.list-group-item-primary:focus, a.list-group-item-primary:hover, -button.list-group-item-primary:focus, -button.list-group-item-primary:hover { - color: #004085; - background-color: #9fcdff; -} - -a.list-group-item-primary.active, -button.list-group-item-primary.active { - color: #fff; - background-color: #004085; - border-color: #004085; -} - -.list-group-item-secondary { - color: #464a4e; - background-color: #dddfe2; -} - -a.list-group-item-secondary, -button.list-group-item-secondary { - color: #464a4e; -} - -a.list-group-item-secondary:focus, a.list-group-item-secondary:hover, -button.list-group-item-secondary:focus, -button.list-group-item-secondary:hover { - color: #464a4e; - background-color: #cfd2d6; -} - -a.list-group-item-secondary.active, -button.list-group-item-secondary.active { - color: #fff; - background-color: #464a4e; - border-color: #464a4e; -} - -.list-group-item-success { - color: #155724; - background-color: #c3e6cb; -} - -a.list-group-item-success, -button.list-group-item-success { - color: #155724; -} - -a.list-group-item-success:focus, a.list-group-item-success:hover, -button.list-group-item-success:focus, -button.list-group-item-success:hover { - color: #155724; - background-color: #b1dfbb; -} - -a.list-group-item-success.active, -button.list-group-item-success.active { - color: #fff; - background-color: #155724; - border-color: #155724; -} - -.list-group-item-info { - color: #0c5460; - background-color: #bee5eb; -} - -a.list-group-item-info, -button.list-group-item-info { - color: #0c5460; -} - -a.list-group-item-info:focus, a.list-group-item-info:hover, -button.list-group-item-info:focus, -button.list-group-item-info:hover { - color: #0c5460; - background-color: #abdde5; -} - -a.list-group-item-info.active, -button.list-group-item-info.active { - color: #fff; - background-color: #0c5460; - border-color: #0c5460; -} - -.list-group-item-warning { - color: #856404; - background-color: #ffeeba; -} - -a.list-group-item-warning, -button.list-group-item-warning { - color: #856404; -} - -a.list-group-item-warning:focus, a.list-group-item-warning:hover, -button.list-group-item-warning:focus, -button.list-group-item-warning:hover { - color: #856404; - background-color: #ffe8a1; -} - -a.list-group-item-warning.active, -button.list-group-item-warning.active { - color: #fff; - background-color: #856404; - border-color: #856404; -} - -.list-group-item-danger { - color: #721c24; - background-color: #f5c6cb; -} - -a.list-group-item-danger, -button.list-group-item-danger { - color: #721c24; -} - -a.list-group-item-danger:focus, a.list-group-item-danger:hover, -button.list-group-item-danger:focus, -button.list-group-item-danger:hover { - color: #721c24; - background-color: #f1b0b7; -} - -a.list-group-item-danger.active, -button.list-group-item-danger.active { - color: #fff; - background-color: #721c24; - border-color: #721c24; -} - -.list-group-item-light { - color: #818182; - background-color: #fdfdfe; -} - -a.list-group-item-light, -button.list-group-item-light { - color: #818182; -} - -a.list-group-item-light:focus, a.list-group-item-light:hover, -button.list-group-item-light:focus, -button.list-group-item-light:hover { - color: #818182; - background-color: #ececf6; -} - -a.list-group-item-light.active, -button.list-group-item-light.active { - color: #fff; - background-color: #818182; - border-color: #818182; -} - -.list-group-item-dark { - color: #1b1e21; - background-color: #c6c8ca; -} - -a.list-group-item-dark, -button.list-group-item-dark { - color: #1b1e21; -} - -a.list-group-item-dark:focus, a.list-group-item-dark:hover, -button.list-group-item-dark:focus, -button.list-group-item-dark:hover { - color: #1b1e21; - background-color: #b9bbbe; -} - -a.list-group-item-dark.active, -button.list-group-item-dark.active { - color: #fff; - background-color: #1b1e21; - border-color: #1b1e21; -} - -.close { - float: right; - font-size: 1.5rem; - font-weight: 700; - line-height: 1; - color: #000; - text-shadow: 0 1px 0 #fff; - opacity: 0.5; -} - -.close:focus, .close:hover { - color: #000; - text-decoration: none; - opacity: 0.75; -} - -button.close { - padding: 0; - background-color: transparent; - border: 0; - -webkit-appearance: none; -} - -.modal-open { - overflow: hidden; -} - -.modal { - position: fixed; - top: 0; - right: 0; - bottom: 0; - left: 0; - z-index: 1050; - display: none; - overflow: hidden; - outline: 0; -} - -.modal-open .modal { - overflow-x: hidden; - overflow-y: auto; -} - -.modal-dialog { - position: relative; - width: auto; - margin: 0.5rem; - pointer-events: none; -} - -.modal.fade .modal-dialog { - transition: -webkit-transform 0.3s ease-out; - -webkit-transition: -webkit-transform 0.3s ease-out; - transition: transform 0.3s ease-out; - transition: transform 0.3s ease-out, -webkit-transform 0.3s ease-out; - -webkit-transform: translate(0, -25%); - transform: translate(0, -25%); -} - -.modal.show .modal-dialog { - -webkit-transform: translate(0, 0); - transform: translate(0, 0); -} - -.modal-dialog-centered { - display: -ms-flexbox; - display: -webkit-box; - display: flex; - -ms-flex-align: center; - -webkit-box-align: center; - align-items: center; - min-height: calc(100% - 1rem); -} - -.modal-content { - position: relative; - display: -ms-flexbox; - display: -webkit-box; - display: flex; - -ms-flex-direction: column; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - flex-direction: column; - width: 100%; - pointer-events: auto; - background-color: #fff; - background-clip: padding-box; - border: 1px solid rgba(0, 0, 0, 0.2); - border-radius: 0.3rem; - outline: 0; -} - -.modal-backdrop { - position: fixed; - top: 0; - right: 0; - bottom: 0; - left: 0; - z-index: 1040; - background-color: #000; -} - -.modal-backdrop.fade { - opacity: 0; -} - -.modal-backdrop.show { - opacity: 0.5; -} - -.modal-header { - display: -ms-flexbox; - display: -webkit-box; - display: flex; - -ms-flex-align: start; - -webkit-box-align: start; - align-items: flex-start; - -ms-flex-pack: justify; - -webkit-box-pack: justify; - justify-content: space-between; - padding: 1rem; - border-bottom: 1px solid #e9ecef; - border-top-left-radius: 0.3rem; - border-top-right-radius: 0.3rem; -} - -.modal-header .close { - padding: 1rem; - margin: -1rem -1rem -1rem auto; -} - -.modal-title { - margin-bottom: 0; - line-height: 1.5; -} - -.modal-body { - position: relative; - -ms-flex: 1 1 auto; - -webkit-box-flex: 1; - flex: 1 1 auto; - padding: 1rem; -} - -.modal-footer { - display: -ms-flexbox; - display: -webkit-box; - display: flex; - -ms-flex-align: center; - -webkit-box-align: center; - align-items: center; - -ms-flex-pack: end; - -webkit-box-pack: end; - justify-content: flex-end; - padding: 1rem; - border-top: 1px solid #e9ecef; -} - -.modal-footer > :not(:first-child) { - margin-left: 0.25rem; -} - -.modal-footer > :not(:last-child) { - margin-right: 0.25rem; -} - -.modal-scrollbar-measure { - position: absolute; - top: -9999px; - width: 50px; - height: 50px; - overflow: scroll; -} - -@media (min-width: 576px) { - .modal-dialog { - max-width: 500px; - margin: 1.75rem auto; - } - .modal-dialog-centered { - min-height: calc(100% - 3.5rem); - } - .modal-sm { - max-width: 300px; - } -} -@media (min-width: 992px) { - .modal-lg { - max-width: 800px; - } -} -.tooltip { - position: absolute; - z-index: 1070; - display: block; - margin: 0; - font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; - font-style: normal; - font-weight: 400; - line-height: 1.5; - text-align: left; - text-align: start; - text-decoration: none; - text-shadow: none; - text-transform: none; - letter-spacing: normal; - word-break: normal; - word-spacing: normal; - white-space: normal; - line-break: auto; - font-size: 0.875rem; - word-wrap: break-word; - opacity: 0; -} - -.tooltip.show { - opacity: 0.9; -} - -.tooltip .arrow { - position: absolute; - display: block; - width: 0.4rem; - height: 0.4rem; -} - -.tooltip .arrow::before { - position: absolute; - border-color: transparent; - border-style: solid; -} - -.tooltip.bs-tooltip-top, .tooltip.bs-tooltip-auto[x-placement^=top] { - padding: 0.4rem 0; -} - -.tooltip.bs-tooltip-top .arrow, .tooltip.bs-tooltip-auto[x-placement^=top] .arrow { - bottom: 0; -} - -.tooltip.bs-tooltip-top .arrow::before, .tooltip.bs-tooltip-auto[x-placement^=top] .arrow::before { - margin-left: -0.4rem; - content: ""; - border-width: 0.4rem 0.4rem 0; - border-top-color: #000; -} - -.tooltip.bs-tooltip-right, .tooltip.bs-tooltip-auto[x-placement^=right] { - padding: 0 0.4rem; -} - -.tooltip.bs-tooltip-right .arrow, .tooltip.bs-tooltip-auto[x-placement^=right] .arrow { - left: 0; -} - -.tooltip.bs-tooltip-right .arrow::before, .tooltip.bs-tooltip-auto[x-placement^=right] .arrow::before { - margin-top: -0.4rem; - content: ""; - border-width: 0.4rem 0.4rem 0.4rem 0; - border-right-color: #000; -} - -.tooltip.bs-tooltip-bottom, .tooltip.bs-tooltip-auto[x-placement^=bottom] { - padding: 0.4rem 0; -} - -.tooltip.bs-tooltip-bottom .arrow, .tooltip.bs-tooltip-auto[x-placement^=bottom] .arrow { - top: 0; -} - -.tooltip.bs-tooltip-bottom .arrow::before, .tooltip.bs-tooltip-auto[x-placement^=bottom] .arrow::before { - margin-left: -0.4rem; - content: ""; - border-width: 0 0.4rem 0.4rem; - border-bottom-color: #000; -} - -.tooltip.bs-tooltip-left, .tooltip.bs-tooltip-auto[x-placement^=left] { - padding: 0 0.4rem; -} - -.tooltip.bs-tooltip-left .arrow, .tooltip.bs-tooltip-auto[x-placement^=left] .arrow { - right: 0; -} - -.tooltip.bs-tooltip-left .arrow::before, .tooltip.bs-tooltip-auto[x-placement^=left] .arrow::before { - right: 0; - margin-top: -0.4rem; - content: ""; - border-width: 0.4rem 0 0.4rem 0.4rem; - border-left-color: #000; -} - -.tooltip-inner { - max-width: 200px; - padding: 0.25rem 0.5rem; - color: #fff; - text-align: center; - background-color: #000; - border-radius: 0.25rem; -} - -.popover { - position: absolute; - top: 0; - left: 0; - z-index: 1060; - display: block; - max-width: 276px; - font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; - font-style: normal; - font-weight: 400; - line-height: 1.5; - text-align: left; - text-align: start; - text-decoration: none; - text-shadow: none; - text-transform: none; - letter-spacing: normal; - word-break: normal; - word-spacing: normal; - white-space: normal; - line-break: auto; - font-size: 0.875rem; - word-wrap: break-word; - background-color: #fff; - background-clip: padding-box; - border: 1px solid rgba(0, 0, 0, 0.2); - border-radius: 0.3rem; -} - -.popover .arrow { - position: absolute; - display: block; - width: 0.8rem; - height: 0.4rem; -} - -.popover .arrow::before, -.popover .arrow::after { - position: absolute; - display: block; - border-color: transparent; - border-style: solid; -} - -.popover .arrow::before { - content: ""; - border-width: 0.8rem; -} - -.popover .arrow::after { - content: ""; - border-width: 0.8rem; -} - -.popover.bs-popover-top, .popover.bs-popover-auto[x-placement^=top] { - margin-bottom: 0.8rem; -} - -.popover.bs-popover-top .arrow, .popover.bs-popover-auto[x-placement^=top] .arrow { - bottom: 0; -} - -.popover.bs-popover-top .arrow::before, .popover.bs-popover-auto[x-placement^=top] .arrow::before, -.popover.bs-popover-top .arrow::after, .popover.bs-popover-auto[x-placement^=top] .arrow::after { - border-bottom-width: 0; -} - -.popover.bs-popover-top .arrow::before, .popover.bs-popover-auto[x-placement^=top] .arrow::before { - bottom: -0.8rem; - margin-left: -0.8rem; - border-top-color: rgba(0, 0, 0, 0.25); -} - -.popover.bs-popover-top .arrow::after, .popover.bs-popover-auto[x-placement^=top] .arrow::after { - bottom: calc((0.8rem - 1px) * -1); - margin-left: -0.8rem; - border-top-color: #fff; -} - -.popover.bs-popover-right, .popover.bs-popover-auto[x-placement^=right] { - margin-left: 0.8rem; -} - -.popover.bs-popover-right .arrow, .popover.bs-popover-auto[x-placement^=right] .arrow { - left: 0; -} - -.popover.bs-popover-right .arrow::before, .popover.bs-popover-auto[x-placement^=right] .arrow::before, -.popover.bs-popover-right .arrow::after, .popover.bs-popover-auto[x-placement^=right] .arrow::after { - margin-top: -0.8rem; - border-left-width: 0; -} - -.popover.bs-popover-right .arrow::before, .popover.bs-popover-auto[x-placement^=right] .arrow::before { - left: -0.8rem; - border-right-color: rgba(0, 0, 0, 0.25); -} - -.popover.bs-popover-right .arrow::after, .popover.bs-popover-auto[x-placement^=right] .arrow::after { - left: calc((0.8rem - 1px) * -1); - border-right-color: #fff; -} - -.popover.bs-popover-bottom, .popover.bs-popover-auto[x-placement^=bottom] { - margin-top: 0.8rem; -} - -.popover.bs-popover-bottom .arrow, .popover.bs-popover-auto[x-placement^=bottom] .arrow { - top: 0; -} - -.popover.bs-popover-bottom .arrow::before, .popover.bs-popover-auto[x-placement^=bottom] .arrow::before, -.popover.bs-popover-bottom .arrow::after, .popover.bs-popover-auto[x-placement^=bottom] .arrow::after { - margin-left: -0.8rem; - border-top-width: 0; -} - -.popover.bs-popover-bottom .arrow::before, .popover.bs-popover-auto[x-placement^=bottom] .arrow::before { - top: -0.8rem; - border-bottom-color: rgba(0, 0, 0, 0.25); -} - -.popover.bs-popover-bottom .arrow::after, .popover.bs-popover-auto[x-placement^=bottom] .arrow::after { - top: calc((0.8rem - 1px) * -1); - border-bottom-color: #fff; -} - -.popover.bs-popover-bottom .popover-header::before, .popover.bs-popover-auto[x-placement^=bottom] .popover-header::before { - position: absolute; - top: 0; - left: 50%; - display: block; - width: 20px; - margin-left: -10px; - content: ""; - border-bottom: 1px solid #f7f7f7; -} - -.popover.bs-popover-left, .popover.bs-popover-auto[x-placement^=left] { - margin-right: 0.8rem; -} - -.popover.bs-popover-left .arrow, .popover.bs-popover-auto[x-placement^=left] .arrow { - right: 0; -} - -.popover.bs-popover-left .arrow::before, .popover.bs-popover-auto[x-placement^=left] .arrow::before, -.popover.bs-popover-left .arrow::after, .popover.bs-popover-auto[x-placement^=left] .arrow::after { - margin-top: -0.8rem; - border-right-width: 0; -} - -.popover.bs-popover-left .arrow::before, .popover.bs-popover-auto[x-placement^=left] .arrow::before { - right: -0.8rem; - border-left-color: rgba(0, 0, 0, 0.25); -} - -.popover.bs-popover-left .arrow::after, .popover.bs-popover-auto[x-placement^=left] .arrow::after { - right: calc((0.8rem - 1px) * -1); - border-left-color: #fff; -} - -.popover-header { - padding: 0.5rem 0.75rem; - margin-bottom: 0; - font-size: 1rem; - color: inherit; - background-color: #f7f7f7; - border-bottom: 1px solid #ebebeb; - border-top-left-radius: calc(0.3rem - 1px); - border-top-right-radius: calc(0.3rem - 1px); -} - -.popover-header:empty { - display: none; -} - -.popover-body { - padding: 0.5rem 0.75rem; - color: #212529; -} - -.carousel { - position: relative; -} - -.carousel-inner { - position: relative; - width: 100%; - overflow: hidden; -} - -.carousel-item { - position: relative; - display: none; - -ms-flex-align: center; - -webkit-box-align: center; - align-items: center; - width: 100%; - transition: -webkit-transform 0.6s ease; - -webkit-transition: -webkit-transform 0.6s ease; - transition: transform 0.6s ease; - transition: transform 0.6s ease, -webkit-transform 0.6s ease; - -webkit-backface-visibility: hidden; - backface-visibility: hidden; - -webkit-perspective: 1000px; - perspective: 1000px; -} - -.carousel-item.active, -.carousel-item-next, -.carousel-item-prev { - display: block; -} - -.carousel-item-next, -.carousel-item-prev { - position: absolute; - top: 0; -} - -.carousel-item-next.carousel-item-left, -.carousel-item-prev.carousel-item-right { - -webkit-transform: translateX(0); - transform: translateX(0); -} - -@supports (transform-style: preserve-3d) { - .carousel-item-next.carousel-item-left, -.carousel-item-prev.carousel-item-right { - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } -} -.carousel-item-next, -.active.carousel-item-right { - -webkit-transform: translateX(100%); - transform: translateX(100%); -} - -@supports (transform-style: preserve-3d) { - .carousel-item-next, -.active.carousel-item-right { - -webkit-transform: translate3d(100%, 0, 0); - transform: translate3d(100%, 0, 0); - } -} -.carousel-item-prev, -.active.carousel-item-left { - -webkit-transform: translateX(-100%); - transform: translateX(-100%); -} - -@supports (transform-style: preserve-3d) { - .carousel-item-prev, -.active.carousel-item-left { - -webkit-transform: translate3d(-100%, 0, 0); - transform: translate3d(-100%, 0, 0); - } -} -.carousel-control-prev, -.carousel-control-next { - position: absolute; - top: 0; - bottom: 0; - display: -ms-flexbox; - display: -webkit-box; - display: flex; - -ms-flex-align: center; - -webkit-box-align: center; - align-items: center; - -ms-flex-pack: center; - -webkit-box-pack: center; - justify-content: center; - width: 15%; - color: #fff; - text-align: center; - opacity: 0.5; -} - -.carousel-control-prev:focus, .carousel-control-prev:hover, -.carousel-control-next:focus, -.carousel-control-next:hover { - color: #fff; - text-decoration: none; - outline: 0; - opacity: 0.9; -} - -.carousel-control-prev { - left: 0; -} - -.carousel-control-next { - right: 0; -} - -.carousel-control-prev-icon, -.carousel-control-next-icon { - display: inline-block; - width: 20px; - height: 20px; - background: transparent no-repeat center center; - background-size: 100% 100%; -} - -.carousel-control-prev-icon { - background-image: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 8 8'%3E%3Cpath d='M5.25 0l-4 4 4 4 1.5-1.5-2.5-2.5 2.5-2.5-1.5-1.5z'/%3E%3C/svg%3E"); -} - -.carousel-control-next-icon { - background-image: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 8 8'%3E%3Cpath d='M2.75 0l-1.5 1.5 2.5 2.5-2.5 2.5 1.5 1.5 4-4-4-4z'/%3E%3C/svg%3E"); -} - -.carousel-indicators { - position: absolute; - right: 0; - bottom: 10px; - left: 0; - z-index: 15; - display: -ms-flexbox; - display: -webkit-box; - display: flex; - -ms-flex-pack: center; - -webkit-box-pack: center; - justify-content: center; - padding-left: 0; - margin-right: 15%; - margin-left: 15%; - list-style: none; -} - -.carousel-indicators li { - position: relative; - -ms-flex: 0 1 auto; - -webkit-box-flex: 0; - flex: 0 1 auto; - width: 30px; - height: 3px; - margin-right: 3px; - margin-left: 3px; - text-indent: -999px; - background-color: rgba(255, 255, 255, 0.5); -} - -.carousel-indicators li::before { - position: absolute; - top: -10px; - left: 0; - display: inline-block; - width: 100%; - height: 10px; - content: ""; -} - -.carousel-indicators li::after { - position: absolute; - bottom: -10px; - left: 0; - display: inline-block; - width: 100%; - height: 10px; - content: ""; -} - -.carousel-indicators .active { - background-color: #fff; -} - -.carousel-caption { - position: absolute; - right: 15%; - bottom: 20px; - left: 15%; - z-index: 10; - padding-top: 20px; - padding-bottom: 20px; - color: #fff; - text-align: center; -} - -.align-baseline { - vertical-align: baseline !important; -} - -.align-top { - vertical-align: top !important; -} - -.align-middle { - vertical-align: middle !important; -} - -.align-bottom { - vertical-align: bottom !important; -} - -.align-text-bottom { - vertical-align: text-bottom !important; -} - -.align-text-top { - vertical-align: text-top !important; -} - -.bg-primary { - background-color: #007bff !important; -} - -a.bg-primary:focus, a.bg-primary:hover { - background-color: #0062cc !important; -} - -.bg-secondary { - background-color: #868e96 !important; -} - -a.bg-secondary:focus, a.bg-secondary:hover { - background-color: #6c757d !important; -} - -.bg-success { - background-color: #28a745 !important; -} - -a.bg-success:focus, a.bg-success:hover { - background-color: #1e7e34 !important; -} - -.bg-info { - background-color: #17a2b8 !important; -} - -a.bg-info:focus, a.bg-info:hover { - background-color: #117a8b !important; -} - -.bg-warning { - background-color: #ffc107 !important; -} - -a.bg-warning:focus, a.bg-warning:hover { - background-color: #d39e00 !important; -} - -.bg-danger { - background-color: #dc3545 !important; -} - -a.bg-danger:focus, a.bg-danger:hover { - background-color: #bd2130 !important; -} - -.bg-light, blockquote { - background-color: #f8f9fa !important; -} - -a.bg-light:focus, a.bg-light:hover { - background-color: #dae0e5 !important; -} - -.bg-dark { - background-color: #343a40 !important; -} - -a.bg-dark:focus, a.bg-dark:hover { - background-color: #1d2124 !important; -} - -.bg-white { - background-color: #fff !important; -} - -.bg-transparent { - background-color: transparent !important; -} - -.border { - border: 1px solid #e9ecef !important; -} - -.border-0 { - border: 0 !important; -} - -.border-top-0 { - border-top: 0 !important; -} - -.border-right-0 { - border-right: 0 !important; -} - -.border-bottom-0 { - border-bottom: 0 !important; -} - -.border-left-0 { - border-left: 0 !important; -} - -.border-primary { - border-color: #007bff !important; -} - -.border-secondary { - border-color: #868e96 !important; -} - -.border-success { - border-color: #28a745 !important; -} - -.border-info { - border-color: #17a2b8 !important; -} - -.border-warning { - border-color: #ffc107 !important; -} - -.border-danger { - border-color: #dc3545 !important; -} - -.border-light { - border-color: #f8f9fa !important; -} - -.border-dark { - border-color: #343a40 !important; -} - -.border-white { - border-color: #fff !important; -} - -.rounded { - border-radius: 0.25rem !important; -} - -.rounded-top { - border-top-left-radius: 0.25rem !important; - border-top-right-radius: 0.25rem !important; -} - -.rounded-right { - border-top-right-radius: 0.25rem !important; - border-bottom-right-radius: 0.25rem !important; -} - -.rounded-bottom { - border-bottom-right-radius: 0.25rem !important; - border-bottom-left-radius: 0.25rem !important; -} - -.rounded-left { - border-top-left-radius: 0.25rem !important; - border-bottom-left-radius: 0.25rem !important; -} - -.rounded-circle { - border-radius: 50% !important; -} - -.rounded-0 { - border-radius: 0 !important; -} - -.clearfix::after { - display: block; - clear: both; - content: ""; -} - -.d-none { - display: none !important; -} - -.d-inline { - display: inline !important; -} - -.d-inline-block { - display: inline-block !important; -} - -.d-block { - display: block !important; -} - -.d-table { - display: table !important; -} - -.d-table-row { - display: table-row !important; -} - -.d-table-cell { - display: table-cell !important; -} - -.d-flex { - display: -ms-flexbox !important; - display: -webkit-box !important; - display: flex !important; -} - -.d-inline-flex { - display: -ms-inline-flexbox !important; - display: -webkit-inline-box !important; - display: inline-flex !important; -} - -@media (min-width: 576px) { - .d-sm-none { - display: none !important; - } - .d-sm-inline { - display: inline !important; - } - .d-sm-inline-block { - display: inline-block !important; - } - .d-sm-block { - display: block !important; - } - .d-sm-table { - display: table !important; - } - .d-sm-table-row { - display: table-row !important; - } - .d-sm-table-cell { - display: table-cell !important; - } - .d-sm-flex { - display: -ms-flexbox !important; - display: -webkit-box !important; - display: flex !important; - } - .d-sm-inline-flex { - display: -ms-inline-flexbox !important; - display: -webkit-inline-box !important; - display: inline-flex !important; - } -} -@media (min-width: 768px) { - .d-md-none { - display: none !important; - } - .d-md-inline { - display: inline !important; - } - .d-md-inline-block { - display: inline-block !important; - } - .d-md-block { - display: block !important; - } - .d-md-table { - display: table !important; - } - .d-md-table-row { - display: table-row !important; - } - .d-md-table-cell { - display: table-cell !important; - } - .d-md-flex { - display: -ms-flexbox !important; - display: -webkit-box !important; - display: flex !important; - } - .d-md-inline-flex { - display: -ms-inline-flexbox !important; - display: -webkit-inline-box !important; - display: inline-flex !important; - } -} -@media (min-width: 992px) { - .d-lg-none { - display: none !important; - } - .d-lg-inline { - display: inline !important; - } - .d-lg-inline-block { - display: inline-block !important; - } - .d-lg-block { - display: block !important; - } - .d-lg-table { - display: table !important; - } - .d-lg-table-row { - display: table-row !important; - } - .d-lg-table-cell { - display: table-cell !important; - } - .d-lg-flex { - display: -ms-flexbox !important; - display: -webkit-box !important; - display: flex !important; - } - .d-lg-inline-flex { - display: -ms-inline-flexbox !important; - display: -webkit-inline-box !important; - display: inline-flex !important; - } -} -@media (min-width: 1200px) { - .d-xl-none { - display: none !important; - } - .d-xl-inline { - display: inline !important; - } - .d-xl-inline-block { - display: inline-block !important; - } - .d-xl-block { - display: block !important; - } - .d-xl-table { - display: table !important; - } - .d-xl-table-row { - display: table-row !important; - } - .d-xl-table-cell { - display: table-cell !important; - } - .d-xl-flex { - display: -ms-flexbox !important; - display: -webkit-box !important; - display: flex !important; - } - .d-xl-inline-flex { - display: -ms-inline-flexbox !important; - display: -webkit-inline-box !important; - display: inline-flex !important; - } -} -.d-print-block { - display: none !important; -} - -@media print { - .d-print-block { - display: block !important; - } -} -.d-print-inline { - display: none !important; -} - -@media print { - .d-print-inline { - display: inline !important; - } -} -.d-print-inline-block { - display: none !important; -} - -@media print { - .d-print-inline-block { - display: inline-block !important; - } -} -@media print { - .d-print-none { - display: none !important; - } -} -.embed-responsive { - position: relative; - display: block; - width: 100%; - padding: 0; - overflow: hidden; -} - -.embed-responsive::before { - display: block; - content: ""; -} - -.embed-responsive .embed-responsive-item, -.embed-responsive iframe, -.embed-responsive embed, -.embed-responsive object, -.embed-responsive video { - position: absolute; - top: 0; - bottom: 0; - left: 0; - width: 100%; - height: 100%; - border: 0; -} - -.embed-responsive-21by9::before { - padding-top: 42.857143%; -} - -.embed-responsive-16by9::before { - padding-top: 56.25%; -} - -.embed-responsive-4by3::before { - padding-top: 75%; -} - -.embed-responsive-1by1::before { - padding-top: 100%; -} - -.flex-row { - -ms-flex-direction: row !important; - -webkit-box-orient: horizontal !important; - -webkit-box-direction: normal !important; - flex-direction: row !important; -} - -.flex-column { - -ms-flex-direction: column !important; - -webkit-box-orient: vertical !important; - -webkit-box-direction: normal !important; - flex-direction: column !important; -} - -.flex-row-reverse { - -ms-flex-direction: row-reverse !important; - -webkit-box-orient: horizontal !important; - -webkit-box-direction: reverse !important; - flex-direction: row-reverse !important; -} - -.flex-column-reverse { - -ms-flex-direction: column-reverse !important; - -webkit-box-orient: vertical !important; - -webkit-box-direction: reverse !important; - flex-direction: column-reverse !important; -} - -.flex-wrap { - -ms-flex-wrap: wrap !important; - flex-wrap: wrap !important; -} - -.flex-nowrap { - -ms-flex-wrap: nowrap !important; - flex-wrap: nowrap !important; -} - -.flex-wrap-reverse { - -ms-flex-wrap: wrap-reverse !important; - flex-wrap: wrap-reverse !important; -} - -.justify-content-start { - -ms-flex-pack: start !important; - -webkit-box-pack: start !important; - justify-content: flex-start !important; -} - -.justify-content-end { - -ms-flex-pack: end !important; - -webkit-box-pack: end !important; - justify-content: flex-end !important; -} - -.justify-content-center { - -ms-flex-pack: center !important; - -webkit-box-pack: center !important; - justify-content: center !important; -} - -.justify-content-between { - -ms-flex-pack: justify !important; - -webkit-box-pack: justify !important; - justify-content: space-between !important; -} - -.justify-content-around { - -ms-flex-pack: distribute !important; - justify-content: space-around !important; -} - -.align-items-start { - -ms-flex-align: start !important; - -webkit-box-align: start !important; - align-items: flex-start !important; -} - -.align-items-end { - -ms-flex-align: end !important; - -webkit-box-align: end !important; - align-items: flex-end !important; -} - -.align-items-center { - -ms-flex-align: center !important; - -webkit-box-align: center !important; - align-items: center !important; -} - -.align-items-baseline { - -ms-flex-align: baseline !important; - -webkit-box-align: baseline !important; - align-items: baseline !important; -} - -.align-items-stretch { - -ms-flex-align: stretch !important; - -webkit-box-align: stretch !important; - align-items: stretch !important; -} - -.align-content-start { - -ms-flex-line-pack: start !important; - align-content: flex-start !important; -} - -.align-content-end { - -ms-flex-line-pack: end !important; - align-content: flex-end !important; -} - -.align-content-center { - -ms-flex-line-pack: center !important; - align-content: center !important; -} - -.align-content-between { - -ms-flex-line-pack: justify !important; - align-content: space-between !important; -} - -.align-content-around { - -ms-flex-line-pack: distribute !important; - align-content: space-around !important; -} - -.align-content-stretch { - -ms-flex-line-pack: stretch !important; - align-content: stretch !important; -} - -.align-self-auto { - -ms-flex-item-align: auto !important; - align-self: auto !important; -} - -.align-self-start { - -ms-flex-item-align: start !important; - align-self: flex-start !important; -} - -.align-self-end { - -ms-flex-item-align: end !important; - align-self: flex-end !important; -} - -.align-self-center { - -ms-flex-item-align: center !important; - align-self: center !important; -} - -.align-self-baseline { - -ms-flex-item-align: baseline !important; - align-self: baseline !important; -} - -.align-self-stretch { - -ms-flex-item-align: stretch !important; - align-self: stretch !important; -} - -@media (min-width: 576px) { - .flex-sm-row { - -ms-flex-direction: row !important; - -webkit-box-orient: horizontal !important; - -webkit-box-direction: normal !important; - flex-direction: row !important; - } - .flex-sm-column { - -ms-flex-direction: column !important; - -webkit-box-orient: vertical !important; - -webkit-box-direction: normal !important; - flex-direction: column !important; - } - .flex-sm-row-reverse { - -ms-flex-direction: row-reverse !important; - -webkit-box-orient: horizontal !important; - -webkit-box-direction: reverse !important; - flex-direction: row-reverse !important; - } - .flex-sm-column-reverse { - -ms-flex-direction: column-reverse !important; - -webkit-box-orient: vertical !important; - -webkit-box-direction: reverse !important; - flex-direction: column-reverse !important; - } - .flex-sm-wrap { - -ms-flex-wrap: wrap !important; - flex-wrap: wrap !important; - } - .flex-sm-nowrap { - -ms-flex-wrap: nowrap !important; - flex-wrap: nowrap !important; - } - .flex-sm-wrap-reverse { - -ms-flex-wrap: wrap-reverse !important; - flex-wrap: wrap-reverse !important; - } - .justify-content-sm-start { - -ms-flex-pack: start !important; - -webkit-box-pack: start !important; - justify-content: flex-start !important; - } - .justify-content-sm-end { - -ms-flex-pack: end !important; - -webkit-box-pack: end !important; - justify-content: flex-end !important; - } - .justify-content-sm-center { - -ms-flex-pack: center !important; - -webkit-box-pack: center !important; - justify-content: center !important; - } - .justify-content-sm-between { - -ms-flex-pack: justify !important; - -webkit-box-pack: justify !important; - justify-content: space-between !important; - } - .justify-content-sm-around { - -ms-flex-pack: distribute !important; - justify-content: space-around !important; - } - .align-items-sm-start { - -ms-flex-align: start !important; - -webkit-box-align: start !important; - align-items: flex-start !important; - } - .align-items-sm-end { - -ms-flex-align: end !important; - -webkit-box-align: end !important; - align-items: flex-end !important; - } - .align-items-sm-center { - -ms-flex-align: center !important; - -webkit-box-align: center !important; - align-items: center !important; - } - .align-items-sm-baseline { - -ms-flex-align: baseline !important; - -webkit-box-align: baseline !important; - align-items: baseline !important; - } - .align-items-sm-stretch { - -ms-flex-align: stretch !important; - -webkit-box-align: stretch !important; - align-items: stretch !important; - } - .align-content-sm-start { - -ms-flex-line-pack: start !important; - align-content: flex-start !important; - } - .align-content-sm-end { - -ms-flex-line-pack: end !important; - align-content: flex-end !important; - } - .align-content-sm-center { - -ms-flex-line-pack: center !important; - align-content: center !important; - } - .align-content-sm-between { - -ms-flex-line-pack: justify !important; - align-content: space-between !important; - } - .align-content-sm-around { - -ms-flex-line-pack: distribute !important; - align-content: space-around !important; - } - .align-content-sm-stretch { - -ms-flex-line-pack: stretch !important; - align-content: stretch !important; - } - .align-self-sm-auto { - -ms-flex-item-align: auto !important; - align-self: auto !important; - } - .align-self-sm-start { - -ms-flex-item-align: start !important; - align-self: flex-start !important; - } - .align-self-sm-end { - -ms-flex-item-align: end !important; - align-self: flex-end !important; - } - .align-self-sm-center { - -ms-flex-item-align: center !important; - align-self: center !important; - } - .align-self-sm-baseline { - -ms-flex-item-align: baseline !important; - align-self: baseline !important; - } - .align-self-sm-stretch { - -ms-flex-item-align: stretch !important; - align-self: stretch !important; - } -} -@media (min-width: 768px) { - .flex-md-row { - -ms-flex-direction: row !important; - -webkit-box-orient: horizontal !important; - -webkit-box-direction: normal !important; - flex-direction: row !important; - } - .flex-md-column { - -ms-flex-direction: column !important; - -webkit-box-orient: vertical !important; - -webkit-box-direction: normal !important; - flex-direction: column !important; - } - .flex-md-row-reverse { - -ms-flex-direction: row-reverse !important; - -webkit-box-orient: horizontal !important; - -webkit-box-direction: reverse !important; - flex-direction: row-reverse !important; - } - .flex-md-column-reverse { - -ms-flex-direction: column-reverse !important; - -webkit-box-orient: vertical !important; - -webkit-box-direction: reverse !important; - flex-direction: column-reverse !important; - } - .flex-md-wrap { - -ms-flex-wrap: wrap !important; - flex-wrap: wrap !important; - } - .flex-md-nowrap { - -ms-flex-wrap: nowrap !important; - flex-wrap: nowrap !important; - } - .flex-md-wrap-reverse { - -ms-flex-wrap: wrap-reverse !important; - flex-wrap: wrap-reverse !important; - } - .justify-content-md-start { - -ms-flex-pack: start !important; - -webkit-box-pack: start !important; - justify-content: flex-start !important; - } - .justify-content-md-end { - -ms-flex-pack: end !important; - -webkit-box-pack: end !important; - justify-content: flex-end !important; - } - .justify-content-md-center { - -ms-flex-pack: center !important; - -webkit-box-pack: center !important; - justify-content: center !important; - } - .justify-content-md-between { - -ms-flex-pack: justify !important; - -webkit-box-pack: justify !important; - justify-content: space-between !important; - } - .justify-content-md-around { - -ms-flex-pack: distribute !important; - justify-content: space-around !important; - } - .align-items-md-start { - -ms-flex-align: start !important; - -webkit-box-align: start !important; - align-items: flex-start !important; - } - .align-items-md-end { - -ms-flex-align: end !important; - -webkit-box-align: end !important; - align-items: flex-end !important; - } - .align-items-md-center { - -ms-flex-align: center !important; - -webkit-box-align: center !important; - align-items: center !important; - } - .align-items-md-baseline { - -ms-flex-align: baseline !important; - -webkit-box-align: baseline !important; - align-items: baseline !important; - } - .align-items-md-stretch { - -ms-flex-align: stretch !important; - -webkit-box-align: stretch !important; - align-items: stretch !important; - } - .align-content-md-start { - -ms-flex-line-pack: start !important; - align-content: flex-start !important; - } - .align-content-md-end { - -ms-flex-line-pack: end !important; - align-content: flex-end !important; - } - .align-content-md-center { - -ms-flex-line-pack: center !important; - align-content: center !important; - } - .align-content-md-between { - -ms-flex-line-pack: justify !important; - align-content: space-between !important; - } - .align-content-md-around { - -ms-flex-line-pack: distribute !important; - align-content: space-around !important; - } - .align-content-md-stretch { - -ms-flex-line-pack: stretch !important; - align-content: stretch !important; - } - .align-self-md-auto { - -ms-flex-item-align: auto !important; - align-self: auto !important; - } - .align-self-md-start { - -ms-flex-item-align: start !important; - align-self: flex-start !important; - } - .align-self-md-end { - -ms-flex-item-align: end !important; - align-self: flex-end !important; - } - .align-self-md-center { - -ms-flex-item-align: center !important; - align-self: center !important; - } - .align-self-md-baseline { - -ms-flex-item-align: baseline !important; - align-self: baseline !important; - } - .align-self-md-stretch { - -ms-flex-item-align: stretch !important; - align-self: stretch !important; - } -} -@media (min-width: 992px) { - .flex-lg-row { - -ms-flex-direction: row !important; - -webkit-box-orient: horizontal !important; - -webkit-box-direction: normal !important; - flex-direction: row !important; - } - .flex-lg-column { - -ms-flex-direction: column !important; - -webkit-box-orient: vertical !important; - -webkit-box-direction: normal !important; - flex-direction: column !important; - } - .flex-lg-row-reverse { - -ms-flex-direction: row-reverse !important; - -webkit-box-orient: horizontal !important; - -webkit-box-direction: reverse !important; - flex-direction: row-reverse !important; - } - .flex-lg-column-reverse { - -ms-flex-direction: column-reverse !important; - -webkit-box-orient: vertical !important; - -webkit-box-direction: reverse !important; - flex-direction: column-reverse !important; - } - .flex-lg-wrap { - -ms-flex-wrap: wrap !important; - flex-wrap: wrap !important; - } - .flex-lg-nowrap { - -ms-flex-wrap: nowrap !important; - flex-wrap: nowrap !important; - } - .flex-lg-wrap-reverse { - -ms-flex-wrap: wrap-reverse !important; - flex-wrap: wrap-reverse !important; - } - .justify-content-lg-start { - -ms-flex-pack: start !important; - -webkit-box-pack: start !important; - justify-content: flex-start !important; - } - .justify-content-lg-end { - -ms-flex-pack: end !important; - -webkit-box-pack: end !important; - justify-content: flex-end !important; - } - .justify-content-lg-center { - -ms-flex-pack: center !important; - -webkit-box-pack: center !important; - justify-content: center !important; - } - .justify-content-lg-between { - -ms-flex-pack: justify !important; - -webkit-box-pack: justify !important; - justify-content: space-between !important; - } - .justify-content-lg-around { - -ms-flex-pack: distribute !important; - justify-content: space-around !important; - } - .align-items-lg-start { - -ms-flex-align: start !important; - -webkit-box-align: start !important; - align-items: flex-start !important; - } - .align-items-lg-end { - -ms-flex-align: end !important; - -webkit-box-align: end !important; - align-items: flex-end !important; - } - .align-items-lg-center { - -ms-flex-align: center !important; - -webkit-box-align: center !important; - align-items: center !important; - } - .align-items-lg-baseline { - -ms-flex-align: baseline !important; - -webkit-box-align: baseline !important; - align-items: baseline !important; - } - .align-items-lg-stretch { - -ms-flex-align: stretch !important; - -webkit-box-align: stretch !important; - align-items: stretch !important; - } - .align-content-lg-start { - -ms-flex-line-pack: start !important; - align-content: flex-start !important; - } - .align-content-lg-end { - -ms-flex-line-pack: end !important; - align-content: flex-end !important; - } - .align-content-lg-center { - -ms-flex-line-pack: center !important; - align-content: center !important; - } - .align-content-lg-between { - -ms-flex-line-pack: justify !important; - align-content: space-between !important; - } - .align-content-lg-around { - -ms-flex-line-pack: distribute !important; - align-content: space-around !important; - } - .align-content-lg-stretch { - -ms-flex-line-pack: stretch !important; - align-content: stretch !important; - } - .align-self-lg-auto { - -ms-flex-item-align: auto !important; - align-self: auto !important; - } - .align-self-lg-start { - -ms-flex-item-align: start !important; - align-self: flex-start !important; - } - .align-self-lg-end { - -ms-flex-item-align: end !important; - align-self: flex-end !important; - } - .align-self-lg-center { - -ms-flex-item-align: center !important; - align-self: center !important; - } - .align-self-lg-baseline { - -ms-flex-item-align: baseline !important; - align-self: baseline !important; - } - .align-self-lg-stretch { - -ms-flex-item-align: stretch !important; - align-self: stretch !important; - } -} -@media (min-width: 1200px) { - .flex-xl-row { - -ms-flex-direction: row !important; - -webkit-box-orient: horizontal !important; - -webkit-box-direction: normal !important; - flex-direction: row !important; - } - .flex-xl-column { - -ms-flex-direction: column !important; - -webkit-box-orient: vertical !important; - -webkit-box-direction: normal !important; - flex-direction: column !important; - } - .flex-xl-row-reverse { - -ms-flex-direction: row-reverse !important; - -webkit-box-orient: horizontal !important; - -webkit-box-direction: reverse !important; - flex-direction: row-reverse !important; - } - .flex-xl-column-reverse { - -ms-flex-direction: column-reverse !important; - -webkit-box-orient: vertical !important; - -webkit-box-direction: reverse !important; - flex-direction: column-reverse !important; - } - .flex-xl-wrap { - -ms-flex-wrap: wrap !important; - flex-wrap: wrap !important; - } - .flex-xl-nowrap { - -ms-flex-wrap: nowrap !important; - flex-wrap: nowrap !important; - } - .flex-xl-wrap-reverse { - -ms-flex-wrap: wrap-reverse !important; - flex-wrap: wrap-reverse !important; - } - .justify-content-xl-start { - -ms-flex-pack: start !important; - -webkit-box-pack: start !important; - justify-content: flex-start !important; - } - .justify-content-xl-end { - -ms-flex-pack: end !important; - -webkit-box-pack: end !important; - justify-content: flex-end !important; - } - .justify-content-xl-center { - -ms-flex-pack: center !important; - -webkit-box-pack: center !important; - justify-content: center !important; - } - .justify-content-xl-between { - -ms-flex-pack: justify !important; - -webkit-box-pack: justify !important; - justify-content: space-between !important; - } - .justify-content-xl-around { - -ms-flex-pack: distribute !important; - justify-content: space-around !important; - } - .align-items-xl-start { - -ms-flex-align: start !important; - -webkit-box-align: start !important; - align-items: flex-start !important; - } - .align-items-xl-end { - -ms-flex-align: end !important; - -webkit-box-align: end !important; - align-items: flex-end !important; - } - .align-items-xl-center { - -ms-flex-align: center !important; - -webkit-box-align: center !important; - align-items: center !important; - } - .align-items-xl-baseline { - -ms-flex-align: baseline !important; - -webkit-box-align: baseline !important; - align-items: baseline !important; - } - .align-items-xl-stretch { - -ms-flex-align: stretch !important; - -webkit-box-align: stretch !important; - align-items: stretch !important; - } - .align-content-xl-start { - -ms-flex-line-pack: start !important; - align-content: flex-start !important; - } - .align-content-xl-end { - -ms-flex-line-pack: end !important; - align-content: flex-end !important; - } - .align-content-xl-center { - -ms-flex-line-pack: center !important; - align-content: center !important; - } - .align-content-xl-between { - -ms-flex-line-pack: justify !important; - align-content: space-between !important; - } - .align-content-xl-around { - -ms-flex-line-pack: distribute !important; - align-content: space-around !important; - } - .align-content-xl-stretch { - -ms-flex-line-pack: stretch !important; - align-content: stretch !important; - } - .align-self-xl-auto { - -ms-flex-item-align: auto !important; - align-self: auto !important; - } - .align-self-xl-start { - -ms-flex-item-align: start !important; - align-self: flex-start !important; - } - .align-self-xl-end { - -ms-flex-item-align: end !important; - align-self: flex-end !important; - } - .align-self-xl-center { - -ms-flex-item-align: center !important; - align-self: center !important; - } - .align-self-xl-baseline { - -ms-flex-item-align: baseline !important; - align-self: baseline !important; - } - .align-self-xl-stretch { - -ms-flex-item-align: stretch !important; - align-self: stretch !important; - } -} -.float-left { - float: left !important; -} - -.float-right { - float: right !important; -} - -.float-none { - float: none !important; -} - -@media (min-width: 576px) { - .float-sm-left { - float: left !important; - } - .float-sm-right { - float: right !important; - } - .float-sm-none { - float: none !important; - } -} -@media (min-width: 768px) { - .float-md-left { - float: left !important; - } - .float-md-right { - float: right !important; - } - .float-md-none { - float: none !important; - } -} -@media (min-width: 992px) { - .float-lg-left { - float: left !important; - } - .float-lg-right { - float: right !important; - } - .float-lg-none { - float: none !important; - } -} -@media (min-width: 1200px) { - .float-xl-left { - float: left !important; - } - .float-xl-right { - float: right !important; - } - .float-xl-none { - float: none !important; - } -} -.position-static { - position: static !important; -} - -.position-relative { - position: relative !important; -} - -.position-absolute { - position: absolute !important; -} - -.position-fixed { - position: fixed !important; -} - -.position-sticky { - position: sticky !important; -} - -.fixed-top { - position: fixed; - top: 0; - right: 0; - left: 0; - z-index: 1030; -} - -.fixed-bottom { - position: fixed; - right: 0; - bottom: 0; - left: 0; - z-index: 1030; -} - -@supports (position: sticky) { - .sticky-top { - position: sticky; - top: 0; - z-index: 1020; - } -} -.sr-only { - position: absolute; - width: 1px; - height: 1px; - padding: 0; - overflow: hidden; - clip: rect(0, 0, 0, 0); - white-space: nowrap; - -webkit-clip-path: inset(50%); - clip-path: inset(50%); - border: 0; -} - -.sr-only-focusable:active, .sr-only-focusable:focus { - position: static; - width: auto; - height: auto; - overflow: visible; - clip: auto; - white-space: normal; - -webkit-clip-path: none; - clip-path: none; -} - -.w-25 { - width: 25% !important; -} - -.w-50 { - width: 50% !important; -} - -.w-75 { - width: 75% !important; -} - -.w-100 { - width: 100% !important; -} - -.h-25 { - height: 25% !important; -} - -.h-50 { - height: 50% !important; -} - -.h-75 { - height: 75% !important; -} - -.h-100 { - height: 100% !important; -} - -.mw-100 { - max-width: 100% !important; -} - -.mh-100 { - max-height: 100% !important; -} - -.m-0 { - margin: 0 !important; -} - -.mt-0, -.my-0 { - margin-top: 0 !important; -} - -.mr-0, -.mx-0 { - margin-right: 0 !important; -} - -.mb-0, -.my-0 { - margin-bottom: 0 !important; -} - -.ml-0, -.mx-0 { - margin-left: 0 !important; -} - -.m-1 { - margin: 0.25rem !important; -} - -.mt-1, -.my-1 { - margin-top: 0.25rem !important; -} - -.mr-1, -.mx-1 { - margin-right: 0.25rem !important; -} - -.mb-1, -.my-1 { - margin-bottom: 0.25rem !important; -} - -.ml-1, -.mx-1 { - margin-left: 0.25rem !important; -} - -.m-2 { - margin: 0.5rem !important; -} - -.mt-2, -.my-2 { - margin-top: 0.5rem !important; -} - -.mr-2, -.mx-2 { - margin-right: 0.5rem !important; -} - -.mb-2, -.my-2 { - margin-bottom: 0.5rem !important; -} - -.ml-2, -.mx-2 { - margin-left: 0.5rem !important; -} - -.m-3 { - margin: 1rem !important; -} - -.mt-3, -.my-3 { - margin-top: 1rem !important; -} - -.mr-3, -.mx-3 { - margin-right: 1rem !important; -} - -.mb-3, -.my-3 { - margin-bottom: 1rem !important; -} - -.ml-3, -.mx-3 { - margin-left: 1rem !important; -} - -.m-4 { - margin: 1.5rem !important; -} - -.mt-4, -.my-4 { - margin-top: 1.5rem !important; -} - -.mr-4, -.mx-4 { - margin-right: 1.5rem !important; -} - -.mb-4, -.my-4 { - margin-bottom: 1.5rem !important; -} - -.ml-4, -.mx-4 { - margin-left: 1.5rem !important; -} - -.m-5 { - margin: 3rem !important; -} - -.mt-5, -.my-5 { - margin-top: 3rem !important; -} - -.mr-5, -.mx-5 { - margin-right: 3rem !important; -} - -.mb-5, -.my-5 { - margin-bottom: 3rem !important; -} - -.ml-5, -.mx-5 { - margin-left: 3rem !important; -} - -.p-0 { - padding: 0 !important; -} - -.pt-0, -.py-0 { - padding-top: 0 !important; -} - -.pr-0, -.px-0 { - padding-right: 0 !important; -} - -.pb-0, -.py-0 { - padding-bottom: 0 !important; -} - -.pl-0, -.px-0 { - padding-left: 0 !important; -} - -.p-1 { - padding: 0.25rem !important; -} - -.pt-1, -.py-1 { - padding-top: 0.25rem !important; -} - -.pr-1, -.px-1 { - padding-right: 0.25rem !important; -} - -.pb-1, -.py-1 { - padding-bottom: 0.25rem !important; -} - -.pl-1, -.px-1 { - padding-left: 0.25rem !important; -} - -.p-2 { - padding: 0.5rem !important; -} - -.pt-2, -.py-2 { - padding-top: 0.5rem !important; -} - -.pr-2, -.px-2 { - padding-right: 0.5rem !important; -} - -.pb-2, -.py-2 { - padding-bottom: 0.5rem !important; -} - -.pl-2, -.px-2 { - padding-left: 0.5rem !important; -} - -.p-3 { - padding: 1rem !important; -} - -.pt-3, -.py-3 { - padding-top: 1rem !important; -} - -.pr-3, -.px-3 { - padding-right: 1rem !important; -} - -.pb-3, -.py-3 { - padding-bottom: 1rem !important; -} - -.pl-3, -.px-3 { - padding-left: 1rem !important; -} - -.p-4 { - padding: 1.5rem !important; -} - -.pt-4, -.py-4 { - padding-top: 1.5rem !important; -} - -.pr-4, -.px-4 { - padding-right: 1.5rem !important; -} - -.pb-4, -.py-4 { - padding-bottom: 1.5rem !important; -} - -.pl-4, -.px-4 { - padding-left: 1.5rem !important; -} - -.p-5 { - padding: 3rem !important; -} - -.pt-5, -.py-5 { - padding-top: 3rem !important; -} - -.pr-5, -.px-5 { - padding-right: 3rem !important; -} - -.pb-5, -.py-5 { - padding-bottom: 3rem !important; -} - -.pl-5, -.px-5 { - padding-left: 3rem !important; -} - -.m-auto { - margin: auto !important; -} - -.mt-auto, -.my-auto { - margin-top: auto !important; -} - -.mr-auto, -.mx-auto { - margin-right: auto !important; -} - -.mb-auto, -.my-auto { - margin-bottom: auto !important; -} - -.ml-auto, -.mx-auto { - margin-left: auto !important; -} - -@media (min-width: 576px) { - .m-sm-0 { - margin: 0 !important; - } - .mt-sm-0, -.my-sm-0 { - margin-top: 0 !important; - } - .mr-sm-0, -.mx-sm-0 { - margin-right: 0 !important; - } - .mb-sm-0, -.my-sm-0 { - margin-bottom: 0 !important; - } - .ml-sm-0, -.mx-sm-0 { - margin-left: 0 !important; - } - .m-sm-1 { - margin: 0.25rem !important; - } - .mt-sm-1, -.my-sm-1 { - margin-top: 0.25rem !important; - } - .mr-sm-1, -.mx-sm-1 { - margin-right: 0.25rem !important; - } - .mb-sm-1, -.my-sm-1 { - margin-bottom: 0.25rem !important; - } - .ml-sm-1, -.mx-sm-1 { - margin-left: 0.25rem !important; - } - .m-sm-2 { - margin: 0.5rem !important; - } - .mt-sm-2, -.my-sm-2 { - margin-top: 0.5rem !important; - } - .mr-sm-2, -.mx-sm-2 { - margin-right: 0.5rem !important; - } - .mb-sm-2, -.my-sm-2 { - margin-bottom: 0.5rem !important; - } - .ml-sm-2, -.mx-sm-2 { - margin-left: 0.5rem !important; - } - .m-sm-3 { - margin: 1rem !important; - } - .mt-sm-3, -.my-sm-3 { - margin-top: 1rem !important; - } - .mr-sm-3, -.mx-sm-3 { - margin-right: 1rem !important; - } - .mb-sm-3, -.my-sm-3 { - margin-bottom: 1rem !important; - } - .ml-sm-3, -.mx-sm-3 { - margin-left: 1rem !important; - } - .m-sm-4 { - margin: 1.5rem !important; - } - .mt-sm-4, -.my-sm-4 { - margin-top: 1.5rem !important; - } - .mr-sm-4, -.mx-sm-4 { - margin-right: 1.5rem !important; - } - .mb-sm-4, -.my-sm-4 { - margin-bottom: 1.5rem !important; - } - .ml-sm-4, -.mx-sm-4 { - margin-left: 1.5rem !important; - } - .m-sm-5 { - margin: 3rem !important; - } - .mt-sm-5, -.my-sm-5 { - margin-top: 3rem !important; - } - .mr-sm-5, -.mx-sm-5 { - margin-right: 3rem !important; - } - .mb-sm-5, -.my-sm-5 { - margin-bottom: 3rem !important; - } - .ml-sm-5, -.mx-sm-5 { - margin-left: 3rem !important; - } - .p-sm-0 { - padding: 0 !important; - } - .pt-sm-0, -.py-sm-0 { - padding-top: 0 !important; - } - .pr-sm-0, -.px-sm-0 { - padding-right: 0 !important; - } - .pb-sm-0, -.py-sm-0 { - padding-bottom: 0 !important; - } - .pl-sm-0, -.px-sm-0 { - padding-left: 0 !important; - } - .p-sm-1 { - padding: 0.25rem !important; - } - .pt-sm-1, -.py-sm-1 { - padding-top: 0.25rem !important; - } - .pr-sm-1, -.px-sm-1 { - padding-right: 0.25rem !important; - } - .pb-sm-1, -.py-sm-1 { - padding-bottom: 0.25rem !important; - } - .pl-sm-1, -.px-sm-1 { - padding-left: 0.25rem !important; - } - .p-sm-2 { - padding: 0.5rem !important; - } - .pt-sm-2, -.py-sm-2 { - padding-top: 0.5rem !important; - } - .pr-sm-2, -.px-sm-2 { - padding-right: 0.5rem !important; - } - .pb-sm-2, -.py-sm-2 { - padding-bottom: 0.5rem !important; - } - .pl-sm-2, -.px-sm-2 { - padding-left: 0.5rem !important; - } - .p-sm-3 { - padding: 1rem !important; - } - .pt-sm-3, -.py-sm-3 { - padding-top: 1rem !important; - } - .pr-sm-3, -.px-sm-3 { - padding-right: 1rem !important; - } - .pb-sm-3, -.py-sm-3 { - padding-bottom: 1rem !important; - } - .pl-sm-3, -.px-sm-3 { - padding-left: 1rem !important; - } - .p-sm-4 { - padding: 1.5rem !important; - } - .pt-sm-4, -.py-sm-4 { - padding-top: 1.5rem !important; - } - .pr-sm-4, -.px-sm-4 { - padding-right: 1.5rem !important; - } - .pb-sm-4, -.py-sm-4 { - padding-bottom: 1.5rem !important; - } - .pl-sm-4, -.px-sm-4 { - padding-left: 1.5rem !important; - } - .p-sm-5 { - padding: 3rem !important; - } - .pt-sm-5, -.py-sm-5 { - padding-top: 3rem !important; - } - .pr-sm-5, -.px-sm-5 { - padding-right: 3rem !important; - } - .pb-sm-5, -.py-sm-5 { - padding-bottom: 3rem !important; - } - .pl-sm-5, -.px-sm-5 { - padding-left: 3rem !important; - } - .m-sm-auto { - margin: auto !important; - } - .mt-sm-auto, -.my-sm-auto { - margin-top: auto !important; - } - .mr-sm-auto, -.mx-sm-auto { - margin-right: auto !important; - } - .mb-sm-auto, -.my-sm-auto { - margin-bottom: auto !important; - } - .ml-sm-auto, -.mx-sm-auto { - margin-left: auto !important; - } -} -@media (min-width: 768px) { - .m-md-0 { - margin: 0 !important; - } - .mt-md-0, -.my-md-0 { - margin-top: 0 !important; - } - .mr-md-0, -.mx-md-0 { - margin-right: 0 !important; - } - .mb-md-0, -.my-md-0 { - margin-bottom: 0 !important; - } - .ml-md-0, -.mx-md-0 { - margin-left: 0 !important; - } - .m-md-1 { - margin: 0.25rem !important; - } - .mt-md-1, -.my-md-1 { - margin-top: 0.25rem !important; - } - .mr-md-1, -.mx-md-1 { - margin-right: 0.25rem !important; - } - .mb-md-1, -.my-md-1 { - margin-bottom: 0.25rem !important; - } - .ml-md-1, -.mx-md-1 { - margin-left: 0.25rem !important; - } - .m-md-2 { - margin: 0.5rem !important; - } - .mt-md-2, -.my-md-2 { - margin-top: 0.5rem !important; - } - .mr-md-2, -.mx-md-2 { - margin-right: 0.5rem !important; - } - .mb-md-2, -.my-md-2 { - margin-bottom: 0.5rem !important; - } - .ml-md-2, -.mx-md-2 { - margin-left: 0.5rem !important; - } - .m-md-3 { - margin: 1rem !important; - } - .mt-md-3, -.my-md-3 { - margin-top: 1rem !important; - } - .mr-md-3, -.mx-md-3 { - margin-right: 1rem !important; - } - .mb-md-3, -.my-md-3 { - margin-bottom: 1rem !important; - } - .ml-md-3, -.mx-md-3 { - margin-left: 1rem !important; - } - .m-md-4 { - margin: 1.5rem !important; - } - .mt-md-4, -.my-md-4 { - margin-top: 1.5rem !important; - } - .mr-md-4, -.mx-md-4 { - margin-right: 1.5rem !important; - } - .mb-md-4, -.my-md-4 { - margin-bottom: 1.5rem !important; - } - .ml-md-4, -.mx-md-4 { - margin-left: 1.5rem !important; - } - .m-md-5 { - margin: 3rem !important; - } - .mt-md-5, -.my-md-5 { - margin-top: 3rem !important; - } - .mr-md-5, -.mx-md-5 { - margin-right: 3rem !important; - } - .mb-md-5, -.my-md-5 { - margin-bottom: 3rem !important; - } - .ml-md-5, -.mx-md-5 { - margin-left: 3rem !important; - } - .p-md-0 { - padding: 0 !important; - } - .pt-md-0, -.py-md-0 { - padding-top: 0 !important; - } - .pr-md-0, -.px-md-0 { - padding-right: 0 !important; - } - .pb-md-0, -.py-md-0 { - padding-bottom: 0 !important; - } - .pl-md-0, -.px-md-0 { - padding-left: 0 !important; - } - .p-md-1 { - padding: 0.25rem !important; - } - .pt-md-1, -.py-md-1 { - padding-top: 0.25rem !important; - } - .pr-md-1, -.px-md-1 { - padding-right: 0.25rem !important; - } - .pb-md-1, -.py-md-1 { - padding-bottom: 0.25rem !important; - } - .pl-md-1, -.px-md-1 { - padding-left: 0.25rem !important; - } - .p-md-2 { - padding: 0.5rem !important; - } - .pt-md-2, -.py-md-2 { - padding-top: 0.5rem !important; - } - .pr-md-2, -.px-md-2 { - padding-right: 0.5rem !important; - } - .pb-md-2, -.py-md-2 { - padding-bottom: 0.5rem !important; - } - .pl-md-2, -.px-md-2 { - padding-left: 0.5rem !important; - } - .p-md-3 { - padding: 1rem !important; - } - .pt-md-3, -.py-md-3 { - padding-top: 1rem !important; - } - .pr-md-3, -.px-md-3 { - padding-right: 1rem !important; - } - .pb-md-3, -.py-md-3 { - padding-bottom: 1rem !important; - } - .pl-md-3, -.px-md-3 { - padding-left: 1rem !important; - } - .p-md-4 { - padding: 1.5rem !important; - } - .pt-md-4, -.py-md-4 { - padding-top: 1.5rem !important; - } - .pr-md-4, -.px-md-4 { - padding-right: 1.5rem !important; - } - .pb-md-4, -.py-md-4 { - padding-bottom: 1.5rem !important; - } - .pl-md-4, -.px-md-4 { - padding-left: 1.5rem !important; - } - .p-md-5 { - padding: 3rem !important; - } - .pt-md-5, -.py-md-5 { - padding-top: 3rem !important; - } - .pr-md-5, -.px-md-5 { - padding-right: 3rem !important; - } - .pb-md-5, -.py-md-5 { - padding-bottom: 3rem !important; - } - .pl-md-5, -.px-md-5 { - padding-left: 3rem !important; - } - .m-md-auto { - margin: auto !important; - } - .mt-md-auto, -.my-md-auto { - margin-top: auto !important; - } - .mr-md-auto, -.mx-md-auto { - margin-right: auto !important; - } - .mb-md-auto, -.my-md-auto { - margin-bottom: auto !important; - } - .ml-md-auto, -.mx-md-auto { - margin-left: auto !important; - } -} -@media (min-width: 992px) { - .m-lg-0 { - margin: 0 !important; - } - .mt-lg-0, -.my-lg-0 { - margin-top: 0 !important; - } - .mr-lg-0, -.mx-lg-0 { - margin-right: 0 !important; - } - .mb-lg-0, -.my-lg-0 { - margin-bottom: 0 !important; - } - .ml-lg-0, -.mx-lg-0 { - margin-left: 0 !important; - } - .m-lg-1 { - margin: 0.25rem !important; - } - .mt-lg-1, -.my-lg-1 { - margin-top: 0.25rem !important; - } - .mr-lg-1, -.mx-lg-1 { - margin-right: 0.25rem !important; - } - .mb-lg-1, -.my-lg-1 { - margin-bottom: 0.25rem !important; - } - .ml-lg-1, -.mx-lg-1 { - margin-left: 0.25rem !important; - } - .m-lg-2 { - margin: 0.5rem !important; - } - .mt-lg-2, -.my-lg-2 { - margin-top: 0.5rem !important; - } - .mr-lg-2, -.mx-lg-2 { - margin-right: 0.5rem !important; - } - .mb-lg-2, -.my-lg-2 { - margin-bottom: 0.5rem !important; - } - .ml-lg-2, -.mx-lg-2 { - margin-left: 0.5rem !important; - } - .m-lg-3 { - margin: 1rem !important; - } - .mt-lg-3, -.my-lg-3 { - margin-top: 1rem !important; - } - .mr-lg-3, -.mx-lg-3 { - margin-right: 1rem !important; - } - .mb-lg-3, -.my-lg-3 { - margin-bottom: 1rem !important; - } - .ml-lg-3, -.mx-lg-3 { - margin-left: 1rem !important; - } - .m-lg-4 { - margin: 1.5rem !important; - } - .mt-lg-4, -.my-lg-4 { - margin-top: 1.5rem !important; - } - .mr-lg-4, -.mx-lg-4 { - margin-right: 1.5rem !important; - } - .mb-lg-4, -.my-lg-4 { - margin-bottom: 1.5rem !important; - } - .ml-lg-4, -.mx-lg-4 { - margin-left: 1.5rem !important; - } - .m-lg-5 { - margin: 3rem !important; - } - .mt-lg-5, -.my-lg-5 { - margin-top: 3rem !important; - } - .mr-lg-5, -.mx-lg-5 { - margin-right: 3rem !important; - } - .mb-lg-5, -.my-lg-5 { - margin-bottom: 3rem !important; - } - .ml-lg-5, -.mx-lg-5 { - margin-left: 3rem !important; - } - .p-lg-0 { - padding: 0 !important; - } - .pt-lg-0, -.py-lg-0 { - padding-top: 0 !important; - } - .pr-lg-0, -.px-lg-0 { - padding-right: 0 !important; - } - .pb-lg-0, -.py-lg-0 { - padding-bottom: 0 !important; - } - .pl-lg-0, -.px-lg-0 { - padding-left: 0 !important; - } - .p-lg-1 { - padding: 0.25rem !important; - } - .pt-lg-1, -.py-lg-1 { - padding-top: 0.25rem !important; - } - .pr-lg-1, -.px-lg-1 { - padding-right: 0.25rem !important; - } - .pb-lg-1, -.py-lg-1 { - padding-bottom: 0.25rem !important; - } - .pl-lg-1, -.px-lg-1 { - padding-left: 0.25rem !important; - } - .p-lg-2 { - padding: 0.5rem !important; - } - .pt-lg-2, -.py-lg-2 { - padding-top: 0.5rem !important; - } - .pr-lg-2, -.px-lg-2 { - padding-right: 0.5rem !important; - } - .pb-lg-2, -.py-lg-2 { - padding-bottom: 0.5rem !important; - } - .pl-lg-2, -.px-lg-2 { - padding-left: 0.5rem !important; - } - .p-lg-3 { - padding: 1rem !important; - } - .pt-lg-3, -.py-lg-3 { - padding-top: 1rem !important; - } - .pr-lg-3, -.px-lg-3 { - padding-right: 1rem !important; - } - .pb-lg-3, -.py-lg-3 { - padding-bottom: 1rem !important; - } - .pl-lg-3, -.px-lg-3 { - padding-left: 1rem !important; - } - .p-lg-4 { - padding: 1.5rem !important; - } - .pt-lg-4, -.py-lg-4 { - padding-top: 1.5rem !important; - } - .pr-lg-4, -.px-lg-4 { - padding-right: 1.5rem !important; - } - .pb-lg-4, -.py-lg-4 { - padding-bottom: 1.5rem !important; - } - .pl-lg-4, -.px-lg-4 { - padding-left: 1.5rem !important; - } - .p-lg-5 { - padding: 3rem !important; - } - .pt-lg-5, -.py-lg-5 { - padding-top: 3rem !important; - } - .pr-lg-5, -.px-lg-5 { - padding-right: 3rem !important; - } - .pb-lg-5, -.py-lg-5 { - padding-bottom: 3rem !important; - } - .pl-lg-5, -.px-lg-5 { - padding-left: 3rem !important; - } - .m-lg-auto { - margin: auto !important; - } - .mt-lg-auto, -.my-lg-auto { - margin-top: auto !important; - } - .mr-lg-auto, -.mx-lg-auto { - margin-right: auto !important; - } - .mb-lg-auto, -.my-lg-auto { - margin-bottom: auto !important; - } - .ml-lg-auto, -.mx-lg-auto { - margin-left: auto !important; - } -} -@media (min-width: 1200px) { - .m-xl-0 { - margin: 0 !important; - } - .mt-xl-0, -.my-xl-0 { - margin-top: 0 !important; - } - .mr-xl-0, -.mx-xl-0 { - margin-right: 0 !important; - } - .mb-xl-0, -.my-xl-0 { - margin-bottom: 0 !important; - } - .ml-xl-0, -.mx-xl-0 { - margin-left: 0 !important; - } - .m-xl-1 { - margin: 0.25rem !important; - } - .mt-xl-1, -.my-xl-1 { - margin-top: 0.25rem !important; - } - .mr-xl-1, -.mx-xl-1 { - margin-right: 0.25rem !important; - } - .mb-xl-1, -.my-xl-1 { - margin-bottom: 0.25rem !important; - } - .ml-xl-1, -.mx-xl-1 { - margin-left: 0.25rem !important; - } - .m-xl-2 { - margin: 0.5rem !important; - } - .mt-xl-2, -.my-xl-2 { - margin-top: 0.5rem !important; - } - .mr-xl-2, -.mx-xl-2 { - margin-right: 0.5rem !important; - } - .mb-xl-2, -.my-xl-2 { - margin-bottom: 0.5rem !important; - } - .ml-xl-2, -.mx-xl-2 { - margin-left: 0.5rem !important; - } - .m-xl-3 { - margin: 1rem !important; - } - .mt-xl-3, -.my-xl-3 { - margin-top: 1rem !important; - } - .mr-xl-3, -.mx-xl-3 { - margin-right: 1rem !important; - } - .mb-xl-3, -.my-xl-3 { - margin-bottom: 1rem !important; - } - .ml-xl-3, -.mx-xl-3 { - margin-left: 1rem !important; - } - .m-xl-4 { - margin: 1.5rem !important; - } - .mt-xl-4, -.my-xl-4 { - margin-top: 1.5rem !important; - } - .mr-xl-4, -.mx-xl-4 { - margin-right: 1.5rem !important; - } - .mb-xl-4, -.my-xl-4 { - margin-bottom: 1.5rem !important; - } - .ml-xl-4, -.mx-xl-4 { - margin-left: 1.5rem !important; - } - .m-xl-5 { - margin: 3rem !important; - } - .mt-xl-5, -.my-xl-5 { - margin-top: 3rem !important; - } - .mr-xl-5, -.mx-xl-5 { - margin-right: 3rem !important; - } - .mb-xl-5, -.my-xl-5 { - margin-bottom: 3rem !important; - } - .ml-xl-5, -.mx-xl-5 { - margin-left: 3rem !important; - } - .p-xl-0 { - padding: 0 !important; - } - .pt-xl-0, -.py-xl-0 { - padding-top: 0 !important; - } - .pr-xl-0, -.px-xl-0 { - padding-right: 0 !important; - } - .pb-xl-0, -.py-xl-0 { - padding-bottom: 0 !important; - } - .pl-xl-0, -.px-xl-0 { - padding-left: 0 !important; - } - .p-xl-1 { - padding: 0.25rem !important; - } - .pt-xl-1, -.py-xl-1 { - padding-top: 0.25rem !important; - } - .pr-xl-1, -.px-xl-1 { - padding-right: 0.25rem !important; - } - .pb-xl-1, -.py-xl-1 { - padding-bottom: 0.25rem !important; - } - .pl-xl-1, -.px-xl-1 { - padding-left: 0.25rem !important; - } - .p-xl-2 { - padding: 0.5rem !important; - } - .pt-xl-2, -.py-xl-2 { - padding-top: 0.5rem !important; - } - .pr-xl-2, -.px-xl-2 { - padding-right: 0.5rem !important; - } - .pb-xl-2, -.py-xl-2 { - padding-bottom: 0.5rem !important; - } - .pl-xl-2, -.px-xl-2 { - padding-left: 0.5rem !important; - } - .p-xl-3 { - padding: 1rem !important; - } - .pt-xl-3, -.py-xl-3 { - padding-top: 1rem !important; - } - .pr-xl-3, -.px-xl-3 { - padding-right: 1rem !important; - } - .pb-xl-3, -.py-xl-3 { - padding-bottom: 1rem !important; - } - .pl-xl-3, -.px-xl-3 { - padding-left: 1rem !important; - } - .p-xl-4 { - padding: 1.5rem !important; - } - .pt-xl-4, -.py-xl-4 { - padding-top: 1.5rem !important; - } - .pr-xl-4, -.px-xl-4 { - padding-right: 1.5rem !important; - } - .pb-xl-4, -.py-xl-4 { - padding-bottom: 1.5rem !important; - } - .pl-xl-4, -.px-xl-4 { - padding-left: 1.5rem !important; - } - .p-xl-5 { - padding: 3rem !important; - } - .pt-xl-5, -.py-xl-5 { - padding-top: 3rem !important; - } - .pr-xl-5, -.px-xl-5 { - padding-right: 3rem !important; - } - .pb-xl-5, -.py-xl-5 { - padding-bottom: 3rem !important; - } - .pl-xl-5, -.px-xl-5 { - padding-left: 3rem !important; - } - .m-xl-auto { - margin: auto !important; - } - .mt-xl-auto, -.my-xl-auto { - margin-top: auto !important; - } - .mr-xl-auto, -.mx-xl-auto { - margin-right: auto !important; - } - .mb-xl-auto, -.my-xl-auto { - margin-bottom: auto !important; - } - .ml-xl-auto, -.mx-xl-auto { - margin-left: auto !important; - } -} -.text-justify { - text-align: justify !important; -} - -.text-nowrap { - white-space: nowrap !important; -} - -.text-truncate { - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; -} - -.text-left { - text-align: left !important; -} - -.text-right { - text-align: right !important; -} - -.text-center { - text-align: center !important; -} - -@media (min-width: 576px) { - .text-sm-left { - text-align: left !important; - } - .text-sm-right { - text-align: right !important; - } - .text-sm-center { - text-align: center !important; - } -} -@media (min-width: 768px) { - .text-md-left { - text-align: left !important; - } - .text-md-right { - text-align: right !important; - } - .text-md-center { - text-align: center !important; - } -} -@media (min-width: 992px) { - .text-lg-left { - text-align: left !important; - } - .text-lg-right { - text-align: right !important; - } - .text-lg-center { - text-align: center !important; - } -} -@media (min-width: 1200px) { - .text-xl-left { - text-align: left !important; - } - .text-xl-right { - text-align: right !important; - } - .text-xl-center { - text-align: center !important; - } -} -.text-lowercase { - text-transform: lowercase !important; -} - -.text-uppercase { - text-transform: uppercase !important; -} - -.text-capitalize { - text-transform: capitalize !important; -} - -.font-weight-light { - font-weight: 300 !important; -} - -.font-weight-normal { - font-weight: 400 !important; -} - -.font-weight-bold { - font-weight: 700 !important; -} - -.font-italic { - font-style: italic !important; -} - -.text-white { - color: #fff !important; -} - -.text-primary { - color: #007bff !important; -} - -a.text-primary:focus, a.text-primary:hover { - color: #0062cc !important; -} - -.text-secondary { - color: #868e96 !important; -} - -a.text-secondary:focus, a.text-secondary:hover { - color: #6c757d !important; -} - -.text-success { - color: #28a745 !important; -} - -a.text-success:focus, a.text-success:hover { - color: #1e7e34 !important; -} - -.text-info { - color: #17a2b8 !important; -} - -a.text-info:focus, a.text-info:hover { - color: #117a8b !important; -} - -.text-warning { - color: #ffc107 !important; -} - -a.text-warning:focus, a.text-warning:hover { - color: #d39e00 !important; -} - -.text-danger { - color: #dc3545 !important; -} - -a.text-danger:focus, a.text-danger:hover { - color: #bd2130 !important; -} - -.text-light { - color: #f8f9fa !important; -} - -a.text-light:focus, a.text-light:hover { - color: #dae0e5 !important; -} - -.text-dark { - color: #343a40 !important; -} - -a.text-dark:focus, a.text-dark:hover { - color: #1d2124 !important; -} - -.text-muted, -.member-type, .member-namespace { - color: #868e96 !important; -} - -.text-hide { - font: 0/0 a; - color: transparent; - text-shadow: none; - background-color: transparent; - border: 0; -} - -.visible { - visibility: visible !important; -} - -.invisible { - visibility: hidden !important; -} - -/*# sourceMappingURL=bootstrap.css.map */ -/** - * Syntax highlighting styles - */ -.highlight { - background: #f6f8fa; - padding: 1rem 0 0.1rem 1rem; - margin-bottom: 1rem; -} -.highlight .c { - color: #998; - font-style: italic; -} -.highlight .err { - color: #a61717; - background-color: #e3d2d2; -} -.highlight .k { - font-weight: bold; -} -.highlight .o { - font-weight: bold; -} -.highlight .cm { - color: #998; - font-style: italic; -} -.highlight .cp { - color: #999; - font-weight: bold; -} -.highlight .c1 { - color: #998; - font-style: italic; -} -.highlight .cs { - color: #999; - font-weight: bold; - font-style: italic; -} -.highlight .gd { - color: #000; - background-color: #fdd; -} -.highlight .gd .x { - color: #000; - background-color: #faa; -} -.highlight .ge { - font-style: italic; -} -.highlight .gr { - color: #a00; -} -.highlight .gh { - color: #999; -} -.highlight .gi { - color: #000; - background-color: #dfd; -} -.highlight .gi .x { - color: #000; - background-color: #afa; -} -.highlight .go { - color: #888; -} -.highlight .gp { - color: #555; -} -.highlight .gs { - font-weight: bold; -} -.highlight .gu { - color: #aaa; -} -.highlight .gt { - color: #a00; -} -.highlight .kc { - font-weight: bold; -} -.highlight .kd { - font-weight: bold; -} -.highlight .kp { - font-weight: bold; -} -.highlight .kr { - font-weight: bold; -} -.highlight .kt { - color: #458; - font-weight: bold; -} -.highlight .m { - color: #099; -} -.highlight .s { - color: #d14; -} -.highlight .na { - color: #008080; -} -.highlight .nb { - color: #0086B3; -} -.highlight .nc { - color: #458; - font-weight: bold; -} -.highlight .no { - color: #008080; -} -.highlight .ni { - color: #800080; -} -.highlight .ne { - color: #900; - font-weight: bold; -} -.highlight .nf { - color: #900; - font-weight: bold; -} -.highlight .nn { - color: #555; -} -.highlight .nt { - color: #000080; -} -.highlight .nv { - color: #008080; -} -.highlight .ow { - font-weight: bold; -} -.highlight .w { - color: #bbb; -} -.highlight .mf { - color: #099; -} -.highlight .mh { - color: #099; -} -.highlight .mi { - color: #099; -} -.highlight .mo { - color: #099; -} -.highlight .sb { - color: #d14; -} -.highlight .sc { - color: #d14; -} -.highlight .sd { - color: #d14; -} -.highlight .s2 { - color: #d14; -} -.highlight .se { - color: #d14; -} -.highlight .sh { - color: #d14; -} -.highlight .si { - color: #d14; -} -.highlight .sx { - color: #d14; -} -.highlight .sr { - color: #009926; -} -.highlight .s1 { - color: #d14; -} -.highlight .ss { - color: #990073; -} -.highlight .bp { - color: #999; -} -.highlight .vc { - color: #008080; -} -.highlight .vg { - color: #008080; -} -.highlight .vi { - color: #008080; -} -.highlight .il { - color: #099; -} - -.highlight .hll { - background-color: #ffffcc; -} - -.highlight .c { - color: #008000; -} /* Comment */ -.highlight .err { - border: 1px solid #FF0000; -} /* Error */ -.highlight .k { - color: #0000ff; -} /* Keyword */ -.highlight .ch { - color: #008000; -} /* Comment.Hashbang */ -.highlight .cm { - color: #008000; -} /* Comment.Multiline */ -.highlight .cp { - color: #0000ff; -} /* Comment.Preproc */ -.highlight .cpf { - color: #008000; -} /* Comment.PreprocFile */ -.highlight .c1 { - color: #008000; -} /* Comment.Single */ -.highlight .cs { - color: #008000; -} /* Comment.Special */ -.highlight .ge { - font-style: italic; -} /* Generic.Emph */ -.highlight .gh { - font-weight: bold; -} /* Generic.Heading */ -.highlight .gp { - font-weight: bold; -} /* Generic.Prompt */ -.highlight .gs { - font-weight: bold; -} /* Generic.Strong */ -.highlight .gu { - font-weight: bold; -} /* Generic.Subheading */ -.highlight .kc { - color: #0000ff; -} /* Keyword.Constant */ -.highlight .kd { - color: #0000ff; -} /* Keyword.Declaration */ -.highlight .kn { - color: #0000ff; -} /* Keyword.Namespace */ -.highlight .kp { - color: #0000ff; -} /* Keyword.Pseudo */ -.highlight .kr { - color: #0000ff; -} /* Keyword.Reserved */ -.highlight .kt { - color: #2b91af; -} /* Keyword.Type */ -.highlight .s { - color: #a31515; -} /* Literal.String */ -.highlight .nc { - color: #2b91af; -} /* Name.Class */ -.highlight .ow { - color: #0000ff; -} /* Operator.Word */ -.highlight .sa { - color: #a31515; -} /* Literal.String.Affix */ -.highlight .sb { - color: #a31515; -} /* Literal.String.Backtick */ -.highlight .sc { - color: #a31515; -} /* Literal.String.Char */ -.highlight .dl { - color: #a31515; -} /* Literal.String.Delimiter */ -.highlight .sd { - color: #a31515; -} /* Literal.String.Doc */ -.highlight .s2 { - color: #a31515; -} /* Literal.String.Double */ -.highlight .se { - color: #a31515; -} /* Literal.String.Escape */ -.highlight .sh { - color: #a31515; -} /* Literal.String.Heredoc */ -.highlight .si { - color: #a31515; -} /* Literal.String.Interpol */ -.highlight .sx { - color: #a31515; -} /* Literal.String.Other */ -.highlight .sr { - color: #a31515; -} /* Literal.String.Regex */ -.highlight .s1 { - color: #a31515; -} /* Literal.String.Single */ -.highlight .ss { - color: #a31515; -} /* Literal.String.Symbol */ -body { - padding-top: 56px; - width: 100%; - height: 100%; -} - -footer { - position: fixed; - bottom: 0; - width: 100%; - background-color: #56A1D5; - color: #222222; - font-size: 0.8em; - padding-left: 1rem; -} -footer a { - color: #222222 !important; -} - -main { - height: calc(100% - 74px); - width: 100%; - -webkit-transition: all 0.4s ease 0s; - transition: all 0.4s ease 0s; -} -main h1, -main .h1 { - margin-top: 1.5rem; - text-transform: capitalize; -} -main h2, -main .h2 { - margin-top: 3rem; - text-transform: capitalize; -} -main h3, -main h4, -main h5, -main h6, -main .h3, -main .h4, -main .h5, -main .h6 { - margin-top: 2rem; - text-transform: capitalize; -} -main ul ul { - margin-bottom: 1em; -} -main article { - margin-bottom: 5rem; -} - -code { - overflow-wrap: break-word; - word-wrap: break-word; - -ms-word-break: break-all; - word-break: break-all; - word-break: break-word; -} - -blockquote { - padding: 1rem; - border-left: 3px solid #0B4B77; -} -blockquote p { - margin: 0; -} - -.bg-dark { - background-color: #0B4B77 !important; -} - -.btn-primary, .member-runner-link { - background-color: #0275D8; - border-color: #3983c3; -} - -.btn-primary:hover, .member-runner-link:hover { - background-color: #3983c3; -} - -.embed-responsive { - margin-bottom: 2rem; - max-width: 800px; -} - -.jumbotron img { - width: 1em; - height: 1em; -} - -.jumbotron { - margin-bottom: 3em; -} - -.welcome { - max-height: 350px; -} - -.header .header-link { - opacity: 0; - -webkit-transition: opacity 0.2s linear; - transition: opacity 0.2s linear; -} - -.header:hover .header-link:not(:hover), -.header-link:hover { - opacity: 1; -} - -.beta { - font-size: 0.8rem; - font-weight: normal; - background-color: #0275D8; -} - -.legacy { - font-size: 0.8rem; - font-weight: normal; - background-color: #ea1f56; -} - -.sticky-warning { /* Safari */ - position: sticky; - top: 0; - z-index: 1031; -} - -.member { - margin: 1rem 0; -} - -.member-name { - margin-top: auto; -} - -.member-info table { - margin-bottom: 0; -} - -.member-namespace { - font-size: 0.8rem; - font-weight: normal; -} - -.member-type { - display: none; -} - -.member-runner-link { - float: right; -} - -.member-parameters-list ul { - margin: 0; -} - -.member-parameters-list-param.enum-property { - text-transform: capitalize; -} - -@media (min-width: 768px) { - #api-reference-search { - position: sticky; - z-index: 1040; - top: 0.5rem; - max-width: 30rem; - float: right; - } -} -.autocomplete { - position: absolute; - border: 1px solid #ddd; - background-color: #fff; - color: #444; - list-style: none; - padding: 2px; - margin: 0; - cursor: pointer; - z-index: 10000; - max-height: 300px; - overflow-y: auto; - overflow-x: hidden; - border-radius: 3px; - -webkit-transform: translateZ(0); - min-width: 200px; -} - -.autocompleteActive { - font-size: 0.9em; - max-height: 50%; - overflow-x: hidden; - overflow-y: auto; - padding: 2px 0.4em; - line-height: 1.5em; -} - -.autocompleteStatic { - font-weight: bold; - margin: 0.8em 0 0.2em; - background: #f7f7f7; - overflow: auto; - padding: 2px 0.4em; - line-height: 1.5em; -} - -.autocompleteLink { - text-decoration: none; - display: block; - color: #000; -} - -.autocompleteActive.activeHover { - background-color: #0073ea; -} - -.autocompleteActive.activeHover > .autocompleteLink { - color: #fff; -} - -/* -* Sidebar -*/ -#wrapper { - padding-left: 250px; - -webkit-transition: all 0.4s ease 0s; - transition: all 0.4s ease 0s; -} - -#sidebar-wrapper { - margin-left: -250px; - top: 56px; - left: 250px; - width: 250px; - position: fixed; - height: calc(100% - 56px); - overflow-y: auto; - overflow-x: hidden; - z-index: 1000; - -webkit-transition: all 0.4s ease 0s; - transition: all 0.4s ease 0s; - border-right: 1px solid #eee; - padding: 30px 0; -} - -#wrapper.active { - padding-left: 0; -} - -#wrapper.active #sidebar-wrapper { - left: 0; -} - -.sidebar { - position: absolute; - width: 250px; - list-style: none; - margin: 0; - padding: 0; -} - -.sidebar h4, -.sidebar h5 { - padding-left: 16px; -} - -.sidebar .nav-item { - width: 100%; -} - -.sidebar .nav-item + .nav-item { - margin-left: 0; -} - -.sidebar .nav-link { - border-radius: 0; -} - -.sidebar h5:first-of-type { - margin-top: 10px; -} - -@media (max-width: 767px) { - #wrapper { - padding-left: 0; - } - #sidebar-wrapper { - left: 0; - } - #wrapper.active { - position: relative; - left: 250px; - } - #wrapper.active #sidebar-wrapper { - left: 250px; - width: 250px; - -webkit-transition: all 0.4s ease 0s; - transition: all 0.4s ease 0s; - } -} -a { - color: #006FE6; -} -/*# sourceMappingURL=style.css.map */ diff --git a/assets/stylesheets/style.css.map b/assets/stylesheets/style.css.map deleted file mode 100644 index dc0e3ffc1..000000000 --- a/assets/stylesheets/style.css.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["style.css","style.scss","boostrap.scss","syntax-highlighting.scss"],"names":[],"mappings":"AAAA,gBAAgB;ACAhB;;CAAA;ACAA;;;;;EAAA;AAMC;EACG,eAAA;EACA,iBAAA;EACA,iBAAA;EACA,eAAA;EACA,cAAA;EACA,iBAAA;EACA,iBAAA;EACA,gBAAA;EACA,eAAA;EACA,eAAA;EACA,aAAA;EACA,eAAA;EACA,oBAAA;EACA,kBAAA;EACA,oBAAA;EACA,kBAAA;EACA,eAAA;EACA,kBAAA;EACA,iBAAA;EACA,gBAAA;EACA,eAAA;EACA,kBAAA;EACA,sBAAA;EACA,sBAAA;EACA,sBAAA;EACA,uBAAA;EACA,8KAAA;EACA,6GAAA;AFKJ;;AEFE;EACE;;;IAGE,4BAAA;IACA,mCAAA;YAAA,2BAAA;EFKJ;EEHE;;IAEE,0BAAA;EFKJ;EEHE;IACE,6BAAA;EFKJ;EEHE;IACE,gCAAA;EFKJ;EEHE;;IAEE,sBAAA;IACA,wBAAA;EFKJ;EEHE;IACE,2BAAA;EFKJ;EEHE;;IAEE,wBAAA;EFKJ;EEHE;;;IAGE,UAAA;IACA,SAAA;EFKJ;EEHE;;IAEE,uBAAA;EFKJ;EEHE;IACE,aAAA;EFKJ;EEHE;IACE,sBAAA;EFKJ;EEHE;IACE,oCAAA;EFKJ;EEHE;;;IAEE,iCAAA;EFMJ;EEJE;;;IAEE,iCAAA;EFOJ;AACF;AEJE;;;EAGE,8BAAA;UAAA,sBAAA;AFMJ;;AEHE;EACE,uBAAA;EACA,iBAAA;EACA,8BAAA;EACA,0BAAA;EACA,6BAAA;EACA,wCAAA;AFMJ;;AEHE;EACE,mBAAA;AFMJ;AEHE;EACE,cAAA;AFKJ;;AEFE;EACE,SAAA;EACA,iKAAA;EACA,eAAA;EACA,gBAAA;EACA,gBAAA;EACA,cAAA;EACA,gBAAA;EACA,sBAAA;AFKJ;;AEFE;EACE,qBAAA;AFKJ;;AEFE;EACE,+BAAA;UAAA,uBAAA;EACA,SAAA;EACA,iBAAA;AFKJ;;AEFE;EACE,aAAA;EACA,qBAAA;AFKJ;;AEFE;EACE,aAAA;EACA,mBAAA;AFKJ;;AEFE;;EAEE,0BAAA;EACA,yCAAA;EACA,iCAAA;EACA,YAAA;EACA,gBAAA;AFKJ;;AEFE;EACE,mBAAA;EACA,kBAAA;EACA,oBAAA;AFKJ;;AEFE;;;EAGE,aAAA;EACA,mBAAA;AFKJ;;AEFE;;;;EAIE,gBAAA;AFKJ;;AEFE;EACE,gBAAA;AFKJ;;AEFE;EACE,qBAAA;EACA,cAAA;AFKJ;;AEFE;EACE,gBAAA;AFKJ;;AEFE;EACE,kBAAA;AFKJ;;AEFE;;EAEE,mBAAA;AFKJ;;AEFE;EACE,cAAA;AFKJ;;AEFE;;EAEE,kBAAA;EACA,cAAA;EACA,cAAA;EACA,wBAAA;AFKJ;;AEFE;EACE,eAAA;AFKJ;;AEFE;EACE,WAAA;AFKJ;;AEFE;EACE,cAAA;EACA,qBAAA;EACA,6BAAA;EACA,qCAAA;AFKJ;;AEFE;EACE,cAAA;EACA,0BAAA;AFKJ;;AEFE;EACE,cAAA;EACA,qBAAA;AFKJ;;AEFE;EACE,cAAA;EACA,qBAAA;AFKJ;;AEFE;EACE,UAAA;AFKJ;;AEFE;;;;EAIE,iCAAA;EACA,cAAA;AFKJ;;AEFE;EACE,aAAA;EACA,mBAAA;EACA,cAAA;EACA,6BAAA;AFKJ;;AEFE;EACE,gBAAA;AFKJ;;AEFE;EACE,sBAAA;EACA,kBAAA;AFKJ;;AEFE;EACE,gBAAA;AFKJ;;AEFE;;;;;;;;;EASE,8BAAA;EACA,0BAAA;AFKJ;;AEFE;EACE,yBAAA;AFKJ;;AEFE;EACE,oBAAA;EACA,uBAAA;EACA,cAAA;EACA,gBAAA;EACA,oBAAA;AFKJ;;AEFE;EACE,mBAAA;AFKJ;;AEFE;EACE,qBAAA;EACA,qBAAA;AFKJ;;AEFE;EACE,gBAAA;AFKJ;;AEFE;EACE,mBAAA;EACA,0CAAA;AFKJ;;AEFE;;;;;EAKE,SAAA;EACA,oBAAA;EACA,kBAAA;EACA,oBAAA;AFKJ;;AEFE;;EAEE,iBAAA;AFKJ;;AEFE;;EAEE,oBAAA;AFKJ;;AEFE;;;;EAIE,0BAAA;AFKJ;;AEFE;;;;EAIE,UAAA;EACA,kBAAA;AFKJ;;AEFE;;EAEE,8BAAA;UAAA,sBAAA;EACA,UAAA;AFKJ;;AEFE;;;;EAIE,2BAAA;AFKJ;;AEFE;EACE,cAAA;EACA,gBAAA;AFKJ;;AEFE;EACE,YAAA;EACA,UAAA;EACA,SAAA;EACA,SAAA;AFKJ;;AEFE;EACE,cAAA;EACA,WAAA;EACA,eAAA;EACA,UAAA;EACA,qBAAA;EACA,iBAAA;EACA,oBAAA;EACA,cAAA;EACA,mBAAA;AFKJ;;AEFE;EACE,wBAAA;AFKJ;;AEFE;;EAEE,YAAA;AFKJ;;AEFE;EACE,oBAAA;EACA,wBAAA;AFKJ;;AEFE;;EAEE,wBAAA;AFKJ;;AEFE;EACE,aAAA;EACA,0BAAA;AFKJ;;AEFE;EACE,qBAAA;AFKJ;;AEFE;EACE,kBAAA;AFKJ;;AEFE;EACE,aAAA;AFKJ;;AEFE;EACE,wBAAA;AFKJ;;AEFE;;EAEE,qBAAA;EACA,oBAAA;EACA,gBAAA;EACA,gBAAA;EACA,cAAA;AFKJ;;AEFE;EACE,iBAAA;AFKJ;;AEFE;EACE,eAAA;AFKJ;;AEFE;EACE,kBAAA;AFKJ;;AEFE;EACE,iBAAA;AFKJ;;AEFE;EACE,kBAAA;AFKJ;;AEFE;EACE,eAAA;AFKJ;;AEFE;EACE,kBAAA;EACA,gBAAA;AFKJ;;AEFE;EACE,eAAA;EACA,gBAAA;EACA,gBAAA;AFKJ;;AEFE;EACE,iBAAA;EACA,gBAAA;EACA,gBAAA;AFKJ;;AEFE;EACE,iBAAA;EACA,gBAAA;EACA,gBAAA;AFKJ;;AEFE;EACE,iBAAA;EACA,gBAAA;EACA,gBAAA;AFKJ;;AEFE;EACE,gBAAA;EACA,mBAAA;EACA,SAAA;EACA,wCAAA;AFKJ;;AEFE;;EAEE,cAAA;EACA,gBAAA;AFKJ;;AEFE;;EAEE,cAAA;EACA,yBAAA;AFKJ;;AEFE;EACE,eAAA;EACA,gBAAA;AFKJ;;AEFE;EACE,eAAA;EACA,gBAAA;AFKJ;;AEFE;EACE,qBAAA;AFKJ;;AEFE;EACE,oBAAA;AFKJ;;AEFE;EACE,cAAA;EACA,yBAAA;AFKJ;;AEFE;EACE,mBAAA;EACA,kBAAA;AFKJ;;AEFE;EACE,cAAA;EACA,cAAA;EACA,cAAA;AFKJ;;AEFE;EACE,aAAA;AFKJ;;AEFE;EACE,eAAA;EACA,YAAA;AFKJ;;AEFE;EACE,gBAAA;EACA,sBAAA;EACA,yBAAA;EACA,sBAAA;EACA,eAAA;EACA,YAAA;AFKJ;;AEFE;EACE,qBAAA;AFKJ;;AEFE;EACE,qBAAA;EACA,cAAA;AFKJ;;AEFE;EACE,cAAA;EACA,cAAA;AFKJ;;AEFE;;;;EAIE,iGAAA;AFKJ;;AEFE;EACE,sBAAA;EACA,cAAA;EACA,cAAA;EACA,yBAAA;EACA,sBAAA;AFKJ;;AEFE;EACE,UAAA;EACA,cAAA;EACA,yBAAA;AFKJ;;AEFE;EACE,sBAAA;EACA,cAAA;EACA,WAAA;EACA,yBAAA;EACA,qBAAA;AFKJ;;AEFE;EACE,UAAA;EACA,eAAA;EACA,gBAAA;AFKJ;;AEFE;EACE,cAAA;EACA,cAAA;EACA,cAAA;AFKJ;;AEFE;EACE,UAAA;EACA,kBAAA;EACA,cAAA;EACA,6BAAA;EACA,gBAAA;AFKJ;;AEFE;EACE,iBAAA;EACA,kBAAA;AFKJ;;AEFE;EACE,WAAA;EACA,mBAAA;EACA,kBAAA;EACA,kBAAA;EACA,iBAAA;AFKJ;;AEFE;EACE;IACE,gBAAA;EFKJ;AACF;AEFE;EACE;IACE,gBAAA;EFIJ;AACF;AEDE;EACE;IACE,gBAAA;EFGJ;AACF;AEAE;EACE;IACE,iBAAA;EFEJ;AACF;AECE;EACE,WAAA;EACA,mBAAA;EACA,kBAAA;EACA,kBAAA;EACA,iBAAA;AFCJ;;AEEE;EACE,oBAAA;EACA,oBAAA;EAAA,aAAA;EACA,mBAAA;EACA,eAAA;EACA,mBAAA;EACA,kBAAA;AFCJ;;AEEE;EACE,eAAA;EACA,cAAA;AFCJ;;AEEE;;EAEE,gBAAA;EACA,eAAA;AFCJ;;AEEE;;;;;;EAME,kBAAA;EACA,WAAA;EACA,eAAA;EACA,mBAAA;EACA,kBAAA;AFCJ;;AEEE;EACE,0BAAA;EACA,aAAA;EACA,oBAAA;EACA,mBAAA;UAAA,YAAA;EACA,eAAA;AFCJ;;AEEE;EACE,kBAAA;EACA,mBAAA;UAAA,cAAA;EACA,WAAA;EACA,eAAA;AFCJ;;AEEE;EACE,uBAAA;EACA,mBAAA;UAAA,mBAAA;EACA,oBAAA;AFCJ;;AEEE;EACE,wBAAA;EACA,mBAAA;UAAA,oBAAA;EACA,qBAAA;AFCJ;;AEEE;EACE,iBAAA;EACA,mBAAA;UAAA,aAAA;EACA,cAAA;AFCJ;;AEEE;EACE,wBAAA;EACA,mBAAA;UAAA,oBAAA;EACA,qBAAA;AFCJ;;AEEE;EACE,wBAAA;EACA,mBAAA;UAAA,oBAAA;EACA,qBAAA;AFCJ;;AEEE;EACE,iBAAA;EACA,mBAAA;UAAA,aAAA;EACA,cAAA;AFCJ;;AEEE;EACE,wBAAA;EACA,mBAAA;UAAA,oBAAA;EACA,qBAAA;AFCJ;;AEEE;EACE,wBAAA;EACA,mBAAA;UAAA,oBAAA;EACA,qBAAA;AFCJ;;AEEE;EACE,iBAAA;EACA,mBAAA;UAAA,aAAA;EACA,cAAA;AFCJ;;AEEE;EACE,wBAAA;EACA,mBAAA;UAAA,oBAAA;EACA,qBAAA;AFCJ;;AEEE;EACE,wBAAA;EACA,mBAAA;UAAA,oBAAA;EACA,qBAAA;AFCJ;;AEEE;EACE,kBAAA;EACA,mBAAA;UAAA,cAAA;EACA,eAAA;AFCJ;;AEEE;EACE,kBAAA;EACA,4BAAA;UAAA,SAAA;AFCJ;;AEEE;EACE,iBAAA;EACA,4BAAA;UAAA,QAAA;AFCJ;;AEEE;EACE,iBAAA;EACA,4BAAA;UAAA,QAAA;AFCJ;;AEEE;EACE,iBAAA;EACA,4BAAA;UAAA,QAAA;AFCJ;;AEEE;EACE,iBAAA;EACA,4BAAA;UAAA,QAAA;AFCJ;;AEEE;EACE,iBAAA;EACA,4BAAA;UAAA,QAAA;AFCJ;;AEEE;EACE,iBAAA;EACA,4BAAA;UAAA,QAAA;AFCJ;;AEEE;EACE,iBAAA;EACA,4BAAA;UAAA,QAAA;AFCJ;;AEEE;EACE,iBAAA;EACA,4BAAA;UAAA,QAAA;AFCJ;;AEEE;EACE,iBAAA;EACA,6BAAA;UAAA,QAAA;AFCJ;;AEEE;EACE,kBAAA;EACA,6BAAA;UAAA,SAAA;AFCJ;;AEEE;EACE,kBAAA;EACA,6BAAA;UAAA,SAAA;AFCJ;;AEEE;EACE,kBAAA;EACA,6BAAA;UAAA,SAAA;AFCJ;;AEEE;EACE,sBAAA;AFCJ;;AEEE;EACE,uBAAA;AFCJ;;AEEE;EACE,gBAAA;AFCJ;;AEEE;EACE,uBAAA;AFCJ;;AEEE;EACE,uBAAA;AFCJ;;AEEE;EACE,gBAAA;AFCJ;;AEEE;EACE,uBAAA;AFCJ;;AEEE;EACE,uBAAA;AFCJ;;AEEE;EACE,gBAAA;AFCJ;;AEEE;EACE,uBAAA;AFCJ;;AEEE;EACE,uBAAA;AFCJ;;AEEE;EACE;IACE,0BAAA;IACA,aAAA;IACA,oBAAA;IACA,mBAAA;YAAA,YAAA;IACA,eAAA;EFCJ;EECE;IACE,kBAAA;IACA,mBAAA;YAAA,cAAA;IACA,WAAA;IACA,eAAA;EFCJ;EECE;IACE,uBAAA;IACA,mBAAA;YAAA,mBAAA;IACA,oBAAA;EFCJ;EECE;IACE,wBAAA;IACA,mBAAA;YAAA,oBAAA;IACA,qBAAA;EFCJ;EECE;IACE,iBAAA;IACA,mBAAA;YAAA,aAAA;IACA,cAAA;EFCJ;EECE;IACE,wBAAA;IACA,mBAAA;YAAA,oBAAA;IACA,qBAAA;EFCJ;EECE;IACE,wBAAA;IACA,mBAAA;YAAA,oBAAA;IACA,qBAAA;EFCJ;EECE;IACE,iBAAA;IACA,mBAAA;YAAA,aAAA;IACA,cAAA;EFCJ;EECE;IACE,wBAAA;IACA,mBAAA;YAAA,oBAAA;IACA,qBAAA;EFCJ;EECE;IACE,wBAAA;IACA,mBAAA;YAAA,oBAAA;IACA,qBAAA;EFCJ;EECE;IACE,iBAAA;IACA,mBAAA;YAAA,aAAA;IACA,cAAA;EFCJ;EECE;IACE,wBAAA;IACA,mBAAA;YAAA,oBAAA;IACA,qBAAA;EFCJ;EECE;IACE,wBAAA;IACA,mBAAA;YAAA,oBAAA;IACA,qBAAA;EFCJ;EECE;IACE,kBAAA;IACA,mBAAA;YAAA,cAAA;IACA,eAAA;EFCJ;EECE;IACE,kBAAA;IACA,4BAAA;YAAA,SAAA;EFCJ;EECE;IACE,iBAAA;IACA,4BAAA;YAAA,QAAA;EFCJ;EECE;IACE,iBAAA;IACA,4BAAA;YAAA,QAAA;EFCJ;EECE;IACE,iBAAA;IACA,4BAAA;YAAA,QAAA;EFCJ;EECE;IACE,iBAAA;IACA,4BAAA;YAAA,QAAA;EFCJ;EECE;IACE,iBAAA;IACA,4BAAA;YAAA,QAAA;EFCJ;EECE;IACE,iBAAA;IACA,4BAAA;YAAA,QAAA;EFCJ;EECE;IACE,iBAAA;IACA,4BAAA;YAAA,QAAA;EFCJ;EECE;IACE,iBAAA;IACA,4BAAA;YAAA,QAAA;EFCJ;EECE;IACE,iBAAA;IACA,6BAAA;YAAA,QAAA;EFCJ;EECE;IACE,kBAAA;IACA,6BAAA;YAAA,SAAA;EFCJ;EECE;IACE,kBAAA;IACA,6BAAA;YAAA,SAAA;EFCJ;EECE;IACE,kBAAA;IACA,6BAAA;YAAA,SAAA;EFCJ;EECE;IACE,cAAA;EFCJ;EECE;IACE,sBAAA;EFCJ;EECE;IACE,uBAAA;EFCJ;EECE;IACE,gBAAA;EFCJ;EECE;IACE,uBAAA;EFCJ;EECE;IACE,uBAAA;EFCJ;EECE;IACE,gBAAA;EFCJ;EECE;IACE,uBAAA;EFCJ;EECE;IACE,uBAAA;EFCJ;EECE;IACE,gBAAA;EFCJ;EECE;IACE,uBAAA;EFCJ;EECE;IACE,uBAAA;EFCJ;AACF;AEEE;EACE;IACE,0BAAA;IACA,aAAA;IACA,oBAAA;IACA,mBAAA;YAAA,YAAA;IACA,eAAA;EFAJ;EEEE;IACE,kBAAA;IACA,mBAAA;YAAA,cAAA;IACA,WAAA;IACA,eAAA;EFAJ;EEEE;IACE,uBAAA;IACA,mBAAA;YAAA,mBAAA;IACA,oBAAA;EFAJ;EEEE;IACE,wBAAA;IACA,mBAAA;YAAA,oBAAA;IACA,qBAAA;EFAJ;EEEE;IACE,iBAAA;IACA,mBAAA;YAAA,aAAA;IACA,cAAA;EFAJ;EEEE;IACE,wBAAA;IACA,mBAAA;YAAA,oBAAA;IACA,qBAAA;EFAJ;EEEE;IACE,wBAAA;IACA,mBAAA;YAAA,oBAAA;IACA,qBAAA;EFAJ;EEEE;IACE,iBAAA;IACA,mBAAA;YAAA,aAAA;IACA,cAAA;EFAJ;EEEE;IACE,wBAAA;IACA,mBAAA;YAAA,oBAAA;IACA,qBAAA;EFAJ;EEEE;IACE,wBAAA;IACA,mBAAA;YAAA,oBAAA;IACA,qBAAA;EFAJ;EEEE;IACE,iBAAA;IACA,mBAAA;YAAA,aAAA;IACA,cAAA;EFAJ;EEEE;IACE,wBAAA;IACA,mBAAA;YAAA,oBAAA;IACA,qBAAA;EFAJ;EEEE;IACE,wBAAA;IACA,mBAAA;YAAA,oBAAA;IACA,qBAAA;EFAJ;EEEE;IACE,kBAAA;IACA,mBAAA;YAAA,cAAA;IACA,eAAA;EFAJ;EEEE;IACE,kBAAA;IACA,4BAAA;YAAA,SAAA;EFAJ;EEEE;IACE,iBAAA;IACA,4BAAA;YAAA,QAAA;EFAJ;EEEE;IACE,iBAAA;IACA,4BAAA;YAAA,QAAA;EFAJ;EEEE;IACE,iBAAA;IACA,4BAAA;YAAA,QAAA;EFAJ;EEEE;IACE,iBAAA;IACA,4BAAA;YAAA,QAAA;EFAJ;EEEE;IACE,iBAAA;IACA,4BAAA;YAAA,QAAA;EFAJ;EEEE;IACE,iBAAA;IACA,4BAAA;YAAA,QAAA;EFAJ;EEEE;IACE,iBAAA;IACA,4BAAA;YAAA,QAAA;EFAJ;EEEE;IACE,iBAAA;IACA,4BAAA;YAAA,QAAA;EFAJ;EEEE;IACE,iBAAA;IACA,6BAAA;YAAA,QAAA;EFAJ;EEEE;IACE,kBAAA;IACA,6BAAA;YAAA,SAAA;EFAJ;EEEE;IACE,kBAAA;IACA,6BAAA;YAAA,SAAA;EFAJ;EEEE;IACE,kBAAA;IACA,6BAAA;YAAA,SAAA;EFAJ;EEEE;IACE,cAAA;EFAJ;EEEE;IACE,sBAAA;EFAJ;EEEE;IACE,uBAAA;EFAJ;EEEE;IACE,gBAAA;EFAJ;EEEE;IACE,uBAAA;EFAJ;EEEE;IACE,uBAAA;EFAJ;EEEE;IACE,gBAAA;EFAJ;EEEE;IACE,uBAAA;EFAJ;EEEE;IACE,uBAAA;EFAJ;EEEE;IACE,gBAAA;EFAJ;EEEE;IACE,uBAAA;EFAJ;EEEE;IACE,uBAAA;EFAJ;AACF;AEGE;EACE;IACE,0BAAA;IACA,aAAA;IACA,oBAAA;IACA,mBAAA;YAAA,YAAA;IACA,eAAA;EFDJ;EEGE;IACE,kBAAA;IACA,mBAAA;YAAA,cAAA;IACA,WAAA;IACA,eAAA;EFDJ;EEGE;IACE,uBAAA;IACA,mBAAA;YAAA,mBAAA;IACA,oBAAA;EFDJ;EEGE;IACE,wBAAA;IACA,mBAAA;YAAA,oBAAA;IACA,qBAAA;EFDJ;EEGE;IACE,iBAAA;IACA,mBAAA;YAAA,aAAA;IACA,cAAA;EFDJ;EEGE;IACE,wBAAA;IACA,mBAAA;YAAA,oBAAA;IACA,qBAAA;EFDJ;EEGE;IACE,wBAAA;IACA,mBAAA;YAAA,oBAAA;IACA,qBAAA;EFDJ;EEGE;IACE,iBAAA;IACA,mBAAA;YAAA,aAAA;IACA,cAAA;EFDJ;EEGE;IACE,wBAAA;IACA,mBAAA;YAAA,oBAAA;IACA,qBAAA;EFDJ;EEGE;IACE,wBAAA;IACA,mBAAA;YAAA,oBAAA;IACA,qBAAA;EFDJ;EEGE;IACE,iBAAA;IACA,mBAAA;YAAA,aAAA;IACA,cAAA;EFDJ;EEGE;IACE,wBAAA;IACA,mBAAA;YAAA,oBAAA;IACA,qBAAA;EFDJ;EEGE;IACE,wBAAA;IACA,mBAAA;YAAA,oBAAA;IACA,qBAAA;EFDJ;EEGE;IACE,kBAAA;IACA,mBAAA;YAAA,cAAA;IACA,eAAA;EFDJ;EEGE;IACE,kBAAA;IACA,4BAAA;YAAA,SAAA;EFDJ;EEGE;IACE,iBAAA;IACA,4BAAA;YAAA,QAAA;EFDJ;EEGE;IACE,iBAAA;IACA,4BAAA;YAAA,QAAA;EFDJ;EEGE;IACE,iBAAA;IACA,4BAAA;YAAA,QAAA;EFDJ;EEGE;IACE,iBAAA;IACA,4BAAA;YAAA,QAAA;EFDJ;EEGE;IACE,iBAAA;IACA,4BAAA;YAAA,QAAA;EFDJ;EEGE;IACE,iBAAA;IACA,4BAAA;YAAA,QAAA;EFDJ;EEGE;IACE,iBAAA;IACA,4BAAA;YAAA,QAAA;EFDJ;EEGE;IACE,iBAAA;IACA,4BAAA;YAAA,QAAA;EFDJ;EEGE;IACE,iBAAA;IACA,6BAAA;YAAA,QAAA;EFDJ;EEGE;IACE,kBAAA;IACA,6BAAA;YAAA,SAAA;EFDJ;EEGE;IACE,kBAAA;IACA,6BAAA;YAAA,SAAA;EFDJ;EEGE;IACE,kBAAA;IACA,6BAAA;YAAA,SAAA;EFDJ;EEGE;IACE,cAAA;EFDJ;EEGE;IACE,sBAAA;EFDJ;EEGE;IACE,uBAAA;EFDJ;EEGE;IACE,gBAAA;EFDJ;EEGE;IACE,uBAAA;EFDJ;EEGE;IACE,uBAAA;EFDJ;EEGE;IACE,gBAAA;EFDJ;EEGE;IACE,uBAAA;EFDJ;EEGE;IACE,uBAAA;EFDJ;EEGE;IACE,gBAAA;EFDJ;EEGE;IACE,uBAAA;EFDJ;EEGE;IACE,uBAAA;EFDJ;AACF;AEIE;EACE;IACE,0BAAA;IACA,aAAA;IACA,oBAAA;IACA,mBAAA;YAAA,YAAA;IACA,eAAA;EFFJ;EEIE;IACE,kBAAA;IACA,mBAAA;YAAA,cAAA;IACA,WAAA;IACA,eAAA;EFFJ;EEIE;IACE,uBAAA;IACA,mBAAA;YAAA,mBAAA;IACA,oBAAA;EFFJ;EEIE;IACE,wBAAA;IACA,mBAAA;YAAA,oBAAA;IACA,qBAAA;EFFJ;EEIE;IACE,iBAAA;IACA,mBAAA;YAAA,aAAA;IACA,cAAA;EFFJ;EEIE;IACE,wBAAA;IACA,mBAAA;YAAA,oBAAA;IACA,qBAAA;EFFJ;EEIE;IACE,wBAAA;IACA,mBAAA;YAAA,oBAAA;IACA,qBAAA;EFFJ;EEIE;IACE,iBAAA;IACA,mBAAA;YAAA,aAAA;IACA,cAAA;EFFJ;EEIE;IACE,wBAAA;IACA,mBAAA;YAAA,oBAAA;IACA,qBAAA;EFFJ;EEIE;IACE,wBAAA;IACA,mBAAA;YAAA,oBAAA;IACA,qBAAA;EFFJ;EEIE;IACE,iBAAA;IACA,mBAAA;YAAA,aAAA;IACA,cAAA;EFFJ;EEIE;IACE,wBAAA;IACA,mBAAA;YAAA,oBAAA;IACA,qBAAA;EFFJ;EEIE;IACE,wBAAA;IACA,mBAAA;YAAA,oBAAA;IACA,qBAAA;EFFJ;EEIE;IACE,kBAAA;IACA,mBAAA;YAAA,cAAA;IACA,eAAA;EFFJ;EEIE;IACE,kBAAA;IACA,4BAAA;YAAA,SAAA;EFFJ;EEIE;IACE,iBAAA;IACA,4BAAA;YAAA,QAAA;EFFJ;EEIE;IACE,iBAAA;IACA,4BAAA;YAAA,QAAA;EFFJ;EEIE;IACE,iBAAA;IACA,4BAAA;YAAA,QAAA;EFFJ;EEIE;IACE,iBAAA;IACA,4BAAA;YAAA,QAAA;EFFJ;EEIE;IACE,iBAAA;IACA,4BAAA;YAAA,QAAA;EFFJ;EEIE;IACE,iBAAA;IACA,4BAAA;YAAA,QAAA;EFFJ;EEIE;IACE,iBAAA;IACA,4BAAA;YAAA,QAAA;EFFJ;EEIE;IACE,iBAAA;IACA,4BAAA;YAAA,QAAA;EFFJ;EEIE;IACE,iBAAA;IACA,6BAAA;YAAA,QAAA;EFFJ;EEIE;IACE,kBAAA;IACA,6BAAA;YAAA,SAAA;EFFJ;EEIE;IACE,kBAAA;IACA,6BAAA;YAAA,SAAA;EFFJ;EEIE;IACE,kBAAA;IACA,6BAAA;YAAA,SAAA;EFFJ;EEIE;IACE,cAAA;EFFJ;EEIE;IACE,sBAAA;EFFJ;EEIE;IACE,uBAAA;EFFJ;EEIE;IACE,gBAAA;EFFJ;EEIE;IACE,uBAAA;EFFJ;EEIE;IACE,uBAAA;EFFJ;EEIE;IACE,gBAAA;EFFJ;EEIE;IACE,uBAAA;EFFJ;EEIE;IACE,uBAAA;EFFJ;EEIE;IACE,gBAAA;EFFJ;EEIE;IACE,uBAAA;EFFJ;EEIE;IACE,uBAAA;EFFJ;AACF;AEKE;EACE,WAAA;EACA,eAAA;EACA,mBAAA;EACA,6BAAA;AFHJ;;AEME;;;EAEE,gBAAA;EACA,mBAAA;EACA,6BAAA;AFFJ;;AEKE;EACE,sBAAA;EACA,gCAAA;AFFJ;;AEKE;EACE,6BAAA;AFFJ;;AEKE;EACE,sBAAA;AFFJ;;AEKE;;EAEE,eAAA;AFFJ;;AEKE;EACE,yBAAA;AFFJ;;AEKE;;;EAEE,yBAAA;AFDJ;;AEIE;;;EAEE,wBAAA;AFAJ;;AEGE;EACE,qCAAA;AFAJ;;AEGE;EACE,sCAAA;AFAJ;;AEGE;;;EAGE,yBAAA;AFAJ;;AEGE;EACE,yBAAA;AFAJ;;AEGE;;EAEE,yBAAA;AFAJ;;AEGE;;;EAGE,yBAAA;AFAJ;;AEGE;EACE,yBAAA;AFAJ;;AEGE;;EAEE,yBAAA;AFAJ;;AEGE;;;EAGE,yBAAA;AFAJ;;AEGE;EACE,yBAAA;AFAJ;;AEGE;;EAEE,yBAAA;AFAJ;;AEGE;;;EAGE,yBAAA;AFAJ;;AEGE;EACE,yBAAA;AFAJ;;AEGE;;EAEE,yBAAA;AFAJ;;AEGE;;;EAGE,yBAAA;AFAJ;;AEGE;EACE,yBAAA;AFAJ;;AEGE;;EAEE,yBAAA;AFAJ;;AEGE;;;EAGE,yBAAA;AFAJ;;AEGE;EACE,yBAAA;AFAJ;;AEGE;;EAEE,yBAAA;AFAJ;;AEGE;;;EAGE,yBAAA;AFAJ;;AEGE;EACE,yBAAA;AFAJ;;AEGE;;EAEE,yBAAA;AFAJ;;AEGE;;;EAGE,yBAAA;AFAJ;;AEGE;EACE,yBAAA;AFAJ;;AEGE;;EAEE,yBAAA;AFAJ;;AEGE;;;EAGE,sCAAA;AFAJ;;AEGE;EACE,sCAAA;AFAJ;;AEGE;;EAEE,sCAAA;AFAJ;;AEGE;EACE,WAAA;EACA,yBAAA;EACA,qBAAA;AFAJ;;AEGE;EACE,cAAA;EACA,yBAAA;EACA,qBAAA;AFAJ;;AEGE;EACE,WAAA;EACA,yBAAA;AFAJ;;AEGE;;;EAGE,qBAAA;AFAJ;;AEGE;EACE,SAAA;AFAJ;;AEGE;EACE,2CAAA;AFAJ;;AEGE;EACE,4CAAA;AFAJ;;AEGE;EACE;IACE,cAAA;IACA,WAAA;IACA,gBAAA;IACA,iCAAA;IACA,4CAAA;EFAJ;EEEE;IACE,SAAA;EFAJ;AACF;AEGE;EACE;IACE,cAAA;IACA,WAAA;IACA,gBAAA;IACA,iCAAA;IACA,4CAAA;EFDJ;EEGE;IACE,SAAA;EFDJ;AACF;AEIE;EACE;IACE,cAAA;IACA,WAAA;IACA,gBAAA;IACA,iCAAA;IACA,4CAAA;EFFJ;EEIE;IACE,SAAA;EFFJ;AACF;AEKE;EACE;IACE,cAAA;IACA,WAAA;IACA,gBAAA;IACA,iCAAA;IACA,4CAAA;EFHJ;EEKE;IACE,SAAA;EFHJ;AACF;AEME;EACE,cAAA;EACA,WAAA;EACA,gBAAA;EACA,iCAAA;EACA,4CAAA;AFJJ;;AEOE;EACE,SAAA;AFJJ;;AEOE;EACE,cAAA;EACA,WAAA;EACA,yBAAA;EACA,eAAA;EACA,gBAAA;EACA,cAAA;EACA,sBAAA;EACA,4BAAA;EACA,yBAAA;EACA,sBAAA;EACA,wFAAA;EAAA,gFAAA;EAAA,wEAAA;EAAA,8GAAA;AFJJ;;AEOE;EACE,6BAAA;EACA,SAAA;AFJJ;;AEOE;EACE,cAAA;EACA,sBAAA;EACA,qBAAA;EACA,UAAA;EACA,wDAAA;UAAA,gDAAA;AFJJ;;AEOE;EACE,cAAA;EACA,UAAA;AFJJ;;AEOE;EACE,cAAA;EACA,UAAA;AFJJ;;AEOE;EACE,cAAA;EACA,UAAA;AFJJ;;AEOE;EACE,cAAA;EACA,UAAA;AFJJ;;AEEE;EACE,cAAA;EACA,UAAA;AFJJ;;AEOE;EACE,yBAAA;EACA,UAAA;AFJJ;;AEOE;EACE,2BAAA;AFJJ;;AEOE;EACE,cAAA;EACA,sBAAA;AFJJ;;AEOE;;EAEE,cAAA;AFJJ;;AEOE;EACE,iCAAA;EACA,oCAAA;EACA,gBAAA;EACA,kBAAA;EACA,gBAAA;AFJJ;;AEOE;EACE,+BAAA;EACA,kCAAA;EACA,kBAAA;EACA,gBAAA;AFJJ;;AEOE;EACE,gCAAA;EACA,mCAAA;EACA,mBAAA;EACA,gBAAA;AFJJ;;AEOE;EACE,cAAA;EACA,WAAA;EACA,qBAAA;EACA,wBAAA;EACA,gBAAA;EACA,gBAAA;EACA,6BAAA;EACA,yBAAA;EACA,mBAAA;AFJJ;;AEOE;;;;;;;EAKE,gBAAA;EACA,eAAA;AFFJ;;AEKE;;;;EAGE,uBAAA;EACA,mBAAA;EACA,gBAAA;EACA,qBAAA;AFDJ;;AEIE;;;;EAGE,6BAAA;AFAJ;;AEGE;;;;EAGE,oBAAA;EACA,kBAAA;EACA,gBAAA;EACA,qBAAA;AFCJ;;AEEE;;;;EAGE,4BAAA;AFEJ;;AECE;EACE,mBAAA;AFEJ;;AECE;EACE,cAAA;EACA,mBAAA;AFEJ;;AECE;EACE,oBAAA;EACA,oBAAA;EAAA,aAAA;EACA,mBAAA;EACA,eAAA;EACA,kBAAA;EACA,iBAAA;AFEJ;;AECE;;EAEE,kBAAA;EACA,iBAAA;AFEJ;;AECE;EACE,kBAAA;EACA,cAAA;EACA,qBAAA;AFEJ;;AECE;EACE,cAAA;AFEJ;;AECE;EACE,qBAAA;EACA,gBAAA;AFEJ;;AECE;EACE,kBAAA;EACA,mBAAA;EACA,qBAAA;AFEJ;;AECE;EACE,qBAAA;EACA,qBAAA;AFEJ;;AECE;EACE,sBAAA;AFEJ;;AECE;EACE,aAAA;EACA,mBAAA;EACA,cAAA;EACA,cAAA;AFEJ;;AECE;EACE,kBAAA;EACA,SAAA;EACA,UAAA;EACA,aAAA;EACA,YAAA;EACA,eAAA;EACA,kBAAA;EACA,mBAAA;EACA,cAAA;EACA,WAAA;EACA,wCAAA;EACA,qBAAA;AFEJ;;AECE;;EAGE,qBAAA;AFCJ;;AEEE;;EAGE,qBAAA;EACA,wDAAA;UAAA,gDAAA;AFAJ;;AEGE;;;;;;EAQE,cAAA;AFFJ;;AEKE;EACE,cAAA;AFFJ;;AEKE;EACE,yBAAA;AFFJ;;AEKE;EACE,cAAA;AFFJ;;AEKE;EACE,yBAAA;AFFJ;;AEKE;EACE,wEAAA;UAAA,gEAAA;AFFJ;;AEKE;EACE,qBAAA;AFFJ;;AEKE;EACE,qBAAA;AFFJ;;AEKE;EACE,wDAAA;UAAA,gDAAA;AFFJ;;AEKE;EACE,aAAA;EACA,mBAAA;EACA,cAAA;EACA,cAAA;AFFJ;;AEKE;EACE,kBAAA;EACA,SAAA;EACA,UAAA;EACA,aAAA;EACA,YAAA;EACA,eAAA;EACA,kBAAA;EACA,mBAAA;EACA,cAAA;EACA,WAAA;EACA,wCAAA;EACA,qBAAA;AFFJ;;AEKE;;EAGE,qBAAA;AFHJ;;AEME;;EAGE,qBAAA;EACA,wDAAA;UAAA,gDAAA;AFJJ;;AEOE;;;;;;EAQE,cAAA;AFNJ;;AESE;EACE,cAAA;AFNJ;;AESE;EACE,yBAAA;AFNJ;;AESE;EACE,cAAA;AFNJ;;AESE;EACE,yBAAA;AFNJ;;AESE;EACE,wEAAA;UAAA,gEAAA;AFNJ;;AESE;EACE,qBAAA;AFNJ;;AESE;EACE,qBAAA;AFNJ;;AESE;EACE,wDAAA;UAAA,gDAAA;AFNJ;;AESE;EACE,oBAAA;EACA,oBAAA;EAAA,aAAA;EACA,uBAAA;EACA,8BAAA;EAAA,6BAAA;UAAA,mBAAA;EACA,sBAAA;EACA,yBAAA;UAAA,mBAAA;AFNJ;;AESE;EACE,WAAA;AFNJ;;AESE;EACE;IACE,oBAAA;IACA,oBAAA;IAAA,aAAA;IACA,sBAAA;IACA,yBAAA;YAAA,mBAAA;IACA,qBAAA;IACA,wBAAA;YAAA,uBAAA;IACA,gBAAA;EFNJ;EEQE;IACE,oBAAA;IACA,oBAAA;IAAA,aAAA;IACA,kBAAA;IACA,mBAAA;YAAA,cAAA;IACA,uBAAA;IACA,8BAAA;IAAA,6BAAA;YAAA,mBAAA;IACA,sBAAA;IACA,yBAAA;YAAA,mBAAA;IACA,gBAAA;EFNJ;EEQE;IACE,qBAAA;IACA,WAAA;IACA,sBAAA;EFNJ;EEQE;IACE,qBAAA;EFNJ;EEQE;IACE,WAAA;EFNJ;EEQE;IACE,oBAAA;IACA,oBAAA;IAAA,aAAA;IACA,sBAAA;IACA,yBAAA;YAAA,mBAAA;IACA,qBAAA;IACA,wBAAA;YAAA,uBAAA;IACA,WAAA;IACA,aAAA;IACA,gBAAA;EFNJ;EEQE;IACE,eAAA;EFNJ;EEQE;IACE,kBAAA;IACA,aAAA;IACA,qBAAA;IACA,cAAA;EFNJ;EEQE;IACE,oBAAA;IACA,oBAAA;IAAA,aAAA;IACA,sBAAA;IACA,yBAAA;YAAA,mBAAA;IACA,qBAAA;IACA,wBAAA;YAAA,uBAAA;IACA,eAAA;EFNJ;EEQE;IACE,gBAAA;IACA,qBAAA;IACA,qBAAA;IACA,2BAAA;EFNJ;EEQE;IACE,MAAA;EFNJ;AACF;AESE;EACE,qBAAA;EACA,gBAAA;EACA,kBAAA;EACA,mBAAA;EACA,sBAAA;EACA,yBAAA;EACA,sBAAA;EACA,qBAAA;EACA,iBAAA;EACA,6BAAA;EACA,yBAAA;EACA,eAAA;EACA,gBAAA;EACA,sBAAA;EACA,qJAAA;EAAA,6IAAA;EAAA,qIAAA;EAAA,2KAAA;AFPJ;;AEUE;EACE,qBAAA;AFPJ;;AEUE;EACE,UAAA;EACA,wDAAA;UAAA,gDAAA;AFPJ;;AEUE;EACE,aAAA;AFPJ;;AEUE;EACE,sBAAA;AFPJ;;AEUE;;;EAEE,oBAAA;AFNJ;;AESE;EACE,WAAA;EACA,yBAAA;EACA,qBAAA;AFNJ;;AESE;EACE,WAAA;EACA,yBAAA;EACA,qBAAA;AFNJ;;AESE;EACE,uDAAA;UAAA,+CAAA;AFNJ;;AESE;EACE,yBAAA;EACA,qBAAA;AFNJ;;AESE;;;EAEE,WAAA;EACA,yBAAA;EACA,qBAAA;EACA,uDAAA;UAAA,+CAAA;AFLJ;;AEQE;EACE,WAAA;EACA,yBAAA;EACA,qBAAA;AFLJ;;AEQE;EACE,WAAA;EACA,yBAAA;EACA,qBAAA;AFLJ;;AEQE;EACE,yDAAA;UAAA,iDAAA;AFLJ;;AEQE;EACE,yBAAA;EACA,qBAAA;AFLJ;;AEQE;;EAEE,WAAA;EACA,yBAAA;EACA,qBAAA;EACA,yDAAA;UAAA,iDAAA;AFLJ;;AEQE;EACE,WAAA;EACA,yBAAA;EACA,qBAAA;AFLJ;;AEQE;EACE,WAAA;EACA,yBAAA;EACA,qBAAA;AFLJ;;AEQE;EACE,uDAAA;UAAA,+CAAA;AFLJ;;AEQE;EACE,yBAAA;EACA,qBAAA;AFLJ;;AEQE;;EAEE,WAAA;EACA,yBAAA;EACA,qBAAA;EACA,uDAAA;UAAA,+CAAA;AFLJ;;AEQE;EACE,WAAA;EACA,yBAAA;EACA,qBAAA;AFLJ;;AEQE;EACE,WAAA;EACA,yBAAA;EACA,qBAAA;AFLJ;;AEQE;EACE,wDAAA;UAAA,gDAAA;AFLJ;;AEQE;EACE,yBAAA;EACA,qBAAA;AFLJ;;AEQE;;EAEE,WAAA;EACA,yBAAA;EACA,qBAAA;EACA,wDAAA;UAAA,gDAAA;AFLJ;;AEQE;EACE,cAAA;EACA,yBAAA;EACA,qBAAA;AFLJ;;AEQE;EACE,cAAA;EACA,yBAAA;EACA,qBAAA;AFLJ;;AEQE;EACE,uDAAA;UAAA,+CAAA;AFLJ;;AEQE;EACE,yBAAA;EACA,qBAAA;AFLJ;;AEQE;;EAEE,cAAA;EACA,yBAAA;EACA,qBAAA;EACA,uDAAA;UAAA,+CAAA;AFLJ;;AEQE;EACE,WAAA;EACA,yBAAA;EACA,qBAAA;AFLJ;;AEQE;EACE,WAAA;EACA,yBAAA;EACA,qBAAA;AFLJ;;AEQE;EACE,uDAAA;UAAA,+CAAA;AFLJ;;AEQE;EACE,yBAAA;EACA,qBAAA;AFLJ;;AEQE;;EAEE,WAAA;EACA,yBAAA;EACA,qBAAA;EACA,uDAAA;UAAA,+CAAA;AFLJ;;AEQE;EACE,cAAA;EACA,yBAAA;EACA,qBAAA;AFLJ;;AEQE;EACE,cAAA;EACA,yBAAA;EACA,qBAAA;AFLJ;;AEQE;EACE,yDAAA;UAAA,iDAAA;AFLJ;;AEQE;EACE,yBAAA;EACA,qBAAA;AFLJ;;AEQE;;EAEE,cAAA;EACA,yBAAA;EACA,qBAAA;EACA,yDAAA;UAAA,iDAAA;AFLJ;;AEQE;EACE,WAAA;EACA,yBAAA;EACA,qBAAA;AFLJ;;AEQE;EACE,WAAA;EACA,yBAAA;EACA,qBAAA;AFLJ;;AEQE;EACE,sDAAA;UAAA,8CAAA;AFLJ;;AEQE;EACE,yBAAA;EACA,qBAAA;AFLJ;;AEQE;;EAEE,WAAA;EACA,yBAAA;EACA,qBAAA;EACA,sDAAA;UAAA,8CAAA;AFLJ;;AEQE;EACE,cAAA;EACA,6BAAA;EACA,sBAAA;EACA,qBAAA;AFLJ;;AEQE;EACE,WAAA;EACA,yBAAA;EACA,qBAAA;AFLJ;;AEQE;EACE,uDAAA;UAAA,+CAAA;AFLJ;;AEQE;EACE,cAAA;EACA,6BAAA;AFLJ;;AEQE;;EAEE,cAAA;EACA,yBAAA;EACA,qBAAA;EACA,uDAAA;UAAA,+CAAA;AFLJ;;AEQE;EACE,cAAA;EACA,6BAAA;EACA,sBAAA;EACA,qBAAA;AFLJ;;AEQE;EACE,WAAA;EACA,yBAAA;EACA,qBAAA;AFLJ;;AEQE;EACE,yDAAA;UAAA,iDAAA;AFLJ;;AEQE;EACE,cAAA;EACA,6BAAA;AFLJ;;AEQE;;EAEE,cAAA;EACA,yBAAA;EACA,qBAAA;EACA,yDAAA;UAAA,iDAAA;AFLJ;;AEQE;EACE,cAAA;EACA,6BAAA;EACA,sBAAA;EACA,qBAAA;AFLJ;;AEQE;EACE,WAAA;EACA,yBAAA;EACA,qBAAA;AFLJ;;AEQE;EACE,uDAAA;UAAA,+CAAA;AFLJ;;AEQE;EACE,cAAA;EACA,6BAAA;AFLJ;;AEQE;;EAEE,cAAA;EACA,yBAAA;EACA,qBAAA;EACA,uDAAA;UAAA,+CAAA;AFLJ;;AEQE;EACE,cAAA;EACA,6BAAA;EACA,sBAAA;EACA,qBAAA;AFLJ;;AEQE;EACE,WAAA;EACA,yBAAA;EACA,qBAAA;AFLJ;;AEQE;EACE,wDAAA;UAAA,gDAAA;AFLJ;;AEQE;EACE,cAAA;EACA,6BAAA;AFLJ;;AEQE;;EAEE,cAAA;EACA,yBAAA;EACA,qBAAA;EACA,wDAAA;UAAA,gDAAA;AFLJ;;AEQE;EACE,cAAA;EACA,6BAAA;EACA,sBAAA;EACA,qBAAA;AFLJ;;AEQE;EACE,cAAA;EACA,yBAAA;EACA,qBAAA;AFLJ;;AEQE;EACE,uDAAA;UAAA,+CAAA;AFLJ;;AEQE;EACE,cAAA;EACA,6BAAA;AFLJ;;AEQE;;EAEE,cAAA;EACA,yBAAA;EACA,qBAAA;EACA,uDAAA;UAAA,+CAAA;AFLJ;;AEQE;EACE,cAAA;EACA,6BAAA;EACA,sBAAA;EACA,qBAAA;AFLJ;;AEQE;EACE,WAAA;EACA,yBAAA;EACA,qBAAA;AFLJ;;AEQE;EACE,uDAAA;UAAA,+CAAA;AFLJ;;AEQE;EACE,cAAA;EACA,6BAAA;AFLJ;;AEQE;;EAEE,cAAA;EACA,yBAAA;EACA,qBAAA;EACA,uDAAA;UAAA,+CAAA;AFLJ;;AEQE;EACE,cAAA;EACA,6BAAA;EACA,sBAAA;EACA,qBAAA;AFLJ;;AEQE;EACE,cAAA;EACA,yBAAA;EACA,qBAAA;AFLJ;;AEQE;EACE,yDAAA;UAAA,iDAAA;AFLJ;;AEQE;EACE,cAAA;EACA,6BAAA;AFLJ;;AEQE;;EAEE,WAAA;EACA,yBAAA;EACA,qBAAA;EACA,yDAAA;UAAA,iDAAA;AFLJ;;AEQE;EACE,cAAA;EACA,6BAAA;EACA,sBAAA;EACA,qBAAA;AFLJ;;AEQE;EACE,WAAA;EACA,yBAAA;EACA,qBAAA;AFLJ;;AEQE;EACE,sDAAA;UAAA,8CAAA;AFLJ;;AEQE;EACE,cAAA;EACA,6BAAA;AFLJ;;AEQE;;EAEE,cAAA;EACA,yBAAA;EACA,qBAAA;EACA,sDAAA;UAAA,8CAAA;AFLJ;;AEQE;EACE,gBAAA;EACA,cAAA;EACA,6BAAA;AFLJ;;AEQE;EACE,cAAA;EACA,0BAAA;EACA,6BAAA;EACA,yBAAA;AFLJ;;AEQE;EACE,0BAAA;EACA,yBAAA;EACA,wBAAA;UAAA,gBAAA;AFLJ;;AEQE;EACE,cAAA;AFLJ;;AEQE;EACE,oBAAA;EACA,kBAAA;EACA,gBAAA;EACA,qBAAA;AFLJ;;AEQE;EACE,uBAAA;EACA,mBAAA;EACA,gBAAA;EACA,qBAAA;AFLJ;;AEQE;EACE,cAAA;EACA,WAAA;AFLJ;;AEQE;EACE,kBAAA;AFLJ;;AEQE;;;EAGE,WAAA;AFLJ;;AEQE;EACE,UAAA;EACA,wCAAA;EAAA,gCAAA;AFLJ;;AEQE;EACE,UAAA;AFLJ;;AEQE;EACE,aAAA;AFLJ;;AEQE;EACE,cAAA;AFLJ;;AEQE;EACE,kBAAA;AFLJ;;AEQE;EACE,wBAAA;AFLJ;;AEQE;EACE,kBAAA;EACA,SAAA;EACA,gBAAA;EACA,qCAAA;EAAA,6BAAA;AFLJ;;AEQE;;EAEE,kBAAA;AFLJ;;AEQE;EACE,qBAAA;EACA,QAAA;EACA,SAAA;EACA,oBAAA;EACA,uBAAA;EACA,WAAA;EACA,uBAAA;EACA,qCAAA;EACA,gBAAA;EACA,oCAAA;AFLJ;;AEQE;EACE,cAAA;AFLJ;;AEQE;EACE,kBAAA;EACA,SAAA;EACA,OAAA;EACA,aAAA;EACA,aAAA;EACA,WAAA;EACA,gBAAA;EACA,iBAAA;EACA,oBAAA;EACA,eAAA;EACA,cAAA;EACA,gBAAA;EACA,gBAAA;EACA,sBAAA;EACA,4BAAA;EACA,qCAAA;EACA,sBAAA;AFLJ;;AEQE;EACE,aAAA;EACA,uBAAA;AFLJ;;AEQE;EACE,qBAAA;EACA,QAAA;EACA,SAAA;EACA,oBAAA;EACA,uBAAA;EACA,WAAA;EACA,aAAA;EACA,qCAAA;EACA,0BAAA;EACA,oCAAA;AFLJ;;AEQE;EACE,cAAA;AFLJ;;AEQE;EACE,aAAA;EACA,qBAAA;AFLJ;;AEQE;EACE,qBAAA;EACA,QAAA;EACA,SAAA;EACA,oBAAA;EACA,uBAAA;EACA,WAAA;EACA,mCAAA;EACA,sCAAA;EACA,wBAAA;AFLJ;;AEQE;EACE,cAAA;AFLJ;;AEQE;EACE,iBAAA;AFLJ;;AEQE;EACE,aAAA;EACA,sBAAA;AFLJ;;AEQE;EACE,qBAAA;EACA,QAAA;EACA,SAAA;EACA,oBAAA;EACA,uBAAA;EACA,WAAA;AFLJ;;AEQE;EACE,aAAA;AFLJ;;AEQE;EACE,qBAAA;EACA,QAAA;EACA,SAAA;EACA,qBAAA;EACA,uBAAA;EACA,WAAA;EACA,mCAAA;EACA,yBAAA;EACA,sCAAA;AFLJ;;AEQE;EACE,cAAA;AFLJ;;AEQE;EACE,iBAAA;AFLJ;;AEQE;EACE,SAAA;EACA,gBAAA;EACA,gBAAA;EACA,6BAAA;AFLJ;;AEQE;EACE,cAAA;EACA,WAAA;EACA,uBAAA;EACA,WAAA;EACA,gBAAA;EACA,cAAA;EACA,mBAAA;EACA,mBAAA;EACA,6BAAA;EACA,SAAA;AFLJ;;AEQE;EACE,cAAA;EACA,qBAAA;EACA,yBAAA;AFLJ;;AEQE;EACE,WAAA;EACA,qBAAA;EACA,yBAAA;AFLJ;;AEQE;EACE,cAAA;EACA,6BAAA;AFLJ;;AEQE;EACE,cAAA;AFLJ;;AEQE;EACE,cAAA;EACA,sBAAA;EACA,gBAAA;EACA,mBAAA;EACA,cAAA;EACA,mBAAA;AFLJ;;AEQE;;EAEE,kBAAA;EACA,2BAAA;EACA,2BAAA;EAAA,oBAAA;EACA,sBAAA;AFLJ;;AEQE;;;EAEE,kBAAA;EACA,kBAAA;EACA,mBAAA;UAAA,cAAA;AFJJ;;AEOE;;;EAEE,UAAA;AFHJ;;AEME;;;;;;;EAIE,UAAA;AFAJ;;AEGE;;;;;;;;;;;;;;;EAQE,iBAAA;AFOJ;;AEJE;EACE,oBAAA;EACA,oBAAA;EAAA,aAAA;EACA,mBAAA;EACA,eAAA;EACA,oBAAA;EACA,uBAAA;UAAA,2BAAA;AFOJ;;AEJE;EACE,WAAA;AFOJ;;AEJE;EACE,gBAAA;AFOJ;;AEJE;EACE,cAAA;AFOJ;;AEJE;EACE,0BAAA;EACA,6BAAA;AFOJ;;AEJE;;EAEE,yBAAA;EACA,4BAAA;AFOJ;;AEJE;EACE,WAAA;AFOJ;;AEJE;EACE,gBAAA;AFOJ;;AEJE;;EAEE,0BAAA;EACA,6BAAA;AFOJ;;AEJE;EACE,yBAAA;EACA,4BAAA;AFOJ;;AEJE;EACE,wBAAA;EACA,uBAAA;AFOJ;;AEJE;EACE,cAAA;AFOJ;;AEJE;EACE,uBAAA;EACA,sBAAA;AFOJ;;AEJE;EACE,sBAAA;EACA,qBAAA;AFOJ;;AEJE;EACE,0BAAA;EACA,4BAAA;EAAA,6BAAA;UAAA,sBAAA;EACA,qBAAA;EACA,wBAAA;UAAA,uBAAA;EACA,qBAAA;EACA,wBAAA;UAAA,uBAAA;AFOJ;;AEJE;;EAEE,WAAA;AFOJ;;AEJE;;;;;;EAIE,gBAAA;EACA,cAAA;AFSJ;;AENE;EACE,gBAAA;AFSJ;;AENE;EACE,6BAAA;EACA,4BAAA;AFSJ;;AENE;EACE,yBAAA;EACA,0BAAA;AFSJ;;AENE;EACE,gBAAA;AFSJ;;AENE;;EAEE,6BAAA;EACA,4BAAA;AFSJ;;AENE;EACE,yBAAA;EACA,0BAAA;AFSJ;;AENE;;;EAEE,gBAAA;AFUJ;;AEPE;;;;;EAIE,kBAAA;EACA,sBAAA;EACA,oBAAA;AFWJ;;AERE;EACE,kBAAA;EACA,oBAAA;EACA,oBAAA;EAAA,aAAA;EACA,uBAAA;EACA,0BAAA;UAAA,oBAAA;EACA,WAAA;AFWJ;;AERE;EACE,kBAAA;EACA,UAAA;EACA,kBAAA;EACA,mBAAA;UAAA,cAAA;EACA,SAAA;EACA,gBAAA;AFWJ;;AERE;EACE,UAAA;AFWJ;;AERE;;;;;EAKE,oBAAA;EACA,oBAAA;EAAA,aAAA;EACA,sBAAA;EACA,yBAAA;UAAA,mBAAA;AFWJ;;AERE;;;;;EAKE,gBAAA;AFWJ;;AERE;EACE,oBAAA;EACA,oBAAA;EAAA,aAAA;EACA,sBAAA;EACA,yBAAA;UAAA,mBAAA;AFWJ;;AERE;;EAEE,WAAA;AFWJ;;AERE;;EAEE,mBAAA;AFWJ;;AERE;EACE,yBAAA;EACA,gBAAA;EACA,eAAA;EACA,gBAAA;EACA,gBAAA;EACA,cAAA;EACA,kBAAA;EACA,yBAAA;EACA,yBAAA;EACA,sBAAA;AFWJ;;AERE;;;;EAGE,uBAAA;EACA,mBAAA;EACA,qBAAA;AFYJ;;AETE;;;;EAGE,oBAAA;EACA,kBAAA;EACA,qBAAA;AFaJ;;AEVE;;EAEE,aAAA;AFaJ;;AEVE;;;;;;;;;;;;;EASE,0BAAA;EACA,6BAAA;AFiBJ;;AEdE;EACE,eAAA;AFiBJ;;AEdE;;;;;;;;;;;;;EASE,yBAAA;EACA,4BAAA;AFqBJ;;AElBE;;;EAGE,cAAA;AFqBJ;;AElBE;EACE,kBAAA;EACA,uBAAA;EACA,0BAAA;UAAA,oBAAA;EACA,YAAA;EACA,mBAAA;AFqBJ;;AElBE;EACE,kBAAA;AFqBJ;;AElBE;EACE,iBAAA;AFqBJ;;AElBE;EACE,UAAA;AFqBJ;;AElBE;EACE,cAAA;AFqBJ;;AElBE;;EAEE,kBAAA;AFqBJ;;AElBE;;EAEE,UAAA;EACA,cAAA;AFqBJ;;AElBE;;EAEE,iBAAA;AFqBJ;;AElBE;;;;EAIE,UAAA;AFqBJ;;AElBE;EACE,kBAAA;EACA,2BAAA;EACA,2BAAA;EAAA,oBAAA;EACA,kBAAA;EACA,oBAAA;EACA,kBAAA;AFqBJ;;AElBE;EACE,kBAAA;EACA,WAAA;EACA,UAAA;AFqBJ;;AElBE;EACE,WAAA;EACA,yBAAA;AFqBJ;;AElBE;EACE,wEAAA;UAAA,gEAAA;AFqBJ;;AElBE;EACE,WAAA;EACA,yBAAA;AFqBJ;;AElBE;EACE,yBAAA;AFqBJ;;AElBE;EACE,cAAA;AFqBJ;;AElBE;EACE,kBAAA;EACA,YAAA;EACA,OAAA;EACA,cAAA;EACA,WAAA;EACA,YAAA;EACA,oBAAA;EACA,yBAAA;EACA,sBAAA;EACA,qBAAA;EACA,iBAAA;EACA,yBAAA;AFqBJ;;AElBE;EACE,cAAA;EACA,WAAA;EACA,YAAA;EACA,WAAA;EACA,4BAAA;EACA,kCAAA;EACA,wBAAA;AFqBJ;;AElBE;EACE,sBAAA;AFqBJ;;AElBE;EACE,yBAAA;AFqBJ;;AElBE;EACE,0NAAA;AFqBJ;;AElBE;EACE,yBAAA;AFqBJ;;AElBE;EACE,uKAAA;AFqBJ;;AElBE;EACE,kBAAA;AFqBJ;;AElBE;EACE,yBAAA;AFqBJ;;AElBE;EACE,oKAAA;AFqBJ;;AElBE;EACE,oBAAA;EACA,oBAAA;EAAA,aAAA;EACA,0BAAA;EACA,4BAAA;EAAA,6BAAA;UAAA,sBAAA;AFqBJ;;AElBE;EACE,sBAAA;AFqBJ;;AElBE;EACE,cAAA;AFqBJ;;AElBE;EACE,qBAAA;EACA,eAAA;EACA,2BAAA;EACA,0CAAA;EACA,gBAAA;EACA,cAAA;EACA,sBAAA;EACA,sNAAA;EACA,yBAAA;EACA,yBAAA;EACA,sBAAA;EACA,wBAAA;EACA,qBAAA;EACA,gBAAA;AFqBJ;;AElBE;EACE,qBAAA;EACA,UAAA;EACA,8FAAA;UAAA,sFAAA;AFqBJ;;AElBE;EACE,cAAA;EACA,sBAAA;AFqBJ;;AElBE;EACE,YAAA;EACA,sBAAA;EACA,sBAAA;AFqBJ;;AElBE;EACE,cAAA;EACA,yBAAA;AFqBJ;;AElBE;EACE,UAAA;AFqBJ;;AElBE;EACE,6BAAA;EACA,qBAAA;EACA,wBAAA;EACA,cAAA;AFqBJ;;AElBE;EACE,4BAAA;EACA,qBAAA;EACA,wBAAA;EACA,eAAA;AFqBJ;;AElBE;EACE,kBAAA;EACA,qBAAA;EACA,eAAA;EACA,2BAAA;EACA,gBAAA;AFqBJ;;AElBE;EACE,gBAAA;EACA,eAAA;EACA,2BAAA;EACA,SAAA;EACA,UAAA;AFqBJ;;AElBE;EACE,qBAAA;EACA,wDAAA;UAAA,gDAAA;AFqBJ;;AElBE;EACE,qBAAA;AFqBJ;;AElBE;EACE,kBAAA;EACA,MAAA;EACA,QAAA;EACA,OAAA;EACA,2BAAA;EACA,yBAAA;EACA,gBAAA;EACA,cAAA;EACA,oBAAA;EACA,yBAAA;EACA,sBAAA;EACA,qBAAA;EACA,iBAAA;EACA,sBAAA;EACA,yBAAA;EACA,sBAAA;AFqBJ;;AElBE;EACE,yBAAA;AFqBJ;;AElBE;EACE,kBAAA;EACA,SAAA;EACA,WAAA;EACA,YAAA;EACA,UAAA;EACA,cAAA;EACA,2BAAA;EACA,yBAAA;EACA,gBAAA;EACA,cAAA;EACA,yBAAA;EACA,yBAAA;EACA,kCAAA;AFqBJ;;AElBE;EACE,iBAAA;AFqBJ;;AElBE;EACE,oBAAA;EACA,oBAAA;EAAA,aAAA;EACA,mBAAA;EACA,eAAA;EACA,eAAA;EACA,gBAAA;EACA,gBAAA;AFqBJ;;AElBE;EACE,cAAA;EACA,oBAAA;AFqBJ;;AElBE;EACE,qBAAA;AFqBJ;;AElBE;EACE,cAAA;AFqBJ;;AElBE;EACE,gCAAA;AFqBJ;;AElBE;EACE,mBAAA;AFqBJ;;AElBE;EACE,6BAAA;EACA,+BAAA;EACA,gCAAA;AFqBJ;;AElBE;EACE,qCAAA;AFqBJ;;AElBE;EACE,cAAA;EACA,6BAAA;EACA,yBAAA;AFqBJ;;AElBE;;EAEE,cAAA;EACA,sBAAA;EACA,kCAAA;AFqBJ;;AElBE;EACE,gBAAA;EACA,yBAAA;EACA,0BAAA;AFqBJ;;AElBE;EACE,sBAAA;AFqBJ;;AElBE;;EAEE,WAAA;EACA,yBAAA;AFqBJ;;AElBE;EACE,kBAAA;EACA,mBAAA;UAAA,cAAA;EACA,kBAAA;AFqBJ;;AElBE;EACE,0BAAA;EACA,aAAA;EACA,oBAAA;EACA,mBAAA;UAAA,YAAA;EACA,kBAAA;AFqBJ;;AElBE;EACE,aAAA;AFqBJ;;AElBE;EACE,cAAA;AFqBJ;;AElBE;EACE,kBAAA;EACA,oBAAA;EACA,oBAAA;EAAA,aAAA;EACA,mBAAA;EACA,eAAA;EACA,sBAAA;EACA,yBAAA;UAAA,mBAAA;EACA,sBAAA;EACA,yBAAA;UAAA,8BAAA;EACA,oBAAA;AFqBJ;;AElBE;;EAEE,oBAAA;EACA,oBAAA;EAAA,aAAA;EACA,mBAAA;EACA,eAAA;EACA,sBAAA;EACA,yBAAA;UAAA,mBAAA;EACA,sBAAA;EACA,yBAAA;UAAA,8BAAA;AFqBJ;;AElBE;EACE,qBAAA;EACA,sBAAA;EACA,yBAAA;EACA,kBAAA;EACA,kBAAA;EACA,oBAAA;EACA,mBAAA;AFqBJ;;AElBE;EACE,qBAAA;AFqBJ;;AElBE;EACE,oBAAA;EACA,oBAAA;EAAA,aAAA;EACA,0BAAA;EACA,4BAAA;EAAA,6BAAA;UAAA,sBAAA;EACA,eAAA;EACA,gBAAA;EACA,gBAAA;AFqBJ;;AElBE;EACE,gBAAA;EACA,eAAA;AFqBJ;;AElBE;EACE,gBAAA;EACA,WAAA;AFqBJ;;AElBE;EACE,qBAAA;EACA,mBAAA;EACA,sBAAA;AFqBJ;;AElBE;EACE,6BAAA;EACA,gBAAA;EACA,oBAAA;EACA,mBAAA;UAAA,YAAA;EACA,sBAAA;EACA,yBAAA;UAAA,mBAAA;AFqBJ;;AElBE;EACE,wBAAA;EACA,kBAAA;EACA,cAAA;EACA,6BAAA;EACA,6BAAA;EACA,sBAAA;AFqBJ;;AElBE;EACE,qBAAA;AFqBJ;;AElBE;EACE,qBAAA;EACA,YAAA;EACA,aAAA;EACA,sBAAA;EACA,WAAA;EACA,mCAAA;EACA,0BAAA;AFqBJ;;AElBE;EACE;;IAEE,gBAAA;IACA,eAAA;EFqBJ;AACF;AElBE;EACE;IACE,yBAAA;IACA,8BAAA;IAAA,6BAAA;YAAA,qBAAA;IACA,oBAAA;IACA,uBAAA;YAAA,2BAAA;EFoBJ;EElBE;IACE,uBAAA;IACA,8BAAA;IAAA,6BAAA;YAAA,mBAAA;EFoBJ;EElBE;IACE,kBAAA;EFoBJ;EElBE;IACE,QAAA;IACA,UAAA;EFoBJ;EElBE;IACE,qBAAA;IACA,oBAAA;EFoBJ;EElBE;;IAEE,qBAAA;IACA,iBAAA;EFoBJ;EElBE;IACE,+BAAA;IACA,+BAAA;IAAA,wBAAA;IACA,6BAAA;IACA,gBAAA;EFoBJ;EElBE;IACE,aAAA;EFoBJ;EElBE;IACE,SAAA;IACA,YAAA;EFoBJ;AACF;AEjBE;EACE;;IAEE,gBAAA;IACA,eAAA;EFmBJ;AACF;AEhBE;EACE;IACE,yBAAA;IACA,8BAAA;IAAA,6BAAA;YAAA,qBAAA;IACA,oBAAA;IACA,uBAAA;YAAA,2BAAA;EFkBJ;EEhBE;IACE,uBAAA;IACA,8BAAA;IAAA,6BAAA;YAAA,mBAAA;EFkBJ;EEhBE;IACE,kBAAA;EFkBJ;EEhBE;IACE,QAAA;IACA,UAAA;EFkBJ;EEhBE;IACE,qBAAA;IACA,oBAAA;EFkBJ;EEhBE;;IAEE,qBAAA;IACA,iBAAA;EFkBJ;EEhBE;IACE,+BAAA;IACA,+BAAA;IAAA,wBAAA;IACA,6BAAA;IACA,gBAAA;EFkBJ;EEhBE;IACE,aAAA;EFkBJ;EEhBE;IACE,SAAA;IACA,YAAA;EFkBJ;AACF;AEfE;EACE;;IAEE,gBAAA;IACA,eAAA;EFiBJ;AACF;AEdE;EACE;IACE,yBAAA;IACA,8BAAA;IAAA,6BAAA;YAAA,qBAAA;IACA,oBAAA;IACA,uBAAA;YAAA,2BAAA;EFgBJ;EEdE;IACE,uBAAA;IACA,8BAAA;IAAA,6BAAA;YAAA,mBAAA;EFgBJ;EEdE;IACE,kBAAA;EFgBJ;EEdE;IACE,QAAA;IACA,UAAA;EFgBJ;EEdE;IACE,qBAAA;IACA,oBAAA;EFgBJ;EEdE;;IAEE,qBAAA;IACA,iBAAA;EFgBJ;EEdE;IACE,+BAAA;IACA,+BAAA;IAAA,wBAAA;IACA,6BAAA;IACA,gBAAA;EFgBJ;EEdE;IACE,aAAA;EFgBJ;EEdE;IACE,SAAA;IACA,YAAA;EFgBJ;AACF;AEbE;EACE;;IAEE,gBAAA;IACA,eAAA;EFeJ;AACF;AEZE;EACE;IACE,yBAAA;IACA,8BAAA;IAAA,6BAAA;YAAA,qBAAA;IACA,oBAAA;IACA,uBAAA;YAAA,2BAAA;EFcJ;EEZE;IACE,uBAAA;IACA,8BAAA;IAAA,6BAAA;YAAA,mBAAA;EFcJ;EEZE;IACE,kBAAA;EFcJ;EEZE;IACE,QAAA;IACA,UAAA;EFcJ;EEZE;IACE,qBAAA;IACA,oBAAA;EFcJ;EEZE;;IAEE,qBAAA;IACA,iBAAA;EFcJ;EEZE;IACE,+BAAA;IACA,+BAAA;IAAA,wBAAA;IACA,6BAAA;IACA,gBAAA;EFcJ;EEZE;IACE,aAAA;EFcJ;EEZE;IACE,SAAA;IACA,YAAA;EFcJ;AACF;AEXE;EACE,yBAAA;EACA,8BAAA;EAAA,6BAAA;UAAA,qBAAA;EACA,oBAAA;EACA,uBAAA;UAAA,2BAAA;AFaJ;;AEVE;;EAEE,gBAAA;EACA,eAAA;AFaJ;;AEVE;EACE,uBAAA;EACA,8BAAA;EAAA,6BAAA;UAAA,mBAAA;AFaJ;;AEVE;EACE,kBAAA;AFaJ;;AEVE;EACE,QAAA;EACA,UAAA;AFaJ;;AEVE;EACE,qBAAA;EACA,oBAAA;AFaJ;;AEVE;;EAEE,qBAAA;EACA,iBAAA;AFaJ;;AEVE;EACE,+BAAA;EACA,+BAAA;EAAA,wBAAA;EACA,6BAAA;EACA,gBAAA;AFaJ;;AEVE;EACE,aAAA;AFaJ;;AEVE;EACE,SAAA;EACA,YAAA;AFaJ;;AEVE;EACE,yBAAA;AFaJ;;AEVE;EACE,yBAAA;AFaJ;;AEVE;EACE,yBAAA;AFaJ;;AEVE;EACE,yBAAA;AFaJ;;AEVE;EACE,yBAAA;AFaJ;;AEVE;;;;EAIE,yBAAA;AFaJ;;AEVE;EACE,yBAAA;EACA,gCAAA;AFaJ;;AEVE;EACE,qQAAA;AFaJ;;AEVE;EACE,yBAAA;AFaJ;;AEVE;EACE,yBAAA;AFaJ;;AEVE;EACE,yBAAA;AFaJ;;AEVE;EACE,WAAA;AFaJ;;AEVE;EACE,WAAA;AFaJ;;AEVE;EACE,+BAAA;AFaJ;;AEVE;EACE,gCAAA;AFaJ;;AEVE;EACE,gCAAA;AFaJ;;AEVE;;;;EAIE,WAAA;AFaJ;;AEVE;EACE,+BAAA;EACA,sCAAA;AFaJ;;AEVE;EACE,2QAAA;AFaJ;;AEVE;EACE,+BAAA;AFaJ;;AEVE;EACE,WAAA;AFaJ;;AEVE;EACE,WAAA;AFaJ;;AEVE;EACE,kBAAA;EACA,oBAAA;EACA,oBAAA;EAAA,aAAA;EACA,0BAAA;EACA,4BAAA;EAAA,6BAAA;UAAA,sBAAA;EACA,YAAA;EACA,qBAAA;EACA,sBAAA;EACA,2BAAA;EACA,sCAAA;EACA,sBAAA;AFaJ;;AEVE;EACE,eAAA;EACA,cAAA;AFaJ;;AEVE;EACE,+BAAA;EACA,gCAAA;AFaJ;;AEVE;EACE,mCAAA;EACA,kCAAA;AFaJ;;AEVE;EACE,kBAAA;EACA,mBAAA;UAAA,cAAA;EACA,gBAAA;AFaJ;;AEVE;EACE,sBAAA;AFaJ;;AEVE;EACE,qBAAA;EACA,gBAAA;AFaJ;;AEVE;EACE,gBAAA;AFaJ;;AEVE;EACE,qBAAA;AFaJ;;AEVE;EACE,oBAAA;AFaJ;;AEVE;EACE,wBAAA;EACA,gBAAA;EACA,qCAAA;EACA,6CAAA;AFaJ;;AEVE;EACE,0DAAA;AFaJ;;AEVE;EACE,aAAA;AFaJ;;AEVE;EACE,wBAAA;EACA,qCAAA;EACA,0CAAA;AFaJ;;AEVE;EACE,0DAAA;AFaJ;;AEVE;EACE,uBAAA;EACA,uBAAA;EACA,sBAAA;EACA,gBAAA;AFaJ;;AEVE;EACE,uBAAA;EACA,sBAAA;AFaJ;;AEVE;EACE,kBAAA;EACA,MAAA;EACA,QAAA;EACA,SAAA;EACA,OAAA;EACA,gBAAA;AFaJ;;AEVE;EACE,WAAA;EACA,kCAAA;AFaJ;;AEVE;EACE,WAAA;EACA,2CAAA;EACA,4CAAA;AFaJ;;AEVE;EACE,WAAA;EACA,+CAAA;EACA,8CAAA;AFaJ;;AEVE;EACE,oBAAA;EACA,oBAAA;EAAA,aAAA;EACA,0BAAA;EACA,4BAAA;EAAA,6BAAA;UAAA,sBAAA;AFaJ;;AEVE;EACE,mBAAA;AFaJ;;AEVE;EACE;IACE,uBAAA;IACA,8BAAA;IAAA,6BAAA;YAAA,mBAAA;IACA,mBAAA;IACA,kBAAA;EFaJ;EEXE;IACE,oBAAA;IACA,oBAAA;IAAA,aAAA;IACA,gBAAA;IACA,mBAAA;YAAA,YAAA;IACA,0BAAA;IACA,4BAAA;IAAA,6BAAA;YAAA,sBAAA;IACA,kBAAA;IACA,gBAAA;IACA,iBAAA;EFaJ;AACF;AEVE;EACE,oBAAA;EACA,oBAAA;EAAA,aAAA;EACA,0BAAA;EACA,4BAAA;EAAA,6BAAA;UAAA,sBAAA;AFYJ;;AETE;EACE,mBAAA;AFYJ;;AETE;EACE;IACE,uBAAA;IACA,8BAAA;IAAA,6BAAA;YAAA,mBAAA;EFYJ;EEVE;IACE,gBAAA;IACA,mBAAA;YAAA,YAAA;IACA,gBAAA;EFYJ;EEVE;IACE,cAAA;IACA,cAAA;EFYJ;EEVE;IACE,0BAAA;IACA,6BAAA;EFYJ;EEVE;;;IAEE,0BAAA;EFaJ;EEXE;;;IAEE,6BAAA;EFcJ;EEZE;IACE,yBAAA;IACA,4BAAA;EFcJ;EEZE;;;IAEE,yBAAA;EFeJ;EEbE;;;IAEE,4BAAA;EFgBJ;EEdE;IACE,sBAAA;EFgBJ;EEdE;;;IAEE,+BAAA;IACA,gCAAA;EFiBJ;EEfE;;;IAEE,mCAAA;IACA,kCAAA;EFkBJ;EEhBE;IACE,gBAAA;EFkBJ;EEhBE;;;;;;;IAIE,gBAAA;EFqBJ;AACF;AElBE;EACE,sBAAA;AFoBJ;;AEjBE;EACE;IACE,uBAAA;IACA,oBAAA;SAAA,eAAA;IACA,2BAAA;IACA,wBAAA;SAAA,mBAAA;EFoBJ;EElBE;IACE,qBAAA;IACA,WAAA;EFoBJ;AACF;AEjBE;EACE,oBAAA;EACA,oBAAA;EAAA,aAAA;EACA,mBAAA;EACA,eAAA;EACA,qBAAA;EACA,mBAAA;EACA,gBAAA;EACA,yBAAA;EACA,sBAAA;AFmBJ;;AEhBE;EACE,qBAAA;EACA,qBAAA;EACA,oBAAA;EACA,cAAA;EACA,YAAA;AFmBJ;;AEhBE;EACE,0BAAA;AFmBJ;;AEhBE;EACE,qBAAA;AFmBJ;;AEhBE;EACE,cAAA;AFmBJ;;AEhBE;EACE,oBAAA;EACA,oBAAA;EAAA,aAAA;EACA,eAAA;EACA,gBAAA;EACA,sBAAA;AFmBJ;;AEhBE;EACE,kBAAA;EACA,cAAA;EACA,uBAAA;EACA,iBAAA;EACA,iBAAA;EACA,cAAA;EACA,sBAAA;EACA,yBAAA;AFmBJ;;AEhBE;EACE,cAAA;EACA,qBAAA;EACA,yBAAA;EACA,qBAAA;AFmBJ;;AEhBE;EACE,cAAA;EACA,+BAAA;EACA,kCAAA;AFmBJ;;AEhBE;EACE,gCAAA;EACA,mCAAA;AFmBJ;;AEhBE;EACE,UAAA;EACA,WAAA;EACA,yBAAA;EACA,qBAAA;AFmBJ;;AEhBE;EACE,cAAA;EACA,oBAAA;EACA,sBAAA;EACA,qBAAA;AFmBJ;;AEhBE;EACE,uBAAA;EACA,kBAAA;EACA,gBAAA;AFmBJ;;AEhBE;EACE,8BAAA;EACA,iCAAA;AFmBJ;;AEhBE;EACE,+BAAA;EACA,kCAAA;AFmBJ;;AEhBE;EACE,uBAAA;EACA,mBAAA;EACA,gBAAA;AFmBJ;;AEhBE;EACE,8BAAA;EACA,iCAAA;AFmBJ;;AEhBE;EACE,+BAAA;EACA,kCAAA;AFmBJ;;AEhBE;EACE,qBAAA;EACA,qBAAA;EACA,cAAA;EACA,gBAAA;EACA,cAAA;EACA,kBAAA;EACA,mBAAA;EACA,wBAAA;EACA,sBAAA;AFmBJ;;AEhBE;EACE,aAAA;AFmBJ;;AEhBE;EACE,kBAAA;EACA,SAAA;AFmBJ;;AEhBE;EACE,oBAAA;EACA,mBAAA;EACA,oBAAA;AFmBJ;;AEhBE;EACE,WAAA;EACA,yBAAA;AFmBJ;;AEhBE;EACE,WAAA;EACA,qBAAA;EACA,yBAAA;AFmBJ;;AEhBE;EACE,WAAA;EACA,yBAAA;AFmBJ;;AEhBE;EACE,WAAA;EACA,qBAAA;EACA,yBAAA;AFmBJ;;AEhBE;EACE,WAAA;EACA,yBAAA;AFmBJ;;AEhBE;EACE,WAAA;EACA,qBAAA;EACA,yBAAA;AFmBJ;;AEhBE;EACE,WAAA;EACA,yBAAA;AFmBJ;;AEhBE;EACE,WAAA;EACA,qBAAA;EACA,yBAAA;AFmBJ;;AEhBE;EACE,cAAA;EACA,yBAAA;AFmBJ;;AEhBE;EACE,cAAA;EACA,qBAAA;EACA,yBAAA;AFmBJ;;AEhBE;EACE,WAAA;EACA,yBAAA;AFmBJ;;AEhBE;EACE,WAAA;EACA,qBAAA;EACA,yBAAA;AFmBJ;;AEhBE;EACE,cAAA;EACA,yBAAA;AFmBJ;;AEhBE;EACE,cAAA;EACA,qBAAA;EACA,yBAAA;AFmBJ;;AEhBE;EACE,WAAA;EACA,yBAAA;AFmBJ;;AEhBE;EACE,WAAA;EACA,qBAAA;EACA,yBAAA;AFmBJ;;AEhBE;EACE,kBAAA;EACA,mBAAA;EACA,yBAAA;EACA,qBAAA;AFmBJ;;AEhBE;EACE;IACE,kBAAA;EFmBJ;AACF;AEhBE;EACE,gBAAA;EACA,eAAA;EACA,gBAAA;AFkBJ;;AEfE;EACE,kBAAA;EACA,wBAAA;EACA,mBAAA;EACA,6BAAA;EACA,sBAAA;AFkBJ;;AEfE;EACE,cAAA;AFkBJ;;AEfE;EACE,gBAAA;AFkBJ;;AEfE;EACE,mBAAA;AFkBJ;;AEfE;EACE,kBAAA;EACA,MAAA;EACA,QAAA;EACA,wBAAA;EACA,cAAA;AFkBJ;;AEfE;EACE,cAAA;EACA,yBAAA;EACA,qBAAA;AFkBJ;;AEfE;EACE,yBAAA;AFkBJ;;AEfE;EACE,cAAA;AFkBJ;;AEfE;EACE,cAAA;EACA,yBAAA;EACA,qBAAA;AFkBJ;;AEfE;EACE,yBAAA;AFkBJ;;AEfE;EACE,cAAA;AFkBJ;;AEfE;EACE,cAAA;EACA,yBAAA;EACA,qBAAA;AFkBJ;;AEfE;EACE,yBAAA;AFkBJ;;AEfE;EACE,cAAA;AFkBJ;;AEfE;EACE,cAAA;EACA,yBAAA;EACA,qBAAA;AFkBJ;;AEfE;EACE,yBAAA;AFkBJ;;AEfE;EACE,cAAA;AFkBJ;;AEfE;EACE,cAAA;EACA,yBAAA;EACA,qBAAA;AFkBJ;;AEfE;EACE,yBAAA;AFkBJ;;AEfE;EACE,cAAA;AFkBJ;;AEfE;EACE,cAAA;EACA,yBAAA;EACA,qBAAA;AFkBJ;;AEfE;EACE,yBAAA;AFkBJ;;AEfE;EACE,cAAA;AFkBJ;;AEfE;EACE,cAAA;EACA,yBAAA;EACA,qBAAA;AFkBJ;;AEfE;EACE,yBAAA;AFkBJ;;AEfE;EACE,cAAA;AFkBJ;;AEfE;EACE,cAAA;EACA,yBAAA;EACA,qBAAA;AFkBJ;;AEfE;EACE,yBAAA;AFkBJ;;AEfE;EACE,cAAA;AFkBJ;;AEfE;EACE;IACE,2BAAA;EFkBJ;EEhBE;IACE,wBAAA;EFkBJ;AACF;AEfE;EACE;IACE,2BAAA;EFiBJ;EEfE;IACE,wBAAA;EFiBJ;AACF;AEdE;EACE,oBAAA;EACA,oBAAA;EAAA,aAAA;EACA,YAAA;EACA,gBAAA;EACA,kBAAA;EACA,yBAAA;EACA,sBAAA;AFgBJ;;AEbE;EACE,oBAAA;EACA,oBAAA;EAAA,aAAA;EACA,0BAAA;EACA,4BAAA;EAAA,6BAAA;UAAA,sBAAA;EACA,qBAAA;EACA,wBAAA;UAAA,uBAAA;EACA,WAAA;EACA,kBAAA;EACA,yBAAA;EACA,mCAAA;EAAA,2BAAA;AFgBJ;;AEbE;EACE,qMAAA;EACA,0BAAA;AFgBJ;;AEbE;EACE,0DAAA;EACA,kDAAA;AFgBJ;;AEbE;EACE,oBAAA;EACA,oBAAA;EAAA,aAAA;EACA,qBAAA;EACA,wBAAA;UAAA,uBAAA;AFgBJ;;AEbE;EACE,WAAA;EACA,mBAAA;UAAA,OAAA;AFgBJ;;AEbE;EACE,oBAAA;EACA,oBAAA;EAAA,aAAA;EACA,0BAAA;EACA,4BAAA;EAAA,6BAAA;UAAA,sBAAA;EACA,eAAA;EACA,gBAAA;AFgBJ;;AEbE;EACE,WAAA;EACA,cAAA;EACA,mBAAA;AFgBJ;;AEbE;EACE,cAAA;EACA,qBAAA;EACA,yBAAA;AFgBJ;;AEbE;EACE,cAAA;EACA,yBAAA;AFgBJ;;AEbE;EACE,kBAAA;EACA,cAAA;EACA,wBAAA;EACA,mBAAA;EACA,sBAAA;EACA,sCAAA;AFgBJ;;AEbE;EACE,+BAAA;EACA,gCAAA;AFgBJ;;AEbE;EACE,gBAAA;EACA,mCAAA;EACA,kCAAA;AFgBJ;;AEbE;EACE,qBAAA;AFgBJ;;AEbE;EACE,cAAA;EACA,sBAAA;AFgBJ;;AEbE;EACE,UAAA;EACA,WAAA;EACA,yBAAA;EACA,qBAAA;AFgBJ;;AEbE;EACE,eAAA;EACA,cAAA;EACA,gBAAA;AFgBJ;;AEbE;EACE,aAAA;AFgBJ;;AEbE;EACE,gBAAA;AFgBJ;;AEbE;EACE,cAAA;EACA,yBAAA;AFgBJ;;AEbE;;EAEE,cAAA;AFgBJ;;AEbE;;;EAGE,cAAA;EACA,yBAAA;AFgBJ;;AEbE;;EAEE,WAAA;EACA,yBAAA;EACA,qBAAA;AFgBJ;;AEbE;EACE,cAAA;EACA,yBAAA;AFgBJ;;AEbE;;EAEE,cAAA;AFgBJ;;AEbE;;;EAGE,cAAA;EACA,yBAAA;AFgBJ;;AEbE;;EAEE,WAAA;EACA,yBAAA;EACA,qBAAA;AFgBJ;;AEbE;EACE,cAAA;EACA,yBAAA;AFgBJ;;AEbE;;EAEE,cAAA;AFgBJ;;AEbE;;;EAGE,cAAA;EACA,yBAAA;AFgBJ;;AEbE;;EAEE,WAAA;EACA,yBAAA;EACA,qBAAA;AFgBJ;;AEbE;EACE,cAAA;EACA,yBAAA;AFgBJ;;AEbE;;EAEE,cAAA;AFgBJ;;AEbE;;;EAGE,cAAA;EACA,yBAAA;AFgBJ;;AEbE;;EAEE,WAAA;EACA,yBAAA;EACA,qBAAA;AFgBJ;;AEbE;EACE,cAAA;EACA,yBAAA;AFgBJ;;AEbE;;EAEE,cAAA;AFgBJ;;AEbE;;;EAGE,cAAA;EACA,yBAAA;AFgBJ;;AEbE;;EAEE,WAAA;EACA,yBAAA;EACA,qBAAA;AFgBJ;;AEbE;EACE,cAAA;EACA,yBAAA;AFgBJ;;AEbE;;EAEE,cAAA;AFgBJ;;AEbE;;;EAGE,cAAA;EACA,yBAAA;AFgBJ;;AEbE;;EAEE,WAAA;EACA,yBAAA;EACA,qBAAA;AFgBJ;;AEbE;EACE,cAAA;EACA,yBAAA;AFgBJ;;AEbE;;EAEE,cAAA;AFgBJ;;AEbE;;;EAGE,cAAA;EACA,yBAAA;AFgBJ;;AEbE;;EAEE,WAAA;EACA,yBAAA;EACA,qBAAA;AFgBJ;;AEbE;EACE,cAAA;EACA,yBAAA;AFgBJ;;AEbE;;EAEE,cAAA;AFgBJ;;AEbE;;;EAGE,cAAA;EACA,yBAAA;AFgBJ;;AEbE;;EAEE,WAAA;EACA,yBAAA;EACA,qBAAA;AFgBJ;;AEbE;EACE,YAAA;EACA,iBAAA;EACA,gBAAA;EACA,cAAA;EACA,WAAA;EACA,yBAAA;EACA,YAAA;AFgBJ;;AEbE;EACE,WAAA;EACA,qBAAA;EACA,aAAA;AFgBJ;;AEbE;EACE,UAAA;EACA,6BAAA;EACA,SAAA;EACA,wBAAA;AFgBJ;;AEbE;EACE,gBAAA;AFgBJ;;AEbE;EACE,eAAA;EACA,MAAA;EACA,QAAA;EACA,SAAA;EACA,OAAA;EACA,aAAA;EACA,aAAA;EACA,gBAAA;EACA,UAAA;AFgBJ;;AEbE;EACE,kBAAA;EACA,gBAAA;AFgBJ;;AEbE;EACE,kBAAA;EACA,WAAA;EACA,cAAA;EACA,oBAAA;AFgBJ;;AEbE;EACE,2CAAA;EACA,mDAAA;EAAA,mCAAA;EACA,oEAAA;EACA,qCAAA;EACA,6BAAA;AFgBJ;;AEbE;EACE,kCAAA;EACA,0BAAA;AFgBJ;;AEbE;EACE,oBAAA;EACA,oBAAA;EAAA,aAAA;EACA,sBAAA;EACA,yBAAA;UAAA,mBAAA;EACA,6BAAA;AFgBJ;;AEbE;EACE,kBAAA;EACA,oBAAA;EACA,oBAAA;EAAA,aAAA;EACA,0BAAA;EACA,4BAAA;EAAA,6BAAA;UAAA,sBAAA;EACA,WAAA;EACA,oBAAA;EACA,sBAAA;EACA,4BAAA;EACA,oCAAA;EACA,qBAAA;EACA,UAAA;AFgBJ;;AEbE;EACE,eAAA;EACA,MAAA;EACA,QAAA;EACA,SAAA;EACA,OAAA;EACA,aAAA;EACA,sBAAA;AFgBJ;;AEbE;EACE,UAAA;AFgBJ;;AEbE;EACE,YAAA;AFgBJ;;AEbE;EACE,oBAAA;EACA,oBAAA;EAAA,aAAA;EACA,qBAAA;EACA,wBAAA;UAAA,uBAAA;EACA,sBAAA;EACA,yBAAA;UAAA,8BAAA;EACA,aAAA;EACA,gCAAA;EACA,8BAAA;EACA,+BAAA;AFgBJ;;AEbE;EACE,aAAA;EACA,8BAAA;AFgBJ;;AEbE;EACE,gBAAA;EACA,gBAAA;AFgBJ;;AEbE;EACE,kBAAA;EACA,kBAAA;EACA,mBAAA;UAAA,cAAA;EACA,aAAA;AFgBJ;;AEbE;EACE,oBAAA;EACA,oBAAA;EAAA,aAAA;EACA,sBAAA;EACA,yBAAA;UAAA,mBAAA;EACA,kBAAA;EACA,qBAAA;UAAA,yBAAA;EACA,aAAA;EACA,6BAAA;AFgBJ;;AEbE;EACE,oBAAA;AFgBJ;;AEbE;EACE,qBAAA;AFgBJ;;AEbE;EACE,kBAAA;EACA,YAAA;EACA,WAAA;EACA,YAAA;EACA,gBAAA;AFgBJ;;AEbE;EACE;IACE,gBAAA;IACA,oBAAA;EFgBJ;EEdE;IACE,+BAAA;EFgBJ;EEdE;IACE,gBAAA;EFgBJ;AACF;AEbE;EACE;IACE,gBAAA;EFeJ;AACF;AEZE;EACE,kBAAA;EACA,aAAA;EACA,cAAA;EACA,SAAA;EACA,iKAAA;EACA,kBAAA;EACA,gBAAA;EACA,gBAAA;EACA,gBAAA;EACA,iBAAA;EACA,qBAAA;EACA,iBAAA;EACA,oBAAA;EACA,sBAAA;EACA,kBAAA;EACA,oBAAA;EACA,mBAAA;EACA,gBAAA;EACA,mBAAA;EACA,qBAAA;EACA,UAAA;AFcJ;;AEXE;EACE,YAAA;AFcJ;;AEXE;EACE,kBAAA;EACA,cAAA;EACA,aAAA;EACA,cAAA;AFcJ;;AEXE;EACE,kBAAA;EACA,yBAAA;EACA,mBAAA;AFcJ;;AEXE;EACE,iBAAA;AFcJ;;AEXE;EACE,SAAA;AFcJ;;AEXE;EACE,oBAAA;EACA,WAAA;EACA,6BAAA;EACA,sBAAA;AFcJ;;AEXE;EACE,iBAAA;AFcJ;;AEXE;EACE,OAAA;AFcJ;;AEXE;EACE,mBAAA;EACA,WAAA;EACA,oCAAA;EACA,wBAAA;AFcJ;;AEXE;EACE,iBAAA;AFcJ;;AEXE;EACE,MAAA;AFcJ;;AEXE;EACE,oBAAA;EACA,WAAA;EACA,6BAAA;EACA,yBAAA;AFcJ;;AEXE;EACE,iBAAA;AFcJ;;AEXE;EACE,QAAA;AFcJ;;AEXE;EACE,QAAA;EACA,mBAAA;EACA,WAAA;EACA,oCAAA;EACA,uBAAA;AFcJ;;AEXE;EACE,gBAAA;EACA,uBAAA;EACA,WAAA;EACA,kBAAA;EACA,sBAAA;EACA,sBAAA;AFcJ;;AEXE;EACE,kBAAA;EACA,MAAA;EACA,OAAA;EACA,aAAA;EACA,cAAA;EACA,gBAAA;EACA,iKAAA;EACA,kBAAA;EACA,gBAAA;EACA,gBAAA;EACA,gBAAA;EACA,iBAAA;EACA,qBAAA;EACA,iBAAA;EACA,oBAAA;EACA,sBAAA;EACA,kBAAA;EACA,oBAAA;EACA,mBAAA;EACA,gBAAA;EACA,mBAAA;EACA,qBAAA;EACA,sBAAA;EACA,4BAAA;EACA,oCAAA;EACA,qBAAA;AFcJ;;AEXE;EACE,kBAAA;EACA,cAAA;EACA,aAAA;EACA,cAAA;AFcJ;;AEXE;;EAEE,kBAAA;EACA,cAAA;EACA,yBAAA;EACA,mBAAA;AFcJ;;AEXE;EACE,WAAA;EACA,oBAAA;AFcJ;;AEXE;EACE,WAAA;EACA,oBAAA;AFcJ;;AEXE;EACE,qBAAA;AFcJ;;AEXE;EACE,SAAA;AFcJ;;AEXE;;EAEE,sBAAA;AFcJ;;AEXE;EACE,eAAA;EACA,oBAAA;EACA,qCAAA;AFcJ;;AEXE;EACE,iCAAA;EACA,oBAAA;EACA,sBAAA;AFcJ;;AEXE;EACE,mBAAA;AFcJ;;AEXE;EACE,OAAA;AFcJ;;AEXE;;EAEE,mBAAA;EACA,oBAAA;AFcJ;;AEXE;EACE,aAAA;EACA,uCAAA;AFcJ;;AEXE;EACE,+BAAA;EACA,wBAAA;AFcJ;;AEXE;EACE,kBAAA;AFcJ;;AEXE;EACE,MAAA;AFcJ;;AEXE;;EAEE,oBAAA;EACA,mBAAA;AFcJ;;AEXE;EACE,YAAA;EACA,wCAAA;AFcJ;;AEXE;EACE,8BAAA;EACA,yBAAA;AFcJ;;AEXE;EACE,kBAAA;EACA,MAAA;EACA,SAAA;EACA,cAAA;EACA,WAAA;EACA,kBAAA;EACA,WAAA;EACA,gCAAA;AFcJ;;AEXE;EACE,oBAAA;AFcJ;;AEXE;EACE,QAAA;AFcJ;;AEXE;;EAEE,mBAAA;EACA,qBAAA;AFcJ;;AEXE;EACE,cAAA;EACA,sCAAA;AFcJ;;AEXE;EACE,gCAAA;EACA,uBAAA;AFcJ;;AEXE;EACE,uBAAA;EACA,gBAAA;EACA,eAAA;EACA,cAAA;EACA,yBAAA;EACA,gCAAA;EACA,0CAAA;EACA,2CAAA;AFcJ;;AEXE;EACE,aAAA;AFcJ;;AEXE;EACE,uBAAA;EACA,cAAA;AFcJ;;AEXE;EACE,kBAAA;AFcJ;;AEXE;EACE,kBAAA;EACA,WAAA;EACA,gBAAA;AFcJ;;AEXE;EACE,kBAAA;EACA,aAAA;EACA,sBAAA;EACA,yBAAA;UAAA,mBAAA;EACA,WAAA;EACA,uCAAA;EACA,+CAAA;EAAA,+BAAA;EACA,4DAAA;EACA,mCAAA;EACA,2BAAA;EACA,2BAAA;EACA,mBAAA;AFcJ;;AEXE;;;EAGE,cAAA;AFcJ;;AEXE;;EAEE,kBAAA;EACA,MAAA;AFcJ;;AEXE;;EAEE,gCAAA;EACA,wBAAA;AFcJ;;AEXE;EACE;;IAEE,uCAAA;IACA,+BAAA;EFcJ;AACF;AEXE;;EAEE,mCAAA;EACA,2BAAA;AFaJ;;AEVE;EACE;;IAEE,0CAAA;IACA,kCAAA;EFaJ;AACF;AEVE;;EAEE,oCAAA;EACA,4BAAA;AFYJ;;AETE;EACE;;IAEE,2CAAA;IACA,mCAAA;EFYJ;AACF;AETE;;EAEE,kBAAA;EACA,MAAA;EACA,SAAA;EACA,oBAAA;EACA,oBAAA;EAAA,aAAA;EACA,sBAAA;EACA,yBAAA;UAAA,mBAAA;EACA,qBAAA;EACA,wBAAA;UAAA,uBAAA;EACA,UAAA;EACA,WAAA;EACA,kBAAA;EACA,YAAA;AFWJ;;AERE;;;EAGE,WAAA;EACA,qBAAA;EACA,UAAA;EACA,YAAA;AFWJ;;AERE;EACE,OAAA;AFWJ;;AERE;EACE,QAAA;AFWJ;;AERE;;EAEE,qBAAA;EACA,WAAA;EACA,YAAA;EACA,+CAAA;EACA,0BAAA;AFWJ;;AERE;EACE,gNAAA;AFWJ;;AERE;EACE,gNAAA;AFWJ;;AERE;EACE,kBAAA;EACA,QAAA;EACA,YAAA;EACA,OAAA;EACA,WAAA;EACA,oBAAA;EACA,oBAAA;EAAA,aAAA;EACA,qBAAA;EACA,wBAAA;UAAA,uBAAA;EACA,eAAA;EACA,iBAAA;EACA,gBAAA;EACA,gBAAA;AFWJ;;AERE;EACE,kBAAA;EACA,kBAAA;EACA,mBAAA;UAAA,cAAA;EACA,WAAA;EACA,WAAA;EACA,iBAAA;EACA,gBAAA;EACA,mBAAA;EACA,0CAAA;AFWJ;;AERE;EACE,kBAAA;EACA,UAAA;EACA,OAAA;EACA,qBAAA;EACA,WAAA;EACA,YAAA;EACA,WAAA;AFWJ;;AERE;EACE,kBAAA;EACA,aAAA;EACA,OAAA;EACA,qBAAA;EACA,WAAA;EACA,YAAA;EACA,WAAA;AFWJ;;AERE;EACE,sBAAA;AFWJ;;AERE;EACE,kBAAA;EACA,UAAA;EACA,YAAA;EACA,SAAA;EACA,WAAA;EACA,iBAAA;EACA,oBAAA;EACA,WAAA;EACA,kBAAA;AFWJ;;AERE;EACE,mCAAA;AFWJ;;AERE;EACE,8BAAA;AFWJ;;AERE;EACE,iCAAA;AFWJ;;AERE;EACE,iCAAA;AFWJ;;AERE;EACE,sCAAA;AFWJ;;AERE;EACE,mCAAA;AFWJ;;AERE;EACE,oCAAA;AFWJ;;AERE;EACE,oCAAA;AFWJ;;AERE;EACE,oCAAA;AFWJ;;AERE;EACE,oCAAA;AFWJ;;AERE;EACE,oCAAA;AFWJ;;AERE;EACE,oCAAA;AFWJ;;AERE;EACE,oCAAA;AFWJ;;AERE;EACE,oCAAA;AFWJ;;AERE;EACE,oCAAA;AFWJ;;AERE;EACE,oCAAA;AFWJ;;AERE;EACE,oCAAA;AFWJ;;AERE;EACE,oCAAA;AFWJ;;AERE;EACE,oCAAA;AFWJ;;AERE;EACE,oCAAA;AFWJ;;AERE;EACE,oCAAA;AFWJ;;AERE;EACE,oCAAA;AFWJ;;AERE;EACE,iCAAA;AFWJ;;AERE;EACE,wCAAA;AFWJ;;AERE;EACE,oCAAA;AFWJ;;AERE;EACE,oBAAA;AFWJ;;AERE;EACE,wBAAA;AFWJ;;AERE;EACE,0BAAA;AFWJ;;AERE;EACE,2BAAA;AFWJ;;AERE;EACE,yBAAA;AFWJ;;AERE;EACE,gCAAA;AFWJ;;AERE;EACE,gCAAA;AFWJ;;AERE;EACE,gCAAA;AFWJ;;AERE;EACE,gCAAA;AFWJ;;AERE;EACE,gCAAA;AFWJ;;AERE;EACE,gCAAA;AFWJ;;AERE;EACE,gCAAA;AFWJ;;AERE;EACE,gCAAA;AFWJ;;AERE;EACE,6BAAA;AFWJ;;AERE;EACE,iCAAA;AFWJ;;AERE;EACE,0CAAA;EACA,2CAAA;AFWJ;;AERE;EACE,2CAAA;EACA,8CAAA;AFWJ;;AERE;EACE,8CAAA;EACA,6CAAA;AFWJ;;AERE;EACE,0CAAA;EACA,6CAAA;AFWJ;;AERE;EACE,6BAAA;AFWJ;;AERE;EACE,2BAAA;AFWJ;;AERE;EACE,cAAA;EACA,WAAA;EACA,WAAA;AFWJ;;AERE;EACE,wBAAA;AFWJ;;AERE;EACE,0BAAA;AFWJ;;AERE;EACE,gCAAA;AFWJ;;AERE;EACE,yBAAA;AFWJ;;AERE;EACE,yBAAA;AFWJ;;AERE;EACE,6BAAA;AFWJ;;AERE;EACE,8BAAA;AFWJ;;AERE;EACE,+BAAA;EACA,+BAAA;EAAA,wBAAA;AFWJ;;AERE;EACE,sCAAA;EACA,sCAAA;EAAA,+BAAA;AFWJ;;AERE;EACE;IACE,wBAAA;EFWJ;EETE;IACE,0BAAA;EFWJ;EETE;IACE,gCAAA;EFWJ;EETE;IACE,yBAAA;EFWJ;EETE;IACE,yBAAA;EFWJ;EETE;IACE,6BAAA;EFWJ;EETE;IACE,8BAAA;EFWJ;EETE;IACE,+BAAA;IACA,+BAAA;IAAA,wBAAA;EFWJ;EETE;IACE,sCAAA;IACA,sCAAA;IAAA,+BAAA;EFWJ;AACF;AERE;EACE;IACE,wBAAA;EFUJ;EERE;IACE,0BAAA;EFUJ;EERE;IACE,gCAAA;EFUJ;EERE;IACE,yBAAA;EFUJ;EERE;IACE,yBAAA;EFUJ;EERE;IACE,6BAAA;EFUJ;EERE;IACE,8BAAA;EFUJ;EERE;IACE,+BAAA;IACA,+BAAA;IAAA,wBAAA;EFUJ;EERE;IACE,sCAAA;IACA,sCAAA;IAAA,+BAAA;EFUJ;AACF;AEPE;EACE;IACE,wBAAA;EFSJ;EEPE;IACE,0BAAA;EFSJ;EEPE;IACE,gCAAA;EFSJ;EEPE;IACE,yBAAA;EFSJ;EEPE;IACE,yBAAA;EFSJ;EEPE;IACE,6BAAA;EFSJ;EEPE;IACE,8BAAA;EFSJ;EEPE;IACE,+BAAA;IACA,+BAAA;IAAA,wBAAA;EFSJ;EEPE;IACE,sCAAA;IACA,sCAAA;IAAA,+BAAA;EFSJ;AACF;AENE;EACE;IACE,wBAAA;EFQJ;EENE;IACE,0BAAA;EFQJ;EENE;IACE,gCAAA;EFQJ;EENE;IACE,yBAAA;EFQJ;EENE;IACE,yBAAA;EFQJ;EENE;IACE,6BAAA;EFQJ;EENE;IACE,8BAAA;EFQJ;EENE;IACE,+BAAA;IACA,+BAAA;IAAA,wBAAA;EFQJ;EENE;IACE,sCAAA;IACA,sCAAA;IAAA,+BAAA;EFQJ;AACF;AELE;EACE,wBAAA;AFOJ;;AEJE;EACE;IACE,yBAAA;EFOJ;AACF;AEJE;EACE,wBAAA;AFMJ;;AEHE;EACE;IACE,0BAAA;EFMJ;AACF;AEHE;EACE,wBAAA;AFKJ;;AEFE;EACE;IACE,gCAAA;EFKJ;AACF;AEFE;EACE;IACE,wBAAA;EFIJ;AACF;AEDE;EACE,kBAAA;EACA,cAAA;EACA,WAAA;EACA,UAAA;EACA,gBAAA;AFGJ;;AEAE;EACE,cAAA;EACA,WAAA;AFGJ;;AEAE;;;;;EAKE,kBAAA;EACA,MAAA;EACA,SAAA;EACA,OAAA;EACA,WAAA;EACA,YAAA;EACA,SAAA;AFGJ;;AEAE;EACE,uBAAA;AFGJ;;AEAE;EACE,mBAAA;AFGJ;;AEAE;EACE,gBAAA;AFGJ;;AEAE;EACE,iBAAA;AFGJ;;AEAE;EACE,kCAAA;EACA,yCAAA;EAAA,wCAAA;UAAA,8BAAA;AFGJ;;AEAE;EACE,qCAAA;EACA,uCAAA;EAAA,wCAAA;UAAA,iCAAA;AFGJ;;AEAE;EACE,0CAAA;EACA,yCAAA;EAAA,yCAAA;UAAA,sCAAA;AFGJ;;AEAE;EACE,6CAAA;EACA,uCAAA;EAAA,yCAAA;UAAA,yCAAA;AFGJ;;AEAE;EACE,8BAAA;EACA,0BAAA;AFGJ;;AEAE;EACE,gCAAA;EACA,4BAAA;AFGJ;;AEAE;EACE,sCAAA;EACA,kCAAA;AFGJ;;AEAE;EACE,+BAAA;EACA,kCAAA;UAAA,sCAAA;AFGJ;;AEAE;EACE,6BAAA;EACA,gCAAA;UAAA,oCAAA;AFGJ;;AEAE;EACE,gCAAA;EACA,mCAAA;UAAA,kCAAA;AFGJ;;AEAE;EACE,iCAAA;EACA,oCAAA;UAAA,yCAAA;AFGJ;;AEAE;EACE,oCAAA;EACA,wCAAA;AFGJ;;AEAE;EACE,gCAAA;EACA,mCAAA;UAAA,kCAAA;AFGJ;;AEAE;EACE,8BAAA;EACA,iCAAA;UAAA,gCAAA;AFGJ;;AEAE;EACE,iCAAA;EACA,oCAAA;UAAA,8BAAA;AFGJ;;AEAE;EACE,mCAAA;EACA,sCAAA;UAAA,gCAAA;AFGJ;;AEAE;EACE,kCAAA;EACA,qCAAA;UAAA,+BAAA;AFGJ;;AEAE;EACE,oCAAA;EACA,oCAAA;AFGJ;;AEAE;EACE,kCAAA;EACA,kCAAA;AFGJ;;AEAE;EACE,qCAAA;EACA,gCAAA;AFGJ;;AEAE;EACE,sCAAA;EACA,uCAAA;AFGJ;;AEAE;EACE,yCAAA;EACA,sCAAA;AFGJ;;AEAE;EACE,sCAAA;EACA,iCAAA;AFGJ;;AEAE;EACE,oCAAA;EACA,2BAAA;AFGJ;;AEAE;EACE,qCAAA;EACA,iCAAA;AFGJ;;AEAE;EACE,mCAAA;EACA,+BAAA;AFGJ;;AEAE;EACE,sCAAA;EACA,6BAAA;AFGJ;;AEAE;EACE,wCAAA;EACA,+BAAA;AFGJ;;AEAE;EACE,uCAAA;EACA,8BAAA;AFGJ;;AEAE;EACE;IACE,kCAAA;IACA,yCAAA;IAAA,wCAAA;YAAA,8BAAA;EFGJ;EEDE;IACE,qCAAA;IACA,uCAAA;IAAA,wCAAA;YAAA,iCAAA;EFGJ;EEDE;IACE,0CAAA;IACA,yCAAA;IAAA,yCAAA;YAAA,sCAAA;EFGJ;EEDE;IACE,6CAAA;IACA,uCAAA;IAAA,yCAAA;YAAA,yCAAA;EFGJ;EEDE;IACE,8BAAA;IACA,0BAAA;EFGJ;EEDE;IACE,gCAAA;IACA,4BAAA;EFGJ;EEDE;IACE,sCAAA;IACA,kCAAA;EFGJ;EEDE;IACE,+BAAA;IACA,kCAAA;YAAA,sCAAA;EFGJ;EEDE;IACE,6BAAA;IACA,gCAAA;YAAA,oCAAA;EFGJ;EEDE;IACE,gCAAA;IACA,mCAAA;YAAA,kCAAA;EFGJ;EEDE;IACE,iCAAA;IACA,oCAAA;YAAA,yCAAA;EFGJ;EEDE;IACE,oCAAA;IACA,wCAAA;EFGJ;EEDE;IACE,gCAAA;IACA,mCAAA;YAAA,kCAAA;EFGJ;EEDE;IACE,8BAAA;IACA,iCAAA;YAAA,gCAAA;EFGJ;EEDE;IACE,iCAAA;IACA,oCAAA;YAAA,8BAAA;EFGJ;EEDE;IACE,mCAAA;IACA,sCAAA;YAAA,gCAAA;EFGJ;EEDE;IACE,kCAAA;IACA,qCAAA;YAAA,+BAAA;EFGJ;EEDE;IACE,oCAAA;IACA,oCAAA;EFGJ;EEDE;IACE,kCAAA;IACA,kCAAA;EFGJ;EEDE;IACE,qCAAA;IACA,gCAAA;EFGJ;EEDE;IACE,sCAAA;IACA,uCAAA;EFGJ;EEDE;IACE,yCAAA;IACA,sCAAA;EFGJ;EEDE;IACE,sCAAA;IACA,iCAAA;EFGJ;EEDE;IACE,oCAAA;IACA,2BAAA;EFGJ;EEDE;IACE,qCAAA;IACA,iCAAA;EFGJ;EEDE;IACE,mCAAA;IACA,+BAAA;EFGJ;EEDE;IACE,sCAAA;IACA,6BAAA;EFGJ;EEDE;IACE,wCAAA;IACA,+BAAA;EFGJ;EEDE;IACE,uCAAA;IACA,8BAAA;EFGJ;AACF;AEAE;EACE;IACE,kCAAA;IACA,yCAAA;IAAA,wCAAA;YAAA,8BAAA;EFEJ;EEAE;IACE,qCAAA;IACA,uCAAA;IAAA,wCAAA;YAAA,iCAAA;EFEJ;EEAE;IACE,0CAAA;IACA,yCAAA;IAAA,yCAAA;YAAA,sCAAA;EFEJ;EEAE;IACE,6CAAA;IACA,uCAAA;IAAA,yCAAA;YAAA,yCAAA;EFEJ;EEAE;IACE,8BAAA;IACA,0BAAA;EFEJ;EEAE;IACE,gCAAA;IACA,4BAAA;EFEJ;EEAE;IACE,sCAAA;IACA,kCAAA;EFEJ;EEAE;IACE,+BAAA;IACA,kCAAA;YAAA,sCAAA;EFEJ;EEAE;IACE,6BAAA;IACA,gCAAA;YAAA,oCAAA;EFEJ;EEAE;IACE,gCAAA;IACA,mCAAA;YAAA,kCAAA;EFEJ;EEAE;IACE,iCAAA;IACA,oCAAA;YAAA,yCAAA;EFEJ;EEAE;IACE,oCAAA;IACA,wCAAA;EFEJ;EEAE;IACE,gCAAA;IACA,mCAAA;YAAA,kCAAA;EFEJ;EEAE;IACE,8BAAA;IACA,iCAAA;YAAA,gCAAA;EFEJ;EEAE;IACE,iCAAA;IACA,oCAAA;YAAA,8BAAA;EFEJ;EEAE;IACE,mCAAA;IACA,sCAAA;YAAA,gCAAA;EFEJ;EEAE;IACE,kCAAA;IACA,qCAAA;YAAA,+BAAA;EFEJ;EEAE;IACE,oCAAA;IACA,oCAAA;EFEJ;EEAE;IACE,kCAAA;IACA,kCAAA;EFEJ;EEAE;IACE,qCAAA;IACA,gCAAA;EFEJ;EEAE;IACE,sCAAA;IACA,uCAAA;EFEJ;EEAE;IACE,yCAAA;IACA,sCAAA;EFEJ;EEAE;IACE,sCAAA;IACA,iCAAA;EFEJ;EEAE;IACE,oCAAA;IACA,2BAAA;EFEJ;EEAE;IACE,qCAAA;IACA,iCAAA;EFEJ;EEAE;IACE,mCAAA;IACA,+BAAA;EFEJ;EEAE;IACE,sCAAA;IACA,6BAAA;EFEJ;EEAE;IACE,wCAAA;IACA,+BAAA;EFEJ;EEAE;IACE,uCAAA;IACA,8BAAA;EFEJ;AACF;AECE;EACE;IACE,kCAAA;IACA,yCAAA;IAAA,wCAAA;YAAA,8BAAA;EFCJ;EECE;IACE,qCAAA;IACA,uCAAA;IAAA,wCAAA;YAAA,iCAAA;EFCJ;EECE;IACE,0CAAA;IACA,yCAAA;IAAA,yCAAA;YAAA,sCAAA;EFCJ;EECE;IACE,6CAAA;IACA,uCAAA;IAAA,yCAAA;YAAA,yCAAA;EFCJ;EECE;IACE,8BAAA;IACA,0BAAA;EFCJ;EECE;IACE,gCAAA;IACA,4BAAA;EFCJ;EECE;IACE,sCAAA;IACA,kCAAA;EFCJ;EECE;IACE,+BAAA;IACA,kCAAA;YAAA,sCAAA;EFCJ;EECE;IACE,6BAAA;IACA,gCAAA;YAAA,oCAAA;EFCJ;EECE;IACE,gCAAA;IACA,mCAAA;YAAA,kCAAA;EFCJ;EECE;IACE,iCAAA;IACA,oCAAA;YAAA,yCAAA;EFCJ;EECE;IACE,oCAAA;IACA,wCAAA;EFCJ;EECE;IACE,gCAAA;IACA,mCAAA;YAAA,kCAAA;EFCJ;EECE;IACE,8BAAA;IACA,iCAAA;YAAA,gCAAA;EFCJ;EECE;IACE,iCAAA;IACA,oCAAA;YAAA,8BAAA;EFCJ;EECE;IACE,mCAAA;IACA,sCAAA;YAAA,gCAAA;EFCJ;EECE;IACE,kCAAA;IACA,qCAAA;YAAA,+BAAA;EFCJ;EECE;IACE,oCAAA;IACA,oCAAA;EFCJ;EECE;IACE,kCAAA;IACA,kCAAA;EFCJ;EECE;IACE,qCAAA;IACA,gCAAA;EFCJ;EECE;IACE,sCAAA;IACA,uCAAA;EFCJ;EECE;IACE,yCAAA;IACA,sCAAA;EFCJ;EECE;IACE,sCAAA;IACA,iCAAA;EFCJ;EECE;IACE,oCAAA;IACA,2BAAA;EFCJ;EECE;IACE,qCAAA;IACA,iCAAA;EFCJ;EECE;IACE,mCAAA;IACA,+BAAA;EFCJ;EECE;IACE,sCAAA;IACA,6BAAA;EFCJ;EECE;IACE,wCAAA;IACA,+BAAA;EFCJ;EECE;IACE,uCAAA;IACA,8BAAA;EFCJ;AACF;AEEE;EACE;IACE,kCAAA;IACA,yCAAA;IAAA,wCAAA;YAAA,8BAAA;EFAJ;EEEE;IACE,qCAAA;IACA,uCAAA;IAAA,wCAAA;YAAA,iCAAA;EFAJ;EEEE;IACE,0CAAA;IACA,yCAAA;IAAA,yCAAA;YAAA,sCAAA;EFAJ;EEEE;IACE,6CAAA;IACA,uCAAA;IAAA,yCAAA;YAAA,yCAAA;EFAJ;EEEE;IACE,8BAAA;IACA,0BAAA;EFAJ;EEEE;IACE,gCAAA;IACA,4BAAA;EFAJ;EEEE;IACE,sCAAA;IACA,kCAAA;EFAJ;EEEE;IACE,+BAAA;IACA,kCAAA;YAAA,sCAAA;EFAJ;EEEE;IACE,6BAAA;IACA,gCAAA;YAAA,oCAAA;EFAJ;EEEE;IACE,gCAAA;IACA,mCAAA;YAAA,kCAAA;EFAJ;EEEE;IACE,iCAAA;IACA,oCAAA;YAAA,yCAAA;EFAJ;EEEE;IACE,oCAAA;IACA,wCAAA;EFAJ;EEEE;IACE,gCAAA;IACA,mCAAA;YAAA,kCAAA;EFAJ;EEEE;IACE,8BAAA;IACA,iCAAA;YAAA,gCAAA;EFAJ;EEEE;IACE,iCAAA;IACA,oCAAA;YAAA,8BAAA;EFAJ;EEEE;IACE,mCAAA;IACA,sCAAA;YAAA,gCAAA;EFAJ;EEEE;IACE,kCAAA;IACA,qCAAA;YAAA,+BAAA;EFAJ;EEEE;IACE,oCAAA;IACA,oCAAA;EFAJ;EEEE;IACE,kCAAA;IACA,kCAAA;EFAJ;EEEE;IACE,qCAAA;IACA,gCAAA;EFAJ;EEEE;IACE,sCAAA;IACA,uCAAA;EFAJ;EEEE;IACE,yCAAA;IACA,sCAAA;EFAJ;EEEE;IACE,sCAAA;IACA,iCAAA;EFAJ;EEEE;IACE,oCAAA;IACA,2BAAA;EFAJ;EEEE;IACE,qCAAA;IACA,iCAAA;EFAJ;EEEE;IACE,mCAAA;IACA,+BAAA;EFAJ;EEEE;IACE,sCAAA;IACA,6BAAA;EFAJ;EEEE;IACE,wCAAA;IACA,+BAAA;EFAJ;EEEE;IACE,uCAAA;IACA,8BAAA;EFAJ;AACF;AEGE;EACE,sBAAA;AFDJ;;AEIE;EACE,uBAAA;AFDJ;;AEIE;EACE,sBAAA;AFDJ;;AEIE;EACE;IACE,sBAAA;EFDJ;EEGE;IACE,uBAAA;EFDJ;EEGE;IACE,sBAAA;EFDJ;AACF;AEIE;EACE;IACE,sBAAA;EFFJ;EEIE;IACE,uBAAA;EFFJ;EEIE;IACE,sBAAA;EFFJ;AACF;AEKE;EACE;IACE,sBAAA;EFHJ;EEKE;IACE,uBAAA;EFHJ;EEKE;IACE,sBAAA;EFHJ;AACF;AEME;EACE;IACE,sBAAA;EFJJ;EEME;IACE,uBAAA;EFJJ;EEME;IACE,sBAAA;EFJJ;AACF;AEOE;EACE,2BAAA;AFLJ;;AEQE;EACE,6BAAA;AFLJ;;AEQE;EACE,6BAAA;AFLJ;;AEQE;EACE,0BAAA;AFLJ;;AEQE;EAEE,2BAAA;AFLJ;;AEQE;EACE,eAAA;EACA,MAAA;EACA,QAAA;EACA,OAAA;EACA,aAAA;AFLJ;;AEQE;EACE,eAAA;EACA,QAAA;EACA,SAAA;EACA,OAAA;EACA,aAAA;AFLJ;;AEQE;EACE;IAEE,gBAAA;IACA,MAAA;IACA,aAAA;EFLJ;AACF;AEQE;EACE,kBAAA;EACA,UAAA;EACA,WAAA;EACA,UAAA;EACA,gBAAA;EACA,sBAAA;EACA,mBAAA;EACA,6BAAA;EACA,qBAAA;EACA,SAAA;AFNJ;;AESE;EACE,gBAAA;EACA,WAAA;EACA,YAAA;EACA,iBAAA;EACA,UAAA;EACA,mBAAA;EACA,uBAAA;EACA,eAAA;AFNJ;;AESE;EACE,qBAAA;AFNJ;;AESE;EACE,qBAAA;AFNJ;;AESE;EACE,qBAAA;AFNJ;;AESE;EACE,sBAAA;AFNJ;;AESE;EACE,sBAAA;AFNJ;;AESE;EACE,sBAAA;AFNJ;;AESE;EACE,sBAAA;AFNJ;;AESE;EACE,uBAAA;AFNJ;;AESE;EACE,0BAAA;AFNJ;;AESE;EACE,2BAAA;AFNJ;;AESE;EACE,oBAAA;AFNJ;;AESE;;EAEE,wBAAA;AFNJ;;AESE;;EAEE,0BAAA;AFNJ;;AESE;;EAEE,2BAAA;AFNJ;;AESE;;EAEE,yBAAA;AFNJ;;AESE;EACE,0BAAA;AFNJ;;AESE;;EAEE,8BAAA;AFNJ;;AESE;;EAEE,gCAAA;AFNJ;;AESE;;EAEE,iCAAA;AFNJ;;AESE;;EAEE,+BAAA;AFNJ;;AESE;EACE,yBAAA;AFNJ;;AESE;;EAEE,6BAAA;AFNJ;;AESE;;EAEE,+BAAA;AFNJ;;AESE;;EAEE,gCAAA;AFNJ;;AESE;;EAEE,8BAAA;AFNJ;;AESE;EACE,uBAAA;AFNJ;;AESE;;EAEE,2BAAA;AFNJ;;AESE;;EAEE,6BAAA;AFNJ;;AESE;;EAEE,8BAAA;AFNJ;;AESE;;EAEE,4BAAA;AFNJ;;AESE;EACE,yBAAA;AFNJ;;AESE;;EAEE,6BAAA;AFNJ;;AESE;;EAEE,+BAAA;AFNJ;;AESE;;EAEE,gCAAA;AFNJ;;AESE;;EAEE,8BAAA;AFNJ;;AESE;EACE,uBAAA;AFNJ;;AESE;;EAEE,2BAAA;AFNJ;;AESE;;EAEE,6BAAA;AFNJ;;AESE;;EAEE,8BAAA;AFNJ;;AESE;;EAEE,4BAAA;AFNJ;;AESE;EACE,qBAAA;AFNJ;;AESE;;EAEE,yBAAA;AFNJ;;AESE;;EAEE,2BAAA;AFNJ;;AESE;;EAEE,4BAAA;AFNJ;;AESE;;EAEE,0BAAA;AFNJ;;AESE;EACE,2BAAA;AFNJ;;AESE;;EAEE,+BAAA;AFNJ;;AESE;;EAEE,iCAAA;AFNJ;;AESE;;EAEE,kCAAA;AFNJ;;AESE;;EAEE,gCAAA;AFNJ;;AESE;EACE,0BAAA;AFNJ;;AESE;;EAEE,8BAAA;AFNJ;;AESE;;EAEE,gCAAA;AFNJ;;AESE;;EAEE,iCAAA;AFNJ;;AESE;;EAEE,+BAAA;AFNJ;;AESE;EACE,wBAAA;AFNJ;;AESE;;EAEE,4BAAA;AFNJ;;AESE;;EAEE,8BAAA;AFNJ;;AESE;;EAEE,+BAAA;AFNJ;;AESE;;EAEE,6BAAA;AFNJ;;AESE;EACE,0BAAA;AFNJ;;AESE;;EAEE,8BAAA;AFNJ;;AESE;;EAEE,gCAAA;AFNJ;;AESE;;EAEE,iCAAA;AFNJ;;AESE;;EAEE,+BAAA;AFNJ;;AESE;EACE,wBAAA;AFNJ;;AESE;;EAEE,4BAAA;AFNJ;;AESE;;EAEE,8BAAA;AFNJ;;AESE;;EAEE,+BAAA;AFNJ;;AESE;;EAEE,6BAAA;AFNJ;;AESE;EACE,uBAAA;AFNJ;;AESE;;EAEE,2BAAA;AFNJ;;AESE;;EAEE,6BAAA;AFNJ;;AESE;;EAEE,8BAAA;AFNJ;;AESE;;EAEE,4BAAA;AFNJ;;AESE;EACE;IACE,oBAAA;EFNJ;EEQE;;IAEE,wBAAA;EFNJ;EEQE;;IAEE,0BAAA;EFNJ;EEQE;;IAEE,2BAAA;EFNJ;EEQE;;IAEE,yBAAA;EFNJ;EEQE;IACE,0BAAA;EFNJ;EEQE;;IAEE,8BAAA;EFNJ;EEQE;;IAEE,gCAAA;EFNJ;EEQE;;IAEE,iCAAA;EFNJ;EEQE;;IAEE,+BAAA;EFNJ;EEQE;IACE,yBAAA;EFNJ;EEQE;;IAEE,6BAAA;EFNJ;EEQE;;IAEE,+BAAA;EFNJ;EEQE;;IAEE,gCAAA;EFNJ;EEQE;;IAEE,8BAAA;EFNJ;EEQE;IACE,uBAAA;EFNJ;EEQE;;IAEE,2BAAA;EFNJ;EEQE;;IAEE,6BAAA;EFNJ;EEQE;;IAEE,8BAAA;EFNJ;EEQE;;IAEE,4BAAA;EFNJ;EEQE;IACE,yBAAA;EFNJ;EEQE;;IAEE,6BAAA;EFNJ;EEQE;;IAEE,+BAAA;EFNJ;EEQE;;IAEE,gCAAA;EFNJ;EEQE;;IAEE,8BAAA;EFNJ;EEQE;IACE,uBAAA;EFNJ;EEQE;;IAEE,2BAAA;EFNJ;EEQE;;IAEE,6BAAA;EFNJ;EEQE;;IAEE,8BAAA;EFNJ;EEQE;;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,iCAAA;EFRJ;EEUE;;IAEE,+BAAA;EFRJ;EEUE;IACE,yBAAA;EFRJ;EEUE;;IAEE,6BAAA;EFRJ;EEUE;;IAEE,+BAAA;EFRJ;EEUE;;IAEE,gCAAA;EFRJ;EEUE;;IAEE,8BAAA;EFRJ;EEUE;IACE,uBAAA;EFRJ;EEUE;;IAEE,2BAAA;EFRJ;EEUE;;IAEE,6BAAA;EFRJ;EEUE;;IAEE,8BAAA;EFRJ;EEUE;;IAEE,4BAAA;EFRJ;EEUE;IACE,yBAAA;EFRJ;EEUE;;IAEE,6BAAA;EFRJ;EEUE;;IAEE,+BAAA;EFRJ;EEUE;;IAEE,gCAAA;EFRJ;EEUE;;IAEE,8BAAA;EFRJ;EEUE;IACE,uBAAA;EFRJ;EEUE;;IAEE,2BAAA;EFRJ;EEUE;;IAEE,6BAAA;EFRJ;EEUE;;IAEE,8BAAA;EFRJ;EEUE;;IAEE,4BAAA;EFRJ;EEUE;IACE,qBAAA;EFRJ;EEUE;;IAEE,yBAAA;EFRJ;EEUE;;IAEE,2BAAA;EFRJ;EEUE;;IAEE,4BAAA;EFRJ;EEUE;;IAEE,0BAAA;EFRJ;EEUE;IACE,2BAAA;EFRJ;EEUE;;IAEE,+BAAA;EFRJ;EEUE;;IAEE,iCAAA;EFRJ;EEUE;;IAEE,kCAAA;EFRJ;EEUE;;IAEE,gCAAA;EFRJ;EEUE;IACE,0BAAA;EFRJ;EEUE;;IAEE,8BAAA;EFRJ;EEUE;;IAEE,gCAAA;EFRJ;EEUE;;IAEE,iCAAA;EFRJ;EEUE;;IAEE,+BAAA;EFRJ;EEUE;IACE,wBAAA;EFRJ;EEUE;;IAEE,4BAAA;EFRJ;EEUE;;IAEE,8BAAA;EFRJ;EEUE;;IAEE,+BAAA;EFRJ;EEUE;;IAEE,6BAAA;EFRJ;EEUE;IACE,0BAAA;EFRJ;EEUE;;IAEE,8BAAA;EFRJ;EEUE;;IAEE,gCAAA;EFRJ;EEUE;;IAEE,iCAAA;EFRJ;EEUE;;IAEE,+BAAA;EFRJ;EEUE;IACE,wBAAA;EFRJ;EEUE;;IAEE,4BAAA;EFRJ;EEUE;;IAEE,8BAAA;EFRJ;EEUE;;IAEE,+BAAA;EFRJ;EEUE;;IAEE,6BAAA;EFRJ;EEUE;IACE,uBAAA;EFRJ;EEUE;;IAEE,2BAAA;EFRJ;EEUE;;IAEE,6BAAA;EFRJ;EEUE;;IAEE,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","file":"style.css","sourcesContent":["@charset \"UTF-8\";\n/*\nThe main SCSS file for everything, yep\n*/\n/*!\n * Bootstrap v4.0.0-beta.2 (https://getbootstrap.com)\n * Copyright 2011-2017 The Bootstrap Authors\n * Copyright 2011-2017 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n */\n:root {\n --blue: #007bff;\n --indigo: #6610f2;\n --purple: #6f42c1;\n --pink: #e83e8c;\n --red: #dc3545;\n --orange: #fd7e14;\n --yellow: #ffc107;\n --green: #28a745;\n --teal: #20c997;\n --cyan: #17a2b8;\n --white: #fff;\n --gray: #868e96;\n --gray-dark: #343a40;\n --primary: #007bff;\n --secondary: #868e96;\n --success: #28a745;\n --info: #17a2b8;\n --warning: #ffc107;\n --danger: #dc3545;\n --light: #f8f9fa;\n --dark: #343a40;\n --breakpoint-xs: 0;\n --breakpoint-sm: 576px;\n --breakpoint-md: 768px;\n --breakpoint-lg: 992px;\n --breakpoint-xl: 1200px;\n --font-family-sans-serif: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";\n --font-family-monospace: SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace;\n}\n\n@media print {\n *,\n*::before,\n*::after {\n text-shadow: none !important;\n box-shadow: none !important;\n }\n a,\na:visited {\n text-decoration: underline;\n }\n abbr[title]::after {\n content: \" (\" attr(title) \")\";\n }\n pre {\n white-space: pre-wrap !important;\n }\n pre,\nblockquote {\n border: 1px solid #999;\n page-break-inside: avoid;\n }\n thead {\n display: table-header-group;\n }\n tr,\nimg {\n page-break-inside: avoid;\n }\n p,\nh2,\nh3 {\n orphans: 3;\n widows: 3;\n }\n h2,\nh3 {\n page-break-after: avoid;\n }\n .navbar {\n display: none;\n }\n .badge, .legacy, .beta {\n border: 1px solid #000;\n }\n .table, table {\n border-collapse: collapse !important;\n }\n .table td, table td,\n.table th,\ntable th {\n background-color: #fff !important;\n }\n .table-bordered th, table th,\n.table-bordered td,\ntable td {\n border: 1px solid #ddd !important;\n }\n}\n*,\n*::before,\n*::after {\n box-sizing: border-box;\n}\n\nhtml {\n font-family: sans-serif;\n line-height: 1.15;\n -webkit-text-size-adjust: 100%;\n -ms-text-size-adjust: 100%;\n -ms-overflow-style: scrollbar;\n -webkit-tap-highlight-color: transparent;\n}\n\n@-ms-viewport {\n width: device-width;\n}\narticle, aside, dialog, figcaption, figure, footer, header, hgroup, main, nav, section {\n display: block;\n}\n\nbody {\n margin: 0;\n font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";\n font-size: 1rem;\n font-weight: 400;\n line-height: 1.5;\n color: #212529;\n text-align: left;\n background-color: #fff;\n}\n\n[tabindex=\"-1\"]:focus {\n outline: 0 !important;\n}\n\nhr {\n box-sizing: content-box;\n height: 0;\n overflow: visible;\n}\n\nh1, h2, h3, h4, h5, h6 {\n margin-top: 0;\n margin-bottom: 0.5rem;\n}\n\np {\n margin-top: 0;\n margin-bottom: 1rem;\n}\n\nabbr[title],\nabbr[data-original-title] {\n text-decoration: underline;\n -webkit-text-decoration: underline dotted;\n text-decoration: underline dotted;\n cursor: help;\n border-bottom: 0;\n}\n\naddress {\n margin-bottom: 1rem;\n font-style: normal;\n line-height: inherit;\n}\n\nol,\nul,\ndl {\n margin-top: 0;\n margin-bottom: 1rem;\n}\n\nol ol,\nul ul,\nol ul,\nul ol {\n margin-bottom: 0;\n}\n\ndt {\n font-weight: 700;\n}\n\ndd {\n margin-bottom: 0.5rem;\n margin-left: 0;\n}\n\nblockquote {\n margin: 0 0 1rem;\n}\n\ndfn {\n font-style: italic;\n}\n\nb,\nstrong {\n font-weight: bolder;\n}\n\nsmall {\n font-size: 80%;\n}\n\nsub,\nsup {\n position: relative;\n font-size: 75%;\n line-height: 0;\n vertical-align: baseline;\n}\n\nsub {\n bottom: -0.25em;\n}\n\nsup {\n top: -0.5em;\n}\n\na {\n color: #007bff;\n text-decoration: none;\n background-color: transparent;\n -webkit-text-decoration-skip: objects;\n}\n\na:hover {\n color: #0056b3;\n text-decoration: underline;\n}\n\na:not([href]):not([tabindex]) {\n color: inherit;\n text-decoration: none;\n}\n\na:not([href]):not([tabindex]):focus, a:not([href]):not([tabindex]):hover {\n color: inherit;\n text-decoration: none;\n}\n\na:not([href]):not([tabindex]):focus {\n outline: 0;\n}\n\npre,\ncode,\nkbd,\nsamp {\n font-family: monospace, monospace;\n font-size: 1em;\n}\n\npre {\n margin-top: 0;\n margin-bottom: 1rem;\n overflow: auto;\n -ms-overflow-style: scrollbar;\n}\n\nfigure {\n margin: 0 0 1rem;\n}\n\nimg {\n vertical-align: middle;\n border-style: none;\n}\n\nsvg:not(:root) {\n overflow: hidden;\n}\n\na,\narea,\nbutton,\n[role=button],\ninput:not([type=range]),\nlabel,\nselect,\nsummary,\ntextarea {\n -ms-touch-action: manipulation;\n touch-action: manipulation;\n}\n\ntable {\n border-collapse: collapse;\n}\n\ncaption {\n padding-top: 0.75rem;\n padding-bottom: 0.75rem;\n color: #868e96;\n text-align: left;\n caption-side: bottom;\n}\n\nth {\n text-align: inherit;\n}\n\nlabel {\n display: inline-block;\n margin-bottom: 0.5rem;\n}\n\nbutton {\n border-radius: 0;\n}\n\nbutton:focus {\n outline: 1px dotted;\n outline: 5px auto -webkit-focus-ring-color;\n}\n\ninput,\nbutton,\nselect,\noptgroup,\ntextarea {\n margin: 0;\n font-family: inherit;\n font-size: inherit;\n line-height: inherit;\n}\n\nbutton,\ninput {\n overflow: visible;\n}\n\nbutton,\nselect {\n text-transform: none;\n}\n\nbutton,\nhtml [type=button],\n[type=reset],\n[type=submit] {\n -webkit-appearance: button;\n}\n\nbutton::-moz-focus-inner,\n[type=button]::-moz-focus-inner,\n[type=reset]::-moz-focus-inner,\n[type=submit]::-moz-focus-inner {\n padding: 0;\n border-style: none;\n}\n\ninput[type=radio],\ninput[type=checkbox] {\n box-sizing: border-box;\n padding: 0;\n}\n\ninput[type=date],\ninput[type=time],\ninput[type=datetime-local],\ninput[type=month] {\n -webkit-appearance: listbox;\n}\n\ntextarea {\n overflow: auto;\n resize: vertical;\n}\n\nfieldset {\n min-width: 0;\n padding: 0;\n margin: 0;\n border: 0;\n}\n\nlegend {\n display: block;\n width: 100%;\n max-width: 100%;\n padding: 0;\n margin-bottom: 0.5rem;\n font-size: 1.5rem;\n line-height: inherit;\n color: inherit;\n white-space: normal;\n}\n\nprogress {\n vertical-align: baseline;\n}\n\n[type=number]::-webkit-inner-spin-button,\n[type=number]::-webkit-outer-spin-button {\n height: auto;\n}\n\n[type=search] {\n outline-offset: -2px;\n -webkit-appearance: none;\n}\n\n[type=search]::-webkit-search-cancel-button,\n[type=search]::-webkit-search-decoration {\n -webkit-appearance: none;\n}\n\n::-webkit-file-upload-button {\n font: inherit;\n -webkit-appearance: button;\n}\n\noutput {\n display: inline-block;\n}\n\nsummary {\n display: list-item;\n}\n\ntemplate {\n display: none;\n}\n\n[hidden] {\n display: none !important;\n}\n\nh1, h2, h3, h4, h5, h6,\n.h1, .h2, .h3, .h4, .h5, .h6 {\n margin-bottom: 0.5rem;\n font-family: inherit;\n font-weight: 500;\n line-height: 1.2;\n color: inherit;\n}\n\nh1, .h1 {\n font-size: 2.5rem;\n}\n\nh2, .h2 {\n font-size: 2rem;\n}\n\nh3, .h3 {\n font-size: 1.75rem;\n}\n\nh4, .h4 {\n font-size: 1.5rem;\n}\n\nh5, .h5 {\n font-size: 1.25rem;\n}\n\nh6, .h6 {\n font-size: 1rem;\n}\n\n.lead {\n font-size: 1.25rem;\n font-weight: 300;\n}\n\n.display-1 {\n font-size: 6rem;\n font-weight: 300;\n line-height: 1.2;\n}\n\n.display-2 {\n font-size: 5.5rem;\n font-weight: 300;\n line-height: 1.2;\n}\n\n.display-3 {\n font-size: 4.5rem;\n font-weight: 300;\n line-height: 1.2;\n}\n\n.display-4 {\n font-size: 3.5rem;\n font-weight: 300;\n line-height: 1.2;\n}\n\nhr {\n margin-top: 1rem;\n margin-bottom: 1rem;\n border: 0;\n border-top: 1px solid rgba(0, 0, 0, 0.1);\n}\n\nsmall,\n.small {\n font-size: 80%;\n font-weight: 400;\n}\n\nmark,\n.mark {\n padding: 0.2em;\n background-color: #fcf8e3;\n}\n\n.list-unstyled {\n padding-left: 0;\n list-style: none;\n}\n\n.list-inline {\n padding-left: 0;\n list-style: none;\n}\n\n.list-inline-item {\n display: inline-block;\n}\n\n.list-inline-item:not(:last-child) {\n margin-right: 0.5rem;\n}\n\n.initialism {\n font-size: 90%;\n text-transform: uppercase;\n}\n\n.blockquote {\n margin-bottom: 1rem;\n font-size: 1.25rem;\n}\n\n.blockquote-footer {\n display: block;\n font-size: 80%;\n color: #868e96;\n}\n\n.blockquote-footer::before {\n content: \"— \";\n}\n\n.img-fluid {\n max-width: 100%;\n height: auto;\n}\n\n.img-thumbnail, main img:not(.welcome) {\n padding: 0.25rem;\n background-color: #fff;\n border: 1px solid #dee2e6;\n border-radius: 0.25rem;\n max-width: 100%;\n height: auto;\n}\n\n.figure {\n display: inline-block;\n}\n\n.figure-img {\n margin-bottom: 0.5rem;\n line-height: 1;\n}\n\n.figure-caption {\n font-size: 90%;\n color: #868e96;\n}\n\ncode,\nkbd,\npre,\nsamp {\n font-family: SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace;\n}\n\ncode {\n padding: 0.2rem 0.4rem;\n font-size: 90%;\n color: #bd4147;\n background-color: #f8f9fa;\n border-radius: 0.25rem;\n}\n\na > code {\n padding: 0;\n color: inherit;\n background-color: inherit;\n}\n\nkbd {\n padding: 0.2rem 0.4rem;\n font-size: 90%;\n color: #fff;\n background-color: #212529;\n border-radius: 0.2rem;\n}\n\nkbd kbd {\n padding: 0;\n font-size: 100%;\n font-weight: 700;\n}\n\npre {\n display: block;\n font-size: 90%;\n color: #212529;\n}\n\npre code {\n padding: 0;\n font-size: inherit;\n color: inherit;\n background-color: transparent;\n border-radius: 0;\n}\n\n.pre-scrollable {\n max-height: 340px;\n overflow-y: scroll;\n}\n\n.container {\n width: 100%;\n padding-right: 15px;\n padding-left: 15px;\n margin-right: auto;\n margin-left: auto;\n}\n\n@media (min-width: 576px) {\n .container {\n max-width: 540px;\n }\n}\n@media (min-width: 768px) {\n .container {\n max-width: 720px;\n }\n}\n@media (min-width: 992px) {\n .container {\n max-width: 960px;\n }\n}\n@media (min-width: 1200px) {\n .container {\n max-width: 1140px;\n }\n}\n.container-fluid {\n width: 100%;\n padding-right: 15px;\n padding-left: 15px;\n margin-right: auto;\n margin-left: auto;\n}\n\n.row {\n display: -ms-flexbox;\n display: flex;\n -ms-flex-wrap: wrap;\n flex-wrap: wrap;\n margin-right: -15px;\n margin-left: -15px;\n}\n\n.no-gutters {\n margin-right: 0;\n margin-left: 0;\n}\n\n.no-gutters > .col,\n.no-gutters > [class*=col-] {\n padding-right: 0;\n padding-left: 0;\n}\n\n.col-1, .col-2, .col-3, .col-4, .col-5, .col-6, .col-7, .col-8, .col-9, .col-10, .col-11, .col-12, .col,\n.col-auto, .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12, .col-sm,\n.col-sm-auto, .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12, .col-md,\n.col-md-auto, .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12, .col-lg,\n.col-lg-auto, .col-xl-1, .col-xl-2, .col-xl-3, .col-xl-4, .col-xl-5, .col-xl-6, .col-xl-7, .col-xl-8, .col-xl-9, .col-xl-10, .col-xl-11, .col-xl-12, .col-xl,\n.col-xl-auto {\n position: relative;\n width: 100%;\n min-height: 1px;\n padding-right: 15px;\n padding-left: 15px;\n}\n\n.col {\n -ms-flex-preferred-size: 0;\n flex-basis: 0;\n -ms-flex-positive: 1;\n flex-grow: 1;\n max-width: 100%;\n}\n\n.col-auto {\n -ms-flex: 0 0 auto;\n flex: 0 0 auto;\n width: auto;\n max-width: none;\n}\n\n.col-1 {\n -ms-flex: 0 0 8.333333%;\n flex: 0 0 8.333333%;\n max-width: 8.333333%;\n}\n\n.col-2 {\n -ms-flex: 0 0 16.666667%;\n flex: 0 0 16.666667%;\n max-width: 16.666667%;\n}\n\n.col-3 {\n -ms-flex: 0 0 25%;\n flex: 0 0 25%;\n max-width: 25%;\n}\n\n.col-4 {\n -ms-flex: 0 0 33.333333%;\n flex: 0 0 33.333333%;\n max-width: 33.333333%;\n}\n\n.col-5 {\n -ms-flex: 0 0 41.666667%;\n flex: 0 0 41.666667%;\n max-width: 41.666667%;\n}\n\n.col-6 {\n -ms-flex: 0 0 50%;\n flex: 0 0 50%;\n max-width: 50%;\n}\n\n.col-7 {\n -ms-flex: 0 0 58.333333%;\n flex: 0 0 58.333333%;\n max-width: 58.333333%;\n}\n\n.col-8 {\n -ms-flex: 0 0 66.666667%;\n flex: 0 0 66.666667%;\n max-width: 66.666667%;\n}\n\n.col-9 {\n -ms-flex: 0 0 75%;\n flex: 0 0 75%;\n max-width: 75%;\n}\n\n.col-10 {\n -ms-flex: 0 0 83.333333%;\n flex: 0 0 83.333333%;\n max-width: 83.333333%;\n}\n\n.col-11 {\n -ms-flex: 0 0 91.666667%;\n flex: 0 0 91.666667%;\n max-width: 91.666667%;\n}\n\n.col-12 {\n -ms-flex: 0 0 100%;\n flex: 0 0 100%;\n max-width: 100%;\n}\n\n.order-first {\n -ms-flex-order: -1;\n order: -1;\n}\n\n.order-1 {\n -ms-flex-order: 1;\n order: 1;\n}\n\n.order-2 {\n -ms-flex-order: 2;\n order: 2;\n}\n\n.order-3 {\n -ms-flex-order: 3;\n order: 3;\n}\n\n.order-4 {\n -ms-flex-order: 4;\n order: 4;\n}\n\n.order-5 {\n -ms-flex-order: 5;\n order: 5;\n}\n\n.order-6 {\n -ms-flex-order: 6;\n order: 6;\n}\n\n.order-7 {\n -ms-flex-order: 7;\n order: 7;\n}\n\n.order-8 {\n -ms-flex-order: 8;\n order: 8;\n}\n\n.order-9 {\n -ms-flex-order: 9;\n order: 9;\n}\n\n.order-10 {\n -ms-flex-order: 10;\n order: 10;\n}\n\n.order-11 {\n -ms-flex-order: 11;\n order: 11;\n}\n\n.order-12 {\n -ms-flex-order: 12;\n order: 12;\n}\n\n.offset-1 {\n margin-left: 8.333333%;\n}\n\n.offset-2 {\n margin-left: 16.666667%;\n}\n\n.offset-3 {\n margin-left: 25%;\n}\n\n.offset-4 {\n margin-left: 33.333333%;\n}\n\n.offset-5 {\n margin-left: 41.666667%;\n}\n\n.offset-6 {\n margin-left: 50%;\n}\n\n.offset-7 {\n margin-left: 58.333333%;\n}\n\n.offset-8 {\n margin-left: 66.666667%;\n}\n\n.offset-9 {\n margin-left: 75%;\n}\n\n.offset-10 {\n margin-left: 83.333333%;\n}\n\n.offset-11 {\n margin-left: 91.666667%;\n}\n\n@media (min-width: 576px) {\n .col-sm {\n -ms-flex-preferred-size: 0;\n flex-basis: 0;\n -ms-flex-positive: 1;\n flex-grow: 1;\n max-width: 100%;\n }\n .col-sm-auto {\n -ms-flex: 0 0 auto;\n flex: 0 0 auto;\n width: auto;\n max-width: none;\n }\n .col-sm-1 {\n -ms-flex: 0 0 8.333333%;\n flex: 0 0 8.333333%;\n max-width: 8.333333%;\n }\n .col-sm-2 {\n -ms-flex: 0 0 16.666667%;\n flex: 0 0 16.666667%;\n max-width: 16.666667%;\n }\n .col-sm-3 {\n -ms-flex: 0 0 25%;\n flex: 0 0 25%;\n max-width: 25%;\n }\n .col-sm-4 {\n -ms-flex: 0 0 33.333333%;\n flex: 0 0 33.333333%;\n max-width: 33.333333%;\n }\n .col-sm-5 {\n -ms-flex: 0 0 41.666667%;\n flex: 0 0 41.666667%;\n max-width: 41.666667%;\n }\n .col-sm-6 {\n -ms-flex: 0 0 50%;\n flex: 0 0 50%;\n max-width: 50%;\n }\n .col-sm-7 {\n -ms-flex: 0 0 58.333333%;\n flex: 0 0 58.333333%;\n max-width: 58.333333%;\n }\n .col-sm-8 {\n -ms-flex: 0 0 66.666667%;\n flex: 0 0 66.666667%;\n max-width: 66.666667%;\n }\n .col-sm-9 {\n -ms-flex: 0 0 75%;\n flex: 0 0 75%;\n max-width: 75%;\n }\n .col-sm-10 {\n -ms-flex: 0 0 83.333333%;\n flex: 0 0 83.333333%;\n max-width: 83.333333%;\n }\n .col-sm-11 {\n -ms-flex: 0 0 91.666667%;\n flex: 0 0 91.666667%;\n max-width: 91.666667%;\n }\n .col-sm-12 {\n -ms-flex: 0 0 100%;\n flex: 0 0 100%;\n max-width: 100%;\n }\n .order-sm-first {\n -ms-flex-order: -1;\n order: -1;\n }\n .order-sm-1 {\n -ms-flex-order: 1;\n order: 1;\n }\n .order-sm-2 {\n -ms-flex-order: 2;\n order: 2;\n }\n .order-sm-3 {\n -ms-flex-order: 3;\n order: 3;\n }\n .order-sm-4 {\n -ms-flex-order: 4;\n order: 4;\n }\n .order-sm-5 {\n -ms-flex-order: 5;\n order: 5;\n }\n .order-sm-6 {\n -ms-flex-order: 6;\n order: 6;\n }\n .order-sm-7 {\n -ms-flex-order: 7;\n order: 7;\n }\n .order-sm-8 {\n -ms-flex-order: 8;\n order: 8;\n }\n .order-sm-9 {\n -ms-flex-order: 9;\n order: 9;\n }\n .order-sm-10 {\n -ms-flex-order: 10;\n order: 10;\n }\n .order-sm-11 {\n -ms-flex-order: 11;\n order: 11;\n }\n .order-sm-12 {\n -ms-flex-order: 12;\n order: 12;\n }\n .offset-sm-0 {\n margin-left: 0;\n }\n .offset-sm-1 {\n margin-left: 8.333333%;\n }\n .offset-sm-2 {\n margin-left: 16.666667%;\n }\n .offset-sm-3 {\n margin-left: 25%;\n }\n .offset-sm-4 {\n margin-left: 33.333333%;\n }\n .offset-sm-5 {\n margin-left: 41.666667%;\n }\n .offset-sm-6 {\n margin-left: 50%;\n }\n .offset-sm-7 {\n margin-left: 58.333333%;\n }\n .offset-sm-8 {\n margin-left: 66.666667%;\n }\n .offset-sm-9 {\n margin-left: 75%;\n }\n .offset-sm-10 {\n margin-left: 83.333333%;\n }\n .offset-sm-11 {\n margin-left: 91.666667%;\n }\n}\n@media (min-width: 768px) {\n .col-md {\n -ms-flex-preferred-size: 0;\n flex-basis: 0;\n -ms-flex-positive: 1;\n flex-grow: 1;\n max-width: 100%;\n }\n .col-md-auto {\n -ms-flex: 0 0 auto;\n flex: 0 0 auto;\n width: auto;\n max-width: none;\n }\n .col-md-1 {\n -ms-flex: 0 0 8.333333%;\n flex: 0 0 8.333333%;\n max-width: 8.333333%;\n }\n .col-md-2 {\n -ms-flex: 0 0 16.666667%;\n flex: 0 0 16.666667%;\n max-width: 16.666667%;\n }\n .col-md-3 {\n -ms-flex: 0 0 25%;\n flex: 0 0 25%;\n max-width: 25%;\n }\n .col-md-4 {\n -ms-flex: 0 0 33.333333%;\n flex: 0 0 33.333333%;\n max-width: 33.333333%;\n }\n .col-md-5 {\n -ms-flex: 0 0 41.666667%;\n flex: 0 0 41.666667%;\n max-width: 41.666667%;\n }\n .col-md-6 {\n -ms-flex: 0 0 50%;\n flex: 0 0 50%;\n max-width: 50%;\n }\n .col-md-7 {\n -ms-flex: 0 0 58.333333%;\n flex: 0 0 58.333333%;\n max-width: 58.333333%;\n }\n .col-md-8 {\n -ms-flex: 0 0 66.666667%;\n flex: 0 0 66.666667%;\n max-width: 66.666667%;\n }\n .col-md-9 {\n -ms-flex: 0 0 75%;\n flex: 0 0 75%;\n max-width: 75%;\n }\n .col-md-10 {\n -ms-flex: 0 0 83.333333%;\n flex: 0 0 83.333333%;\n max-width: 83.333333%;\n }\n .col-md-11 {\n -ms-flex: 0 0 91.666667%;\n flex: 0 0 91.666667%;\n max-width: 91.666667%;\n }\n .col-md-12 {\n -ms-flex: 0 0 100%;\n flex: 0 0 100%;\n max-width: 100%;\n }\n .order-md-first {\n -ms-flex-order: -1;\n order: -1;\n }\n .order-md-1 {\n -ms-flex-order: 1;\n order: 1;\n }\n .order-md-2 {\n -ms-flex-order: 2;\n order: 2;\n }\n .order-md-3 {\n -ms-flex-order: 3;\n order: 3;\n }\n .order-md-4 {\n -ms-flex-order: 4;\n order: 4;\n }\n .order-md-5 {\n -ms-flex-order: 5;\n order: 5;\n }\n .order-md-6 {\n -ms-flex-order: 6;\n order: 6;\n }\n .order-md-7 {\n -ms-flex-order: 7;\n order: 7;\n }\n .order-md-8 {\n -ms-flex-order: 8;\n order: 8;\n }\n .order-md-9 {\n -ms-flex-order: 9;\n order: 9;\n }\n .order-md-10 {\n -ms-flex-order: 10;\n order: 10;\n }\n .order-md-11 {\n -ms-flex-order: 11;\n order: 11;\n }\n .order-md-12 {\n -ms-flex-order: 12;\n order: 12;\n }\n .offset-md-0 {\n margin-left: 0;\n }\n .offset-md-1 {\n margin-left: 8.333333%;\n }\n .offset-md-2 {\n margin-left: 16.666667%;\n }\n .offset-md-3 {\n margin-left: 25%;\n }\n .offset-md-4 {\n margin-left: 33.333333%;\n }\n .offset-md-5 {\n margin-left: 41.666667%;\n }\n .offset-md-6 {\n margin-left: 50%;\n }\n .offset-md-7 {\n margin-left: 58.333333%;\n }\n .offset-md-8 {\n margin-left: 66.666667%;\n }\n .offset-md-9 {\n margin-left: 75%;\n }\n .offset-md-10 {\n margin-left: 83.333333%;\n }\n .offset-md-11 {\n margin-left: 91.666667%;\n }\n}\n@media (min-width: 992px) {\n .col-lg {\n -ms-flex-preferred-size: 0;\n flex-basis: 0;\n -ms-flex-positive: 1;\n flex-grow: 1;\n max-width: 100%;\n }\n .col-lg-auto {\n -ms-flex: 0 0 auto;\n flex: 0 0 auto;\n width: auto;\n max-width: none;\n }\n .col-lg-1 {\n -ms-flex: 0 0 8.333333%;\n flex: 0 0 8.333333%;\n max-width: 8.333333%;\n }\n .col-lg-2 {\n -ms-flex: 0 0 16.666667%;\n flex: 0 0 16.666667%;\n max-width: 16.666667%;\n }\n .col-lg-3 {\n -ms-flex: 0 0 25%;\n flex: 0 0 25%;\n max-width: 25%;\n }\n .col-lg-4 {\n -ms-flex: 0 0 33.333333%;\n flex: 0 0 33.333333%;\n max-width: 33.333333%;\n }\n .col-lg-5 {\n -ms-flex: 0 0 41.666667%;\n flex: 0 0 41.666667%;\n max-width: 41.666667%;\n }\n .col-lg-6 {\n -ms-flex: 0 0 50%;\n flex: 0 0 50%;\n max-width: 50%;\n }\n .col-lg-7 {\n -ms-flex: 0 0 58.333333%;\n flex: 0 0 58.333333%;\n max-width: 58.333333%;\n }\n .col-lg-8 {\n -ms-flex: 0 0 66.666667%;\n flex: 0 0 66.666667%;\n max-width: 66.666667%;\n }\n .col-lg-9 {\n -ms-flex: 0 0 75%;\n flex: 0 0 75%;\n max-width: 75%;\n }\n .col-lg-10 {\n -ms-flex: 0 0 83.333333%;\n flex: 0 0 83.333333%;\n max-width: 83.333333%;\n }\n .col-lg-11 {\n -ms-flex: 0 0 91.666667%;\n flex: 0 0 91.666667%;\n max-width: 91.666667%;\n }\n .col-lg-12 {\n -ms-flex: 0 0 100%;\n flex: 0 0 100%;\n max-width: 100%;\n }\n .order-lg-first {\n -ms-flex-order: -1;\n order: -1;\n }\n .order-lg-1 {\n -ms-flex-order: 1;\n order: 1;\n }\n .order-lg-2 {\n -ms-flex-order: 2;\n order: 2;\n }\n .order-lg-3 {\n -ms-flex-order: 3;\n order: 3;\n }\n .order-lg-4 {\n -ms-flex-order: 4;\n order: 4;\n }\n .order-lg-5 {\n -ms-flex-order: 5;\n order: 5;\n }\n .order-lg-6 {\n -ms-flex-order: 6;\n order: 6;\n }\n .order-lg-7 {\n -ms-flex-order: 7;\n order: 7;\n }\n .order-lg-8 {\n -ms-flex-order: 8;\n order: 8;\n }\n .order-lg-9 {\n -ms-flex-order: 9;\n order: 9;\n }\n .order-lg-10 {\n -ms-flex-order: 10;\n order: 10;\n }\n .order-lg-11 {\n -ms-flex-order: 11;\n order: 11;\n }\n .order-lg-12 {\n -ms-flex-order: 12;\n order: 12;\n }\n .offset-lg-0 {\n margin-left: 0;\n }\n .offset-lg-1 {\n margin-left: 8.333333%;\n }\n .offset-lg-2 {\n margin-left: 16.666667%;\n }\n .offset-lg-3 {\n margin-left: 25%;\n }\n .offset-lg-4 {\n margin-left: 33.333333%;\n }\n .offset-lg-5 {\n margin-left: 41.666667%;\n }\n .offset-lg-6 {\n margin-left: 50%;\n }\n .offset-lg-7 {\n margin-left: 58.333333%;\n }\n .offset-lg-8 {\n margin-left: 66.666667%;\n }\n .offset-lg-9 {\n margin-left: 75%;\n }\n .offset-lg-10 {\n margin-left: 83.333333%;\n }\n .offset-lg-11 {\n margin-left: 91.666667%;\n }\n}\n@media (min-width: 1200px) {\n .col-xl {\n -ms-flex-preferred-size: 0;\n flex-basis: 0;\n -ms-flex-positive: 1;\n flex-grow: 1;\n max-width: 100%;\n }\n .col-xl-auto {\n -ms-flex: 0 0 auto;\n flex: 0 0 auto;\n width: auto;\n max-width: none;\n }\n .col-xl-1 {\n -ms-flex: 0 0 8.333333%;\n flex: 0 0 8.333333%;\n max-width: 8.333333%;\n }\n .col-xl-2 {\n -ms-flex: 0 0 16.666667%;\n flex: 0 0 16.666667%;\n max-width: 16.666667%;\n }\n .col-xl-3 {\n -ms-flex: 0 0 25%;\n flex: 0 0 25%;\n max-width: 25%;\n }\n .col-xl-4 {\n -ms-flex: 0 0 33.333333%;\n flex: 0 0 33.333333%;\n max-width: 33.333333%;\n }\n .col-xl-5 {\n -ms-flex: 0 0 41.666667%;\n flex: 0 0 41.666667%;\n max-width: 41.666667%;\n }\n .col-xl-6 {\n -ms-flex: 0 0 50%;\n flex: 0 0 50%;\n max-width: 50%;\n }\n .col-xl-7 {\n -ms-flex: 0 0 58.333333%;\n flex: 0 0 58.333333%;\n max-width: 58.333333%;\n }\n .col-xl-8 {\n -ms-flex: 0 0 66.666667%;\n flex: 0 0 66.666667%;\n max-width: 66.666667%;\n }\n .col-xl-9 {\n -ms-flex: 0 0 75%;\n flex: 0 0 75%;\n max-width: 75%;\n }\n .col-xl-10 {\n -ms-flex: 0 0 83.333333%;\n flex: 0 0 83.333333%;\n max-width: 83.333333%;\n }\n .col-xl-11 {\n -ms-flex: 0 0 91.666667%;\n flex: 0 0 91.666667%;\n max-width: 91.666667%;\n }\n .col-xl-12 {\n -ms-flex: 0 0 100%;\n flex: 0 0 100%;\n max-width: 100%;\n }\n .order-xl-first {\n -ms-flex-order: -1;\n order: -1;\n }\n .order-xl-1 {\n -ms-flex-order: 1;\n order: 1;\n }\n .order-xl-2 {\n -ms-flex-order: 2;\n order: 2;\n }\n .order-xl-3 {\n -ms-flex-order: 3;\n order: 3;\n }\n .order-xl-4 {\n -ms-flex-order: 4;\n order: 4;\n }\n .order-xl-5 {\n -ms-flex-order: 5;\n order: 5;\n }\n .order-xl-6 {\n -ms-flex-order: 6;\n order: 6;\n }\n .order-xl-7 {\n -ms-flex-order: 7;\n order: 7;\n }\n .order-xl-8 {\n -ms-flex-order: 8;\n order: 8;\n }\n .order-xl-9 {\n -ms-flex-order: 9;\n order: 9;\n }\n .order-xl-10 {\n -ms-flex-order: 10;\n order: 10;\n }\n .order-xl-11 {\n -ms-flex-order: 11;\n order: 11;\n }\n .order-xl-12 {\n -ms-flex-order: 12;\n order: 12;\n }\n .offset-xl-0 {\n margin-left: 0;\n }\n .offset-xl-1 {\n margin-left: 8.333333%;\n }\n .offset-xl-2 {\n margin-left: 16.666667%;\n }\n .offset-xl-3 {\n margin-left: 25%;\n }\n .offset-xl-4 {\n margin-left: 33.333333%;\n }\n .offset-xl-5 {\n margin-left: 41.666667%;\n }\n .offset-xl-6 {\n margin-left: 50%;\n }\n .offset-xl-7 {\n margin-left: 58.333333%;\n }\n .offset-xl-8 {\n margin-left: 66.666667%;\n }\n .offset-xl-9 {\n margin-left: 75%;\n }\n .offset-xl-10 {\n margin-left: 83.333333%;\n }\n .offset-xl-11 {\n margin-left: 91.666667%;\n }\n}\n.table, table {\n width: 100%;\n max-width: 100%;\n margin-bottom: 1rem;\n background-color: transparent;\n}\n\n.table th, table th,\n.table td,\ntable td {\n padding: 0.75rem;\n vertical-align: top;\n border-top: 1px solid #e9ecef;\n}\n\n.table thead th, table thead th {\n vertical-align: bottom;\n border-bottom: 2px solid #e9ecef;\n}\n\n.table tbody + tbody, table tbody + tbody {\n border-top: 2px solid #e9ecef;\n}\n\n.table .table, table .table, .table table, table table {\n background-color: #fff;\n}\n\n.table-sm th,\n.table-sm td {\n padding: 0.3rem;\n}\n\n.table-bordered, table {\n border: 1px solid #e9ecef;\n}\n\n.table-bordered th, table th,\n.table-bordered td,\ntable td {\n border: 1px solid #e9ecef;\n}\n\n.table-bordered thead th, table thead th,\n.table-bordered thead td,\ntable thead td {\n border-bottom-width: 2px;\n}\n\n.table-striped tbody tr:nth-of-type(odd) {\n background-color: rgba(0, 0, 0, 0.05);\n}\n\n.table-hover tbody tr:hover {\n background-color: rgba(0, 0, 0, 0.075);\n}\n\n.table-primary,\n.table-primary > th,\n.table-primary > td {\n background-color: #b8daff;\n}\n\n.table-hover .table-primary:hover {\n background-color: #9fcdff;\n}\n\n.table-hover .table-primary:hover > td,\n.table-hover .table-primary:hover > th {\n background-color: #9fcdff;\n}\n\n.table-secondary,\n.table-secondary > th,\n.table-secondary > td {\n background-color: #dddfe2;\n}\n\n.table-hover .table-secondary:hover {\n background-color: #cfd2d6;\n}\n\n.table-hover .table-secondary:hover > td,\n.table-hover .table-secondary:hover > th {\n background-color: #cfd2d6;\n}\n\n.table-success,\n.table-success > th,\n.table-success > td {\n background-color: #c3e6cb;\n}\n\n.table-hover .table-success:hover {\n background-color: #b1dfbb;\n}\n\n.table-hover .table-success:hover > td,\n.table-hover .table-success:hover > th {\n background-color: #b1dfbb;\n}\n\n.table-info,\n.table-info > th,\n.table-info > td {\n background-color: #bee5eb;\n}\n\n.table-hover .table-info:hover {\n background-color: #abdde5;\n}\n\n.table-hover .table-info:hover > td,\n.table-hover .table-info:hover > th {\n background-color: #abdde5;\n}\n\n.table-warning,\n.table-warning > th,\n.table-warning > td {\n background-color: #ffeeba;\n}\n\n.table-hover .table-warning:hover {\n background-color: #ffe8a1;\n}\n\n.table-hover .table-warning:hover > td,\n.table-hover .table-warning:hover > th {\n background-color: #ffe8a1;\n}\n\n.table-danger,\n.table-danger > th,\n.table-danger > td {\n background-color: #f5c6cb;\n}\n\n.table-hover .table-danger:hover {\n background-color: #f1b0b7;\n}\n\n.table-hover .table-danger:hover > td,\n.table-hover .table-danger:hover > th {\n background-color: #f1b0b7;\n}\n\n.table-light,\n.table-light > th,\n.table-light > td {\n background-color: #fdfdfe;\n}\n\n.table-hover .table-light:hover {\n background-color: #ececf6;\n}\n\n.table-hover .table-light:hover > td,\n.table-hover .table-light:hover > th {\n background-color: #ececf6;\n}\n\n.table-dark,\n.table-dark > th,\n.table-dark > td {\n background-color: #c6c8ca;\n}\n\n.table-hover .table-dark:hover {\n background-color: #b9bbbe;\n}\n\n.table-hover .table-dark:hover > td,\n.table-hover .table-dark:hover > th {\n background-color: #b9bbbe;\n}\n\n.table-active,\n.table-active > th,\n.table-active > td {\n background-color: rgba(0, 0, 0, 0.075);\n}\n\n.table-hover .table-active:hover {\n background-color: rgba(0, 0, 0, 0.075);\n}\n\n.table-hover .table-active:hover > td,\n.table-hover .table-active:hover > th {\n background-color: rgba(0, 0, 0, 0.075);\n}\n\n.table .thead-dark th, table .thead-dark th {\n color: #fff;\n background-color: #212529;\n border-color: #32383e;\n}\n\n.table .thead-light th, table .thead-light th {\n color: #495057;\n background-color: #e9ecef;\n border-color: #e9ecef;\n}\n\n.table-dark {\n color: #fff;\n background-color: #212529;\n}\n\n.table-dark th,\n.table-dark td,\n.table-dark thead th {\n border-color: #32383e;\n}\n\n.table-dark.table-bordered, table.table-dark {\n border: 0;\n}\n\n.table-dark.table-striped tbody tr:nth-of-type(odd) {\n background-color: rgba(255, 255, 255, 0.05);\n}\n\n.table-dark.table-hover tbody tr:hover {\n background-color: rgba(255, 255, 255, 0.075);\n}\n\n@media (max-width: 575.99px) {\n .table-responsive-sm {\n display: block;\n width: 100%;\n overflow-x: auto;\n -webkit-overflow-scrolling: touch;\n -ms-overflow-style: -ms-autohiding-scrollbar;\n }\n .table-responsive-sm.table-bordered, table.table-responsive-sm {\n border: 0;\n }\n}\n@media (max-width: 767.99px) {\n .table-responsive-md {\n display: block;\n width: 100%;\n overflow-x: auto;\n -webkit-overflow-scrolling: touch;\n -ms-overflow-style: -ms-autohiding-scrollbar;\n }\n .table-responsive-md.table-bordered, table.table-responsive-md {\n border: 0;\n }\n}\n@media (max-width: 991.99px) {\n .table-responsive-lg {\n display: block;\n width: 100%;\n overflow-x: auto;\n -webkit-overflow-scrolling: touch;\n -ms-overflow-style: -ms-autohiding-scrollbar;\n }\n .table-responsive-lg.table-bordered, table.table-responsive-lg {\n border: 0;\n }\n}\n@media (max-width: 1199.99px) {\n .table-responsive-xl {\n display: block;\n width: 100%;\n overflow-x: auto;\n -webkit-overflow-scrolling: touch;\n -ms-overflow-style: -ms-autohiding-scrollbar;\n }\n .table-responsive-xl.table-bordered, table.table-responsive-xl {\n border: 0;\n }\n}\n.table-responsive, table {\n display: block;\n width: 100%;\n overflow-x: auto;\n -webkit-overflow-scrolling: touch;\n -ms-overflow-style: -ms-autohiding-scrollbar;\n}\n\n.table-responsive.table-bordered, table {\n border: 0;\n}\n\n.form-control {\n display: block;\n width: 100%;\n padding: 0.375rem 0.75rem;\n font-size: 1rem;\n line-height: 1.5;\n color: #495057;\n background-color: #fff;\n background-clip: padding-box;\n border: 1px solid #ced4da;\n border-radius: 0.25rem;\n transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n}\n\n.form-control::-ms-expand {\n background-color: transparent;\n border: 0;\n}\n\n.form-control:focus {\n color: #495057;\n background-color: #fff;\n border-color: #80bdff;\n outline: 0;\n box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25);\n}\n\n.form-control::-webkit-input-placeholder {\n color: #868e96;\n opacity: 1;\n}\n\n.form-control:-ms-input-placeholder {\n color: #868e96;\n opacity: 1;\n}\n\n.form-control::-ms-input-placeholder {\n color: #868e96;\n opacity: 1;\n}\n\n.form-control::placeholder {\n color: #868e96;\n opacity: 1;\n}\n\n.form-control:disabled, .form-control[readonly] {\n background-color: #e9ecef;\n opacity: 1;\n}\n\nselect.form-control:not([size]):not([multiple]) {\n height: calc(2.25rem + 2px);\n}\n\nselect.form-control:focus::-ms-value {\n color: #495057;\n background-color: #fff;\n}\n\n.form-control-file,\n.form-control-range {\n display: block;\n}\n\n.col-form-label {\n padding-top: calc(0.375rem + 1px);\n padding-bottom: calc(0.375rem + 1px);\n margin-bottom: 0;\n font-size: inherit;\n line-height: 1.5;\n}\n\n.col-form-label-lg {\n padding-top: calc(0.5rem + 1px);\n padding-bottom: calc(0.5rem + 1px);\n font-size: 1.25rem;\n line-height: 1.5;\n}\n\n.col-form-label-sm {\n padding-top: calc(0.25rem + 1px);\n padding-bottom: calc(0.25rem + 1px);\n font-size: 0.875rem;\n line-height: 1.5;\n}\n\n.form-control-plaintext {\n display: block;\n width: 100%;\n padding-top: 0.375rem;\n padding-bottom: 0.375rem;\n margin-bottom: 0;\n line-height: 1.5;\n background-color: transparent;\n border: solid transparent;\n border-width: 1px 0;\n}\n\n.form-control-plaintext.form-control-sm, .input-group-sm > .form-control-plaintext.form-control,\n.input-group-sm > .form-control-plaintext.input-group-addon,\n.input-group-sm > .input-group-btn > .form-control-plaintext.btn,\n.input-group-sm > .input-group-btn > .form-control-plaintext.member-runner-link, .form-control-plaintext.form-control-lg, .input-group-lg > .form-control-plaintext.form-control,\n.input-group-lg > .form-control-plaintext.input-group-addon,\n.input-group-lg > .input-group-btn > .form-control-plaintext.btn,\n.input-group-lg > .input-group-btn > .form-control-plaintext.member-runner-link {\n padding-right: 0;\n padding-left: 0;\n}\n\n.form-control-sm, .input-group-sm > .form-control,\n.input-group-sm > .input-group-addon,\n.input-group-sm > .input-group-btn > .btn,\n.input-group-sm > .input-group-btn > .member-runner-link {\n padding: 0.25rem 0.5rem;\n font-size: 0.875rem;\n line-height: 1.5;\n border-radius: 0.2rem;\n}\n\nselect.form-control-sm:not([size]):not([multiple]), .input-group-sm > select.form-control:not([size]):not([multiple]),\n.input-group-sm > select.input-group-addon:not([size]):not([multiple]),\n.input-group-sm > .input-group-btn > select.btn:not([size]):not([multiple]),\n.input-group-sm > .input-group-btn > select.member-runner-link:not([size]):not([multiple]) {\n height: calc(1.8125rem + 2px);\n}\n\n.form-control-lg, .input-group-lg > .form-control,\n.input-group-lg > .input-group-addon,\n.input-group-lg > .input-group-btn > .btn,\n.input-group-lg > .input-group-btn > .member-runner-link {\n padding: 0.5rem 1rem;\n font-size: 1.25rem;\n line-height: 1.5;\n border-radius: 0.3rem;\n}\n\nselect.form-control-lg:not([size]):not([multiple]), .input-group-lg > select.form-control:not([size]):not([multiple]),\n.input-group-lg > select.input-group-addon:not([size]):not([multiple]),\n.input-group-lg > .input-group-btn > select.btn:not([size]):not([multiple]),\n.input-group-lg > .input-group-btn > select.member-runner-link:not([size]):not([multiple]) {\n height: calc(2.875rem + 2px);\n}\n\n.form-group {\n margin-bottom: 1rem;\n}\n\n.form-text {\n display: block;\n margin-top: 0.25rem;\n}\n\n.form-row {\n display: -ms-flexbox;\n display: flex;\n -ms-flex-wrap: wrap;\n flex-wrap: wrap;\n margin-right: -5px;\n margin-left: -5px;\n}\n\n.form-row > .col,\n.form-row > [class*=col-] {\n padding-right: 5px;\n padding-left: 5px;\n}\n\n.form-check {\n position: relative;\n display: block;\n margin-bottom: 0.5rem;\n}\n\n.form-check.disabled .form-check-label {\n color: #868e96;\n}\n\n.form-check-label {\n padding-left: 1.25rem;\n margin-bottom: 0;\n}\n\n.form-check-input {\n position: absolute;\n margin-top: 0.25rem;\n margin-left: -1.25rem;\n}\n\n.form-check-inline {\n display: inline-block;\n margin-right: 0.75rem;\n}\n\n.form-check-inline .form-check-label {\n vertical-align: middle;\n}\n\n.valid-feedback {\n display: none;\n margin-top: 0.25rem;\n font-size: 80%;\n color: #28a745;\n}\n\n.valid-tooltip {\n position: absolute;\n top: 100%;\n z-index: 5;\n display: none;\n width: 250px;\n padding: 0.5rem;\n margin-top: 0.1rem;\n font-size: 0.875rem;\n line-height: 1;\n color: #fff;\n background-color: rgba(40, 167, 69, 0.8);\n border-radius: 0.2rem;\n}\n\n.was-validated .form-control:valid, .form-control.is-valid, .was-validated .custom-select:valid,\n.custom-select.is-valid {\n border-color: #28a745;\n}\n\n.was-validated .form-control:valid:focus, .form-control.is-valid:focus, .was-validated .custom-select:valid:focus,\n.custom-select.is-valid:focus {\n border-color: #28a745;\n box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.25);\n}\n\n.was-validated .form-control:valid ~ .valid-feedback,\n.was-validated .form-control:valid ~ .valid-tooltip, .form-control.is-valid ~ .valid-feedback,\n.form-control.is-valid ~ .valid-tooltip, .was-validated .custom-select:valid ~ .valid-feedback,\n.was-validated .custom-select:valid ~ .valid-tooltip,\n.custom-select.is-valid ~ .valid-feedback,\n.custom-select.is-valid ~ .valid-tooltip {\n display: block;\n}\n\n.was-validated .form-check-input:valid + .form-check-label, .form-check-input.is-valid + .form-check-label {\n color: #28a745;\n}\n\n.was-validated .custom-control-input:valid ~ .custom-control-indicator, .custom-control-input.is-valid ~ .custom-control-indicator {\n background-color: #71dd8a;\n}\n\n.was-validated .custom-control-input:valid ~ .custom-control-description, .custom-control-input.is-valid ~ .custom-control-description {\n color: #28a745;\n}\n\n.was-validated .custom-control-input:valid:checked ~ .custom-control-indicator, .custom-control-input.is-valid:checked ~ .custom-control-indicator {\n background-color: #34ce57;\n}\n\n.was-validated .custom-control-input:valid:focus ~ .custom-control-indicator, .custom-control-input.is-valid:focus ~ .custom-control-indicator {\n box-shadow: 0 0 0 1px #fff, 0 0 0 0.2rem rgba(40, 167, 69, 0.25);\n}\n\n.was-validated .custom-file-input:valid ~ .custom-file-control, .custom-file-input.is-valid ~ .custom-file-control {\n border-color: #28a745;\n}\n\n.was-validated .custom-file-input:valid ~ .custom-file-control::before, .custom-file-input.is-valid ~ .custom-file-control::before {\n border-color: inherit;\n}\n\n.was-validated .custom-file-input:valid:focus ~ .custom-file-control, .custom-file-input.is-valid:focus ~ .custom-file-control {\n box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.25);\n}\n\n.invalid-feedback {\n display: none;\n margin-top: 0.25rem;\n font-size: 80%;\n color: #dc3545;\n}\n\n.invalid-tooltip {\n position: absolute;\n top: 100%;\n z-index: 5;\n display: none;\n width: 250px;\n padding: 0.5rem;\n margin-top: 0.1rem;\n font-size: 0.875rem;\n line-height: 1;\n color: #fff;\n background-color: rgba(220, 53, 69, 0.8);\n border-radius: 0.2rem;\n}\n\n.was-validated .form-control:invalid, .form-control.is-invalid, .was-validated .custom-select:invalid,\n.custom-select.is-invalid {\n border-color: #dc3545;\n}\n\n.was-validated .form-control:invalid:focus, .form-control.is-invalid:focus, .was-validated .custom-select:invalid:focus,\n.custom-select.is-invalid:focus {\n border-color: #dc3545;\n box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.25);\n}\n\n.was-validated .form-control:invalid ~ .invalid-feedback,\n.was-validated .form-control:invalid ~ .invalid-tooltip, .form-control.is-invalid ~ .invalid-feedback,\n.form-control.is-invalid ~ .invalid-tooltip, .was-validated .custom-select:invalid ~ .invalid-feedback,\n.was-validated .custom-select:invalid ~ .invalid-tooltip,\n.custom-select.is-invalid ~ .invalid-feedback,\n.custom-select.is-invalid ~ .invalid-tooltip {\n display: block;\n}\n\n.was-validated .form-check-input:invalid + .form-check-label, .form-check-input.is-invalid + .form-check-label {\n color: #dc3545;\n}\n\n.was-validated .custom-control-input:invalid ~ .custom-control-indicator, .custom-control-input.is-invalid ~ .custom-control-indicator {\n background-color: #efa2a9;\n}\n\n.was-validated .custom-control-input:invalid ~ .custom-control-description, .custom-control-input.is-invalid ~ .custom-control-description {\n color: #dc3545;\n}\n\n.was-validated .custom-control-input:invalid:checked ~ .custom-control-indicator, .custom-control-input.is-invalid:checked ~ .custom-control-indicator {\n background-color: #e4606d;\n}\n\n.was-validated .custom-control-input:invalid:focus ~ .custom-control-indicator, .custom-control-input.is-invalid:focus ~ .custom-control-indicator {\n box-shadow: 0 0 0 1px #fff, 0 0 0 0.2rem rgba(220, 53, 69, 0.25);\n}\n\n.was-validated .custom-file-input:invalid ~ .custom-file-control, .custom-file-input.is-invalid ~ .custom-file-control {\n border-color: #dc3545;\n}\n\n.was-validated .custom-file-input:invalid ~ .custom-file-control::before, .custom-file-input.is-invalid ~ .custom-file-control::before {\n border-color: inherit;\n}\n\n.was-validated .custom-file-input:invalid:focus ~ .custom-file-control, .custom-file-input.is-invalid:focus ~ .custom-file-control {\n box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.25);\n}\n\n.form-inline {\n display: -ms-flexbox;\n display: flex;\n -ms-flex-flow: row wrap;\n flex-flow: row wrap;\n -ms-flex-align: center;\n align-items: center;\n}\n\n.form-inline .form-check {\n width: 100%;\n}\n\n@media (min-width: 576px) {\n .form-inline label {\n display: -ms-flexbox;\n display: flex;\n -ms-flex-align: center;\n align-items: center;\n -ms-flex-pack: center;\n justify-content: center;\n margin-bottom: 0;\n }\n .form-inline .form-group {\n display: -ms-flexbox;\n display: flex;\n -ms-flex: 0 0 auto;\n flex: 0 0 auto;\n -ms-flex-flow: row wrap;\n flex-flow: row wrap;\n -ms-flex-align: center;\n align-items: center;\n margin-bottom: 0;\n }\n .form-inline .form-control {\n display: inline-block;\n width: auto;\n vertical-align: middle;\n }\n .form-inline .form-control-plaintext {\n display: inline-block;\n }\n .form-inline .input-group {\n width: auto;\n }\n .form-inline .form-check {\n display: -ms-flexbox;\n display: flex;\n -ms-flex-align: center;\n align-items: center;\n -ms-flex-pack: center;\n justify-content: center;\n width: auto;\n margin-top: 0;\n margin-bottom: 0;\n }\n .form-inline .form-check-label {\n padding-left: 0;\n }\n .form-inline .form-check-input {\n position: relative;\n margin-top: 0;\n margin-right: 0.25rem;\n margin-left: 0;\n }\n .form-inline .custom-control {\n display: -ms-flexbox;\n display: flex;\n -ms-flex-align: center;\n align-items: center;\n -ms-flex-pack: center;\n justify-content: center;\n padding-left: 0;\n }\n .form-inline .custom-control-indicator {\n position: static;\n display: inline-block;\n margin-right: 0.25rem;\n vertical-align: text-bottom;\n }\n .form-inline .has-feedback .form-control-feedback {\n top: 0;\n }\n}\n.btn, .member-runner-link {\n display: inline-block;\n font-weight: 400;\n text-align: center;\n white-space: nowrap;\n vertical-align: middle;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n border: 1px solid transparent;\n padding: 0.375rem 0.75rem;\n font-size: 1rem;\n line-height: 1.5;\n border-radius: 0.25rem;\n transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n}\n\n.btn:focus, .member-runner-link:focus, .btn:hover, .member-runner-link:hover {\n text-decoration: none;\n}\n\n.btn:focus, .member-runner-link:focus, .btn.focus, .focus.member-runner-link {\n outline: 0;\n box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25);\n}\n\n.btn.disabled, .disabled.member-runner-link, .btn:disabled, .member-runner-link:disabled {\n opacity: 0.65;\n}\n\n.btn:not([disabled]):not(.disabled):active, .member-runner-link:not([disabled]):not(.disabled):active, .btn:not([disabled]):not(.disabled).active, .member-runner-link:not([disabled]):not(.disabled).active {\n background-image: none;\n}\n\na.btn.disabled, a.disabled.member-runner-link,\nfieldset[disabled] a.btn,\nfieldset[disabled] a.member-runner-link {\n pointer-events: none;\n}\n\n.btn-primary, .member-runner-link {\n color: #fff;\n background-color: #007bff;\n border-color: #007bff;\n}\n\n.btn-primary:hover, .member-runner-link:hover {\n color: #fff;\n background-color: #0069d9;\n border-color: #0062cc;\n}\n\n.btn-primary:focus, .member-runner-link:focus, .btn-primary.focus, .focus.member-runner-link {\n box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.5);\n}\n\n.btn-primary.disabled, .disabled.member-runner-link, .btn-primary:disabled, .member-runner-link:disabled {\n background-color: #007bff;\n border-color: #007bff;\n}\n\n.btn-primary:not([disabled]):not(.disabled):active, .member-runner-link:not([disabled]):not(.disabled):active, .btn-primary:not([disabled]):not(.disabled).active, .member-runner-link:not([disabled]):not(.disabled).active,\n.show > .btn-primary.dropdown-toggle,\n.show > .dropdown-toggle.member-runner-link {\n color: #fff;\n background-color: #0062cc;\n border-color: #005cbf;\n box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.5);\n}\n\n.btn-secondary {\n color: #fff;\n background-color: #868e96;\n border-color: #868e96;\n}\n\n.btn-secondary:hover {\n color: #fff;\n background-color: #727b84;\n border-color: #6c757d;\n}\n\n.btn-secondary:focus, .btn-secondary.focus {\n box-shadow: 0 0 0 0.2rem rgba(134, 142, 150, 0.5);\n}\n\n.btn-secondary.disabled, .btn-secondary:disabled {\n background-color: #868e96;\n border-color: #868e96;\n}\n\n.btn-secondary:not([disabled]):not(.disabled):active, .btn-secondary:not([disabled]):not(.disabled).active,\n.show > .btn-secondary.dropdown-toggle {\n color: #fff;\n background-color: #6c757d;\n border-color: #666e76;\n box-shadow: 0 0 0 0.2rem rgba(134, 142, 150, 0.5);\n}\n\n.btn-success {\n color: #fff;\n background-color: #28a745;\n border-color: #28a745;\n}\n\n.btn-success:hover {\n color: #fff;\n background-color: #218838;\n border-color: #1e7e34;\n}\n\n.btn-success:focus, .btn-success.focus {\n box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.5);\n}\n\n.btn-success.disabled, .btn-success:disabled {\n background-color: #28a745;\n border-color: #28a745;\n}\n\n.btn-success:not([disabled]):not(.disabled):active, .btn-success:not([disabled]):not(.disabled).active,\n.show > .btn-success.dropdown-toggle {\n color: #fff;\n background-color: #1e7e34;\n border-color: #1c7430;\n box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.5);\n}\n\n.btn-info {\n color: #fff;\n background-color: #17a2b8;\n border-color: #17a2b8;\n}\n\n.btn-info:hover {\n color: #fff;\n background-color: #138496;\n border-color: #117a8b;\n}\n\n.btn-info:focus, .btn-info.focus {\n box-shadow: 0 0 0 0.2rem rgba(23, 162, 184, 0.5);\n}\n\n.btn-info.disabled, .btn-info:disabled {\n background-color: #17a2b8;\n border-color: #17a2b8;\n}\n\n.btn-info:not([disabled]):not(.disabled):active, .btn-info:not([disabled]):not(.disabled).active,\n.show > .btn-info.dropdown-toggle {\n color: #fff;\n background-color: #117a8b;\n border-color: #10707f;\n box-shadow: 0 0 0 0.2rem rgba(23, 162, 184, 0.5);\n}\n\n.btn-warning {\n color: #212529;\n background-color: #ffc107;\n border-color: #ffc107;\n}\n\n.btn-warning:hover {\n color: #212529;\n background-color: #e0a800;\n border-color: #d39e00;\n}\n\n.btn-warning:focus, .btn-warning.focus {\n box-shadow: 0 0 0 0.2rem rgba(255, 193, 7, 0.5);\n}\n\n.btn-warning.disabled, .btn-warning:disabled {\n background-color: #ffc107;\n border-color: #ffc107;\n}\n\n.btn-warning:not([disabled]):not(.disabled):active, .btn-warning:not([disabled]):not(.disabled).active,\n.show > .btn-warning.dropdown-toggle {\n color: #212529;\n background-color: #d39e00;\n border-color: #c69500;\n box-shadow: 0 0 0 0.2rem rgba(255, 193, 7, 0.5);\n}\n\n.btn-danger {\n color: #fff;\n background-color: #dc3545;\n border-color: #dc3545;\n}\n\n.btn-danger:hover {\n color: #fff;\n background-color: #c82333;\n border-color: #bd2130;\n}\n\n.btn-danger:focus, .btn-danger.focus {\n box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.5);\n}\n\n.btn-danger.disabled, .btn-danger:disabled {\n background-color: #dc3545;\n border-color: #dc3545;\n}\n\n.btn-danger:not([disabled]):not(.disabled):active, .btn-danger:not([disabled]):not(.disabled).active,\n.show > .btn-danger.dropdown-toggle {\n color: #fff;\n background-color: #bd2130;\n border-color: #b21f2d;\n box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.5);\n}\n\n.btn-light {\n color: #212529;\n background-color: #f8f9fa;\n border-color: #f8f9fa;\n}\n\n.btn-light:hover {\n color: #212529;\n background-color: #e2e6ea;\n border-color: #dae0e5;\n}\n\n.btn-light:focus, .btn-light.focus {\n box-shadow: 0 0 0 0.2rem rgba(248, 249, 250, 0.5);\n}\n\n.btn-light.disabled, .btn-light:disabled {\n background-color: #f8f9fa;\n border-color: #f8f9fa;\n}\n\n.btn-light:not([disabled]):not(.disabled):active, .btn-light:not([disabled]):not(.disabled).active,\n.show > .btn-light.dropdown-toggle {\n color: #212529;\n background-color: #dae0e5;\n border-color: #d3d9df;\n box-shadow: 0 0 0 0.2rem rgba(248, 249, 250, 0.5);\n}\n\n.btn-dark {\n color: #fff;\n background-color: #343a40;\n border-color: #343a40;\n}\n\n.btn-dark:hover {\n color: #fff;\n background-color: #23272b;\n border-color: #1d2124;\n}\n\n.btn-dark:focus, .btn-dark.focus {\n box-shadow: 0 0 0 0.2rem rgba(52, 58, 64, 0.5);\n}\n\n.btn-dark.disabled, .btn-dark:disabled {\n background-color: #343a40;\n border-color: #343a40;\n}\n\n.btn-dark:not([disabled]):not(.disabled):active, .btn-dark:not([disabled]):not(.disabled).active,\n.show > .btn-dark.dropdown-toggle {\n color: #fff;\n background-color: #1d2124;\n border-color: #171a1d;\n box-shadow: 0 0 0 0.2rem rgba(52, 58, 64, 0.5);\n}\n\n.btn-outline-primary {\n color: #007bff;\n background-color: transparent;\n background-image: none;\n border-color: #007bff;\n}\n\n.btn-outline-primary:hover {\n color: #fff;\n background-color: #007bff;\n border-color: #007bff;\n}\n\n.btn-outline-primary:focus, .btn-outline-primary.focus {\n box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.5);\n}\n\n.btn-outline-primary.disabled, .btn-outline-primary:disabled {\n color: #007bff;\n background-color: transparent;\n}\n\n.btn-outline-primary:not([disabled]):not(.disabled):active, .btn-outline-primary:not([disabled]):not(.disabled).active,\n.show > .btn-outline-primary.dropdown-toggle {\n color: #212529;\n background-color: #007bff;\n border-color: #007bff;\n box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.5);\n}\n\n.btn-outline-secondary {\n color: #868e96;\n background-color: transparent;\n background-image: none;\n border-color: #868e96;\n}\n\n.btn-outline-secondary:hover {\n color: #fff;\n background-color: #868e96;\n border-color: #868e96;\n}\n\n.btn-outline-secondary:focus, .btn-outline-secondary.focus {\n box-shadow: 0 0 0 0.2rem rgba(134, 142, 150, 0.5);\n}\n\n.btn-outline-secondary.disabled, .btn-outline-secondary:disabled {\n color: #868e96;\n background-color: transparent;\n}\n\n.btn-outline-secondary:not([disabled]):not(.disabled):active, .btn-outline-secondary:not([disabled]):not(.disabled).active,\n.show > .btn-outline-secondary.dropdown-toggle {\n color: #212529;\n background-color: #868e96;\n border-color: #868e96;\n box-shadow: 0 0 0 0.2rem rgba(134, 142, 150, 0.5);\n}\n\n.btn-outline-success {\n color: #28a745;\n background-color: transparent;\n background-image: none;\n border-color: #28a745;\n}\n\n.btn-outline-success:hover {\n color: #fff;\n background-color: #28a745;\n border-color: #28a745;\n}\n\n.btn-outline-success:focus, .btn-outline-success.focus {\n box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.5);\n}\n\n.btn-outline-success.disabled, .btn-outline-success:disabled {\n color: #28a745;\n background-color: transparent;\n}\n\n.btn-outline-success:not([disabled]):not(.disabled):active, .btn-outline-success:not([disabled]):not(.disabled).active,\n.show > .btn-outline-success.dropdown-toggle {\n color: #212529;\n background-color: #28a745;\n border-color: #28a745;\n box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.5);\n}\n\n.btn-outline-info {\n color: #17a2b8;\n background-color: transparent;\n background-image: none;\n border-color: #17a2b8;\n}\n\n.btn-outline-info:hover {\n color: #fff;\n background-color: #17a2b8;\n border-color: #17a2b8;\n}\n\n.btn-outline-info:focus, .btn-outline-info.focus {\n box-shadow: 0 0 0 0.2rem rgba(23, 162, 184, 0.5);\n}\n\n.btn-outline-info.disabled, .btn-outline-info:disabled {\n color: #17a2b8;\n background-color: transparent;\n}\n\n.btn-outline-info:not([disabled]):not(.disabled):active, .btn-outline-info:not([disabled]):not(.disabled).active,\n.show > .btn-outline-info.dropdown-toggle {\n color: #212529;\n background-color: #17a2b8;\n border-color: #17a2b8;\n box-shadow: 0 0 0 0.2rem rgba(23, 162, 184, 0.5);\n}\n\n.btn-outline-warning {\n color: #ffc107;\n background-color: transparent;\n background-image: none;\n border-color: #ffc107;\n}\n\n.btn-outline-warning:hover {\n color: #212529;\n background-color: #ffc107;\n border-color: #ffc107;\n}\n\n.btn-outline-warning:focus, .btn-outline-warning.focus {\n box-shadow: 0 0 0 0.2rem rgba(255, 193, 7, 0.5);\n}\n\n.btn-outline-warning.disabled, .btn-outline-warning:disabled {\n color: #ffc107;\n background-color: transparent;\n}\n\n.btn-outline-warning:not([disabled]):not(.disabled):active, .btn-outline-warning:not([disabled]):not(.disabled).active,\n.show > .btn-outline-warning.dropdown-toggle {\n color: #212529;\n background-color: #ffc107;\n border-color: #ffc107;\n box-shadow: 0 0 0 0.2rem rgba(255, 193, 7, 0.5);\n}\n\n.btn-outline-danger {\n color: #dc3545;\n background-color: transparent;\n background-image: none;\n border-color: #dc3545;\n}\n\n.btn-outline-danger:hover {\n color: #fff;\n background-color: #dc3545;\n border-color: #dc3545;\n}\n\n.btn-outline-danger:focus, .btn-outline-danger.focus {\n box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.5);\n}\n\n.btn-outline-danger.disabled, .btn-outline-danger:disabled {\n color: #dc3545;\n background-color: transparent;\n}\n\n.btn-outline-danger:not([disabled]):not(.disabled):active, .btn-outline-danger:not([disabled]):not(.disabled).active,\n.show > .btn-outline-danger.dropdown-toggle {\n color: #212529;\n background-color: #dc3545;\n border-color: #dc3545;\n box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.5);\n}\n\n.btn-outline-light {\n color: #f8f9fa;\n background-color: transparent;\n background-image: none;\n border-color: #f8f9fa;\n}\n\n.btn-outline-light:hover {\n color: #212529;\n background-color: #f8f9fa;\n border-color: #f8f9fa;\n}\n\n.btn-outline-light:focus, .btn-outline-light.focus {\n box-shadow: 0 0 0 0.2rem rgba(248, 249, 250, 0.5);\n}\n\n.btn-outline-light.disabled, .btn-outline-light:disabled {\n color: #f8f9fa;\n background-color: transparent;\n}\n\n.btn-outline-light:not([disabled]):not(.disabled):active, .btn-outline-light:not([disabled]):not(.disabled).active,\n.show > .btn-outline-light.dropdown-toggle {\n color: #fff;\n background-color: #f8f9fa;\n border-color: #f8f9fa;\n box-shadow: 0 0 0 0.2rem rgba(248, 249, 250, 0.5);\n}\n\n.btn-outline-dark {\n color: #343a40;\n background-color: transparent;\n background-image: none;\n border-color: #343a40;\n}\n\n.btn-outline-dark:hover {\n color: #fff;\n background-color: #343a40;\n border-color: #343a40;\n}\n\n.btn-outline-dark:focus, .btn-outline-dark.focus {\n box-shadow: 0 0 0 0.2rem rgba(52, 58, 64, 0.5);\n}\n\n.btn-outline-dark.disabled, .btn-outline-dark:disabled {\n color: #343a40;\n background-color: transparent;\n}\n\n.btn-outline-dark:not([disabled]):not(.disabled):active, .btn-outline-dark:not([disabled]):not(.disabled).active,\n.show > .btn-outline-dark.dropdown-toggle {\n color: #212529;\n background-color: #343a40;\n border-color: #343a40;\n box-shadow: 0 0 0 0.2rem rgba(52, 58, 64, 0.5);\n}\n\n.btn-link {\n font-weight: 400;\n color: #007bff;\n background-color: transparent;\n}\n\n.btn-link:hover {\n color: #0056b3;\n text-decoration: underline;\n background-color: transparent;\n border-color: transparent;\n}\n\n.btn-link:focus, .btn-link.focus {\n text-decoration: underline;\n border-color: transparent;\n box-shadow: none;\n}\n\n.btn-link:disabled, .btn-link.disabled {\n color: #868e96;\n}\n\n.btn-lg, .btn-group-lg > .btn, .btn-group-lg > .member-runner-link {\n padding: 0.5rem 1rem;\n font-size: 1.25rem;\n line-height: 1.5;\n border-radius: 0.3rem;\n}\n\n.btn-sm, .member-runner-link, .btn-group-sm > .btn {\n padding: 0.25rem 0.5rem;\n font-size: 0.875rem;\n line-height: 1.5;\n border-radius: 0.2rem;\n}\n\n.btn-block {\n display: block;\n width: 100%;\n}\n\n.btn-block + .btn-block {\n margin-top: 0.5rem;\n}\n\ninput[type=submit].btn-block,\ninput[type=reset].btn-block,\ninput[type=button].btn-block {\n width: 100%;\n}\n\n.fade {\n opacity: 0;\n transition: opacity 0.15s linear;\n}\n\n.fade.show {\n opacity: 1;\n}\n\n.collapse {\n display: none;\n}\n\n.collapse.show {\n display: block;\n}\n\ntr.collapse.show {\n display: table-row;\n}\n\ntbody.collapse.show {\n display: table-row-group;\n}\n\n.collapsing {\n position: relative;\n height: 0;\n overflow: hidden;\n transition: height 0.35s ease;\n}\n\n.dropup,\n.dropdown {\n position: relative;\n}\n\n.dropdown-toggle::after {\n display: inline-block;\n width: 0;\n height: 0;\n margin-left: 0.255em;\n vertical-align: 0.255em;\n content: \"\";\n border-top: 0.3em solid;\n border-right: 0.3em solid transparent;\n border-bottom: 0;\n border-left: 0.3em solid transparent;\n}\n\n.dropdown-toggle:empty::after {\n margin-left: 0;\n}\n\n.dropdown-menu {\n position: absolute;\n top: 100%;\n left: 0;\n z-index: 1000;\n display: none;\n float: left;\n min-width: 10rem;\n padding: 0.5rem 0;\n margin: 0.125rem 0 0;\n font-size: 1rem;\n color: #212529;\n text-align: left;\n list-style: none;\n background-color: #fff;\n background-clip: padding-box;\n border: 1px solid rgba(0, 0, 0, 0.15);\n border-radius: 0.25rem;\n}\n\n.dropup .dropdown-menu {\n margin-top: 0;\n margin-bottom: 0.125rem;\n}\n\n.dropup .dropdown-toggle::after {\n display: inline-block;\n width: 0;\n height: 0;\n margin-left: 0.255em;\n vertical-align: 0.255em;\n content: \"\";\n border-top: 0;\n border-right: 0.3em solid transparent;\n border-bottom: 0.3em solid;\n border-left: 0.3em solid transparent;\n}\n\n.dropup .dropdown-toggle:empty::after {\n margin-left: 0;\n}\n\n.dropright .dropdown-menu {\n margin-top: 0;\n margin-left: 0.125rem;\n}\n\n.dropright .dropdown-toggle::after {\n display: inline-block;\n width: 0;\n height: 0;\n margin-left: 0.255em;\n vertical-align: 0.255em;\n content: \"\";\n border-top: 0.3em solid transparent;\n border-bottom: 0.3em solid transparent;\n border-left: 0.3em solid;\n}\n\n.dropright .dropdown-toggle:empty::after {\n margin-left: 0;\n}\n\n.dropright .dropdown-toggle::after {\n vertical-align: 0;\n}\n\n.dropleft .dropdown-menu {\n margin-top: 0;\n margin-right: 0.125rem;\n}\n\n.dropleft .dropdown-toggle::after {\n display: inline-block;\n width: 0;\n height: 0;\n margin-left: 0.255em;\n vertical-align: 0.255em;\n content: \"\";\n}\n\n.dropleft .dropdown-toggle::after {\n display: none;\n}\n\n.dropleft .dropdown-toggle::before {\n display: inline-block;\n width: 0;\n height: 0;\n margin-right: 0.255em;\n vertical-align: 0.255em;\n content: \"\";\n border-top: 0.3em solid transparent;\n border-right: 0.3em solid;\n border-bottom: 0.3em solid transparent;\n}\n\n.dropleft .dropdown-toggle:empty::after {\n margin-left: 0;\n}\n\n.dropleft .dropdown-toggle::before {\n vertical-align: 0;\n}\n\n.dropdown-divider {\n height: 0;\n margin: 0.5rem 0;\n overflow: hidden;\n border-top: 1px solid #e9ecef;\n}\n\n.dropdown-item {\n display: block;\n width: 100%;\n padding: 0.25rem 1.5rem;\n clear: both;\n font-weight: 400;\n color: #212529;\n text-align: inherit;\n white-space: nowrap;\n background-color: transparent;\n border: 0;\n}\n\n.dropdown-item:focus, .dropdown-item:hover {\n color: #16181b;\n text-decoration: none;\n background-color: #f8f9fa;\n}\n\n.dropdown-item.active, .dropdown-item:active {\n color: #fff;\n text-decoration: none;\n background-color: #007bff;\n}\n\n.dropdown-item.disabled, .dropdown-item:disabled {\n color: #868e96;\n background-color: transparent;\n}\n\n.dropdown-menu.show {\n display: block;\n}\n\n.dropdown-header {\n display: block;\n padding: 0.5rem 1.5rem;\n margin-bottom: 0;\n font-size: 0.875rem;\n color: #868e96;\n white-space: nowrap;\n}\n\n.btn-group,\n.btn-group-vertical {\n position: relative;\n display: -ms-inline-flexbox;\n display: inline-flex;\n vertical-align: middle;\n}\n\n.btn-group > .btn, .btn-group > .member-runner-link,\n.btn-group-vertical > .btn,\n.btn-group-vertical > .member-runner-link {\n position: relative;\n -ms-flex: 0 1 auto;\n flex: 0 1 auto;\n}\n\n.btn-group > .btn:hover, .btn-group > .member-runner-link:hover,\n.btn-group-vertical > .btn:hover,\n.btn-group-vertical > .member-runner-link:hover {\n z-index: 1;\n}\n\n.btn-group > .btn:focus, .btn-group > .member-runner-link:focus, .btn-group > .btn:active, .btn-group > .member-runner-link:active, .btn-group > .btn.active, .btn-group > .active.member-runner-link,\n.btn-group-vertical > .btn:focus,\n.btn-group-vertical > .member-runner-link:focus,\n.btn-group-vertical > .btn:active,\n.btn-group-vertical > .member-runner-link:active,\n.btn-group-vertical > .btn.active,\n.btn-group-vertical > .active.member-runner-link {\n z-index: 1;\n}\n\n.btn-group .btn + .btn, .btn-group .member-runner-link + .btn, .btn-group .btn + .member-runner-link, .btn-group .member-runner-link + .member-runner-link,\n.btn-group .btn + .btn-group,\n.btn-group .member-runner-link + .btn-group,\n.btn-group .btn-group + .btn,\n.btn-group .btn-group + .member-runner-link,\n.btn-group .btn-group + .btn-group,\n.btn-group-vertical .btn + .btn,\n.btn-group-vertical .member-runner-link + .btn,\n.btn-group-vertical .btn + .member-runner-link,\n.btn-group-vertical .member-runner-link + .member-runner-link,\n.btn-group-vertical .btn + .btn-group,\n.btn-group-vertical .member-runner-link + .btn-group,\n.btn-group-vertical .btn-group + .btn,\n.btn-group-vertical .btn-group + .member-runner-link,\n.btn-group-vertical .btn-group + .btn-group {\n margin-left: -1px;\n}\n\n.btn-toolbar {\n display: -ms-flexbox;\n display: flex;\n -ms-flex-wrap: wrap;\n flex-wrap: wrap;\n -ms-flex-pack: start;\n justify-content: flex-start;\n}\n\n.btn-toolbar .input-group {\n width: auto;\n}\n\n.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle), .btn-group > .member-runner-link:not(:first-child):not(:last-child):not(.dropdown-toggle) {\n border-radius: 0;\n}\n\n.btn-group > .btn:first-child, .btn-group > .member-runner-link:first-child {\n margin-left: 0;\n}\n\n.btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle), .btn-group > .member-runner-link:first-child:not(:last-child):not(.dropdown-toggle) {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n}\n\n.btn-group > .btn:last-child:not(:first-child), .btn-group > .member-runner-link:last-child:not(:first-child),\n.btn-group > .dropdown-toggle:not(:first-child) {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n}\n\n.btn-group > .btn-group {\n float: left;\n}\n\n.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn, .btn-group > .btn-group:not(:first-child):not(:last-child) > .member-runner-link {\n border-radius: 0;\n}\n\n.btn-group > .btn-group:first-child:not(:last-child) > .btn:last-child, .btn-group > .btn-group:first-child:not(:last-child) > .member-runner-link:last-child,\n.btn-group > .btn-group:first-child:not(:last-child) > .dropdown-toggle {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n}\n\n.btn-group > .btn-group:last-child:not(:first-child) > .btn:first-child, .btn-group > .btn-group:last-child:not(:first-child) > .member-runner-link:first-child {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n}\n\n.dropdown-toggle-split {\n padding-right: 0.5625rem;\n padding-left: 0.5625rem;\n}\n\n.dropdown-toggle-split::after {\n margin-left: 0;\n}\n\n.btn-sm + .dropdown-toggle-split, .member-runner-link + .dropdown-toggle-split, .btn-group-sm > .btn + .dropdown-toggle-split, .btn-group-sm > .member-runner-link + .dropdown-toggle-split {\n padding-right: 0.375rem;\n padding-left: 0.375rem;\n}\n\n.btn-lg + .dropdown-toggle-split, .btn-group-lg > .btn + .dropdown-toggle-split, .btn-group-lg > .member-runner-link + .dropdown-toggle-split {\n padding-right: 0.75rem;\n padding-left: 0.75rem;\n}\n\n.btn-group-vertical {\n -ms-flex-direction: column;\n flex-direction: column;\n -ms-flex-align: start;\n align-items: flex-start;\n -ms-flex-pack: center;\n justify-content: center;\n}\n\n.btn-group-vertical .btn, .btn-group-vertical .member-runner-link,\n.btn-group-vertical .btn-group {\n width: 100%;\n}\n\n.btn-group-vertical > .btn + .btn, .btn-group-vertical > .member-runner-link + .btn, .btn-group-vertical > .btn + .member-runner-link, .btn-group-vertical > .member-runner-link + .member-runner-link,\n.btn-group-vertical > .btn + .btn-group,\n.btn-group-vertical > .member-runner-link + .btn-group,\n.btn-group-vertical > .btn-group + .btn,\n.btn-group-vertical > .btn-group + .member-runner-link,\n.btn-group-vertical > .btn-group + .btn-group {\n margin-top: -1px;\n margin-left: 0;\n}\n\n.btn-group-vertical > .btn:not(:first-child):not(:last-child), .btn-group-vertical > .member-runner-link:not(:first-child):not(:last-child) {\n border-radius: 0;\n}\n\n.btn-group-vertical > .btn:first-child:not(:last-child), .btn-group-vertical > .member-runner-link:first-child:not(:last-child) {\n border-bottom-right-radius: 0;\n border-bottom-left-radius: 0;\n}\n\n.btn-group-vertical > .btn:last-child:not(:first-child), .btn-group-vertical > .member-runner-link:last-child:not(:first-child) {\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n}\n\n.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn, .btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .member-runner-link {\n border-radius: 0;\n}\n\n.btn-group-vertical > .btn-group:first-child:not(:last-child) > .btn:last-child, .btn-group-vertical > .btn-group:first-child:not(:last-child) > .member-runner-link:last-child,\n.btn-group-vertical > .btn-group:first-child:not(:last-child) > .dropdown-toggle {\n border-bottom-right-radius: 0;\n border-bottom-left-radius: 0;\n}\n\n.btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child, .btn-group-vertical > .btn-group:last-child:not(:first-child) > .member-runner-link:first-child {\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n}\n\n.btn-group-toggle > .btn, .btn-group-toggle > .member-runner-link,\n.btn-group-toggle > .btn-group > .btn,\n.btn-group-toggle > .btn-group > .member-runner-link {\n margin-bottom: 0;\n}\n\n.btn-group-toggle > .btn input[type=radio], .btn-group-toggle > .member-runner-link input[type=radio],\n.btn-group-toggle > .btn input[type=checkbox],\n.btn-group-toggle > .member-runner-link input[type=checkbox],\n.btn-group-toggle > .btn-group > .btn input[type=radio],\n.btn-group-toggle > .btn-group > .btn input[type=checkbox] {\n position: absolute;\n clip: rect(0, 0, 0, 0);\n pointer-events: none;\n}\n\n.input-group {\n position: relative;\n display: -ms-flexbox;\n display: flex;\n -ms-flex-align: stretch;\n align-items: stretch;\n width: 100%;\n}\n\n.input-group .form-control {\n position: relative;\n z-index: 1;\n -ms-flex: 1 1 auto;\n flex: 1 1 auto;\n width: 1%;\n margin-bottom: 0;\n}\n\n.input-group .form-control:focus, .input-group .form-control:active, .input-group .form-control:hover {\n z-index: 2;\n}\n\n.input-group-addon,\n.input-group-btn,\n.input-group .form-control,\n.input-group .custom-select,\n.input-group .custom-file {\n display: -ms-flexbox;\n display: flex;\n -ms-flex-align: center;\n align-items: center;\n}\n\n.input-group-addon:not(:first-child):not(:last-child),\n.input-group-btn:not(:first-child):not(:last-child),\n.input-group .form-control:not(:first-child):not(:last-child),\n.input-group .custom-select:not(:first-child):not(:last-child),\n.input-group .custom-file:not(:first-child):not(:last-child) {\n border-radius: 0;\n}\n\n.input-group .custom-file {\n display: -ms-flexbox;\n display: flex;\n -ms-flex-align: center;\n align-items: center;\n}\n\n.input-group .custom-select,\n.input-group .custom-file {\n width: 100%;\n}\n\n.input-group-addon,\n.input-group-btn {\n white-space: nowrap;\n}\n\n.input-group-addon {\n padding: 0.375rem 0.75rem;\n margin-bottom: 0;\n font-size: 1rem;\n font-weight: 400;\n line-height: 1.5;\n color: #495057;\n text-align: center;\n background-color: #e9ecef;\n border: 1px solid #ced4da;\n border-radius: 0.25rem;\n}\n\n.input-group-addon.form-control-sm,\n.input-group-sm > .input-group-addon,\n.input-group-sm > .input-group-btn > .input-group-addon.btn,\n.input-group-sm > .input-group-btn > .input-group-addon.member-runner-link {\n padding: 0.25rem 0.5rem;\n font-size: 0.875rem;\n border-radius: 0.2rem;\n}\n\n.input-group-addon.form-control-lg,\n.input-group-lg > .input-group-addon,\n.input-group-lg > .input-group-btn > .input-group-addon.btn,\n.input-group-lg > .input-group-btn > .input-group-addon.member-runner-link {\n padding: 0.5rem 1rem;\n font-size: 1.25rem;\n border-radius: 0.3rem;\n}\n\n.input-group-addon input[type=radio],\n.input-group-addon input[type=checkbox] {\n margin-top: 0;\n}\n\n.input-group .form-control:not(:last-child),\n.input-group .custom-select:not(:last-child),\n.input-group .custom-file:not(:last-child) .custom-file-control::before,\n.input-group-addon:not(:last-child),\n.input-group-btn:not(:last-child) > .btn,\n.input-group-btn:not(:last-child) > .member-runner-link,\n.input-group-btn:not(:last-child) > .btn-group > .btn,\n.input-group-btn:not(:last-child) > .btn-group > .member-runner-link,\n.input-group-btn:not(:last-child) > .dropdown-toggle,\n.input-group-btn:not(:first-child) > .btn:not(:last-child):not(.dropdown-toggle),\n.input-group-btn:not(:first-child) > .member-runner-link:not(:last-child):not(.dropdown-toggle),\n.input-group-btn:not(:first-child) > .btn-group:not(:last-child) > .btn,\n.input-group-btn:not(:first-child) > .btn-group:not(:last-child) > .member-runner-link {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n}\n\n.input-group-addon:not(:last-child) {\n border-right: 0;\n}\n\n.input-group .form-control:not(:first-child),\n.input-group .custom-select:not(:first-child),\n.input-group .custom-file:not(:first-child) .custom-file-control,\n.input-group-addon:not(:first-child),\n.input-group-btn:not(:first-child) > .btn,\n.input-group-btn:not(:first-child) > .member-runner-link,\n.input-group-btn:not(:first-child) > .btn-group > .btn,\n.input-group-btn:not(:first-child) > .btn-group > .member-runner-link,\n.input-group-btn:not(:first-child) > .dropdown-toggle,\n.input-group-btn:not(:last-child) > .btn:not(:first-child),\n.input-group-btn:not(:last-child) > .member-runner-link:not(:first-child),\n.input-group-btn:not(:last-child) > .btn-group:not(:first-child) > .btn,\n.input-group-btn:not(:last-child) > .btn-group:not(:first-child) > .member-runner-link {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n}\n\n.form-control + .input-group-addon:not(:first-child),\n.custom-select + .input-group-addon:not(:first-child),\n.custom-file + .input-group-addon:not(:first-child) {\n border-left: 0;\n}\n\n.input-group-btn {\n position: relative;\n -ms-flex-align: stretch;\n align-items: stretch;\n font-size: 0;\n white-space: nowrap;\n}\n\n.input-group-btn > .btn, .input-group-btn > .member-runner-link {\n position: relative;\n}\n\n.input-group-btn > .btn + .btn, .input-group-btn > .member-runner-link + .btn, .input-group-btn > .btn + .member-runner-link, .input-group-btn > .member-runner-link + .member-runner-link {\n margin-left: -1px;\n}\n\n.input-group-btn > .btn:focus, .input-group-btn > .member-runner-link:focus, .input-group-btn > .btn:active, .input-group-btn > .member-runner-link:active, .input-group-btn > .btn:hover, .input-group-btn > .member-runner-link:hover {\n z-index: 2;\n}\n\n.input-group-btn:first-child > .btn + .btn, .input-group-btn:first-child > .member-runner-link + .btn, .input-group-btn:first-child > .btn + .member-runner-link, .input-group-btn:first-child > .member-runner-link + .member-runner-link {\n margin-left: 0;\n}\n\n.input-group-btn:not(:last-child) > .btn, .input-group-btn:not(:last-child) > .member-runner-link,\n.input-group-btn:not(:last-child) > .btn-group {\n margin-right: -1px;\n}\n\n.input-group-btn:not(:first-child) > .btn, .input-group-btn:not(:first-child) > .member-runner-link,\n.input-group-btn:not(:first-child) > .btn-group {\n z-index: 1;\n margin-left: 0;\n}\n\n.input-group-btn:not(:first-child) > .btn:first-child, .input-group-btn:not(:first-child) > .member-runner-link:first-child,\n.input-group-btn:not(:first-child) > .btn-group:first-child {\n margin-left: -1px;\n}\n\n.input-group-btn:not(:first-child) > .btn:focus, .input-group-btn:not(:first-child) > .member-runner-link:focus, .input-group-btn:not(:first-child) > .btn:active, .input-group-btn:not(:first-child) > .member-runner-link:active, .input-group-btn:not(:first-child) > .btn:hover, .input-group-btn:not(:first-child) > .member-runner-link:hover,\n.input-group-btn:not(:first-child) > .btn-group:focus,\n.input-group-btn:not(:first-child) > .btn-group:active,\n.input-group-btn:not(:first-child) > .btn-group:hover {\n z-index: 2;\n}\n\n.custom-control {\n position: relative;\n display: -ms-inline-flexbox;\n display: inline-flex;\n min-height: 1.5rem;\n padding-left: 1.5rem;\n margin-right: 1rem;\n}\n\n.custom-control-input {\n position: absolute;\n z-index: -1;\n opacity: 0;\n}\n\n.custom-control-input:checked ~ .custom-control-indicator {\n color: #fff;\n background-color: #007bff;\n}\n\n.custom-control-input:focus ~ .custom-control-indicator {\n box-shadow: 0 0 0 1px #fff, 0 0 0 0.2rem rgba(0, 123, 255, 0.25);\n}\n\n.custom-control-input:active ~ .custom-control-indicator {\n color: #fff;\n background-color: #b3d7ff;\n}\n\n.custom-control-input:disabled ~ .custom-control-indicator {\n background-color: #e9ecef;\n}\n\n.custom-control-input:disabled ~ .custom-control-description {\n color: #868e96;\n}\n\n.custom-control-indicator {\n position: absolute;\n top: 0.25rem;\n left: 0;\n display: block;\n width: 1rem;\n height: 1rem;\n pointer-events: none;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n background-color: #dee2e6;\n}\n\n.custom-control-indicator::before {\n display: block;\n width: 1rem;\n height: 1rem;\n content: \"\";\n background-repeat: no-repeat;\n background-position: center center;\n background-size: 50% 50%;\n}\n\n.custom-checkbox .custom-control-indicator {\n border-radius: 0.25rem;\n}\n\n.custom-checkbox .custom-control-input:checked ~ .custom-control-indicator {\n background-color: #007bff;\n}\n\n.custom-checkbox .custom-control-input:checked ~ .custom-control-indicator::before {\n background-image: url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26 2.974 7.25 8 2.193z'/%3E%3C/svg%3E\");\n}\n\n.custom-checkbox .custom-control-input:indeterminate ~ .custom-control-indicator {\n background-color: #007bff;\n}\n\n.custom-checkbox .custom-control-input:indeterminate ~ .custom-control-indicator::before {\n background-image: url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 4'%3E%3Cpath stroke='%23fff' d='M0 2h4'/%3E%3C/svg%3E\");\n}\n\n.custom-radio .custom-control-indicator {\n border-radius: 50%;\n}\n\n.custom-radio .custom-control-input:checked ~ .custom-control-indicator {\n background-color: #007bff;\n}\n\n.custom-radio .custom-control-input:checked ~ .custom-control-indicator::before {\n background-image: url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3E%3Ccircle r='3' fill='%23fff'/%3E%3C/svg%3E\");\n}\n\n.custom-controls-stacked {\n display: -ms-flexbox;\n display: flex;\n -ms-flex-direction: column;\n flex-direction: column;\n}\n\n.custom-controls-stacked .custom-control {\n margin-bottom: 0.25rem;\n}\n\n.custom-controls-stacked .custom-control + .custom-control {\n margin-left: 0;\n}\n\n.custom-select {\n display: inline-block;\n max-width: 100%;\n height: calc(2.25rem + 2px);\n padding: 0.375rem 1.75rem 0.375rem 0.75rem;\n line-height: 1.5;\n color: #495057;\n vertical-align: middle;\n background: #fff url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3E%3Cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3E%3C/svg%3E\") no-repeat right 0.75rem center;\n background-size: 8px 10px;\n border: 1px solid #ced4da;\n border-radius: 0.25rem;\n -webkit-appearance: none;\n -moz-appearance: none;\n appearance: none;\n}\n\n.custom-select:focus {\n border-color: #80bdff;\n outline: 0;\n box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.075), 0 0 0 0.2rem rgba(0, 123, 255, 0.25);\n}\n\n.custom-select:focus::-ms-value {\n color: #495057;\n background-color: #fff;\n}\n\n.custom-select[multiple], .custom-select[size]:not([size=\"1\"]) {\n height: auto;\n padding-right: 0.75rem;\n background-image: none;\n}\n\n.custom-select:disabled {\n color: #868e96;\n background-color: #e9ecef;\n}\n\n.custom-select::-ms-expand {\n opacity: 0;\n}\n\n.custom-select-sm {\n height: calc(1.8125rem + 2px);\n padding-top: 0.375rem;\n padding-bottom: 0.375rem;\n font-size: 75%;\n}\n\n.custom-select-lg {\n height: calc(2.875rem + 2px);\n padding-top: 0.375rem;\n padding-bottom: 0.375rem;\n font-size: 125%;\n}\n\n.custom-file {\n position: relative;\n display: inline-block;\n max-width: 100%;\n height: calc(2.25rem + 2px);\n margin-bottom: 0;\n}\n\n.custom-file-input {\n min-width: 14rem;\n max-width: 100%;\n height: calc(2.25rem + 2px);\n margin: 0;\n opacity: 0;\n}\n\n.custom-file-input:focus ~ .custom-file-control {\n border-color: #80bdff;\n box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25);\n}\n\n.custom-file-input:focus ~ .custom-file-control::before {\n border-color: #80bdff;\n}\n\n.custom-file-control {\n position: absolute;\n top: 0;\n right: 0;\n left: 0;\n height: calc(2.25rem + 2px);\n padding: 0.375rem 0.75rem;\n line-height: 1.5;\n color: #495057;\n pointer-events: none;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n background-color: #fff;\n border: 1px solid #ced4da;\n border-radius: 0.25rem;\n}\n\n.custom-file-control:lang(en):empty::after {\n content: \"Choose file...\";\n}\n\n.custom-file-control::before {\n position: absolute;\n top: -1px;\n right: -1px;\n bottom: -1px;\n z-index: 1;\n display: block;\n height: calc(2.25rem + 2px);\n padding: 0.375rem 0.75rem;\n line-height: 1.5;\n color: #495057;\n background-color: #e9ecef;\n border: 1px solid #ced4da;\n border-radius: 0 0.25rem 0.25rem 0;\n}\n\n.custom-file-control:lang(en)::before {\n content: \"Browse\";\n}\n\n.nav {\n display: -ms-flexbox;\n display: flex;\n -ms-flex-wrap: wrap;\n flex-wrap: wrap;\n padding-left: 0;\n margin-bottom: 0;\n list-style: none;\n}\n\n.nav-link {\n display: block;\n padding: 0.5rem 1rem;\n}\n\n.nav-link:focus, .nav-link:hover {\n text-decoration: none;\n}\n\n.nav-link.disabled {\n color: #868e96;\n}\n\n.nav-tabs {\n border-bottom: 1px solid #dee2e6;\n}\n\n.nav-tabs .nav-item {\n margin-bottom: -1px;\n}\n\n.nav-tabs .nav-link {\n border: 1px solid transparent;\n border-top-left-radius: 0.25rem;\n border-top-right-radius: 0.25rem;\n}\n\n.nav-tabs .nav-link:focus, .nav-tabs .nav-link:hover {\n border-color: #e9ecef #e9ecef #dee2e6;\n}\n\n.nav-tabs .nav-link.disabled {\n color: #868e96;\n background-color: transparent;\n border-color: transparent;\n}\n\n.nav-tabs .nav-link.active,\n.nav-tabs .nav-item.show .nav-link {\n color: #495057;\n background-color: #fff;\n border-color: #dee2e6 #dee2e6 #fff;\n}\n\n.nav-tabs .dropdown-menu {\n margin-top: -1px;\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n}\n\n.nav-pills .nav-link {\n border-radius: 0.25rem;\n}\n\n.nav-pills .nav-link.active,\n.nav-pills .show > .nav-link {\n color: #fff;\n background-color: #007bff;\n}\n\n.nav-fill .nav-item {\n -ms-flex: 1 1 auto;\n flex: 1 1 auto;\n text-align: center;\n}\n\n.nav-justified .nav-item {\n -ms-flex-preferred-size: 0;\n flex-basis: 0;\n -ms-flex-positive: 1;\n flex-grow: 1;\n text-align: center;\n}\n\n.tab-content > .tab-pane {\n display: none;\n}\n\n.tab-content > .active {\n display: block;\n}\n\n.navbar {\n position: relative;\n display: -ms-flexbox;\n display: flex;\n -ms-flex-wrap: wrap;\n flex-wrap: wrap;\n -ms-flex-align: center;\n align-items: center;\n -ms-flex-pack: justify;\n justify-content: space-between;\n padding: 0.5rem 1rem;\n}\n\n.navbar > .container,\n.navbar > .container-fluid {\n display: -ms-flexbox;\n display: flex;\n -ms-flex-wrap: wrap;\n flex-wrap: wrap;\n -ms-flex-align: center;\n align-items: center;\n -ms-flex-pack: justify;\n justify-content: space-between;\n}\n\n.navbar-brand {\n display: inline-block;\n padding-top: 0.3125rem;\n padding-bottom: 0.3125rem;\n margin-right: 1rem;\n font-size: 1.25rem;\n line-height: inherit;\n white-space: nowrap;\n}\n\n.navbar-brand:focus, .navbar-brand:hover {\n text-decoration: none;\n}\n\n.navbar-nav {\n display: -ms-flexbox;\n display: flex;\n -ms-flex-direction: column;\n flex-direction: column;\n padding-left: 0;\n margin-bottom: 0;\n list-style: none;\n}\n\n.navbar-nav .nav-link {\n padding-right: 0;\n padding-left: 0;\n}\n\n.navbar-nav .dropdown-menu {\n position: static;\n float: none;\n}\n\n.navbar-text {\n display: inline-block;\n padding-top: 0.5rem;\n padding-bottom: 0.5rem;\n}\n\n.navbar-collapse {\n -ms-flex-preferred-size: 100%;\n flex-basis: 100%;\n -ms-flex-positive: 1;\n flex-grow: 1;\n -ms-flex-align: center;\n align-items: center;\n}\n\n.navbar-toggler {\n padding: 0.25rem 0.75rem;\n font-size: 1.25rem;\n line-height: 1;\n background-color: transparent;\n border: 1px solid transparent;\n border-radius: 0.25rem;\n}\n\n.navbar-toggler:focus, .navbar-toggler:hover {\n text-decoration: none;\n}\n\n.navbar-toggler-icon {\n display: inline-block;\n width: 1.5em;\n height: 1.5em;\n vertical-align: middle;\n content: \"\";\n background: no-repeat center center;\n background-size: 100% 100%;\n}\n\n@media (max-width: 575.99px) {\n .navbar-expand-sm > .container,\n.navbar-expand-sm > .container-fluid {\n padding-right: 0;\n padding-left: 0;\n }\n}\n@media (min-width: 576px) {\n .navbar-expand-sm {\n -ms-flex-flow: row nowrap;\n flex-flow: row nowrap;\n -ms-flex-pack: start;\n justify-content: flex-start;\n }\n .navbar-expand-sm .navbar-nav {\n -ms-flex-direction: row;\n flex-direction: row;\n }\n .navbar-expand-sm .navbar-nav .dropdown-menu {\n position: absolute;\n }\n .navbar-expand-sm .navbar-nav .dropdown-menu-right {\n right: 0;\n left: auto;\n }\n .navbar-expand-sm .navbar-nav .nav-link {\n padding-right: 0.5rem;\n padding-left: 0.5rem;\n }\n .navbar-expand-sm > .container,\n.navbar-expand-sm > .container-fluid {\n -ms-flex-wrap: nowrap;\n flex-wrap: nowrap;\n }\n .navbar-expand-sm .navbar-collapse {\n display: -ms-flexbox !important;\n display: flex !important;\n -ms-flex-preferred-size: auto;\n flex-basis: auto;\n }\n .navbar-expand-sm .navbar-toggler {\n display: none;\n }\n .navbar-expand-sm .dropup .dropdown-menu {\n top: auto;\n bottom: 100%;\n }\n}\n@media (max-width: 767.99px) {\n .navbar-expand-md > .container,\n.navbar-expand-md > .container-fluid {\n padding-right: 0;\n padding-left: 0;\n }\n}\n@media (min-width: 768px) {\n .navbar-expand-md {\n -ms-flex-flow: row nowrap;\n flex-flow: row nowrap;\n -ms-flex-pack: start;\n justify-content: flex-start;\n }\n .navbar-expand-md .navbar-nav {\n -ms-flex-direction: row;\n flex-direction: row;\n }\n .navbar-expand-md .navbar-nav .dropdown-menu {\n position: absolute;\n }\n .navbar-expand-md .navbar-nav .dropdown-menu-right {\n right: 0;\n left: auto;\n }\n .navbar-expand-md .navbar-nav .nav-link {\n padding-right: 0.5rem;\n padding-left: 0.5rem;\n }\n .navbar-expand-md > .container,\n.navbar-expand-md > .container-fluid {\n -ms-flex-wrap: nowrap;\n flex-wrap: nowrap;\n }\n .navbar-expand-md .navbar-collapse {\n display: -ms-flexbox !important;\n display: flex !important;\n -ms-flex-preferred-size: auto;\n flex-basis: auto;\n }\n .navbar-expand-md .navbar-toggler {\n display: none;\n }\n .navbar-expand-md .dropup .dropdown-menu {\n top: auto;\n bottom: 100%;\n }\n}\n@media (max-width: 991.99px) {\n .navbar-expand-lg > .container,\n.navbar-expand-lg > .container-fluid {\n padding-right: 0;\n padding-left: 0;\n }\n}\n@media (min-width: 992px) {\n .navbar-expand-lg {\n -ms-flex-flow: row nowrap;\n flex-flow: row nowrap;\n -ms-flex-pack: start;\n justify-content: flex-start;\n }\n .navbar-expand-lg .navbar-nav {\n -ms-flex-direction: row;\n flex-direction: row;\n }\n .navbar-expand-lg .navbar-nav .dropdown-menu {\n position: absolute;\n }\n .navbar-expand-lg .navbar-nav .dropdown-menu-right {\n right: 0;\n left: auto;\n }\n .navbar-expand-lg .navbar-nav .nav-link {\n padding-right: 0.5rem;\n padding-left: 0.5rem;\n }\n .navbar-expand-lg > .container,\n.navbar-expand-lg > .container-fluid {\n -ms-flex-wrap: nowrap;\n flex-wrap: nowrap;\n }\n .navbar-expand-lg .navbar-collapse {\n display: -ms-flexbox !important;\n display: flex !important;\n -ms-flex-preferred-size: auto;\n flex-basis: auto;\n }\n .navbar-expand-lg .navbar-toggler {\n display: none;\n }\n .navbar-expand-lg .dropup .dropdown-menu {\n top: auto;\n bottom: 100%;\n }\n}\n@media (max-width: 1199.99px) {\n .navbar-expand-xl > .container,\n.navbar-expand-xl > .container-fluid {\n padding-right: 0;\n padding-left: 0;\n }\n}\n@media (min-width: 1200px) {\n .navbar-expand-xl {\n -ms-flex-flow: row nowrap;\n flex-flow: row nowrap;\n -ms-flex-pack: start;\n justify-content: flex-start;\n }\n .navbar-expand-xl .navbar-nav {\n -ms-flex-direction: row;\n flex-direction: row;\n }\n .navbar-expand-xl .navbar-nav .dropdown-menu {\n position: absolute;\n }\n .navbar-expand-xl .navbar-nav .dropdown-menu-right {\n right: 0;\n left: auto;\n }\n .navbar-expand-xl .navbar-nav .nav-link {\n padding-right: 0.5rem;\n padding-left: 0.5rem;\n }\n .navbar-expand-xl > .container,\n.navbar-expand-xl > .container-fluid {\n -ms-flex-wrap: nowrap;\n flex-wrap: nowrap;\n }\n .navbar-expand-xl .navbar-collapse {\n display: -ms-flexbox !important;\n display: flex !important;\n -ms-flex-preferred-size: auto;\n flex-basis: auto;\n }\n .navbar-expand-xl .navbar-toggler {\n display: none;\n }\n .navbar-expand-xl .dropup .dropdown-menu {\n top: auto;\n bottom: 100%;\n }\n}\n.navbar-expand {\n -ms-flex-flow: row nowrap;\n flex-flow: row nowrap;\n -ms-flex-pack: start;\n justify-content: flex-start;\n}\n\n.navbar-expand > .container,\n.navbar-expand > .container-fluid {\n padding-right: 0;\n padding-left: 0;\n}\n\n.navbar-expand .navbar-nav {\n -ms-flex-direction: row;\n flex-direction: row;\n}\n\n.navbar-expand .navbar-nav .dropdown-menu {\n position: absolute;\n}\n\n.navbar-expand .navbar-nav .dropdown-menu-right {\n right: 0;\n left: auto;\n}\n\n.navbar-expand .navbar-nav .nav-link {\n padding-right: 0.5rem;\n padding-left: 0.5rem;\n}\n\n.navbar-expand > .container,\n.navbar-expand > .container-fluid {\n -ms-flex-wrap: nowrap;\n flex-wrap: nowrap;\n}\n\n.navbar-expand .navbar-collapse {\n display: -ms-flexbox !important;\n display: flex !important;\n -ms-flex-preferred-size: auto;\n flex-basis: auto;\n}\n\n.navbar-expand .navbar-toggler {\n display: none;\n}\n\n.navbar-expand .dropup .dropdown-menu {\n top: auto;\n bottom: 100%;\n}\n\n.navbar-light .navbar-brand {\n color: rgba(0, 0, 0, 0.9);\n}\n\n.navbar-light .navbar-brand:focus, .navbar-light .navbar-brand:hover {\n color: rgba(0, 0, 0, 0.9);\n}\n\n.navbar-light .navbar-nav .nav-link {\n color: rgba(0, 0, 0, 0.5);\n}\n\n.navbar-light .navbar-nav .nav-link:focus, .navbar-light .navbar-nav .nav-link:hover {\n color: rgba(0, 0, 0, 0.7);\n}\n\n.navbar-light .navbar-nav .nav-link.disabled {\n color: rgba(0, 0, 0, 0.3);\n}\n\n.navbar-light .navbar-nav .show > .nav-link,\n.navbar-light .navbar-nav .active > .nav-link,\n.navbar-light .navbar-nav .nav-link.show,\n.navbar-light .navbar-nav .nav-link.active {\n color: rgba(0, 0, 0, 0.9);\n}\n\n.navbar-light .navbar-toggler {\n color: rgba(0, 0, 0, 0.5);\n border-color: rgba(0, 0, 0, 0.1);\n}\n\n.navbar-light .navbar-toggler-icon {\n background-image: url(\"data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='rgba(0, 0, 0, 0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E\");\n}\n\n.navbar-light .navbar-text {\n color: rgba(0, 0, 0, 0.5);\n}\n\n.navbar-light .navbar-text a {\n color: rgba(0, 0, 0, 0.9);\n}\n\n.navbar-light .navbar-text a:focus, .navbar-light .navbar-text a:hover {\n color: rgba(0, 0, 0, 0.9);\n}\n\n.navbar-dark .navbar-brand {\n color: #fff;\n}\n\n.navbar-dark .navbar-brand:focus, .navbar-dark .navbar-brand:hover {\n color: #fff;\n}\n\n.navbar-dark .navbar-nav .nav-link {\n color: rgba(255, 255, 255, 0.5);\n}\n\n.navbar-dark .navbar-nav .nav-link:focus, .navbar-dark .navbar-nav .nav-link:hover {\n color: rgba(255, 255, 255, 0.75);\n}\n\n.navbar-dark .navbar-nav .nav-link.disabled {\n color: rgba(255, 255, 255, 0.25);\n}\n\n.navbar-dark .navbar-nav .show > .nav-link,\n.navbar-dark .navbar-nav .active > .nav-link,\n.navbar-dark .navbar-nav .nav-link.show,\n.navbar-dark .navbar-nav .nav-link.active {\n color: #fff;\n}\n\n.navbar-dark .navbar-toggler {\n color: rgba(255, 255, 255, 0.5);\n border-color: rgba(255, 255, 255, 0.1);\n}\n\n.navbar-dark .navbar-toggler-icon {\n background-image: url(\"data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='rgba(255, 255, 255, 0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E\");\n}\n\n.navbar-dark .navbar-text {\n color: rgba(255, 255, 255, 0.5);\n}\n\n.navbar-dark .navbar-text a {\n color: #fff;\n}\n\n.navbar-dark .navbar-text a:focus, .navbar-dark .navbar-text a:hover {\n color: #fff;\n}\n\n.card, .member {\n position: relative;\n display: -ms-flexbox;\n display: flex;\n -ms-flex-direction: column;\n flex-direction: column;\n min-width: 0;\n word-wrap: break-word;\n background-color: #fff;\n background-clip: border-box;\n border: 1px solid rgba(0, 0, 0, 0.125);\n border-radius: 0.25rem;\n}\n\n.card > hr, .member > hr {\n margin-right: 0;\n margin-left: 0;\n}\n\n.card > .list-group:first-child .list-group-item:first-child, .member > .list-group:first-child .list-group-item:first-child {\n border-top-left-radius: 0.25rem;\n border-top-right-radius: 0.25rem;\n}\n\n.card > .list-group:last-child .list-group-item:last-child, .member > .list-group:last-child .list-group-item:last-child {\n border-bottom-right-radius: 0.25rem;\n border-bottom-left-radius: 0.25rem;\n}\n\n.card-body, .member-info {\n -ms-flex: 1 1 auto;\n flex: 1 1 auto;\n padding: 1.25rem;\n}\n\n.card-title {\n margin-bottom: 0.75rem;\n}\n\n.card-subtitle {\n margin-top: -0.375rem;\n margin-bottom: 0;\n}\n\n.card-text:last-child {\n margin-bottom: 0;\n}\n\n.card-link:hover {\n text-decoration: none;\n}\n\n.card-link + .card-link {\n margin-left: 1.25rem;\n}\n\n.card-header {\n padding: 0.75rem 1.25rem;\n margin-bottom: 0;\n background-color: rgba(0, 0, 0, 0.03);\n border-bottom: 1px solid rgba(0, 0, 0, 0.125);\n}\n\n.card-header:first-child {\n border-radius: calc(0.25rem - 1px) calc(0.25rem - 1px) 0 0;\n}\n\n.card-header + .list-group .list-group-item:first-child {\n border-top: 0;\n}\n\n.card-footer {\n padding: 0.75rem 1.25rem;\n background-color: rgba(0, 0, 0, 0.03);\n border-top: 1px solid rgba(0, 0, 0, 0.125);\n}\n\n.card-footer:last-child {\n border-radius: 0 0 calc(0.25rem - 1px) calc(0.25rem - 1px);\n}\n\n.card-header-tabs {\n margin-right: -0.625rem;\n margin-bottom: -0.75rem;\n margin-left: -0.625rem;\n border-bottom: 0;\n}\n\n.card-header-pills {\n margin-right: -0.625rem;\n margin-left: -0.625rem;\n}\n\n.card-img-overlay {\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n padding: 1.25rem;\n}\n\n.card-img {\n width: 100%;\n border-radius: calc(0.25rem - 1px);\n}\n\n.card-img-top {\n width: 100%;\n border-top-left-radius: calc(0.25rem - 1px);\n border-top-right-radius: calc(0.25rem - 1px);\n}\n\n.card-img-bottom {\n width: 100%;\n border-bottom-right-radius: calc(0.25rem - 1px);\n border-bottom-left-radius: calc(0.25rem - 1px);\n}\n\n.card-deck {\n display: -ms-flexbox;\n display: flex;\n -ms-flex-direction: column;\n flex-direction: column;\n}\n\n.card-deck .card, .card-deck .member {\n margin-bottom: 15px;\n}\n\n@media (min-width: 576px) {\n .card-deck {\n -ms-flex-flow: row wrap;\n flex-flow: row wrap;\n margin-right: -15px;\n margin-left: -15px;\n }\n .card-deck .card, .card-deck .member {\n display: -ms-flexbox;\n display: flex;\n -ms-flex: 1 0 0%;\n flex: 1 0 0%;\n -ms-flex-direction: column;\n flex-direction: column;\n margin-right: 15px;\n margin-bottom: 0;\n margin-left: 15px;\n }\n}\n.card-group {\n display: -ms-flexbox;\n display: flex;\n -ms-flex-direction: column;\n flex-direction: column;\n}\n\n.card-group > .card, .card-group > .member {\n margin-bottom: 15px;\n}\n\n@media (min-width: 576px) {\n .card-group {\n -ms-flex-flow: row wrap;\n flex-flow: row wrap;\n }\n .card-group > .card, .card-group > .member {\n -ms-flex: 1 0 0%;\n flex: 1 0 0%;\n margin-bottom: 0;\n }\n .card-group > .card + .card, .card-group > .member + .card, .card-group > .card + .member, .card-group > .member + .member {\n margin-left: 0;\n border-left: 0;\n }\n .card-group > .card:first-child, .card-group > .member:first-child {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n }\n .card-group > .card:first-child .card-img-top, .card-group > .member:first-child .card-img-top,\n.card-group > .card:first-child .card-header,\n.card-group > .member:first-child .card-header {\n border-top-right-radius: 0;\n }\n .card-group > .card:first-child .card-img-bottom, .card-group > .member:first-child .card-img-bottom,\n.card-group > .card:first-child .card-footer,\n.card-group > .member:first-child .card-footer {\n border-bottom-right-radius: 0;\n }\n .card-group > .card:last-child, .card-group > .member:last-child {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n }\n .card-group > .card:last-child .card-img-top, .card-group > .member:last-child .card-img-top,\n.card-group > .card:last-child .card-header,\n.card-group > .member:last-child .card-header {\n border-top-left-radius: 0;\n }\n .card-group > .card:last-child .card-img-bottom, .card-group > .member:last-child .card-img-bottom,\n.card-group > .card:last-child .card-footer,\n.card-group > .member:last-child .card-footer {\n border-bottom-left-radius: 0;\n }\n .card-group > .card:only-child, .card-group > .member:only-child {\n border-radius: 0.25rem;\n }\n .card-group > .card:only-child .card-img-top, .card-group > .member:only-child .card-img-top,\n.card-group > .card:only-child .card-header,\n.card-group > .member:only-child .card-header {\n border-top-left-radius: 0.25rem;\n border-top-right-radius: 0.25rem;\n }\n .card-group > .card:only-child .card-img-bottom, .card-group > .member:only-child .card-img-bottom,\n.card-group > .card:only-child .card-footer,\n.card-group > .member:only-child .card-footer {\n border-bottom-right-radius: 0.25rem;\n border-bottom-left-radius: 0.25rem;\n }\n .card-group > .card:not(:first-child):not(:last-child):not(:only-child), .card-group > .member:not(:first-child):not(:last-child):not(:only-child) {\n border-radius: 0;\n }\n .card-group > .card:not(:first-child):not(:last-child):not(:only-child) .card-img-top, .card-group > .member:not(:first-child):not(:last-child):not(:only-child) .card-img-top,\n.card-group > .card:not(:first-child):not(:last-child):not(:only-child) .card-img-bottom,\n.card-group > .member:not(:first-child):not(:last-child):not(:only-child) .card-img-bottom,\n.card-group > .card:not(:first-child):not(:last-child):not(:only-child) .card-header,\n.card-group > .member:not(:first-child):not(:last-child):not(:only-child) .card-header,\n.card-group > .card:not(:first-child):not(:last-child):not(:only-child) .card-footer,\n.card-group > .member:not(:first-child):not(:last-child):not(:only-child) .card-footer {\n border-radius: 0;\n }\n}\n.card-columns .card, .card-columns .member {\n margin-bottom: 0.75rem;\n}\n\n@media (min-width: 576px) {\n .card-columns {\n -webkit-column-count: 3;\n column-count: 3;\n -webkit-column-gap: 1.25rem;\n column-gap: 1.25rem;\n }\n .card-columns .card, .card-columns .member {\n display: inline-block;\n width: 100%;\n }\n}\n.breadcrumb {\n display: -ms-flexbox;\n display: flex;\n -ms-flex-wrap: wrap;\n flex-wrap: wrap;\n padding: 0.75rem 1rem;\n margin-bottom: 1rem;\n list-style: none;\n background-color: #e9ecef;\n border-radius: 0.25rem;\n}\n\n.breadcrumb-item + .breadcrumb-item::before {\n display: inline-block;\n padding-right: 0.5rem;\n padding-left: 0.5rem;\n color: #868e96;\n content: \"/\";\n}\n\n.breadcrumb-item + .breadcrumb-item:hover::before {\n text-decoration: underline;\n}\n\n.breadcrumb-item + .breadcrumb-item:hover::before {\n text-decoration: none;\n}\n\n.breadcrumb-item.active {\n color: #868e96;\n}\n\n.pagination {\n display: -ms-flexbox;\n display: flex;\n padding-left: 0;\n list-style: none;\n border-radius: 0.25rem;\n}\n\n.page-link {\n position: relative;\n display: block;\n padding: 0.5rem 0.75rem;\n margin-left: -1px;\n line-height: 1.25;\n color: #007bff;\n background-color: #fff;\n border: 1px solid #dee2e6;\n}\n\n.page-link:focus, .page-link:hover {\n color: #0056b3;\n text-decoration: none;\n background-color: #e9ecef;\n border-color: #dee2e6;\n}\n\n.page-item:first-child .page-link {\n margin-left: 0;\n border-top-left-radius: 0.25rem;\n border-bottom-left-radius: 0.25rem;\n}\n\n.page-item:last-child .page-link {\n border-top-right-radius: 0.25rem;\n border-bottom-right-radius: 0.25rem;\n}\n\n.page-item.active .page-link {\n z-index: 1;\n color: #fff;\n background-color: #007bff;\n border-color: #007bff;\n}\n\n.page-item.disabled .page-link {\n color: #868e96;\n pointer-events: none;\n background-color: #fff;\n border-color: #dee2e6;\n}\n\n.pagination-lg .page-link {\n padding: 0.75rem 1.5rem;\n font-size: 1.25rem;\n line-height: 1.5;\n}\n\n.pagination-lg .page-item:first-child .page-link {\n border-top-left-radius: 0.3rem;\n border-bottom-left-radius: 0.3rem;\n}\n\n.pagination-lg .page-item:last-child .page-link {\n border-top-right-radius: 0.3rem;\n border-bottom-right-radius: 0.3rem;\n}\n\n.pagination-sm .page-link {\n padding: 0.25rem 0.5rem;\n font-size: 0.875rem;\n line-height: 1.5;\n}\n\n.pagination-sm .page-item:first-child .page-link {\n border-top-left-radius: 0.2rem;\n border-bottom-left-radius: 0.2rem;\n}\n\n.pagination-sm .page-item:last-child .page-link {\n border-top-right-radius: 0.2rem;\n border-bottom-right-radius: 0.2rem;\n}\n\n.badge, .legacy, .beta {\n display: inline-block;\n padding: 0.25em 0.4em;\n font-size: 75%;\n font-weight: 700;\n line-height: 1;\n text-align: center;\n white-space: nowrap;\n vertical-align: baseline;\n border-radius: 0.25rem;\n}\n\n.badge:empty, .legacy:empty, .beta:empty {\n display: none;\n}\n\n.btn .badge, .member-runner-link .badge, .btn .legacy, .member-runner-link .legacy, .btn .beta, .member-runner-link .beta {\n position: relative;\n top: -1px;\n}\n\n.badge-pill, .legacy, .beta {\n padding-right: 0.6em;\n padding-left: 0.6em;\n border-radius: 10rem;\n}\n\n.badge-primary {\n color: #fff;\n background-color: #007bff;\n}\n\n.badge-primary[href]:focus, .badge-primary[href]:hover {\n color: #fff;\n text-decoration: none;\n background-color: #0062cc;\n}\n\n.badge-secondary {\n color: #fff;\n background-color: #868e96;\n}\n\n.badge-secondary[href]:focus, .badge-secondary[href]:hover {\n color: #fff;\n text-decoration: none;\n background-color: #6c757d;\n}\n\n.badge-success {\n color: #fff;\n background-color: #28a745;\n}\n\n.badge-success[href]:focus, .badge-success[href]:hover {\n color: #fff;\n text-decoration: none;\n background-color: #1e7e34;\n}\n\n.badge-info, .legacy, .beta {\n color: #fff;\n background-color: #17a2b8;\n}\n\n.badge-info[href]:focus, [href].legacy:focus, [href].beta:focus, .badge-info[href]:hover, [href].legacy:hover, [href].beta:hover {\n color: #fff;\n text-decoration: none;\n background-color: #117a8b;\n}\n\n.badge-warning {\n color: #212529;\n background-color: #ffc107;\n}\n\n.badge-warning[href]:focus, .badge-warning[href]:hover {\n color: #212529;\n text-decoration: none;\n background-color: #d39e00;\n}\n\n.badge-danger {\n color: #fff;\n background-color: #dc3545;\n}\n\n.badge-danger[href]:focus, .badge-danger[href]:hover {\n color: #fff;\n text-decoration: none;\n background-color: #bd2130;\n}\n\n.badge-light {\n color: #212529;\n background-color: #f8f9fa;\n}\n\n.badge-light[href]:focus, .badge-light[href]:hover {\n color: #212529;\n text-decoration: none;\n background-color: #dae0e5;\n}\n\n.badge-dark {\n color: #fff;\n background-color: #343a40;\n}\n\n.badge-dark[href]:focus, .badge-dark[href]:hover {\n color: #fff;\n text-decoration: none;\n background-color: #1d2124;\n}\n\n.jumbotron {\n padding: 2rem 1rem;\n margin-bottom: 2rem;\n background-color: #e9ecef;\n border-radius: 0.3rem;\n}\n\n@media (min-width: 576px) {\n .jumbotron {\n padding: 4rem 2rem;\n }\n}\n.jumbotron-fluid {\n padding-right: 0;\n padding-left: 0;\n border-radius: 0;\n}\n\n.alert {\n position: relative;\n padding: 0.75rem 1.25rem;\n margin-bottom: 1rem;\n border: 1px solid transparent;\n border-radius: 0.25rem;\n}\n\n.alert-heading {\n color: inherit;\n}\n\n.alert-link {\n font-weight: 700;\n}\n\n.alert-dismissible {\n padding-right: 4rem;\n}\n\n.alert-dismissible .close {\n position: absolute;\n top: 0;\n right: 0;\n padding: 0.75rem 1.25rem;\n color: inherit;\n}\n\n.alert-primary {\n color: #004085;\n background-color: #cce5ff;\n border-color: #b8daff;\n}\n\n.alert-primary hr {\n border-top-color: #9fcdff;\n}\n\n.alert-primary .alert-link {\n color: #002752;\n}\n\n.alert-secondary {\n color: #464a4e;\n background-color: #e7e8ea;\n border-color: #dddfe2;\n}\n\n.alert-secondary hr {\n border-top-color: #cfd2d6;\n}\n\n.alert-secondary .alert-link {\n color: #2e3133;\n}\n\n.alert-success {\n color: #155724;\n background-color: #d4edda;\n border-color: #c3e6cb;\n}\n\n.alert-success hr {\n border-top-color: #b1dfbb;\n}\n\n.alert-success .alert-link {\n color: #0b2e13;\n}\n\n.alert-info {\n color: #0c5460;\n background-color: #d1ecf1;\n border-color: #bee5eb;\n}\n\n.alert-info hr {\n border-top-color: #abdde5;\n}\n\n.alert-info .alert-link {\n color: #062c33;\n}\n\n.alert-warning {\n color: #856404;\n background-color: #fff3cd;\n border-color: #ffeeba;\n}\n\n.alert-warning hr {\n border-top-color: #ffe8a1;\n}\n\n.alert-warning .alert-link {\n color: #533f03;\n}\n\n.alert-danger {\n color: #721c24;\n background-color: #f8d7da;\n border-color: #f5c6cb;\n}\n\n.alert-danger hr {\n border-top-color: #f1b0b7;\n}\n\n.alert-danger .alert-link {\n color: #491217;\n}\n\n.alert-light {\n color: #818182;\n background-color: #fefefe;\n border-color: #fdfdfe;\n}\n\n.alert-light hr {\n border-top-color: #ececf6;\n}\n\n.alert-light .alert-link {\n color: #686868;\n}\n\n.alert-dark {\n color: #1b1e21;\n background-color: #d6d8d9;\n border-color: #c6c8ca;\n}\n\n.alert-dark hr {\n border-top-color: #b9bbbe;\n}\n\n.alert-dark .alert-link {\n color: #040505;\n}\n\n@-webkit-keyframes progress-bar-stripes {\n from {\n background-position: 1rem 0;\n }\n to {\n background-position: 0 0;\n }\n}\n@keyframes progress-bar-stripes {\n from {\n background-position: 1rem 0;\n }\n to {\n background-position: 0 0;\n }\n}\n.progress {\n display: -ms-flexbox;\n display: flex;\n height: 1rem;\n overflow: hidden;\n font-size: 0.75rem;\n background-color: #e9ecef;\n border-radius: 0.25rem;\n}\n\n.progress-bar {\n display: -ms-flexbox;\n display: flex;\n -ms-flex-direction: column;\n flex-direction: column;\n -ms-flex-pack: center;\n justify-content: center;\n color: #fff;\n text-align: center;\n background-color: #007bff;\n transition: width 0.6s ease;\n}\n\n.progress-bar-striped {\n background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-size: 1rem 1rem;\n}\n\n.progress-bar-animated {\n -webkit-animation: progress-bar-stripes 1s linear infinite;\n animation: progress-bar-stripes 1s linear infinite;\n}\n\n.media {\n display: -ms-flexbox;\n display: flex;\n -ms-flex-align: start;\n align-items: flex-start;\n}\n\n.media-body {\n -ms-flex: 1;\n flex: 1;\n}\n\n.list-group {\n display: -ms-flexbox;\n display: flex;\n -ms-flex-direction: column;\n flex-direction: column;\n padding-left: 0;\n margin-bottom: 0;\n}\n\n.list-group-item-action {\n width: 100%;\n color: #495057;\n text-align: inherit;\n}\n\n.list-group-item-action:focus, .list-group-item-action:hover {\n color: #495057;\n text-decoration: none;\n background-color: #f8f9fa;\n}\n\n.list-group-item-action:active {\n color: #212529;\n background-color: #e9ecef;\n}\n\n.list-group-item {\n position: relative;\n display: block;\n padding: 0.75rem 1.25rem;\n margin-bottom: -1px;\n background-color: #fff;\n border: 1px solid rgba(0, 0, 0, 0.125);\n}\n\n.list-group-item:first-child {\n border-top-left-radius: 0.25rem;\n border-top-right-radius: 0.25rem;\n}\n\n.list-group-item:last-child {\n margin-bottom: 0;\n border-bottom-right-radius: 0.25rem;\n border-bottom-left-radius: 0.25rem;\n}\n\n.list-group-item:focus, .list-group-item:hover {\n text-decoration: none;\n}\n\n.list-group-item.disabled, .list-group-item:disabled {\n color: #868e96;\n background-color: #fff;\n}\n\n.list-group-item.active {\n z-index: 1;\n color: #fff;\n background-color: #007bff;\n border-color: #007bff;\n}\n\n.list-group-flush .list-group-item {\n border-right: 0;\n border-left: 0;\n border-radius: 0;\n}\n\n.list-group-flush:first-child .list-group-item:first-child {\n border-top: 0;\n}\n\n.list-group-flush:last-child .list-group-item:last-child {\n border-bottom: 0;\n}\n\n.list-group-item-primary {\n color: #004085;\n background-color: #b8daff;\n}\n\na.list-group-item-primary,\nbutton.list-group-item-primary {\n color: #004085;\n}\n\na.list-group-item-primary:focus, a.list-group-item-primary:hover,\nbutton.list-group-item-primary:focus,\nbutton.list-group-item-primary:hover {\n color: #004085;\n background-color: #9fcdff;\n}\n\na.list-group-item-primary.active,\nbutton.list-group-item-primary.active {\n color: #fff;\n background-color: #004085;\n border-color: #004085;\n}\n\n.list-group-item-secondary {\n color: #464a4e;\n background-color: #dddfe2;\n}\n\na.list-group-item-secondary,\nbutton.list-group-item-secondary {\n color: #464a4e;\n}\n\na.list-group-item-secondary:focus, a.list-group-item-secondary:hover,\nbutton.list-group-item-secondary:focus,\nbutton.list-group-item-secondary:hover {\n color: #464a4e;\n background-color: #cfd2d6;\n}\n\na.list-group-item-secondary.active,\nbutton.list-group-item-secondary.active {\n color: #fff;\n background-color: #464a4e;\n border-color: #464a4e;\n}\n\n.list-group-item-success {\n color: #155724;\n background-color: #c3e6cb;\n}\n\na.list-group-item-success,\nbutton.list-group-item-success {\n color: #155724;\n}\n\na.list-group-item-success:focus, a.list-group-item-success:hover,\nbutton.list-group-item-success:focus,\nbutton.list-group-item-success:hover {\n color: #155724;\n background-color: #b1dfbb;\n}\n\na.list-group-item-success.active,\nbutton.list-group-item-success.active {\n color: #fff;\n background-color: #155724;\n border-color: #155724;\n}\n\n.list-group-item-info {\n color: #0c5460;\n background-color: #bee5eb;\n}\n\na.list-group-item-info,\nbutton.list-group-item-info {\n color: #0c5460;\n}\n\na.list-group-item-info:focus, a.list-group-item-info:hover,\nbutton.list-group-item-info:focus,\nbutton.list-group-item-info:hover {\n color: #0c5460;\n background-color: #abdde5;\n}\n\na.list-group-item-info.active,\nbutton.list-group-item-info.active {\n color: #fff;\n background-color: #0c5460;\n border-color: #0c5460;\n}\n\n.list-group-item-warning {\n color: #856404;\n background-color: #ffeeba;\n}\n\na.list-group-item-warning,\nbutton.list-group-item-warning {\n color: #856404;\n}\n\na.list-group-item-warning:focus, a.list-group-item-warning:hover,\nbutton.list-group-item-warning:focus,\nbutton.list-group-item-warning:hover {\n color: #856404;\n background-color: #ffe8a1;\n}\n\na.list-group-item-warning.active,\nbutton.list-group-item-warning.active {\n color: #fff;\n background-color: #856404;\n border-color: #856404;\n}\n\n.list-group-item-danger {\n color: #721c24;\n background-color: #f5c6cb;\n}\n\na.list-group-item-danger,\nbutton.list-group-item-danger {\n color: #721c24;\n}\n\na.list-group-item-danger:focus, a.list-group-item-danger:hover,\nbutton.list-group-item-danger:focus,\nbutton.list-group-item-danger:hover {\n color: #721c24;\n background-color: #f1b0b7;\n}\n\na.list-group-item-danger.active,\nbutton.list-group-item-danger.active {\n color: #fff;\n background-color: #721c24;\n border-color: #721c24;\n}\n\n.list-group-item-light {\n color: #818182;\n background-color: #fdfdfe;\n}\n\na.list-group-item-light,\nbutton.list-group-item-light {\n color: #818182;\n}\n\na.list-group-item-light:focus, a.list-group-item-light:hover,\nbutton.list-group-item-light:focus,\nbutton.list-group-item-light:hover {\n color: #818182;\n background-color: #ececf6;\n}\n\na.list-group-item-light.active,\nbutton.list-group-item-light.active {\n color: #fff;\n background-color: #818182;\n border-color: #818182;\n}\n\n.list-group-item-dark {\n color: #1b1e21;\n background-color: #c6c8ca;\n}\n\na.list-group-item-dark,\nbutton.list-group-item-dark {\n color: #1b1e21;\n}\n\na.list-group-item-dark:focus, a.list-group-item-dark:hover,\nbutton.list-group-item-dark:focus,\nbutton.list-group-item-dark:hover {\n color: #1b1e21;\n background-color: #b9bbbe;\n}\n\na.list-group-item-dark.active,\nbutton.list-group-item-dark.active {\n color: #fff;\n background-color: #1b1e21;\n border-color: #1b1e21;\n}\n\n.close {\n float: right;\n font-size: 1.5rem;\n font-weight: 700;\n line-height: 1;\n color: #000;\n text-shadow: 0 1px 0 #fff;\n opacity: 0.5;\n}\n\n.close:focus, .close:hover {\n color: #000;\n text-decoration: none;\n opacity: 0.75;\n}\n\nbutton.close {\n padding: 0;\n background-color: transparent;\n border: 0;\n -webkit-appearance: none;\n}\n\n.modal-open {\n overflow: hidden;\n}\n\n.modal {\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: 1050;\n display: none;\n overflow: hidden;\n outline: 0;\n}\n\n.modal-open .modal {\n overflow-x: hidden;\n overflow-y: auto;\n}\n\n.modal-dialog {\n position: relative;\n width: auto;\n margin: 0.5rem;\n pointer-events: none;\n}\n\n.modal.fade .modal-dialog {\n transition: -webkit-transform 0.3s ease-out;\n transition: transform 0.3s ease-out;\n transition: transform 0.3s ease-out, -webkit-transform 0.3s ease-out;\n -webkit-transform: translate(0, -25%);\n transform: translate(0, -25%);\n}\n\n.modal.show .modal-dialog {\n -webkit-transform: translate(0, 0);\n transform: translate(0, 0);\n}\n\n.modal-dialog-centered {\n display: -ms-flexbox;\n display: flex;\n -ms-flex-align: center;\n align-items: center;\n min-height: calc(100% - 1rem);\n}\n\n.modal-content {\n position: relative;\n display: -ms-flexbox;\n display: flex;\n -ms-flex-direction: column;\n flex-direction: column;\n width: 100%;\n pointer-events: auto;\n background-color: #fff;\n background-clip: padding-box;\n border: 1px solid rgba(0, 0, 0, 0.2);\n border-radius: 0.3rem;\n outline: 0;\n}\n\n.modal-backdrop {\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: 1040;\n background-color: #000;\n}\n\n.modal-backdrop.fade {\n opacity: 0;\n}\n\n.modal-backdrop.show {\n opacity: 0.5;\n}\n\n.modal-header {\n display: -ms-flexbox;\n display: flex;\n -ms-flex-align: start;\n align-items: flex-start;\n -ms-flex-pack: justify;\n justify-content: space-between;\n padding: 1rem;\n border-bottom: 1px solid #e9ecef;\n border-top-left-radius: 0.3rem;\n border-top-right-radius: 0.3rem;\n}\n\n.modal-header .close {\n padding: 1rem;\n margin: -1rem -1rem -1rem auto;\n}\n\n.modal-title {\n margin-bottom: 0;\n line-height: 1.5;\n}\n\n.modal-body {\n position: relative;\n -ms-flex: 1 1 auto;\n flex: 1 1 auto;\n padding: 1rem;\n}\n\n.modal-footer {\n display: -ms-flexbox;\n display: flex;\n -ms-flex-align: center;\n align-items: center;\n -ms-flex-pack: end;\n justify-content: flex-end;\n padding: 1rem;\n border-top: 1px solid #e9ecef;\n}\n\n.modal-footer > :not(:first-child) {\n margin-left: 0.25rem;\n}\n\n.modal-footer > :not(:last-child) {\n margin-right: 0.25rem;\n}\n\n.modal-scrollbar-measure {\n position: absolute;\n top: -9999px;\n width: 50px;\n height: 50px;\n overflow: scroll;\n}\n\n@media (min-width: 576px) {\n .modal-dialog {\n max-width: 500px;\n margin: 1.75rem auto;\n }\n .modal-dialog-centered {\n min-height: calc(100% - 3.5rem);\n }\n .modal-sm {\n max-width: 300px;\n }\n}\n@media (min-width: 992px) {\n .modal-lg {\n max-width: 800px;\n }\n}\n.tooltip {\n position: absolute;\n z-index: 1070;\n display: block;\n margin: 0;\n font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";\n font-style: normal;\n font-weight: 400;\n line-height: 1.5;\n text-align: left;\n text-align: start;\n text-decoration: none;\n text-shadow: none;\n text-transform: none;\n letter-spacing: normal;\n word-break: normal;\n word-spacing: normal;\n white-space: normal;\n line-break: auto;\n font-size: 0.875rem;\n word-wrap: break-word;\n opacity: 0;\n}\n\n.tooltip.show {\n opacity: 0.9;\n}\n\n.tooltip .arrow {\n position: absolute;\n display: block;\n width: 0.4rem;\n height: 0.4rem;\n}\n\n.tooltip .arrow::before {\n position: absolute;\n border-color: transparent;\n border-style: solid;\n}\n\n.tooltip.bs-tooltip-top, .tooltip.bs-tooltip-auto[x-placement^=top] {\n padding: 0.4rem 0;\n}\n\n.tooltip.bs-tooltip-top .arrow, .tooltip.bs-tooltip-auto[x-placement^=top] .arrow {\n bottom: 0;\n}\n\n.tooltip.bs-tooltip-top .arrow::before, .tooltip.bs-tooltip-auto[x-placement^=top] .arrow::before {\n margin-left: -0.4rem;\n content: \"\";\n border-width: 0.4rem 0.4rem 0;\n border-top-color: #000;\n}\n\n.tooltip.bs-tooltip-right, .tooltip.bs-tooltip-auto[x-placement^=right] {\n padding: 0 0.4rem;\n}\n\n.tooltip.bs-tooltip-right .arrow, .tooltip.bs-tooltip-auto[x-placement^=right] .arrow {\n left: 0;\n}\n\n.tooltip.bs-tooltip-right .arrow::before, .tooltip.bs-tooltip-auto[x-placement^=right] .arrow::before {\n margin-top: -0.4rem;\n content: \"\";\n border-width: 0.4rem 0.4rem 0.4rem 0;\n border-right-color: #000;\n}\n\n.tooltip.bs-tooltip-bottom, .tooltip.bs-tooltip-auto[x-placement^=bottom] {\n padding: 0.4rem 0;\n}\n\n.tooltip.bs-tooltip-bottom .arrow, .tooltip.bs-tooltip-auto[x-placement^=bottom] .arrow {\n top: 0;\n}\n\n.tooltip.bs-tooltip-bottom .arrow::before, .tooltip.bs-tooltip-auto[x-placement^=bottom] .arrow::before {\n margin-left: -0.4rem;\n content: \"\";\n border-width: 0 0.4rem 0.4rem;\n border-bottom-color: #000;\n}\n\n.tooltip.bs-tooltip-left, .tooltip.bs-tooltip-auto[x-placement^=left] {\n padding: 0 0.4rem;\n}\n\n.tooltip.bs-tooltip-left .arrow, .tooltip.bs-tooltip-auto[x-placement^=left] .arrow {\n right: 0;\n}\n\n.tooltip.bs-tooltip-left .arrow::before, .tooltip.bs-tooltip-auto[x-placement^=left] .arrow::before {\n right: 0;\n margin-top: -0.4rem;\n content: \"\";\n border-width: 0.4rem 0 0.4rem 0.4rem;\n border-left-color: #000;\n}\n\n.tooltip-inner {\n max-width: 200px;\n padding: 0.25rem 0.5rem;\n color: #fff;\n text-align: center;\n background-color: #000;\n border-radius: 0.25rem;\n}\n\n.popover {\n position: absolute;\n top: 0;\n left: 0;\n z-index: 1060;\n display: block;\n max-width: 276px;\n font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";\n font-style: normal;\n font-weight: 400;\n line-height: 1.5;\n text-align: left;\n text-align: start;\n text-decoration: none;\n text-shadow: none;\n text-transform: none;\n letter-spacing: normal;\n word-break: normal;\n word-spacing: normal;\n white-space: normal;\n line-break: auto;\n font-size: 0.875rem;\n word-wrap: break-word;\n background-color: #fff;\n background-clip: padding-box;\n border: 1px solid rgba(0, 0, 0, 0.2);\n border-radius: 0.3rem;\n}\n\n.popover .arrow {\n position: absolute;\n display: block;\n width: 0.8rem;\n height: 0.4rem;\n}\n\n.popover .arrow::before,\n.popover .arrow::after {\n position: absolute;\n display: block;\n border-color: transparent;\n border-style: solid;\n}\n\n.popover .arrow::before {\n content: \"\";\n border-width: 0.8rem;\n}\n\n.popover .arrow::after {\n content: \"\";\n border-width: 0.8rem;\n}\n\n.popover.bs-popover-top, .popover.bs-popover-auto[x-placement^=top] {\n margin-bottom: 0.8rem;\n}\n\n.popover.bs-popover-top .arrow, .popover.bs-popover-auto[x-placement^=top] .arrow {\n bottom: 0;\n}\n\n.popover.bs-popover-top .arrow::before, .popover.bs-popover-auto[x-placement^=top] .arrow::before,\n.popover.bs-popover-top .arrow::after, .popover.bs-popover-auto[x-placement^=top] .arrow::after {\n border-bottom-width: 0;\n}\n\n.popover.bs-popover-top .arrow::before, .popover.bs-popover-auto[x-placement^=top] .arrow::before {\n bottom: -0.8rem;\n margin-left: -0.8rem;\n border-top-color: rgba(0, 0, 0, 0.25);\n}\n\n.popover.bs-popover-top .arrow::after, .popover.bs-popover-auto[x-placement^=top] .arrow::after {\n bottom: calc((0.8rem - 1px) * -1);\n margin-left: -0.8rem;\n border-top-color: #fff;\n}\n\n.popover.bs-popover-right, .popover.bs-popover-auto[x-placement^=right] {\n margin-left: 0.8rem;\n}\n\n.popover.bs-popover-right .arrow, .popover.bs-popover-auto[x-placement^=right] .arrow {\n left: 0;\n}\n\n.popover.bs-popover-right .arrow::before, .popover.bs-popover-auto[x-placement^=right] .arrow::before,\n.popover.bs-popover-right .arrow::after, .popover.bs-popover-auto[x-placement^=right] .arrow::after {\n margin-top: -0.8rem;\n border-left-width: 0;\n}\n\n.popover.bs-popover-right .arrow::before, .popover.bs-popover-auto[x-placement^=right] .arrow::before {\n left: -0.8rem;\n border-right-color: rgba(0, 0, 0, 0.25);\n}\n\n.popover.bs-popover-right .arrow::after, .popover.bs-popover-auto[x-placement^=right] .arrow::after {\n left: calc((0.8rem - 1px) * -1);\n border-right-color: #fff;\n}\n\n.popover.bs-popover-bottom, .popover.bs-popover-auto[x-placement^=bottom] {\n margin-top: 0.8rem;\n}\n\n.popover.bs-popover-bottom .arrow, .popover.bs-popover-auto[x-placement^=bottom] .arrow {\n top: 0;\n}\n\n.popover.bs-popover-bottom .arrow::before, .popover.bs-popover-auto[x-placement^=bottom] .arrow::before,\n.popover.bs-popover-bottom .arrow::after, .popover.bs-popover-auto[x-placement^=bottom] .arrow::after {\n margin-left: -0.8rem;\n border-top-width: 0;\n}\n\n.popover.bs-popover-bottom .arrow::before, .popover.bs-popover-auto[x-placement^=bottom] .arrow::before {\n top: -0.8rem;\n border-bottom-color: rgba(0, 0, 0, 0.25);\n}\n\n.popover.bs-popover-bottom .arrow::after, .popover.bs-popover-auto[x-placement^=bottom] .arrow::after {\n top: calc((0.8rem - 1px) * -1);\n border-bottom-color: #fff;\n}\n\n.popover.bs-popover-bottom .popover-header::before, .popover.bs-popover-auto[x-placement^=bottom] .popover-header::before {\n position: absolute;\n top: 0;\n left: 50%;\n display: block;\n width: 20px;\n margin-left: -10px;\n content: \"\";\n border-bottom: 1px solid #f7f7f7;\n}\n\n.popover.bs-popover-left, .popover.bs-popover-auto[x-placement^=left] {\n margin-right: 0.8rem;\n}\n\n.popover.bs-popover-left .arrow, .popover.bs-popover-auto[x-placement^=left] .arrow {\n right: 0;\n}\n\n.popover.bs-popover-left .arrow::before, .popover.bs-popover-auto[x-placement^=left] .arrow::before,\n.popover.bs-popover-left .arrow::after, .popover.bs-popover-auto[x-placement^=left] .arrow::after {\n margin-top: -0.8rem;\n border-right-width: 0;\n}\n\n.popover.bs-popover-left .arrow::before, .popover.bs-popover-auto[x-placement^=left] .arrow::before {\n right: -0.8rem;\n border-left-color: rgba(0, 0, 0, 0.25);\n}\n\n.popover.bs-popover-left .arrow::after, .popover.bs-popover-auto[x-placement^=left] .arrow::after {\n right: calc((0.8rem - 1px) * -1);\n border-left-color: #fff;\n}\n\n.popover-header {\n padding: 0.5rem 0.75rem;\n margin-bottom: 0;\n font-size: 1rem;\n color: inherit;\n background-color: #f7f7f7;\n border-bottom: 1px solid #ebebeb;\n border-top-left-radius: calc(0.3rem - 1px);\n border-top-right-radius: calc(0.3rem - 1px);\n}\n\n.popover-header:empty {\n display: none;\n}\n\n.popover-body {\n padding: 0.5rem 0.75rem;\n color: #212529;\n}\n\n.carousel {\n position: relative;\n}\n\n.carousel-inner {\n position: relative;\n width: 100%;\n overflow: hidden;\n}\n\n.carousel-item {\n position: relative;\n display: none;\n -ms-flex-align: center;\n align-items: center;\n width: 100%;\n transition: -webkit-transform 0.6s ease;\n transition: transform 0.6s ease;\n transition: transform 0.6s ease, -webkit-transform 0.6s ease;\n -webkit-backface-visibility: hidden;\n backface-visibility: hidden;\n -webkit-perspective: 1000px;\n perspective: 1000px;\n}\n\n.carousel-item.active,\n.carousel-item-next,\n.carousel-item-prev {\n display: block;\n}\n\n.carousel-item-next,\n.carousel-item-prev {\n position: absolute;\n top: 0;\n}\n\n.carousel-item-next.carousel-item-left,\n.carousel-item-prev.carousel-item-right {\n -webkit-transform: translateX(0);\n transform: translateX(0);\n}\n\n@supports (-webkit-transform-style: preserve-3d) or (transform-style: preserve-3d) {\n .carousel-item-next.carousel-item-left,\n.carousel-item-prev.carousel-item-right {\n -webkit-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n }\n}\n.carousel-item-next,\n.active.carousel-item-right {\n -webkit-transform: translateX(100%);\n transform: translateX(100%);\n}\n\n@supports (-webkit-transform-style: preserve-3d) or (transform-style: preserve-3d) {\n .carousel-item-next,\n.active.carousel-item-right {\n -webkit-transform: translate3d(100%, 0, 0);\n transform: translate3d(100%, 0, 0);\n }\n}\n.carousel-item-prev,\n.active.carousel-item-left {\n -webkit-transform: translateX(-100%);\n transform: translateX(-100%);\n}\n\n@supports (-webkit-transform-style: preserve-3d) or (transform-style: preserve-3d) {\n .carousel-item-prev,\n.active.carousel-item-left {\n -webkit-transform: translate3d(-100%, 0, 0);\n transform: translate3d(-100%, 0, 0);\n }\n}\n.carousel-control-prev,\n.carousel-control-next {\n position: absolute;\n top: 0;\n bottom: 0;\n display: -ms-flexbox;\n display: flex;\n -ms-flex-align: center;\n align-items: center;\n -ms-flex-pack: center;\n justify-content: center;\n width: 15%;\n color: #fff;\n text-align: center;\n opacity: 0.5;\n}\n\n.carousel-control-prev:focus, .carousel-control-prev:hover,\n.carousel-control-next:focus,\n.carousel-control-next:hover {\n color: #fff;\n text-decoration: none;\n outline: 0;\n opacity: 0.9;\n}\n\n.carousel-control-prev {\n left: 0;\n}\n\n.carousel-control-next {\n right: 0;\n}\n\n.carousel-control-prev-icon,\n.carousel-control-next-icon {\n display: inline-block;\n width: 20px;\n height: 20px;\n background: transparent no-repeat center center;\n background-size: 100% 100%;\n}\n\n.carousel-control-prev-icon {\n background-image: url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 8 8'%3E%3Cpath d='M5.25 0l-4 4 4 4 1.5-1.5-2.5-2.5 2.5-2.5-1.5-1.5z'/%3E%3C/svg%3E\");\n}\n\n.carousel-control-next-icon {\n background-image: url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 8 8'%3E%3Cpath d='M2.75 0l-1.5 1.5 2.5 2.5-2.5 2.5 1.5 1.5 4-4-4-4z'/%3E%3C/svg%3E\");\n}\n\n.carousel-indicators {\n position: absolute;\n right: 0;\n bottom: 10px;\n left: 0;\n z-index: 15;\n display: -ms-flexbox;\n display: flex;\n -ms-flex-pack: center;\n justify-content: center;\n padding-left: 0;\n margin-right: 15%;\n margin-left: 15%;\n list-style: none;\n}\n\n.carousel-indicators li {\n position: relative;\n -ms-flex: 0 1 auto;\n flex: 0 1 auto;\n width: 30px;\n height: 3px;\n margin-right: 3px;\n margin-left: 3px;\n text-indent: -999px;\n background-color: rgba(255, 255, 255, 0.5);\n}\n\n.carousel-indicators li::before {\n position: absolute;\n top: -10px;\n left: 0;\n display: inline-block;\n width: 100%;\n height: 10px;\n content: \"\";\n}\n\n.carousel-indicators li::after {\n position: absolute;\n bottom: -10px;\n left: 0;\n display: inline-block;\n width: 100%;\n height: 10px;\n content: \"\";\n}\n\n.carousel-indicators .active {\n background-color: #fff;\n}\n\n.carousel-caption {\n position: absolute;\n right: 15%;\n bottom: 20px;\n left: 15%;\n z-index: 10;\n padding-top: 20px;\n padding-bottom: 20px;\n color: #fff;\n text-align: center;\n}\n\n.align-baseline {\n vertical-align: baseline !important;\n}\n\n.align-top {\n vertical-align: top !important;\n}\n\n.align-middle {\n vertical-align: middle !important;\n}\n\n.align-bottom {\n vertical-align: bottom !important;\n}\n\n.align-text-bottom {\n vertical-align: text-bottom !important;\n}\n\n.align-text-top {\n vertical-align: text-top !important;\n}\n\n.bg-primary {\n background-color: #007bff !important;\n}\n\na.bg-primary:focus, a.bg-primary:hover {\n background-color: #0062cc !important;\n}\n\n.bg-secondary {\n background-color: #868e96 !important;\n}\n\na.bg-secondary:focus, a.bg-secondary:hover {\n background-color: #6c757d !important;\n}\n\n.bg-success {\n background-color: #28a745 !important;\n}\n\na.bg-success:focus, a.bg-success:hover {\n background-color: #1e7e34 !important;\n}\n\n.bg-info {\n background-color: #17a2b8 !important;\n}\n\na.bg-info:focus, a.bg-info:hover {\n background-color: #117a8b !important;\n}\n\n.bg-warning {\n background-color: #ffc107 !important;\n}\n\na.bg-warning:focus, a.bg-warning:hover {\n background-color: #d39e00 !important;\n}\n\n.bg-danger {\n background-color: #dc3545 !important;\n}\n\na.bg-danger:focus, a.bg-danger:hover {\n background-color: #bd2130 !important;\n}\n\n.bg-light, blockquote {\n background-color: #f8f9fa !important;\n}\n\na.bg-light:focus, a.bg-light:hover {\n background-color: #dae0e5 !important;\n}\n\n.bg-dark {\n background-color: #343a40 !important;\n}\n\na.bg-dark:focus, a.bg-dark:hover {\n background-color: #1d2124 !important;\n}\n\n.bg-white {\n background-color: #fff !important;\n}\n\n.bg-transparent {\n background-color: transparent !important;\n}\n\n.border {\n border: 1px solid #e9ecef !important;\n}\n\n.border-0 {\n border: 0 !important;\n}\n\n.border-top-0 {\n border-top: 0 !important;\n}\n\n.border-right-0 {\n border-right: 0 !important;\n}\n\n.border-bottom-0 {\n border-bottom: 0 !important;\n}\n\n.border-left-0 {\n border-left: 0 !important;\n}\n\n.border-primary {\n border-color: #007bff !important;\n}\n\n.border-secondary {\n border-color: #868e96 !important;\n}\n\n.border-success {\n border-color: #28a745 !important;\n}\n\n.border-info {\n border-color: #17a2b8 !important;\n}\n\n.border-warning {\n border-color: #ffc107 !important;\n}\n\n.border-danger {\n border-color: #dc3545 !important;\n}\n\n.border-light {\n border-color: #f8f9fa !important;\n}\n\n.border-dark {\n border-color: #343a40 !important;\n}\n\n.border-white {\n border-color: #fff !important;\n}\n\n.rounded {\n border-radius: 0.25rem !important;\n}\n\n.rounded-top {\n border-top-left-radius: 0.25rem !important;\n border-top-right-radius: 0.25rem !important;\n}\n\n.rounded-right {\n border-top-right-radius: 0.25rem !important;\n border-bottom-right-radius: 0.25rem !important;\n}\n\n.rounded-bottom {\n border-bottom-right-radius: 0.25rem !important;\n border-bottom-left-radius: 0.25rem !important;\n}\n\n.rounded-left {\n border-top-left-radius: 0.25rem !important;\n border-bottom-left-radius: 0.25rem !important;\n}\n\n.rounded-circle {\n border-radius: 50% !important;\n}\n\n.rounded-0 {\n border-radius: 0 !important;\n}\n\n.clearfix::after {\n display: block;\n clear: both;\n content: \"\";\n}\n\n.d-none {\n display: none !important;\n}\n\n.d-inline {\n display: inline !important;\n}\n\n.d-inline-block {\n display: inline-block !important;\n}\n\n.d-block {\n display: block !important;\n}\n\n.d-table {\n display: table !important;\n}\n\n.d-table-row {\n display: table-row !important;\n}\n\n.d-table-cell {\n display: table-cell !important;\n}\n\n.d-flex {\n display: -ms-flexbox !important;\n display: flex !important;\n}\n\n.d-inline-flex {\n display: -ms-inline-flexbox !important;\n display: inline-flex !important;\n}\n\n@media (min-width: 576px) {\n .d-sm-none {\n display: none !important;\n }\n .d-sm-inline {\n display: inline !important;\n }\n .d-sm-inline-block {\n display: inline-block !important;\n }\n .d-sm-block {\n display: block !important;\n }\n .d-sm-table {\n display: table !important;\n }\n .d-sm-table-row {\n display: table-row !important;\n }\n .d-sm-table-cell {\n display: table-cell !important;\n }\n .d-sm-flex {\n display: -ms-flexbox !important;\n display: flex !important;\n }\n .d-sm-inline-flex {\n display: -ms-inline-flexbox !important;\n display: inline-flex !important;\n }\n}\n@media (min-width: 768px) {\n .d-md-none {\n display: none !important;\n }\n .d-md-inline {\n display: inline !important;\n }\n .d-md-inline-block {\n display: inline-block !important;\n }\n .d-md-block {\n display: block !important;\n }\n .d-md-table {\n display: table !important;\n }\n .d-md-table-row {\n display: table-row !important;\n }\n .d-md-table-cell {\n display: table-cell !important;\n }\n .d-md-flex {\n display: -ms-flexbox !important;\n display: flex !important;\n }\n .d-md-inline-flex {\n display: -ms-inline-flexbox !important;\n display: inline-flex !important;\n }\n}\n@media (min-width: 992px) {\n .d-lg-none {\n display: none !important;\n }\n .d-lg-inline {\n display: inline !important;\n }\n .d-lg-inline-block {\n display: inline-block !important;\n }\n .d-lg-block {\n display: block !important;\n }\n .d-lg-table {\n display: table !important;\n }\n .d-lg-table-row {\n display: table-row !important;\n }\n .d-lg-table-cell {\n display: table-cell !important;\n }\n .d-lg-flex {\n display: -ms-flexbox !important;\n display: flex !important;\n }\n .d-lg-inline-flex {\n display: -ms-inline-flexbox !important;\n display: inline-flex !important;\n }\n}\n@media (min-width: 1200px) {\n .d-xl-none {\n display: none !important;\n }\n .d-xl-inline {\n display: inline !important;\n }\n .d-xl-inline-block {\n display: inline-block !important;\n }\n .d-xl-block {\n display: block !important;\n }\n .d-xl-table {\n display: table !important;\n }\n .d-xl-table-row {\n display: table-row !important;\n }\n .d-xl-table-cell {\n display: table-cell !important;\n }\n .d-xl-flex {\n display: -ms-flexbox !important;\n display: flex !important;\n }\n .d-xl-inline-flex {\n display: -ms-inline-flexbox !important;\n display: inline-flex !important;\n }\n}\n.d-print-block {\n display: none !important;\n}\n\n@media print {\n .d-print-block {\n display: block !important;\n }\n}\n.d-print-inline {\n display: none !important;\n}\n\n@media print {\n .d-print-inline {\n display: inline !important;\n }\n}\n.d-print-inline-block {\n display: none !important;\n}\n\n@media print {\n .d-print-inline-block {\n display: inline-block !important;\n }\n}\n@media print {\n .d-print-none {\n display: none !important;\n }\n}\n.embed-responsive {\n position: relative;\n display: block;\n width: 100%;\n padding: 0;\n overflow: hidden;\n}\n\n.embed-responsive::before {\n display: block;\n content: \"\";\n}\n\n.embed-responsive .embed-responsive-item,\n.embed-responsive iframe,\n.embed-responsive embed,\n.embed-responsive object,\n.embed-responsive video {\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n width: 100%;\n height: 100%;\n border: 0;\n}\n\n.embed-responsive-21by9::before {\n padding-top: 42.857143%;\n}\n\n.embed-responsive-16by9::before {\n padding-top: 56.25%;\n}\n\n.embed-responsive-4by3::before {\n padding-top: 75%;\n}\n\n.embed-responsive-1by1::before {\n padding-top: 100%;\n}\n\n.flex-row {\n -ms-flex-direction: row !important;\n flex-direction: row !important;\n}\n\n.flex-column {\n -ms-flex-direction: column !important;\n flex-direction: column !important;\n}\n\n.flex-row-reverse {\n -ms-flex-direction: row-reverse !important;\n flex-direction: row-reverse !important;\n}\n\n.flex-column-reverse {\n -ms-flex-direction: column-reverse !important;\n flex-direction: column-reverse !important;\n}\n\n.flex-wrap {\n -ms-flex-wrap: wrap !important;\n flex-wrap: wrap !important;\n}\n\n.flex-nowrap {\n -ms-flex-wrap: nowrap !important;\n flex-wrap: nowrap !important;\n}\n\n.flex-wrap-reverse {\n -ms-flex-wrap: wrap-reverse !important;\n flex-wrap: wrap-reverse !important;\n}\n\n.justify-content-start {\n -ms-flex-pack: start !important;\n justify-content: flex-start !important;\n}\n\n.justify-content-end {\n -ms-flex-pack: end !important;\n justify-content: flex-end !important;\n}\n\n.justify-content-center {\n -ms-flex-pack: center !important;\n justify-content: center !important;\n}\n\n.justify-content-between {\n -ms-flex-pack: justify !important;\n justify-content: space-between !important;\n}\n\n.justify-content-around {\n -ms-flex-pack: distribute !important;\n justify-content: space-around !important;\n}\n\n.align-items-start {\n -ms-flex-align: start !important;\n align-items: flex-start !important;\n}\n\n.align-items-end {\n -ms-flex-align: end !important;\n align-items: flex-end !important;\n}\n\n.align-items-center {\n -ms-flex-align: center !important;\n align-items: center !important;\n}\n\n.align-items-baseline {\n -ms-flex-align: baseline !important;\n align-items: baseline !important;\n}\n\n.align-items-stretch {\n -ms-flex-align: stretch !important;\n align-items: stretch !important;\n}\n\n.align-content-start {\n -ms-flex-line-pack: start !important;\n align-content: flex-start !important;\n}\n\n.align-content-end {\n -ms-flex-line-pack: end !important;\n align-content: flex-end !important;\n}\n\n.align-content-center {\n -ms-flex-line-pack: center !important;\n align-content: center !important;\n}\n\n.align-content-between {\n -ms-flex-line-pack: justify !important;\n align-content: space-between !important;\n}\n\n.align-content-around {\n -ms-flex-line-pack: distribute !important;\n align-content: space-around !important;\n}\n\n.align-content-stretch {\n -ms-flex-line-pack: stretch !important;\n align-content: stretch !important;\n}\n\n.align-self-auto {\n -ms-flex-item-align: auto !important;\n align-self: auto !important;\n}\n\n.align-self-start {\n -ms-flex-item-align: start !important;\n align-self: flex-start !important;\n}\n\n.align-self-end {\n -ms-flex-item-align: end !important;\n align-self: flex-end !important;\n}\n\n.align-self-center {\n -ms-flex-item-align: center !important;\n align-self: center !important;\n}\n\n.align-self-baseline {\n -ms-flex-item-align: baseline !important;\n align-self: baseline !important;\n}\n\n.align-self-stretch {\n -ms-flex-item-align: stretch !important;\n align-self: stretch !important;\n}\n\n@media (min-width: 576px) {\n .flex-sm-row {\n -ms-flex-direction: row !important;\n flex-direction: row !important;\n }\n .flex-sm-column {\n -ms-flex-direction: column !important;\n flex-direction: column !important;\n }\n .flex-sm-row-reverse {\n -ms-flex-direction: row-reverse !important;\n flex-direction: row-reverse !important;\n }\n .flex-sm-column-reverse {\n -ms-flex-direction: column-reverse !important;\n flex-direction: column-reverse !important;\n }\n .flex-sm-wrap {\n -ms-flex-wrap: wrap !important;\n flex-wrap: wrap !important;\n }\n .flex-sm-nowrap {\n -ms-flex-wrap: nowrap !important;\n flex-wrap: nowrap !important;\n }\n .flex-sm-wrap-reverse {\n -ms-flex-wrap: wrap-reverse !important;\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-sm-start {\n -ms-flex-pack: start !important;\n justify-content: flex-start !important;\n }\n .justify-content-sm-end {\n -ms-flex-pack: end !important;\n justify-content: flex-end !important;\n }\n .justify-content-sm-center {\n -ms-flex-pack: center !important;\n justify-content: center !important;\n }\n .justify-content-sm-between {\n -ms-flex-pack: justify !important;\n justify-content: space-between !important;\n }\n .justify-content-sm-around {\n -ms-flex-pack: distribute !important;\n justify-content: space-around !important;\n }\n .align-items-sm-start {\n -ms-flex-align: start !important;\n align-items: flex-start !important;\n }\n .align-items-sm-end {\n -ms-flex-align: end !important;\n align-items: flex-end !important;\n }\n .align-items-sm-center {\n -ms-flex-align: center !important;\n align-items: center !important;\n }\n .align-items-sm-baseline {\n -ms-flex-align: baseline !important;\n align-items: baseline !important;\n }\n .align-items-sm-stretch {\n -ms-flex-align: stretch !important;\n align-items: stretch !important;\n }\n .align-content-sm-start {\n -ms-flex-line-pack: start !important;\n align-content: flex-start !important;\n }\n .align-content-sm-end {\n -ms-flex-line-pack: end !important;\n align-content: flex-end !important;\n }\n .align-content-sm-center {\n -ms-flex-line-pack: center !important;\n align-content: center !important;\n }\n .align-content-sm-between {\n -ms-flex-line-pack: justify !important;\n align-content: space-between !important;\n }\n .align-content-sm-around {\n -ms-flex-line-pack: distribute !important;\n align-content: space-around !important;\n }\n .align-content-sm-stretch {\n -ms-flex-line-pack: stretch !important;\n align-content: stretch !important;\n }\n .align-self-sm-auto {\n -ms-flex-item-align: auto !important;\n align-self: auto !important;\n }\n .align-self-sm-start {\n -ms-flex-item-align: start !important;\n align-self: flex-start !important;\n }\n .align-self-sm-end {\n -ms-flex-item-align: end !important;\n align-self: flex-end !important;\n }\n .align-self-sm-center {\n -ms-flex-item-align: center !important;\n align-self: center !important;\n }\n .align-self-sm-baseline {\n -ms-flex-item-align: baseline !important;\n align-self: baseline !important;\n }\n .align-self-sm-stretch {\n -ms-flex-item-align: stretch !important;\n align-self: stretch !important;\n }\n}\n@media (min-width: 768px) {\n .flex-md-row {\n -ms-flex-direction: row !important;\n flex-direction: row !important;\n }\n .flex-md-column {\n -ms-flex-direction: column !important;\n flex-direction: column !important;\n }\n .flex-md-row-reverse {\n -ms-flex-direction: row-reverse !important;\n flex-direction: row-reverse !important;\n }\n .flex-md-column-reverse {\n -ms-flex-direction: column-reverse !important;\n flex-direction: column-reverse !important;\n }\n .flex-md-wrap {\n -ms-flex-wrap: wrap !important;\n flex-wrap: wrap !important;\n }\n .flex-md-nowrap {\n -ms-flex-wrap: nowrap !important;\n flex-wrap: nowrap !important;\n }\n .flex-md-wrap-reverse {\n -ms-flex-wrap: wrap-reverse !important;\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-md-start {\n -ms-flex-pack: start !important;\n justify-content: flex-start !important;\n }\n .justify-content-md-end {\n -ms-flex-pack: end !important;\n justify-content: flex-end !important;\n }\n .justify-content-md-center {\n -ms-flex-pack: center !important;\n justify-content: center !important;\n }\n .justify-content-md-between {\n -ms-flex-pack: justify !important;\n justify-content: space-between !important;\n }\n .justify-content-md-around {\n -ms-flex-pack: distribute !important;\n justify-content: space-around !important;\n }\n .align-items-md-start {\n -ms-flex-align: start !important;\n align-items: flex-start !important;\n }\n .align-items-md-end {\n -ms-flex-align: end !important;\n align-items: flex-end !important;\n }\n .align-items-md-center {\n -ms-flex-align: center !important;\n align-items: center !important;\n }\n .align-items-md-baseline {\n -ms-flex-align: baseline !important;\n align-items: baseline !important;\n }\n .align-items-md-stretch {\n -ms-flex-align: stretch !important;\n align-items: stretch !important;\n }\n .align-content-md-start {\n -ms-flex-line-pack: start !important;\n align-content: flex-start !important;\n }\n .align-content-md-end {\n -ms-flex-line-pack: end !important;\n align-content: flex-end !important;\n }\n .align-content-md-center {\n -ms-flex-line-pack: center !important;\n align-content: center !important;\n }\n .align-content-md-between {\n -ms-flex-line-pack: justify !important;\n align-content: space-between !important;\n }\n .align-content-md-around {\n -ms-flex-line-pack: distribute !important;\n align-content: space-around !important;\n }\n .align-content-md-stretch {\n -ms-flex-line-pack: stretch !important;\n align-content: stretch !important;\n }\n .align-self-md-auto {\n -ms-flex-item-align: auto !important;\n align-self: auto !important;\n }\n .align-self-md-start {\n -ms-flex-item-align: start !important;\n align-self: flex-start !important;\n }\n .align-self-md-end {\n -ms-flex-item-align: end !important;\n align-self: flex-end !important;\n }\n .align-self-md-center {\n -ms-flex-item-align: center !important;\n align-self: center !important;\n }\n .align-self-md-baseline {\n -ms-flex-item-align: baseline !important;\n align-self: baseline !important;\n }\n .align-self-md-stretch {\n -ms-flex-item-align: stretch !important;\n align-self: stretch !important;\n }\n}\n@media (min-width: 992px) {\n .flex-lg-row {\n -ms-flex-direction: row !important;\n flex-direction: row !important;\n }\n .flex-lg-column {\n -ms-flex-direction: column !important;\n flex-direction: column !important;\n }\n .flex-lg-row-reverse {\n -ms-flex-direction: row-reverse !important;\n flex-direction: row-reverse !important;\n }\n .flex-lg-column-reverse {\n -ms-flex-direction: column-reverse !important;\n flex-direction: column-reverse !important;\n }\n .flex-lg-wrap {\n -ms-flex-wrap: wrap !important;\n flex-wrap: wrap !important;\n }\n .flex-lg-nowrap {\n -ms-flex-wrap: nowrap !important;\n flex-wrap: nowrap !important;\n }\n .flex-lg-wrap-reverse {\n -ms-flex-wrap: wrap-reverse !important;\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-lg-start {\n -ms-flex-pack: start !important;\n justify-content: flex-start !important;\n }\n .justify-content-lg-end {\n -ms-flex-pack: end !important;\n justify-content: flex-end !important;\n }\n .justify-content-lg-center {\n -ms-flex-pack: center !important;\n justify-content: center !important;\n }\n .justify-content-lg-between {\n -ms-flex-pack: justify !important;\n justify-content: space-between !important;\n }\n .justify-content-lg-around {\n -ms-flex-pack: distribute !important;\n justify-content: space-around !important;\n }\n .align-items-lg-start {\n -ms-flex-align: start !important;\n align-items: flex-start !important;\n }\n .align-items-lg-end {\n -ms-flex-align: end !important;\n align-items: flex-end !important;\n }\n .align-items-lg-center {\n -ms-flex-align: center !important;\n align-items: center !important;\n }\n .align-items-lg-baseline {\n -ms-flex-align: baseline !important;\n align-items: baseline !important;\n }\n .align-items-lg-stretch {\n -ms-flex-align: stretch !important;\n align-items: stretch !important;\n }\n .align-content-lg-start {\n -ms-flex-line-pack: start !important;\n align-content: flex-start !important;\n }\n .align-content-lg-end {\n -ms-flex-line-pack: end !important;\n align-content: flex-end !important;\n }\n .align-content-lg-center {\n -ms-flex-line-pack: center !important;\n align-content: center !important;\n }\n .align-content-lg-between {\n -ms-flex-line-pack: justify !important;\n align-content: space-between !important;\n }\n .align-content-lg-around {\n -ms-flex-line-pack: distribute !important;\n align-content: space-around !important;\n }\n .align-content-lg-stretch {\n -ms-flex-line-pack: stretch !important;\n align-content: stretch !important;\n }\n .align-self-lg-auto {\n -ms-flex-item-align: auto !important;\n align-self: auto !important;\n }\n .align-self-lg-start {\n -ms-flex-item-align: start !important;\n align-self: flex-start !important;\n }\n .align-self-lg-end {\n -ms-flex-item-align: end !important;\n align-self: flex-end !important;\n }\n .align-self-lg-center {\n -ms-flex-item-align: center !important;\n align-self: center !important;\n }\n .align-self-lg-baseline {\n -ms-flex-item-align: baseline !important;\n align-self: baseline !important;\n }\n .align-self-lg-stretch {\n -ms-flex-item-align: stretch !important;\n align-self: stretch !important;\n }\n}\n@media (min-width: 1200px) {\n .flex-xl-row {\n -ms-flex-direction: row !important;\n flex-direction: row !important;\n }\n .flex-xl-column {\n -ms-flex-direction: column !important;\n flex-direction: column !important;\n }\n .flex-xl-row-reverse {\n -ms-flex-direction: row-reverse !important;\n flex-direction: row-reverse !important;\n }\n .flex-xl-column-reverse {\n -ms-flex-direction: column-reverse !important;\n flex-direction: column-reverse !important;\n }\n .flex-xl-wrap {\n -ms-flex-wrap: wrap !important;\n flex-wrap: wrap !important;\n }\n .flex-xl-nowrap {\n -ms-flex-wrap: nowrap !important;\n flex-wrap: nowrap !important;\n }\n .flex-xl-wrap-reverse {\n -ms-flex-wrap: wrap-reverse !important;\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-xl-start {\n -ms-flex-pack: start !important;\n justify-content: flex-start !important;\n }\n .justify-content-xl-end {\n -ms-flex-pack: end !important;\n justify-content: flex-end !important;\n }\n .justify-content-xl-center {\n -ms-flex-pack: center !important;\n justify-content: center !important;\n }\n .justify-content-xl-between {\n -ms-flex-pack: justify !important;\n justify-content: space-between !important;\n }\n .justify-content-xl-around {\n -ms-flex-pack: distribute !important;\n justify-content: space-around !important;\n }\n .align-items-xl-start {\n -ms-flex-align: start !important;\n align-items: flex-start !important;\n }\n .align-items-xl-end {\n -ms-flex-align: end !important;\n align-items: flex-end !important;\n }\n .align-items-xl-center {\n -ms-flex-align: center !important;\n align-items: center !important;\n }\n .align-items-xl-baseline {\n -ms-flex-align: baseline !important;\n align-items: baseline !important;\n }\n .align-items-xl-stretch {\n -ms-flex-align: stretch !important;\n align-items: stretch !important;\n }\n .align-content-xl-start {\n -ms-flex-line-pack: start !important;\n align-content: flex-start !important;\n }\n .align-content-xl-end {\n -ms-flex-line-pack: end !important;\n align-content: flex-end !important;\n }\n .align-content-xl-center {\n -ms-flex-line-pack: center !important;\n align-content: center !important;\n }\n .align-content-xl-between {\n -ms-flex-line-pack: justify !important;\n align-content: space-between !important;\n }\n .align-content-xl-around {\n -ms-flex-line-pack: distribute !important;\n align-content: space-around !important;\n }\n .align-content-xl-stretch {\n -ms-flex-line-pack: stretch !important;\n align-content: stretch !important;\n }\n .align-self-xl-auto {\n -ms-flex-item-align: auto !important;\n align-self: auto !important;\n }\n .align-self-xl-start {\n -ms-flex-item-align: start !important;\n align-self: flex-start !important;\n }\n .align-self-xl-end {\n -ms-flex-item-align: end !important;\n align-self: flex-end !important;\n }\n .align-self-xl-center {\n -ms-flex-item-align: center !important;\n align-self: center !important;\n }\n .align-self-xl-baseline {\n -ms-flex-item-align: baseline !important;\n align-self: baseline !important;\n }\n .align-self-xl-stretch {\n -ms-flex-item-align: stretch !important;\n align-self: stretch !important;\n }\n}\n.float-left {\n float: left !important;\n}\n\n.float-right {\n float: right !important;\n}\n\n.float-none {\n float: none !important;\n}\n\n@media (min-width: 576px) {\n .float-sm-left {\n float: left !important;\n }\n .float-sm-right {\n float: right !important;\n }\n .float-sm-none {\n float: none !important;\n }\n}\n@media (min-width: 768px) {\n .float-md-left {\n float: left !important;\n }\n .float-md-right {\n float: right !important;\n }\n .float-md-none {\n float: none !important;\n }\n}\n@media (min-width: 992px) {\n .float-lg-left {\n float: left !important;\n }\n .float-lg-right {\n float: right !important;\n }\n .float-lg-none {\n float: none !important;\n }\n}\n@media (min-width: 1200px) {\n .float-xl-left {\n float: left !important;\n }\n .float-xl-right {\n float: right !important;\n }\n .float-xl-none {\n float: none !important;\n }\n}\n.position-static {\n position: static !important;\n}\n\n.position-relative {\n position: relative !important;\n}\n\n.position-absolute {\n position: absolute !important;\n}\n\n.position-fixed {\n position: fixed !important;\n}\n\n.position-sticky {\n position: -webkit-sticky !important;\n position: sticky !important;\n}\n\n.fixed-top {\n position: fixed;\n top: 0;\n right: 0;\n left: 0;\n z-index: 1030;\n}\n\n.fixed-bottom {\n position: fixed;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: 1030;\n}\n\n@supports (position: -webkit-sticky) or (position: sticky) {\n .sticky-top {\n position: -webkit-sticky;\n position: sticky;\n top: 0;\n z-index: 1020;\n }\n}\n.sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n -webkit-clip-path: inset(50%);\n clip-path: inset(50%);\n border: 0;\n}\n\n.sr-only-focusable:active, .sr-only-focusable:focus {\n position: static;\n width: auto;\n height: auto;\n overflow: visible;\n clip: auto;\n white-space: normal;\n -webkit-clip-path: none;\n clip-path: none;\n}\n\n.w-25 {\n width: 25% !important;\n}\n\n.w-50 {\n width: 50% !important;\n}\n\n.w-75 {\n width: 75% !important;\n}\n\n.w-100 {\n width: 100% !important;\n}\n\n.h-25 {\n height: 25% !important;\n}\n\n.h-50 {\n height: 50% !important;\n}\n\n.h-75 {\n height: 75% !important;\n}\n\n.h-100 {\n height: 100% !important;\n}\n\n.mw-100 {\n max-width: 100% !important;\n}\n\n.mh-100 {\n max-height: 100% !important;\n}\n\n.m-0 {\n margin: 0 !important;\n}\n\n.mt-0,\n.my-0 {\n margin-top: 0 !important;\n}\n\n.mr-0,\n.mx-0 {\n margin-right: 0 !important;\n}\n\n.mb-0,\n.my-0 {\n margin-bottom: 0 !important;\n}\n\n.ml-0,\n.mx-0 {\n margin-left: 0 !important;\n}\n\n.m-1 {\n margin: 0.25rem !important;\n}\n\n.mt-1,\n.my-1 {\n margin-top: 0.25rem !important;\n}\n\n.mr-1,\n.mx-1 {\n margin-right: 0.25rem !important;\n}\n\n.mb-1,\n.my-1 {\n margin-bottom: 0.25rem !important;\n}\n\n.ml-1,\n.mx-1 {\n margin-left: 0.25rem !important;\n}\n\n.m-2 {\n margin: 0.5rem !important;\n}\n\n.mt-2,\n.my-2 {\n margin-top: 0.5rem !important;\n}\n\n.mr-2,\n.mx-2 {\n margin-right: 0.5rem !important;\n}\n\n.mb-2,\n.my-2 {\n margin-bottom: 0.5rem !important;\n}\n\n.ml-2,\n.mx-2 {\n margin-left: 0.5rem !important;\n}\n\n.m-3 {\n margin: 1rem !important;\n}\n\n.mt-3,\n.my-3 {\n margin-top: 1rem !important;\n}\n\n.mr-3,\n.mx-3 {\n margin-right: 1rem !important;\n}\n\n.mb-3,\n.my-3 {\n margin-bottom: 1rem !important;\n}\n\n.ml-3,\n.mx-3 {\n margin-left: 1rem !important;\n}\n\n.m-4 {\n margin: 1.5rem !important;\n}\n\n.mt-4,\n.my-4 {\n margin-top: 1.5rem !important;\n}\n\n.mr-4,\n.mx-4 {\n margin-right: 1.5rem !important;\n}\n\n.mb-4,\n.my-4 {\n margin-bottom: 1.5rem !important;\n}\n\n.ml-4,\n.mx-4 {\n margin-left: 1.5rem !important;\n}\n\n.m-5 {\n margin: 3rem !important;\n}\n\n.mt-5,\n.my-5 {\n margin-top: 3rem !important;\n}\n\n.mr-5,\n.mx-5 {\n margin-right: 3rem !important;\n}\n\n.mb-5,\n.my-5 {\n margin-bottom: 3rem !important;\n}\n\n.ml-5,\n.mx-5 {\n margin-left: 3rem !important;\n}\n\n.p-0 {\n padding: 0 !important;\n}\n\n.pt-0,\n.py-0 {\n padding-top: 0 !important;\n}\n\n.pr-0,\n.px-0 {\n padding-right: 0 !important;\n}\n\n.pb-0,\n.py-0 {\n padding-bottom: 0 !important;\n}\n\n.pl-0,\n.px-0 {\n padding-left: 0 !important;\n}\n\n.p-1 {\n padding: 0.25rem !important;\n}\n\n.pt-1,\n.py-1 {\n padding-top: 0.25rem !important;\n}\n\n.pr-1,\n.px-1 {\n padding-right: 0.25rem !important;\n}\n\n.pb-1,\n.py-1 {\n padding-bottom: 0.25rem !important;\n}\n\n.pl-1,\n.px-1 {\n padding-left: 0.25rem !important;\n}\n\n.p-2 {\n padding: 0.5rem !important;\n}\n\n.pt-2,\n.py-2 {\n padding-top: 0.5rem !important;\n}\n\n.pr-2,\n.px-2 {\n padding-right: 0.5rem !important;\n}\n\n.pb-2,\n.py-2 {\n padding-bottom: 0.5rem !important;\n}\n\n.pl-2,\n.px-2 {\n padding-left: 0.5rem !important;\n}\n\n.p-3 {\n padding: 1rem !important;\n}\n\n.pt-3,\n.py-3 {\n padding-top: 1rem !important;\n}\n\n.pr-3,\n.px-3 {\n padding-right: 1rem !important;\n}\n\n.pb-3,\n.py-3 {\n padding-bottom: 1rem !important;\n}\n\n.pl-3,\n.px-3 {\n padding-left: 1rem !important;\n}\n\n.p-4 {\n padding: 1.5rem !important;\n}\n\n.pt-4,\n.py-4 {\n padding-top: 1.5rem !important;\n}\n\n.pr-4,\n.px-4 {\n padding-right: 1.5rem !important;\n}\n\n.pb-4,\n.py-4 {\n padding-bottom: 1.5rem !important;\n}\n\n.pl-4,\n.px-4 {\n padding-left: 1.5rem !important;\n}\n\n.p-5 {\n padding: 3rem !important;\n}\n\n.pt-5,\n.py-5 {\n padding-top: 3rem !important;\n}\n\n.pr-5,\n.px-5 {\n padding-right: 3rem !important;\n}\n\n.pb-5,\n.py-5 {\n padding-bottom: 3rem !important;\n}\n\n.pl-5,\n.px-5 {\n padding-left: 3rem !important;\n}\n\n.m-auto {\n margin: auto !important;\n}\n\n.mt-auto,\n.my-auto {\n margin-top: auto !important;\n}\n\n.mr-auto,\n.mx-auto {\n margin-right: auto !important;\n}\n\n.mb-auto,\n.my-auto {\n margin-bottom: auto !important;\n}\n\n.ml-auto,\n.mx-auto {\n margin-left: auto !important;\n}\n\n@media (min-width: 576px) {\n .m-sm-0 {\n margin: 0 !important;\n }\n .mt-sm-0,\n.my-sm-0 {\n margin-top: 0 !important;\n }\n .mr-sm-0,\n.mx-sm-0 {\n margin-right: 0 !important;\n }\n .mb-sm-0,\n.my-sm-0 {\n margin-bottom: 0 !important;\n }\n .ml-sm-0,\n.mx-sm-0 {\n margin-left: 0 !important;\n }\n .m-sm-1 {\n margin: 0.25rem !important;\n }\n .mt-sm-1,\n.my-sm-1 {\n margin-top: 0.25rem !important;\n }\n .mr-sm-1,\n.mx-sm-1 {\n margin-right: 0.25rem !important;\n }\n .mb-sm-1,\n.my-sm-1 {\n margin-bottom: 0.25rem !important;\n }\n .ml-sm-1,\n.mx-sm-1 {\n margin-left: 0.25rem !important;\n }\n .m-sm-2 {\n margin: 0.5rem !important;\n }\n .mt-sm-2,\n.my-sm-2 {\n margin-top: 0.5rem !important;\n }\n .mr-sm-2,\n.mx-sm-2 {\n margin-right: 0.5rem !important;\n }\n .mb-sm-2,\n.my-sm-2 {\n margin-bottom: 0.5rem !important;\n }\n .ml-sm-2,\n.mx-sm-2 {\n margin-left: 0.5rem !important;\n }\n .m-sm-3 {\n margin: 1rem !important;\n }\n .mt-sm-3,\n.my-sm-3 {\n margin-top: 1rem !important;\n }\n .mr-sm-3,\n.mx-sm-3 {\n margin-right: 1rem !important;\n }\n .mb-sm-3,\n.my-sm-3 {\n margin-bottom: 1rem !important;\n }\n .ml-sm-3,\n.mx-sm-3 {\n margin-left: 1rem !important;\n }\n .m-sm-4 {\n margin: 1.5rem !important;\n }\n .mt-sm-4,\n.my-sm-4 {\n margin-top: 1.5rem !important;\n }\n .mr-sm-4,\n.mx-sm-4 {\n margin-right: 1.5rem !important;\n }\n .mb-sm-4,\n.my-sm-4 {\n margin-bottom: 1.5rem !important;\n }\n .ml-sm-4,\n.mx-sm-4 {\n margin-left: 1.5rem !important;\n }\n .m-sm-5 {\n margin: 3rem !important;\n }\n .mt-sm-5,\n.my-sm-5 {\n margin-top: 3rem !important;\n }\n .mr-sm-5,\n.mx-sm-5 {\n margin-right: 3rem !important;\n }\n .mb-sm-5,\n.my-sm-5 {\n margin-bottom: 3rem !important;\n }\n .ml-sm-5,\n.mx-sm-5 {\n margin-left: 3rem !important;\n }\n .p-sm-0 {\n padding: 0 !important;\n }\n .pt-sm-0,\n.py-sm-0 {\n padding-top: 0 !important;\n }\n .pr-sm-0,\n.px-sm-0 {\n padding-right: 0 !important;\n }\n .pb-sm-0,\n.py-sm-0 {\n padding-bottom: 0 !important;\n }\n .pl-sm-0,\n.px-sm-0 {\n padding-left: 0 !important;\n }\n .p-sm-1 {\n padding: 0.25rem !important;\n }\n .pt-sm-1,\n.py-sm-1 {\n padding-top: 0.25rem !important;\n }\n .pr-sm-1,\n.px-sm-1 {\n padding-right: 0.25rem !important;\n }\n .pb-sm-1,\n.py-sm-1 {\n padding-bottom: 0.25rem !important;\n }\n .pl-sm-1,\n.px-sm-1 {\n padding-left: 0.25rem !important;\n }\n .p-sm-2 {\n padding: 0.5rem !important;\n }\n .pt-sm-2,\n.py-sm-2 {\n padding-top: 0.5rem !important;\n }\n .pr-sm-2,\n.px-sm-2 {\n padding-right: 0.5rem !important;\n }\n .pb-sm-2,\n.py-sm-2 {\n padding-bottom: 0.5rem !important;\n }\n .pl-sm-2,\n.px-sm-2 {\n padding-left: 0.5rem !important;\n }\n .p-sm-3 {\n padding: 1rem !important;\n }\n .pt-sm-3,\n.py-sm-3 {\n padding-top: 1rem !important;\n }\n .pr-sm-3,\n.px-sm-3 {\n padding-right: 1rem !important;\n }\n .pb-sm-3,\n.py-sm-3 {\n padding-bottom: 1rem !important;\n }\n .pl-sm-3,\n.px-sm-3 {\n padding-left: 1rem !important;\n }\n .p-sm-4 {\n padding: 1.5rem !important;\n }\n .pt-sm-4,\n.py-sm-4 {\n padding-top: 1.5rem !important;\n }\n .pr-sm-4,\n.px-sm-4 {\n padding-right: 1.5rem !important;\n }\n .pb-sm-4,\n.py-sm-4 {\n padding-bottom: 1.5rem !important;\n }\n .pl-sm-4,\n.px-sm-4 {\n padding-left: 1.5rem !important;\n }\n .p-sm-5 {\n padding: 3rem !important;\n }\n .pt-sm-5,\n.py-sm-5 {\n padding-top: 3rem !important;\n }\n .pr-sm-5,\n.px-sm-5 {\n padding-right: 3rem !important;\n }\n .pb-sm-5,\n.py-sm-5 {\n padding-bottom: 3rem !important;\n }\n .pl-sm-5,\n.px-sm-5 {\n padding-left: 3rem !important;\n }\n .m-sm-auto {\n margin: auto !important;\n }\n .mt-sm-auto,\n.my-sm-auto {\n margin-top: auto !important;\n }\n .mr-sm-auto,\n.mx-sm-auto {\n margin-right: auto !important;\n }\n .mb-sm-auto,\n.my-sm-auto {\n margin-bottom: auto !important;\n }\n .ml-sm-auto,\n.mx-sm-auto {\n margin-left: auto !important;\n }\n}\n@media (min-width: 768px) {\n .m-md-0 {\n margin: 0 !important;\n }\n .mt-md-0,\n.my-md-0 {\n margin-top: 0 !important;\n }\n .mr-md-0,\n.mx-md-0 {\n margin-right: 0 !important;\n }\n .mb-md-0,\n.my-md-0 {\n margin-bottom: 0 !important;\n }\n .ml-md-0,\n.mx-md-0 {\n margin-left: 0 !important;\n }\n .m-md-1 {\n margin: 0.25rem !important;\n }\n .mt-md-1,\n.my-md-1 {\n margin-top: 0.25rem !important;\n }\n .mr-md-1,\n.mx-md-1 {\n margin-right: 0.25rem !important;\n }\n .mb-md-1,\n.my-md-1 {\n margin-bottom: 0.25rem !important;\n }\n .ml-md-1,\n.mx-md-1 {\n margin-left: 0.25rem !important;\n }\n .m-md-2 {\n margin: 0.5rem !important;\n }\n .mt-md-2,\n.my-md-2 {\n margin-top: 0.5rem !important;\n }\n .mr-md-2,\n.mx-md-2 {\n margin-right: 0.5rem !important;\n }\n .mb-md-2,\n.my-md-2 {\n margin-bottom: 0.5rem !important;\n }\n .ml-md-2,\n.mx-md-2 {\n margin-left: 0.5rem !important;\n }\n .m-md-3 {\n margin: 1rem !important;\n }\n .mt-md-3,\n.my-md-3 {\n margin-top: 1rem !important;\n }\n .mr-md-3,\n.mx-md-3 {\n margin-right: 1rem !important;\n }\n .mb-md-3,\n.my-md-3 {\n margin-bottom: 1rem !important;\n }\n .ml-md-3,\n.mx-md-3 {\n margin-left: 1rem !important;\n }\n .m-md-4 {\n margin: 1.5rem !important;\n }\n .mt-md-4,\n.my-md-4 {\n margin-top: 1.5rem !important;\n }\n .mr-md-4,\n.mx-md-4 {\n margin-right: 1.5rem !important;\n }\n .mb-md-4,\n.my-md-4 {\n margin-bottom: 1.5rem !important;\n }\n .ml-md-4,\n.mx-md-4 {\n margin-left: 1.5rem !important;\n }\n .m-md-5 {\n margin: 3rem !important;\n }\n .mt-md-5,\n.my-md-5 {\n margin-top: 3rem !important;\n }\n .mr-md-5,\n.mx-md-5 {\n margin-right: 3rem !important;\n }\n .mb-md-5,\n.my-md-5 {\n margin-bottom: 3rem !important;\n }\n .ml-md-5,\n.mx-md-5 {\n margin-left: 3rem !important;\n }\n .p-md-0 {\n padding: 0 !important;\n }\n .pt-md-0,\n.py-md-0 {\n padding-top: 0 !important;\n }\n .pr-md-0,\n.px-md-0 {\n padding-right: 0 !important;\n }\n .pb-md-0,\n.py-md-0 {\n padding-bottom: 0 !important;\n }\n .pl-md-0,\n.px-md-0 {\n padding-left: 0 !important;\n }\n .p-md-1 {\n padding: 0.25rem !important;\n }\n .pt-md-1,\n.py-md-1 {\n padding-top: 0.25rem !important;\n }\n .pr-md-1,\n.px-md-1 {\n padding-right: 0.25rem !important;\n }\n .pb-md-1,\n.py-md-1 {\n padding-bottom: 0.25rem !important;\n }\n .pl-md-1,\n.px-md-1 {\n padding-left: 0.25rem !important;\n }\n .p-md-2 {\n padding: 0.5rem !important;\n }\n .pt-md-2,\n.py-md-2 {\n padding-top: 0.5rem !important;\n }\n .pr-md-2,\n.px-md-2 {\n padding-right: 0.5rem !important;\n }\n .pb-md-2,\n.py-md-2 {\n padding-bottom: 0.5rem !important;\n }\n .pl-md-2,\n.px-md-2 {\n padding-left: 0.5rem !important;\n }\n .p-md-3 {\n padding: 1rem !important;\n }\n .pt-md-3,\n.py-md-3 {\n padding-top: 1rem !important;\n }\n .pr-md-3,\n.px-md-3 {\n padding-right: 1rem !important;\n }\n .pb-md-3,\n.py-md-3 {\n padding-bottom: 1rem !important;\n }\n .pl-md-3,\n.px-md-3 {\n padding-left: 1rem !important;\n }\n .p-md-4 {\n padding: 1.5rem !important;\n }\n .pt-md-4,\n.py-md-4 {\n padding-top: 1.5rem !important;\n }\n .pr-md-4,\n.px-md-4 {\n padding-right: 1.5rem !important;\n }\n .pb-md-4,\n.py-md-4 {\n padding-bottom: 1.5rem !important;\n }\n .pl-md-4,\n.px-md-4 {\n padding-left: 1.5rem !important;\n }\n .p-md-5 {\n padding: 3rem !important;\n }\n .pt-md-5,\n.py-md-5 {\n padding-top: 3rem !important;\n }\n .pr-md-5,\n.px-md-5 {\n padding-right: 3rem !important;\n }\n .pb-md-5,\n.py-md-5 {\n padding-bottom: 3rem !important;\n }\n .pl-md-5,\n.px-md-5 {\n padding-left: 3rem !important;\n }\n .m-md-auto {\n margin: auto !important;\n }\n .mt-md-auto,\n.my-md-auto {\n margin-top: auto !important;\n }\n .mr-md-auto,\n.mx-md-auto {\n margin-right: auto !important;\n }\n .mb-md-auto,\n.my-md-auto {\n margin-bottom: auto !important;\n }\n .ml-md-auto,\n.mx-md-auto {\n margin-left: auto !important;\n }\n}\n@media (min-width: 992px) {\n .m-lg-0 {\n margin: 0 !important;\n }\n .mt-lg-0,\n.my-lg-0 {\n margin-top: 0 !important;\n }\n .mr-lg-0,\n.mx-lg-0 {\n margin-right: 0 !important;\n }\n .mb-lg-0,\n.my-lg-0 {\n margin-bottom: 0 !important;\n }\n .ml-lg-0,\n.mx-lg-0 {\n margin-left: 0 !important;\n }\n .m-lg-1 {\n margin: 0.25rem !important;\n }\n .mt-lg-1,\n.my-lg-1 {\n margin-top: 0.25rem !important;\n }\n .mr-lg-1,\n.mx-lg-1 {\n margin-right: 0.25rem !important;\n }\n .mb-lg-1,\n.my-lg-1 {\n margin-bottom: 0.25rem !important;\n }\n .ml-lg-1,\n.mx-lg-1 {\n margin-left: 0.25rem !important;\n }\n .m-lg-2 {\n margin: 0.5rem !important;\n }\n .mt-lg-2,\n.my-lg-2 {\n margin-top: 0.5rem !important;\n }\n .mr-lg-2,\n.mx-lg-2 {\n margin-right: 0.5rem !important;\n }\n .mb-lg-2,\n.my-lg-2 {\n margin-bottom: 0.5rem !important;\n }\n .ml-lg-2,\n.mx-lg-2 {\n margin-left: 0.5rem !important;\n }\n .m-lg-3 {\n margin: 1rem !important;\n }\n .mt-lg-3,\n.my-lg-3 {\n margin-top: 1rem !important;\n }\n .mr-lg-3,\n.mx-lg-3 {\n margin-right: 1rem !important;\n }\n .mb-lg-3,\n.my-lg-3 {\n margin-bottom: 1rem !important;\n }\n .ml-lg-3,\n.mx-lg-3 {\n margin-left: 1rem !important;\n }\n .m-lg-4 {\n margin: 1.5rem !important;\n }\n .mt-lg-4,\n.my-lg-4 {\n margin-top: 1.5rem !important;\n }\n .mr-lg-4,\n.mx-lg-4 {\n margin-right: 1.5rem !important;\n }\n .mb-lg-4,\n.my-lg-4 {\n margin-bottom: 1.5rem !important;\n }\n .ml-lg-4,\n.mx-lg-4 {\n margin-left: 1.5rem !important;\n }\n .m-lg-5 {\n margin: 3rem !important;\n }\n .mt-lg-5,\n.my-lg-5 {\n margin-top: 3rem !important;\n }\n .mr-lg-5,\n.mx-lg-5 {\n margin-right: 3rem !important;\n }\n .mb-lg-5,\n.my-lg-5 {\n margin-bottom: 3rem !important;\n }\n .ml-lg-5,\n.mx-lg-5 {\n margin-left: 3rem !important;\n }\n .p-lg-0 {\n padding: 0 !important;\n }\n .pt-lg-0,\n.py-lg-0 {\n padding-top: 0 !important;\n }\n .pr-lg-0,\n.px-lg-0 {\n padding-right: 0 !important;\n }\n .pb-lg-0,\n.py-lg-0 {\n padding-bottom: 0 !important;\n }\n .pl-lg-0,\n.px-lg-0 {\n padding-left: 0 !important;\n }\n .p-lg-1 {\n padding: 0.25rem !important;\n }\n .pt-lg-1,\n.py-lg-1 {\n padding-top: 0.25rem !important;\n }\n .pr-lg-1,\n.px-lg-1 {\n padding-right: 0.25rem !important;\n }\n .pb-lg-1,\n.py-lg-1 {\n padding-bottom: 0.25rem !important;\n }\n .pl-lg-1,\n.px-lg-1 {\n padding-left: 0.25rem !important;\n }\n .p-lg-2 {\n padding: 0.5rem !important;\n }\n .pt-lg-2,\n.py-lg-2 {\n padding-top: 0.5rem !important;\n }\n .pr-lg-2,\n.px-lg-2 {\n padding-right: 0.5rem !important;\n }\n .pb-lg-2,\n.py-lg-2 {\n padding-bottom: 0.5rem !important;\n }\n .pl-lg-2,\n.px-lg-2 {\n padding-left: 0.5rem !important;\n }\n .p-lg-3 {\n padding: 1rem !important;\n }\n .pt-lg-3,\n.py-lg-3 {\n padding-top: 1rem !important;\n }\n .pr-lg-3,\n.px-lg-3 {\n padding-right: 1rem !important;\n }\n .pb-lg-3,\n.py-lg-3 {\n padding-bottom: 1rem !important;\n }\n .pl-lg-3,\n.px-lg-3 {\n padding-left: 1rem !important;\n }\n .p-lg-4 {\n padding: 1.5rem !important;\n }\n .pt-lg-4,\n.py-lg-4 {\n padding-top: 1.5rem !important;\n }\n .pr-lg-4,\n.px-lg-4 {\n padding-right: 1.5rem !important;\n }\n .pb-lg-4,\n.py-lg-4 {\n padding-bottom: 1.5rem !important;\n }\n .pl-lg-4,\n.px-lg-4 {\n padding-left: 1.5rem !important;\n }\n .p-lg-5 {\n padding: 3rem !important;\n }\n .pt-lg-5,\n.py-lg-5 {\n padding-top: 3rem !important;\n }\n .pr-lg-5,\n.px-lg-5 {\n padding-right: 3rem !important;\n }\n .pb-lg-5,\n.py-lg-5 {\n padding-bottom: 3rem !important;\n }\n .pl-lg-5,\n.px-lg-5 {\n padding-left: 3rem !important;\n }\n .m-lg-auto {\n margin: auto !important;\n }\n .mt-lg-auto,\n.my-lg-auto {\n margin-top: auto !important;\n }\n .mr-lg-auto,\n.mx-lg-auto {\n margin-right: auto !important;\n }\n .mb-lg-auto,\n.my-lg-auto {\n margin-bottom: auto !important;\n }\n .ml-lg-auto,\n.mx-lg-auto {\n margin-left: auto !important;\n }\n}\n@media (min-width: 1200px) {\n .m-xl-0 {\n margin: 0 !important;\n }\n .mt-xl-0,\n.my-xl-0 {\n margin-top: 0 !important;\n }\n .mr-xl-0,\n.mx-xl-0 {\n margin-right: 0 !important;\n }\n .mb-xl-0,\n.my-xl-0 {\n margin-bottom: 0 !important;\n }\n .ml-xl-0,\n.mx-xl-0 {\n margin-left: 0 !important;\n }\n .m-xl-1 {\n margin: 0.25rem !important;\n }\n .mt-xl-1,\n.my-xl-1 {\n margin-top: 0.25rem !important;\n }\n .mr-xl-1,\n.mx-xl-1 {\n margin-right: 0.25rem !important;\n }\n .mb-xl-1,\n.my-xl-1 {\n margin-bottom: 0.25rem !important;\n }\n .ml-xl-1,\n.mx-xl-1 {\n margin-left: 0.25rem !important;\n }\n .m-xl-2 {\n margin: 0.5rem !important;\n }\n .mt-xl-2,\n.my-xl-2 {\n margin-top: 0.5rem !important;\n }\n .mr-xl-2,\n.mx-xl-2 {\n margin-right: 0.5rem !important;\n }\n .mb-xl-2,\n.my-xl-2 {\n margin-bottom: 0.5rem !important;\n }\n .ml-xl-2,\n.mx-xl-2 {\n margin-left: 0.5rem !important;\n }\n .m-xl-3 {\n margin: 1rem !important;\n }\n .mt-xl-3,\n.my-xl-3 {\n margin-top: 1rem !important;\n }\n .mr-xl-3,\n.mx-xl-3 {\n margin-right: 1rem !important;\n }\n .mb-xl-3,\n.my-xl-3 {\n margin-bottom: 1rem !important;\n }\n .ml-xl-3,\n.mx-xl-3 {\n margin-left: 1rem !important;\n }\n .m-xl-4 {\n margin: 1.5rem !important;\n }\n .mt-xl-4,\n.my-xl-4 {\n margin-top: 1.5rem !important;\n }\n .mr-xl-4,\n.mx-xl-4 {\n margin-right: 1.5rem !important;\n }\n .mb-xl-4,\n.my-xl-4 {\n margin-bottom: 1.5rem !important;\n }\n .ml-xl-4,\n.mx-xl-4 {\n margin-left: 1.5rem !important;\n }\n .m-xl-5 {\n margin: 3rem !important;\n }\n .mt-xl-5,\n.my-xl-5 {\n margin-top: 3rem !important;\n }\n .mr-xl-5,\n.mx-xl-5 {\n margin-right: 3rem !important;\n }\n .mb-xl-5,\n.my-xl-5 {\n margin-bottom: 3rem !important;\n }\n .ml-xl-5,\n.mx-xl-5 {\n margin-left: 3rem !important;\n }\n .p-xl-0 {\n padding: 0 !important;\n }\n .pt-xl-0,\n.py-xl-0 {\n padding-top: 0 !important;\n }\n .pr-xl-0,\n.px-xl-0 {\n padding-right: 0 !important;\n }\n .pb-xl-0,\n.py-xl-0 {\n padding-bottom: 0 !important;\n }\n .pl-xl-0,\n.px-xl-0 {\n padding-left: 0 !important;\n }\n .p-xl-1 {\n padding: 0.25rem !important;\n }\n .pt-xl-1,\n.py-xl-1 {\n padding-top: 0.25rem !important;\n }\n .pr-xl-1,\n.px-xl-1 {\n padding-right: 0.25rem !important;\n }\n .pb-xl-1,\n.py-xl-1 {\n padding-bottom: 0.25rem !important;\n }\n .pl-xl-1,\n.px-xl-1 {\n padding-left: 0.25rem !important;\n }\n .p-xl-2 {\n padding: 0.5rem !important;\n }\n .pt-xl-2,\n.py-xl-2 {\n padding-top: 0.5rem !important;\n }\n .pr-xl-2,\n.px-xl-2 {\n padding-right: 0.5rem !important;\n }\n .pb-xl-2,\n.py-xl-2 {\n padding-bottom: 0.5rem !important;\n }\n .pl-xl-2,\n.px-xl-2 {\n padding-left: 0.5rem !important;\n }\n .p-xl-3 {\n padding: 1rem !important;\n }\n .pt-xl-3,\n.py-xl-3 {\n padding-top: 1rem !important;\n }\n .pr-xl-3,\n.px-xl-3 {\n padding-right: 1rem !important;\n }\n .pb-xl-3,\n.py-xl-3 {\n padding-bottom: 1rem !important;\n }\n .pl-xl-3,\n.px-xl-3 {\n padding-left: 1rem !important;\n }\n .p-xl-4 {\n padding: 1.5rem !important;\n }\n .pt-xl-4,\n.py-xl-4 {\n padding-top: 1.5rem !important;\n }\n .pr-xl-4,\n.px-xl-4 {\n padding-right: 1.5rem !important;\n }\n .pb-xl-4,\n.py-xl-4 {\n padding-bottom: 1.5rem !important;\n }\n .pl-xl-4,\n.px-xl-4 {\n padding-left: 1.5rem !important;\n }\n .p-xl-5 {\n padding: 3rem !important;\n }\n .pt-xl-5,\n.py-xl-5 {\n padding-top: 3rem !important;\n }\n .pr-xl-5,\n.px-xl-5 {\n padding-right: 3rem !important;\n }\n .pb-xl-5,\n.py-xl-5 {\n padding-bottom: 3rem !important;\n }\n .pl-xl-5,\n.px-xl-5 {\n padding-left: 3rem !important;\n }\n .m-xl-auto {\n margin: auto !important;\n }\n .mt-xl-auto,\n.my-xl-auto {\n margin-top: auto !important;\n }\n .mr-xl-auto,\n.mx-xl-auto {\n margin-right: auto !important;\n }\n .mb-xl-auto,\n.my-xl-auto {\n margin-bottom: auto !important;\n }\n .ml-xl-auto,\n.mx-xl-auto {\n margin-left: auto !important;\n }\n}\n.text-justify {\n text-align: justify !important;\n}\n\n.text-nowrap {\n white-space: nowrap !important;\n}\n\n.text-truncate {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.text-left {\n text-align: left !important;\n}\n\n.text-right {\n text-align: right !important;\n}\n\n.text-center {\n text-align: center !important;\n}\n\n@media (min-width: 576px) {\n .text-sm-left {\n text-align: left !important;\n }\n .text-sm-right {\n text-align: right !important;\n }\n .text-sm-center {\n text-align: center !important;\n }\n}\n@media (min-width: 768px) {\n .text-md-left {\n text-align: left !important;\n }\n .text-md-right {\n text-align: right !important;\n }\n .text-md-center {\n text-align: center !important;\n }\n}\n@media (min-width: 992px) {\n .text-lg-left {\n text-align: left !important;\n }\n .text-lg-right {\n text-align: right !important;\n }\n .text-lg-center {\n text-align: center !important;\n }\n}\n@media (min-width: 1200px) {\n .text-xl-left {\n text-align: left !important;\n }\n .text-xl-right {\n text-align: right !important;\n }\n .text-xl-center {\n text-align: center !important;\n }\n}\n.text-lowercase {\n text-transform: lowercase !important;\n}\n\n.text-uppercase {\n text-transform: uppercase !important;\n}\n\n.text-capitalize {\n text-transform: capitalize !important;\n}\n\n.font-weight-light {\n font-weight: 300 !important;\n}\n\n.font-weight-normal {\n font-weight: 400 !important;\n}\n\n.font-weight-bold {\n font-weight: 700 !important;\n}\n\n.font-italic {\n font-style: italic !important;\n}\n\n.text-white {\n color: #fff !important;\n}\n\n.text-primary {\n color: #007bff !important;\n}\n\na.text-primary:focus, a.text-primary:hover {\n color: #0062cc !important;\n}\n\n.text-secondary {\n color: #868e96 !important;\n}\n\na.text-secondary:focus, a.text-secondary:hover {\n color: #6c757d !important;\n}\n\n.text-success {\n color: #28a745 !important;\n}\n\na.text-success:focus, a.text-success:hover {\n color: #1e7e34 !important;\n}\n\n.text-info {\n color: #17a2b8 !important;\n}\n\na.text-info:focus, a.text-info:hover {\n color: #117a8b !important;\n}\n\n.text-warning {\n color: #ffc107 !important;\n}\n\na.text-warning:focus, a.text-warning:hover {\n color: #d39e00 !important;\n}\n\n.text-danger {\n color: #dc3545 !important;\n}\n\na.text-danger:focus, a.text-danger:hover {\n color: #bd2130 !important;\n}\n\n.text-light {\n color: #f8f9fa !important;\n}\n\na.text-light:focus, a.text-light:hover {\n color: #dae0e5 !important;\n}\n\n.text-dark {\n color: #343a40 !important;\n}\n\na.text-dark:focus, a.text-dark:hover {\n color: #1d2124 !important;\n}\n\n.text-muted,\n.member-type, .member-namespace {\n color: #868e96 !important;\n}\n\n.text-hide {\n font: 0/0 a;\n color: transparent;\n text-shadow: none;\n background-color: transparent;\n border: 0;\n}\n\n.visible {\n visibility: visible !important;\n}\n\n.invisible {\n visibility: hidden !important;\n}\n\n/*# sourceMappingURL=bootstrap.css.map */\n/**\n * Syntax highlighting styles\n */\n.highlight {\n background: #f6f8fa;\n padding: 1rem 0 0.1rem 1rem;\n margin-bottom: 1rem;\n}\n.highlight .c {\n color: #998;\n font-style: italic;\n}\n.highlight .err {\n color: #a61717;\n background-color: #e3d2d2;\n}\n.highlight .k {\n font-weight: bold;\n}\n.highlight .o {\n font-weight: bold;\n}\n.highlight .cm {\n color: #998;\n font-style: italic;\n}\n.highlight .cp {\n color: #999;\n font-weight: bold;\n}\n.highlight .c1 {\n color: #998;\n font-style: italic;\n}\n.highlight .cs {\n color: #999;\n font-weight: bold;\n font-style: italic;\n}\n.highlight .gd {\n color: #000;\n background-color: #fdd;\n}\n.highlight .gd .x {\n color: #000;\n background-color: #faa;\n}\n.highlight .ge {\n font-style: italic;\n}\n.highlight .gr {\n color: #a00;\n}\n.highlight .gh {\n color: #999;\n}\n.highlight .gi {\n color: #000;\n background-color: #dfd;\n}\n.highlight .gi .x {\n color: #000;\n background-color: #afa;\n}\n.highlight .go {\n color: #888;\n}\n.highlight .gp {\n color: #555;\n}\n.highlight .gs {\n font-weight: bold;\n}\n.highlight .gu {\n color: #aaa;\n}\n.highlight .gt {\n color: #a00;\n}\n.highlight .kc {\n font-weight: bold;\n}\n.highlight .kd {\n font-weight: bold;\n}\n.highlight .kp {\n font-weight: bold;\n}\n.highlight .kr {\n font-weight: bold;\n}\n.highlight .kt {\n color: #458;\n font-weight: bold;\n}\n.highlight .m {\n color: #099;\n}\n.highlight .s {\n color: #d14;\n}\n.highlight .na {\n color: #008080;\n}\n.highlight .nb {\n color: #0086B3;\n}\n.highlight .nc {\n color: #458;\n font-weight: bold;\n}\n.highlight .no {\n color: #008080;\n}\n.highlight .ni {\n color: #800080;\n}\n.highlight .ne {\n color: #900;\n font-weight: bold;\n}\n.highlight .nf {\n color: #900;\n font-weight: bold;\n}\n.highlight .nn {\n color: #555;\n}\n.highlight .nt {\n color: #000080;\n}\n.highlight .nv {\n color: #008080;\n}\n.highlight .ow {\n font-weight: bold;\n}\n.highlight .w {\n color: #bbb;\n}\n.highlight .mf {\n color: #099;\n}\n.highlight .mh {\n color: #099;\n}\n.highlight .mi {\n color: #099;\n}\n.highlight .mo {\n color: #099;\n}\n.highlight .sb {\n color: #d14;\n}\n.highlight .sc {\n color: #d14;\n}\n.highlight .sd {\n color: #d14;\n}\n.highlight .s2 {\n color: #d14;\n}\n.highlight .se {\n color: #d14;\n}\n.highlight .sh {\n color: #d14;\n}\n.highlight .si {\n color: #d14;\n}\n.highlight .sx {\n color: #d14;\n}\n.highlight .sr {\n color: #009926;\n}\n.highlight .s1 {\n color: #d14;\n}\n.highlight .ss {\n color: #990073;\n}\n.highlight .bp {\n color: #999;\n}\n.highlight .vc {\n color: #008080;\n}\n.highlight .vg {\n color: #008080;\n}\n.highlight .vi {\n color: #008080;\n}\n.highlight .il {\n color: #099;\n}\n\n.highlight .hll {\n background-color: #ffffcc;\n}\n\n.highlight .c {\n color: #008000;\n} /* Comment */\n.highlight .err {\n border: 1px solid #FF0000;\n} /* Error */\n.highlight .k {\n color: #0000ff;\n} /* Keyword */\n.highlight .ch {\n color: #008000;\n} /* Comment.Hashbang */\n.highlight .cm {\n color: #008000;\n} /* Comment.Multiline */\n.highlight .cp {\n color: #0000ff;\n} /* Comment.Preproc */\n.highlight .cpf {\n color: #008000;\n} /* Comment.PreprocFile */\n.highlight .c1 {\n color: #008000;\n} /* Comment.Single */\n.highlight .cs {\n color: #008000;\n} /* Comment.Special */\n.highlight .ge {\n font-style: italic;\n} /* Generic.Emph */\n.highlight .gh {\n font-weight: bold;\n} /* Generic.Heading */\n.highlight .gp {\n font-weight: bold;\n} /* Generic.Prompt */\n.highlight .gs {\n font-weight: bold;\n} /* Generic.Strong */\n.highlight .gu {\n font-weight: bold;\n} /* Generic.Subheading */\n.highlight .kc {\n color: #0000ff;\n} /* Keyword.Constant */\n.highlight .kd {\n color: #0000ff;\n} /* Keyword.Declaration */\n.highlight .kn {\n color: #0000ff;\n} /* Keyword.Namespace */\n.highlight .kp {\n color: #0000ff;\n} /* Keyword.Pseudo */\n.highlight .kr {\n color: #0000ff;\n} /* Keyword.Reserved */\n.highlight .kt {\n color: #2b91af;\n} /* Keyword.Type */\n.highlight .s {\n color: #a31515;\n} /* Literal.String */\n.highlight .nc {\n color: #2b91af;\n} /* Name.Class */\n.highlight .ow {\n color: #0000ff;\n} /* Operator.Word */\n.highlight .sa {\n color: #a31515;\n} /* Literal.String.Affix */\n.highlight .sb {\n color: #a31515;\n} /* Literal.String.Backtick */\n.highlight .sc {\n color: #a31515;\n} /* Literal.String.Char */\n.highlight .dl {\n color: #a31515;\n} /* Literal.String.Delimiter */\n.highlight .sd {\n color: #a31515;\n} /* Literal.String.Doc */\n.highlight .s2 {\n color: #a31515;\n} /* Literal.String.Double */\n.highlight .se {\n color: #a31515;\n} /* Literal.String.Escape */\n.highlight .sh {\n color: #a31515;\n} /* Literal.String.Heredoc */\n.highlight .si {\n color: #a31515;\n} /* Literal.String.Interpol */\n.highlight .sx {\n color: #a31515;\n} /* Literal.String.Other */\n.highlight .sr {\n color: #a31515;\n} /* Literal.String.Regex */\n.highlight .s1 {\n color: #a31515;\n} /* Literal.String.Single */\n.highlight .ss {\n color: #a31515;\n} /* Literal.String.Symbol */\nbody {\n padding-top: 56px;\n width: 100%;\n height: 100%;\n}\n\nfooter {\n position: fixed;\n bottom: 0;\n width: 100%;\n background-color: #56A1D5;\n color: #222222;\n font-size: 0.8em;\n padding-left: 1rem;\n}\nfooter a {\n color: #222222 !important;\n}\n\nmain {\n height: calc(100% - 74px);\n width: 100%;\n transition: all 0.4s ease 0s;\n}\nmain h1,\nmain .h1 {\n margin-top: 1.5rem;\n text-transform: capitalize;\n}\nmain h2,\nmain .h2 {\n margin-top: 3rem;\n text-transform: capitalize;\n}\nmain h3,\nmain h4,\nmain h5,\nmain h6,\nmain .h3,\nmain .h4,\nmain .h5,\nmain .h6 {\n margin-top: 2rem;\n text-transform: capitalize;\n}\nmain ul ul {\n margin-bottom: 1em;\n}\nmain article {\n margin-bottom: 5rem;\n}\n\ncode {\n overflow-wrap: break-word;\n word-wrap: break-word;\n -ms-word-break: break-all;\n word-break: break-all;\n word-break: break-word;\n}\n\nblockquote {\n padding: 1rem;\n border-left: 3px solid #0B4B77;\n}\nblockquote p {\n margin: 0;\n}\n\n.bg-dark {\n background-color: #0B4B77 !important;\n}\n\n.btn-primary, .member-runner-link {\n background-color: #0275D8;\n border-color: #3983c3;\n}\n\n.btn-primary:hover, .member-runner-link:hover {\n background-color: #3983c3;\n}\n\n.embed-responsive {\n margin-bottom: 2rem;\n max-width: 800px;\n}\n\n.jumbotron img {\n width: 1em;\n height: 1em;\n}\n\n.jumbotron {\n margin-bottom: 3em;\n}\n\n.welcome {\n max-height: 350px;\n}\n\n.header .header-link {\n opacity: 0;\n transition: opacity 0.2s linear;\n}\n\n.header:hover .header-link:not(:hover),\n.header-link:hover {\n opacity: 1;\n}\n\n.beta {\n font-size: 0.8rem;\n font-weight: normal;\n background-color: #0275D8;\n}\n\n.legacy {\n font-size: 0.8rem;\n font-weight: normal;\n background-color: #ea1f56;\n}\n\n.sticky-warning {\n position: -webkit-sticky; /* Safari */\n position: sticky;\n top: 0;\n z-index: 1031;\n}\n\n.member {\n margin: 1rem 0;\n}\n\n.member-name {\n margin-top: auto;\n}\n\n.member-info table {\n margin-bottom: 0;\n}\n\n.member-namespace {\n font-size: 0.8rem;\n font-weight: normal;\n}\n\n.member-type {\n display: none;\n}\n\n.member-runner-link {\n float: right;\n}\n\n.member-parameters-list ul {\n margin: 0;\n}\n\n.member-parameters-list-param.enum-property {\n text-transform: capitalize;\n}\n\n@media (min-width: 768px) {\n #api-reference-search {\n position: sticky;\n z-index: 1040;\n top: 0.5rem;\n max-width: 30rem;\n float: right;\n }\n}\n.autocomplete {\n position: absolute;\n border: 1px solid #ddd;\n background-color: #fff;\n color: #444;\n list-style: none;\n padding: 2px;\n margin: 0;\n cursor: pointer;\n z-index: 10000;\n max-height: 300px;\n overflow-y: auto;\n overflow-x: hidden;\n border-radius: 3px;\n -webkit-transform: translateZ(0);\n min-width: 200px;\n}\n\n.autocompleteActive {\n font-size: 0.9em;\n max-height: 50%;\n overflow-x: hidden;\n overflow-y: auto;\n padding: 2px 0.4em;\n line-height: 1.5em;\n}\n\n.autocompleteStatic {\n font-weight: bold;\n margin: 0.8em 0 0.2em;\n background: #f7f7f7;\n overflow: auto;\n padding: 2px 0.4em;\n line-height: 1.5em;\n}\n\n.autocompleteLink {\n text-decoration: none;\n display: block;\n color: #000;\n}\n\n.autocompleteActive.activeHover {\n background-color: #0073ea;\n}\n\n.autocompleteActive.activeHover > .autocompleteLink {\n color: #fff;\n}\n\n/*\n* Sidebar\n*/\n#wrapper {\n padding-left: 250px;\n transition: all 0.4s ease 0s;\n}\n\n#sidebar-wrapper {\n margin-left: -250px;\n top: 56px;\n left: 250px;\n width: 250px;\n position: fixed;\n height: calc(100% - 56px);\n overflow-y: auto;\n overflow-x: hidden;\n z-index: 1000;\n transition: all 0.4s ease 0s;\n border-right: 1px solid #eee;\n padding: 30px 0;\n}\n\n#wrapper.active {\n padding-left: 0;\n}\n\n#wrapper.active #sidebar-wrapper {\n left: 0;\n}\n\n.sidebar {\n position: absolute;\n width: 250px;\n list-style: none;\n margin: 0;\n padding: 0;\n}\n\n.sidebar h4,\n.sidebar h5 {\n padding-left: 16px;\n}\n\n.sidebar .nav-item {\n width: 100%;\n}\n\n.sidebar .nav-item + .nav-item {\n margin-left: 0;\n}\n\n.sidebar .nav-link {\n border-radius: 0;\n}\n\n.sidebar h5:first-of-type {\n margin-top: 10px;\n}\n\n@media (max-width: 767px) {\n #wrapper {\n padding-left: 0;\n }\n #sidebar-wrapper {\n left: 0;\n }\n #wrapper.active {\n position: relative;\n left: 250px;\n }\n #wrapper.active #sidebar-wrapper {\n left: 250px;\n width: 250px;\n transition: all 0.4s ease 0s;\n }\n}\na {\n color: #006FE6;\n}","/*\nThe main SCSS file for everything, yep\n*/\n\n@import \"boostrap\";\n@import \"syntax-highlighting\";\nbody {\n padding-top: 56px;\n width: 100%;\n height: 100%;\n}\n\ntable {\n @extend .table;\n @extend .table-bordered;\n @extend .table-responsive;\n}\n\nfooter {\n position: fixed;\n bottom: 0;\n width: 100%;\n background-color: #56A1D5;\n color: #222222;\n font-size: 0.8em;\n padding-left: 1rem;\n\n a {\n color: #222222 !important;\n }\n}\n\nmain {\n height: calc(100% - 74px);\n width: 100%;\n transition: all 0.4s ease 0s;\n h1,\n .h1 {\n margin-top: 1.5rem;\n text-transform: capitalize;\n }\n\n h2,\n .h2 {\n margin-top: 3rem;\n text-transform: capitalize;\n }\n\n h3,\n h4,\n h5,\n h6,\n .h3,\n .h4,\n .h5,\n .h6 {\n margin-top: 2rem;\n text-transform: capitalize;\n }\n\n img:not(.welcome) {\n @extend .img-thumbnail;\n }\n\n ul {\n ul {\n margin-bottom: 1em;\n }\n }\n\n article {\n margin-bottom: 5rem;\n }\n}\n\ncode {\n overflow-wrap: break-word;\n word-wrap: break-word;\n -ms-word-break: break-all;\n word-break: break-all;\n word-break: break-word;\n}\n\nblockquote {\n padding: 1rem;\n border-left: 3px solid #0B4B77;\n @extend .bg-light;\n p {\n margin: 0;\n }\n}\n\n.bg-dark {\n background-color: #0B4B77 !important;\n // background: linear-gradient(to right, #0B4B77 0, #0B4B77 20%, #1179B6 50%, #0B4B77 80%, #0B4B77 100%);\n}\n\n.btn-primary {\n background-color: #0275D8;\n border-color: #3983c3; \n}\n\n.btn-primary:hover {\n background-color: #3983c3;\n}\n\n.embed-responsive {\n margin-bottom: 2rem;\n max-width: 800px;\n}\n\n// welcome\n.jumbotron img {\n width: 1em;\n height: 1em;\n}\n\n.jumbotron {\n margin-bottom: 3em;\n}\n\n.welcome {\n max-height: 350px;\n}\n\n// permalinks\n.header .header-link {\n opacity: 0;\n transition: opacity 0.2s linear;\n}\n\n.header:hover .header-link:not(:hover),\n.header-link:hover {\n opacity: 1;\n}\n\n// reference\n.beta {\n @extend .badge;\n @extend .badge-pill;\n @extend .badge-info;\n font-size: 0.8rem;\n font-weight: normal;\n background-color: #0275D8;\n}\n\n.legacy {\n @extend .badge;\n @extend .badge-pill;\n @extend .badge-info;\n font-size: 0.8rem;\n font-weight: normal;\n background-color: #ea1f56;\n}\n\n.sticky-warning {\n position: -webkit-sticky; /* Safari */\n position: sticky;\n top: 0;\n z-index: 1031;\n}\n\n.member {\n @extend .card;\n margin: 1rem 0;\n}\n\n.member-name {\n margin-top: auto;\n}\n\n.member-info {\n @extend .card-body;\n}\n\n.member-info table {\n margin-bottom: 0;\n}\n\n.member-namespace {\n @extend .text-muted;\n font-size: 0.8rem;\n font-weight: normal;\n}\n\n.member-type {\n display: none;\n}\n\n.member-namespace,\n.member-type {\n @extend .text-muted;\n}\n\n.member-runner-link {\n @extend .btn;\n @extend .btn-primary;\n @extend .btn-sm;\n float: right;\n}\n\n.member-parameters-list ul {\n margin: 0;\n}\n\n.member-parameters-list-param.enum-property {\n text-transform: capitalize;\n}\n\n@media (min-width: 768px) {\n #api-reference-search {\n position: sticky;\n z-index: 1040;\n top: 0.5rem;\n max-width: 30rem;\n float: right;\n }\n}\n\n.autocomplete {\n position: absolute;\n border: 1px solid #ddd;\n background-color: #fff;\n color: #444;\n list-style: none;\n padding: 2px;\n margin: 0;\n cursor: pointer;\n z-index: 10000;\n max-height: 300px;\n overflow-y: auto;\n overflow-x: hidden;\n border-radius: 3px;\n -webkit-transform: translateZ(0);\n min-width: 200px;\n}\n\n.autocompleteActive {\n font-size: 0.9em;\n max-height: 50%;\n overflow-x: hidden;\n overflow-y: auto;\n padding: 2px .4em;\n line-height: 1.5em;\n}\n\n.autocompleteStatic {\n font-weight: bold;\n margin: .8em 0 .2em;\n background: #f7f7f7;\n overflow: auto;\n padding: 2px .4em;\n line-height: 1.5em;\n}\n\n.autocompleteLink {\n text-decoration: none;\n display: block;\n color: #000;\n}\n\n.autocompleteActive.activeHover {\n background-color: #0073ea;\n}\n\n.autocompleteActive.activeHover>.autocompleteLink {\n color: #fff;\n}\n\n\n/*\n* Sidebar\n*/\n\n#wrapper {\n padding-left: 250px;\n transition: all 0.4s ease 0s;\n}\n\n#sidebar-wrapper {\n margin-left: -250px;\n top: 56px;\n left: 250px;\n width: 250px;\n position: fixed;\n height: calc(100% - 56px);\n overflow-y: auto;\n overflow-x: hidden;\n z-index: 1000;\n transition: all 0.4s ease 0s;\n border-right: 1px solid #eee;\n padding: 30px 0;\n}\n\n#wrapper.active {\n padding-left: 0;\n}\n\n#wrapper.active #sidebar-wrapper {\n left: 0;\n}\n\n.sidebar {\n position: absolute;\n width: 250px;\n list-style: none;\n margin: 0;\n padding: 0;\n}\n\n.sidebar h4,\n.sidebar h5 {\n padding-left: 16px;\n}\n\n.sidebar .nav-item {\n width: 100%;\n}\n\n.sidebar .nav-item+.nav-item {\n margin-left: 0;\n}\n\n.sidebar .nav-link {\n border-radius: 0;\n}\n\n.sidebar h5:first-of-type {\n margin-top: 10px;\n}\n\n@media (max-width:767px) {\n #wrapper {\n padding-left: 0;\n }\n #sidebar-wrapper {\n left: 0;\n }\n #wrapper.active {\n position: relative;\n left: 250px;\n }\n #wrapper.active #sidebar-wrapper {\n left: 250px;\n width: 250px;\n transition: all 0.4s ease 0s;\n }\n}\n\na {\n color: #006FE6; \n}","/*!\n * Bootstrap v4.0.0-beta.2 (https://getbootstrap.com)\n * Copyright 2011-2017 The Bootstrap Authors\n * Copyright 2011-2017 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n */\n :root {\n --blue: #007bff;\n --indigo: #6610f2;\n --purple: #6f42c1;\n --pink: #e83e8c;\n --red: #dc3545;\n --orange: #fd7e14;\n --yellow: #ffc107;\n --green: #28a745;\n --teal: #20c997;\n --cyan: #17a2b8;\n --white: #fff;\n --gray: #868e96;\n --gray-dark: #343a40;\n --primary: #007bff;\n --secondary: #868e96;\n --success: #28a745;\n --info: #17a2b8;\n --warning: #ffc107;\n --danger: #dc3545;\n --light: #f8f9fa;\n --dark: #343a40;\n --breakpoint-xs: 0;\n --breakpoint-sm: 576px;\n --breakpoint-md: 768px;\n --breakpoint-lg: 992px;\n --breakpoint-xl: 1200px;\n --font-family-sans-serif: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";\n --font-family-monospace: SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace;\n }\n \n @media print {\n *,\n *::before,\n *::after {\n text-shadow: none !important;\n box-shadow: none !important;\n }\n a,\n a:visited {\n text-decoration: underline;\n }\n abbr[title]::after {\n content: \" (\" attr(title) \")\";\n }\n pre {\n white-space: pre-wrap !important;\n }\n pre,\n blockquote {\n border: 1px solid #999;\n page-break-inside: avoid;\n }\n thead {\n display: table-header-group;\n }\n tr,\n img {\n page-break-inside: avoid;\n }\n p,\n h2,\n h3 {\n orphans: 3;\n widows: 3;\n }\n h2,\n h3 {\n page-break-after: avoid;\n }\n .navbar {\n display: none;\n }\n .badge {\n border: 1px solid #000;\n }\n .table {\n border-collapse: collapse !important;\n }\n .table td,\n .table th {\n background-color: #fff !important;\n }\n .table-bordered th,\n .table-bordered td {\n border: 1px solid #ddd !important;\n }\n }\n \n *,\n *::before,\n *::after {\n box-sizing: border-box;\n }\n \n html {\n font-family: sans-serif;\n line-height: 1.15;\n -webkit-text-size-adjust: 100%;\n -ms-text-size-adjust: 100%;\n -ms-overflow-style: scrollbar;\n -webkit-tap-highlight-color: transparent;\n }\n \n @-ms-viewport {\n width: device-width;\n }\n \n article, aside, dialog, figcaption, figure, footer, header, hgroup, main, nav, section {\n display: block;\n }\n \n body {\n margin: 0;\n font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";\n font-size: 1rem;\n font-weight: 400;\n line-height: 1.5;\n color: #212529;\n text-align: left;\n background-color: #fff;\n }\n \n [tabindex=\"-1\"]:focus {\n outline: 0 !important;\n }\n \n hr {\n box-sizing: content-box;\n height: 0;\n overflow: visible;\n }\n \n h1, h2, h3, h4, h5, h6 {\n margin-top: 0;\n margin-bottom: 0.5rem;\n }\n \n p {\n margin-top: 0;\n margin-bottom: 1rem;\n }\n \n abbr[title],\n abbr[data-original-title] {\n text-decoration: underline;\n -webkit-text-decoration: underline dotted;\n text-decoration: underline dotted;\n cursor: help;\n border-bottom: 0;\n }\n \n address {\n margin-bottom: 1rem;\n font-style: normal;\n line-height: inherit;\n }\n \n ol,\n ul,\n dl {\n margin-top: 0;\n margin-bottom: 1rem;\n }\n \n ol ol,\n ul ul,\n ol ul,\n ul ol {\n margin-bottom: 0;\n }\n \n dt {\n font-weight: 700;\n }\n \n dd {\n margin-bottom: .5rem;\n margin-left: 0;\n }\n \n blockquote {\n margin: 0 0 1rem;\n }\n \n dfn {\n font-style: italic;\n }\n \n b,\n strong {\n font-weight: bolder;\n }\n \n small {\n font-size: 80%;\n }\n \n sub,\n sup {\n position: relative;\n font-size: 75%;\n line-height: 0;\n vertical-align: baseline;\n }\n \n sub {\n bottom: -.25em;\n }\n \n sup {\n top: -.5em;\n }\n \n a {\n color: #007bff;\n text-decoration: none;\n background-color: transparent;\n -webkit-text-decoration-skip: objects;\n }\n \n a:hover {\n color: #0056b3;\n text-decoration: underline;\n }\n \n a:not([href]):not([tabindex]) {\n color: inherit;\n text-decoration: none;\n }\n \n a:not([href]):not([tabindex]):focus, a:not([href]):not([tabindex]):hover {\n color: inherit;\n text-decoration: none;\n }\n \n a:not([href]):not([tabindex]):focus {\n outline: 0;\n }\n \n pre,\n code,\n kbd,\n samp {\n font-family: monospace, monospace;\n font-size: 1em;\n }\n \n pre {\n margin-top: 0;\n margin-bottom: 1rem;\n overflow: auto;\n -ms-overflow-style: scrollbar;\n }\n \n figure {\n margin: 0 0 1rem;\n }\n \n img {\n vertical-align: middle;\n border-style: none;\n }\n \n svg:not(:root) {\n overflow: hidden;\n }\n \n a,\n area,\n button,\n [role=\"button\"],\n input:not([type=\"range\"]),\n label,\n select,\n summary,\n textarea {\n -ms-touch-action: manipulation;\n touch-action: manipulation;\n }\n \n table {\n border-collapse: collapse;\n }\n \n caption {\n padding-top: 0.75rem;\n padding-bottom: 0.75rem;\n color: #868e96;\n text-align: left;\n caption-side: bottom;\n }\n \n th {\n text-align: inherit;\n }\n \n label {\n display: inline-block;\n margin-bottom: .5rem;\n }\n \n button {\n border-radius: 0;\n }\n \n button:focus {\n outline: 1px dotted;\n outline: 5px auto -webkit-focus-ring-color;\n }\n \n input,\n button,\n select,\n optgroup,\n textarea {\n margin: 0;\n font-family: inherit;\n font-size: inherit;\n line-height: inherit;\n }\n \n button,\n input {\n overflow: visible;\n }\n \n button,\n select {\n text-transform: none;\n }\n \n button,\n html [type=\"button\"],\n [type=\"reset\"],\n [type=\"submit\"] {\n -webkit-appearance: button;\n }\n \n button::-moz-focus-inner,\n [type=\"button\"]::-moz-focus-inner,\n [type=\"reset\"]::-moz-focus-inner,\n [type=\"submit\"]::-moz-focus-inner {\n padding: 0;\n border-style: none;\n }\n \n input[type=\"radio\"],\n input[type=\"checkbox\"] {\n box-sizing: border-box;\n padding: 0;\n }\n \n input[type=\"date\"],\n input[type=\"time\"],\n input[type=\"datetime-local\"],\n input[type=\"month\"] {\n -webkit-appearance: listbox;\n }\n \n textarea {\n overflow: auto;\n resize: vertical;\n }\n \n fieldset {\n min-width: 0;\n padding: 0;\n margin: 0;\n border: 0;\n }\n \n legend {\n display: block;\n width: 100%;\n max-width: 100%;\n padding: 0;\n margin-bottom: .5rem;\n font-size: 1.5rem;\n line-height: inherit;\n color: inherit;\n white-space: normal;\n }\n \n progress {\n vertical-align: baseline;\n }\n \n [type=\"number\"]::-webkit-inner-spin-button,\n [type=\"number\"]::-webkit-outer-spin-button {\n height: auto;\n }\n \n [type=\"search\"] {\n outline-offset: -2px;\n -webkit-appearance: none;\n }\n \n [type=\"search\"]::-webkit-search-cancel-button,\n [type=\"search\"]::-webkit-search-decoration {\n -webkit-appearance: none;\n }\n \n ::-webkit-file-upload-button {\n font: inherit;\n -webkit-appearance: button;\n }\n \n output {\n display: inline-block;\n }\n \n summary {\n display: list-item;\n }\n \n template {\n display: none;\n }\n \n [hidden] {\n display: none !important;\n }\n \n h1, h2, h3, h4, h5, h6,\n .h1, .h2, .h3, .h4, .h5, .h6 {\n margin-bottom: 0.5rem;\n font-family: inherit;\n font-weight: 500;\n line-height: 1.2;\n color: inherit;\n }\n \n h1, .h1 {\n font-size: 2.5rem;\n }\n \n h2, .h2 {\n font-size: 2rem;\n }\n \n h3, .h3 {\n font-size: 1.75rem;\n }\n \n h4, .h4 {\n font-size: 1.5rem;\n }\n \n h5, .h5 {\n font-size: 1.25rem;\n }\n \n h6, .h6 {\n font-size: 1rem;\n }\n \n .lead {\n font-size: 1.25rem;\n font-weight: 300;\n }\n \n .display-1 {\n font-size: 6rem;\n font-weight: 300;\n line-height: 1.2;\n }\n \n .display-2 {\n font-size: 5.5rem;\n font-weight: 300;\n line-height: 1.2;\n }\n \n .display-3 {\n font-size: 4.5rem;\n font-weight: 300;\n line-height: 1.2;\n }\n \n .display-4 {\n font-size: 3.5rem;\n font-weight: 300;\n line-height: 1.2;\n }\n \n hr {\n margin-top: 1rem;\n margin-bottom: 1rem;\n border: 0;\n border-top: 1px solid rgba(0, 0, 0, 0.1);\n }\n \n small,\n .small {\n font-size: 80%;\n font-weight: 400;\n }\n \n mark,\n .mark {\n padding: 0.2em;\n background-color: #fcf8e3;\n }\n \n .list-unstyled {\n padding-left: 0;\n list-style: none;\n }\n \n .list-inline {\n padding-left: 0;\n list-style: none;\n }\n \n .list-inline-item {\n display: inline-block;\n }\n \n .list-inline-item:not(:last-child) {\n margin-right: 0.5rem;\n }\n \n .initialism {\n font-size: 90%;\n text-transform: uppercase;\n }\n \n .blockquote {\n margin-bottom: 1rem;\n font-size: 1.25rem;\n }\n \n .blockquote-footer {\n display: block;\n font-size: 80%;\n color: #868e96;\n }\n \n .blockquote-footer::before {\n content: \"\\2014 \\00A0\";\n }\n \n .img-fluid {\n max-width: 100%;\n height: auto;\n }\n \n .img-thumbnail {\n padding: 0.25rem;\n background-color: #fff;\n border: 1px solid #dee2e6;\n border-radius: 0.25rem;\n max-width: 100%;\n height: auto;\n }\n \n .figure {\n display: inline-block;\n }\n \n .figure-img {\n margin-bottom: 0.5rem;\n line-height: 1;\n }\n \n .figure-caption {\n font-size: 90%;\n color: #868e96;\n }\n \n code,\n kbd,\n pre,\n samp {\n font-family: SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace;\n }\n \n code {\n padding: 0.2rem 0.4rem;\n font-size: 90%;\n color: #bd4147;\n background-color: #f8f9fa;\n border-radius: 0.25rem;\n }\n \n a > code {\n padding: 0;\n color: inherit;\n background-color: inherit;\n }\n \n kbd {\n padding: 0.2rem 0.4rem;\n font-size: 90%;\n color: #fff;\n background-color: #212529;\n border-radius: 0.2rem;\n }\n \n kbd kbd {\n padding: 0;\n font-size: 100%;\n font-weight: 700;\n }\n \n pre {\n display: block;\n font-size: 90%;\n color: #212529;\n }\n \n pre code {\n padding: 0;\n font-size: inherit;\n color: inherit;\n background-color: transparent;\n border-radius: 0;\n }\n \n .pre-scrollable {\n max-height: 340px;\n overflow-y: scroll;\n }\n \n .container {\n width: 100%;\n padding-right: 15px;\n padding-left: 15px;\n margin-right: auto;\n margin-left: auto;\n }\n \n @media (min-width: 576px) {\n .container {\n max-width: 540px;\n }\n }\n \n @media (min-width: 768px) {\n .container {\n max-width: 720px;\n }\n }\n \n @media (min-width: 992px) {\n .container {\n max-width: 960px;\n }\n }\n \n @media (min-width: 1200px) {\n .container {\n max-width: 1140px;\n }\n }\n \n .container-fluid {\n width: 100%;\n padding-right: 15px;\n padding-left: 15px;\n margin-right: auto;\n margin-left: auto;\n }\n \n .row {\n display: -ms-flexbox;\n display: flex;\n -ms-flex-wrap: wrap;\n flex-wrap: wrap;\n margin-right: -15px;\n margin-left: -15px;\n }\n \n .no-gutters {\n margin-right: 0;\n margin-left: 0;\n }\n \n .no-gutters > .col,\n .no-gutters > [class*=\"col-\"] {\n padding-right: 0;\n padding-left: 0;\n }\n \n .col-1, .col-2, .col-3, .col-4, .col-5, .col-6, .col-7, .col-8, .col-9, .col-10, .col-11, .col-12, .col,\n .col-auto, .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12, .col-sm,\n .col-sm-auto, .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12, .col-md,\n .col-md-auto, .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12, .col-lg,\n .col-lg-auto, .col-xl-1, .col-xl-2, .col-xl-3, .col-xl-4, .col-xl-5, .col-xl-6, .col-xl-7, .col-xl-8, .col-xl-9, .col-xl-10, .col-xl-11, .col-xl-12, .col-xl,\n .col-xl-auto {\n position: relative;\n width: 100%;\n min-height: 1px;\n padding-right: 15px;\n padding-left: 15px;\n }\n \n .col {\n -ms-flex-preferred-size: 0;\n flex-basis: 0;\n -ms-flex-positive: 1;\n flex-grow: 1;\n max-width: 100%;\n }\n \n .col-auto {\n -ms-flex: 0 0 auto;\n flex: 0 0 auto;\n width: auto;\n max-width: none;\n }\n \n .col-1 {\n -ms-flex: 0 0 8.333333%;\n flex: 0 0 8.333333%;\n max-width: 8.333333%;\n }\n \n .col-2 {\n -ms-flex: 0 0 16.666667%;\n flex: 0 0 16.666667%;\n max-width: 16.666667%;\n }\n \n .col-3 {\n -ms-flex: 0 0 25%;\n flex: 0 0 25%;\n max-width: 25%;\n }\n \n .col-4 {\n -ms-flex: 0 0 33.333333%;\n flex: 0 0 33.333333%;\n max-width: 33.333333%;\n }\n \n .col-5 {\n -ms-flex: 0 0 41.666667%;\n flex: 0 0 41.666667%;\n max-width: 41.666667%;\n }\n \n .col-6 {\n -ms-flex: 0 0 50%;\n flex: 0 0 50%;\n max-width: 50%;\n }\n \n .col-7 {\n -ms-flex: 0 0 58.333333%;\n flex: 0 0 58.333333%;\n max-width: 58.333333%;\n }\n \n .col-8 {\n -ms-flex: 0 0 66.666667%;\n flex: 0 0 66.666667%;\n max-width: 66.666667%;\n }\n \n .col-9 {\n -ms-flex: 0 0 75%;\n flex: 0 0 75%;\n max-width: 75%;\n }\n \n .col-10 {\n -ms-flex: 0 0 83.333333%;\n flex: 0 0 83.333333%;\n max-width: 83.333333%;\n }\n \n .col-11 {\n -ms-flex: 0 0 91.666667%;\n flex: 0 0 91.666667%;\n max-width: 91.666667%;\n }\n \n .col-12 {\n -ms-flex: 0 0 100%;\n flex: 0 0 100%;\n max-width: 100%;\n }\n \n .order-first {\n -ms-flex-order: -1;\n order: -1;\n }\n \n .order-1 {\n -ms-flex-order: 1;\n order: 1;\n }\n \n .order-2 {\n -ms-flex-order: 2;\n order: 2;\n }\n \n .order-3 {\n -ms-flex-order: 3;\n order: 3;\n }\n \n .order-4 {\n -ms-flex-order: 4;\n order: 4;\n }\n \n .order-5 {\n -ms-flex-order: 5;\n order: 5;\n }\n \n .order-6 {\n -ms-flex-order: 6;\n order: 6;\n }\n \n .order-7 {\n -ms-flex-order: 7;\n order: 7;\n }\n \n .order-8 {\n -ms-flex-order: 8;\n order: 8;\n }\n \n .order-9 {\n -ms-flex-order: 9;\n order: 9;\n }\n \n .order-10 {\n -ms-flex-order: 10;\n order: 10;\n }\n \n .order-11 {\n -ms-flex-order: 11;\n order: 11;\n }\n \n .order-12 {\n -ms-flex-order: 12;\n order: 12;\n }\n \n .offset-1 {\n margin-left: 8.333333%;\n }\n \n .offset-2 {\n margin-left: 16.666667%;\n }\n \n .offset-3 {\n margin-left: 25%;\n }\n \n .offset-4 {\n margin-left: 33.333333%;\n }\n \n .offset-5 {\n margin-left: 41.666667%;\n }\n \n .offset-6 {\n margin-left: 50%;\n }\n \n .offset-7 {\n margin-left: 58.333333%;\n }\n \n .offset-8 {\n margin-left: 66.666667%;\n }\n \n .offset-9 {\n margin-left: 75%;\n }\n \n .offset-10 {\n margin-left: 83.333333%;\n }\n \n .offset-11 {\n margin-left: 91.666667%;\n }\n \n @media (min-width: 576px) {\n .col-sm {\n -ms-flex-preferred-size: 0;\n flex-basis: 0;\n -ms-flex-positive: 1;\n flex-grow: 1;\n max-width: 100%;\n }\n .col-sm-auto {\n -ms-flex: 0 0 auto;\n flex: 0 0 auto;\n width: auto;\n max-width: none;\n }\n .col-sm-1 {\n -ms-flex: 0 0 8.333333%;\n flex: 0 0 8.333333%;\n max-width: 8.333333%;\n }\n .col-sm-2 {\n -ms-flex: 0 0 16.666667%;\n flex: 0 0 16.666667%;\n max-width: 16.666667%;\n }\n .col-sm-3 {\n -ms-flex: 0 0 25%;\n flex: 0 0 25%;\n max-width: 25%;\n }\n .col-sm-4 {\n -ms-flex: 0 0 33.333333%;\n flex: 0 0 33.333333%;\n max-width: 33.333333%;\n }\n .col-sm-5 {\n -ms-flex: 0 0 41.666667%;\n flex: 0 0 41.666667%;\n max-width: 41.666667%;\n }\n .col-sm-6 {\n -ms-flex: 0 0 50%;\n flex: 0 0 50%;\n max-width: 50%;\n }\n .col-sm-7 {\n -ms-flex: 0 0 58.333333%;\n flex: 0 0 58.333333%;\n max-width: 58.333333%;\n }\n .col-sm-8 {\n -ms-flex: 0 0 66.666667%;\n flex: 0 0 66.666667%;\n max-width: 66.666667%;\n }\n .col-sm-9 {\n -ms-flex: 0 0 75%;\n flex: 0 0 75%;\n max-width: 75%;\n }\n .col-sm-10 {\n -ms-flex: 0 0 83.333333%;\n flex: 0 0 83.333333%;\n max-width: 83.333333%;\n }\n .col-sm-11 {\n -ms-flex: 0 0 91.666667%;\n flex: 0 0 91.666667%;\n max-width: 91.666667%;\n }\n .col-sm-12 {\n -ms-flex: 0 0 100%;\n flex: 0 0 100%;\n max-width: 100%;\n }\n .order-sm-first {\n -ms-flex-order: -1;\n order: -1;\n }\n .order-sm-1 {\n -ms-flex-order: 1;\n order: 1;\n }\n .order-sm-2 {\n -ms-flex-order: 2;\n order: 2;\n }\n .order-sm-3 {\n -ms-flex-order: 3;\n order: 3;\n }\n .order-sm-4 {\n -ms-flex-order: 4;\n order: 4;\n }\n .order-sm-5 {\n -ms-flex-order: 5;\n order: 5;\n }\n .order-sm-6 {\n -ms-flex-order: 6;\n order: 6;\n }\n .order-sm-7 {\n -ms-flex-order: 7;\n order: 7;\n }\n .order-sm-8 {\n -ms-flex-order: 8;\n order: 8;\n }\n .order-sm-9 {\n -ms-flex-order: 9;\n order: 9;\n }\n .order-sm-10 {\n -ms-flex-order: 10;\n order: 10;\n }\n .order-sm-11 {\n -ms-flex-order: 11;\n order: 11;\n }\n .order-sm-12 {\n -ms-flex-order: 12;\n order: 12;\n }\n .offset-sm-0 {\n margin-left: 0;\n }\n .offset-sm-1 {\n margin-left: 8.333333%;\n }\n .offset-sm-2 {\n margin-left: 16.666667%;\n }\n .offset-sm-3 {\n margin-left: 25%;\n }\n .offset-sm-4 {\n margin-left: 33.333333%;\n }\n .offset-sm-5 {\n margin-left: 41.666667%;\n }\n .offset-sm-6 {\n margin-left: 50%;\n }\n .offset-sm-7 {\n margin-left: 58.333333%;\n }\n .offset-sm-8 {\n margin-left: 66.666667%;\n }\n .offset-sm-9 {\n margin-left: 75%;\n }\n .offset-sm-10 {\n margin-left: 83.333333%;\n }\n .offset-sm-11 {\n margin-left: 91.666667%;\n }\n }\n \n @media (min-width: 768px) {\n .col-md {\n -ms-flex-preferred-size: 0;\n flex-basis: 0;\n -ms-flex-positive: 1;\n flex-grow: 1;\n max-width: 100%;\n }\n .col-md-auto {\n -ms-flex: 0 0 auto;\n flex: 0 0 auto;\n width: auto;\n max-width: none;\n }\n .col-md-1 {\n -ms-flex: 0 0 8.333333%;\n flex: 0 0 8.333333%;\n max-width: 8.333333%;\n }\n .col-md-2 {\n -ms-flex: 0 0 16.666667%;\n flex: 0 0 16.666667%;\n max-width: 16.666667%;\n }\n .col-md-3 {\n -ms-flex: 0 0 25%;\n flex: 0 0 25%;\n max-width: 25%;\n }\n .col-md-4 {\n -ms-flex: 0 0 33.333333%;\n flex: 0 0 33.333333%;\n max-width: 33.333333%;\n }\n .col-md-5 {\n -ms-flex: 0 0 41.666667%;\n flex: 0 0 41.666667%;\n max-width: 41.666667%;\n }\n .col-md-6 {\n -ms-flex: 0 0 50%;\n flex: 0 0 50%;\n max-width: 50%;\n }\n .col-md-7 {\n -ms-flex: 0 0 58.333333%;\n flex: 0 0 58.333333%;\n max-width: 58.333333%;\n }\n .col-md-8 {\n -ms-flex: 0 0 66.666667%;\n flex: 0 0 66.666667%;\n max-width: 66.666667%;\n }\n .col-md-9 {\n -ms-flex: 0 0 75%;\n flex: 0 0 75%;\n max-width: 75%;\n }\n .col-md-10 {\n -ms-flex: 0 0 83.333333%;\n flex: 0 0 83.333333%;\n max-width: 83.333333%;\n }\n .col-md-11 {\n -ms-flex: 0 0 91.666667%;\n flex: 0 0 91.666667%;\n max-width: 91.666667%;\n }\n .col-md-12 {\n -ms-flex: 0 0 100%;\n flex: 0 0 100%;\n max-width: 100%;\n }\n .order-md-first {\n -ms-flex-order: -1;\n order: -1;\n }\n .order-md-1 {\n -ms-flex-order: 1;\n order: 1;\n }\n .order-md-2 {\n -ms-flex-order: 2;\n order: 2;\n }\n .order-md-3 {\n -ms-flex-order: 3;\n order: 3;\n }\n .order-md-4 {\n -ms-flex-order: 4;\n order: 4;\n }\n .order-md-5 {\n -ms-flex-order: 5;\n order: 5;\n }\n .order-md-6 {\n -ms-flex-order: 6;\n order: 6;\n }\n .order-md-7 {\n -ms-flex-order: 7;\n order: 7;\n }\n .order-md-8 {\n -ms-flex-order: 8;\n order: 8;\n }\n .order-md-9 {\n -ms-flex-order: 9;\n order: 9;\n }\n .order-md-10 {\n -ms-flex-order: 10;\n order: 10;\n }\n .order-md-11 {\n -ms-flex-order: 11;\n order: 11;\n }\n .order-md-12 {\n -ms-flex-order: 12;\n order: 12;\n }\n .offset-md-0 {\n margin-left: 0;\n }\n .offset-md-1 {\n margin-left: 8.333333%;\n }\n .offset-md-2 {\n margin-left: 16.666667%;\n }\n .offset-md-3 {\n margin-left: 25%;\n }\n .offset-md-4 {\n margin-left: 33.333333%;\n }\n .offset-md-5 {\n margin-left: 41.666667%;\n }\n .offset-md-6 {\n margin-left: 50%;\n }\n .offset-md-7 {\n margin-left: 58.333333%;\n }\n .offset-md-8 {\n margin-left: 66.666667%;\n }\n .offset-md-9 {\n margin-left: 75%;\n }\n .offset-md-10 {\n margin-left: 83.333333%;\n }\n .offset-md-11 {\n margin-left: 91.666667%;\n }\n }\n \n @media (min-width: 992px) {\n .col-lg {\n -ms-flex-preferred-size: 0;\n flex-basis: 0;\n -ms-flex-positive: 1;\n flex-grow: 1;\n max-width: 100%;\n }\n .col-lg-auto {\n -ms-flex: 0 0 auto;\n flex: 0 0 auto;\n width: auto;\n max-width: none;\n }\n .col-lg-1 {\n -ms-flex: 0 0 8.333333%;\n flex: 0 0 8.333333%;\n max-width: 8.333333%;\n }\n .col-lg-2 {\n -ms-flex: 0 0 16.666667%;\n flex: 0 0 16.666667%;\n max-width: 16.666667%;\n }\n .col-lg-3 {\n -ms-flex: 0 0 25%;\n flex: 0 0 25%;\n max-width: 25%;\n }\n .col-lg-4 {\n -ms-flex: 0 0 33.333333%;\n flex: 0 0 33.333333%;\n max-width: 33.333333%;\n }\n .col-lg-5 {\n -ms-flex: 0 0 41.666667%;\n flex: 0 0 41.666667%;\n max-width: 41.666667%;\n }\n .col-lg-6 {\n -ms-flex: 0 0 50%;\n flex: 0 0 50%;\n max-width: 50%;\n }\n .col-lg-7 {\n -ms-flex: 0 0 58.333333%;\n flex: 0 0 58.333333%;\n max-width: 58.333333%;\n }\n .col-lg-8 {\n -ms-flex: 0 0 66.666667%;\n flex: 0 0 66.666667%;\n max-width: 66.666667%;\n }\n .col-lg-9 {\n -ms-flex: 0 0 75%;\n flex: 0 0 75%;\n max-width: 75%;\n }\n .col-lg-10 {\n -ms-flex: 0 0 83.333333%;\n flex: 0 0 83.333333%;\n max-width: 83.333333%;\n }\n .col-lg-11 {\n -ms-flex: 0 0 91.666667%;\n flex: 0 0 91.666667%;\n max-width: 91.666667%;\n }\n .col-lg-12 {\n -ms-flex: 0 0 100%;\n flex: 0 0 100%;\n max-width: 100%;\n }\n .order-lg-first {\n -ms-flex-order: -1;\n order: -1;\n }\n .order-lg-1 {\n -ms-flex-order: 1;\n order: 1;\n }\n .order-lg-2 {\n -ms-flex-order: 2;\n order: 2;\n }\n .order-lg-3 {\n -ms-flex-order: 3;\n order: 3;\n }\n .order-lg-4 {\n -ms-flex-order: 4;\n order: 4;\n }\n .order-lg-5 {\n -ms-flex-order: 5;\n order: 5;\n }\n .order-lg-6 {\n -ms-flex-order: 6;\n order: 6;\n }\n .order-lg-7 {\n -ms-flex-order: 7;\n order: 7;\n }\n .order-lg-8 {\n -ms-flex-order: 8;\n order: 8;\n }\n .order-lg-9 {\n -ms-flex-order: 9;\n order: 9;\n }\n .order-lg-10 {\n -ms-flex-order: 10;\n order: 10;\n }\n .order-lg-11 {\n -ms-flex-order: 11;\n order: 11;\n }\n .order-lg-12 {\n -ms-flex-order: 12;\n order: 12;\n }\n .offset-lg-0 {\n margin-left: 0;\n }\n .offset-lg-1 {\n margin-left: 8.333333%;\n }\n .offset-lg-2 {\n margin-left: 16.666667%;\n }\n .offset-lg-3 {\n margin-left: 25%;\n }\n .offset-lg-4 {\n margin-left: 33.333333%;\n }\n .offset-lg-5 {\n margin-left: 41.666667%;\n }\n .offset-lg-6 {\n margin-left: 50%;\n }\n .offset-lg-7 {\n margin-left: 58.333333%;\n }\n .offset-lg-8 {\n margin-left: 66.666667%;\n }\n .offset-lg-9 {\n margin-left: 75%;\n }\n .offset-lg-10 {\n margin-left: 83.333333%;\n }\n .offset-lg-11 {\n margin-left: 91.666667%;\n }\n }\n \n @media (min-width: 1200px) {\n .col-xl {\n -ms-flex-preferred-size: 0;\n flex-basis: 0;\n -ms-flex-positive: 1;\n flex-grow: 1;\n max-width: 100%;\n }\n .col-xl-auto {\n -ms-flex: 0 0 auto;\n flex: 0 0 auto;\n width: auto;\n max-width: none;\n }\n .col-xl-1 {\n -ms-flex: 0 0 8.333333%;\n flex: 0 0 8.333333%;\n max-width: 8.333333%;\n }\n .col-xl-2 {\n -ms-flex: 0 0 16.666667%;\n flex: 0 0 16.666667%;\n max-width: 16.666667%;\n }\n .col-xl-3 {\n -ms-flex: 0 0 25%;\n flex: 0 0 25%;\n max-width: 25%;\n }\n .col-xl-4 {\n -ms-flex: 0 0 33.333333%;\n flex: 0 0 33.333333%;\n max-width: 33.333333%;\n }\n .col-xl-5 {\n -ms-flex: 0 0 41.666667%;\n flex: 0 0 41.666667%;\n max-width: 41.666667%;\n }\n .col-xl-6 {\n -ms-flex: 0 0 50%;\n flex: 0 0 50%;\n max-width: 50%;\n }\n .col-xl-7 {\n -ms-flex: 0 0 58.333333%;\n flex: 0 0 58.333333%;\n max-width: 58.333333%;\n }\n .col-xl-8 {\n -ms-flex: 0 0 66.666667%;\n flex: 0 0 66.666667%;\n max-width: 66.666667%;\n }\n .col-xl-9 {\n -ms-flex: 0 0 75%;\n flex: 0 0 75%;\n max-width: 75%;\n }\n .col-xl-10 {\n -ms-flex: 0 0 83.333333%;\n flex: 0 0 83.333333%;\n max-width: 83.333333%;\n }\n .col-xl-11 {\n -ms-flex: 0 0 91.666667%;\n flex: 0 0 91.666667%;\n max-width: 91.666667%;\n }\n .col-xl-12 {\n -ms-flex: 0 0 100%;\n flex: 0 0 100%;\n max-width: 100%;\n }\n .order-xl-first {\n -ms-flex-order: -1;\n order: -1;\n }\n .order-xl-1 {\n -ms-flex-order: 1;\n order: 1;\n }\n .order-xl-2 {\n -ms-flex-order: 2;\n order: 2;\n }\n .order-xl-3 {\n -ms-flex-order: 3;\n order: 3;\n }\n .order-xl-4 {\n -ms-flex-order: 4;\n order: 4;\n }\n .order-xl-5 {\n -ms-flex-order: 5;\n order: 5;\n }\n .order-xl-6 {\n -ms-flex-order: 6;\n order: 6;\n }\n .order-xl-7 {\n -ms-flex-order: 7;\n order: 7;\n }\n .order-xl-8 {\n -ms-flex-order: 8;\n order: 8;\n }\n .order-xl-9 {\n -ms-flex-order: 9;\n order: 9;\n }\n .order-xl-10 {\n -ms-flex-order: 10;\n order: 10;\n }\n .order-xl-11 {\n -ms-flex-order: 11;\n order: 11;\n }\n .order-xl-12 {\n -ms-flex-order: 12;\n order: 12;\n }\n .offset-xl-0 {\n margin-left: 0;\n }\n .offset-xl-1 {\n margin-left: 8.333333%;\n }\n .offset-xl-2 {\n margin-left: 16.666667%;\n }\n .offset-xl-3 {\n margin-left: 25%;\n }\n .offset-xl-4 {\n margin-left: 33.333333%;\n }\n .offset-xl-5 {\n margin-left: 41.666667%;\n }\n .offset-xl-6 {\n margin-left: 50%;\n }\n .offset-xl-7 {\n margin-left: 58.333333%;\n }\n .offset-xl-8 {\n margin-left: 66.666667%;\n }\n .offset-xl-9 {\n margin-left: 75%;\n }\n .offset-xl-10 {\n margin-left: 83.333333%;\n }\n .offset-xl-11 {\n margin-left: 91.666667%;\n }\n }\n \n .table {\n width: 100%;\n max-width: 100%;\n margin-bottom: 1rem;\n background-color: transparent;\n }\n \n .table th,\n .table td {\n padding: 0.75rem;\n vertical-align: top;\n border-top: 1px solid #e9ecef;\n }\n \n .table thead th {\n vertical-align: bottom;\n border-bottom: 2px solid #e9ecef;\n }\n \n .table tbody + tbody {\n border-top: 2px solid #e9ecef;\n }\n \n .table .table {\n background-color: #fff;\n }\n \n .table-sm th,\n .table-sm td {\n padding: 0.3rem;\n }\n \n .table-bordered {\n border: 1px solid #e9ecef;\n }\n \n .table-bordered th,\n .table-bordered td {\n border: 1px solid #e9ecef;\n }\n \n .table-bordered thead th,\n .table-bordered thead td {\n border-bottom-width: 2px;\n }\n \n .table-striped tbody tr:nth-of-type(odd) {\n background-color: rgba(0, 0, 0, 0.05);\n }\n \n .table-hover tbody tr:hover {\n background-color: rgba(0, 0, 0, 0.075);\n }\n \n .table-primary,\n .table-primary > th,\n .table-primary > td {\n background-color: #b8daff;\n }\n \n .table-hover .table-primary:hover {\n background-color: #9fcdff;\n }\n \n .table-hover .table-primary:hover > td,\n .table-hover .table-primary:hover > th {\n background-color: #9fcdff;\n }\n \n .table-secondary,\n .table-secondary > th,\n .table-secondary > td {\n background-color: #dddfe2;\n }\n \n .table-hover .table-secondary:hover {\n background-color: #cfd2d6;\n }\n \n .table-hover .table-secondary:hover > td,\n .table-hover .table-secondary:hover > th {\n background-color: #cfd2d6;\n }\n \n .table-success,\n .table-success > th,\n .table-success > td {\n background-color: #c3e6cb;\n }\n \n .table-hover .table-success:hover {\n background-color: #b1dfbb;\n }\n \n .table-hover .table-success:hover > td,\n .table-hover .table-success:hover > th {\n background-color: #b1dfbb;\n }\n \n .table-info,\n .table-info > th,\n .table-info > td {\n background-color: #bee5eb;\n }\n \n .table-hover .table-info:hover {\n background-color: #abdde5;\n }\n \n .table-hover .table-info:hover > td,\n .table-hover .table-info:hover > th {\n background-color: #abdde5;\n }\n \n .table-warning,\n .table-warning > th,\n .table-warning > td {\n background-color: #ffeeba;\n }\n \n .table-hover .table-warning:hover {\n background-color: #ffe8a1;\n }\n \n .table-hover .table-warning:hover > td,\n .table-hover .table-warning:hover > th {\n background-color: #ffe8a1;\n }\n \n .table-danger,\n .table-danger > th,\n .table-danger > td {\n background-color: #f5c6cb;\n }\n \n .table-hover .table-danger:hover {\n background-color: #f1b0b7;\n }\n \n .table-hover .table-danger:hover > td,\n .table-hover .table-danger:hover > th {\n background-color: #f1b0b7;\n }\n \n .table-light,\n .table-light > th,\n .table-light > td {\n background-color: #fdfdfe;\n }\n \n .table-hover .table-light:hover {\n background-color: #ececf6;\n }\n \n .table-hover .table-light:hover > td,\n .table-hover .table-light:hover > th {\n background-color: #ececf6;\n }\n \n .table-dark,\n .table-dark > th,\n .table-dark > td {\n background-color: #c6c8ca;\n }\n \n .table-hover .table-dark:hover {\n background-color: #b9bbbe;\n }\n \n .table-hover .table-dark:hover > td,\n .table-hover .table-dark:hover > th {\n background-color: #b9bbbe;\n }\n \n .table-active,\n .table-active > th,\n .table-active > td {\n background-color: rgba(0, 0, 0, 0.075);\n }\n \n .table-hover .table-active:hover {\n background-color: rgba(0, 0, 0, 0.075);\n }\n \n .table-hover .table-active:hover > td,\n .table-hover .table-active:hover > th {\n background-color: rgba(0, 0, 0, 0.075);\n }\n \n .table .thead-dark th {\n color: #fff;\n background-color: #212529;\n border-color: #32383e;\n }\n \n .table .thead-light th {\n color: #495057;\n background-color: #e9ecef;\n border-color: #e9ecef;\n }\n \n .table-dark {\n color: #fff;\n background-color: #212529;\n }\n \n .table-dark th,\n .table-dark td,\n .table-dark thead th {\n border-color: #32383e;\n }\n \n .table-dark.table-bordered {\n border: 0;\n }\n \n .table-dark.table-striped tbody tr:nth-of-type(odd) {\n background-color: rgba(255, 255, 255, 0.05);\n }\n \n .table-dark.table-hover tbody tr:hover {\n background-color: rgba(255, 255, 255, 0.075);\n }\n \n @media (max-width: 575.99px) {\n .table-responsive-sm {\n display: block;\n width: 100%;\n overflow-x: auto;\n -webkit-overflow-scrolling: touch;\n -ms-overflow-style: -ms-autohiding-scrollbar;\n }\n .table-responsive-sm.table-bordered {\n border: 0;\n }\n }\n \n @media (max-width: 767.99px) {\n .table-responsive-md {\n display: block;\n width: 100%;\n overflow-x: auto;\n -webkit-overflow-scrolling: touch;\n -ms-overflow-style: -ms-autohiding-scrollbar;\n }\n .table-responsive-md.table-bordered {\n border: 0;\n }\n }\n \n @media (max-width: 991.99px) {\n .table-responsive-lg {\n display: block;\n width: 100%;\n overflow-x: auto;\n -webkit-overflow-scrolling: touch;\n -ms-overflow-style: -ms-autohiding-scrollbar;\n }\n .table-responsive-lg.table-bordered {\n border: 0;\n }\n }\n \n @media (max-width: 1199.99px) {\n .table-responsive-xl {\n display: block;\n width: 100%;\n overflow-x: auto;\n -webkit-overflow-scrolling: touch;\n -ms-overflow-style: -ms-autohiding-scrollbar;\n }\n .table-responsive-xl.table-bordered {\n border: 0;\n }\n }\n \n .table-responsive {\n display: block;\n width: 100%;\n overflow-x: auto;\n -webkit-overflow-scrolling: touch;\n -ms-overflow-style: -ms-autohiding-scrollbar;\n }\n \n .table-responsive.table-bordered {\n border: 0;\n }\n \n .form-control {\n display: block;\n width: 100%;\n padding: 0.375rem 0.75rem;\n font-size: 1rem;\n line-height: 1.5;\n color: #495057;\n background-color: #fff;\n background-clip: padding-box;\n border: 1px solid #ced4da;\n border-radius: 0.25rem;\n transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n }\n \n .form-control::-ms-expand {\n background-color: transparent;\n border: 0;\n }\n \n .form-control:focus {\n color: #495057;\n background-color: #fff;\n border-color: #80bdff;\n outline: 0;\n box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25);\n }\n \n .form-control::-webkit-input-placeholder {\n color: #868e96;\n opacity: 1;\n }\n \n .form-control:-ms-input-placeholder {\n color: #868e96;\n opacity: 1;\n }\n \n .form-control::-ms-input-placeholder {\n color: #868e96;\n opacity: 1;\n }\n \n .form-control::placeholder {\n color: #868e96;\n opacity: 1;\n }\n \n .form-control:disabled, .form-control[readonly] {\n background-color: #e9ecef;\n opacity: 1;\n }\n \n select.form-control:not([size]):not([multiple]) {\n height: calc(2.25rem + 2px);\n }\n \n select.form-control:focus::-ms-value {\n color: #495057;\n background-color: #fff;\n }\n \n .form-control-file,\n .form-control-range {\n display: block;\n }\n \n .col-form-label {\n padding-top: calc(0.375rem + 1px);\n padding-bottom: calc(0.375rem + 1px);\n margin-bottom: 0;\n font-size: inherit;\n line-height: 1.5;\n }\n \n .col-form-label-lg {\n padding-top: calc(0.5rem + 1px);\n padding-bottom: calc(0.5rem + 1px);\n font-size: 1.25rem;\n line-height: 1.5;\n }\n \n .col-form-label-sm {\n padding-top: calc(0.25rem + 1px);\n padding-bottom: calc(0.25rem + 1px);\n font-size: 0.875rem;\n line-height: 1.5;\n }\n \n .form-control-plaintext {\n display: block;\n width: 100%;\n padding-top: 0.375rem;\n padding-bottom: 0.375rem;\n margin-bottom: 0;\n line-height: 1.5;\n background-color: transparent;\n border: solid transparent;\n border-width: 1px 0;\n }\n \n .form-control-plaintext.form-control-sm, .input-group-sm > .form-control-plaintext.form-control,\n .input-group-sm > .form-control-plaintext.input-group-addon,\n .input-group-sm > .input-group-btn > .form-control-plaintext.btn, .form-control-plaintext.form-control-lg, .input-group-lg > .form-control-plaintext.form-control,\n .input-group-lg > .form-control-plaintext.input-group-addon,\n .input-group-lg > .input-group-btn > .form-control-plaintext.btn {\n padding-right: 0;\n padding-left: 0;\n }\n \n .form-control-sm, .input-group-sm > .form-control,\n .input-group-sm > .input-group-addon,\n .input-group-sm > .input-group-btn > .btn {\n padding: 0.25rem 0.5rem;\n font-size: 0.875rem;\n line-height: 1.5;\n border-radius: 0.2rem;\n }\n \n select.form-control-sm:not([size]):not([multiple]), .input-group-sm > select.form-control:not([size]):not([multiple]),\n .input-group-sm > select.input-group-addon:not([size]):not([multiple]),\n .input-group-sm > .input-group-btn > select.btn:not([size]):not([multiple]) {\n height: calc(1.8125rem + 2px);\n }\n \n .form-control-lg, .input-group-lg > .form-control,\n .input-group-lg > .input-group-addon,\n .input-group-lg > .input-group-btn > .btn {\n padding: 0.5rem 1rem;\n font-size: 1.25rem;\n line-height: 1.5;\n border-radius: 0.3rem;\n }\n \n select.form-control-lg:not([size]):not([multiple]), .input-group-lg > select.form-control:not([size]):not([multiple]),\n .input-group-lg > select.input-group-addon:not([size]):not([multiple]),\n .input-group-lg > .input-group-btn > select.btn:not([size]):not([multiple]) {\n height: calc(2.875rem + 2px);\n }\n \n .form-group {\n margin-bottom: 1rem;\n }\n \n .form-text {\n display: block;\n margin-top: 0.25rem;\n }\n \n .form-row {\n display: -ms-flexbox;\n display: flex;\n -ms-flex-wrap: wrap;\n flex-wrap: wrap;\n margin-right: -5px;\n margin-left: -5px;\n }\n \n .form-row > .col,\n .form-row > [class*=\"col-\"] {\n padding-right: 5px;\n padding-left: 5px;\n }\n \n .form-check {\n position: relative;\n display: block;\n margin-bottom: 0.5rem;\n }\n \n .form-check.disabled .form-check-label {\n color: #868e96;\n }\n \n .form-check-label {\n padding-left: 1.25rem;\n margin-bottom: 0;\n }\n \n .form-check-input {\n position: absolute;\n margin-top: 0.25rem;\n margin-left: -1.25rem;\n }\n \n .form-check-inline {\n display: inline-block;\n margin-right: 0.75rem;\n }\n \n .form-check-inline .form-check-label {\n vertical-align: middle;\n }\n \n .valid-feedback {\n display: none;\n margin-top: 0.25rem;\n font-size: 80%;\n color: #28a745;\n }\n \n .valid-tooltip {\n position: absolute;\n top: 100%;\n z-index: 5;\n display: none;\n width: 250px;\n padding: .5rem;\n margin-top: .1rem;\n font-size: .875rem;\n line-height: 1;\n color: #fff;\n background-color: rgba(40, 167, 69, 0.8);\n border-radius: .2rem;\n }\n \n .was-validated .form-control:valid, .form-control.is-valid, .was-validated\n .custom-select:valid,\n .custom-select.is-valid {\n border-color: #28a745;\n }\n \n .was-validated .form-control:valid:focus, .form-control.is-valid:focus, .was-validated\n .custom-select:valid:focus,\n .custom-select.is-valid:focus {\n border-color: #28a745;\n box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.25);\n }\n \n .was-validated .form-control:valid ~ .valid-feedback,\n .was-validated .form-control:valid ~ .valid-tooltip, .form-control.is-valid ~ .valid-feedback,\n .form-control.is-valid ~ .valid-tooltip, .was-validated\n .custom-select:valid ~ .valid-feedback,\n .was-validated\n .custom-select:valid ~ .valid-tooltip,\n .custom-select.is-valid ~ .valid-feedback,\n .custom-select.is-valid ~ .valid-tooltip {\n display: block;\n }\n \n .was-validated .form-check-input:valid + .form-check-label, .form-check-input.is-valid + .form-check-label {\n color: #28a745;\n }\n \n .was-validated .custom-control-input:valid ~ .custom-control-indicator, .custom-control-input.is-valid ~ .custom-control-indicator {\n background-color: #71dd8a;\n }\n \n .was-validated .custom-control-input:valid ~ .custom-control-description, .custom-control-input.is-valid ~ .custom-control-description {\n color: #28a745;\n }\n \n .was-validated .custom-control-input:valid:checked ~ .custom-control-indicator, .custom-control-input.is-valid:checked ~ .custom-control-indicator {\n background-color: #34ce57;\n }\n \n .was-validated .custom-control-input:valid:focus ~ .custom-control-indicator, .custom-control-input.is-valid:focus ~ .custom-control-indicator {\n box-shadow: 0 0 0 1px #fff, 0 0 0 0.2rem rgba(40, 167, 69, 0.25);\n }\n \n .was-validated .custom-file-input:valid ~ .custom-file-control, .custom-file-input.is-valid ~ .custom-file-control {\n border-color: #28a745;\n }\n \n .was-validated .custom-file-input:valid ~ .custom-file-control::before, .custom-file-input.is-valid ~ .custom-file-control::before {\n border-color: inherit;\n }\n \n .was-validated .custom-file-input:valid:focus ~ .custom-file-control, .custom-file-input.is-valid:focus ~ .custom-file-control {\n box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.25);\n }\n \n .invalid-feedback {\n display: none;\n margin-top: 0.25rem;\n font-size: 80%;\n color: #dc3545;\n }\n \n .invalid-tooltip {\n position: absolute;\n top: 100%;\n z-index: 5;\n display: none;\n width: 250px;\n padding: .5rem;\n margin-top: .1rem;\n font-size: .875rem;\n line-height: 1;\n color: #fff;\n background-color: rgba(220, 53, 69, 0.8);\n border-radius: .2rem;\n }\n \n .was-validated .form-control:invalid, .form-control.is-invalid, .was-validated\n .custom-select:invalid,\n .custom-select.is-invalid {\n border-color: #dc3545;\n }\n \n .was-validated .form-control:invalid:focus, .form-control.is-invalid:focus, .was-validated\n .custom-select:invalid:focus,\n .custom-select.is-invalid:focus {\n border-color: #dc3545;\n box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.25);\n }\n \n .was-validated .form-control:invalid ~ .invalid-feedback,\n .was-validated .form-control:invalid ~ .invalid-tooltip, .form-control.is-invalid ~ .invalid-feedback,\n .form-control.is-invalid ~ .invalid-tooltip, .was-validated\n .custom-select:invalid ~ .invalid-feedback,\n .was-validated\n .custom-select:invalid ~ .invalid-tooltip,\n .custom-select.is-invalid ~ .invalid-feedback,\n .custom-select.is-invalid ~ .invalid-tooltip {\n display: block;\n }\n \n .was-validated .form-check-input:invalid + .form-check-label, .form-check-input.is-invalid + .form-check-label {\n color: #dc3545;\n }\n \n .was-validated .custom-control-input:invalid ~ .custom-control-indicator, .custom-control-input.is-invalid ~ .custom-control-indicator {\n background-color: #efa2a9;\n }\n \n .was-validated .custom-control-input:invalid ~ .custom-control-description, .custom-control-input.is-invalid ~ .custom-control-description {\n color: #dc3545;\n }\n \n .was-validated .custom-control-input:invalid:checked ~ .custom-control-indicator, .custom-control-input.is-invalid:checked ~ .custom-control-indicator {\n background-color: #e4606d;\n }\n \n .was-validated .custom-control-input:invalid:focus ~ .custom-control-indicator, .custom-control-input.is-invalid:focus ~ .custom-control-indicator {\n box-shadow: 0 0 0 1px #fff, 0 0 0 0.2rem rgba(220, 53, 69, 0.25);\n }\n \n .was-validated .custom-file-input:invalid ~ .custom-file-control, .custom-file-input.is-invalid ~ .custom-file-control {\n border-color: #dc3545;\n }\n \n .was-validated .custom-file-input:invalid ~ .custom-file-control::before, .custom-file-input.is-invalid ~ .custom-file-control::before {\n border-color: inherit;\n }\n \n .was-validated .custom-file-input:invalid:focus ~ .custom-file-control, .custom-file-input.is-invalid:focus ~ .custom-file-control {\n box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.25);\n }\n \n .form-inline {\n display: -ms-flexbox;\n display: flex;\n -ms-flex-flow: row wrap;\n flex-flow: row wrap;\n -ms-flex-align: center;\n align-items: center;\n }\n \n .form-inline .form-check {\n width: 100%;\n }\n \n @media (min-width: 576px) {\n .form-inline label {\n display: -ms-flexbox;\n display: flex;\n -ms-flex-align: center;\n align-items: center;\n -ms-flex-pack: center;\n justify-content: center;\n margin-bottom: 0;\n }\n .form-inline .form-group {\n display: -ms-flexbox;\n display: flex;\n -ms-flex: 0 0 auto;\n flex: 0 0 auto;\n -ms-flex-flow: row wrap;\n flex-flow: row wrap;\n -ms-flex-align: center;\n align-items: center;\n margin-bottom: 0;\n }\n .form-inline .form-control {\n display: inline-block;\n width: auto;\n vertical-align: middle;\n }\n .form-inline .form-control-plaintext {\n display: inline-block;\n }\n .form-inline .input-group {\n width: auto;\n }\n .form-inline .form-check {\n display: -ms-flexbox;\n display: flex;\n -ms-flex-align: center;\n align-items: center;\n -ms-flex-pack: center;\n justify-content: center;\n width: auto;\n margin-top: 0;\n margin-bottom: 0;\n }\n .form-inline .form-check-label {\n padding-left: 0;\n }\n .form-inline .form-check-input {\n position: relative;\n margin-top: 0;\n margin-right: 0.25rem;\n margin-left: 0;\n }\n .form-inline .custom-control {\n display: -ms-flexbox;\n display: flex;\n -ms-flex-align: center;\n align-items: center;\n -ms-flex-pack: center;\n justify-content: center;\n padding-left: 0;\n }\n .form-inline .custom-control-indicator {\n position: static;\n display: inline-block;\n margin-right: 0.25rem;\n vertical-align: text-bottom;\n }\n .form-inline .has-feedback .form-control-feedback {\n top: 0;\n }\n }\n \n .btn {\n display: inline-block;\n font-weight: 400;\n text-align: center;\n white-space: nowrap;\n vertical-align: middle;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n border: 1px solid transparent;\n padding: 0.375rem 0.75rem;\n font-size: 1rem;\n line-height: 1.5;\n border-radius: 0.25rem;\n transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n }\n \n .btn:focus, .btn:hover {\n text-decoration: none;\n }\n \n .btn:focus, .btn.focus {\n outline: 0;\n box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25);\n }\n \n .btn.disabled, .btn:disabled {\n opacity: 0.65;\n }\n \n .btn:not([disabled]):not(.disabled):active, .btn:not([disabled]):not(.disabled).active {\n background-image: none;\n }\n \n a.btn.disabled,\n fieldset[disabled] a.btn {\n pointer-events: none;\n }\n \n .btn-primary {\n color: #fff;\n background-color: #007bff;\n border-color: #007bff;\n }\n \n .btn-primary:hover {\n color: #fff;\n background-color: #0069d9;\n border-color: #0062cc;\n }\n \n .btn-primary:focus, .btn-primary.focus {\n box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.5);\n }\n \n .btn-primary.disabled, .btn-primary:disabled {\n background-color: #007bff;\n border-color: #007bff;\n }\n \n .btn-primary:not([disabled]):not(.disabled):active, .btn-primary:not([disabled]):not(.disabled).active,\n .show > .btn-primary.dropdown-toggle {\n color: #fff;\n background-color: #0062cc;\n border-color: #005cbf;\n box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.5);\n }\n \n .btn-secondary {\n color: #fff;\n background-color: #868e96;\n border-color: #868e96;\n }\n \n .btn-secondary:hover {\n color: #fff;\n background-color: #727b84;\n border-color: #6c757d;\n }\n \n .btn-secondary:focus, .btn-secondary.focus {\n box-shadow: 0 0 0 0.2rem rgba(134, 142, 150, 0.5);\n }\n \n .btn-secondary.disabled, .btn-secondary:disabled {\n background-color: #868e96;\n border-color: #868e96;\n }\n \n .btn-secondary:not([disabled]):not(.disabled):active, .btn-secondary:not([disabled]):not(.disabled).active,\n .show > .btn-secondary.dropdown-toggle {\n color: #fff;\n background-color: #6c757d;\n border-color: #666e76;\n box-shadow: 0 0 0 0.2rem rgba(134, 142, 150, 0.5);\n }\n \n .btn-success {\n color: #fff;\n background-color: #28a745;\n border-color: #28a745;\n }\n \n .btn-success:hover {\n color: #fff;\n background-color: #218838;\n border-color: #1e7e34;\n }\n \n .btn-success:focus, .btn-success.focus {\n box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.5);\n }\n \n .btn-success.disabled, .btn-success:disabled {\n background-color: #28a745;\n border-color: #28a745;\n }\n \n .btn-success:not([disabled]):not(.disabled):active, .btn-success:not([disabled]):not(.disabled).active,\n .show > .btn-success.dropdown-toggle {\n color: #fff;\n background-color: #1e7e34;\n border-color: #1c7430;\n box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.5);\n }\n \n .btn-info {\n color: #fff;\n background-color: #17a2b8;\n border-color: #17a2b8;\n }\n \n .btn-info:hover {\n color: #fff;\n background-color: #138496;\n border-color: #117a8b;\n }\n \n .btn-info:focus, .btn-info.focus {\n box-shadow: 0 0 0 0.2rem rgba(23, 162, 184, 0.5);\n }\n \n .btn-info.disabled, .btn-info:disabled {\n background-color: #17a2b8;\n border-color: #17a2b8;\n }\n \n .btn-info:not([disabled]):not(.disabled):active, .btn-info:not([disabled]):not(.disabled).active,\n .show > .btn-info.dropdown-toggle {\n color: #fff;\n background-color: #117a8b;\n border-color: #10707f;\n box-shadow: 0 0 0 0.2rem rgba(23, 162, 184, 0.5);\n }\n \n .btn-warning {\n color: #212529;\n background-color: #ffc107;\n border-color: #ffc107;\n }\n \n .btn-warning:hover {\n color: #212529;\n background-color: #e0a800;\n border-color: #d39e00;\n }\n \n .btn-warning:focus, .btn-warning.focus {\n box-shadow: 0 0 0 0.2rem rgba(255, 193, 7, 0.5);\n }\n \n .btn-warning.disabled, .btn-warning:disabled {\n background-color: #ffc107;\n border-color: #ffc107;\n }\n \n .btn-warning:not([disabled]):not(.disabled):active, .btn-warning:not([disabled]):not(.disabled).active,\n .show > .btn-warning.dropdown-toggle {\n color: #212529;\n background-color: #d39e00;\n border-color: #c69500;\n box-shadow: 0 0 0 0.2rem rgba(255, 193, 7, 0.5);\n }\n \n .btn-danger {\n color: #fff;\n background-color: #dc3545;\n border-color: #dc3545;\n }\n \n .btn-danger:hover {\n color: #fff;\n background-color: #c82333;\n border-color: #bd2130;\n }\n \n .btn-danger:focus, .btn-danger.focus {\n box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.5);\n }\n \n .btn-danger.disabled, .btn-danger:disabled {\n background-color: #dc3545;\n border-color: #dc3545;\n }\n \n .btn-danger:not([disabled]):not(.disabled):active, .btn-danger:not([disabled]):not(.disabled).active,\n .show > .btn-danger.dropdown-toggle {\n color: #fff;\n background-color: #bd2130;\n border-color: #b21f2d;\n box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.5);\n }\n \n .btn-light {\n color: #212529;\n background-color: #f8f9fa;\n border-color: #f8f9fa;\n }\n \n .btn-light:hover {\n color: #212529;\n background-color: #e2e6ea;\n border-color: #dae0e5;\n }\n \n .btn-light:focus, .btn-light.focus {\n box-shadow: 0 0 0 0.2rem rgba(248, 249, 250, 0.5);\n }\n \n .btn-light.disabled, .btn-light:disabled {\n background-color: #f8f9fa;\n border-color: #f8f9fa;\n }\n \n .btn-light:not([disabled]):not(.disabled):active, .btn-light:not([disabled]):not(.disabled).active,\n .show > .btn-light.dropdown-toggle {\n color: #212529;\n background-color: #dae0e5;\n border-color: #d3d9df;\n box-shadow: 0 0 0 0.2rem rgba(248, 249, 250, 0.5);\n }\n \n .btn-dark {\n color: #fff;\n background-color: #343a40;\n border-color: #343a40;\n }\n \n .btn-dark:hover {\n color: #fff;\n background-color: #23272b;\n border-color: #1d2124;\n }\n \n .btn-dark:focus, .btn-dark.focus {\n box-shadow: 0 0 0 0.2rem rgba(52, 58, 64, 0.5);\n }\n \n .btn-dark.disabled, .btn-dark:disabled {\n background-color: #343a40;\n border-color: #343a40;\n }\n \n .btn-dark:not([disabled]):not(.disabled):active, .btn-dark:not([disabled]):not(.disabled).active,\n .show > .btn-dark.dropdown-toggle {\n color: #fff;\n background-color: #1d2124;\n border-color: #171a1d;\n box-shadow: 0 0 0 0.2rem rgba(52, 58, 64, 0.5);\n }\n \n .btn-outline-primary {\n color: #007bff;\n background-color: transparent;\n background-image: none;\n border-color: #007bff;\n }\n \n .btn-outline-primary:hover {\n color: #fff;\n background-color: #007bff;\n border-color: #007bff;\n }\n \n .btn-outline-primary:focus, .btn-outline-primary.focus {\n box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.5);\n }\n \n .btn-outline-primary.disabled, .btn-outline-primary:disabled {\n color: #007bff;\n background-color: transparent;\n }\n \n .btn-outline-primary:not([disabled]):not(.disabled):active, .btn-outline-primary:not([disabled]):not(.disabled).active,\n .show > .btn-outline-primary.dropdown-toggle {\n color: #212529;\n background-color: #007bff;\n border-color: #007bff;\n box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.5);\n }\n \n .btn-outline-secondary {\n color: #868e96;\n background-color: transparent;\n background-image: none;\n border-color: #868e96;\n }\n \n .btn-outline-secondary:hover {\n color: #fff;\n background-color: #868e96;\n border-color: #868e96;\n }\n \n .btn-outline-secondary:focus, .btn-outline-secondary.focus {\n box-shadow: 0 0 0 0.2rem rgba(134, 142, 150, 0.5);\n }\n \n .btn-outline-secondary.disabled, .btn-outline-secondary:disabled {\n color: #868e96;\n background-color: transparent;\n }\n \n .btn-outline-secondary:not([disabled]):not(.disabled):active, .btn-outline-secondary:not([disabled]):not(.disabled).active,\n .show > .btn-outline-secondary.dropdown-toggle {\n color: #212529;\n background-color: #868e96;\n border-color: #868e96;\n box-shadow: 0 0 0 0.2rem rgba(134, 142, 150, 0.5);\n }\n \n .btn-outline-success {\n color: #28a745;\n background-color: transparent;\n background-image: none;\n border-color: #28a745;\n }\n \n .btn-outline-success:hover {\n color: #fff;\n background-color: #28a745;\n border-color: #28a745;\n }\n \n .btn-outline-success:focus, .btn-outline-success.focus {\n box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.5);\n }\n \n .btn-outline-success.disabled, .btn-outline-success:disabled {\n color: #28a745;\n background-color: transparent;\n }\n \n .btn-outline-success:not([disabled]):not(.disabled):active, .btn-outline-success:not([disabled]):not(.disabled).active,\n .show > .btn-outline-success.dropdown-toggle {\n color: #212529;\n background-color: #28a745;\n border-color: #28a745;\n box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.5);\n }\n \n .btn-outline-info {\n color: #17a2b8;\n background-color: transparent;\n background-image: none;\n border-color: #17a2b8;\n }\n \n .btn-outline-info:hover {\n color: #fff;\n background-color: #17a2b8;\n border-color: #17a2b8;\n }\n \n .btn-outline-info:focus, .btn-outline-info.focus {\n box-shadow: 0 0 0 0.2rem rgba(23, 162, 184, 0.5);\n }\n \n .btn-outline-info.disabled, .btn-outline-info:disabled {\n color: #17a2b8;\n background-color: transparent;\n }\n \n .btn-outline-info:not([disabled]):not(.disabled):active, .btn-outline-info:not([disabled]):not(.disabled).active,\n .show > .btn-outline-info.dropdown-toggle {\n color: #212529;\n background-color: #17a2b8;\n border-color: #17a2b8;\n box-shadow: 0 0 0 0.2rem rgba(23, 162, 184, 0.5);\n }\n \n .btn-outline-warning {\n color: #ffc107;\n background-color: transparent;\n background-image: none;\n border-color: #ffc107;\n }\n \n .btn-outline-warning:hover {\n color: #212529;\n background-color: #ffc107;\n border-color: #ffc107;\n }\n \n .btn-outline-warning:focus, .btn-outline-warning.focus {\n box-shadow: 0 0 0 0.2rem rgba(255, 193, 7, 0.5);\n }\n \n .btn-outline-warning.disabled, .btn-outline-warning:disabled {\n color: #ffc107;\n background-color: transparent;\n }\n \n .btn-outline-warning:not([disabled]):not(.disabled):active, .btn-outline-warning:not([disabled]):not(.disabled).active,\n .show > .btn-outline-warning.dropdown-toggle {\n color: #212529;\n background-color: #ffc107;\n border-color: #ffc107;\n box-shadow: 0 0 0 0.2rem rgba(255, 193, 7, 0.5);\n }\n \n .btn-outline-danger {\n color: #dc3545;\n background-color: transparent;\n background-image: none;\n border-color: #dc3545;\n }\n \n .btn-outline-danger:hover {\n color: #fff;\n background-color: #dc3545;\n border-color: #dc3545;\n }\n \n .btn-outline-danger:focus, .btn-outline-danger.focus {\n box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.5);\n }\n \n .btn-outline-danger.disabled, .btn-outline-danger:disabled {\n color: #dc3545;\n background-color: transparent;\n }\n \n .btn-outline-danger:not([disabled]):not(.disabled):active, .btn-outline-danger:not([disabled]):not(.disabled).active,\n .show > .btn-outline-danger.dropdown-toggle {\n color: #212529;\n background-color: #dc3545;\n border-color: #dc3545;\n box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.5);\n }\n \n .btn-outline-light {\n color: #f8f9fa;\n background-color: transparent;\n background-image: none;\n border-color: #f8f9fa;\n }\n \n .btn-outline-light:hover {\n color: #212529;\n background-color: #f8f9fa;\n border-color: #f8f9fa;\n }\n \n .btn-outline-light:focus, .btn-outline-light.focus {\n box-shadow: 0 0 0 0.2rem rgba(248, 249, 250, 0.5);\n }\n \n .btn-outline-light.disabled, .btn-outline-light:disabled {\n color: #f8f9fa;\n background-color: transparent;\n }\n \n .btn-outline-light:not([disabled]):not(.disabled):active, .btn-outline-light:not([disabled]):not(.disabled).active,\n .show > .btn-outline-light.dropdown-toggle {\n color: #fff;\n background-color: #f8f9fa;\n border-color: #f8f9fa;\n box-shadow: 0 0 0 0.2rem rgba(248, 249, 250, 0.5);\n }\n \n .btn-outline-dark {\n color: #343a40;\n background-color: transparent;\n background-image: none;\n border-color: #343a40;\n }\n \n .btn-outline-dark:hover {\n color: #fff;\n background-color: #343a40;\n border-color: #343a40;\n }\n \n .btn-outline-dark:focus, .btn-outline-dark.focus {\n box-shadow: 0 0 0 0.2rem rgba(52, 58, 64, 0.5);\n }\n \n .btn-outline-dark.disabled, .btn-outline-dark:disabled {\n color: #343a40;\n background-color: transparent;\n }\n \n .btn-outline-dark:not([disabled]):not(.disabled):active, .btn-outline-dark:not([disabled]):not(.disabled).active,\n .show > .btn-outline-dark.dropdown-toggle {\n color: #212529;\n background-color: #343a40;\n border-color: #343a40;\n box-shadow: 0 0 0 0.2rem rgba(52, 58, 64, 0.5);\n }\n \n .btn-link {\n font-weight: 400;\n color: #007bff;\n background-color: transparent;\n }\n \n .btn-link:hover {\n color: #0056b3;\n text-decoration: underline;\n background-color: transparent;\n border-color: transparent;\n }\n \n .btn-link:focus, .btn-link.focus {\n text-decoration: underline;\n border-color: transparent;\n box-shadow: none;\n }\n \n .btn-link:disabled, .btn-link.disabled {\n color: #868e96;\n }\n \n .btn-lg, .btn-group-lg > .btn {\n padding: 0.5rem 1rem;\n font-size: 1.25rem;\n line-height: 1.5;\n border-radius: 0.3rem;\n }\n \n .btn-sm, .btn-group-sm > .btn {\n padding: 0.25rem 0.5rem;\n font-size: 0.875rem;\n line-height: 1.5;\n border-radius: 0.2rem;\n }\n \n .btn-block {\n display: block;\n width: 100%;\n }\n \n .btn-block + .btn-block {\n margin-top: 0.5rem;\n }\n \n input[type=\"submit\"].btn-block,\n input[type=\"reset\"].btn-block,\n input[type=\"button\"].btn-block {\n width: 100%;\n }\n \n .fade {\n opacity: 0;\n transition: opacity 0.15s linear;\n }\n \n .fade.show {\n opacity: 1;\n }\n \n .collapse {\n display: none;\n }\n \n .collapse.show {\n display: block;\n }\n \n tr.collapse.show {\n display: table-row;\n }\n \n tbody.collapse.show {\n display: table-row-group;\n }\n \n .collapsing {\n position: relative;\n height: 0;\n overflow: hidden;\n transition: height 0.35s ease;\n }\n \n .dropup,\n .dropdown {\n position: relative;\n }\n \n .dropdown-toggle::after {\n display: inline-block;\n width: 0;\n height: 0;\n margin-left: 0.255em;\n vertical-align: 0.255em;\n content: \"\";\n border-top: 0.3em solid;\n border-right: 0.3em solid transparent;\n border-bottom: 0;\n border-left: 0.3em solid transparent;\n }\n \n .dropdown-toggle:empty::after {\n margin-left: 0;\n }\n \n .dropdown-menu {\n position: absolute;\n top: 100%;\n left: 0;\n z-index: 1000;\n display: none;\n float: left;\n min-width: 10rem;\n padding: 0.5rem 0;\n margin: 0.125rem 0 0;\n font-size: 1rem;\n color: #212529;\n text-align: left;\n list-style: none;\n background-color: #fff;\n background-clip: padding-box;\n border: 1px solid rgba(0, 0, 0, 0.15);\n border-radius: 0.25rem;\n }\n \n .dropup .dropdown-menu {\n margin-top: 0;\n margin-bottom: 0.125rem;\n }\n \n .dropup .dropdown-toggle::after {\n display: inline-block;\n width: 0;\n height: 0;\n margin-left: 0.255em;\n vertical-align: 0.255em;\n content: \"\";\n border-top: 0;\n border-right: 0.3em solid transparent;\n border-bottom: 0.3em solid;\n border-left: 0.3em solid transparent;\n }\n \n .dropup .dropdown-toggle:empty::after {\n margin-left: 0;\n }\n \n .dropright .dropdown-menu {\n margin-top: 0;\n margin-left: 0.125rem;\n }\n \n .dropright .dropdown-toggle::after {\n display: inline-block;\n width: 0;\n height: 0;\n margin-left: 0.255em;\n vertical-align: 0.255em;\n content: \"\";\n border-top: 0.3em solid transparent;\n border-bottom: 0.3em solid transparent;\n border-left: 0.3em solid;\n }\n \n .dropright .dropdown-toggle:empty::after {\n margin-left: 0;\n }\n \n .dropright .dropdown-toggle::after {\n vertical-align: 0;\n }\n \n .dropleft .dropdown-menu {\n margin-top: 0;\n margin-right: 0.125rem;\n }\n \n .dropleft .dropdown-toggle::after {\n display: inline-block;\n width: 0;\n height: 0;\n margin-left: 0.255em;\n vertical-align: 0.255em;\n content: \"\";\n }\n \n .dropleft .dropdown-toggle::after {\n display: none;\n }\n \n .dropleft .dropdown-toggle::before {\n display: inline-block;\n width: 0;\n height: 0;\n margin-right: 0.255em;\n vertical-align: 0.255em;\n content: \"\";\n border-top: 0.3em solid transparent;\n border-right: 0.3em solid;\n border-bottom: 0.3em solid transparent;\n }\n \n .dropleft .dropdown-toggle:empty::after {\n margin-left: 0;\n }\n \n .dropleft .dropdown-toggle::before {\n vertical-align: 0;\n }\n \n .dropdown-divider {\n height: 0;\n margin: 0.5rem 0;\n overflow: hidden;\n border-top: 1px solid #e9ecef;\n }\n \n .dropdown-item {\n display: block;\n width: 100%;\n padding: 0.25rem 1.5rem;\n clear: both;\n font-weight: 400;\n color: #212529;\n text-align: inherit;\n white-space: nowrap;\n background-color: transparent;\n border: 0;\n }\n \n .dropdown-item:focus, .dropdown-item:hover {\n color: #16181b;\n text-decoration: none;\n background-color: #f8f9fa;\n }\n \n .dropdown-item.active, .dropdown-item:active {\n color: #fff;\n text-decoration: none;\n background-color: #007bff;\n }\n \n .dropdown-item.disabled, .dropdown-item:disabled {\n color: #868e96;\n background-color: transparent;\n }\n \n .dropdown-menu.show {\n display: block;\n }\n \n .dropdown-header {\n display: block;\n padding: 0.5rem 1.5rem;\n margin-bottom: 0;\n font-size: 0.875rem;\n color: #868e96;\n white-space: nowrap;\n }\n \n .btn-group,\n .btn-group-vertical {\n position: relative;\n display: -ms-inline-flexbox;\n display: inline-flex;\n vertical-align: middle;\n }\n \n .btn-group > .btn,\n .btn-group-vertical > .btn {\n position: relative;\n -ms-flex: 0 1 auto;\n flex: 0 1 auto;\n }\n \n .btn-group > .btn:hover,\n .btn-group-vertical > .btn:hover {\n z-index: 1;\n }\n \n .btn-group > .btn:focus, .btn-group > .btn:active, .btn-group > .btn.active,\n .btn-group-vertical > .btn:focus,\n .btn-group-vertical > .btn:active,\n .btn-group-vertical > .btn.active {\n z-index: 1;\n }\n \n .btn-group .btn + .btn,\n .btn-group .btn + .btn-group,\n .btn-group .btn-group + .btn,\n .btn-group .btn-group + .btn-group,\n .btn-group-vertical .btn + .btn,\n .btn-group-vertical .btn + .btn-group,\n .btn-group-vertical .btn-group + .btn,\n .btn-group-vertical .btn-group + .btn-group {\n margin-left: -1px;\n }\n \n .btn-toolbar {\n display: -ms-flexbox;\n display: flex;\n -ms-flex-wrap: wrap;\n flex-wrap: wrap;\n -ms-flex-pack: start;\n justify-content: flex-start;\n }\n \n .btn-toolbar .input-group {\n width: auto;\n }\n \n .btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) {\n border-radius: 0;\n }\n \n .btn-group > .btn:first-child {\n margin-left: 0;\n }\n \n .btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle) {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n }\n \n .btn-group > .btn:last-child:not(:first-child),\n .btn-group > .dropdown-toggle:not(:first-child) {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n }\n \n .btn-group > .btn-group {\n float: left;\n }\n \n .btn-group > .btn-group:not(:first-child):not(:last-child) > .btn {\n border-radius: 0;\n }\n \n .btn-group > .btn-group:first-child:not(:last-child) > .btn:last-child,\n .btn-group > .btn-group:first-child:not(:last-child) > .dropdown-toggle {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n }\n \n .btn-group > .btn-group:last-child:not(:first-child) > .btn:first-child {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n }\n \n .dropdown-toggle-split {\n padding-right: 0.5625rem;\n padding-left: 0.5625rem;\n }\n \n .dropdown-toggle-split::after {\n margin-left: 0;\n }\n \n .btn-sm + .dropdown-toggle-split, .btn-group-sm > .btn + .dropdown-toggle-split {\n padding-right: 0.375rem;\n padding-left: 0.375rem;\n }\n \n .btn-lg + .dropdown-toggle-split, .btn-group-lg > .btn + .dropdown-toggle-split {\n padding-right: 0.75rem;\n padding-left: 0.75rem;\n }\n \n .btn-group-vertical {\n -ms-flex-direction: column;\n flex-direction: column;\n -ms-flex-align: start;\n align-items: flex-start;\n -ms-flex-pack: center;\n justify-content: center;\n }\n \n .btn-group-vertical .btn,\n .btn-group-vertical .btn-group {\n width: 100%;\n }\n \n .btn-group-vertical > .btn + .btn,\n .btn-group-vertical > .btn + .btn-group,\n .btn-group-vertical > .btn-group + .btn,\n .btn-group-vertical > .btn-group + .btn-group {\n margin-top: -1px;\n margin-left: 0;\n }\n \n .btn-group-vertical > .btn:not(:first-child):not(:last-child) {\n border-radius: 0;\n }\n \n .btn-group-vertical > .btn:first-child:not(:last-child) {\n border-bottom-right-radius: 0;\n border-bottom-left-radius: 0;\n }\n \n .btn-group-vertical > .btn:last-child:not(:first-child) {\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n }\n \n .btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn {\n border-radius: 0;\n }\n \n .btn-group-vertical > .btn-group:first-child:not(:last-child) > .btn:last-child,\n .btn-group-vertical > .btn-group:first-child:not(:last-child) > .dropdown-toggle {\n border-bottom-right-radius: 0;\n border-bottom-left-radius: 0;\n }\n \n .btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child {\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n }\n \n .btn-group-toggle > .btn,\n .btn-group-toggle > .btn-group > .btn {\n margin-bottom: 0;\n }\n \n .btn-group-toggle > .btn input[type=\"radio\"],\n .btn-group-toggle > .btn input[type=\"checkbox\"],\n .btn-group-toggle > .btn-group > .btn input[type=\"radio\"],\n .btn-group-toggle > .btn-group > .btn input[type=\"checkbox\"] {\n position: absolute;\n clip: rect(0, 0, 0, 0);\n pointer-events: none;\n }\n \n .input-group {\n position: relative;\n display: -ms-flexbox;\n display: flex;\n -ms-flex-align: stretch;\n align-items: stretch;\n width: 100%;\n }\n \n .input-group .form-control {\n position: relative;\n z-index: 1;\n -ms-flex: 1 1 auto;\n flex: 1 1 auto;\n width: 1%;\n margin-bottom: 0;\n }\n \n .input-group .form-control:focus, .input-group .form-control:active, .input-group .form-control:hover {\n z-index: 2;\n }\n \n .input-group-addon,\n .input-group-btn,\n .input-group .form-control,\n .input-group .custom-select,\n .input-group .custom-file {\n display: -ms-flexbox;\n display: flex;\n -ms-flex-align: center;\n align-items: center;\n }\n \n .input-group-addon:not(:first-child):not(:last-child),\n .input-group-btn:not(:first-child):not(:last-child),\n .input-group .form-control:not(:first-child):not(:last-child),\n .input-group .custom-select:not(:first-child):not(:last-child),\n .input-group .custom-file:not(:first-child):not(:last-child) {\n border-radius: 0;\n }\n \n .input-group .custom-file {\n display: -ms-flexbox;\n display: flex;\n -ms-flex-align: center;\n align-items: center;\n }\n \n .input-group .custom-select,\n .input-group .custom-file {\n width: 100%;\n }\n \n .input-group-addon,\n .input-group-btn {\n white-space: nowrap;\n }\n \n .input-group-addon {\n padding: 0.375rem 0.75rem;\n margin-bottom: 0;\n font-size: 1rem;\n font-weight: 400;\n line-height: 1.5;\n color: #495057;\n text-align: center;\n background-color: #e9ecef;\n border: 1px solid #ced4da;\n border-radius: 0.25rem;\n }\n \n .input-group-addon.form-control-sm,\n .input-group-sm > .input-group-addon,\n .input-group-sm > .input-group-btn > .input-group-addon.btn {\n padding: 0.25rem 0.5rem;\n font-size: 0.875rem;\n border-radius: 0.2rem;\n }\n \n .input-group-addon.form-control-lg,\n .input-group-lg > .input-group-addon,\n .input-group-lg > .input-group-btn > .input-group-addon.btn {\n padding: 0.5rem 1rem;\n font-size: 1.25rem;\n border-radius: 0.3rem;\n }\n \n .input-group-addon input[type=\"radio\"],\n .input-group-addon input[type=\"checkbox\"] {\n margin-top: 0;\n }\n \n .input-group .form-control:not(:last-child),\n .input-group .custom-select:not(:last-child),\n .input-group .custom-file:not(:last-child) .custom-file-control::before,\n .input-group-addon:not(:last-child),\n .input-group-btn:not(:last-child) > .btn,\n .input-group-btn:not(:last-child) > .btn-group > .btn,\n .input-group-btn:not(:last-child) > .dropdown-toggle,\n .input-group-btn:not(:first-child) > .btn:not(:last-child):not(.dropdown-toggle),\n .input-group-btn:not(:first-child) > .btn-group:not(:last-child) > .btn {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n }\n \n .input-group-addon:not(:last-child) {\n border-right: 0;\n }\n \n .input-group .form-control:not(:first-child),\n .input-group .custom-select:not(:first-child),\n .input-group .custom-file:not(:first-child) .custom-file-control,\n .input-group-addon:not(:first-child),\n .input-group-btn:not(:first-child) > .btn,\n .input-group-btn:not(:first-child) > .btn-group > .btn,\n .input-group-btn:not(:first-child) > .dropdown-toggle,\n .input-group-btn:not(:last-child) > .btn:not(:first-child),\n .input-group-btn:not(:last-child) > .btn-group:not(:first-child) > .btn {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n }\n \n .form-control + .input-group-addon:not(:first-child),\n .custom-select + .input-group-addon:not(:first-child),\n .custom-file + .input-group-addon:not(:first-child) {\n border-left: 0;\n }\n \n .input-group-btn {\n position: relative;\n -ms-flex-align: stretch;\n align-items: stretch;\n font-size: 0;\n white-space: nowrap;\n }\n \n .input-group-btn > .btn {\n position: relative;\n }\n \n .input-group-btn > .btn + .btn {\n margin-left: -1px;\n }\n \n .input-group-btn > .btn:focus, .input-group-btn > .btn:active, .input-group-btn > .btn:hover {\n z-index: 2;\n }\n \n .input-group-btn:first-child > .btn + .btn {\n margin-left: 0;\n }\n \n .input-group-btn:not(:last-child) > .btn,\n .input-group-btn:not(:last-child) > .btn-group {\n margin-right: -1px;\n }\n \n .input-group-btn:not(:first-child) > .btn,\n .input-group-btn:not(:first-child) > .btn-group {\n z-index: 1;\n margin-left: 0;\n }\n \n .input-group-btn:not(:first-child) > .btn:first-child,\n .input-group-btn:not(:first-child) > .btn-group:first-child {\n margin-left: -1px;\n }\n \n .input-group-btn:not(:first-child) > .btn:focus, .input-group-btn:not(:first-child) > .btn:active, .input-group-btn:not(:first-child) > .btn:hover,\n .input-group-btn:not(:first-child) > .btn-group:focus,\n .input-group-btn:not(:first-child) > .btn-group:active,\n .input-group-btn:not(:first-child) > .btn-group:hover {\n z-index: 2;\n }\n \n .custom-control {\n position: relative;\n display: -ms-inline-flexbox;\n display: inline-flex;\n min-height: 1.5rem;\n padding-left: 1.5rem;\n margin-right: 1rem;\n }\n \n .custom-control-input {\n position: absolute;\n z-index: -1;\n opacity: 0;\n }\n \n .custom-control-input:checked ~ .custom-control-indicator {\n color: #fff;\n background-color: #007bff;\n }\n \n .custom-control-input:focus ~ .custom-control-indicator {\n box-shadow: 0 0 0 1px #fff, 0 0 0 0.2rem rgba(0, 123, 255, 0.25);\n }\n \n .custom-control-input:active ~ .custom-control-indicator {\n color: #fff;\n background-color: #b3d7ff;\n }\n \n .custom-control-input:disabled ~ .custom-control-indicator {\n background-color: #e9ecef;\n }\n \n .custom-control-input:disabled ~ .custom-control-description {\n color: #868e96;\n }\n \n .custom-control-indicator {\n position: absolute;\n top: 0.25rem;\n left: 0;\n display: block;\n width: 1rem;\n height: 1rem;\n pointer-events: none;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n background-color: #dee2e6;\n }\n \n .custom-control-indicator::before {\n display: block;\n width: 1rem;\n height: 1rem;\n content: \"\";\n background-repeat: no-repeat;\n background-position: center center;\n background-size: 50% 50%;\n }\n \n .custom-checkbox .custom-control-indicator {\n border-radius: 0.25rem;\n }\n \n .custom-checkbox .custom-control-input:checked ~ .custom-control-indicator {\n background-color: #007bff;\n }\n \n .custom-checkbox .custom-control-input:checked ~ .custom-control-indicator::before {\n background-image: url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26 2.974 7.25 8 2.193z'/%3E%3C/svg%3E\");\n }\n \n .custom-checkbox .custom-control-input:indeterminate ~ .custom-control-indicator {\n background-color: #007bff;\n }\n \n .custom-checkbox .custom-control-input:indeterminate ~ .custom-control-indicator::before {\n background-image: url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 4'%3E%3Cpath stroke='%23fff' d='M0 2h4'/%3E%3C/svg%3E\");\n }\n \n .custom-radio .custom-control-indicator {\n border-radius: 50%;\n }\n \n .custom-radio .custom-control-input:checked ~ .custom-control-indicator {\n background-color: #007bff;\n }\n \n .custom-radio .custom-control-input:checked ~ .custom-control-indicator::before {\n background-image: url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3E%3Ccircle r='3' fill='%23fff'/%3E%3C/svg%3E\");\n }\n \n .custom-controls-stacked {\n display: -ms-flexbox;\n display: flex;\n -ms-flex-direction: column;\n flex-direction: column;\n }\n \n .custom-controls-stacked .custom-control {\n margin-bottom: 0.25rem;\n }\n \n .custom-controls-stacked .custom-control + .custom-control {\n margin-left: 0;\n }\n \n .custom-select {\n display: inline-block;\n max-width: 100%;\n height: calc(2.25rem + 2px);\n padding: 0.375rem 1.75rem 0.375rem 0.75rem;\n line-height: 1.5;\n color: #495057;\n vertical-align: middle;\n background: #fff url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3E%3Cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3E%3C/svg%3E\") no-repeat right 0.75rem center;\n background-size: 8px 10px;\n border: 1px solid #ced4da;\n border-radius: 0.25rem;\n -webkit-appearance: none;\n -moz-appearance: none;\n appearance: none;\n }\n \n .custom-select:focus {\n border-color: #80bdff;\n outline: 0;\n box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.075), 0 0 0 0.2rem rgba(0, 123, 255, 0.25);\n }\n \n .custom-select:focus::-ms-value {\n color: #495057;\n background-color: #fff;\n }\n \n .custom-select[multiple], .custom-select[size]:not([size=\"1\"]) {\n height: auto;\n padding-right: 0.75rem;\n background-image: none;\n }\n \n .custom-select:disabled {\n color: #868e96;\n background-color: #e9ecef;\n }\n \n .custom-select::-ms-expand {\n opacity: 0;\n }\n \n .custom-select-sm {\n height: calc(1.8125rem + 2px);\n padding-top: 0.375rem;\n padding-bottom: 0.375rem;\n font-size: 75%;\n }\n \n .custom-select-lg {\n height: calc(2.875rem + 2px);\n padding-top: 0.375rem;\n padding-bottom: 0.375rem;\n font-size: 125%;\n }\n \n .custom-file {\n position: relative;\n display: inline-block;\n max-width: 100%;\n height: calc(2.25rem + 2px);\n margin-bottom: 0;\n }\n \n .custom-file-input {\n min-width: 14rem;\n max-width: 100%;\n height: calc(2.25rem + 2px);\n margin: 0;\n opacity: 0;\n }\n \n .custom-file-input:focus ~ .custom-file-control {\n border-color: #80bdff;\n box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25);\n }\n \n .custom-file-input:focus ~ .custom-file-control::before {\n border-color: #80bdff;\n }\n \n .custom-file-control {\n position: absolute;\n top: 0;\n right: 0;\n left: 0;\n height: calc(2.25rem + 2px);\n padding: 0.375rem 0.75rem;\n line-height: 1.5;\n color: #495057;\n pointer-events: none;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n background-color: #fff;\n border: 1px solid #ced4da;\n border-radius: 0.25rem;\n }\n \n .custom-file-control:lang(en):empty::after {\n content: \"Choose file...\";\n }\n \n .custom-file-control::before {\n position: absolute;\n top: -1px;\n right: -1px;\n bottom: -1px;\n z-index: 1;\n display: block;\n height: calc(2.25rem + 2px);\n padding: 0.375rem 0.75rem;\n line-height: 1.5;\n color: #495057;\n background-color: #e9ecef;\n border: 1px solid #ced4da;\n border-radius: 0 0.25rem 0.25rem 0;\n }\n \n .custom-file-control:lang(en)::before {\n content: \"Browse\";\n }\n \n .nav {\n display: -ms-flexbox;\n display: flex;\n -ms-flex-wrap: wrap;\n flex-wrap: wrap;\n padding-left: 0;\n margin-bottom: 0;\n list-style: none;\n }\n \n .nav-link {\n display: block;\n padding: 0.5rem 1rem;\n }\n \n .nav-link:focus, .nav-link:hover {\n text-decoration: none;\n }\n \n .nav-link.disabled {\n color: #868e96;\n }\n \n .nav-tabs {\n border-bottom: 1px solid #dee2e6;\n }\n \n .nav-tabs .nav-item {\n margin-bottom: -1px;\n }\n \n .nav-tabs .nav-link {\n border: 1px solid transparent;\n border-top-left-radius: 0.25rem;\n border-top-right-radius: 0.25rem;\n }\n \n .nav-tabs .nav-link:focus, .nav-tabs .nav-link:hover {\n border-color: #e9ecef #e9ecef #dee2e6;\n }\n \n .nav-tabs .nav-link.disabled {\n color: #868e96;\n background-color: transparent;\n border-color: transparent;\n }\n \n .nav-tabs .nav-link.active,\n .nav-tabs .nav-item.show .nav-link {\n color: #495057;\n background-color: #fff;\n border-color: #dee2e6 #dee2e6 #fff;\n }\n \n .nav-tabs .dropdown-menu {\n margin-top: -1px;\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n }\n \n .nav-pills .nav-link {\n border-radius: 0.25rem;\n }\n \n .nav-pills .nav-link.active,\n .nav-pills .show > .nav-link {\n color: #fff;\n background-color: #007bff;\n }\n \n .nav-fill .nav-item {\n -ms-flex: 1 1 auto;\n flex: 1 1 auto;\n text-align: center;\n }\n \n .nav-justified .nav-item {\n -ms-flex-preferred-size: 0;\n flex-basis: 0;\n -ms-flex-positive: 1;\n flex-grow: 1;\n text-align: center;\n }\n \n .tab-content > .tab-pane {\n display: none;\n }\n \n .tab-content > .active {\n display: block;\n }\n \n .navbar {\n position: relative;\n display: -ms-flexbox;\n display: flex;\n -ms-flex-wrap: wrap;\n flex-wrap: wrap;\n -ms-flex-align: center;\n align-items: center;\n -ms-flex-pack: justify;\n justify-content: space-between;\n padding: 0.5rem 1rem;\n }\n \n .navbar > .container,\n .navbar > .container-fluid {\n display: -ms-flexbox;\n display: flex;\n -ms-flex-wrap: wrap;\n flex-wrap: wrap;\n -ms-flex-align: center;\n align-items: center;\n -ms-flex-pack: justify;\n justify-content: space-between;\n }\n \n .navbar-brand {\n display: inline-block;\n padding-top: 0.3125rem;\n padding-bottom: 0.3125rem;\n margin-right: 1rem;\n font-size: 1.25rem;\n line-height: inherit;\n white-space: nowrap;\n }\n \n .navbar-brand:focus, .navbar-brand:hover {\n text-decoration: none;\n }\n \n .navbar-nav {\n display: -ms-flexbox;\n display: flex;\n -ms-flex-direction: column;\n flex-direction: column;\n padding-left: 0;\n margin-bottom: 0;\n list-style: none;\n }\n \n .navbar-nav .nav-link {\n padding-right: 0;\n padding-left: 0;\n }\n \n .navbar-nav .dropdown-menu {\n position: static;\n float: none;\n }\n \n .navbar-text {\n display: inline-block;\n padding-top: 0.5rem;\n padding-bottom: 0.5rem;\n }\n \n .navbar-collapse {\n -ms-flex-preferred-size: 100%;\n flex-basis: 100%;\n -ms-flex-positive: 1;\n flex-grow: 1;\n -ms-flex-align: center;\n align-items: center;\n }\n \n .navbar-toggler {\n padding: 0.25rem 0.75rem;\n font-size: 1.25rem;\n line-height: 1;\n background-color: transparent;\n border: 1px solid transparent;\n border-radius: 0.25rem;\n }\n \n .navbar-toggler:focus, .navbar-toggler:hover {\n text-decoration: none;\n }\n \n .navbar-toggler-icon {\n display: inline-block;\n width: 1.5em;\n height: 1.5em;\n vertical-align: middle;\n content: \"\";\n background: no-repeat center center;\n background-size: 100% 100%;\n }\n \n @media (max-width: 575.99px) {\n .navbar-expand-sm > .container,\n .navbar-expand-sm > .container-fluid {\n padding-right: 0;\n padding-left: 0;\n }\n }\n \n @media (min-width: 576px) {\n .navbar-expand-sm {\n -ms-flex-flow: row nowrap;\n flex-flow: row nowrap;\n -ms-flex-pack: start;\n justify-content: flex-start;\n }\n .navbar-expand-sm .navbar-nav {\n -ms-flex-direction: row;\n flex-direction: row;\n }\n .navbar-expand-sm .navbar-nav .dropdown-menu {\n position: absolute;\n }\n .navbar-expand-sm .navbar-nav .dropdown-menu-right {\n right: 0;\n left: auto;\n }\n .navbar-expand-sm .navbar-nav .nav-link {\n padding-right: .5rem;\n padding-left: .5rem;\n }\n .navbar-expand-sm > .container,\n .navbar-expand-sm > .container-fluid {\n -ms-flex-wrap: nowrap;\n flex-wrap: nowrap;\n }\n .navbar-expand-sm .navbar-collapse {\n display: -ms-flexbox !important;\n display: flex !important;\n -ms-flex-preferred-size: auto;\n flex-basis: auto;\n }\n .navbar-expand-sm .navbar-toggler {\n display: none;\n }\n .navbar-expand-sm .dropup .dropdown-menu {\n top: auto;\n bottom: 100%;\n }\n }\n \n @media (max-width: 767.99px) {\n .navbar-expand-md > .container,\n .navbar-expand-md > .container-fluid {\n padding-right: 0;\n padding-left: 0;\n }\n }\n \n @media (min-width: 768px) {\n .navbar-expand-md {\n -ms-flex-flow: row nowrap;\n flex-flow: row nowrap;\n -ms-flex-pack: start;\n justify-content: flex-start;\n }\n .navbar-expand-md .navbar-nav {\n -ms-flex-direction: row;\n flex-direction: row;\n }\n .navbar-expand-md .navbar-nav .dropdown-menu {\n position: absolute;\n }\n .navbar-expand-md .navbar-nav .dropdown-menu-right {\n right: 0;\n left: auto;\n }\n .navbar-expand-md .navbar-nav .nav-link {\n padding-right: .5rem;\n padding-left: .5rem;\n }\n .navbar-expand-md > .container,\n .navbar-expand-md > .container-fluid {\n -ms-flex-wrap: nowrap;\n flex-wrap: nowrap;\n }\n .navbar-expand-md .navbar-collapse {\n display: -ms-flexbox !important;\n display: flex !important;\n -ms-flex-preferred-size: auto;\n flex-basis: auto;\n }\n .navbar-expand-md .navbar-toggler {\n display: none;\n }\n .navbar-expand-md .dropup .dropdown-menu {\n top: auto;\n bottom: 100%;\n }\n }\n \n @media (max-width: 991.99px) {\n .navbar-expand-lg > .container,\n .navbar-expand-lg > .container-fluid {\n padding-right: 0;\n padding-left: 0;\n }\n }\n \n @media (min-width: 992px) {\n .navbar-expand-lg {\n -ms-flex-flow: row nowrap;\n flex-flow: row nowrap;\n -ms-flex-pack: start;\n justify-content: flex-start;\n }\n .navbar-expand-lg .navbar-nav {\n -ms-flex-direction: row;\n flex-direction: row;\n }\n .navbar-expand-lg .navbar-nav .dropdown-menu {\n position: absolute;\n }\n .navbar-expand-lg .navbar-nav .dropdown-menu-right {\n right: 0;\n left: auto;\n }\n .navbar-expand-lg .navbar-nav .nav-link {\n padding-right: .5rem;\n padding-left: .5rem;\n }\n .navbar-expand-lg > .container,\n .navbar-expand-lg > .container-fluid {\n -ms-flex-wrap: nowrap;\n flex-wrap: nowrap;\n }\n .navbar-expand-lg .navbar-collapse {\n display: -ms-flexbox !important;\n display: flex !important;\n -ms-flex-preferred-size: auto;\n flex-basis: auto;\n }\n .navbar-expand-lg .navbar-toggler {\n display: none;\n }\n .navbar-expand-lg .dropup .dropdown-menu {\n top: auto;\n bottom: 100%;\n }\n }\n \n @media (max-width: 1199.99px) {\n .navbar-expand-xl > .container,\n .navbar-expand-xl > .container-fluid {\n padding-right: 0;\n padding-left: 0;\n }\n }\n \n @media (min-width: 1200px) {\n .navbar-expand-xl {\n -ms-flex-flow: row nowrap;\n flex-flow: row nowrap;\n -ms-flex-pack: start;\n justify-content: flex-start;\n }\n .navbar-expand-xl .navbar-nav {\n -ms-flex-direction: row;\n flex-direction: row;\n }\n .navbar-expand-xl .navbar-nav .dropdown-menu {\n position: absolute;\n }\n .navbar-expand-xl .navbar-nav .dropdown-menu-right {\n right: 0;\n left: auto;\n }\n .navbar-expand-xl .navbar-nav .nav-link {\n padding-right: .5rem;\n padding-left: .5rem;\n }\n .navbar-expand-xl > .container,\n .navbar-expand-xl > .container-fluid {\n -ms-flex-wrap: nowrap;\n flex-wrap: nowrap;\n }\n .navbar-expand-xl .navbar-collapse {\n display: -ms-flexbox !important;\n display: flex !important;\n -ms-flex-preferred-size: auto;\n flex-basis: auto;\n }\n .navbar-expand-xl .navbar-toggler {\n display: none;\n }\n .navbar-expand-xl .dropup .dropdown-menu {\n top: auto;\n bottom: 100%;\n }\n }\n \n .navbar-expand {\n -ms-flex-flow: row nowrap;\n flex-flow: row nowrap;\n -ms-flex-pack: start;\n justify-content: flex-start;\n }\n \n .navbar-expand > .container,\n .navbar-expand > .container-fluid {\n padding-right: 0;\n padding-left: 0;\n }\n \n .navbar-expand .navbar-nav {\n -ms-flex-direction: row;\n flex-direction: row;\n }\n \n .navbar-expand .navbar-nav .dropdown-menu {\n position: absolute;\n }\n \n .navbar-expand .navbar-nav .dropdown-menu-right {\n right: 0;\n left: auto;\n }\n \n .navbar-expand .navbar-nav .nav-link {\n padding-right: .5rem;\n padding-left: .5rem;\n }\n \n .navbar-expand > .container,\n .navbar-expand > .container-fluid {\n -ms-flex-wrap: nowrap;\n flex-wrap: nowrap;\n }\n \n .navbar-expand .navbar-collapse {\n display: -ms-flexbox !important;\n display: flex !important;\n -ms-flex-preferred-size: auto;\n flex-basis: auto;\n }\n \n .navbar-expand .navbar-toggler {\n display: none;\n }\n \n .navbar-expand .dropup .dropdown-menu {\n top: auto;\n bottom: 100%;\n }\n \n .navbar-light .navbar-brand {\n color: rgba(0, 0, 0, 0.9);\n }\n \n .navbar-light .navbar-brand:focus, .navbar-light .navbar-brand:hover {\n color: rgba(0, 0, 0, 0.9);\n }\n \n .navbar-light .navbar-nav .nav-link {\n color: rgba(0, 0, 0, 0.5);\n }\n \n .navbar-light .navbar-nav .nav-link:focus, .navbar-light .navbar-nav .nav-link:hover {\n color: rgba(0, 0, 0, 0.7);\n }\n \n .navbar-light .navbar-nav .nav-link.disabled {\n color: rgba(0, 0, 0, 0.3);\n }\n \n .navbar-light .navbar-nav .show > .nav-link,\n .navbar-light .navbar-nav .active > .nav-link,\n .navbar-light .navbar-nav .nav-link.show,\n .navbar-light .navbar-nav .nav-link.active {\n color: rgba(0, 0, 0, 0.9);\n }\n \n .navbar-light .navbar-toggler {\n color: rgba(0, 0, 0, 0.5);\n border-color: rgba(0, 0, 0, 0.1);\n }\n \n .navbar-light .navbar-toggler-icon {\n background-image: url(\"data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='rgba(0, 0, 0, 0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E\");\n }\n \n .navbar-light .navbar-text {\n color: rgba(0, 0, 0, 0.5);\n }\n \n .navbar-light .navbar-text a {\n color: rgba(0, 0, 0, 0.9);\n }\n \n .navbar-light .navbar-text a:focus, .navbar-light .navbar-text a:hover {\n color: rgba(0, 0, 0, 0.9);\n }\n \n .navbar-dark .navbar-brand {\n color: #fff;\n }\n \n .navbar-dark .navbar-brand:focus, .navbar-dark .navbar-brand:hover {\n color: #fff;\n }\n \n .navbar-dark .navbar-nav .nav-link {\n color: rgba(255, 255, 255, 0.5);\n }\n \n .navbar-dark .navbar-nav .nav-link:focus, .navbar-dark .navbar-nav .nav-link:hover {\n color: rgba(255, 255, 255, 0.75);\n }\n \n .navbar-dark .navbar-nav .nav-link.disabled {\n color: rgba(255, 255, 255, 0.25);\n }\n \n .navbar-dark .navbar-nav .show > .nav-link,\n .navbar-dark .navbar-nav .active > .nav-link,\n .navbar-dark .navbar-nav .nav-link.show,\n .navbar-dark .navbar-nav .nav-link.active {\n color: #fff;\n }\n \n .navbar-dark .navbar-toggler {\n color: rgba(255, 255, 255, 0.5);\n border-color: rgba(255, 255, 255, 0.1);\n }\n \n .navbar-dark .navbar-toggler-icon {\n background-image: url(\"data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='rgba(255, 255, 255, 0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E\");\n }\n \n .navbar-dark .navbar-text {\n color: rgba(255, 255, 255, 0.5);\n }\n \n .navbar-dark .navbar-text a {\n color: #fff;\n }\n \n .navbar-dark .navbar-text a:focus, .navbar-dark .navbar-text a:hover {\n color: #fff;\n }\n \n .card {\n position: relative;\n display: -ms-flexbox;\n display: flex;\n -ms-flex-direction: column;\n flex-direction: column;\n min-width: 0;\n word-wrap: break-word;\n background-color: #fff;\n background-clip: border-box;\n border: 1px solid rgba(0, 0, 0, 0.125);\n border-radius: 0.25rem;\n }\n \n .card > hr {\n margin-right: 0;\n margin-left: 0;\n }\n \n .card > .list-group:first-child .list-group-item:first-child {\n border-top-left-radius: 0.25rem;\n border-top-right-radius: 0.25rem;\n }\n \n .card > .list-group:last-child .list-group-item:last-child {\n border-bottom-right-radius: 0.25rem;\n border-bottom-left-radius: 0.25rem;\n }\n \n .card-body {\n -ms-flex: 1 1 auto;\n flex: 1 1 auto;\n padding: 1.25rem;\n }\n \n .card-title {\n margin-bottom: 0.75rem;\n }\n \n .card-subtitle {\n margin-top: -0.375rem;\n margin-bottom: 0;\n }\n \n .card-text:last-child {\n margin-bottom: 0;\n }\n \n .card-link:hover {\n text-decoration: none;\n }\n \n .card-link + .card-link {\n margin-left: 1.25rem;\n }\n \n .card-header {\n padding: 0.75rem 1.25rem;\n margin-bottom: 0;\n background-color: rgba(0, 0, 0, 0.03);\n border-bottom: 1px solid rgba(0, 0, 0, 0.125);\n }\n \n .card-header:first-child {\n border-radius: calc(0.25rem - 1px) calc(0.25rem - 1px) 0 0;\n }\n \n .card-header + .list-group .list-group-item:first-child {\n border-top: 0;\n }\n \n .card-footer {\n padding: 0.75rem 1.25rem;\n background-color: rgba(0, 0, 0, 0.03);\n border-top: 1px solid rgba(0, 0, 0, 0.125);\n }\n \n .card-footer:last-child {\n border-radius: 0 0 calc(0.25rem - 1px) calc(0.25rem - 1px);\n }\n \n .card-header-tabs {\n margin-right: -0.625rem;\n margin-bottom: -0.75rem;\n margin-left: -0.625rem;\n border-bottom: 0;\n }\n \n .card-header-pills {\n margin-right: -0.625rem;\n margin-left: -0.625rem;\n }\n \n .card-img-overlay {\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n padding: 1.25rem;\n }\n \n .card-img {\n width: 100%;\n border-radius: calc(0.25rem - 1px);\n }\n \n .card-img-top {\n width: 100%;\n border-top-left-radius: calc(0.25rem - 1px);\n border-top-right-radius: calc(0.25rem - 1px);\n }\n \n .card-img-bottom {\n width: 100%;\n border-bottom-right-radius: calc(0.25rem - 1px);\n border-bottom-left-radius: calc(0.25rem - 1px);\n }\n \n .card-deck {\n display: -ms-flexbox;\n display: flex;\n -ms-flex-direction: column;\n flex-direction: column;\n }\n \n .card-deck .card {\n margin-bottom: 15px;\n }\n \n @media (min-width: 576px) {\n .card-deck {\n -ms-flex-flow: row wrap;\n flex-flow: row wrap;\n margin-right: -15px;\n margin-left: -15px;\n }\n .card-deck .card {\n display: -ms-flexbox;\n display: flex;\n -ms-flex: 1 0 0%;\n flex: 1 0 0%;\n -ms-flex-direction: column;\n flex-direction: column;\n margin-right: 15px;\n margin-bottom: 0;\n margin-left: 15px;\n }\n }\n \n .card-group {\n display: -ms-flexbox;\n display: flex;\n -ms-flex-direction: column;\n flex-direction: column;\n }\n \n .card-group > .card {\n margin-bottom: 15px;\n }\n \n @media (min-width: 576px) {\n .card-group {\n -ms-flex-flow: row wrap;\n flex-flow: row wrap;\n }\n .card-group > .card {\n -ms-flex: 1 0 0%;\n flex: 1 0 0%;\n margin-bottom: 0;\n }\n .card-group > .card + .card {\n margin-left: 0;\n border-left: 0;\n }\n .card-group > .card:first-child {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n }\n .card-group > .card:first-child .card-img-top,\n .card-group > .card:first-child .card-header {\n border-top-right-radius: 0;\n }\n .card-group > .card:first-child .card-img-bottom,\n .card-group > .card:first-child .card-footer {\n border-bottom-right-radius: 0;\n }\n .card-group > .card:last-child {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n }\n .card-group > .card:last-child .card-img-top,\n .card-group > .card:last-child .card-header {\n border-top-left-radius: 0;\n }\n .card-group > .card:last-child .card-img-bottom,\n .card-group > .card:last-child .card-footer {\n border-bottom-left-radius: 0;\n }\n .card-group > .card:only-child {\n border-radius: 0.25rem;\n }\n .card-group > .card:only-child .card-img-top,\n .card-group > .card:only-child .card-header {\n border-top-left-radius: 0.25rem;\n border-top-right-radius: 0.25rem;\n }\n .card-group > .card:only-child .card-img-bottom,\n .card-group > .card:only-child .card-footer {\n border-bottom-right-radius: 0.25rem;\n border-bottom-left-radius: 0.25rem;\n }\n .card-group > .card:not(:first-child):not(:last-child):not(:only-child) {\n border-radius: 0;\n }\n .card-group > .card:not(:first-child):not(:last-child):not(:only-child) .card-img-top,\n .card-group > .card:not(:first-child):not(:last-child):not(:only-child) .card-img-bottom,\n .card-group > .card:not(:first-child):not(:last-child):not(:only-child) .card-header,\n .card-group > .card:not(:first-child):not(:last-child):not(:only-child) .card-footer {\n border-radius: 0;\n }\n }\n \n .card-columns .card {\n margin-bottom: 0.75rem;\n }\n \n @media (min-width: 576px) {\n .card-columns {\n -webkit-column-count: 3;\n column-count: 3;\n -webkit-column-gap: 1.25rem;\n column-gap: 1.25rem;\n }\n .card-columns .card {\n display: inline-block;\n width: 100%;\n }\n }\n \n .breadcrumb {\n display: -ms-flexbox;\n display: flex;\n -ms-flex-wrap: wrap;\n flex-wrap: wrap;\n padding: 0.75rem 1rem;\n margin-bottom: 1rem;\n list-style: none;\n background-color: #e9ecef;\n border-radius: 0.25rem;\n }\n \n .breadcrumb-item + .breadcrumb-item::before {\n display: inline-block;\n padding-right: 0.5rem;\n padding-left: 0.5rem;\n color: #868e96;\n content: \"/\";\n }\n \n .breadcrumb-item + .breadcrumb-item:hover::before {\n text-decoration: underline;\n }\n \n .breadcrumb-item + .breadcrumb-item:hover::before {\n text-decoration: none;\n }\n \n .breadcrumb-item.active {\n color: #868e96;\n }\n \n .pagination {\n display: -ms-flexbox;\n display: flex;\n padding-left: 0;\n list-style: none;\n border-radius: 0.25rem;\n }\n \n .page-link {\n position: relative;\n display: block;\n padding: 0.5rem 0.75rem;\n margin-left: -1px;\n line-height: 1.25;\n color: #007bff;\n background-color: #fff;\n border: 1px solid #dee2e6;\n }\n \n .page-link:focus, .page-link:hover {\n color: #0056b3;\n text-decoration: none;\n background-color: #e9ecef;\n border-color: #dee2e6;\n }\n \n .page-item:first-child .page-link {\n margin-left: 0;\n border-top-left-radius: 0.25rem;\n border-bottom-left-radius: 0.25rem;\n }\n \n .page-item:last-child .page-link {\n border-top-right-radius: 0.25rem;\n border-bottom-right-radius: 0.25rem;\n }\n \n .page-item.active .page-link {\n z-index: 1;\n color: #fff;\n background-color: #007bff;\n border-color: #007bff;\n }\n \n .page-item.disabled .page-link {\n color: #868e96;\n pointer-events: none;\n background-color: #fff;\n border-color: #dee2e6;\n }\n \n .pagination-lg .page-link {\n padding: 0.75rem 1.5rem;\n font-size: 1.25rem;\n line-height: 1.5;\n }\n \n .pagination-lg .page-item:first-child .page-link {\n border-top-left-radius: 0.3rem;\n border-bottom-left-radius: 0.3rem;\n }\n \n .pagination-lg .page-item:last-child .page-link {\n border-top-right-radius: 0.3rem;\n border-bottom-right-radius: 0.3rem;\n }\n \n .pagination-sm .page-link {\n padding: 0.25rem 0.5rem;\n font-size: 0.875rem;\n line-height: 1.5;\n }\n \n .pagination-sm .page-item:first-child .page-link {\n border-top-left-radius: 0.2rem;\n border-bottom-left-radius: 0.2rem;\n }\n \n .pagination-sm .page-item:last-child .page-link {\n border-top-right-radius: 0.2rem;\n border-bottom-right-radius: 0.2rem;\n }\n \n .badge {\n display: inline-block;\n padding: 0.25em 0.4em;\n font-size: 75%;\n font-weight: 700;\n line-height: 1;\n text-align: center;\n white-space: nowrap;\n vertical-align: baseline;\n border-radius: 0.25rem;\n }\n \n .badge:empty {\n display: none;\n }\n \n .btn .badge {\n position: relative;\n top: -1px;\n }\n \n .badge-pill {\n padding-right: 0.6em;\n padding-left: 0.6em;\n border-radius: 10rem;\n }\n \n .badge-primary {\n color: #fff;\n background-color: #007bff;\n }\n \n .badge-primary[href]:focus, .badge-primary[href]:hover {\n color: #fff;\n text-decoration: none;\n background-color: #0062cc;\n }\n \n .badge-secondary {\n color: #fff;\n background-color: #868e96;\n }\n \n .badge-secondary[href]:focus, .badge-secondary[href]:hover {\n color: #fff;\n text-decoration: none;\n background-color: #6c757d;\n }\n \n .badge-success {\n color: #fff;\n background-color: #28a745;\n }\n \n .badge-success[href]:focus, .badge-success[href]:hover {\n color: #fff;\n text-decoration: none;\n background-color: #1e7e34;\n }\n \n .badge-info {\n color: #fff;\n background-color: #17a2b8;\n }\n \n .badge-info[href]:focus, .badge-info[href]:hover {\n color: #fff;\n text-decoration: none;\n background-color: #117a8b;\n }\n \n .badge-warning {\n color: #212529;\n background-color: #ffc107;\n }\n \n .badge-warning[href]:focus, .badge-warning[href]:hover {\n color: #212529;\n text-decoration: none;\n background-color: #d39e00;\n }\n \n .badge-danger {\n color: #fff;\n background-color: #dc3545;\n }\n \n .badge-danger[href]:focus, .badge-danger[href]:hover {\n color: #fff;\n text-decoration: none;\n background-color: #bd2130;\n }\n \n .badge-light {\n color: #212529;\n background-color: #f8f9fa;\n }\n \n .badge-light[href]:focus, .badge-light[href]:hover {\n color: #212529;\n text-decoration: none;\n background-color: #dae0e5;\n }\n \n .badge-dark {\n color: #fff;\n background-color: #343a40;\n }\n \n .badge-dark[href]:focus, .badge-dark[href]:hover {\n color: #fff;\n text-decoration: none;\n background-color: #1d2124;\n }\n \n .jumbotron {\n padding: 2rem 1rem;\n margin-bottom: 2rem;\n background-color: #e9ecef;\n border-radius: 0.3rem;\n }\n \n @media (min-width: 576px) {\n .jumbotron {\n padding: 4rem 2rem;\n }\n }\n \n .jumbotron-fluid {\n padding-right: 0;\n padding-left: 0;\n border-radius: 0;\n }\n \n .alert {\n position: relative;\n padding: 0.75rem 1.25rem;\n margin-bottom: 1rem;\n border: 1px solid transparent;\n border-radius: 0.25rem;\n }\n \n .alert-heading {\n color: inherit;\n }\n \n .alert-link {\n font-weight: 700;\n }\n \n .alert-dismissible {\n padding-right: 4rem;\n }\n \n .alert-dismissible .close {\n position: absolute;\n top: 0;\n right: 0;\n padding: 0.75rem 1.25rem;\n color: inherit;\n }\n \n .alert-primary {\n color: #004085;\n background-color: #cce5ff;\n border-color: #b8daff;\n }\n \n .alert-primary hr {\n border-top-color: #9fcdff;\n }\n \n .alert-primary .alert-link {\n color: #002752;\n }\n \n .alert-secondary {\n color: #464a4e;\n background-color: #e7e8ea;\n border-color: #dddfe2;\n }\n \n .alert-secondary hr {\n border-top-color: #cfd2d6;\n }\n \n .alert-secondary .alert-link {\n color: #2e3133;\n }\n \n .alert-success {\n color: #155724;\n background-color: #d4edda;\n border-color: #c3e6cb;\n }\n \n .alert-success hr {\n border-top-color: #b1dfbb;\n }\n \n .alert-success .alert-link {\n color: #0b2e13;\n }\n \n .alert-info {\n color: #0c5460;\n background-color: #d1ecf1;\n border-color: #bee5eb;\n }\n \n .alert-info hr {\n border-top-color: #abdde5;\n }\n \n .alert-info .alert-link {\n color: #062c33;\n }\n \n .alert-warning {\n color: #856404;\n background-color: #fff3cd;\n border-color: #ffeeba;\n }\n \n .alert-warning hr {\n border-top-color: #ffe8a1;\n }\n \n .alert-warning .alert-link {\n color: #533f03;\n }\n \n .alert-danger {\n color: #721c24;\n background-color: #f8d7da;\n border-color: #f5c6cb;\n }\n \n .alert-danger hr {\n border-top-color: #f1b0b7;\n }\n \n .alert-danger .alert-link {\n color: #491217;\n }\n \n .alert-light {\n color: #818182;\n background-color: #fefefe;\n border-color: #fdfdfe;\n }\n \n .alert-light hr {\n border-top-color: #ececf6;\n }\n \n .alert-light .alert-link {\n color: #686868;\n }\n \n .alert-dark {\n color: #1b1e21;\n background-color: #d6d8d9;\n border-color: #c6c8ca;\n }\n \n .alert-dark hr {\n border-top-color: #b9bbbe;\n }\n \n .alert-dark .alert-link {\n color: #040505;\n }\n \n @-webkit-keyframes progress-bar-stripes {\n from {\n background-position: 1rem 0;\n }\n to {\n background-position: 0 0;\n }\n }\n \n @keyframes progress-bar-stripes {\n from {\n background-position: 1rem 0;\n }\n to {\n background-position: 0 0;\n }\n }\n \n .progress {\n display: -ms-flexbox;\n display: flex;\n height: 1rem;\n overflow: hidden;\n font-size: 0.75rem;\n background-color: #e9ecef;\n border-radius: 0.25rem;\n }\n \n .progress-bar {\n display: -ms-flexbox;\n display: flex;\n -ms-flex-direction: column;\n flex-direction: column;\n -ms-flex-pack: center;\n justify-content: center;\n color: #fff;\n text-align: center;\n background-color: #007bff;\n transition: width 0.6s ease;\n }\n \n .progress-bar-striped {\n background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-size: 1rem 1rem;\n }\n \n .progress-bar-animated {\n -webkit-animation: progress-bar-stripes 1s linear infinite;\n animation: progress-bar-stripes 1s linear infinite;\n }\n \n .media {\n display: -ms-flexbox;\n display: flex;\n -ms-flex-align: start;\n align-items: flex-start;\n }\n \n .media-body {\n -ms-flex: 1;\n flex: 1;\n }\n \n .list-group {\n display: -ms-flexbox;\n display: flex;\n -ms-flex-direction: column;\n flex-direction: column;\n padding-left: 0;\n margin-bottom: 0;\n }\n \n .list-group-item-action {\n width: 100%;\n color: #495057;\n text-align: inherit;\n }\n \n .list-group-item-action:focus, .list-group-item-action:hover {\n color: #495057;\n text-decoration: none;\n background-color: #f8f9fa;\n }\n \n .list-group-item-action:active {\n color: #212529;\n background-color: #e9ecef;\n }\n \n .list-group-item {\n position: relative;\n display: block;\n padding: 0.75rem 1.25rem;\n margin-bottom: -1px;\n background-color: #fff;\n border: 1px solid rgba(0, 0, 0, 0.125);\n }\n \n .list-group-item:first-child {\n border-top-left-radius: 0.25rem;\n border-top-right-radius: 0.25rem;\n }\n \n .list-group-item:last-child {\n margin-bottom: 0;\n border-bottom-right-radius: 0.25rem;\n border-bottom-left-radius: 0.25rem;\n }\n \n .list-group-item:focus, .list-group-item:hover {\n text-decoration: none;\n }\n \n .list-group-item.disabled, .list-group-item:disabled {\n color: #868e96;\n background-color: #fff;\n }\n \n .list-group-item.active {\n z-index: 1;\n color: #fff;\n background-color: #007bff;\n border-color: #007bff;\n }\n \n .list-group-flush .list-group-item {\n border-right: 0;\n border-left: 0;\n border-radius: 0;\n }\n \n .list-group-flush:first-child .list-group-item:first-child {\n border-top: 0;\n }\n \n .list-group-flush:last-child .list-group-item:last-child {\n border-bottom: 0;\n }\n \n .list-group-item-primary {\n color: #004085;\n background-color: #b8daff;\n }\n \n a.list-group-item-primary,\n button.list-group-item-primary {\n color: #004085;\n }\n \n a.list-group-item-primary:focus, a.list-group-item-primary:hover,\n button.list-group-item-primary:focus,\n button.list-group-item-primary:hover {\n color: #004085;\n background-color: #9fcdff;\n }\n \n a.list-group-item-primary.active,\n button.list-group-item-primary.active {\n color: #fff;\n background-color: #004085;\n border-color: #004085;\n }\n \n .list-group-item-secondary {\n color: #464a4e;\n background-color: #dddfe2;\n }\n \n a.list-group-item-secondary,\n button.list-group-item-secondary {\n color: #464a4e;\n }\n \n a.list-group-item-secondary:focus, a.list-group-item-secondary:hover,\n button.list-group-item-secondary:focus,\n button.list-group-item-secondary:hover {\n color: #464a4e;\n background-color: #cfd2d6;\n }\n \n a.list-group-item-secondary.active,\n button.list-group-item-secondary.active {\n color: #fff;\n background-color: #464a4e;\n border-color: #464a4e;\n }\n \n .list-group-item-success {\n color: #155724;\n background-color: #c3e6cb;\n }\n \n a.list-group-item-success,\n button.list-group-item-success {\n color: #155724;\n }\n \n a.list-group-item-success:focus, a.list-group-item-success:hover,\n button.list-group-item-success:focus,\n button.list-group-item-success:hover {\n color: #155724;\n background-color: #b1dfbb;\n }\n \n a.list-group-item-success.active,\n button.list-group-item-success.active {\n color: #fff;\n background-color: #155724;\n border-color: #155724;\n }\n \n .list-group-item-info {\n color: #0c5460;\n background-color: #bee5eb;\n }\n \n a.list-group-item-info,\n button.list-group-item-info {\n color: #0c5460;\n }\n \n a.list-group-item-info:focus, a.list-group-item-info:hover,\n button.list-group-item-info:focus,\n button.list-group-item-info:hover {\n color: #0c5460;\n background-color: #abdde5;\n }\n \n a.list-group-item-info.active,\n button.list-group-item-info.active {\n color: #fff;\n background-color: #0c5460;\n border-color: #0c5460;\n }\n \n .list-group-item-warning {\n color: #856404;\n background-color: #ffeeba;\n }\n \n a.list-group-item-warning,\n button.list-group-item-warning {\n color: #856404;\n }\n \n a.list-group-item-warning:focus, a.list-group-item-warning:hover,\n button.list-group-item-warning:focus,\n button.list-group-item-warning:hover {\n color: #856404;\n background-color: #ffe8a1;\n }\n \n a.list-group-item-warning.active,\n button.list-group-item-warning.active {\n color: #fff;\n background-color: #856404;\n border-color: #856404;\n }\n \n .list-group-item-danger {\n color: #721c24;\n background-color: #f5c6cb;\n }\n \n a.list-group-item-danger,\n button.list-group-item-danger {\n color: #721c24;\n }\n \n a.list-group-item-danger:focus, a.list-group-item-danger:hover,\n button.list-group-item-danger:focus,\n button.list-group-item-danger:hover {\n color: #721c24;\n background-color: #f1b0b7;\n }\n \n a.list-group-item-danger.active,\n button.list-group-item-danger.active {\n color: #fff;\n background-color: #721c24;\n border-color: #721c24;\n }\n \n .list-group-item-light {\n color: #818182;\n background-color: #fdfdfe;\n }\n \n a.list-group-item-light,\n button.list-group-item-light {\n color: #818182;\n }\n \n a.list-group-item-light:focus, a.list-group-item-light:hover,\n button.list-group-item-light:focus,\n button.list-group-item-light:hover {\n color: #818182;\n background-color: #ececf6;\n }\n \n a.list-group-item-light.active,\n button.list-group-item-light.active {\n color: #fff;\n background-color: #818182;\n border-color: #818182;\n }\n \n .list-group-item-dark {\n color: #1b1e21;\n background-color: #c6c8ca;\n }\n \n a.list-group-item-dark,\n button.list-group-item-dark {\n color: #1b1e21;\n }\n \n a.list-group-item-dark:focus, a.list-group-item-dark:hover,\n button.list-group-item-dark:focus,\n button.list-group-item-dark:hover {\n color: #1b1e21;\n background-color: #b9bbbe;\n }\n \n a.list-group-item-dark.active,\n button.list-group-item-dark.active {\n color: #fff;\n background-color: #1b1e21;\n border-color: #1b1e21;\n }\n \n .close {\n float: right;\n font-size: 1.5rem;\n font-weight: 700;\n line-height: 1;\n color: #000;\n text-shadow: 0 1px 0 #fff;\n opacity: .5;\n }\n \n .close:focus, .close:hover {\n color: #000;\n text-decoration: none;\n opacity: .75;\n }\n \n button.close {\n padding: 0;\n background-color: transparent;\n border: 0;\n -webkit-appearance: none;\n }\n \n .modal-open {\n overflow: hidden;\n }\n \n .modal {\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: 1050;\n display: none;\n overflow: hidden;\n outline: 0;\n }\n \n .modal-open .modal {\n overflow-x: hidden;\n overflow-y: auto;\n }\n \n .modal-dialog {\n position: relative;\n width: auto;\n margin: 0.5rem;\n pointer-events: none;\n }\n \n .modal.fade .modal-dialog {\n transition: -webkit-transform 0.3s ease-out;\n transition: transform 0.3s ease-out;\n transition: transform 0.3s ease-out, -webkit-transform 0.3s ease-out;\n -webkit-transform: translate(0, -25%);\n transform: translate(0, -25%);\n }\n \n .modal.show .modal-dialog {\n -webkit-transform: translate(0, 0);\n transform: translate(0, 0);\n }\n \n .modal-dialog-centered {\n display: -ms-flexbox;\n display: flex;\n -ms-flex-align: center;\n align-items: center;\n min-height: calc(100% - (0.5rem * 2));\n }\n \n .modal-content {\n position: relative;\n display: -ms-flexbox;\n display: flex;\n -ms-flex-direction: column;\n flex-direction: column;\n width: 100%;\n pointer-events: auto;\n background-color: #fff;\n background-clip: padding-box;\n border: 1px solid rgba(0, 0, 0, 0.2);\n border-radius: 0.3rem;\n outline: 0;\n }\n \n .modal-backdrop {\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: 1040;\n background-color: #000;\n }\n \n .modal-backdrop.fade {\n opacity: 0;\n }\n \n .modal-backdrop.show {\n opacity: 0.5;\n }\n \n .modal-header {\n display: -ms-flexbox;\n display: flex;\n -ms-flex-align: start;\n align-items: flex-start;\n -ms-flex-pack: justify;\n justify-content: space-between;\n padding: 1rem;\n border-bottom: 1px solid #e9ecef;\n border-top-left-radius: 0.3rem;\n border-top-right-radius: 0.3rem;\n }\n \n .modal-header .close {\n padding: 1rem;\n margin: -1rem -1rem -1rem auto;\n }\n \n .modal-title {\n margin-bottom: 0;\n line-height: 1.5;\n }\n \n .modal-body {\n position: relative;\n -ms-flex: 1 1 auto;\n flex: 1 1 auto;\n padding: 1rem;\n }\n \n .modal-footer {\n display: -ms-flexbox;\n display: flex;\n -ms-flex-align: center;\n align-items: center;\n -ms-flex-pack: end;\n justify-content: flex-end;\n padding: 1rem;\n border-top: 1px solid #e9ecef;\n }\n \n .modal-footer > :not(:first-child) {\n margin-left: .25rem;\n }\n \n .modal-footer > :not(:last-child) {\n margin-right: .25rem;\n }\n \n .modal-scrollbar-measure {\n position: absolute;\n top: -9999px;\n width: 50px;\n height: 50px;\n overflow: scroll;\n }\n \n @media (min-width: 576px) {\n .modal-dialog {\n max-width: 500px;\n margin: 1.75rem auto;\n }\n .modal-dialog-centered {\n min-height: calc(100% - (1.75rem * 2));\n }\n .modal-sm {\n max-width: 300px;\n }\n }\n \n @media (min-width: 992px) {\n .modal-lg {\n max-width: 800px;\n }\n }\n \n .tooltip {\n position: absolute;\n z-index: 1070;\n display: block;\n margin: 0;\n font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";\n font-style: normal;\n font-weight: 400;\n line-height: 1.5;\n text-align: left;\n text-align: start;\n text-decoration: none;\n text-shadow: none;\n text-transform: none;\n letter-spacing: normal;\n word-break: normal;\n word-spacing: normal;\n white-space: normal;\n line-break: auto;\n font-size: 0.875rem;\n word-wrap: break-word;\n opacity: 0;\n }\n \n .tooltip.show {\n opacity: 0.9;\n }\n \n .tooltip .arrow {\n position: absolute;\n display: block;\n width: 0.4rem;\n height: 0.4rem;\n }\n \n .tooltip .arrow::before {\n position: absolute;\n border-color: transparent;\n border-style: solid;\n }\n \n .tooltip.bs-tooltip-top, .tooltip.bs-tooltip-auto[x-placement^=\"top\"] {\n padding: 0.4rem 0;\n }\n \n .tooltip.bs-tooltip-top .arrow, .tooltip.bs-tooltip-auto[x-placement^=\"top\"] .arrow {\n bottom: 0;\n }\n \n .tooltip.bs-tooltip-top .arrow::before, .tooltip.bs-tooltip-auto[x-placement^=\"top\"] .arrow::before {\n margin-left: -0.4rem;\n content: \"\";\n border-width: 0.4rem 0.4rem 0;\n border-top-color: #000;\n }\n \n .tooltip.bs-tooltip-right, .tooltip.bs-tooltip-auto[x-placement^=\"right\"] {\n padding: 0 0.4rem;\n }\n \n .tooltip.bs-tooltip-right .arrow, .tooltip.bs-tooltip-auto[x-placement^=\"right\"] .arrow {\n left: 0;\n }\n \n .tooltip.bs-tooltip-right .arrow::before, .tooltip.bs-tooltip-auto[x-placement^=\"right\"] .arrow::before {\n margin-top: -0.4rem;\n content: \"\";\n border-width: 0.4rem 0.4rem 0.4rem 0;\n border-right-color: #000;\n }\n \n .tooltip.bs-tooltip-bottom, .tooltip.bs-tooltip-auto[x-placement^=\"bottom\"] {\n padding: 0.4rem 0;\n }\n \n .tooltip.bs-tooltip-bottom .arrow, .tooltip.bs-tooltip-auto[x-placement^=\"bottom\"] .arrow {\n top: 0;\n }\n \n .tooltip.bs-tooltip-bottom .arrow::before, .tooltip.bs-tooltip-auto[x-placement^=\"bottom\"] .arrow::before {\n margin-left: -0.4rem;\n content: \"\";\n border-width: 0 0.4rem 0.4rem;\n border-bottom-color: #000;\n }\n \n .tooltip.bs-tooltip-left, .tooltip.bs-tooltip-auto[x-placement^=\"left\"] {\n padding: 0 0.4rem;\n }\n \n .tooltip.bs-tooltip-left .arrow, .tooltip.bs-tooltip-auto[x-placement^=\"left\"] .arrow {\n right: 0;\n }\n \n .tooltip.bs-tooltip-left .arrow::before, .tooltip.bs-tooltip-auto[x-placement^=\"left\"] .arrow::before {\n right: 0;\n margin-top: -0.4rem;\n content: \"\";\n border-width: 0.4rem 0 0.4rem 0.4rem;\n border-left-color: #000;\n }\n \n .tooltip-inner {\n max-width: 200px;\n padding: 0.25rem 0.5rem;\n color: #fff;\n text-align: center;\n background-color: #000;\n border-radius: 0.25rem;\n }\n \n .popover {\n position: absolute;\n top: 0;\n left: 0;\n z-index: 1060;\n display: block;\n max-width: 276px;\n font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";\n font-style: normal;\n font-weight: 400;\n line-height: 1.5;\n text-align: left;\n text-align: start;\n text-decoration: none;\n text-shadow: none;\n text-transform: none;\n letter-spacing: normal;\n word-break: normal;\n word-spacing: normal;\n white-space: normal;\n line-break: auto;\n font-size: 0.875rem;\n word-wrap: break-word;\n background-color: #fff;\n background-clip: padding-box;\n border: 1px solid rgba(0, 0, 0, 0.2);\n border-radius: 0.3rem;\n }\n \n .popover .arrow {\n position: absolute;\n display: block;\n width: 0.8rem;\n height: 0.4rem;\n }\n \n .popover .arrow::before,\n .popover .arrow::after {\n position: absolute;\n display: block;\n border-color: transparent;\n border-style: solid;\n }\n \n .popover .arrow::before {\n content: \"\";\n border-width: 0.8rem;\n }\n \n .popover .arrow::after {\n content: \"\";\n border-width: 0.8rem;\n }\n \n .popover.bs-popover-top, .popover.bs-popover-auto[x-placement^=\"top\"] {\n margin-bottom: 0.8rem;\n }\n \n .popover.bs-popover-top .arrow, .popover.bs-popover-auto[x-placement^=\"top\"] .arrow {\n bottom: 0;\n }\n \n .popover.bs-popover-top .arrow::before, .popover.bs-popover-auto[x-placement^=\"top\"] .arrow::before,\n .popover.bs-popover-top .arrow::after, .popover.bs-popover-auto[x-placement^=\"top\"] .arrow::after {\n border-bottom-width: 0;\n }\n \n .popover.bs-popover-top .arrow::before, .popover.bs-popover-auto[x-placement^=\"top\"] .arrow::before {\n bottom: -0.8rem;\n margin-left: -0.8rem;\n border-top-color: rgba(0, 0, 0, 0.25);\n }\n \n .popover.bs-popover-top .arrow::after, .popover.bs-popover-auto[x-placement^=\"top\"] .arrow::after {\n bottom: calc((0.8rem - 1px) * -1);\n margin-left: -0.8rem;\n border-top-color: #fff;\n }\n \n .popover.bs-popover-right, .popover.bs-popover-auto[x-placement^=\"right\"] {\n margin-left: 0.8rem;\n }\n \n .popover.bs-popover-right .arrow, .popover.bs-popover-auto[x-placement^=\"right\"] .arrow {\n left: 0;\n }\n \n .popover.bs-popover-right .arrow::before, .popover.bs-popover-auto[x-placement^=\"right\"] .arrow::before,\n .popover.bs-popover-right .arrow::after, .popover.bs-popover-auto[x-placement^=\"right\"] .arrow::after {\n margin-top: -0.8rem;\n border-left-width: 0;\n }\n \n .popover.bs-popover-right .arrow::before, .popover.bs-popover-auto[x-placement^=\"right\"] .arrow::before {\n left: -0.8rem;\n border-right-color: rgba(0, 0, 0, 0.25);\n }\n \n .popover.bs-popover-right .arrow::after, .popover.bs-popover-auto[x-placement^=\"right\"] .arrow::after {\n left: calc((0.8rem - 1px) * -1);\n border-right-color: #fff;\n }\n \n .popover.bs-popover-bottom, .popover.bs-popover-auto[x-placement^=\"bottom\"] {\n margin-top: 0.8rem;\n }\n \n .popover.bs-popover-bottom .arrow, .popover.bs-popover-auto[x-placement^=\"bottom\"] .arrow {\n top: 0;\n }\n \n .popover.bs-popover-bottom .arrow::before, .popover.bs-popover-auto[x-placement^=\"bottom\"] .arrow::before,\n .popover.bs-popover-bottom .arrow::after, .popover.bs-popover-auto[x-placement^=\"bottom\"] .arrow::after {\n margin-left: -0.8rem;\n border-top-width: 0;\n }\n \n .popover.bs-popover-bottom .arrow::before, .popover.bs-popover-auto[x-placement^=\"bottom\"] .arrow::before {\n top: -0.8rem;\n border-bottom-color: rgba(0, 0, 0, 0.25);\n }\n \n .popover.bs-popover-bottom .arrow::after, .popover.bs-popover-auto[x-placement^=\"bottom\"] .arrow::after {\n top: calc((0.8rem - 1px) * -1);\n border-bottom-color: #fff;\n }\n \n .popover.bs-popover-bottom .popover-header::before, .popover.bs-popover-auto[x-placement^=\"bottom\"] .popover-header::before {\n position: absolute;\n top: 0;\n left: 50%;\n display: block;\n width: 20px;\n margin-left: -10px;\n content: \"\";\n border-bottom: 1px solid #f7f7f7;\n }\n \n .popover.bs-popover-left, .popover.bs-popover-auto[x-placement^=\"left\"] {\n margin-right: 0.8rem;\n }\n \n .popover.bs-popover-left .arrow, .popover.bs-popover-auto[x-placement^=\"left\"] .arrow {\n right: 0;\n }\n \n .popover.bs-popover-left .arrow::before, .popover.bs-popover-auto[x-placement^=\"left\"] .arrow::before,\n .popover.bs-popover-left .arrow::after, .popover.bs-popover-auto[x-placement^=\"left\"] .arrow::after {\n margin-top: -0.8rem;\n border-right-width: 0;\n }\n \n .popover.bs-popover-left .arrow::before, .popover.bs-popover-auto[x-placement^=\"left\"] .arrow::before {\n right: -0.8rem;\n border-left-color: rgba(0, 0, 0, 0.25);\n }\n \n .popover.bs-popover-left .arrow::after, .popover.bs-popover-auto[x-placement^=\"left\"] .arrow::after {\n right: calc((0.8rem - 1px) * -1);\n border-left-color: #fff;\n }\n \n .popover-header {\n padding: 0.5rem 0.75rem;\n margin-bottom: 0;\n font-size: 1rem;\n color: inherit;\n background-color: #f7f7f7;\n border-bottom: 1px solid #ebebeb;\n border-top-left-radius: calc(0.3rem - 1px);\n border-top-right-radius: calc(0.3rem - 1px);\n }\n \n .popover-header:empty {\n display: none;\n }\n \n .popover-body {\n padding: 0.5rem 0.75rem;\n color: #212529;\n }\n \n .carousel {\n position: relative;\n }\n \n .carousel-inner {\n position: relative;\n width: 100%;\n overflow: hidden;\n }\n \n .carousel-item {\n position: relative;\n display: none;\n -ms-flex-align: center;\n align-items: center;\n width: 100%;\n transition: -webkit-transform 0.6s ease;\n transition: transform 0.6s ease;\n transition: transform 0.6s ease, -webkit-transform 0.6s ease;\n -webkit-backface-visibility: hidden;\n backface-visibility: hidden;\n -webkit-perspective: 1000px;\n perspective: 1000px;\n }\n \n .carousel-item.active,\n .carousel-item-next,\n .carousel-item-prev {\n display: block;\n }\n \n .carousel-item-next,\n .carousel-item-prev {\n position: absolute;\n top: 0;\n }\n \n .carousel-item-next.carousel-item-left,\n .carousel-item-prev.carousel-item-right {\n -webkit-transform: translateX(0);\n transform: translateX(0);\n }\n \n @supports ((-webkit-transform-style: preserve-3d) or (transform-style: preserve-3d)) {\n .carousel-item-next.carousel-item-left,\n .carousel-item-prev.carousel-item-right {\n -webkit-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n }\n }\n \n .carousel-item-next,\n .active.carousel-item-right {\n -webkit-transform: translateX(100%);\n transform: translateX(100%);\n }\n \n @supports ((-webkit-transform-style: preserve-3d) or (transform-style: preserve-3d)) {\n .carousel-item-next,\n .active.carousel-item-right {\n -webkit-transform: translate3d(100%, 0, 0);\n transform: translate3d(100%, 0, 0);\n }\n }\n \n .carousel-item-prev,\n .active.carousel-item-left {\n -webkit-transform: translateX(-100%);\n transform: translateX(-100%);\n }\n \n @supports ((-webkit-transform-style: preserve-3d) or (transform-style: preserve-3d)) {\n .carousel-item-prev,\n .active.carousel-item-left {\n -webkit-transform: translate3d(-100%, 0, 0);\n transform: translate3d(-100%, 0, 0);\n }\n }\n \n .carousel-control-prev,\n .carousel-control-next {\n position: absolute;\n top: 0;\n bottom: 0;\n display: -ms-flexbox;\n display: flex;\n -ms-flex-align: center;\n align-items: center;\n -ms-flex-pack: center;\n justify-content: center;\n width: 15%;\n color: #fff;\n text-align: center;\n opacity: 0.5;\n }\n \n .carousel-control-prev:focus, .carousel-control-prev:hover,\n .carousel-control-next:focus,\n .carousel-control-next:hover {\n color: #fff;\n text-decoration: none;\n outline: 0;\n opacity: .9;\n }\n \n .carousel-control-prev {\n left: 0;\n }\n \n .carousel-control-next {\n right: 0;\n }\n \n .carousel-control-prev-icon,\n .carousel-control-next-icon {\n display: inline-block;\n width: 20px;\n height: 20px;\n background: transparent no-repeat center center;\n background-size: 100% 100%;\n }\n \n .carousel-control-prev-icon {\n background-image: url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 8 8'%3E%3Cpath d='M5.25 0l-4 4 4 4 1.5-1.5-2.5-2.5 2.5-2.5-1.5-1.5z'/%3E%3C/svg%3E\");\n }\n \n .carousel-control-next-icon {\n background-image: url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 8 8'%3E%3Cpath d='M2.75 0l-1.5 1.5 2.5 2.5-2.5 2.5 1.5 1.5 4-4-4-4z'/%3E%3C/svg%3E\");\n }\n \n .carousel-indicators {\n position: absolute;\n right: 0;\n bottom: 10px;\n left: 0;\n z-index: 15;\n display: -ms-flexbox;\n display: flex;\n -ms-flex-pack: center;\n justify-content: center;\n padding-left: 0;\n margin-right: 15%;\n margin-left: 15%;\n list-style: none;\n }\n \n .carousel-indicators li {\n position: relative;\n -ms-flex: 0 1 auto;\n flex: 0 1 auto;\n width: 30px;\n height: 3px;\n margin-right: 3px;\n margin-left: 3px;\n text-indent: -999px;\n background-color: rgba(255, 255, 255, 0.5);\n }\n \n .carousel-indicators li::before {\n position: absolute;\n top: -10px;\n left: 0;\n display: inline-block;\n width: 100%;\n height: 10px;\n content: \"\";\n }\n \n .carousel-indicators li::after {\n position: absolute;\n bottom: -10px;\n left: 0;\n display: inline-block;\n width: 100%;\n height: 10px;\n content: \"\";\n }\n \n .carousel-indicators .active {\n background-color: #fff;\n }\n \n .carousel-caption {\n position: absolute;\n right: 15%;\n bottom: 20px;\n left: 15%;\n z-index: 10;\n padding-top: 20px;\n padding-bottom: 20px;\n color: #fff;\n text-align: center;\n }\n \n .align-baseline {\n vertical-align: baseline !important;\n }\n \n .align-top {\n vertical-align: top !important;\n }\n \n .align-middle {\n vertical-align: middle !important;\n }\n \n .align-bottom {\n vertical-align: bottom !important;\n }\n \n .align-text-bottom {\n vertical-align: text-bottom !important;\n }\n \n .align-text-top {\n vertical-align: text-top !important;\n }\n \n .bg-primary {\n background-color: #007bff !important;\n }\n \n a.bg-primary:focus, a.bg-primary:hover {\n background-color: #0062cc !important;\n }\n \n .bg-secondary {\n background-color: #868e96 !important;\n }\n \n a.bg-secondary:focus, a.bg-secondary:hover {\n background-color: #6c757d !important;\n }\n \n .bg-success {\n background-color: #28a745 !important;\n }\n \n a.bg-success:focus, a.bg-success:hover {\n background-color: #1e7e34 !important;\n }\n \n .bg-info {\n background-color: #17a2b8 !important;\n }\n \n a.bg-info:focus, a.bg-info:hover {\n background-color: #117a8b !important;\n }\n \n .bg-warning {\n background-color: #ffc107 !important;\n }\n \n a.bg-warning:focus, a.bg-warning:hover {\n background-color: #d39e00 !important;\n }\n \n .bg-danger {\n background-color: #dc3545 !important;\n }\n \n a.bg-danger:focus, a.bg-danger:hover {\n background-color: #bd2130 !important;\n }\n \n .bg-light {\n background-color: #f8f9fa !important;\n }\n \n a.bg-light:focus, a.bg-light:hover {\n background-color: #dae0e5 !important;\n }\n \n .bg-dark {\n background-color: #343a40 !important;\n }\n \n a.bg-dark:focus, a.bg-dark:hover {\n background-color: #1d2124 !important;\n }\n \n .bg-white {\n background-color: #fff !important;\n }\n \n .bg-transparent {\n background-color: transparent !important;\n }\n \n .border {\n border: 1px solid #e9ecef !important;\n }\n \n .border-0 {\n border: 0 !important;\n }\n \n .border-top-0 {\n border-top: 0 !important;\n }\n \n .border-right-0 {\n border-right: 0 !important;\n }\n \n .border-bottom-0 {\n border-bottom: 0 !important;\n }\n \n .border-left-0 {\n border-left: 0 !important;\n }\n \n .border-primary {\n border-color: #007bff !important;\n }\n \n .border-secondary {\n border-color: #868e96 !important;\n }\n \n .border-success {\n border-color: #28a745 !important;\n }\n \n .border-info {\n border-color: #17a2b8 !important;\n }\n \n .border-warning {\n border-color: #ffc107 !important;\n }\n \n .border-danger {\n border-color: #dc3545 !important;\n }\n \n .border-light {\n border-color: #f8f9fa !important;\n }\n \n .border-dark {\n border-color: #343a40 !important;\n }\n \n .border-white {\n border-color: #fff !important;\n }\n \n .rounded {\n border-radius: 0.25rem !important;\n }\n \n .rounded-top {\n border-top-left-radius: 0.25rem !important;\n border-top-right-radius: 0.25rem !important;\n }\n \n .rounded-right {\n border-top-right-radius: 0.25rem !important;\n border-bottom-right-radius: 0.25rem !important;\n }\n \n .rounded-bottom {\n border-bottom-right-radius: 0.25rem !important;\n border-bottom-left-radius: 0.25rem !important;\n }\n \n .rounded-left {\n border-top-left-radius: 0.25rem !important;\n border-bottom-left-radius: 0.25rem !important;\n }\n \n .rounded-circle {\n border-radius: 50% !important;\n }\n \n .rounded-0 {\n border-radius: 0 !important;\n }\n \n .clearfix::after {\n display: block;\n clear: both;\n content: \"\";\n }\n \n .d-none {\n display: none !important;\n }\n \n .d-inline {\n display: inline !important;\n }\n \n .d-inline-block {\n display: inline-block !important;\n }\n \n .d-block {\n display: block !important;\n }\n \n .d-table {\n display: table !important;\n }\n \n .d-table-row {\n display: table-row !important;\n }\n \n .d-table-cell {\n display: table-cell !important;\n }\n \n .d-flex {\n display: -ms-flexbox !important;\n display: flex !important;\n }\n \n .d-inline-flex {\n display: -ms-inline-flexbox !important;\n display: inline-flex !important;\n }\n \n @media (min-width: 576px) {\n .d-sm-none {\n display: none !important;\n }\n .d-sm-inline {\n display: inline !important;\n }\n .d-sm-inline-block {\n display: inline-block !important;\n }\n .d-sm-block {\n display: block !important;\n }\n .d-sm-table {\n display: table !important;\n }\n .d-sm-table-row {\n display: table-row !important;\n }\n .d-sm-table-cell {\n display: table-cell !important;\n }\n .d-sm-flex {\n display: -ms-flexbox !important;\n display: flex !important;\n }\n .d-sm-inline-flex {\n display: -ms-inline-flexbox !important;\n display: inline-flex !important;\n }\n }\n \n @media (min-width: 768px) {\n .d-md-none {\n display: none !important;\n }\n .d-md-inline {\n display: inline !important;\n }\n .d-md-inline-block {\n display: inline-block !important;\n }\n .d-md-block {\n display: block !important;\n }\n .d-md-table {\n display: table !important;\n }\n .d-md-table-row {\n display: table-row !important;\n }\n .d-md-table-cell {\n display: table-cell !important;\n }\n .d-md-flex {\n display: -ms-flexbox !important;\n display: flex !important;\n }\n .d-md-inline-flex {\n display: -ms-inline-flexbox !important;\n display: inline-flex !important;\n }\n }\n \n @media (min-width: 992px) {\n .d-lg-none {\n display: none !important;\n }\n .d-lg-inline {\n display: inline !important;\n }\n .d-lg-inline-block {\n display: inline-block !important;\n }\n .d-lg-block {\n display: block !important;\n }\n .d-lg-table {\n display: table !important;\n }\n .d-lg-table-row {\n display: table-row !important;\n }\n .d-lg-table-cell {\n display: table-cell !important;\n }\n .d-lg-flex {\n display: -ms-flexbox !important;\n display: flex !important;\n }\n .d-lg-inline-flex {\n display: -ms-inline-flexbox !important;\n display: inline-flex !important;\n }\n }\n \n @media (min-width: 1200px) {\n .d-xl-none {\n display: none !important;\n }\n .d-xl-inline {\n display: inline !important;\n }\n .d-xl-inline-block {\n display: inline-block !important;\n }\n .d-xl-block {\n display: block !important;\n }\n .d-xl-table {\n display: table !important;\n }\n .d-xl-table-row {\n display: table-row !important;\n }\n .d-xl-table-cell {\n display: table-cell !important;\n }\n .d-xl-flex {\n display: -ms-flexbox !important;\n display: flex !important;\n }\n .d-xl-inline-flex {\n display: -ms-inline-flexbox !important;\n display: inline-flex !important;\n }\n }\n \n .d-print-block {\n display: none !important;\n }\n \n @media print {\n .d-print-block {\n display: block !important;\n }\n }\n \n .d-print-inline {\n display: none !important;\n }\n \n @media print {\n .d-print-inline {\n display: inline !important;\n }\n }\n \n .d-print-inline-block {\n display: none !important;\n }\n \n @media print {\n .d-print-inline-block {\n display: inline-block !important;\n }\n }\n \n @media print {\n .d-print-none {\n display: none !important;\n }\n }\n \n .embed-responsive {\n position: relative;\n display: block;\n width: 100%;\n padding: 0;\n overflow: hidden;\n }\n \n .embed-responsive::before {\n display: block;\n content: \"\";\n }\n \n .embed-responsive .embed-responsive-item,\n .embed-responsive iframe,\n .embed-responsive embed,\n .embed-responsive object,\n .embed-responsive video {\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n width: 100%;\n height: 100%;\n border: 0;\n }\n \n .embed-responsive-21by9::before {\n padding-top: 42.857143%;\n }\n \n .embed-responsive-16by9::before {\n padding-top: 56.25%;\n }\n \n .embed-responsive-4by3::before {\n padding-top: 75%;\n }\n \n .embed-responsive-1by1::before {\n padding-top: 100%;\n }\n \n .flex-row {\n -ms-flex-direction: row !important;\n flex-direction: row !important;\n }\n \n .flex-column {\n -ms-flex-direction: column !important;\n flex-direction: column !important;\n }\n \n .flex-row-reverse {\n -ms-flex-direction: row-reverse !important;\n flex-direction: row-reverse !important;\n }\n \n .flex-column-reverse {\n -ms-flex-direction: column-reverse !important;\n flex-direction: column-reverse !important;\n }\n \n .flex-wrap {\n -ms-flex-wrap: wrap !important;\n flex-wrap: wrap !important;\n }\n \n .flex-nowrap {\n -ms-flex-wrap: nowrap !important;\n flex-wrap: nowrap !important;\n }\n \n .flex-wrap-reverse {\n -ms-flex-wrap: wrap-reverse !important;\n flex-wrap: wrap-reverse !important;\n }\n \n .justify-content-start {\n -ms-flex-pack: start !important;\n justify-content: flex-start !important;\n }\n \n .justify-content-end {\n -ms-flex-pack: end !important;\n justify-content: flex-end !important;\n }\n \n .justify-content-center {\n -ms-flex-pack: center !important;\n justify-content: center !important;\n }\n \n .justify-content-between {\n -ms-flex-pack: justify !important;\n justify-content: space-between !important;\n }\n \n .justify-content-around {\n -ms-flex-pack: distribute !important;\n justify-content: space-around !important;\n }\n \n .align-items-start {\n -ms-flex-align: start !important;\n align-items: flex-start !important;\n }\n \n .align-items-end {\n -ms-flex-align: end !important;\n align-items: flex-end !important;\n }\n \n .align-items-center {\n -ms-flex-align: center !important;\n align-items: center !important;\n }\n \n .align-items-baseline {\n -ms-flex-align: baseline !important;\n align-items: baseline !important;\n }\n \n .align-items-stretch {\n -ms-flex-align: stretch !important;\n align-items: stretch !important;\n }\n \n .align-content-start {\n -ms-flex-line-pack: start !important;\n align-content: flex-start !important;\n }\n \n .align-content-end {\n -ms-flex-line-pack: end !important;\n align-content: flex-end !important;\n }\n \n .align-content-center {\n -ms-flex-line-pack: center !important;\n align-content: center !important;\n }\n \n .align-content-between {\n -ms-flex-line-pack: justify !important;\n align-content: space-between !important;\n }\n \n .align-content-around {\n -ms-flex-line-pack: distribute !important;\n align-content: space-around !important;\n }\n \n .align-content-stretch {\n -ms-flex-line-pack: stretch !important;\n align-content: stretch !important;\n }\n \n .align-self-auto {\n -ms-flex-item-align: auto !important;\n align-self: auto !important;\n }\n \n .align-self-start {\n -ms-flex-item-align: start !important;\n align-self: flex-start !important;\n }\n \n .align-self-end {\n -ms-flex-item-align: end !important;\n align-self: flex-end !important;\n }\n \n .align-self-center {\n -ms-flex-item-align: center !important;\n align-self: center !important;\n }\n \n .align-self-baseline {\n -ms-flex-item-align: baseline !important;\n align-self: baseline !important;\n }\n \n .align-self-stretch {\n -ms-flex-item-align: stretch !important;\n align-self: stretch !important;\n }\n \n @media (min-width: 576px) {\n .flex-sm-row {\n -ms-flex-direction: row !important;\n flex-direction: row !important;\n }\n .flex-sm-column {\n -ms-flex-direction: column !important;\n flex-direction: column !important;\n }\n .flex-sm-row-reverse {\n -ms-flex-direction: row-reverse !important;\n flex-direction: row-reverse !important;\n }\n .flex-sm-column-reverse {\n -ms-flex-direction: column-reverse !important;\n flex-direction: column-reverse !important;\n }\n .flex-sm-wrap {\n -ms-flex-wrap: wrap !important;\n flex-wrap: wrap !important;\n }\n .flex-sm-nowrap {\n -ms-flex-wrap: nowrap !important;\n flex-wrap: nowrap !important;\n }\n .flex-sm-wrap-reverse {\n -ms-flex-wrap: wrap-reverse !important;\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-sm-start {\n -ms-flex-pack: start !important;\n justify-content: flex-start !important;\n }\n .justify-content-sm-end {\n -ms-flex-pack: end !important;\n justify-content: flex-end !important;\n }\n .justify-content-sm-center {\n -ms-flex-pack: center !important;\n justify-content: center !important;\n }\n .justify-content-sm-between {\n -ms-flex-pack: justify !important;\n justify-content: space-between !important;\n }\n .justify-content-sm-around {\n -ms-flex-pack: distribute !important;\n justify-content: space-around !important;\n }\n .align-items-sm-start {\n -ms-flex-align: start !important;\n align-items: flex-start !important;\n }\n .align-items-sm-end {\n -ms-flex-align: end !important;\n align-items: flex-end !important;\n }\n .align-items-sm-center {\n -ms-flex-align: center !important;\n align-items: center !important;\n }\n .align-items-sm-baseline {\n -ms-flex-align: baseline !important;\n align-items: baseline !important;\n }\n .align-items-sm-stretch {\n -ms-flex-align: stretch !important;\n align-items: stretch !important;\n }\n .align-content-sm-start {\n -ms-flex-line-pack: start !important;\n align-content: flex-start !important;\n }\n .align-content-sm-end {\n -ms-flex-line-pack: end !important;\n align-content: flex-end !important;\n }\n .align-content-sm-center {\n -ms-flex-line-pack: center !important;\n align-content: center !important;\n }\n .align-content-sm-between {\n -ms-flex-line-pack: justify !important;\n align-content: space-between !important;\n }\n .align-content-sm-around {\n -ms-flex-line-pack: distribute !important;\n align-content: space-around !important;\n }\n .align-content-sm-stretch {\n -ms-flex-line-pack: stretch !important;\n align-content: stretch !important;\n }\n .align-self-sm-auto {\n -ms-flex-item-align: auto !important;\n align-self: auto !important;\n }\n .align-self-sm-start {\n -ms-flex-item-align: start !important;\n align-self: flex-start !important;\n }\n .align-self-sm-end {\n -ms-flex-item-align: end !important;\n align-self: flex-end !important;\n }\n .align-self-sm-center {\n -ms-flex-item-align: center !important;\n align-self: center !important;\n }\n .align-self-sm-baseline {\n -ms-flex-item-align: baseline !important;\n align-self: baseline !important;\n }\n .align-self-sm-stretch {\n -ms-flex-item-align: stretch !important;\n align-self: stretch !important;\n }\n }\n \n @media (min-width: 768px) {\n .flex-md-row {\n -ms-flex-direction: row !important;\n flex-direction: row !important;\n }\n .flex-md-column {\n -ms-flex-direction: column !important;\n flex-direction: column !important;\n }\n .flex-md-row-reverse {\n -ms-flex-direction: row-reverse !important;\n flex-direction: row-reverse !important;\n }\n .flex-md-column-reverse {\n -ms-flex-direction: column-reverse !important;\n flex-direction: column-reverse !important;\n }\n .flex-md-wrap {\n -ms-flex-wrap: wrap !important;\n flex-wrap: wrap !important;\n }\n .flex-md-nowrap {\n -ms-flex-wrap: nowrap !important;\n flex-wrap: nowrap !important;\n }\n .flex-md-wrap-reverse {\n -ms-flex-wrap: wrap-reverse !important;\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-md-start {\n -ms-flex-pack: start !important;\n justify-content: flex-start !important;\n }\n .justify-content-md-end {\n -ms-flex-pack: end !important;\n justify-content: flex-end !important;\n }\n .justify-content-md-center {\n -ms-flex-pack: center !important;\n justify-content: center !important;\n }\n .justify-content-md-between {\n -ms-flex-pack: justify !important;\n justify-content: space-between !important;\n }\n .justify-content-md-around {\n -ms-flex-pack: distribute !important;\n justify-content: space-around !important;\n }\n .align-items-md-start {\n -ms-flex-align: start !important;\n align-items: flex-start !important;\n }\n .align-items-md-end {\n -ms-flex-align: end !important;\n align-items: flex-end !important;\n }\n .align-items-md-center {\n -ms-flex-align: center !important;\n align-items: center !important;\n }\n .align-items-md-baseline {\n -ms-flex-align: baseline !important;\n align-items: baseline !important;\n }\n .align-items-md-stretch {\n -ms-flex-align: stretch !important;\n align-items: stretch !important;\n }\n .align-content-md-start {\n -ms-flex-line-pack: start !important;\n align-content: flex-start !important;\n }\n .align-content-md-end {\n -ms-flex-line-pack: end !important;\n align-content: flex-end !important;\n }\n .align-content-md-center {\n -ms-flex-line-pack: center !important;\n align-content: center !important;\n }\n .align-content-md-between {\n -ms-flex-line-pack: justify !important;\n align-content: space-between !important;\n }\n .align-content-md-around {\n -ms-flex-line-pack: distribute !important;\n align-content: space-around !important;\n }\n .align-content-md-stretch {\n -ms-flex-line-pack: stretch !important;\n align-content: stretch !important;\n }\n .align-self-md-auto {\n -ms-flex-item-align: auto !important;\n align-self: auto !important;\n }\n .align-self-md-start {\n -ms-flex-item-align: start !important;\n align-self: flex-start !important;\n }\n .align-self-md-end {\n -ms-flex-item-align: end !important;\n align-self: flex-end !important;\n }\n .align-self-md-center {\n -ms-flex-item-align: center !important;\n align-self: center !important;\n }\n .align-self-md-baseline {\n -ms-flex-item-align: baseline !important;\n align-self: baseline !important;\n }\n .align-self-md-stretch {\n -ms-flex-item-align: stretch !important;\n align-self: stretch !important;\n }\n }\n \n @media (min-width: 992px) {\n .flex-lg-row {\n -ms-flex-direction: row !important;\n flex-direction: row !important;\n }\n .flex-lg-column {\n -ms-flex-direction: column !important;\n flex-direction: column !important;\n }\n .flex-lg-row-reverse {\n -ms-flex-direction: row-reverse !important;\n flex-direction: row-reverse !important;\n }\n .flex-lg-column-reverse {\n -ms-flex-direction: column-reverse !important;\n flex-direction: column-reverse !important;\n }\n .flex-lg-wrap {\n -ms-flex-wrap: wrap !important;\n flex-wrap: wrap !important;\n }\n .flex-lg-nowrap {\n -ms-flex-wrap: nowrap !important;\n flex-wrap: nowrap !important;\n }\n .flex-lg-wrap-reverse {\n -ms-flex-wrap: wrap-reverse !important;\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-lg-start {\n -ms-flex-pack: start !important;\n justify-content: flex-start !important;\n }\n .justify-content-lg-end {\n -ms-flex-pack: end !important;\n justify-content: flex-end !important;\n }\n .justify-content-lg-center {\n -ms-flex-pack: center !important;\n justify-content: center !important;\n }\n .justify-content-lg-between {\n -ms-flex-pack: justify !important;\n justify-content: space-between !important;\n }\n .justify-content-lg-around {\n -ms-flex-pack: distribute !important;\n justify-content: space-around !important;\n }\n .align-items-lg-start {\n -ms-flex-align: start !important;\n align-items: flex-start !important;\n }\n .align-items-lg-end {\n -ms-flex-align: end !important;\n align-items: flex-end !important;\n }\n .align-items-lg-center {\n -ms-flex-align: center !important;\n align-items: center !important;\n }\n .align-items-lg-baseline {\n -ms-flex-align: baseline !important;\n align-items: baseline !important;\n }\n .align-items-lg-stretch {\n -ms-flex-align: stretch !important;\n align-items: stretch !important;\n }\n .align-content-lg-start {\n -ms-flex-line-pack: start !important;\n align-content: flex-start !important;\n }\n .align-content-lg-end {\n -ms-flex-line-pack: end !important;\n align-content: flex-end !important;\n }\n .align-content-lg-center {\n -ms-flex-line-pack: center !important;\n align-content: center !important;\n }\n .align-content-lg-between {\n -ms-flex-line-pack: justify !important;\n align-content: space-between !important;\n }\n .align-content-lg-around {\n -ms-flex-line-pack: distribute !important;\n align-content: space-around !important;\n }\n .align-content-lg-stretch {\n -ms-flex-line-pack: stretch !important;\n align-content: stretch !important;\n }\n .align-self-lg-auto {\n -ms-flex-item-align: auto !important;\n align-self: auto !important;\n }\n .align-self-lg-start {\n -ms-flex-item-align: start !important;\n align-self: flex-start !important;\n }\n .align-self-lg-end {\n -ms-flex-item-align: end !important;\n align-self: flex-end !important;\n }\n .align-self-lg-center {\n -ms-flex-item-align: center !important;\n align-self: center !important;\n }\n .align-self-lg-baseline {\n -ms-flex-item-align: baseline !important;\n align-self: baseline !important;\n }\n .align-self-lg-stretch {\n -ms-flex-item-align: stretch !important;\n align-self: stretch !important;\n }\n }\n \n @media (min-width: 1200px) {\n .flex-xl-row {\n -ms-flex-direction: row !important;\n flex-direction: row !important;\n }\n .flex-xl-column {\n -ms-flex-direction: column !important;\n flex-direction: column !important;\n }\n .flex-xl-row-reverse {\n -ms-flex-direction: row-reverse !important;\n flex-direction: row-reverse !important;\n }\n .flex-xl-column-reverse {\n -ms-flex-direction: column-reverse !important;\n flex-direction: column-reverse !important;\n }\n .flex-xl-wrap {\n -ms-flex-wrap: wrap !important;\n flex-wrap: wrap !important;\n }\n .flex-xl-nowrap {\n -ms-flex-wrap: nowrap !important;\n flex-wrap: nowrap !important;\n }\n .flex-xl-wrap-reverse {\n -ms-flex-wrap: wrap-reverse !important;\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-xl-start {\n -ms-flex-pack: start !important;\n justify-content: flex-start !important;\n }\n .justify-content-xl-end {\n -ms-flex-pack: end !important;\n justify-content: flex-end !important;\n }\n .justify-content-xl-center {\n -ms-flex-pack: center !important;\n justify-content: center !important;\n }\n .justify-content-xl-between {\n -ms-flex-pack: justify !important;\n justify-content: space-between !important;\n }\n .justify-content-xl-around {\n -ms-flex-pack: distribute !important;\n justify-content: space-around !important;\n }\n .align-items-xl-start {\n -ms-flex-align: start !important;\n align-items: flex-start !important;\n }\n .align-items-xl-end {\n -ms-flex-align: end !important;\n align-items: flex-end !important;\n }\n .align-items-xl-center {\n -ms-flex-align: center !important;\n align-items: center !important;\n }\n .align-items-xl-baseline {\n -ms-flex-align: baseline !important;\n align-items: baseline !important;\n }\n .align-items-xl-stretch {\n -ms-flex-align: stretch !important;\n align-items: stretch !important;\n }\n .align-content-xl-start {\n -ms-flex-line-pack: start !important;\n align-content: flex-start !important;\n }\n .align-content-xl-end {\n -ms-flex-line-pack: end !important;\n align-content: flex-end !important;\n }\n .align-content-xl-center {\n -ms-flex-line-pack: center !important;\n align-content: center !important;\n }\n .align-content-xl-between {\n -ms-flex-line-pack: justify !important;\n align-content: space-between !important;\n }\n .align-content-xl-around {\n -ms-flex-line-pack: distribute !important;\n align-content: space-around !important;\n }\n .align-content-xl-stretch {\n -ms-flex-line-pack: stretch !important;\n align-content: stretch !important;\n }\n .align-self-xl-auto {\n -ms-flex-item-align: auto !important;\n align-self: auto !important;\n }\n .align-self-xl-start {\n -ms-flex-item-align: start !important;\n align-self: flex-start !important;\n }\n .align-self-xl-end {\n -ms-flex-item-align: end !important;\n align-self: flex-end !important;\n }\n .align-self-xl-center {\n -ms-flex-item-align: center !important;\n align-self: center !important;\n }\n .align-self-xl-baseline {\n -ms-flex-item-align: baseline !important;\n align-self: baseline !important;\n }\n .align-self-xl-stretch {\n -ms-flex-item-align: stretch !important;\n align-self: stretch !important;\n }\n }\n \n .float-left {\n float: left !important;\n }\n \n .float-right {\n float: right !important;\n }\n \n .float-none {\n float: none !important;\n }\n \n @media (min-width: 576px) {\n .float-sm-left {\n float: left !important;\n }\n .float-sm-right {\n float: right !important;\n }\n .float-sm-none {\n float: none !important;\n }\n }\n \n @media (min-width: 768px) {\n .float-md-left {\n float: left !important;\n }\n .float-md-right {\n float: right !important;\n }\n .float-md-none {\n float: none !important;\n }\n }\n \n @media (min-width: 992px) {\n .float-lg-left {\n float: left !important;\n }\n .float-lg-right {\n float: right !important;\n }\n .float-lg-none {\n float: none !important;\n }\n }\n \n @media (min-width: 1200px) {\n .float-xl-left {\n float: left !important;\n }\n .float-xl-right {\n float: right !important;\n }\n .float-xl-none {\n float: none !important;\n }\n }\n \n .position-static {\n position: static !important;\n }\n \n .position-relative {\n position: relative !important;\n }\n \n .position-absolute {\n position: absolute !important;\n }\n \n .position-fixed {\n position: fixed !important;\n }\n \n .position-sticky {\n position: -webkit-sticky !important;\n position: sticky !important;\n }\n \n .fixed-top {\n position: fixed;\n top: 0;\n right: 0;\n left: 0;\n z-index: 1030;\n }\n \n .fixed-bottom {\n position: fixed;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: 1030;\n }\n \n @supports ((position: -webkit-sticky) or (position: sticky)) {\n .sticky-top {\n position: -webkit-sticky;\n position: sticky;\n top: 0;\n z-index: 1020;\n }\n }\n \n .sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n -webkit-clip-path: inset(50%);\n clip-path: inset(50%);\n border: 0;\n }\n \n .sr-only-focusable:active, .sr-only-focusable:focus {\n position: static;\n width: auto;\n height: auto;\n overflow: visible;\n clip: auto;\n white-space: normal;\n -webkit-clip-path: none;\n clip-path: none;\n }\n \n .w-25 {\n width: 25% !important;\n }\n \n .w-50 {\n width: 50% !important;\n }\n \n .w-75 {\n width: 75% !important;\n }\n \n .w-100 {\n width: 100% !important;\n }\n \n .h-25 {\n height: 25% !important;\n }\n \n .h-50 {\n height: 50% !important;\n }\n \n .h-75 {\n height: 75% !important;\n }\n \n .h-100 {\n height: 100% !important;\n }\n \n .mw-100 {\n max-width: 100% !important;\n }\n \n .mh-100 {\n max-height: 100% !important;\n }\n \n .m-0 {\n margin: 0 !important;\n }\n \n .mt-0,\n .my-0 {\n margin-top: 0 !important;\n }\n \n .mr-0,\n .mx-0 {\n margin-right: 0 !important;\n }\n \n .mb-0,\n .my-0 {\n margin-bottom: 0 !important;\n }\n \n .ml-0,\n .mx-0 {\n margin-left: 0 !important;\n }\n \n .m-1 {\n margin: 0.25rem !important;\n }\n \n .mt-1,\n .my-1 {\n margin-top: 0.25rem !important;\n }\n \n .mr-1,\n .mx-1 {\n margin-right: 0.25rem !important;\n }\n \n .mb-1,\n .my-1 {\n margin-bottom: 0.25rem !important;\n }\n \n .ml-1,\n .mx-1 {\n margin-left: 0.25rem !important;\n }\n \n .m-2 {\n margin: 0.5rem !important;\n }\n \n .mt-2,\n .my-2 {\n margin-top: 0.5rem !important;\n }\n \n .mr-2,\n .mx-2 {\n margin-right: 0.5rem !important;\n }\n \n .mb-2,\n .my-2 {\n margin-bottom: 0.5rem !important;\n }\n \n .ml-2,\n .mx-2 {\n margin-left: 0.5rem !important;\n }\n \n .m-3 {\n margin: 1rem !important;\n }\n \n .mt-3,\n .my-3 {\n margin-top: 1rem !important;\n }\n \n .mr-3,\n .mx-3 {\n margin-right: 1rem !important;\n }\n \n .mb-3,\n .my-3 {\n margin-bottom: 1rem !important;\n }\n \n .ml-3,\n .mx-3 {\n margin-left: 1rem !important;\n }\n \n .m-4 {\n margin: 1.5rem !important;\n }\n \n .mt-4,\n .my-4 {\n margin-top: 1.5rem !important;\n }\n \n .mr-4,\n .mx-4 {\n margin-right: 1.5rem !important;\n }\n \n .mb-4,\n .my-4 {\n margin-bottom: 1.5rem !important;\n }\n \n .ml-4,\n .mx-4 {\n margin-left: 1.5rem !important;\n }\n \n .m-5 {\n margin: 3rem !important;\n }\n \n .mt-5,\n .my-5 {\n margin-top: 3rem !important;\n }\n \n .mr-5,\n .mx-5 {\n margin-right: 3rem !important;\n }\n \n .mb-5,\n .my-5 {\n margin-bottom: 3rem !important;\n }\n \n .ml-5,\n .mx-5 {\n margin-left: 3rem !important;\n }\n \n .p-0 {\n padding: 0 !important;\n }\n \n .pt-0,\n .py-0 {\n padding-top: 0 !important;\n }\n \n .pr-0,\n .px-0 {\n padding-right: 0 !important;\n }\n \n .pb-0,\n .py-0 {\n padding-bottom: 0 !important;\n }\n \n .pl-0,\n .px-0 {\n padding-left: 0 !important;\n }\n \n .p-1 {\n padding: 0.25rem !important;\n }\n \n .pt-1,\n .py-1 {\n padding-top: 0.25rem !important;\n }\n \n .pr-1,\n .px-1 {\n padding-right: 0.25rem !important;\n }\n \n .pb-1,\n .py-1 {\n padding-bottom: 0.25rem !important;\n }\n \n .pl-1,\n .px-1 {\n padding-left: 0.25rem !important;\n }\n \n .p-2 {\n padding: 0.5rem !important;\n }\n \n .pt-2,\n .py-2 {\n padding-top: 0.5rem !important;\n }\n \n .pr-2,\n .px-2 {\n padding-right: 0.5rem !important;\n }\n \n .pb-2,\n .py-2 {\n padding-bottom: 0.5rem !important;\n }\n \n .pl-2,\n .px-2 {\n padding-left: 0.5rem !important;\n }\n \n .p-3 {\n padding: 1rem !important;\n }\n \n .pt-3,\n .py-3 {\n padding-top: 1rem !important;\n }\n \n .pr-3,\n .px-3 {\n padding-right: 1rem !important;\n }\n \n .pb-3,\n .py-3 {\n padding-bottom: 1rem !important;\n }\n \n .pl-3,\n .px-3 {\n padding-left: 1rem !important;\n }\n \n .p-4 {\n padding: 1.5rem !important;\n }\n \n .pt-4,\n .py-4 {\n padding-top: 1.5rem !important;\n }\n \n .pr-4,\n .px-4 {\n padding-right: 1.5rem !important;\n }\n \n .pb-4,\n .py-4 {\n padding-bottom: 1.5rem !important;\n }\n \n .pl-4,\n .px-4 {\n padding-left: 1.5rem !important;\n }\n \n .p-5 {\n padding: 3rem !important;\n }\n \n .pt-5,\n .py-5 {\n padding-top: 3rem !important;\n }\n \n .pr-5,\n .px-5 {\n padding-right: 3rem !important;\n }\n \n .pb-5,\n .py-5 {\n padding-bottom: 3rem !important;\n }\n \n .pl-5,\n .px-5 {\n padding-left: 3rem !important;\n }\n \n .m-auto {\n margin: auto !important;\n }\n \n .mt-auto,\n .my-auto {\n margin-top: auto !important;\n }\n \n .mr-auto,\n .mx-auto {\n margin-right: auto !important;\n }\n \n .mb-auto,\n .my-auto {\n margin-bottom: auto !important;\n }\n \n .ml-auto,\n .mx-auto {\n margin-left: auto !important;\n }\n \n @media (min-width: 576px) {\n .m-sm-0 {\n margin: 0 !important;\n }\n .mt-sm-0,\n .my-sm-0 {\n margin-top: 0 !important;\n }\n .mr-sm-0,\n .mx-sm-0 {\n margin-right: 0 !important;\n }\n .mb-sm-0,\n .my-sm-0 {\n margin-bottom: 0 !important;\n }\n .ml-sm-0,\n .mx-sm-0 {\n margin-left: 0 !important;\n }\n .m-sm-1 {\n margin: 0.25rem !important;\n }\n .mt-sm-1,\n .my-sm-1 {\n margin-top: 0.25rem !important;\n }\n .mr-sm-1,\n .mx-sm-1 {\n margin-right: 0.25rem !important;\n }\n .mb-sm-1,\n .my-sm-1 {\n margin-bottom: 0.25rem !important;\n }\n .ml-sm-1,\n .mx-sm-1 {\n margin-left: 0.25rem !important;\n }\n .m-sm-2 {\n margin: 0.5rem !important;\n }\n .mt-sm-2,\n .my-sm-2 {\n margin-top: 0.5rem !important;\n }\n .mr-sm-2,\n .mx-sm-2 {\n margin-right: 0.5rem !important;\n }\n .mb-sm-2,\n .my-sm-2 {\n margin-bottom: 0.5rem !important;\n }\n .ml-sm-2,\n .mx-sm-2 {\n margin-left: 0.5rem !important;\n }\n .m-sm-3 {\n margin: 1rem !important;\n }\n .mt-sm-3,\n .my-sm-3 {\n margin-top: 1rem !important;\n }\n .mr-sm-3,\n .mx-sm-3 {\n margin-right: 1rem !important;\n }\n .mb-sm-3,\n .my-sm-3 {\n margin-bottom: 1rem !important;\n }\n .ml-sm-3,\n .mx-sm-3 {\n margin-left: 1rem !important;\n }\n .m-sm-4 {\n margin: 1.5rem !important;\n }\n .mt-sm-4,\n .my-sm-4 {\n margin-top: 1.5rem !important;\n }\n .mr-sm-4,\n .mx-sm-4 {\n margin-right: 1.5rem !important;\n }\n .mb-sm-4,\n .my-sm-4 {\n margin-bottom: 1.5rem !important;\n }\n .ml-sm-4,\n .mx-sm-4 {\n margin-left: 1.5rem !important;\n }\n .m-sm-5 {\n margin: 3rem !important;\n }\n .mt-sm-5,\n .my-sm-5 {\n margin-top: 3rem !important;\n }\n .mr-sm-5,\n .mx-sm-5 {\n margin-right: 3rem !important;\n }\n .mb-sm-5,\n .my-sm-5 {\n margin-bottom: 3rem !important;\n }\n .ml-sm-5,\n .mx-sm-5 {\n margin-left: 3rem !important;\n }\n .p-sm-0 {\n padding: 0 !important;\n }\n .pt-sm-0,\n .py-sm-0 {\n padding-top: 0 !important;\n }\n .pr-sm-0,\n .px-sm-0 {\n padding-right: 0 !important;\n }\n .pb-sm-0,\n .py-sm-0 {\n padding-bottom: 0 !important;\n }\n .pl-sm-0,\n .px-sm-0 {\n padding-left: 0 !important;\n }\n .p-sm-1 {\n padding: 0.25rem !important;\n }\n .pt-sm-1,\n .py-sm-1 {\n padding-top: 0.25rem !important;\n }\n .pr-sm-1,\n .px-sm-1 {\n padding-right: 0.25rem !important;\n }\n .pb-sm-1,\n .py-sm-1 {\n padding-bottom: 0.25rem !important;\n }\n .pl-sm-1,\n .px-sm-1 {\n padding-left: 0.25rem !important;\n }\n .p-sm-2 {\n padding: 0.5rem !important;\n }\n .pt-sm-2,\n .py-sm-2 {\n padding-top: 0.5rem !important;\n }\n .pr-sm-2,\n .px-sm-2 {\n padding-right: 0.5rem !important;\n }\n .pb-sm-2,\n .py-sm-2 {\n padding-bottom: 0.5rem !important;\n }\n .pl-sm-2,\n .px-sm-2 {\n padding-left: 0.5rem !important;\n }\n .p-sm-3 {\n padding: 1rem !important;\n }\n .pt-sm-3,\n .py-sm-3 {\n padding-top: 1rem !important;\n }\n .pr-sm-3,\n .px-sm-3 {\n padding-right: 1rem !important;\n }\n .pb-sm-3,\n .py-sm-3 {\n padding-bottom: 1rem !important;\n }\n .pl-sm-3,\n .px-sm-3 {\n padding-left: 1rem !important;\n }\n .p-sm-4 {\n padding: 1.5rem !important;\n }\n .pt-sm-4,\n .py-sm-4 {\n padding-top: 1.5rem !important;\n }\n .pr-sm-4,\n .px-sm-4 {\n padding-right: 1.5rem !important;\n }\n .pb-sm-4,\n .py-sm-4 {\n padding-bottom: 1.5rem !important;\n }\n .pl-sm-4,\n .px-sm-4 {\n padding-left: 1.5rem !important;\n }\n .p-sm-5 {\n padding: 3rem !important;\n }\n .pt-sm-5,\n .py-sm-5 {\n padding-top: 3rem !important;\n }\n .pr-sm-5,\n .px-sm-5 {\n padding-right: 3rem !important;\n }\n .pb-sm-5,\n .py-sm-5 {\n padding-bottom: 3rem !important;\n }\n .pl-sm-5,\n .px-sm-5 {\n padding-left: 3rem !important;\n }\n .m-sm-auto {\n margin: auto !important;\n }\n .mt-sm-auto,\n .my-sm-auto {\n margin-top: auto !important;\n }\n .mr-sm-auto,\n .mx-sm-auto {\n margin-right: auto !important;\n }\n .mb-sm-auto,\n .my-sm-auto {\n margin-bottom: auto !important;\n }\n .ml-sm-auto,\n .mx-sm-auto {\n margin-left: auto !important;\n }\n }\n \n @media (min-width: 768px) {\n .m-md-0 {\n margin: 0 !important;\n }\n .mt-md-0,\n .my-md-0 {\n margin-top: 0 !important;\n }\n .mr-md-0,\n .mx-md-0 {\n margin-right: 0 !important;\n }\n .mb-md-0,\n .my-md-0 {\n margin-bottom: 0 !important;\n }\n .ml-md-0,\n .mx-md-0 {\n margin-left: 0 !important;\n }\n .m-md-1 {\n margin: 0.25rem !important;\n }\n .mt-md-1,\n .my-md-1 {\n margin-top: 0.25rem !important;\n }\n .mr-md-1,\n .mx-md-1 {\n margin-right: 0.25rem !important;\n }\n .mb-md-1,\n .my-md-1 {\n margin-bottom: 0.25rem !important;\n }\n .ml-md-1,\n .mx-md-1 {\n margin-left: 0.25rem !important;\n }\n .m-md-2 {\n margin: 0.5rem !important;\n }\n .mt-md-2,\n .my-md-2 {\n margin-top: 0.5rem !important;\n }\n .mr-md-2,\n .mx-md-2 {\n margin-right: 0.5rem !important;\n }\n .mb-md-2,\n .my-md-2 {\n margin-bottom: 0.5rem !important;\n }\n .ml-md-2,\n .mx-md-2 {\n margin-left: 0.5rem !important;\n }\n .m-md-3 {\n margin: 1rem !important;\n }\n .mt-md-3,\n .my-md-3 {\n margin-top: 1rem !important;\n }\n .mr-md-3,\n .mx-md-3 {\n margin-right: 1rem !important;\n }\n .mb-md-3,\n .my-md-3 {\n margin-bottom: 1rem !important;\n }\n .ml-md-3,\n .mx-md-3 {\n margin-left: 1rem !important;\n }\n .m-md-4 {\n margin: 1.5rem !important;\n }\n .mt-md-4,\n .my-md-4 {\n margin-top: 1.5rem !important;\n }\n .mr-md-4,\n .mx-md-4 {\n margin-right: 1.5rem !important;\n }\n .mb-md-4,\n .my-md-4 {\n margin-bottom: 1.5rem !important;\n }\n .ml-md-4,\n .mx-md-4 {\n margin-left: 1.5rem !important;\n }\n .m-md-5 {\n margin: 3rem !important;\n }\n .mt-md-5,\n .my-md-5 {\n margin-top: 3rem !important;\n }\n .mr-md-5,\n .mx-md-5 {\n margin-right: 3rem !important;\n }\n .mb-md-5,\n .my-md-5 {\n margin-bottom: 3rem !important;\n }\n .ml-md-5,\n .mx-md-5 {\n margin-left: 3rem !important;\n }\n .p-md-0 {\n padding: 0 !important;\n }\n .pt-md-0,\n .py-md-0 {\n padding-top: 0 !important;\n }\n .pr-md-0,\n .px-md-0 {\n padding-right: 0 !important;\n }\n .pb-md-0,\n .py-md-0 {\n padding-bottom: 0 !important;\n }\n .pl-md-0,\n .px-md-0 {\n padding-left: 0 !important;\n }\n .p-md-1 {\n padding: 0.25rem !important;\n }\n .pt-md-1,\n .py-md-1 {\n padding-top: 0.25rem !important;\n }\n .pr-md-1,\n .px-md-1 {\n padding-right: 0.25rem !important;\n }\n .pb-md-1,\n .py-md-1 {\n padding-bottom: 0.25rem !important;\n }\n .pl-md-1,\n .px-md-1 {\n padding-left: 0.25rem !important;\n }\n .p-md-2 {\n padding: 0.5rem !important;\n }\n .pt-md-2,\n .py-md-2 {\n padding-top: 0.5rem !important;\n }\n .pr-md-2,\n .px-md-2 {\n padding-right: 0.5rem !important;\n }\n .pb-md-2,\n .py-md-2 {\n padding-bottom: 0.5rem !important;\n }\n .pl-md-2,\n .px-md-2 {\n padding-left: 0.5rem !important;\n }\n .p-md-3 {\n padding: 1rem !important;\n }\n .pt-md-3,\n .py-md-3 {\n padding-top: 1rem !important;\n }\n .pr-md-3,\n .px-md-3 {\n padding-right: 1rem !important;\n }\n .pb-md-3,\n .py-md-3 {\n padding-bottom: 1rem !important;\n }\n .pl-md-3,\n .px-md-3 {\n padding-left: 1rem !important;\n }\n .p-md-4 {\n padding: 1.5rem !important;\n }\n .pt-md-4,\n .py-md-4 {\n padding-top: 1.5rem !important;\n }\n .pr-md-4,\n .px-md-4 {\n padding-right: 1.5rem !important;\n }\n .pb-md-4,\n .py-md-4 {\n padding-bottom: 1.5rem !important;\n }\n .pl-md-4,\n .px-md-4 {\n padding-left: 1.5rem !important;\n }\n .p-md-5 {\n padding: 3rem !important;\n }\n .pt-md-5,\n .py-md-5 {\n padding-top: 3rem !important;\n }\n .pr-md-5,\n .px-md-5 {\n padding-right: 3rem !important;\n }\n .pb-md-5,\n .py-md-5 {\n padding-bottom: 3rem !important;\n }\n .pl-md-5,\n .px-md-5 {\n padding-left: 3rem !important;\n }\n .m-md-auto {\n margin: auto !important;\n }\n .mt-md-auto,\n .my-md-auto {\n margin-top: auto !important;\n }\n .mr-md-auto,\n .mx-md-auto {\n margin-right: auto !important;\n }\n .mb-md-auto,\n .my-md-auto {\n margin-bottom: auto !important;\n }\n .ml-md-auto,\n .mx-md-auto {\n margin-left: auto !important;\n }\n }\n \n @media (min-width: 992px) {\n .m-lg-0 {\n margin: 0 !important;\n }\n .mt-lg-0,\n .my-lg-0 {\n margin-top: 0 !important;\n }\n .mr-lg-0,\n .mx-lg-0 {\n margin-right: 0 !important;\n }\n .mb-lg-0,\n .my-lg-0 {\n margin-bottom: 0 !important;\n }\n .ml-lg-0,\n .mx-lg-0 {\n margin-left: 0 !important;\n }\n .m-lg-1 {\n margin: 0.25rem !important;\n }\n .mt-lg-1,\n .my-lg-1 {\n margin-top: 0.25rem !important;\n }\n .mr-lg-1,\n .mx-lg-1 {\n margin-right: 0.25rem !important;\n }\n .mb-lg-1,\n .my-lg-1 {\n margin-bottom: 0.25rem !important;\n }\n .ml-lg-1,\n .mx-lg-1 {\n margin-left: 0.25rem !important;\n }\n .m-lg-2 {\n margin: 0.5rem !important;\n }\n .mt-lg-2,\n .my-lg-2 {\n margin-top: 0.5rem !important;\n }\n .mr-lg-2,\n .mx-lg-2 {\n margin-right: 0.5rem !important;\n }\n .mb-lg-2,\n .my-lg-2 {\n margin-bottom: 0.5rem !important;\n }\n .ml-lg-2,\n .mx-lg-2 {\n margin-left: 0.5rem !important;\n }\n .m-lg-3 {\n margin: 1rem !important;\n }\n .mt-lg-3,\n .my-lg-3 {\n margin-top: 1rem !important;\n }\n .mr-lg-3,\n .mx-lg-3 {\n margin-right: 1rem !important;\n }\n .mb-lg-3,\n .my-lg-3 {\n margin-bottom: 1rem !important;\n }\n .ml-lg-3,\n .mx-lg-3 {\n margin-left: 1rem !important;\n }\n .m-lg-4 {\n margin: 1.5rem !important;\n }\n .mt-lg-4,\n .my-lg-4 {\n margin-top: 1.5rem !important;\n }\n .mr-lg-4,\n .mx-lg-4 {\n margin-right: 1.5rem !important;\n }\n .mb-lg-4,\n .my-lg-4 {\n margin-bottom: 1.5rem !important;\n }\n .ml-lg-4,\n .mx-lg-4 {\n margin-left: 1.5rem !important;\n }\n .m-lg-5 {\n margin: 3rem !important;\n }\n .mt-lg-5,\n .my-lg-5 {\n margin-top: 3rem !important;\n }\n .mr-lg-5,\n .mx-lg-5 {\n margin-right: 3rem !important;\n }\n .mb-lg-5,\n .my-lg-5 {\n margin-bottom: 3rem !important;\n }\n .ml-lg-5,\n .mx-lg-5 {\n margin-left: 3rem !important;\n }\n .p-lg-0 {\n padding: 0 !important;\n }\n .pt-lg-0,\n .py-lg-0 {\n padding-top: 0 !important;\n }\n .pr-lg-0,\n .px-lg-0 {\n padding-right: 0 !important;\n }\n .pb-lg-0,\n .py-lg-0 {\n padding-bottom: 0 !important;\n }\n .pl-lg-0,\n .px-lg-0 {\n padding-left: 0 !important;\n }\n .p-lg-1 {\n padding: 0.25rem !important;\n }\n .pt-lg-1,\n .py-lg-1 {\n padding-top: 0.25rem !important;\n }\n .pr-lg-1,\n .px-lg-1 {\n padding-right: 0.25rem !important;\n }\n .pb-lg-1,\n .py-lg-1 {\n padding-bottom: 0.25rem !important;\n }\n .pl-lg-1,\n .px-lg-1 {\n padding-left: 0.25rem !important;\n }\n .p-lg-2 {\n padding: 0.5rem !important;\n }\n .pt-lg-2,\n .py-lg-2 {\n padding-top: 0.5rem !important;\n }\n .pr-lg-2,\n .px-lg-2 {\n padding-right: 0.5rem !important;\n }\n .pb-lg-2,\n .py-lg-2 {\n padding-bottom: 0.5rem !important;\n }\n .pl-lg-2,\n .px-lg-2 {\n padding-left: 0.5rem !important;\n }\n .p-lg-3 {\n padding: 1rem !important;\n }\n .pt-lg-3,\n .py-lg-3 {\n padding-top: 1rem !important;\n }\n .pr-lg-3,\n .px-lg-3 {\n padding-right: 1rem !important;\n }\n .pb-lg-3,\n .py-lg-3 {\n padding-bottom: 1rem !important;\n }\n .pl-lg-3,\n .px-lg-3 {\n padding-left: 1rem !important;\n }\n .p-lg-4 {\n padding: 1.5rem !important;\n }\n .pt-lg-4,\n .py-lg-4 {\n padding-top: 1.5rem !important;\n }\n .pr-lg-4,\n .px-lg-4 {\n padding-right: 1.5rem !important;\n }\n .pb-lg-4,\n .py-lg-4 {\n padding-bottom: 1.5rem !important;\n }\n .pl-lg-4,\n .px-lg-4 {\n padding-left: 1.5rem !important;\n }\n .p-lg-5 {\n padding: 3rem !important;\n }\n .pt-lg-5,\n .py-lg-5 {\n padding-top: 3rem !important;\n }\n .pr-lg-5,\n .px-lg-5 {\n padding-right: 3rem !important;\n }\n .pb-lg-5,\n .py-lg-5 {\n padding-bottom: 3rem !important;\n }\n .pl-lg-5,\n .px-lg-5 {\n padding-left: 3rem !important;\n }\n .m-lg-auto {\n margin: auto !important;\n }\n .mt-lg-auto,\n .my-lg-auto {\n margin-top: auto !important;\n }\n .mr-lg-auto,\n .mx-lg-auto {\n margin-right: auto !important;\n }\n .mb-lg-auto,\n .my-lg-auto {\n margin-bottom: auto !important;\n }\n .ml-lg-auto,\n .mx-lg-auto {\n margin-left: auto !important;\n }\n }\n \n @media (min-width: 1200px) {\n .m-xl-0 {\n margin: 0 !important;\n }\n .mt-xl-0,\n .my-xl-0 {\n margin-top: 0 !important;\n }\n .mr-xl-0,\n .mx-xl-0 {\n margin-right: 0 !important;\n }\n .mb-xl-0,\n .my-xl-0 {\n margin-bottom: 0 !important;\n }\n .ml-xl-0,\n .mx-xl-0 {\n margin-left: 0 !important;\n }\n .m-xl-1 {\n margin: 0.25rem !important;\n }\n .mt-xl-1,\n .my-xl-1 {\n margin-top: 0.25rem !important;\n }\n .mr-xl-1,\n .mx-xl-1 {\n margin-right: 0.25rem !important;\n }\n .mb-xl-1,\n .my-xl-1 {\n margin-bottom: 0.25rem !important;\n }\n .ml-xl-1,\n .mx-xl-1 {\n margin-left: 0.25rem !important;\n }\n .m-xl-2 {\n margin: 0.5rem !important;\n }\n .mt-xl-2,\n .my-xl-2 {\n margin-top: 0.5rem !important;\n }\n .mr-xl-2,\n .mx-xl-2 {\n margin-right: 0.5rem !important;\n }\n .mb-xl-2,\n .my-xl-2 {\n margin-bottom: 0.5rem !important;\n }\n .ml-xl-2,\n .mx-xl-2 {\n margin-left: 0.5rem !important;\n }\n .m-xl-3 {\n margin: 1rem !important;\n }\n .mt-xl-3,\n .my-xl-3 {\n margin-top: 1rem !important;\n }\n .mr-xl-3,\n .mx-xl-3 {\n margin-right: 1rem !important;\n }\n .mb-xl-3,\n .my-xl-3 {\n margin-bottom: 1rem !important;\n }\n .ml-xl-3,\n .mx-xl-3 {\n margin-left: 1rem !important;\n }\n .m-xl-4 {\n margin: 1.5rem !important;\n }\n .mt-xl-4,\n .my-xl-4 {\n margin-top: 1.5rem !important;\n }\n .mr-xl-4,\n .mx-xl-4 {\n margin-right: 1.5rem !important;\n }\n .mb-xl-4,\n .my-xl-4 {\n margin-bottom: 1.5rem !important;\n }\n .ml-xl-4,\n .mx-xl-4 {\n margin-left: 1.5rem !important;\n }\n .m-xl-5 {\n margin: 3rem !important;\n }\n .mt-xl-5,\n .my-xl-5 {\n margin-top: 3rem !important;\n }\n .mr-xl-5,\n .mx-xl-5 {\n margin-right: 3rem !important;\n }\n .mb-xl-5,\n .my-xl-5 {\n margin-bottom: 3rem !important;\n }\n .ml-xl-5,\n .mx-xl-5 {\n margin-left: 3rem !important;\n }\n .p-xl-0 {\n padding: 0 !important;\n }\n .pt-xl-0,\n .py-xl-0 {\n padding-top: 0 !important;\n }\n .pr-xl-0,\n .px-xl-0 {\n padding-right: 0 !important;\n }\n .pb-xl-0,\n .py-xl-0 {\n padding-bottom: 0 !important;\n }\n .pl-xl-0,\n .px-xl-0 {\n padding-left: 0 !important;\n }\n .p-xl-1 {\n padding: 0.25rem !important;\n }\n .pt-xl-1,\n .py-xl-1 {\n padding-top: 0.25rem !important;\n }\n .pr-xl-1,\n .px-xl-1 {\n padding-right: 0.25rem !important;\n }\n .pb-xl-1,\n .py-xl-1 {\n padding-bottom: 0.25rem !important;\n }\n .pl-xl-1,\n .px-xl-1 {\n padding-left: 0.25rem !important;\n }\n .p-xl-2 {\n padding: 0.5rem !important;\n }\n .pt-xl-2,\n .py-xl-2 {\n padding-top: 0.5rem !important;\n }\n .pr-xl-2,\n .px-xl-2 {\n padding-right: 0.5rem !important;\n }\n .pb-xl-2,\n .py-xl-2 {\n padding-bottom: 0.5rem !important;\n }\n .pl-xl-2,\n .px-xl-2 {\n padding-left: 0.5rem !important;\n }\n .p-xl-3 {\n padding: 1rem !important;\n }\n .pt-xl-3,\n .py-xl-3 {\n padding-top: 1rem !important;\n }\n .pr-xl-3,\n .px-xl-3 {\n padding-right: 1rem !important;\n }\n .pb-xl-3,\n .py-xl-3 {\n padding-bottom: 1rem !important;\n }\n .pl-xl-3,\n .px-xl-3 {\n padding-left: 1rem !important;\n }\n .p-xl-4 {\n padding: 1.5rem !important;\n }\n .pt-xl-4,\n .py-xl-4 {\n padding-top: 1.5rem !important;\n }\n .pr-xl-4,\n .px-xl-4 {\n padding-right: 1.5rem !important;\n }\n .pb-xl-4,\n .py-xl-4 {\n padding-bottom: 1.5rem !important;\n }\n .pl-xl-4,\n .px-xl-4 {\n padding-left: 1.5rem !important;\n }\n .p-xl-5 {\n padding: 3rem !important;\n }\n .pt-xl-5,\n .py-xl-5 {\n padding-top: 3rem !important;\n }\n .pr-xl-5,\n .px-xl-5 {\n padding-right: 3rem !important;\n }\n .pb-xl-5,\n .py-xl-5 {\n padding-bottom: 3rem !important;\n }\n .pl-xl-5,\n .px-xl-5 {\n padding-left: 3rem !important;\n }\n .m-xl-auto {\n margin: auto !important;\n }\n .mt-xl-auto,\n .my-xl-auto {\n margin-top: auto !important;\n }\n .mr-xl-auto,\n .mx-xl-auto {\n margin-right: auto !important;\n }\n .mb-xl-auto,\n .my-xl-auto {\n margin-bottom: auto !important;\n }\n .ml-xl-auto,\n .mx-xl-auto {\n margin-left: auto !important;\n }\n }\n \n .text-justify {\n text-align: justify !important;\n }\n \n .text-nowrap {\n white-space: nowrap !important;\n }\n \n .text-truncate {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n \n .text-left {\n text-align: left !important;\n }\n \n .text-right {\n text-align: right !important;\n }\n \n .text-center {\n text-align: center !important;\n }\n \n @media (min-width: 576px) {\n .text-sm-left {\n text-align: left !important;\n }\n .text-sm-right {\n text-align: right !important;\n }\n .text-sm-center {\n text-align: center !important;\n }\n }\n \n @media (min-width: 768px) {\n .text-md-left {\n text-align: left !important;\n }\n .text-md-right {\n text-align: right !important;\n }\n .text-md-center {\n text-align: center !important;\n }\n }\n \n @media (min-width: 992px) {\n .text-lg-left {\n text-align: left !important;\n }\n .text-lg-right {\n text-align: right !important;\n }\n .text-lg-center {\n text-align: center !important;\n }\n }\n \n @media (min-width: 1200px) {\n .text-xl-left {\n text-align: left !important;\n }\n .text-xl-right {\n text-align: right !important;\n }\n .text-xl-center {\n text-align: center !important;\n }\n }\n \n .text-lowercase {\n text-transform: lowercase !important;\n }\n \n .text-uppercase {\n text-transform: uppercase !important;\n }\n \n .text-capitalize {\n text-transform: capitalize !important;\n }\n \n .font-weight-light {\n font-weight: 300 !important;\n }\n \n .font-weight-normal {\n font-weight: 400 !important;\n }\n \n .font-weight-bold {\n font-weight: 700 !important;\n }\n \n .font-italic {\n font-style: italic !important;\n }\n \n .text-white {\n color: #fff !important;\n }\n \n .text-primary {\n color: #007bff !important;\n }\n \n a.text-primary:focus, a.text-primary:hover {\n color: #0062cc !important;\n }\n \n .text-secondary {\n color: #868e96 !important;\n }\n \n a.text-secondary:focus, a.text-secondary:hover {\n color: #6c757d !important;\n }\n \n .text-success {\n color: #28a745 !important;\n }\n \n a.text-success:focus, a.text-success:hover {\n color: #1e7e34 !important;\n }\n \n .text-info {\n color: #17a2b8 !important;\n }\n \n a.text-info:focus, a.text-info:hover {\n color: #117a8b !important;\n }\n \n .text-warning {\n color: #ffc107 !important;\n }\n \n a.text-warning:focus, a.text-warning:hover {\n color: #d39e00 !important;\n }\n \n .text-danger {\n color: #dc3545 !important;\n }\n \n a.text-danger:focus, a.text-danger:hover {\n color: #bd2130 !important;\n }\n \n .text-light {\n color: #f8f9fa !important;\n }\n \n a.text-light:focus, a.text-light:hover {\n color: #dae0e5 !important;\n }\n \n .text-dark {\n color: #343a40 !important;\n }\n \n a.text-dark:focus, a.text-dark:hover {\n color: #1d2124 !important;\n }\n \n .text-muted {\n color: #868e96 !important;\n }\n \n .text-hide {\n font: 0/0 a;\n color: transparent;\n text-shadow: none;\n background-color: transparent;\n border: 0;\n }\n \n .visible {\n visibility: visible !important;\n }\n \n .invisible {\n visibility: hidden !important;\n }\n /*# sourceMappingURL=bootstrap.css.map */","/**\n * Syntax highlighting styles\n */\n.highlight {\n background: #f6f8fa;\n padding: 1rem 0 0.1rem 1rem;\n margin-bottom: 1rem;\n\n .c { color: #998; font-style: italic } // Comment\n .err { color: #a61717; background-color: #e3d2d2 } // Error\n .k { font-weight: bold } // Keyword\n .o { font-weight: bold } // Operator\n .cm { color: #998; font-style: italic } // Comment.Multiline\n .cp { color: #999; font-weight: bold } // Comment.Preproc\n .c1 { color: #998; font-style: italic } // Comment.Single\n .cs { color: #999; font-weight: bold; font-style: italic } // Comment.Special\n .gd { color: #000; background-color: #fdd } // Generic.Deleted\n .gd .x { color: #000; background-color: #faa } // Generic.Deleted.Specific\n .ge { font-style: italic } // Generic.Emph\n .gr { color: #a00 } // Generic.Error\n .gh { color: #999 } // Generic.Heading\n .gi { color: #000; background-color: #dfd } // Generic.Inserted\n .gi .x { color: #000; background-color: #afa } // Generic.Inserted.Specific\n .go { color: #888 } // Generic.Output\n .gp { color: #555 } // Generic.Prompt\n .gs { font-weight: bold } // Generic.Strong\n .gu { color: #aaa } // Generic.Subheading\n .gt { color: #a00 } // Generic.Traceback\n .kc { font-weight: bold } // Keyword.Constant\n .kd { font-weight: bold } // Keyword.Declaration\n .kp { font-weight: bold } // Keyword.Pseudo\n .kr { font-weight: bold } // Keyword.Reserved\n .kt { color: #458; font-weight: bold } // Keyword.Type\n .m { color: #099 } // Literal.Number\n .s { color: #d14 } // Literal.String\n .na { color: #008080 } // Name.Attribute\n .nb { color: #0086B3 } // Name.Builtin\n .nc { color: #458; font-weight: bold } // Name.Class\n .no { color: #008080 } // Name.Constant\n .ni { color: #800080 } // Name.Entity\n .ne { color: #900; font-weight: bold } // Name.Exception\n .nf { color: #900; font-weight: bold } // Name.Function\n .nn { color: #555 } // Name.Namespace\n .nt { color: #000080 } // Name.Tag\n .nv { color: #008080 } // Name.Variable\n .ow { font-weight: bold } // Operator.Word\n .w { color: #bbb } // Text.Whitespace\n .mf { color: #099 } // Literal.Number.Float\n .mh { color: #099 } // Literal.Number.Hex\n .mi { color: #099 } // Literal.Number.Integer\n .mo { color: #099 } // Literal.Number.Oct\n .sb { color: #d14 } // Literal.String.Backtick\n .sc { color: #d14 } // Literal.String.Char\n .sd { color: #d14 } // Literal.String.Doc\n .s2 { color: #d14 } // Literal.String.Double\n .se { color: #d14 } // Literal.String.Escape\n .sh { color: #d14 } // Literal.String.Heredoc\n .si { color: #d14 } // Literal.String.Interpol\n .sx { color: #d14 } // Literal.String.Other\n .sr { color: #009926 } // Literal.String.Regex\n .s1 { color: #d14 } // Literal.String.Single\n .ss { color: #990073 } // Literal.String.Symbol\n .bp { color: #999 } // Name.Builtin.Pseudo\n .vc { color: #008080 } // Name.Variable.Class\n .vg { color: #008080 } // Name.Variable.Global\n .vi { color: #008080 } // Name.Variable.Instance\n .il { color: #099 } // Literal.Number.Integer.Long\n}\n\n.highlight .hll { background-color: #ffffcc }\n.highlight .c { color: #008000 } /* Comment */\n.highlight .err { border: 1px solid #FF0000 } /* Error */\n.highlight .k { color: #0000ff } /* Keyword */\n.highlight .ch { color: #008000 } /* Comment.Hashbang */\n.highlight .cm { color: #008000 } /* Comment.Multiline */\n.highlight .cp { color: #0000ff } /* Comment.Preproc */\n.highlight .cpf { color: #008000 } /* Comment.PreprocFile */\n.highlight .c1 { color: #008000 } /* Comment.Single */\n.highlight .cs { color: #008000 } /* Comment.Special */\n.highlight .ge { font-style: italic } /* Generic.Emph */\n.highlight .gh { font-weight: bold } /* Generic.Heading */\n.highlight .gp { font-weight: bold } /* Generic.Prompt */\n.highlight .gs { font-weight: bold } /* Generic.Strong */\n.highlight .gu { font-weight: bold } /* Generic.Subheading */\n.highlight .kc { color: #0000ff } /* Keyword.Constant */\n.highlight .kd { color: #0000ff } /* Keyword.Declaration */\n.highlight .kn { color: #0000ff } /* Keyword.Namespace */\n.highlight .kp { color: #0000ff } /* Keyword.Pseudo */\n.highlight .kr { color: #0000ff } /* Keyword.Reserved */\n.highlight .kt { color: #2b91af } /* Keyword.Type */\n.highlight .s { color: #a31515 } /* Literal.String */\n.highlight .nc { color: #2b91af } /* Name.Class */\n.highlight .ow { color: #0000ff } /* Operator.Word */\n.highlight .sa { color: #a31515 } /* Literal.String.Affix */\n.highlight .sb { color: #a31515 } /* Literal.String.Backtick */\n.highlight .sc { color: #a31515 } /* Literal.String.Char */\n.highlight .dl { color: #a31515 } /* Literal.String.Delimiter */\n.highlight .sd { color: #a31515 } /* Literal.String.Doc */\n.highlight .s2 { color: #a31515 } /* Literal.String.Double */\n.highlight .se { color: #a31515 } /* Literal.String.Escape */\n.highlight .sh { color: #a31515 } /* Literal.String.Heredoc */\n.highlight .si { color: #a31515 } /* Literal.String.Interpol */\n.highlight .sx { color: #a31515 } /* Literal.String.Other */\n.highlight .sr { color: #a31515 } /* Literal.String.Regex */\n.highlight .s1 { color: #a31515 } /* Literal.String.Single */\n.highlight .ss { color: #a31515 } /* Literal.String.Symbol */\n"]} \ No newline at end of file diff --git a/crossdomain.xml b/crossdomain.xml deleted file mode 100644 index 29a035d7f..000000000 --- a/crossdomain.xml +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - - - - diff --git a/favicon.ico b/favicon.ico index 9f7b970dcbf0bcbd6111c8727b524859b37015d5..a11777cc471a4344702741ab1c8a588998b1311a 100644 GIT binary patch literal 3870 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 baj7?x%VD!5Cxk2YbYLNVeiXvvpMCWYo=by@ literal 4286 zcmchYX-rgC6vxjnpcbi648$&R1`CRU%z$7eF|uePVP9kymlikD)an;o+mx2X5Np!L z*ru#nB(0iO8~dTAjWUA@16Y=7V%rav+Vlg?8?gkfykUmd|9K2Byg@V2X)ig<<=!*r z_rK?ydm&QcN2?|NO=km$f{7>`h9ydb@wz;)cWu$QjW5jYw`g2LqA^Y_8uWWaLv*ru zC6dHz8|D^lmfr%G#2+*ScD~pWH7K^|dZ8f_b7)AMWwhD3i>>h_pVbhZ1m0bkG;X?9 z(GU|Nw&+Q0ePwn*-SoC1zw#Lk(NQ?_%_;VzhHs%^335SVM~<6O-E*^c<#WDa(M!QL zxUwfTG@&;Fpu@euZg`0;tC{(HRrR|LZ1l!!zm5AKDj;~sQad?pHSNMTFPjvrOdWES3VeE1w)6^9njT_op~zd-P;#$ zp^A8mYIm$fwRf$>C6;pGjlQobyS<+BOpRLDTAnM1*t(8HQ-%usM#uT>$j5ff$=aDW z&3#9tK-*Ud0i|I=YUy%e0c_g7^B={XpHo(Q9oP-wIqmhAbK4ts&BV8Mq&waL{SF6z z0QVz;Yp)z&)3%ku!lDrKC0KRY3c;@=)U0%)f{s&izH?0tabS0WJBoQG^Y{0ick!3| zjF~M_0`g$Mo4gP`@8Y*7&O(P$2fe`lqCjJo3Pa5G$VG6`GBdrVAFoFt*mQO;fwvL7 zpJ5Wr&N;|wZ#aNF#G@90$d5|)1%+8KU$Bj^YVq=N`TtK<$pZq1cCHqDkZVox%jPVw zj}>ao{mh4rLBmDlU>VkE>k5HNI-9(}&I9ug2b=lMHUup_uo~zog>U$lj+4&}`B93dvT~aCS&mcpSv79LBVw9JJ0R# zy9X^TS*FHA&4z=SN3yTv7HTaYBW7=b);#RYdD*{z zc?~|l0*}urf!7RPGS-)%@6`DnCnx(mv&T*_|MYJA4Ooq~)lNBB<55}gfVjV3)mgX) zmx7Uw+hc($Z{t09;yVOBA-}$0e*im@Xgp4(U8kpo&F`}ln9Q%h zr^FgCk7rHFQ66of-Ld!8;GTfJj`z?THB!1w`x|`LumHBQsPmLpX;;&<{cM~wx5usq z_l$!tfqgIy{Jh@j8g}aN{zVAh$amPbRe}${hwco#3H&Zhn)7!u!GXO9_OBCse0~F6 zK3Ox=!1=qLm~)IHv`uInL*e9#^IQDD$hF*xUnFuyc}e57CE< z;Oom;N`CtHdYGL8CgLU`W-Y85yju!BYiNU=!~Pl6A&l$f3I1kgBNq72B6bZJV>7Us z&o&63!Zp{Y-UCn7gEin>fr$U*6Zns?S5eewSMeS3^f-D)t~=-91#rGoXc)y>75Zb| ze|ZP;(Tm`4Jwn0fdUMXluvQ1IAGCS;*e>z-d=3rKVBf<0BG!VqKL6L?H+bXtU0ch! zU_ESe8IrA1l57c*G@_BDzx*ZX_xX}!RFB&)SR0WoK^#fY4A~O=@7faP8((@$O>|a@2as^%|0XWb$m~fIu<+PAuh*e2FGOPSf%t2!b|%I diff --git a/hardware/addon-protocols/ble/index.html b/hardware/addon-protocols/ble/index.html deleted file mode 100644 index 70f717490..000000000 --- a/hardware/addon-protocols/ble/index.html +++ /dev/null @@ -1,6 +0,0 @@ -Add-On Protocol - BLE | Geotab Developers
Edit on GitHub Ask developers in the Community

Add-On Protocol - BLE

External devices can communicate with the Geotab GO device through the Third-Party Bluetooth Low Energy (BLE) protocol below. The hardware interface will be the IOX-BT.

The IOX-BT is a read-only BLE sensor hub that supports up to 200 in-range beacons and will detect in/out of range for any Bluetooth beacon with a public MAC Address. However, sending any other data points requires the beacon to conform to the below specified Geotab BLE protocol. Rate limit is 1200 logs per 10 minutes. If you exceed the rate limit, the GO device will stop taking data from the IOX.

Because it can only read packets, no handshake is required. Two way communication and device pairing are not possible.

Advertising Packet

OffsetValueDescription
10x02AD length
20x01Flags
30x06-LE General Discoverable Mode-BR/EDR Not Supported
40x06 +Optional LengthAD length
50xFFManufacturer Specific Data
60x0275Geotab’s Company ID
80x00Advertising packet version number
90xXXTx Power Level
100xXXBattery Level
Optional Length(11 to 31)0xXXOptional Information identifier
3 bytesOptional Information data 
 
0xXXOptional Information identifier 
X bytesOptional Information data 

Required Data Types

DescriptionUnit typeRange
Tx Power LevelSint 8Resolution: 1 dBmMin: −100 dBmMax: 20 dBm
Battery LevelUint 8Resolution: 1 %Min: 0%Max: 100%

Optional Information Types

These information types are optional and are not part of the required packet structure. Each entry must be preceded by the corresponding information identifier byte. If multiple information entries are used in the same advertisement packet, they should be arranged in an incrementing order based on their information identifier. The identifiers in the table below are those that are currently defined. Geotab will define new identifiers for any new sensors as required. You must use the IDs as defined by Geotab. If there is undefined data, contact us via the Help Desk and we will define the data and send you the required ID.

Information identifierDescriptionUnit typeLength (bytes)Units
0 to 4Reserved   
5Firmware VersionFP243None
6Accelerometer Event CounterFP243None
7TemperatureFP243Degrees Celsius (°C)
8IlluminanceFP243Lux (lx)
9Relative HumidityFP243Percent (%)
10Barometric PressureFP243Pascals (Pa)
11AltitudeFP243Meters (m)
12Particulate Matter (less than 1 µm)FP243Micrograms per cubic meter (µg/m3)
13Particulate Matter (less than 2.5 µm)FP243Micrograms per cubic meter (µg/m3)
14Particulate Matter (less than 10 µm)FP243Micrograms per cubic meter (µg/m3)
15Nitric OxideFP243Parts per million (ppm)
16Nitrogen DioxideFP243Parts per million (ppm)
17Carbon MonoxideFP243Parts per million (ppm)
18AmmoniaFP243Parts per million (ppm)
19MethaneFP243Parts per million (ppm)
20EthanolFP243Parts per million (ppm)
21HydrogenFP243Parts per million (ppm)
22Carbon DioxideFP243Parts per million (ppm)
23Fuel LevelFP243Percent (%)
24 to 199Reserved(for future data types)FP243 
200 to 229Reserved   
230 to 239Generic Byte (1 to 10)UINT81None
240 to 249Generic Timer (1 to 10)UINT8UINT1612Event CounterUnits Of Time
250 to 253Reserved   
254Wakeup EventUINT81None
255Custom DataUINT8XNone

FP24 (Floating Point 24 bit)

Same as FP32 but the 8 least-significant bits dropped.

SEEEEEEEEFFFFFFFFFFFFFFF
23222120191817161514131211109876543210

[ -2^16, 2^16 ] can be exactly represented

[ -2^17, -2^16 -1 ] or [ 2^16 +1, 2^17 ] rounded to a multiple of 2

[ -2^18, -2^17 -1 ] or [ 2^17 +1 2^18 ] rounded to a multiple of 4

Infinity at: 2^128

FP24 Conversions:

Action 
StoreConvert to FP32FP24 = FP32 » 8
ReadFP32 = FP24 « 8Read as FP32

Note:

For all information types that use the FP24 format, a new log will be generated for any change in the data. For example, a change in temperature from 2°C to 2.000061°C would trigger a new log. Some implementations may only require a reporting resolution of 1°C. If an excessive number of logs are generated, we will disable reporting on BLE data. The onus is on the implementer to choose an appropriate reporting resolution for their data.

Generic Byte

The Generic Byte type can store one byte of data (0 to 255). It could be used to count the number of times a button is pressed. Or simply store the state of a toggle (0 or 1) switch. A new log will be generated on any change of data.

Generic Timer

The Generic Timer allows keeping track of an elapsed time. The Units Of Time are not specifically defined and can be chosen by the implementor. If may make sense to measure some durations in hours, while others may warrant seconds. The Units Of Time may continuously increment. A new log will not be saved until a new event counter value is reported. The Generic Timer can be associated with other data types. For example, you could associate Generic Timer 1 with temperature to indicating the time when a chosen temperature threshold was exceeded.

Wakeup Event

A custom parameter is used to configure the IOX-BT to wakeup periodically to check for any wakeup events from beacons within range. The wakeup duration is 1s every 30s while sleeping. This periodic wakeup can be enabled using the following custom parameter:

<Parameter Description='Enable Periodic Bluetooth Wakeup' Offset='167' Bytes='80' IsEnabled='true'/>
-

The implementor of this protocol should increase the frequency of advertisements sent during an attempted wakeup event. A 100ms advertisement interval that persists for a minimum of 1 minute is recommended.

When sending the wakeup event as part of the advertisement data a value of 0x00 means “no event”. Anything greater than 0 that has not already been reported on will cause the GO to wakeup and report on the beacon advertisements. The event is only used as an indication for reporting the changes in the rest of the advertisement data. The actual contents of the alert event byte will not be sent/reported.

Custom Data

Arbitrary data can be placed in the custom data segment. The data will not be interpreted by MyGeotab, but will be accessible through the API. The onus is on the implementor to extract and interpret the data. The data must be preceded by the length. The length is limited by the amount of data that can fit in the optional information section. The maximum custom data length is 18 bytes. A new log will be generated on any change in the data.

OffsetDescription
1Length
2 to LengthCustom Data

Example:

TypeLengthData       
255812345678

Message Interleaving

Message interleaving is not supported. The data types in the packet must remain consistent between advertisements.

Example Packets

Reporting temperature

OffsetValueDescription
10x02AD length
20x01Flags
30x06-LE General Discoverable Mode-BR/EDR Not Supported
40x0AAD length
50xFFManufacturer Specific Data
60x0275Geotab’s Company ID
80x00Advertising packet version number
90xC6Tx Power Level (-58dBm)
100x64Battery Level (100%)
110x07Temperature
120x000x412000 FP24 = 10°C
130x20 
140x41 

Reporting a timer

OffsetValueDescription
10x02AD length
20x01Flags
30x06-LE General Discoverable Mode-BR/EDR Not Supported
40x0AAD length
50xFFManufacturer Specific Data
60x0275Geotab’s Company ID
80x00Advertising packet version number
90xC6Tx Power Level (-58dBm)
100x64Battery Level (100%)
110xF1Generic Timer 2
120x03Event
130xF40x01F4 = 500 minutes
140x01 

Reporting temperature and a timer

OffsetValueDescription
10x02AD length
20x01Flags
30x06-LE General Discoverable Mode-BR/EDR Not Supported
40x0EAD length
50xFFManufacturer Specific Data
60x0275Geotab’s Company ID
80x00Advertising packet version number
90xC6Tx Power Level (-58dBm)
100x64Battery Level (100%)
110x07Temperature
120x000x412000 FP24 = 10°C
130x20 
140x41 
150xF1Generic Timer 2
160x03Event
170xF40x01F4 = 500 minutes
180x01 

Reporting custom data

OffsetValueDescription
10x02AD length
20x01Flags
30x06-LE General Discoverable Mode-BR/EDR Not Supported
40x0FAD length
50xFFManufacturer Specific Data
60x0275Geotab’s Company ID
80x00Advertising packet version number
90xC6Tx Power Level (-58dBm)
100x64Battery Level (100%)
110xFFCustom Data
120x07Length
130x42Custom data”Beacon1” in ASCII
140x65 
150x61 
160x63 
170x6F 
180x6E 
190x31 

Reporting temperature + counter + timer + custom data

OffsetValueDescription
10x02AD length
20x01Flags
30x06-LE General Discoverable Mode-BR/EDR Not Supported
40x19AD length
50xFFManufacturer Specific Data
60x0275Geotab’s Company ID
80x00Advertising packet version number
90xC6Tx Power Level (-58dBm)
100x64Battery Level (100%)
110x07Temperature
120x000x412000 FP24 = 10°C
130x20 
140x41 
150xE6Generic Counter 1
160x08Count
170xF1Generic Timer 2
180x03Event
190xF40x01F4 = 500 minutes
200x01 
210xFFCustom Data
220x07Length
230x42Custom data”Beacon1” in ASCII
240x65 
250x61 
260x63 
270x6F 
280x6E 
290x31 
\ No newline at end of file diff --git a/hardware/addon-protocols/ble/index.html.gz b/hardware/addon-protocols/ble/index.html.gz deleted file mode 100644 index 0218ab6136402194578a49027f03bae70d27a3f4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7030 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 diff --git a/hardware/addon-protocols/can/index.html b/hardware/addon-protocols/can/index.html deleted file mode 100644 index 17c402b7e..000000000 --- a/hardware/addon-protocols/can/index.html +++ /dev/null @@ -1,28 +0,0 @@ -Add-On Protocol - CAN | Geotab Developers
Edit on GitHub Ask developers in the Community

Add-On Protocol - CAN

External devices can communicate with the Geotab GO device through the revised Third-Party Data CAN protocol. The hardware interface will be the IOX-CAN. Two-way communication is supported, allowing a MyGeotab API call to produce messages on the connected CAN network using the IOX-CAN. An initial handshake is required before messages can be produced using the IOX-CAN.

The GO device will start processing third-party data if it is in the correct format. Once processed, the third-party data will be saved and sent to MyGeotab as Status Data.

Integration Process

The following process should be followed when attempting to integrate a third-party device with the GO device using our Third-Party Data CAN Protocol:

1 - Request External Device ID

Contact Geotab Solution Engineering team to obtain an External Device ID for your third-party device. This will allow us to uniquely identify your device when it connects to a GO device. Thereafter, any connection established by that type of external device will be recorded as Status Data in MyGeotab under the naming format "[External device name] device connected".

2 - Request Status Data IDs

There is an extensively defined Status Data ID list which can be found at MyGeotab Diagnostics. Specifics regarding Status Data ID implementations can be found on the README sheet.

3 - Implement the Third-Party CAN Protocol

Implement the Third-Party CAN Protocol in the external device as detailed below. The CAN speed to be used will be 250K or 500K and the external device should have its CAN transceiver set to normal mode. The IOX CAN will auto-baud between 250K and 500K.

CAN ID

The CAN ID will be an extended frame message (29-bit) and will be broken down into 4 bytes with the most significant byte (MSB) (byte 1) containing 5 bits to make up the 29-bit ID header. A breakdown of the CAN ID is shown below:

ByteDescriptionValue
Byte 1MSB, 5 bits0
Byte 2 and 3Geotab's Parameter Group Number (PGN)0x0FDB
Byte 4Message TypeVaried

Data Length (DLC)

Indicates how many bytes of data are being sent (up to a maximum of 8).

Data

All values must be sent with the least significant byte first.

Each piece of information related to the third-party device must be sent individually and have its own Status Data ID as part of the message.

Note: See Appendix A for an example of raw message data.

Handshake

An initial Handshake is required in order for the GO device to accept MyGeotab API calls to produce CAN messages from the IOX-CAN. Ignition must be on for the handshake process.

  1. After powering up, the GO device will enter an external device detection cycle. The GO device will listen for a Msg Type 0x81 from the external device. This message is used to indicate that an external device is present.
    • The external device must send this message once per second.
  2. The GO device will reply with a Msg Type 0x02 to acknowledge it has received the external device ID. After detecting this response, the external device may stop broadcasting Msg Type 0x81.
  3. The MyAdmin API can now be used to produce CAN messages from the IOX-CAN as detailed in Messages from MyGeotab

Messages from GO device

Msg Type 0x02: Third-Party Data Acknowledge

Issued by the GO device on receipt of Third-Party Data from the External Device.

CAN ID BreakdownValue
Byte 10x00
Byte 2 (Geotab PGN)0x0F
Byte 3 (Geotab PGN)0xDB
Byte 4 (Message Type)0x02
Data Length 
DLC1
Data Breakdown 
Data 1The Message Type acknowledged

Messages from External Device

Msg Type 0x81: Third-Party Device ID

Issued by the external device on power-up every second until the Acknowledge message (Msg Type 0x02) is received.

CAN ID BreakdownValue
Byte 10x00
Byte 2 (Geotab PGN)0x0F
Byte 3 (Geotab PGN)0xDB
Byte 4 (Message Type)0x81
Data LengthValue
DLC2
Data BreakdownValue
Data 1–2Device ID (assigned by Geotab)
Reply: Third-Party Device ID Ack 

Msg Type 0x80: Third-Party Data as Status Data

Issued by the external device whenever it wants Third-Party Data saved on the GO device.

CAN ID BreakdownValue
Byte 10x00
Byte 2 (Geotab PGN)0x0F
Byte 3 (Geotab PGN)0xDB
Byte 4 (Message Type)0x80
Data LengthValue
DLC6
Data BreakdownValue
Byte 1–2Status Data ID
Byte 3–6Status Data
Reply: Third-Party Data Ack (Msg Type 0x02) 

Msg Type 0x82: Free Format Third-Party Data

Currently not implemented.

Msg Type 0x87: Third-Party Data as Priority Status Data

Priority Status Data will follow an expedited processing workflow on the GoDevice but will otherwise be treated the same as the 0x80 Status Data message. It will also be logged using an Iridium modem connection if available.

CAN ID BreakdownValue
Byte 10x00
Byte 2 (Geotab PGN)0x0F
Byte 3 (Geotab PGN)0xDB
Byte 4 (Message Type)0x87
Data LengthValue
DLC6
Data BreakdownValue
Byte 1–2Status Data ID
Byte 3–6Status Data
Reply: Third-Party Data Ack (Msg Type 0x02) 

Messages from MyGeotab

A handshake must be completed before this functionality will work. To send messages from MyGeotab to the external device, please download the source code of the Starter Kit sample, and replace the Sample API with the following script. The alternative is paste the script in the Runner.

    api.call("Add", {
-                "typeName": "TextMessage",
-                "entity": {
-                  "isDirectionToVehicle": true,
-                  "activeFrom": "1986-01-01T00:00:00.000Z",
-                  "activeTo": "2050-01-01T00:00:00.000Z",
-                  "messageContent": {
-                    "contentType": "CAN",  
-                    "channel": 1,                   //Taken from Get<IoxAddOn> call
-                    "arbitrationId":  217055107,    //Fixed value do not change
-                    "isAcknowledgeRequired": true,
-                    "extendedFrameFlag": true,
-                    "data": base64_encoded_byte     //Replace with your data encoded in base64
-                  },
-                  "device": {
-                    "id": device.id                 //Replace with device id of interest
-                  }
-                }
-              }, function(result) {
-                  console.log("Done: ", result);
-              }, function(e) {
-                  console.error("Failed:", e);
-              });
-

Appendix

Appendix A: Raw Message Data Example for IOX-CAN

Third-Party Device ID from External Device (4208 is a test Device ID).

(Device ID: 4208 = 0x1070)

CAN ID: 0x000FDB81

DLC: 02

Data: 0x70, 0x10

Third-Party Device ID Acknowledge from GO device

CAN ID: 0x000FDB02

DLC: 01

Data: 0x81

Third-Party Data from External Device

(Status Data ID: 9999 = 0x270F, Data Value: 230 = 0x000000E6)

CAN ID: 0x000FDB80

DLC: 06

Data: 0x0F, 0x27, 0xE6, 0x00, 0x00, 0x00

Third-Party Data Acknowledge from GO device

CAN ID: 0x000FDB02

DLC: 01

Data: 0x80

\ No newline at end of file diff --git a/hardware/addon-protocols/can/index.html.gz b/hardware/addon-protocols/can/index.html.gz deleted file mode 100644 index 96942c4e736f05aae3de9f68431cc4c60be24d90..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6397 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 L?6ZN50$Tt8?bsw^ diff --git a/hardware/addon-protocols/rs232-usb/index.html b/hardware/addon-protocols/rs232-usb/index.html deleted file mode 100644 index ba4cfc408..000000000 --- a/hardware/addon-protocols/rs232-usb/index.html +++ /dev/null @@ -1,92 +0,0 @@ -Add-On Protocol - RS232 & USB | Geotab Developers
Edit on GitHub Ask developers in the Community

Add-On Protocol - RS232 & USB

External devices can communicate with the Geotab GO device through the Third-Party RS232 and USB protocol below. Two-way communication is supported, allowing a MyGeotab API call to produce messages from the IOX device to reach the external device. The hardware interface will be one of the following:

Special Requirements

Enabling IOX-USB Data Transfer

To enable third-party data communication on the IOX-USB, apply the following custom parameter to the GO device through MyGeotab.

<GoParameters><Parameter Description="Enable USB Data" Offset="164" Bytes="02"/></GoParameters>
-

* Note - The GO device will automatically upgrade to the ProPlus rate plan once third-party data transfer begins.

IOX-USB Communication Consideration

The IOX-USB operates as a USB 2.0 full-speed host. The maximum data transfer rate is 12 Mbit/s. The IOX-USB can use two methods to enumerate a USB device:

  1. The Android Open Accessory protocol (AOA). This sample project can be used as a framework.
  2. USB-CDC (Communications Device Class)

Powering a device using the IOX-RS232 and IOX-USB

Both the IOX-USB and the IOX-RS232 can provide power to an Add-On Device.

  • The IOX-USB can provide 1.5A at 5V as a power output.
  • The IOX-RS232 supports 900mA at 12/24V to the external red (power) and black (ground) wires. However, it is not required to power the Add On device using the IOX-RS232.

Grounding a device

Even if the Hardware Add-On has a separate connection to vehicle power and ground, it is still recommended to connect the Add-On ground to the ground wire of the IOX-RS232 as this will improve signal integrity.

Serial Port Settings For Add-Ons

Geotab recommends that RS232/USB serial ports are programmed in accordance with the following specifications:

  • Baud Rate: 9600 or 115200, Note: the device is equipped with autobaud detection so other standard rates are acceptable
  • Parity: None
  • Stop Bits: 1
  • Flow Control: None

Integration Process

The following process should be followed when integrating a third-party device with the GO device using our Third-Party Data Protocol.

Contact Solutions Engineering

Contact the Geotab Solutions Engineering team with a detailed integration proposal, this should include:

  • A name for the integration
  • The interfacing hardware
  • Data types that will be sent to MyGeotab
  • The required Status Data
  • Direction of data transfer
  • Expected timelines for integrating

The Solutions Engineering team will respond with follow up questions to define the integration, and assign an External device ID, and any Status Data IDs that would be required.

An additional resource is the Hardware Integration Toolkit with integration walkthrough.

Using Status Data IDs

There is an extensively defined Status Data ID list which can be found at MyGeotab Diagnostics. Specifics regarding Status Data ID implementations can be found on the README sheet.

Handshake

An initial Handshake is required in order for the GO device to accept third-party data. Ignition must be on for the handshake process.

  1. After powering up, the GO device will enter an external device detection cycle. The external device will be powered for 72 seconds. In this interval, the GO device will listen for a Handshake Sync from the external device. The Handshake Sync is used to indicate that an external device is present. For implementations using the IOX-RS232, the Handshake Sync is also used to detect baud rate.
    • The external device must send the Handshake Sync message once per second.
    • If a Handshake Sync message is not detected from the external device after 72 seconds, the external device is powered down for 5 seconds, then powered up again to restart the detection cycle.
  2. The GO device will reply to a Handshake Sync with a Handshake Request.
  3. The external device must reply with a Handshake Confirmation message within 2 seconds. If the external device would like an acknowledgment from the GO device that it received the Handshake Confirmation message, the corresponding flag in the Handshake Confirmation message may be set.
  4. After sending the Handshake Confirmation message, the external device can begin to send third-party data as required. For every Third-Party Data Message sent, the GO device will reply with a Data Acknowledge message.
    • If the external device receives no response to a Third-Party Data message, it must restart the handshake process — returning to step 1 above.
  5. The GO device may send a Handshake Request message at any time after the initial handshake. The external device must respond with a Handshake Confirmation message. If the external device does not respond, it must restart the handshake process — returning to step 1 above.

Checksum

Each message will contain a 2-byte Fletcher’s Checksum calculated across all the bytes of the message except the checksum itself. The checksum values are bytes, and as such overflow from 255 (0xFF) to 0 (0x00). The bytes used for the checksum calculation are all the bytes up to the checksum byte, including STX, LEN, TYPE, but not including ETX.

Checksum calculation pseudo code:

byte ChkA = 0;
-byte ChkB = 0;
-// n is the number of bytes in the message
-// up to, but not including, the checksum
-for (i = 0; i < n; i++)
-{
-ChkA = ChkA + MsgBuffer[i];
-ChkB = ChkB + ChkA;
-}
-// ChkA precedes ChkB in the message
-

Data Endianness

All values must be sent using Little Endian Byte Order, meaning the least significant byte first.

Messages from the GO device

Msg Type 0x01: Handshake Request

Issued by GO device on receipt of the Handshake Sync and periodically re-sent to confirm that the external device is still attached.

 BytesPosition
STX (0x02)10
Message Type = 0x0111
Message Body Length = 012
Checksum23
ETX (0x03)15
Reply: Handshake Confirmation (Msg Type 0x81)  

Msg Type 0x02: Third-Party Data Acknowledge

Issued by GO device on receipt of Third-Party Data from the External Device.

 BytesPosition
STX (0x02)10
Message Type = 0x0211
Message Body Length = 012
Checksum23
ETX (0x03)15

Msg Type 0x21: GO Device Data

Issued by GO device every 2 seconds to a connected Enhanced HOS Device (ID: 4141) or periodically when a 0x85 request message is received.

  • An Enhanced HOS Device must ACK this message with a 0x84 message.
  • If the data is requested periodically using the 0x85 message, the ACK is optional.
 BytesPosition
STX (0x02)10
Message Type = 0x2111
Message Body Length >= 52 [1]12
Date / Time [2]43
Latitude47
Longitude411
Road Speed [3]115
RPM216
Odometer [4]418
Status Flags (from LSB):
1st bit: 1 = GPS Valid
2nd bit: 1 = Ignition On
3rd bit: 1 = Engine Bus Activity
4th bit: 1 = Date/Time Valid
5th bit: 1 = Speed From Engine
6th bit: 1 = Odometer From Engine
122
Trip Odometer [4]423
Total Engine Hours427
Trip Duration [5]431
GO Device ID [6]435
Driver ID [7]439
GO Device Serial Number1243
Checksum2Length + 3
ETX (0x03)1Length + 5
Reply: Device Data Ack (Msg Type 0x84)  
  1. All implementations of this message must cater for the message length increasing in the future.
  2. “Date/Time” is a ‘seconds’ counter starting from 1st of January 2002.
  3. If Road Speed from the engine is not available, GPS speed is used.
  4. Increase of odometer since the most recent ignition on. If Odometer is not available, GPS device distance is used.
  5. Time passed since the most recent ignition on.
  6. GO Device ID is a legacy field. It will contain invalid values by April 15, 2021.
  7. Driver ID only available when using the IOX-NFC.

Conversions

DataConversionUnits
Engine Road Speed1km/h
Odometer0.1km
RPM0.25RPM
Lat/Long1e-7degrees
Engine Hours0.1h
Trip Duration1s

Msg Type 0x22: Binary Data Response

Issued by the GO device on successful/unsuccessful transmission of Binary Data (via Msg Type 0x86) to the server.

 BytesPosition
STX (0x02)10
Message Type = 0x2211
Message Body Length = 412
Binary data transmission success
0 = transmission failure
1 = transmission success
13
Reserved34
Checksum27
ETX (0x03)19

Msg Type 0x23: Binary Data Packet

Issued by the GO device on receipt of Binary Data from the server destined for the external device. This message format will only be used if the corresponding “Binary Data Packet Wrapping” flag has been set by the external device during the Handshake Confirmation. The payload of the binary data packet message will be the raw bytes as sent from the server.

 BytesPosition
STX (0x02)10
Message Type = 0x2311
Message Body Length = x (0 - 249)12
Binary Datax3
Checksum23+x
ETX (0x03)15+x

Msg Type 0x24: Extended application specific data to external device

Sent by the GO device to the external device. Send data as multi-frame data to iox. Once iox recieved the data, it will foward data to external device. Currently only used for carshare.

 BytesPosition
STX (0x02)10
Message Type = 0x2411
Message Body Length = x (0 - 119)12
Extended_binary_datax3
Checksum23+x
ETX (0x03)15+x

Msg Type 0x25: Extended binary data packet

Issued by the GO device on receipt of Binary Data of 256 bytes or more from the server destined for the external device This message format will only be used if the corresponding “Binary Data Packet Wrapping” flag has been set by the external device during the Handshake Confirmation. The payload of the binary data packet message will be the raw bytes as sent from the server.

 BytesPosition
STX (0x02)10
Message Type = 0x2511
Message Body Length = x (256 - 1023)12
Extended_binary_datax3
Checksum23+x
ETX (0x03)15+x

Msg Type 0x26: Protobuf data packet

Available with add-on protocol version >= 1.2. Issued by the GO device in response to Msg Type 0x8C. Also issued by the GO device to publish information for the topics (defined in Appendix D) subscribed by the third party device. The information includes a payload containing data encoded in the protobuf format.

 BytesPosition
STX (0x02)10
Message Type = 0x2611
Message Body Length = x (1 - 255)12
Data Payload Protobuf (1-255)x3
Checksum23+x
ETX (0x03)15+x

The payload of the protobuf data needs to adhere to protocols understood by the Geotab servers. Please see Appendix D for the payload details.

Msg Type 0x27: Add-On protocol version to external device

Issued by the GO device on receipt of 0x8B.Should be paired with 0x8B. 0x27 is a reply to 0x8B. Sent by the GO to an external device as a reply to the Add-On protocol version request. The protocol version sent includes the Major and Minor version numbers.

 BytesPosition
STX (0x02)10
Message Type = 0x2711
Message Body Length = 412
Protocol major version23
Protocol minor version25
Checksum27
ETX (0x03)19

Messages from External Device

Handshake Sync (Auto-BAUD detect for RS232)

Issued by External Device every second until the Handshake Request is received.

 BytesPosition
Sync Char (0x55)10
Reply: Handshake Request (Msg Type 0x01)  

Msg Type 0x81: Handshake Confirmation

Issued by the External Device when it receives the Handshake Request.

 BytesPosition
STX (0x02)10
Message Type = 0x8111
Message Body Length = 412
External Device ID (assigned by Geotab)23
Flags
1st bit: Handshake Confirmation ACK
2nd bit: Binary Data Packet Wrapping
All other bits:Reserved for future implementation, must be set to 0
25
Checksum27
ETX (0x03)19

Handshake Confirmation ACK:

  • 0: No Ack to Handshake Confirmation message will be sent by the GO device.
  • 1: The Handshake Confirmation is to be ACKed with a Third Party Data Acknowledge message.

Binary Data Packet Wrapping:

  • 0: The passthrough data from the server will be passed to the external device without modification.
  • 1: The passthrough data from the server will be wrapped in a Binary Data Packet message before being sent to the external device.

Msg Type 0x80: Third-Party Data as Status Data

Issued by the external device whenever it requires Third-Party Data to be saved on the GO device as Status Data.

 BytesPosition
STX (0x02)10
Message Type = 0x8011
Message Body Length = 612
Data ID (assigned by Geotab)23
Data45
Checksum29
ETX (0x03)111
Reply: Third-Party Data Ack (Msg Type 0x02)  

Msg Type 0x82: Free Format Third-Party Data

Issued by the external device whenever it wants Third-Party Data to be saved on the GO device in a free format (1 to 27 bytes) that will be saved into MyGeotab as Custom Data. Rate limit is 500 logs per 10 minutes. If you exceed the rate limit, the GO device will stop taking data from the IOX.

 BytesPosition
STX (0x02)10
Message Type = 0x8211
Message Body Length = x (1 to 27)12
Datax3
Checksum23 + x
ETX (0x03)15 + x
Reply: Third-Party Data Ack (Msg Type 0x02)  

Msg Type 0x84: Device Data ACK

Issued by the External Device on receipt of the GO Device Data message.

 BytesPosition
STX (0x02)10
Message Type = 0x8411
Message Body Length = 012
Checksum23
ETX (0x03)15

For the purpose of acknowledging the GO Device Data message when connected as an Enhanced HOS Device:

  • The GO device will keep streaming the GO Device Data messages even if no ACK is received for up to 30 seconds.
  • If no ACK is received in that time frame the GO Device will send an External Device Disconnected record to the server and will wait for a new Handshake Sync request from the External Device.
  • If the ACK message is received within the 30 seconds the counter will be re-initialized.

Msg Type 0x85: Request Device Data Message

This is a request-response message. It can be issued by the External Device whenever it wishes to receive the Device Data Info Message (Msg Type 0x21).

 BytesPosition
STX (0x02)10
Message Type = 0x8511
Message Body Length = 012
Checksum23
ETX (0x03)15
Reply: GO Device Data (Msg Type 0x21)  

Msg Type 0x86: Binary Data Packet

Sent by the external device when sending binary data directly to the server. The contents of the message will be ignored by the GO device and simply sent on to the server for processing. The GO device will respond with the Binary Data Response message indicating whether the data was successfully sent via the modem.

 BytesPosition
STX (0x02)10
Message Type = 0x8611
Message Body Length = x (0 - 250)12
Binary Datax3
Checksum23+x
ETX (0x03)15+x
Reply: Binary Data Response (Msg Type 0x22)  

The payload of the binary data needs to adhere to protocols understood by the Geotab servers. MIME protocol is one these protocols. Please see Appendix C for implementation details.

Msg Type 0x87: Third-Party Data as Priority Status Data

Priority Status Data will follow an expedited processing workflow on the GoDevice but will otherwise be treated the same as the 0x80 Status Data message. It will also be logged using an Iridium modem connection if available.

 BytesPosition
STX (0x02)10
Message Type = 0x8711
Message Body Length = 612
Data ID (assigned by Geotab)23
Data45
Checksum29
ETX (0x03)111
Reply: Third-Party Data Ack (Msg Type 0x02)  

Msg Type 0x88: Extended application specific data from external device

Extended application specific data from external device is sent by the external device to the GO device. Can be used for payloads larger than 1 byte. There must be an associated service running on the GO that is looking for these messages. Currently only used for carshare.

 BytesPosition     
STX (0x02)10     
Message Type = 0x8811     
Message Body Length = x (1 to 1024)12     
extended_binary_data (message_body) =0123x-1(data content could be from 0 to 0xff)
Checksum23+x     
ETX (0x03)15+x     
Reply: Binary Data Response (Msg Type 0x22)       

Msg Type 0x89: Ping

After handshaking, this message can be issued periodically by the External Device to check that the GO device is active and ready. The GO device will normally reply with the Third-Party Data Ack (Msg Type 0x02). If this reply is not received, the External Device should reset and begin sending the Handshake Sync (0x55).

 BytesPosition
STX (0x02)10
Message Type = 0x8911
Message Body Length = 012
Checksum23
ETX (0x03)15
Reply: Third-Party Data Ack (Msg Type 0x02)  

Msg Type 0x8B: Add-On protocol version request

Sent by the external device when requesting the add on protocol version number. Once the GO receives this request it will reply with 0x27.

 BytesPosition
STX (0x02)10
Message Type = 0x8B11
Message Body Length = 012
Checksum23
ETX (0x03)15
Reply: Third-Party version Ack Reply (Msg Type 0x27)  

Msg Type 0x8C: Protobuf data packet

Available with add-on protocol version >= 1.2. Sent by the external device to subscribe to various topics/information. The GO device will respond with 0x26 ACK. The topics that the third party is interested in are requested in the form of a payload data encoded using protobuf format.

 BytesPosition
STX (0x02)10
Message Type = 0x8C11
Message Body Length = x(1-255)12
Data Payload Protobuf (message_body) = x (1 to 255)x3
Checksum23 + x
ETX (0x03)15 + x
Reply: Protobuf data packet (Msg Type 0x26)  

The payload of the protobuf data needs to adhere to protocols understood by the Geotab servers. Please see Appendix D for the payload details.

Messages from MyGeotab

To send messages from MyGeotab to the external device, please download the source code of the Starter Kit sample, and replace the Sample API with the following script. The alternative is paste the script in the Runner.

    api.call("Add", {
-            "typeName": "TextMessage",
-            "entity": {
-              "user": {
-                "id": user.id               //Replace with user id of interest
-              },
-              "device": {
-                "id": device.id             //Replace with device id of interest
-              },
-              "messageContent": {
-                "contentType": "SerialIox",
-                "channel": 1,               //Taken from Get<IoxAddOn> call
-                "data": base64_encoded_byte //Replace with your data encoded in base64
-              },
-              "isDirectionToVehicle": true
-            }
-          }, function(result) {
-              console.log("Done: ", result);
-          }, function(e) {
-              console.error("Failed:", e);
-          });)
-

To send MIME messages from MyGeotab to the external device, please use the following script instead:

    api.call("Add", {
-    "typeName": "TextMessage",
-    "entity":{
-        "user":{"id":user.id},                    //Replace with user id of interest
-        "device":{"id":device.id},                //Replace with device id of interest
-        "messageContent":{
-            "contentType":"MimeContent",
-            "channelNumber":1,
-            "mimeType":"text",                    //Can be changed to any free format text value
-			      "binaryDataPacketDelay":"00:00:03.0000000", //applies a 
-            //configurable delay of up to 5 seconds in between each sequenced message
-            // of a multimessage MIME payload
-            "data":base64_encoded_byte //Replace with your data encoded in base64
-        },
-        "isDirectionToVehicle":true},
-      }, function(result) {
-          console.log("Done: ", result);
-      }, function(e) {
-          console.error("Failed:", e);
-      });
-

Appendices

Appendix A: Raw Message Data Example for IOX-USB & IOX-RS232

Handshake Sync from External Device
-0x55... 0x55... 0x55
-
-Handshake Request from GO device
-0x02, 0x01, 0x00, 0x03, 0x08, 0x03
-
-Handshake Confirmation from External Device (4208 is a test Device ID)
-(Device ID: 4208 = 0x00001070)
-0x02, 0x81, 0x04, 0x70, 0x10, 0x00, 0x00, 0x07, 0x18, 0x03
-
-Third-Party Data from External Device
-(Status Data ID: 35349 = 0x8A15, Data Value: 200 = 0x000000C8)
-0x02, 0x80, 0x06, 0x15, 0x8A, 0xC8, 0x00, 0x00, 0x00, 0xEF, 0x8C, 0x03
-
-Third-Party Data Acknowledge from GO device
-0x02, 0x02, 0x00, 0x04, 0x0A, 0x03
-

Appendix B: Sample Message Flow for IOX-USB & IOX-RS232

Appendix C: Using Binary Data Messages to Transfer MIME Data

MIME-type data can be transferred from an external device to the server via the GO device. Readers are encouraged to read the Geotab MIME Data Exchange Example IOX-RS232 to better understand the subsequent protocol. The Message Flow is similar to that outlined in Appendix B, with the following variations:

  1. Third-Party Data Message is instantiated as Binary Data Packet Containing MIME Type Data, whose format is such
  2. Data Acknowledge Message is instantiated as Binary Data Response (0x22)
  3. After the last Binary Data Response, add a Binary Data Packet Containing MIME Type Acknowledge, whose format is such. Once the complete payload of the MIME message is successfully received by MyGeotab, a MIME ACK will be sent back to the GO device.

MIME-type data will be saved as a MIME-type blob on the server. The blob can be accessed through the software SDK as a TextMessage. The SDK can also be used to send MIME-type data from the server to an external device connected to a GO device.

The MIME Type Protocol:

 BytesPosition
MIME type length = x10
MIME type in ASCIIx1
Payload Length = y41 + x
Binary Payloady5 + x

The MIME protocol will be an inner protocol within the binary data packet messages. The MIME data will be broken into 250 byte chunks and sent within binary data packet messages. The first byte within the message will be a sequence counter; all remaining bytes will contain the MIME data.

Binary Data Packets Containing MIME Type Data

This is an example of binary data packets for image data transferred using the MIME type “image/jpeg”. The image size is 83000 bytes.

First packet:

 BytesPosition
STX (0x02)10
Message Type = 0x8611
Message Body Length = 25012
Sequence number = 013
MIME type length = 1014
MIME type (“image/jpeg”)105
Payload Length = 83000415
Binary Payload (the first 234 bytes)23419
Checksum2253
ETX (0x03)1255

Second packet:

 BytesPosition
STX (0x02)10
Message Type = 0x8611
Message Body Length = 25012
Sequence number = 1*13
Binary Payload (the next 249 bytes)2494
Checksum2253
ETX (0x03)1255

* If the sequence number reaches 255 (0xFF) and more packets need to be sent, the sequence number must reset to a value of 1 and continue counting. A sequence number of 0 must only be used for the first packet.

Binary Data Packet Containing MIME Type Acknowledge

 BytesPosition
STX (0x02)10
Message Type = 0x2311
Message Body Length = 9+x12
Sequence Number = 013
MIME type length = 314
MIME type in ASCII = ‘ACK’35
Payload Length = x48
Total Number of Payload Bytes Receivedx12
Checksum212+x
ETX (0x03)114+x

Appendix D: Using protobuf Messages to Communicate by using 0x8C, 0x26

Top

PUB/Sub Protocol Documentation

Introduction

This Proto file defines message payloads for the Third party Message Type 0x8C (Protobuf Data Packet from IOX to GO) and Message Type 0x26 (Protobuf Data Packet from GO to IOX). The protobufs defined here follows a simple pub/sub protocol, where a third party IOX device can subscribe to one of the supported TOPICs (enum Topic) and receive the desired information from the GO. The appropriate master switch needs to be set to use the pub/sub functionality correctly.

The list of some of the (unordered) messages and their use is as mentioned below.

  1. To get a list of all the subscribable topics: The external device needs to send an IoxToGo message with the pub_sub.list_avail_topics field set. The GO device responds with an IoxFromGo message with the pub_sub.topic_info_list field.

  2. To subscribe to a topic: The external device needs to send an IoxToGo message with the pub_sub.sub field set. The Go device responds with an IoxFromGo message with the pub_sub.sub_ack.result field containing ‘SUB_ACK_RESULT_SUCCESS’.

  3. To get a list of subscribed topics: The external device needs to send a IoxToGo message with the pub_sub.msg.list_subs field set. The GO device responds with an IoxFromGo message with the pub_sub.topic_list field.

  4. How the external device gets published information for subscribed topics: When there is an update to a subscribed topic, the GO device sends the update in an IoxFromGo message with the pub_sub.pub field set.

  5. To remove a topic from the subscription: The external device needs to send a IoxToGo message with the pub_sub.msg.unsub field set. The Go device responds with an IoxFromGo message with the pub_sub.sub_ack.result field containing a ‘SUB_ACK_RESULT_SUCCESS’.

  6. To clear the entire subscription list: The external device needs to send a IoxToGo message with the pub_sub.msg.clear_subs field set. The Go device responds with an IoxFromGo message with the pub_sub.clear_subs_ack.result field containing a ‘CLEAR_SUBS_ACK_RESULT_SUCCESS’.

Note: The a ‘PubSubFromGo’ message with the ‘sub_ack’ or the ‘clear_subs_ack’ field can contain the source of error when a request cannot be performed successfully.

Note: The subscription is cleared if the GO or the IOX lost power or if the IOX is disconnected from the GO device.

Note, If the master switch is not enabled: - An IOX will not able to subscribe any topic. - The list of subscribable topics will be empty.

Example Message from IOX to GO:

  • 0x8C is a message type sent from an external device to GO, to either subscribe or to get a list of topics or to get a list of subscribed topics etc.
  • The payload of the 0x8C message is the Pub/Sub message, encoded with Protobuf using nanopb.
  • An example usage of the 0x8C message to subscribe to one of the topics like TOPIC_ACCEL is as described below.
    • 0x8C fields values:
      STX=0x02, MessageId = 0x8C, Data payload: Protobuf encoding for message IoxToGo (detailed below), ETX=0x03
      IoxToGo message = { 
      -    .which_msg = IoxToGo_pub_sub_tag, 
      -    .pub_sub = { .which_msg = PubSubToGo_sub_tag, .sub = { .topic = TOPIC_ACCEL }}
      -};
      -IoxToGo message = { .which_msg = 0x01, .pub_sub = { .which_msg = 0x01, .sub = { .topic = 0x01 }}};
      -
    • So, IoxToGo message, i.e. Data Payload, after Protobuf encoding: {0x0A 0x04 0x0A 0x02 0x08 0x01}
    • This leads to, IoxToGo message length after Protobuf encoding to be 0x06.
    • Checksum calculation from (0x02 0x8C 0x06, 0x0A 0x04 0x0A 0x02 0x08 0x01) = (0xB7 0x28)
    • The result Data Payload = (0x06 0x0A 0x04 0x0A 0x02 0x08 0x01 0xB7 0x28)

    • The final byte stream that the external device would send to GO, in order to subscribe for the TOPIC_ACCEL should be:
      <0x02 0x8C 0x06 0x0A 0x04 0x0A 0x02 0x08 0x01 0xB7 0x28 0x03>

Example Response/Event from GO to IOX:

  • 0x26 is a message type sent from GO to an external device, to either acknowledge a subscription request or other request sent from the external device.
  • An example usage of the 0x26 message is to acknowledge a request to subscribe to a topic such as TOPIC_ACCEL, the message is described as below.
    • The external device will receive a 0x26 message from the GO device such as:
      (0x02 0x26 0x08 0x0A 0x06 0x0A 0x04 0x08 0x01 0x10 0x01 0x68 0xE8 0x03)
    • The extracted IoxFromGo message with Protobuf encoding = (0x0A 0x06 0x0A 0x04 0x08 0x01 0x10 0x01)

    • The IoxFromGo message after decoding =
      {
      -    .which_msg = 0x01, 
      -    .pub_sub = {
      -        .which_msg = 0x01, 
      -        .suback = { .result = 0x01, .topic = 0x01 }
      -    }
      -}
      -
    • The IoxFromGo message can be interpreted as
      { 
      -    .which_msg = IoxFromGo_pub_sub_tag, 
      -    .pub_sub = {
      -        .which_msg = PubSubFromGo_sub_ack_tag, 
      -        .suback = { .result = SubAck_SUB_ACK_RESULT_SUCCESS, .topic = TOPIC_ACCEL }
      -    }
      -} 
      -

Topic

The ID of all the subscribable topics. @exclude Includes status data IDs @exclude The comment is CSV format: 1st field is the type, 2nd field is the unit, 3rd field is the extra information (if any).

NameNumberDescription
TOPIC_UNSPECIFIED0Invalid topic,, (DO NOT USE)
TOPIC_ACCEL1Vec3, m/s^2, To be implemented
TOPIC_GPS2Gps, Lat/Long: degrees. speed: km/h, To be implemented
TOPIC_BATTERY_VOLTAGE3float, Volt, To be implemented
TOPIC_VIN4String, Unitless
TOPIC_GEAR532 bit signed int, Unitless, 1=Reverse. 0=Neutral. 1 to 8:Nth gear. 126=Park. 127=Drive. 129=Intermediate. 130=Unknown.
TOPIC_ENGINE_SPEED632 bit float, RPM
TOPIC_ENGINE_LOAD732 bit float, %
TOPIC_ODOMETER832 bit float, km
TOPIC_ACCEL_PEDAL_PERCENTAGE932 bit float, %
TOPIC_COOLANT_TEMP1032 bit float, degC
TOPIC_DOC_INTAKE_GAS_TEMP1132 bit float, degC
TOPIC_DOC_OUTLET_GAS_TEMP1232 bit float, degC
TOPIC_FUELTANK1_UNITS1332 bit float, Litres
TOPIC_FUELTANK2_UNITS1432 bit float, Litres
TOPIC_FUELTANK1_PERCENT1532 bit float, %
TOPIC_FUELTANK2_PERCENT1632 bit float, %
TOPIC_STATE_OF_CHARGE1732 bit float, %
TOPIC_ENGINE_ROAD_SPEED1832 bit float, km/h
TOPIC_VEHICLE_ACTIVE1932 bit signed int, Unitless, 0=Ignition Off. 1=Ignition On.
TOPIC_DRIVER_SEATBELT2032 bit signed int, Unitless, 0=Buckled. 1=Unbuckled.
TOPIC_LEFT_TURN_SIGNAL2132 bit signed int, Unitless, 0=Off. 1=On
TOPIC_RIGHT_TURN_SIGNAL2232 bit signed int, Unitless, 0=Off. 1=On
TOPIC_EV_CHARGING_STATE2332 bit signed int, Unitless, 0=Not Charging. 1=AC charging. 2=DC charging.
TOPIC_PARK_BRAKE2432 bit signed int, Unitless, 0=Off. 1=On. 2=Error.

ClearSubsAck

GO to IOX: 3rd level of an IoxFromGo message. This is a response to a Clear subscription request.

FieldTypeLabelDescription
resultClearSubsAck.Result This is the result of a Clear subscription request.

Gps

GO to IOX: This structure is used for publishing the output of the GPS.

FieldTypeLabelDescription
latitudefloat Latitude, in degrees (+ve = north, -ve = south)
longitudefloat Longitude, in degrees (+ve = east, -ve = west)
speedfloat Speed, in km/h
headingfloat Heading, in degrees
gps_timegoogle.protobuf.Timestamp Time the GPS data is sampled.

IoxFromGo

GO to IOX: Top level of a pub/sub message. An IoxFromGo message can only contain one PubSubFromGo message.

FieldTypeLabelDescription
pub_subPubSubFromGo  

IoxToGo

IOX to GO: Top level of a pub/sub message. An IoxToGo message can only contain one PubSubToGo message.

FieldTypeLabelDescription
pub_subPubSubToGo  

PubSubFromGo

GO to IOX: 2nd level of an IoxFromGo message. This level identifies the type of information/response.

FieldTypeLabelDescription
sub_ackSubAck Reply to sub and unsub, indicating success/failure
topic_listTopicList Reply to list_subs, containing all subscribed topics
topic_info_listTopicInfoList Reply to list_avail_topics, containing info on all supported topics
pubPublish Data sample published by the GO
clear_subs_ackClearSubsAck Reply to clear_subs, indicating success/failure

PubSubToGo

IOX to GO: 2nd level of an IoxToGo message. This level identifies the type of requests to the subscription.

FieldTypeLabelDescription
subSubscribe Subscribe request: Add a topic to the subscription.
unsubUnsubscribe Unsubscribe request: Remove the topic from the subscription.
list_subsgoogle.protobuf.Empty Subscribed list request: gps_time all subscribed topics.
clear_subsgoogle.protobuf.Empty Clear subscription request: Clear all the subscribed topics from the subscription.
list_avail_topicsgoogle.protobuf.Empty Subscribable list request: Get the list of all subscribable topics.

Publish

GO to IOX: 3nd level of an IoxFromGo message. The Go device sends this message for each subscribed topic when an update to the status of the topic is available.

FieldTypeLabelDescription
timegoogle.protobuf.Timestamp Time since 1970-01-01 00:00:00 UTC.
topicTopic ID of the subscribed topic this message contains.
bool_valuebool  
int_valueint32  
uint_valueuint32  
float_valuefloat  
string_valuestring Used for VIN (17 digits)
vec3_valueVec3 Used for acceleration
gps_valueGps Used for GPS output.

SubAck

GO to IOX: 3nd level of a IoxFromGo message. This structure contains a response to a Subscribe request or an Unsubscribe request.

FieldTypeLabelDescription
resultSubAck.Result The result of a subscribe request or an unsubscribe request.
topicTopic The topic specified in the request.

Subscribe

IOX to GO: 3rd level of an IoxToGo message. Subscribe request: An external device sends this message to subscribe an available topic.

FieldTypeLabelDescription
topicTopic ID of the topic the IOX wishes to subscribe.

TopicInfo

GO to IOX: This is part of the response to the Subscribable list request message. This structure contains the information of one subscribable topics.

FieldTypeLabelDescription
topicTopic  

TopicInfoList

GO to IOX: 3rd level of an IoxFromGo message. This is a response to the Subscribable list request message. This structure contains the information of all subscribable topics.

FieldTypeLabelDescription
topicsTopicInforepeatedarray of topic information, each from a subscribable topic.

TopicList

GO to IOX: 3rd level of an IoxFromGo message. This is a response to the Subscribed list request message. This structure provides the list of all the subscribed topics.

FieldTypeLabelDescription
topicsTopicrepeatedAn array of topics.
array of IDs, each from a subscribed topic.

Unsubscribe

IOX to GO: 3rd level of an IoxToGo message. Unsubscribe request: An external device sends this message to unsubscribe a topic.

FieldTypeLabelDescription
topicTopic ID of a subscribed topic, the IOX wishes to removed.

Vec3

GO to IOX: This structure is used for publishing the output of the accelerometer.

FieldTypeLabelDescription
xfloat Output of the X-axis.
yfloat Output of the Y-axis.
zfloat Output of the Z-axis.

ClearSubsAck.Result

Possible result of a Clear subscription request.

NameNumberDescription
CLEAR_SUBS_ACK_RESULT_UNSPECIFIED0Not used. ClearSubAck will never return a result = zero.
CLEAR_SUBS_ACK_RESULT_SUCCESS1Clear subscription succeeded
CLEAR_SUBS_ACK_RESULT_UNAVAILABLE2Clear subscription failed: The subscription is owned by another IOX.
CLEAR_SUBS_ACK_RESULT_DISABLED3Clear subscription failed: Pub/Sub is not enabled by Master Switch.

SubAck.Result

Possible result returned from a Subscribe request or an Unsubscribe request.

NameNumberDescription
SUB_ACK_RESULT_UNSPECIFIED0Not used; zero is never returned as a Result.
SUB_ACK_RESULT_SUCCESS1Subscription success
SUB_ACK_RESULT_FAILED2Generic subscription failure
SUB_ACK_RESULT_UNKNOWN_TOPIC3Subscribe fails if an unknown topic is specified
SUB_ACK_RESULT_TOPIC_ALREADY_SUBBED4Subscribe fails if the topic has already been subscribed to
SUB_ACK_RESULT_TOPIC_NOT_SUBBED5Unsubscribe fails if the topic has not been subscribed to
SUB_ACK_RESULT_UNAVAILABLE6Unsubscribe fails if the subscription belongs to another IOX.
SUB_ACK_RESULT_DISABLED7IOX Pub/Sub is not enabled by Master Switch.
\ No newline at end of file diff --git a/hardware/addon-protocols/rs232-usb/index.html.gz b/hardware/addon-protocols/rs232-usb/index.html.gz deleted file mode 100644 index cfeed98fd53467e419ee2c612ab719c1a294abbc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16262 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 w0*P@B9Bg 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 GJnLUg^dIOX Add-On Hardware Design Guide | Geotab Developers
Edit on GitHub Ask developers in the Community

IOX Add-On Hardware Design Guide

System Introduction

The GO Device is a small yet extremely powerful telematics measurement device. It offers Geotab IOX® expandability for hardware Add-Ons, which could be provided by Geotab or a third party.

This hardware design guide is suggested reading for any third-party manufacturer who wants to design and build devices that integrate with the GO Device. For more information on the IOX communication protocols, see the IOX Protocol document.

Hardware Structure

The third-party device can get 12 V/24 V power from the GO Device, communicate with the GO Device through the CAN bus, and perform its specific service for end customers.

The GO Device provides a mini-B USB receptacle for connecting IOXs and third-party devices. This USB receptacle does not carry USB signals or power, but does provide the CAN bus and power from the vehicle. Two small plastic guards are placed around this receptacle to prevent misinsertion of a real USB plug. The corresponding connector on an IOX or a third-party device should be a mini-B USB plug.

Multiple IOXs can be connected to the GO Device through a daisy chain configuration. The IOX device itself has a mini-B USB receptacle that can provide CAN bus and power from the vehicle to the next device in the chain.

A mini-B USB receptacle needs to be added to a third-party device if this third-party device is not meant to be the last device in a daisy chain or if more than one third-party device will be used in the chain.

Mini-B USB Plug Input

The diagram and table below provides pin numbering and definitions.

Pin No.DefinitionNote
1NCThis pin must be left unconnected
2CAN− 
3CAN+ 
4GND 
5Power 

Power Design

The GO Device provides overvoltage protection, undervoltage protection, and overcurrent protection for the battery power supply to the IOX interface.

The third-party device must work properly with a power input voltage range between 6 V and 33 V.

A current of up to 3 A could be supplied from the GO Device to be shared by all the IOX devices in the daisy chain. It is suggested that the current consumption be limited to 2.5 A for one third-party device if the device is the only one connected to the GO Device. The maximum current should be calculated during hardware design if more than one devices is intended to be in the daisy chain. The GO Device will cut off power if the current exceeds 3 A for more than 18.6 ms (minimum).

Reverse current to the power line must be prevented, for which a diode on the power input would be sufficient.

The third-party device must enter Sleep Mode when notified by the GO Device or when it fails to communicate with the GO Device after a reset. The current of the device in Sleep Mode should not exceed 2 mA at 12 V. The prefered Sleep Mode current is below 0.4 mA.

CAN Bus Communication

The CAN controller should support CAN 2.0B @ 500 kbps.

The CAN transceiver must be compatible with ISO 11898. SAE J2284 and GMW3122 are optional, but better to have. Suggested parts at the time of writing are Atmel ATA6561, NXP TJA1042TK/3, Microchip MCP2562T and TI TCAN1042.

The CAN transceiver should enter Standby Mode to save power when the device is in Sleep Mode. In Standby Mode, the receiver either remains active or RXD is with Wake-Up Request function (A wake-up request is output to RXD (driven low) for any dominant bus transmissions longer than a filter time.) Correspondingly, the MCU should have ability to be woken up by a CAN message or an external interrupt.

A 120-ohm differential impedance must be implemented for the CAN bus in the design of the PCB. If the third-party device is designed without a USB receptacle, a 120-ohm terminal resistor should be added to the CAN bus, otherwise the CAN bus terminal resistor is not allowed on the board.

Mechanical Design

Below is the mechanical size for a USB mini-B plug of the IOX device. All dimensions are given in mm.

The suggested cable length is between 30 cm to 100 cm, which is based on the multiple devices in the daisy chain. The length of cable may be longer if the system of the application is with fewer devices. The positive and negative wire of the CAN bus need to be a twisted pair with inner shielding around just them, with a minimum twisting ratio is 1 twist every 25.4 mm.

It is suggested that you shield the whole wires and that you short the drain wires of both shields (the shield for whole wires and the shield for the CAN bus) to the metal body of the USB plug.

Below is the mechanical size for a USB mini-B socket of the IOX device. All dimensions are given in mm.

It is suggested that an IOX socket is included where possible so additional IOX devices can be daisy chained.

\ No newline at end of file diff --git a/hardware/developing-an-iox/hardware-design-guide/index.html.gz b/hardware/developing-an-iox/hardware-design-guide/index.html.gz deleted file mode 100644 index ffa59c6646811af8452f46c80828036b52c325a3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5397 zcmV+w73%6AiwFP!000001I1g}cH2gpzMrS4=0#+m5FiPXB4wLQQ?lZA+LG0lyd*g} zIYppImW3@SfE2Ub&-FaPJi$CfKgvAGe1BB|1SNWrrDU9l1Zw%~-Q8<1=pDg6@d~_V+P4Hm+BoaAi{(@&pebNp!`gxIa8TGqLtO7R?Cl4H&HxJTtA6glV5)szVXk`Uq}0caNeJ_x_);s6#c;I z4hEjn>&ynuu+!dm4tfIry1eUm`Ykj6y&6AhnH9>F#t&vi?B_CxAFP@|Q#He;eE8ey z$MB~Sef<9Wk3T)82RAL$;=ylw^E`4@&a-^)(SI-&ixqpybMfGzI~VzdjPTSHOOX3W zk9@E8{&@I!$ul+^1vKP16cKvW;rfElPr;`L>fw*=pPGR69wYor0Gb_yu4WL9!oQ97 z0-p01d@ZuQZ}z?lM|)p~kM{N+zjwJ>$NnhK3V|2m8Q|=dd|Rzn?mS86A!IU-c+BS_ z(=0TYeIo+^l3xemi3ye8(n1;Jl34KX?|buqt~hl$^)x zSs??#erL}_lJhBAmm*A3k*OywGqE)H z%pYkWHI@AYCR@79i+oXE>|!BGJTC-~b}bhsq|((C5&!)9ybdxDhBHvSI$WuklDQyI zOJJc`o+P1SkOh+%GzZl(p0kzA7Yu48lLAB5DF!C95+%$H3O`rwF1-Gtbwe3nvP^^{ zA9fc@@PaKeF{^BPuBW(jz$>P%Oj;_qY%Q!HT7eNhR&;pm$mFW(asn+QXHGI|u^j{! zSy&PF=dVUg`h?T{UGTrUa+19yvIji|mmPOsa9Jh$5b?uY)Vc-d@A4 zvn6CkJWWH$i4>z124BBdNj(0o@pldGDsMb$l+0BALPXq6vU#J~_&d!-=UXv7gMUGb zv6aT7->SYd@F0oNMU>(Fy7m0gY}B+;54c}-Y&IyyK_zMRPqL-ifC|;o3V%0Y%LrmuEj_t)0}!Uvfw^fsudUlq(3IRSaz=w2HQ+P8 zq$U?1h}b4WnI-{LKTb+6%2`HsM^Ufw$&eQ-m$Dv;d9?_IC54lUE`D&r&v>>y`%7hCIR`IoI}h$N`pHpmy#w1FRay;GASM*WB14o>Yb* z&s?>fTSB|-l5{*-Yy(HeWF*cM!RwOokhB+wHSh?3(iq>2&Fo2wLo!94Q#h#;jfr!J zA!C6P&K=@ogMs;Ft9Chd9_*JpA)k^)Y=~yWIXj$O6?nJJ0o$h)jnX;{z?XqZg5gW6 zIwX`pE@}By1{JNnE0`w1vh8*O2qGlj7+G$H*>3v=iTB1QYs-`Kr~kxiz44PGtTBSk zLUHBzNmxX&j*1%+95MqE>qdqundRE4z{eTqMb4OQEyAAH`ZV`jq5LG|OsJ&Dd}snP zRzQ5a;Q5|nr(#tH0gC!#?F5l@;qhK*(e6*di{|9A9i2Oi0607|E$rO1d^RoDAw&GW zNTKU&d}JTL7*?SOM;SZs`H~yM2H4lsionCZt6J~ALXhOK*n;k!ihF=dm|w@4pt8CN zP2nHMhxn-M<_ngjwBMNtEld9N;weFfxj`O@ zPw-E8s=><716w7RCaa_r#bDTq=1wF6M8ugy(l$P!XZ9^U|2bBiCMyKdsWk307C!2M zgq=|a`ycGq7qLfg5peM0ucjf zy(*t?Pp}460RK#cpo+xETn^830-5n1^Z4$^YMkPGqWoj2e5;#jo|dt!X%Gn z{dwoav8qO|C5}~r`=O-K7#6TbzI~P@d4d)1u1FO+;Et{)E#OwBysqaIYDyM&j%W52 zdwqWR+4}TBz&}J9~{0o{;SNc!lbm0be%7>_|Ejh-K+yuVwT7N#b++E zn1^MuB8-lXC#L@+#MVMTjOh8xcekLpQDVwCbZ<#}PCH5e{4Kbhdp5V1`ppF+p%kZF ztSbeP9iOu4ll3Hs-~;ZX9*owUU^(=Bqa>`B`Lc?z4*RdF3F~X#ds(;x_+2W) z9pFqAL3@tZi#NRw>7E{6+!Od6)u BHQ`x>dy}@lrLl!I4PLCzEM+L=)N=RE2{~E zKv|C6h^nEObALU4p})2w>z|Ux)v5Z7RPN7p;B{nt0It#;oAp>%Yto+Mi`%DBA6#Ig zC-p@(TJqVM$g6UH=q^61I>?R`|U(LyL1dv4Mqq1hso8b(PnMd*~kBA6PZHv8Fk!_-C#zC-C)L( z-r+TS=lZaE{3PY@Cc&t2GGuMP=k`3n8nUk2AL47shi<#mW#&^a@;+e&2CB1M}Sl7{~PnnBV}1E`58hM~wq?dwsNeU5xGFp*Lh5cK`?;7TiboaA+R7 z?m?fX4AIvmK>Y)}c!1RD>m@z6yN~9!=g=#f32jW+2O1uY^Juuc-veet3`DXEq#X0< z?h}$|+;`gtj>o7COLPffm*(2F%(vU?0m}{mfy3^BUXjs?AOf@YX%ITRp?)9?fePrR z(ZhW_4f;e>j}cK=zw2t4np^!22DO1vZ{PKZ&ixLxgF3KiAD}xl14Pg&UCTO6m}W5X zxl6JE@@}{1b`IPDRxt>H_nm#nil_yx9iX;<;2!jVotaLp=Bsx=jULfR(j`d(?quK| z9FVB#Q_G%I!*4rUOGrZ;XoxfX0V>-fHKM)$<$TPJ1DP`@?K7GGqp%Um+EwEdt|^D{ z_^tNEOYgh3{x_ezp1hrSrDege1F8H%k&>%#=;}JL3A@ww$gT;U-a*%Xnof=C4=0@t>jB|*TcgtM zl)bPp3}|Z8>!vU^ohD;!R8DOQHl1`j!NCuVQkU)##ISU%5A>@oZ>bo!O1~C4L*bc;NQ7&qcN%BNEjGK^ED~H5nZEACOcv_0 z=P={hj3~2PgdpVK|HI7jDK{svdY`zAa+XTfWUGbr7tBwJFksW_`T(BSB`i$iOy|B# z=e{mjYiI!86+jaA|4kr6uKZN11bqy@i?cu z3ne@{vYi$Z$k~h=(|KN9X%HsK&g<-S8L}o8!M$J@7LCl|XkuheBDOxwT-{*RMn;n< zA*w-T`O3=cTP5Awr^dHUDSmF#k$!nTtU($LszxjLBh8Ub<$hi^)%B;&N5dTEqq;zS z$Pi`Uw7edBV>F1(vLxDOQnSW{T};GVmK1Z-dNetO5WpXj1`LRp%8>mrl?q?Zqz}er zdKSr8V30Y4fkJMSr4GEhq{11pbm<(@o)#2^3QkUG-^|<{qaAKi9mqrJ#c$HAT&5NA z8h{`H^f<}Ek}O;6UXlS173s6)N)t5YW}wBVPOPDIn|n*KprjNlt`cjnDIych5_%6= zVG@LeCLe0g!9Rnssv`!~PBVSq5u__~b5N`249tM3gc{d0EapTQT~5l7fu~8VZKygI zAayo-OEvr4RtB{wje3jA8ub0Ba_5FBr{j|%%q60-kr^rERFr6gDswcu3e9wm!NP7udy%g=I#aiMP!~a$*8K-_ zJcUZFHkJ?VVsQ~oMP{~1$-&R`b7BB!!e zPVR)Vhz#k6s7I+C7NbSCO0r9PgA`D7#N-yTwh2}unW5Gpby{S*F|qh3^vh(4?BP3*du-=qavyh*~BfMhkg-q zni>?^Ph3woZ}_{41xiadw(fT-b~0sK7qw%gyOqeLOUcf*cqFcT?cBSTADgv1LwBD= ziaj8I32GjevVJ9~65W8XJTTzt?qKB@Y+4|KriN`2b9i`3JFhl-t?S!rqb@V#V6v8? zeoT*PiHx0xLZs}3K(7{1Qv@3%az>@L6;7jq5i(~pE<+vJK9M`}87)ESj1sv`V>Sw3 zSCzPqh!s4=J;P{}bhnt2khuvmZMTPsZY{Y+Cg33YJ6oAQc}#YQ zoZzV5TK7{lfOaagB%~{t7C|yk`k4;(dT#rW{hjsOZFV_Lx6)ne&fyG{FC=uJlC!`0 zIgsYv^YfP|a)$>)mz__J*>|2d>}i+r?Bs2?gA$(fJ<*2ALzA?^xe$jTi3MN6jLs{w zCV4AnO*@y7Adasxsncj(_~oc9+2mrf-{0>v+3CA8cJbY$)9!f}|7>-e>_qxm;x8n4 zdvxaY_q_{^%f)kc0fK1U$7r-1vO1PyCiF=Q3AifYYBgAE)V9yq(gpadcx!%BkESe3 zuOq-Xe4z}69V>fON~-$m-BSXl8T*!B3g>moUWs1{aEFyYTVf9;s58+A*PGcs%t?xz z%nFDSkO%rURLr1H53ABONMPQSkx?e8=|&E(cepSPUOzL=fU}tlwSXW1_aXGFmcxf@ zL(9q0>ylk0L{^sR##^nDODqlq$;E3no6}ZJB$g--r%epYiZtH@myXwVl0^j1G1KQd z^m{QTqf`Vu_BZ}U(m6+@Jx&!d%PhHcmd49kqdhx1gj~$??v&Mx2R!0G_zBdvlVgPK z3O(RW+ziQ0NV>aLuUN{wd8_lLcg>r z^OcjTI;644LCxD;cGS(LE)- zy&Xjvnd&C=`#K*FMLdU*Xs2mX6}s0R5z{+udMfvZXarXqK1OAQ_px+?R+)v7qbkOY)|fC;^qqLB&{Ei?JNK zW1OVS3~Wgk&!Bfwgn{vpx@dn-CIT?T1C!|4ux>!mNL`u|jvdp+D9*2$*QeN1$#Q4b zwN47Vq(*hMNJ4{rxyMnBp(vwSn^ApdhJe5+48cM`#-X`rz?r<^I=HRw8gm|&21Y-Q zLP>~hzGUC^je^_hze@Z|k^jG0K!1k?>=cCEK(XlR803cqc^<^4OskpFaatwhk)#R1 zTdB6);Hc@ous+6|fVS*GX7#Q=XGxM*zny5{Js9du0y9Qx%Ov3=GfTodA5R9N4;6kU!1nRm3MWT zEWiD}_e+1da+1lfv+u8tg2CGti}giv9L}FkRVyu~`gclkf;x#zYa6>W#8mFD*;xWB z|6CkD^HR?}Qv7~0{Fgs``@_j1;=cs%gW>6Xn0?=qC(ql1?$y!k#cBTY)AO@|ck!>5 zpfj|OkbDdie67$tnP)JMw#$nPTWmv?I+^(pE}hp%}7*ASKGh#ZrSo)U(x+P=LA7~5kCL`b4Z9q diff --git a/hardware/developing-an-iox/hardware-design-guide_0.png b/hardware/developing-an-iox/hardware-design-guide_0.png deleted file mode 100644 index eddc6c843c07db531b8eecd44983f7e5c9e86e82..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 91378 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 diff --git a/hardware/developing-an-iox/hardware-design-guide_1.png b/hardware/developing-an-iox/hardware-design-guide_1.png deleted file mode 100644 index 6a52052be5b3a636535e751bf46f34018fbc7563..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 26829 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 diff --git a/hardware/developing-an-iox/hardware-design-guide_2.png b/hardware/developing-an-iox/hardware-design-guide_2.png deleted file mode 100644 index 941ca1393fba34e1fe43b8ca77b22242399961ab..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7123 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 Ds2@u@ diff --git a/hardware/developing-an-iox/hardware-design-guide_3.png b/hardware/developing-an-iox/hardware-design-guide_3.png deleted file mode 100644 index 143c6a0b5c3013af433a36f47c5116573a6cba6f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20352 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 diff --git a/hardware/developing-an-iox/hardware-design-guide_4.png b/hardware/developing-an-iox/hardware-design-guide_4.png deleted file mode 100644 index 436556336b1fc77a32891b5669f4238273c3b575..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 30555 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ð+V!+L=R9ltuJn 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 LO$D6X{gD3xc)oVa diff --git a/hardware/developing-an-iox/hardware-design-guide_5.png b/hardware/developing-an-iox/hardware-design-guide_5.png deleted file mode 100644 index 3b39470154b87106d30a6d75aa997788bf8e9b49..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 22231 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 diff --git a/hardware/developing-an-iox/messaging-protocol/index.html b/hardware/developing-an-iox/messaging-protocol/index.html deleted file mode 100644 index b12cfd89a..000000000 --- a/hardware/developing-an-iox/messaging-protocol/index.html +++ /dev/null @@ -1,5 +0,0 @@ -IO Expander Protocol | Geotab Developers
Edit on GitHub Ask developers in the Community

IO Expander Protocol

General Description

The GO device and the Input-Output Expander (IOX) are connected in a dedicated CAN network. All communication is between the GO device and the IOX. IOXs do not talk to each other. Communications can be of the form: GO device to all IOXs, GO device to individual IOX, or individual IOX to GO device. Readers are recommended to find examples from CAN IOX Sample Communication Session as they read through the rest of this page.

Identification

This document describes the IOX Expander Protocol version 1.1.

All messages are supported since IOX Expander Protocol version 1.0 unless stated otherwise.

Interoperability

Third party IOX Add-ons rely on the messages and protocol defined in this document in order to properly communicate with Geotab firmware. Geotab will endeavor to maintain support for the currently-documented messages and protocol. However, from time to time Geotab may make changes to such messages and protocol which could potentially impact third party IOX Add-on implementations. If Geotab makes any such changes, Geotab will use commercially reasonable efforts to provide partners with as much notice of the impending firmware changes as is practicable in the circumstances. Geotab accepts no responsibility or liability for third party IOX Add-ons which fail to function properly, or at all, and any and all damages which arise, directly or indirectly, from such failures.

Geotab recommends that all partners who develop their own IOX Add-ons ensure they have the ability to remotely update their firmware. This can be accomplished by sending an update to the IOX Add-on using the MIME passthrough messages.

Serial Number

Each custom IOX is assigned a 4 byte Serial Number by the integrators, similar to each car having its own VIN. The 2 Most Significant Bytes of the Serial Number shall also be reported in bytes 3 and 4 of the Poll Response (0x02). The 2 Least Significant Bytes are used for differentiating each IOX which exists on the same CAN bus (attached to the same GO device) when the GO device is sending messages targeted for a specific IOX. In other words, the 2 LSB serve as the Address ID, and is included in bits 15 - 0 of the Arbitration ID.

Integrators are free to leverage any mechanism for the Serial Number assignment to each individual IOX, but Geotab recommends following the process outlined below:

  1. Generate a random 4 byte value.
  2. Make sure that the 2 LSBs are not equal to ‘0000’.
  3. Make sure that you do not already have this value stored in your database of existing serial numbers.

Message Structure

Message identification is done with an arbitration ID.

The Arbitration ID Field for IOX Messages:

Bits28 to 2221 to 1615 to 0
ContentsReserved: 0Message: 0–63All IOXs: 0
Individual IOX Address ID: 1–65535

0x1F800000 IO_EXPANDER_RESERVED_MASK

0x007F0000 IO_EXPANDER_COMMAND_MASK

0x0000FFFF IO_EXPANDER_ID_MASK

Address ID

The last 2 bytes of the IOX Serial Number (MSB first) are used as the Address ID. This allows the GO device to identify the source of a message or, when the message is sent from the GO device, to identify the destination IOX.

The GO device sends messages with ID 0x0000 meant for all IOXs, or with an ID between 0x0001 and 0xFFFF when it is targeted at a specific IOX.

IOXs always use their own ID when sending messages. They never send 0x0000. For this reason, IOXs are not produced with Serial Numbers ending in 0x0000.

IOX ID

Each model of IOX is assigned an IOX ID by Geotab, similar to each model of car having a model name. Integrators shall contact Geotab to get an IOX ID assigned. The IOX ID does not need to be included in the IOX Serial Number. Integrator shall report the IOX ID in byte 7 of the Poll Response (0x02).

Acknowledge Process

  1. Each IOX should receive an ACK from the GO device for every message sent. If an ACK is not received within 100 ms, the IOX should repeat the message before sending anything else.
  2. The first poll after reset allows up to 1 second for the acknowledge to come in before repeating.
  3. When a global message (addressed to 0x0000) requiring a response is received by an IOX, the IOX should respond with a delay of up to 70 ms in order to prevent all IOXs from trying to respond at the same time. This delay should be random and the seed for the randomizer must be based on the IOX's Serial Number.

Polling

After powering up, the GO device will poll all IOXs every 7 seconds. Each IOX must respond to this poll by obeying the ACK rules.

Device Removed

If the GO device fails to see an IOX that used to be connected (i.e. the IOX was disconnected), the GO device will remove the IOX from its internal database after 5 attempts (35 seconds) and will make the slot available for a new IOX that can be connected at any time.

New Device

Any IOX that is connected to the GO device must respond to the poll request. The GO device will notice the new IOXs and add them to its internal database.

Undocumented messages

An IOX could receive messages from the GO device that are not documented here. The IOX must be capable of handling this situation by ignoring/discarding the unknown messages.

Waking up the GO Device

Every 1 second, the GO wakes up for 2ms to look for CAN activity on the IOX bus. The IOX can wake up the GO by sending an RX Data (0x0C) message every 1ms until the GO notices the activity and sends the Wakeup (0x04) message to the IOX.

Commands

Reset (0x00)

Directed to all devices. Instructs all devices to reset and behave as if they have just powered up. IOXs should throw out any setup information they might have received, de-assert hardware control lines, and open their relays.

Poll (0x01)

Sent by the GO device in a broadcast fashion to all units to check if they are there.

Poll Response (0x02)

Sent by an IOX when a poll is received. The ACK procedure must be obeyed. The first poll-response after power up (when Byte 0 Bit 0 is 1) contains all 8 bytes. All subsequent poll-responses (when Byte 0 Bit 0 is 0) only contain the first byte.

Payload — Poll Response

Byte #Byte Description
0 - Bit 00 = Have been polled before.
1 = First poll after power up.
0 - Bit 10 = Not Going to Sleep.
1 = Going to Sleep.
0 - Bit 20 = Normal reply.
1 = First poll response after wake up.
0 - Bit 3-7Reserved
 The following Bytes are sent only on first poll-response
1Firmware Version Major
2Firmware Version Minor
3-42 Most significant bytes of Serial Number
5Reset Reason
0 = Power On Reset
1 = Reset Command
2 = New Firmware
All others reserved.
6Reserved
7150 to 199
IOX ID. Please contact Geotab to get one assigned.

When the "Go to Sleep" command is received, and before actually going to sleep, the devices will indicate they are going to sleep through the indicated bit. This bit is cleared on wakeup.

Additional Info (0x03)

Sent by the IOX after an ACK for the first poll is received. This message is not strictly required for operation. However, sending of this message is required if any version information is to be reported, including: Product, Hardware, Firmware Major, Firmware Minor, or Version Control.

Payload — Additional Info

Byte #Byte Description
0-3Software Version Control Number(Ex: SVN Version, Git SHA)
4Product Version
5Reserved
6Error Condition
0 = No error
1 = Memory allocation error
7Hardware Version

Wakeup (0x04)

Wakes up all the IOXs from Sleep Mode. Will be sent by the GO at least twice within a space of 10 ms.

Sleep (0x05)

Causes all IOXs to go into Sleep Mode. Devices will enter Sleep Mode no sooner than 2 seconds, and not more than 20 seconds, after receiving this command. In the meantime, they will report through the poll response that they are going to sleep.

TX Data (0x0B)

Data sent from the GO device to the addressed IOX.

Payload — TX Data

Byte #Byte Description
0-7Data to transmit

RX Data (0x0C)

Data sent from an IOX to the GO device. The GO will reply with an ACK. The 0x0C message series start with a Information Type 1 - Packet Wrapper 0x25 message, and also ends with one.

Payload — RX Data

Byte #Byte Description
0-7Received data

Acknowledge (0x14)

Sent by the GO to indicate that a message is being acknowledged. The ACK to an Rx Data message (0x0C) could include 1 byte of data. This data is used for streaming flow control. When the 80% watermark of the receive buffer has been reached, the flow control bit will tell the IOX to hold off sending for 50ms. The IOX will send the next frame at the end of this period and depending on the flow control bit of the ACK, it will either keep on sending or delay another 50ms, thus repeating the process. The GO device will clear the flow control bit whenever the buffer is below the 20% watermark. If transferring data as part of a wrapped packet exchange the streaming watermark can be ignored. The buffers will not overflow so long as the length limit and the modem result are honored. This byte is only sent when needed.

Payload

Byte #Byte Description
0 - Bit 00 = Clear to send more Rx Data.
1 = Stop sending UART Data. Buffer 80% full, withhold next frame 50 ms.
1 - Bit 1-7Reserved

Application Specific Data (0x1C)

Sent by the GO device after a packet wrapped passthrough message attempt to the server. A ‘rejected’ response from the modem typically means it is not connected. If the message is ‘accepted’ this means it was added to the modem’s TCP socket buffer. It is not a confirmation the message was successfully sent.

Type 0: Modem Transmission Result

Byte #Byte Description
0Log Type
10 = Rejected.
1 = Accepted.

IOX Single Frame Log Data (0x1D)

Sent from the IOX to the GO device when the IOX wants to create a log that can fit into a single CAN frame.

Payload

Byte #Byte Description
0Log Type
1-7Data

Log Type: 0 (GenericDataRecord)

Log Type: 3 (PriorityDataRecord)

DataDescription
1-2Data ID
3Length
4-7Data

Log Type: 1 (externalDeviceConnectionStatus)

DataDescription
1Connected = 1, Disconnected = 0
2-3Data ID
4-5Connection flags

Log Type: 2 (GenericFaultRecord)

DataDescription
1-2Fault code
3Active / Inactive
4Log Once Per Trip / Log Every Fault

IOX Multi-Frame Log Data (0x1E)

Sent from the IOX to the GO device when the IOX wants create a log that cannot fit into a single CAN frame. The first frame contains the Type and Length. All frames start with a Frame Counter that is an incrementing sequence number. The first frame always starts with 0x00.

Payload First Frame

Byte #Byte Description
0Frame Counter (0x00)
1Log Type
2-3Length
4-7Data

Payload Subsequent Frames

Byte #Byte Description
0Frame Counter
1-7Data

Log Types

Parameter TypeDescription
0Third Party Free Format Data. Rate limit is 500 logs per 10 minutes. If you exceed the rate limit, the GO device will stop taking data from the IOX
1Reserved
2Bluetooth Record. Rate limit is 1200 logs per 10 minutes. If you exceed the rate limit, the GO device will stop taking data from the IOX

IOX Request/Status (0x25)

Sent from the IOX to the GO device to inform the GO device of events or status changes.

Payload

Byte #Byte Description
0-1Information Type
2-7Optional bytes that depend on the type

Information Type 0 — Busy

Parameter TypeDescription
0-10x0000
20 = Not busy
1 = Busy

Information Type 1 - Packet Wrapper

Note: A message of this type is to be added before the start of a 0x0C message series, and also after the end of it.

Parameter TypeDescription
0-10x0001
20 = Beginning of data packet
1 = End of data packet

Information Type 2 - Request GO Device Data Message

Parameter TypeDescription
0-10x0002
2Message Version (1 or 2)

Information Type 3 - Connect and Send Records

Parameter TypeDescription
0-10x0003
2Unused

Information Type 4 - Request VIN Message

Parameter TypeDescription
0-10x0004
2Unused

Information Type 12 - Request Identificaiton of Go device, versions

Supported from protocol version 1.1.

Parameter TypeDescription
0-10x000C
2Request info:
0 = GO serial number
1 = GO firmware version
2 = IOX protocol version

GO Status Information (0x26)

Sent from the GO to the IOX to pass information the IOX may need.

Payload

Byte #Byte Description
0-1Information Type
2-7Optional bytes that depend on the type

Information Type 0 - Ignition

Parameter TypeDescription
0-10x0000
20 = Ignition Off
1 = Ignition On

GO Multi-Frame Data (0x27)

Sent from the GO to the IOX when the GO wants to transfer data that can not fit into a single CAN frame. The first frame contains the Type and Length. All frames start with a Frame Counter that is an incrementing sequence number. The first frame always starts with 0x00.

Payload First Frame

Byte #Byte Description
0Frame Counter (0x00)
1Log Type
2-3Length
4-7Data

Payload Subsequent Frames

Byte #Byte Description
0Frame Counter
1-7Data

Log Types

Parameter TypeDescription
0Reserved
1Reserved
2GO device status packet
3VIN
12GO info

Type 12 Go info

Supported from protocol version 1.1.

payload id = 0
ByteByte Description
0=0 for payload is GO serial number.
1-12GO serial number
130
payload id = 1
ByteByte Description
0=1 for payload is GO firmware version number.
1-2GO firmware version: Product
3-4GO firmware version: Major
5-6GO firmware version: Minor
payload id = 2
ByteByte Description
0=2 for payload is IOX protocol version number.
1-2GO firmware version: Major
3-4GO firmware version: Minor
\ No newline at end of file diff --git a/hardware/developing-an-iox/messaging-protocol/index.html.gz b/hardware/developing-an-iox/messaging-protocol/index.html.gz deleted file mode 100644 index 89e1ef8e28ee2faeeac8d9c5f3385a70f289eaec..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8909 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 Add-On data types | Geotab Developers
\ No newline at end of file diff --git a/hardware/hardware-add-on-data-types/index.html.gz b/hardware/hardware-add-on-data-types/index.html.gz deleted file mode 100644 index 686693761c269d562fcef805d00b76ab47fd9de4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3433 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 Ldz%`?e<=U}ODm_M diff --git a/hardware/introduction/index.html b/hardware/introduction/index.html deleted file mode 100644 index 10b6665c7..000000000 --- a/hardware/introduction/index.html +++ /dev/null @@ -1,5 +0,0 @@ -Hardware Development Kit | Geotab Developers
Edit on GitHub Ask developers in the Community

Hardware Development Kit

Introduction

Geotab supports Hardware Add-On integration through the CAN, USB, RS232, and BLE interfaces. The Add-On Protocols section outlines the integration process for all four interfaces. Geotab’s open platform allows for expandability to support the unique data sets of any Hardware Add-On. The GO device can currently report Hardware Add-On Data Types found on MyGeotab Diagnostics.

When using Geotab’s Hardware Add-On protocols, it is important not to send excessive amounts of data to the GO device. This can be assured by only sending data when it is completely necessary and avoiding the sending of repetitive values. The GO device will stop recording data from the Hardware Add-On device if excessive Add-On data is detected. When this condition occurs, the following will appear in the Fault Data for the GO device within MyGeotab: “Status data no longer being saved due to excessive data”, “Third-party data no longer being saved due to excessive data” or “Bluetooth data no longer being saved due to excessive data”. In order to re-enable data logging for the Hardware Add-On, the GO device will need to be completely disconnected from power and then powered back up again.

Integrating with the Input-Output Expander (IOX)

Hardware Add-Ons communicate with the GO device using an IOX corresponding to the aforementioned interfaces, namely the IOX-CAN, IOX-USB, IOX-RS232, IOX-BT and any Custom IOX. The format of data sent through an IOX could vary with the type of IOX, which is shown in the table below. All IOXs support data transfer from Add-On to GO device, while some IOXs also support data transfer from GO device to Add-On.

IOX TypeAdd-On ProtocolStatus DataCustom DataBinary DataData Transfer From GO Device To Add-On
IOX-RS232YYYYY
IOX-USBYYYYY
IOX-CANYYNNY
IOX-BTYYYNN
Custom IOXYYYYY

Hardware Add-On data can be sent via any of these IOX and will be be transmitted to the Geotab server in several formats, namely “Status Data”, “Custom Data”, and “Binary Data”. Data in all three formats may be retrieved via API. However, only Status Data can be queried within MyGeotab by navigating to Engine & Maintenance > Engine & Device… > Measurements. Only with Status Data, it is possible to create meaningful reports or leverage the rules engine via MyGeotab.

Geotab offers a wide range of IOXs, some of which are stand-alone solutions. IOXs such as IOX-CAN, IOX-USB, and IOX-RS232 connect GO devices with Hardware Add-Ons, while others like IOX-GOTALK, etc. are readily available solutions. Check out our full IOX offerings.

Technical Hardware Toolkit

The toolkit provides helpful integration resources and context in addition to the existing documentation and make it easier for partners to get up and running.

We have also moved to the new DIG platform for Custom Telematics Device integrations and included DIG documentation linked from the toolkit as well (while slating the MyAdmin documentation for deprecation).

Please refer to Geotab Integrations: Hardware Technical Toolkit for further details.

Requesting sample hardware

If you would like to request Geotab hardware for testing or develeopment, here are your options:

  • If you are already working with a Geotab reseller or a Geotab employee, please procure hardware with their help.
  • Otherwise, please submit this form.
\ No newline at end of file diff --git a/hardware/introduction/index.html.gz b/hardware/introduction/index.html.gz deleted file mode 100644 index 42b18b61a729afbf75d80aa01bd0b00d78e51315..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5299 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

(Ev}5Y&onEQ~a7icUJi^xS+dg5e(7EBsv;pBEbt zJfDyx?9q=iXp=Q>6rev`2^3k8UNPE=g&!@+%ga4CR;FVX2knO>x}_`2u`-<^2wq!j zQe7;zCmLJ9D-C%NOl9;~fBsf|xl^$(U$2}O z2hH}feQ^*jcHVVA_7+PcoP3(SyV$b(Z(ht-C*ii|Je|r$lup$zr-G1nxyf=aQFj!( z3vR90QRunWZE3vaHKTjv_-rzGX${`I-=F*ZqkU!%4xB;!uIujaHT#{5t=Wr%*u+70Lo=w8k@5h(W`)s89nu-aF+D5W;Kve#4Ep`zcq?yZ z4+!8fYd2ecmfv{M`lXc#5Bd&(Zms-=y!zv-$~7K0u*JpYpMy8DOjBJN{(rf5U>`C+ F004P|cW3|r diff --git a/hardware/samples/python/index.html b/hardware/samples/python/index.html deleted file mode 100644 index 673749c41..000000000 --- a/hardware/samples/python/index.html +++ /dev/null @@ -1,139 +0,0 @@ -Python Code Samples | Geotab Developers

Edit on GitHub Ask developers in the Community

Python Code Samples

All Python sample code was tested using Python 3.5.2 (64-bit) running under Windows 10. You will need to install pySerial to test these samples.

pip install pyserial

Spoof an External Device

Run this python script while connected to a GO device via an IOX-RS232

import serial
-import time
-
-def checksum(message):
- b0 = 0
- b1 = 0
-
- for i in range(0, len(message)):
-  b0 += int(message[i])
-  b1 += b0
- return bytes([b0%256, b1%256])
-
-def createMessage(message):
- message = bytes([0x02]) + message
- check = checksum(message)
- message = message + check + bytes([0x03])
- return message
-
-# look for ttyUSB in Linux (ls /dev/tty\*)
-# with serial.Serial(port="/dev/ttyUSB0", baudrate = 9600, timeout=1) as tester:
-# Use COMx in windows
-# with serial.Serial(port="COM4", baudrate = 9600, timeout = 10) as tester:
-
-# send sync char
- print("sending sync char")
- print("['0x55']")
- tester.write(bytes([0x55]))
- print("waiting for handshake request...")
- readback = tester.read(6)
-
- print([hex(b) for b in readback])
-
- if len(readback) == 6 and readback[1] == 1:
-  print("handshake request received")
-  #send the handshake response
-  deviceID = 4208 #4208 is a test Device ID
-  handshakeResponse = createMessage(bytes([0x81, 4, deviceID%256, (deviceID >> 8)%256, 0, 0]))
-  print("sending handshake response")
-  print([hex(b) for b in handshakeResponse])
-  tester.write(handshakeResponse)
-  time.sleep(1)
-  # send some status data
-  statusDataID = 35349 #status data id of "Test engine measurement / fake data"
-  dataValue = 200 #data value of 10 will show on MyGeotab (because of the conversion factor of 0.1 and offset of -10)
-
-  dataMessage = createMessage(bytes([0x80, 6, statusDataID%256, (statusDataID >> 8)%256, dataValue%256, (dataValue >> 8)%256, 0, 0]))
-
-  print("sending status data")
-  print([hex(b) for b in dataMessage])
-  tester.write(dataMessage)
-  print("waiting for data ACK...")
-  readback = tester.read(6)
-
-  print([hex(b) for b in readback])
-
-  if len(readback) == 6 and readback[1] == 2:
-   print("data ACK received")
- Else:
-  print("invalid response")
-

If the script executes successfully against an awake (ideally with Ignition On) GO device, the output should resemble:

# sending sync char
-['0x55']
-
-# waiting for handshake request…
-['0x2', '0x1', '0x0', '0x3', '0x8', '0x3']
-
-# handshake request received
-# sending handshake response
-['0x2', '0x81', '0x4', '0x70', '0x10', '0x0', '0x0', '0x07', '0x18', '0x3']
-
-# sending status data
-['0x2', '0x80', '0x6', '0x15', '0x8a', '0xc8', '0x0', '0x0', '0x0', '0xef', '0x8c', '0x3']
-
-# waiting for data ACK…
-['0x2', '0x2', '0x0', '0x4', '0xa', '0x3']
-
-# data ACK received
-

Spoof a GO device

Run this Python script to emulate a GO device while your external device is connected via the RS232 port:

import serial
-import time
-
-def checksum(message):
- b0 = 0
- b1 = 0
- for i in range(0, len(message)):
-  b0 += int(message[i])
-  b1 += b0
- return bytes([b0%256, b1%256])
-
-def createMessage(message):
- message = bytes([0x02]) + message
- check = checksum(message)
- message = message + check + bytes([0x03])
- return message
-
-# look for ttyUSB in Linux (ls /dev/tty\*)
-# with serial.Serial(port="/dev/ttyUSB1", baudrate = 9600, timeout = 60) as tester:
-# Use COMx in windows
-# with serial.Serial(port="COM7", baudrate = 9600, timeout = 60) as tester:
-
- # read sync char
- print("waiting for sync char...")
- readback = tester.read(1)
-
- if len(readback) and readback[0] == 0x55:
-  print("sync char received")
-  print([hex(b) for b in readback])
-
-  handshakeRequest = createMessage(bytes([0x1, 0]))
-  print("sending handshake request")
-  print([hex(b) for b in handshakeRequest])
-  tester.write(handshakeRequest)
-
-  print("waiting for handshake response...")
-  readback = tester.read(10)
-  print([hex(b) for b in readback])
-
-  if len(readback) == 10 and readback[1] == 0x81:
-   print("handshake response received")
-
-   while(1):
-    print("waiting for status data...")
-    readback = tester.read(12)
-    print([hex(b) for b in readback])
-
-    if len(readback) == 12 and readback[1] == 0x80:
-     print("status data received")
-     statusDataID = readback[3] + (readback[4] << 8)
-     dataValue = readback[5] + (readback[6] << 8)
-
-     print("status data id: " + str(statusDataID) + ", value: " + str(dataValue))
-     ackMessage = createMessage(bytes([0x2, 0x0]))
-     print("sending ack")
-     print([hex(b) for b in ackMessage])
-     tester.write(ackMessage)
-     break
-
\ No newline at end of file diff --git a/hardware/samples/python/index.html.gz b/hardware/samples/python/index.html.gz deleted file mode 100644 index 1856a68647f73d9c9bf6b41d900d703ab930e9dd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5317 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 XRJW{t^|vg4S?&J;Of0mMNq_(VQ@|=5 diff --git a/humans.txt b/humans.txt deleted file mode 100644 index 72a621f8c..000000000 --- a/humans.txt +++ /dev/null @@ -1,16 +0,0 @@ -# humanstxt.org/ -# The humans responsible & technology colophon - -# TEAM - - Steve Hansen -- -- @ - -# THANKS - - - -# TECHNOLOGY COLOPHON - - HTML5, CSS3, JavaScript - Jekyll, Lanyon/Poole, HTML5 Boilerplate - Yeoman, Jekyllized diff --git a/index.html b/index.html index a675ad6fa..dd13a5e01 100644 --- a/index.html +++ b/index.html @@ -1,5 +1 @@ -Geotab Developers | This site provides tools for integrating with various types of Geotab products.
Ask developers in the Community
Geotab Developers icon

Geotab Developers

This site provides tools for integrating with various types of Geotab products.


Within the content, you will find the information and tools needed to develop software integrations with MyGeotab, Geotab Drive, and MyAdmin. You will also find guidelines and protocols to integrate IOX hardware add-ons with the GO device as well as Custom Telematics Devices using Geotab's Data Intake Gateway (DIG).

For product managers to see the big picture of how to integrate with Geotab, please refer to the Toolkits.

For developers to use this site as a textbook, and learn the SDK bottom-up:

Developer Tools


MyGeotab SDK icon

MyGeotab

The MyGeotab SDK allows developers to access the data in MyGeotab to create powerful and practical applications.

Start
Hardware icon

Hardware

Geotab allows developers to integrate hardware add-ons and non-GO devices (custom telematics devices) to the Geotab platform.

Start
MyAdmin SDK icon

MyAdmin

The MyAdmin SDK provides a set of tools for developers to access and manipulate data for Geotab's MyAdmin system.

Start
\ No newline at end of file +Geotab Developers
\ No newline at end of file diff --git a/index.html.gz b/index.html.gz deleted file mode 100644 index 0051aaa6e0cdc2776f602a29ba035e256ce0d1e7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3660 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 b{|{}U^kRn2wo}j7|0ATu<;8xA7zX}7|B6mN literal 0 HcmV?d00001 diff --git a/manifest.json b/manifest.json new file mode 100644 index 000000000..2f2be64fe --- /dev/null +++ b/manifest.json @@ -0,0 +1,25 @@ +{ + "short_name": "React App", + "name": "Create React App Sample", + "icons": [ + { + "src": "favicon.ico", + "sizes": "64x64 32x32 24x24 16x16", + "type": "image/x-icon" + }, + { + "src": "logo192.png", + "type": "image/png", + "sizes": "192x192" + }, + { + "src": "logo512.png", + "type": "image/png", + "sizes": "512x512" + } + ], + "start_url": ".", + "display": "standalone", + "theme_color": "#000000", + "background_color": "#ffffff" +} diff --git a/myadmin-sdk/MyAdminApiLib.zip b/myadmin-sdk/MyAdminApiLib.zip deleted file mode 100644 index 4fa79a529fe611ee4d0a8eeab38e5c1979ed38e1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 43070 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 W1^@s60096206zc#0O_Xy0000jN|=%W diff --git a/myadmin-sdk/api/reference/index.html b/myadmin-sdk/api/reference/index.html deleted file mode 100644 index de6bb2508..000000000 --- a/myadmin-sdk/api/reference/index.html +++ /dev/null @@ -1,1264 +0,0 @@ -MyAdmin API Reference | Geotab Developers
Ask developers in the Community

MyAdmin API Reference

Giving your CPU something to do...
\ No newline at end of file diff --git a/myadmin-sdk/api/reference/index.html.gz b/myadmin-sdk/api/reference/index.html.gz deleted file mode 100644 index 3f65889612b735f10746c4c4736d6556cfd1cb30..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15939 zcmV-JKD@yniwFP!000001MPild)qd$@b~={2)Cz_8;O!{O{&DsI?m0zc9LT|?QR`! zOOcR7n$?O=jsl z*nN(FN#KOjo!22eQODbTKBuWe+?f+6G~HRIlm1ijZkDEtKK<9yzuNhG|I=Q7KbkL` z)E@_wxKWtWFx{~ZUhhzEN-dEkbmnyD%BR8~v^I$&>!m_2KvZAGRo5o6e@YzCGaiFOuEo173nGX}3FBhHmOdVfVV{ z^^#uD^Vhyyp9SYT_~+mMK0AMgH}+zg%(`DX({yepsS~H2(Vqwj={0%fq_n$cPicDU z&*82|ub{dkmhvL$d|i8X<-}yN<6)B50iDCwLzPv!}A`%x_}gJOaYom z1fP0duoFDm>3B}+96Gl&?!4%H8|-u*2cu5s*@f*Sx1qa}#!CthNHc)bk#xJhzP6`P zG!39lrgJBBrZi?GwjU-mPG8bV6w~fSZ?g6bfPP); zUi+aJ0gWPeiP-fzoPeF4f?cok_VlQ~{p0rAmw(^ttUb%Ao%(4&caLuOytyBey^jav zm`*4Z>QeG=@|H%aGbXQqbV0PBaq@h?Gbju-r6G--G>UVM`YXM>4FYntWpCOWlKU1h zLP&3SqUneM$Z|xPC$s zKcxuj%7-*0jiMkSKy~6nqA66>52xhXPiF)e$d8tg7-re^9xB zA6}A}20JeFu+RrukXcM8S?`^)EcO)OEyuPW4HEBiFu!%MA^LdlEc`(%8)HB;HCe_% zR)Yrwi)8o(n5}Dq?!>oca58O6MitT# zG1zeyivY-t?K=p(#}`Qy?tZcU!eHE_*2t2iO57QpJ9ZRLt)BH4%nKiXqT`Ps5a11G zd293~`}Pqk9)<7;s{_yFPVlv7Da^$ZJS8c& zlk_&A$&AvJvoM3kVOS%FT$x(u9W~Er0y~$nAlQ) zPn;`!Wy2pBK)J#&jy&MzFp^aCCoy&<9E7aK5hzS-R6=kFQU(ktlKRtGx-%qPR~QmT zpB>Ln7J+j+0s%vxUHOSW_5(k?9nE~tqoBeJc;Rr9kw#<`>&*BMMd<*mo zL6ehLe}mGtcAqZ;g%D&C(3`#+1JI|H5pqnEXc@b}37|j%#GhtP+DXWJdaZ(h8g1{sU7|RJx@(=ECuLEGR3`X}Jn&H^DrcZ2qbT!eq*EErh79oS5Z+DV zeA=H=4@Sg^4@%qa5#EzGc>nwK;ze`~gXq}j;xnW!X!{ZQh;PZugS&SN-kF(y4 z&RRRo6?`T+_GOB^yumUk4oskqKisHPo~&hh{^}KGpq7At%v8+XV|ITxIBwvhu?7&r z$;Uo_GSFl{@+diR=8NDVhwO`_pKzFfNIvF~*Eh1HRqMtFI|V9^bt}QE?=Vmh8}uY} zhH(M*y*iD#U?I#z$y@+v>XkPfyPI+4@g2<9kv#WS9A^ShS#gvF)GCd5k&RFw(WHwcQAzEdcmd7 zq{OMXEl~++Bg}}N4}a$lNZvRK=nmd-8zL_Ymq6eZ%%dg&bT;)<99;tjF-**HxkaQ7 z`g5?FzD2?DgVUQOla2>Kq>jfmg=f=0ki7C}faqnjOT zNQPwnd-w6ZOu8~*WJ{dIfm>4v?rxlQ0JOFQg8 zv44QyEZI;d>qENl_Ymq6!v9Lx>%$H5)E*)_TR&`yzx*RZ_2;AYb+QEr4~GmD_$$8J z8<=3Y{*?XYf8?j_?=kKAhW%vg2mD{)Vn2PlZU3;1_1M7w+1Ry3OCi7sPVAkQ6KT z^SlqQ0iv@(HrU%?UsU&pAAZ>5FY&)^-fBMs-wd!p(GY(%-6ea;CGqlQ0_Zq6<=>ZV z&3f8wUB5gJGHAVMx(BAjWtrWaXpv{tHnEKg5Edf^csArS!27e-Oi8No> z1731Xhp5HU%y~aA> zPiVn9qM*5Z3Bfg*5915!rin$MbeGPe0BW@((pFcSvZV>E4i4C&dSV5n`k{}Due)#k zD;&XZLAa6qkDo{q%>e~wYKe#!*|wdH&WxT|NG8e>uDQI+bjMUm^6f@f>*e72)t<%7!ZjVxO*g9;d6ned_4Fw*TQ!B4|W<` zMGg`&RGc8$Rqkt&s8zrP_GLn2Q2d1%E{I^hqs3ugDP>6Ga476=C4QT8nbfBoR zgO~8)`z^>e81p+5kO4zQEEGeJPDu8sI^F;j2dj|0=d|iZGoG z-ZS?UZxH)Q6#ixIB+%poK#)C~DmbG73Qeu^7=5ZqM!IxOm3G2w zO7Q`Ed3)e>EuHwV)@;_Z-<=*E0!WL&9ubQ?Ce-FLWFaw)pix8sDDGk)dK-dctG_Ms zmr&DzVr%h%g!Z+U0gWlNQ<4@4qS6B|B;L&oiPr66uZ2!4oXpn9qn#bnS%w~+fF9>{ z$hY4T{>lFP(cwE#%Z_;gYve@%CL3yMOU$uLmvP9v_ln@UYtJefzLL@Xir8aQroVF; z+U*?qZXBU0mR05S^kYX?XyMITcdb`Rf;}w(;-UW;;$q`~j~+WVG>@Nlt%0@HBlxli zo+)}eJUdJ3((bS)o&y?A;d7sCtl1ZlA95&#{OFCfL$ZP96y@y>HkZ&II^>1ogeWFU z1;yFB?BC3Tfk+R^h7FG$GE#FbVv1^QDIZJt>`w)JfQ4*OYXH@^uTQNW;#VRlrbuWi z+V~w)WV+VA=y6y9$Yx>B8vuMulRFAy$aR~fPD*jcGo?n(#tXR{x>mJmePDBh$snE} zL?9p8s$(RX9LruNjM5v!VO?sxpj5z)xu$+N`iLIAv5v3h1+575IC=HAE@VVU(1gB; zqxlINtp%pZ0wyr@6ev_6lmTicRhYa!p#fV@>RMb6)X5U&=3?m~ekC+WsG-h^5boBe z!b`}{5&89v1L`WM0x0JQF7J_Vz5w%lwc$6X_}5=+!F{c%|5xqXT0RPwLC_!ozUo+# zR)!pS-y`r^#~sZSYC)MQEy^^|V447fb+MAAq(VeOlKlNw(YXf$m>^7;h)J2lpo0$Q z*PxGpCP&1uK)zKHWmJ%f=nZw3DfM~;br6rhr-IPx5#OdZ6K6~$;t<5j#-3XeZ#g@E zIzEKK*$tK+O}ZT+-8yS8a`899Tdu}+c*Wx4;Gz^FdS0;+=fSJURhzH_x*ZT_4Aklu9n`H)hbS#8`Idpr^j1{W zv1_YnYI-zwc9ub3>{tjGe1vL9-MR{PJhPPheC?G^GtOJsWvRr zY3WBHtD3cK#VP!BR5Q=q!g~f z4zzO|!kduH3N3Cgp?BvYnwv|NDhxFgb%fBzeF zg*BKFc}ti!=a8cD1s^F)VgRMdBS?A1)?e9Ndw7?Ty+CU!SvLuK|xIL7hDNjlTB-c ztWm(JP65}DV$m=RLB&g2*(>q*CU&MwJzJ|okIRRGDbz9y)U1aJ3zmtN9IRSd!JsDf zE>}qEM(Rczg&RZ(t<7Dnmqv!6ovW2Xq|;RzY%C&6Hlpp2p*~>)Ei`C5p0|$*ZqYs- zm?UpeA!Z8nyXcC>CI+a7n5W>H_Mx9>C%o#VrnR94-3%pDKW}1!GA0NQSlpvGA0|o( znlu8|Fd+WklcEQ9+$u zG^#D~QV|f#4N%qfhT%nCV;D0oo0HbFY4g`gAIkCNOCY4YB+v}IRX12fNxFc!BM3(r z8R{1g)hkm1K+AXHDXkfLuV-krZPfu-)AC6!Xt&~7XFe=n4NX%|bdGlJ--M=Rpf8SFNKz`GaVP&YvEuVhp=HeSfm1KX4YqW;s@}q z+um3zVCD8Zn9m>L2C;nydqk#9h{B3r*T^pEuVYW=vj{)I%{SaOq)E<%fh87W>%`z! zv<_tzYNrvVsZ*jLay-m18z`uxzp7cakQWdJ)V9}{42NtCAHy@Ta?aT8d5=sS7@zBE z)~YhhF}l4TAx zF1;qSmPYLe3euOgaQ#ZnJX$6cHN{bz@fELZjKzlS%7NCP1BihXS_%H5akVsbG}3#; zK}TN2#EkIf400mYzL*;IMn8(Upxs@LS`4#zB|KnOv`o8feD0C$IumLuZHfz^24=XV zx68#!jDSvpeBh|B$+e$?Fau5j@cV|bSza#4R}^`X?J zJy1f>mrM#c5Yb9nuC};n{lGq&U<|S>13HAaP|sVa=B%QdPobjA#qU;4HabBkZ(G&! zi`?mH{k#b7feEp`34{Rlq;Vt25&=-(Exai$3r8qf;vY90<+9V1t$t8yw4%uZ#F{9YEuWVSnQiP8RoiD3a)X_Wn|W%GdR&J0 zjxW0HR!V+cSmfo&9;yboNLK+~hufXaf^FUzTUx-y%xVv6zTV5C&m1oShiS`cjL0tiK8m>!6_ ze5k1YYxX3HU&DN|%cqt6TTh)Glu4sPQWeJvD9Ut<9!YjeI;{ov!jc+FBhmW{>?;YE{hiR-|e;uL||F6HU^Pdg= zv&nz9taDvCrz`@gZmuY5W{rq-sxg^bGJq>4_^3-jL!emf@BpdAdZSCj351`ItYW_` zCI+e>W%zQx{DQeDuZ&K#$l0km6<$n{S14n1BGjwbLh@O>)78u-Do}Z~o1yY8i*2DQ z1aAiYT4|k@@MViP1OF&_Ll3!e(jwsGg*R;vDzOXp@J7yNeGgerebn$M-?W*fRv$H~ z9huIlO96yOK{(3pYRk-v)1?U_o`U^qzN3K0@9bCeeH=vrby(k&w>7;OldxaS_gqSd zJ58F@pHtlHi>b1E9Y(h>eU$XeA8^oO@s;79Ly`q`eJ9|%Tw}Tb1q=-e9vR=_S4J)q zZ|FCmY8eH$lHq6tgL0n9T4P?sy8UQMNa#v7r7VDeDnUsXEuks*`8FUXldXc4W(#pE zl=!UpEh??Po1EOv#~9#R6~mnRI^imppjZMMnhgi9t{kkaHTBg-tXvv04Prg$i%E z{QC7uERf9`dhB*z=uYMgZ0ApH3Q+o)erZl&MoXr6A8{9L=CEQ|c3p=4zm}AH;%F1) zgp!uZTGuS*{NeMpB_Dr7#lZQD_~bdfenuWY_D%Ck%p~)k`36T*mFyyeVwg1N6C0~o z9{Fsr_%OptmJO8e^`@!1%)y{@VZzojo!But>&r_aJ99F%o-cOW81~BfsvWUgU{`bu zZ2>l`PH|xm<0m$+=+)M#5I(Adz&dI)#y0geJJ)DSeLiR=rD{;CwqoEX=^a~f8MLYv z>q^WoEBB>R+pX+ObvOEB1gtjL=rT7j*4f2*d6gi05=@7>1zH+dU=;PdkQAq0NCBjC zyQ%@GkS3^#usm(D$hOsEEQQ@J>*^jIFQ-##*mqRE0-BNx8WEzVhB)g6A*aJS%X(L~ zRIfX;sCs4Wddb=K64*7z(k(OXWjhbRW>i<;UlSk=FITZYyL>2)zJI+3cc^%?q--ej z4t#;ZJN$6j;N`nImWH(^^}0LZ?li2lBv3n|G*mGgnH)J9x7mCkFR5ut6(|RSd>uCW zWlI=Bf6kRi39z6h$kLkD)bNt_qAX8KIl(L@;>e)Z%%)U9-sbb1qmj|P`$}3eZQXRp zbd@=$qO#{>&yc*(X!N7(-3q0)bY;ei(-NaTJrpfZB`sH_Re`hK(iHDdN=M5yYnCil zTsJ2RNaAZsyeRCX##z_ zv43ZDls=U}$CF#oa^@Cyq`dD~|Hp7%t2NmsR4o}6v%~g+=QPcjtn+K9M>-w0SFcI*Q?BrSW-I2PaU;+uOB1i@e&v{l%<{g}LR_nocQee3C6Ar;{si94NN#(@)F za?&xWuWs?b12ul<-4>-eT{f5BZ0C`h)23Y4=KVKS`vE%MXeM;OCo0-6Mo(C!G`<%_ z*P10S<*$`+VG|HvN2L`+K9Uv;n7~wQnXk??SYCuYrE_#NDZkd6x)u@2XIVrpP`}g# z_CPU_FsG}8`>emnb0^C&H>P&+>tnLs(?I@;c9Bu`L8JP}BG|9oVrA<{EL^d9LNlYZ zq!PY969v!wN!nejnS(M96>ZPX|L~d3}Ct5n(HbKO6Ol>K6{>Wns%% zBjy}iZ`HOAS|$@qu^2_NG4U#C_oE=-yPsMhu}b2cJ6Zrdozwi+=u7_h9B z_b55)IE8Dmc3$zs7Fu(IX3OPx9oR2*+6Ho+A>Xg-bs3QrZqt@?l(5~RtgT%MXp4}h zXwNK3GxdM)m%-GpnO(Mq!TIvDorBV_J0Gx_511P*0}sRfB{Z01K3eRs#R)&TjxCj= zIZ%3Vu-pVsufd6Eg3Eox$3s_=NUT0$fb{)8^VrcaiAC4On4e{wk{OMwJ+m?vRBLF` zF4V@&KosrY#v!Oe)eOj4Em+*`(5m@aXpQ0^W|9w0EuD8egACy+U3sMBYFCptObKT` zWIhbW!wOCXWwRAIrFpGcpTUdIB!yeZgGd_=@#Sqw&(3Q=@+4zZ5^brO(~7BN^tLgV zD?M{e=(kAoei;O)Dtr-%zphjjp2t)XKTM6~v(vO2DQrx@&I2)~@S-Kth73s#!gO=P znBt@n)0a({zG=kt1h~8b(^t)vc|~1+?wA=UYj{@kx@Ipk3DmGm?D!=?m4^zXM?x6k)mEvt*=u2fg7iK(VAKcu+-v?aAg>XlGH z-$N4$2=HW4E5@`ir3ax2uJoTY6^%j9joq~w2A)S}N>J;#ze06+RScD_c!Qq}&sTuY z-8S2(6oUcIJ}a;F76Y_g)Y{y-bw-MOwWhFEQ=>4}l#HPQv|nsL!5VbiPZ8>fuOkjG zqt1e4CV0tuBA$D?l2qAXnF}%kVOG+)J7!S@O@2_Ve0cT29Q` zmA7h^mOsK&$JZzS6bJh=2TFk1M_$6&qrd$5oB#Rex4(XOUM@z&*UQ^|a+K{}DTJz& zOQ_;=Pvb1wt8h`B$qg5pg^88#=+NvhzMkBM zSeCViH+3QT@S3X?WQ@&1Xj|HDIPBH+ZtQjWr}~y342X0FXor&Cfgn#};4&ynJwWf0 z(gi<~j8n%+*#iwhwx(!Bg8oEF7{U04r&CPW*GUuv(KVVOxa(TISb?5Y+>!XGup<#; zZ>a=D%T0pfy=&#(Gsx+n64!G-7`rh^mV?a%qyh z=X)QD+gh5$ZL*xtYZt!d1(L;yFB5a3X7VaSK?4KIeTZC}ZbA+@paHpLxmZMa9C$;? z>Hu#}I&%``48t}RKaFWq#T!01e7`V%mWv2`E^hkl15YU$Hf~nQ4_= znQR+zrw2cAQAx@yz&0G%sfg+`vXkz~}1pJggX4WBmjU-d#U9)&!BMijTt zw^$)*h8A@FbmnIp@>fDsgrtxl#A6Gmc)UQ}MA|08sd?sH;qr48t}*Q|e}(pk19(8j$z zg&V92p7%Zq<#{30+tW>a*i?^MMS5&pZD&7%JoYl=j+b&ig*SF6Z7gwoIahK+dpwEu_Fo-u{}RGQu!&{?2Wjowx3?-Tb)arHvk#Ewg-M)0-3z z7%f($*Cu3M#`dF1FeQD-Ogv*^bB!BJ15=tFq;!sIug1vNBiUB4Htd3*qiS9X3M=N$|j8(3>D1KUR_Of@;l(ay&C%WD6p-r)h3mUHj|YBJ<5sq z((Z80PNPqYMHbxuv6@IU*+cfZ=9-z#WE>3M_@S4d%dERf!hLtwk!r ztrS;R)=h|LbQ!H2;tR^{)(J95axScIBKg&P@Q#6m2Yfk&57`5bAx6*&qcorDqi-)e zEgav1vPpbHtcyHXj_HueA7yWGtkeaAG4mGAp#JJy zIav81iZ0m;ISFOUM7a8N4dXH@D)r1!GB0Q9hnZJ+L2UI|_42S&JRd!5*r5*C&wO;y zAPzDx^eJXiVLMGJ_twTqWg=#kIW3b}bPaRH8I65>R3@Q7H)IQ##!vi&d5wn{?J}`z zk-)Gb0B;$1Y#m*6DY-V;Ir8UJ>;!xXSata7sj*TAA>&o%&J;})>;`OJ%ohupzxsUX z&d3~>4fDD|wL{L<5jJTQ2DkXgo!dc^&k{xg0(1%FhA(zvbEj6N{zB1-w{23kznuQ*YyhctJ>TlOA# zknIj4OXTFb%|G%gdty}3CVu-9-f}AWEvUrKbjm1y#|f?4j_oWkciwT_f)Yq!fQPa*V8utHTo{yz z%%cmteHvlK#c5Tx>jXhprg|aESEg=+EejORL~3*LfH-)F&TVD0HrX`v!!>*EEV^yZ zUaFL$a=WnvzV-TZm^E#EYB!IaS8fLUv_cyQNL`m7zvh;=_p^gM8}X@d8e8YB<23fs zgyUea&zuZ1PnTn{T2GFn09rj8AN)`#V9YZk(tC%>tLn^B2(P{3C=oME^fkm!My0am zeSOyp^XZ0|LT&W;lNg8|8_&8dxX+Yk7-gr?rkO+0!_Rz1cyZ+&%^7A(bVUyEF!@{% z81!MbPH3(53P^>6JKI67*jHjP{yYnl6|qxM@*k9lp|X$It$&tq*h0 zb9q5ltF$m-ra{1TzSHQEhONxrr9PZ5FK0fU+(xf49GsJ0cmm4a;5wY1q%!-jxGlR+k*VyPu%UIa~@q;4^+te)mQ zr{eRy*qb?#pags}J3;OTdDa}~>7avRMGJ-F&-RimBqMWlop zRa7=#tUzo$?htf4v~5)~mV_*ech?{W^%9Ad@PhrQaUDzn9q=*}{k;q_&{jNVo<~Jb zXg+(;Zv1ZnDBBALiez0fowKzjRbjovwkii1mFk~a3h{6|7|zFj;HS4ev@$JVszA{; z4=O%W{MatMOjTpXs@#sXiq)xL0KKQVNZ7oskERU?qOu}1VZe8Q;W)!15{9M`DlfBE za;={in4u<3X<4DP4-I6>H|s{tUsU3lLt)J#YjT7_`XdW~p@d(|>L(rw4cNBQx@8w2 zc9l`(cZE-z)|u){sDmv@SlIu^NcYWVBk}6ie3}Zo^C}Nst!1;EwKqs-yzVBU@p?!p ztt08ZBsE?QQ>9u<$K6K&RCl2Fc-bDv1_6$~(wb0jhVj%d4i!yS=Z9UAE1Qv991S6_ zisN}v%9#$0kXOaMJOhF6&I-_U2axD!<1N zy-Kb~B6i#gUIEhe+^_6QJ@ffcGLq_mVZ&+p;@;_%25aYV(9!_{Xo%~lVx1L8SMCC> z9aJ7w*kTn&j#~c7c3eXW zwd)tzk&iH+u}}_+xlV)5Qr-Gh8Yq2c-DnuzbOUv}4fiSzn$mG`Vx^&)*Q3ai)jGBS z`THvnl@eMj5v)zPCb5Dv`Uz!^BGS==UN;7eDTXFuwlgNCIzmp#QNeG2c+R78!`yAG z%o_De*(X}{d9K?}TfW+j6=+|HQnEfA{tro(F|}=*@S%&3og5`WN=YYXO;m{ZPIbWD`(p3glEve7+vd9<}w0vnsYq2r2sVQ2I+pDO+NZA@SSnzI6 z+jbh=J-qYfWm1aoqYxLQ;^TJXpr8T_23<>&M+t}`khOrV*=RvnOiOFc;>-4}mG4!X zui8#`n8@U6K{LCbsdPMND}dSN##Oq)U~n1{$91D6FddF}(G`t@$U$XTaDHo8Y`DZ@ z+t&H9Z6IXurtNt7Af&+7{so!jf-ha%i74_ajo|unRzHMGZ}b8(-5KHvXJp8${Q(>g zx%usm>|ItgS2?)v51JS0w4w)_!MsJC|CYK z7V^sRr}yt)AOG^{_z>BJ9c`6l-1FJmJ&kc$j2)z;>7FJFp<&~pv0KCFlk)Y>kLYet zjNX`gAk_74>B?jXp2%6$2@FXP2^tr7TKCAfMHDHAtvG{39P^tO=r#`BRJ=!JDEl&m z4|OYnx~*X-IuzG1bId{|q3~AhYUpUHQJ%`qsQMx&@F*kXnmENY16ot1I*nd}w2|yx zPWu`dvdB_W69;C{q4T>=+RdVLCX;F+g}9B#3ENd zy?z

{vtSCF|eAKX?b^2XgLM>-M@uu6-|^!99GKQGYs1`MneSPM`aU?(nS}yU$r< zJa5N3dSXA>CL0d?#Ty2i@P{9t%(m=}?cyi+-`;-r)ZV_TeCxv(GW-#~z1x77rF{7H z-IE{j%U-(*-pQ7qXrxZh7V!Yg#Cd_e*jBi0XozWX2 zi0y|22Ng1=u7i7Pk_ZG3i~`f8Go={HMcooeIA|Uwoi(ymKkylXQWryj|CipvTOel$`a?&pi8lHXF_7qa-=AC;U3M$(tyf-;D_H zpFP|j4L3$xTlNndPeJ3oC(~s|y!@Bz{`0wxU~BSVNYybEcUFJDMffDm6XI=U_VMV% zSqAAJ&n+#|7KpJ@&5YAGVcLq`!IWGZ-^Wir)VgQo$E;#@Q*cqHkefqiUi8RCO*qp` zoi~RV)_+a?G^i<3noEseeVXL8V-9*Xhh8S8(6v1BTJ2%8H5FqvZrmf(^j$qwybeKO z49+(NXj5f-R`NJ&$JAYd2)fcmdGAR>A@%YMO%aG?z>LEvx?C=PL|^`-m%TlboM-M4 zm-H5ED~=1nCxMa@YjKUwJB?dJaWTpX0)D(+=FeSRvqgiI5Gu8hvUQvxU&ld=GMj6= z^_*-KEHhjx;rkHY*+r8VjRYag7scm7Xr068S_!RFOxG^D4zq8_d<9qdM;fL$D-_Xc zM33d&j2rU%^^ ztN~cqt0l|j?jrJORLLYP-G9nYA37ab#eicLJJSWvl=`bhIj5;3Ai!ON*#<41p@ zD1t|Xi_nahG7mT=O7e|p)%bKe%07~&2An~3a~@+}L8bllnNxfrL0%7#@h^%VCz+Rt ze(RnNq0aN!W~rC3&>_V4cB~GxgpThXlMZyFY*(qA1$48%%VHbfShwjS?=25q)EoTJu#q;QymC*Q@b6uYPw2u(#Qie-Twxmvjj ze34nvKdU9m&|?L?(~?@LCACromt6bgxYRKRHxkqYk;14FAC9y`!5yMRnJSOPG0ocx z%vwEY;9lCG_%mpo-C|{6(v&hWro{~kUST>RORyArGlDS*=6N_n3#7WQF`M{wc zXicU`4&j(@tJPcNa@||(zBMT!`k~-K8iE&&O~Gz>8#F~^E%g7?twh=p!i>7u_7bODvQ(^IEM#Xa7~UwymnytvVzdMo%61+(N*uX>9Px$+x2F*D0z2 zNqP&?!18zm&QTbJ^qKX$DF-@)bd9lcmF~m%EhnsI*up|r&T4cg20lGu@rX{HX+gg)w>wv z08v(gc+30@Dj>_z5DIPqhWJJE+LZ(52vBQ*&qS((;PU>S5Jx@#5siE-8l!2eZ9YXd ziBM%C-EfMAY7)b}xB8%XP;y<+7QredxsSQIsMqHzn@I$e+yTtI8Y|cm?MtzH zCNi77y|9Hcilb&T3dN&d%BNyg}TF_#TpMy{s?G256S&jU+48xOIEB6{C2y>>b&TI`cL-(EdCc z%OKcIBKVFA8z{M*AjnG*ZNU!`;vr*7ijH-Fn+wn)cYbCG_;|aw@bTxJ6M6wo$l(5v zP967FNe5|8Xnf_n6kp2lSK3YMrgpsx)|qCF2*5N8%KwRu#gAN{RFN_Q!IWsP!I`+c z=Zm0C_0r6PSZdaHY7X3}(W$#R4SEGIwLS=J@@M% z*NtKiH>P(jPgYo9RL-PjW-ecvnHjWY+=GJE#);whmWLEV*QNym!l+IYB9~8f?!Wiz z4mqA>#%h=`tGtr4{GmTC^_Bb^K7GgoIUw7uP)30ti(poOQrDqB9;}A>9g8dgIkR4e zQ$M74mkRZbSCbFwIclOUq_NJc=$KskTgZ(&Wp6?ARUkm!JntY(9tIX~ya$4H<5C_6 z<6+>v@$ulMhXJ*GDB{1R(KL1zGv9R{2;#o8NZpz9Fu?x0jQvEq3_TEn$8_rB(VNT( z*x~XoOz*Ge5C0jIp4^i9ZgEixDEL%@$E?v4(=P)|wA!6u}i13m0?7K?JDcS`K?< zm`PF~GsSwo;`>eO_NRT7Rz^*4F>_RtslUKt%u%_9ucAaA^jAKPrHT{NinN}%2!`(& zP*3#6w~x{Oq?|uk=Ygk(t9e_DXsOFKV&&bZh-?qTUUD0{Y#+nAy0wA5wt8AYA;S(; z!5SMBV@q;>?z$dsi6niOpSWq27I5Z{ADXh`_i~=lxiV#e&;FDTu4`q9hIVLEUT5L= zvuRVGr!O2qGWhO0a)da4_uU|WnT1hTR$yR)Cgf~>NX*|scu!z-&f)Q>x_Pz_6Ol>S zxf9)ieAStG0Yx6kH20;JW&*ZqEk+Jp$zH&al;tW|Thy*!n7J0#l0?&1HDI&FP$F8cC;anC{Jh$9+l4Tu7-mQk#X|!}_cz{xc+zJt&54guow$P4; ze!HcG_ve!+LMJ}qB_N*WX&;-4EN=UoR^|+hHaCUndy$+_Y#>rr@97CrIcETuHAk|9PeT@Ap$Gs&VBTz!x z;y9S!I%u}&C*I}257RjEmW=oVvMU|PPhS1)0c(7*_w;|=r$7CCG@CpB@-Dom@25}W ze{A_j2g4_uH~W*r_vtUMPCh=_IQ`!N_59RS<=3G{J|(z&WExW@t(kX;;tu0Ri`y8( zj`UsWM?&&<*E2t*eRlZj?!J6WzQqL3$i{H}3E^AtB!6*cf*X`vlHWK_qTzgJfK.NET Examples | Geotab Developers

Edit on GitHub Ask developers in the Community

.NET Examples

Here are a few examples to help you get started.

Example 1

The first example is a method that authenticates with the MyAdmin API, retrieves a list of device plans, and looks up the details for a specific device.

async Task Example1()
-{
-   MyAdminInvoker api = new MyAdminInvoker("https://myadminapi.geotab.com/v2/MyAdminApi.ashx");
-
-   Dictionary<string, object> parameters = new Dictionary<string, object>
-   {
-      {"username", "user@geotab.com"},
-      {"password", "<password>"}
-   };
-
-   ApiUser apiUser = await api.InvokeAsync<ApiUser>("Authenticate", parameters);
-    
-   Guid apiKey = apiUser.UserId;
-   Guid sessionId = apiUser.SessionId;
-
-   parameters = new Dictionary<string, object>
-   {
-      {"apiKey", apiKey},
-      {"sessionId", sessionId}
-   };
-    
-   ApiDevicePlan[] devicePlans = await api.InvokeAsync<ApiDevicePlan[]>("GetDevicePlans", parameters);
-
-   Console.WriteLine("Device Plans");
-   Console.WriteLine("Level\tName");
-    
-   foreach (ApiDevicePlan devicePlan in devicePlans)
-   {
-      Console.WriteLine("{0}\t{1}", devicePlan.Level, devicePlan.Name);
-   }
-
-
-   Console.Write("\nDevice Information\n");
-
-
-   parameters = new Dictionary<string, object>
-   {
-      {"apiKey", apiKey},
-      {"sessionId", sessionId},
-      {"serialNo", "G6XXX0XXXD08"}
-   };
-   ApiDeviceInstallResult device = await api.InvokeAsync<ApiDeviceInstallResult>("LookupDevice", parameters);
-
-
-   Console.WriteLine("Firmware Version: {0}", device.FirmwareVersion);
-   Console.WriteLine("Comments: {0}", device.Comments);
-   Console.WriteLine("Last Server Communication: {0}", device.LastServerCommunication.ToString());
-   Console.WriteLine("Possible Issues: {0}", device.PossibleIssues);
-
-
-   // Example Output:
-   // Device Plans
-   // Level    Name
-   // 3        Base Mode
-   // 99       Suspend Mode
-   // 9999     Terminate Mode
-    
-   // Device Information
-   // Firmware Version: 101.2.85
-   // Comments: No Data from Device
-   // Last Server Communication:  2021-07-23 11:20:03 p.m.
-   // Possible Issues: No Data from Device
-
-    
-}
-

Example 2

The second example demonstrates how to query the MyAdmin API to get shipping fee information.

async Task Example2()
-{
-   MyAdminInvoker api = new MyAdminInvoker("https://myadminapi.geotab.com/v2/MyAdminApi.ashx");
-
-   Dictionary<string, object> parameters = new Dictionary<string, object>
-   {
-      {"username", "user@geotab.com"},
-      {"password", "<password>"}
-   };
-
-   ApiUser apiUser = await api.InvokeAsync<ApiUser>("Authenticate", parameters);
-    
-   Guid apiKey = apiUser.UserId;
-   Guid sessionId = apiUser.SessionId;
-
-   parameters = new Dictionary<string, object>
-   {
-      {"apiKey", apiKey},
-      {"sessionId", sessionId},
-      {"forAccount", "<account number>"}
-   };
-   ApiShippingFee[] shippingFees = await api.InvokeAsync<ApiShippingFee[]>("GetShippingFees", parameters);
-    
-}
-
\ No newline at end of file diff --git a/myadmin-sdk/code-samples/dotnet-examples/index.html.gz b/myadmin-sdk/code-samples/dotnet-examples/index.html.gz deleted file mode 100644 index 9b90c3f6aa9a8a1ea6d941dd1a18a4e485033f2d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4491 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 Examples | Geotab Developers
Edit on GitHub Ask developers in the Community

JavaScript Examples

The example below demonstrates a simple JavaScript application that authenticates with the MyAdmin API, then calls GetDevicePlans and LookupDevice.

<html>
-  <body>
-    <h1>Device Plans</h1>
-    <ul id="devicePlanList">
-    </ul>
-    <h1>Device Details</h1>
-    <div>
-      <div id="firmwareElement"></div>
-      <div id="commentsElement"></div>
-      <div id="lastCommElement"></div>
-      <div id="possibleIssuesElement"></div>
-    </div>
-    <script type="text/javascript" src="myAdminApi.js"></script>
-
-
-    <script type="text/javascript">
-      var apiKey,
-        sessionId,
-        logonParams = {
-          username: 'user@geotab.com',
-          password: '<password>'
-      };
-
-
-      myAdminApi().call('Authenticate', logonParams, function(user) {
-        apiKey = user.userId;
-        sessionId = user.sessionId;
-        var deviceIdx,
-            listHtml = '',
-            devicePlanList = document.getElementById('devicePlanList'),
-            devicePlanParams = {
-              apiKey: apiKey,
-              sessionId: sessionId
-            },
-
-
-            lookupDeviceParams = {
-              apiKey: apiKey,
-              sessionId: sessionId,
-              serialNo: 'G6XXX0XXXD08'
-            };
-
-
-        myAdminApi().call('GetDevicePlans', devicePlanParams, function(devicePlans) {
-          for (deviceIdx in devicePlans) {
-            listHtml += '<li>' + devicePlans[deviceIdx].name + '</li>';
-          }
-          devicePlanList.innerHTML = listHtml;
-          myAdminApi().call('LookupDevice', lookupDeviceParams, function(device) {
-
-
-            document.getElementById('firmwareElement').innerText = "Firmware: " + device.firmwareVersion;
-            document.getElementById('commentsElement').innerText = "Comments: " + device.comments;
-            document.getElementById('lastCommElement').innerText = "Last Communication: " + device.lastServerCommunication;
-            document.getElementById('possibleIssuesElement').innerText = "Possible Issues: " + device.possibleIssues;
-          });
-        });
-      }, function(errorMessage, error){
-        var errorIdx, alertMsg = 'Error Message: ' + errorMessage;
-        if (error && error.errors) {
-          alertMsg += '\n\nThe following errors occurred:\n';
-          for (errorIdx in error.errors) {
-            alertMsg += error.errors[errorIdx].name + '\n';
-          }
-        }
-        alert(alertMsg);
-      });
-
-
-    </script>
-  </body>
-</html>
-

The call method uses the following parameters:

  • Method name;
  • Parameters;
  • Success callback; and
  • Error callback (optional).

Note: The Success callback receives the object returned by the API as a parameter. The Reference page provides details about the objects returned by each method. In the example above, the error callback is called if the login fails. The error callback receives two parameters: an error message and an “errors” object that contains an array of individual errors that occurred. In the example above, the devicePlans object — returned by GetDevicePlans — is an array of ApiDevicePlans. The device object, returned by LookupDevice, is an ApiDeviceInstallResult. For more information, see Reference. MyAdmin Api Example

\ No newline at end of file diff --git a/myadmin-sdk/code-samples/javascript-examples/index.html.gz b/myadmin-sdk/code-samples/javascript-examples/index.html.gz deleted file mode 100644 index 3d7b0ff9419133a6f310a87f37488cc876f72d53..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4824 zcmV;}5-05+iwFP!000001MNKRa@)4D|N9g;`Vq%dk@~h|J7Oz4PU;@p^@*J}ZBM5I zkq`x&Bv^u!tfraiL!6)YzFeQ=?gFGlNt7(vPLnfp(^{f{#eVN%0fKz-kC)#aU;lV{ zLWZ&LSugODcrWvG7A0 z^S;N3ErOT@akq4O(q)dzO6ib*`m8(RY#fRxoPMLeJm%Chq)k26 ztpNgQM?8#)jO;E_mIsxJ?T4n2G!UjO{7Ucl-#XvhS66TSy|(AJ29<{0Xm?o4F&gc5 z-DuVZZKG4G?iu?{2LBqgVb@v}J^n^oFDjZsM#*|UNCG?NB6vP7J7rn+%6#|z_-F5z zE`I#+$IrhU;)NL|a`^oHjvM=?jA<0_9DG4Yz{cbyjoI^E(`E5B_u;C{Mj-Big1nJC zA9fE%G$MnpgCHj!^PyKBO|GeX0eX5acYm(_QU+W%0AWWAu%$rIRd&3t_mA$5Lt}bI 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 diff --git a/myadmin-sdk/code-samples/myadminApiExample.png b/myadmin-sdk/code-samples/myadminApiExample.png deleted file mode 100644 index 4137ed8d774f473b0fb84d5b9fac6149e46e3435..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 32739 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 jConcepts | Geotab Developers
Edit on GitHub Ask developers in the Community

Concepts

Requests made to the MyAdmin API are performed using HTTPS. The URL your web application will send its requests to is:

https://myadminapi.geotab.com/v2/MyAdminApi.ashx
-

API request parameters and the results are transported in the lightweight JSON format. The Reference contains a listing of the methods that can be invoked, the parameters they expect, and the results they return. Requests to the API can be invoked using HTTP POST. HTTP POST requests use the JSON-RPC standard. The following sections explain how to construct HTTP POST requests to the MyAdmin API.

HTTP POST Request

When using HTTP POST request to invoke an API method, the following endpoint is used:

https://myadminapi.geotab.com/v2/MyAdminApi.ashx
-

However, instead of encoding the method name and parameters in the query string, it is passed in the HTTP body using the JSON-RPC format. The MyAdmin API supports JSON-RPC version 1.0. The following is a JavaScript example that shows how HTTP POST can be used to invoke a method.

Note
This can be done from any language that has support for HTTP, for example the java.net.HttpUrlConnection class in Java or System.Net.HttpWebRequest in Microsoft .NET.

var request = new XMLHttpRequest();
-request.open("POST", "https://myadminapi.geotab.com/v2/MyAdminApi.ashx", true);
-request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
-request.onreadystatechange = function () {
-   if (request.readyState === 4) {
-      if (request.status === 200) {
-         var json = JSON.parse(request.responseText);
-         if (json.result) {
-            // Work with your result
-            // Simple example just alerts its presence
-            alert("Received Data");
-         }
-      }
-   }
-};
-// Send the HTTP BODY in the JSON-RPC format. ID is ignored
-// and can be set to -1.
-// This example demonstrates authentication using HTTP POST.
-var authenticateParams = {
-   "id" : -1,
-   "method" : "Authenticate",
-   "params" : {
-      "username":"user@geotab.com",
-      "password":"<password>"
-   }
-};
-request.send("JSON-RPC=" + encodeURIComponent(JSON.stringify(authenticateParams)));
-
-
-// Send the HTTP BODY in the JSON-RPC format. ID is ignored
-// and can be set to -1.
-// The method being called is “GetDevicePlans”.
-// The “GetDevicePlans” method’s parameters are then passed in the “params” property
-var apiMethod = {
-   "id" : -1,
-   "method" : "GetDevicePlans",
-   "params" : {
-      "apiKey":"x12345x2-172x-4d04-8xx2-xx9e088c5xxx",
-      "sessionId":"cff4e88b-931b-4363-ae4f-35b5ed169133"
-   }
-};
-request.send("JSON-RPC=" + encodeURIComponent(JSON.stringify(apiMethod)));
-

Results & Errors

A successful call to the server will result in an object with property “result”, like this:

{"result":[
-   {"id":1,"level":1,"validForOrder":true,"name":"Pro Mode"},
-   {"id":3,"level":3,"validForOrder":true,"name":"Base Mode"},
-   {"id":4,"level":99,"validForOrder":false,"name":"Suspend Mode"},
-   {"id":5,"level":9999,"validForOrder":false,"name":"Terminate Mode"}
-]}
-

However, when the call is incorrect or an error is triggered on the server, the error will be returned as an object with property “error”:

{"error":{
-   "name":"JSONRPCError",
-   "message":"'UnknownUser: user@geotab.com'",
-   "errors":[{
-      "name":"WebServerInvokerJSONException",
-      "message":"'UnknownUser: user@geotab.com'"
-   }]
-}
-}
-

The properties of the error object are:

PropertyDescription
nameFor all JSON-RPC errors this is always “JSONRPCError”.
messageThe description of the likely root cause of the error.
errorsAn array of individual errors that were caught. Usually, there is at least one error in this array.

The properties for objects in the “errors” array are:

PropertyDescription
nameThe name of the server exception. For example, “SecurityException”, “NullReferenceException”, etc.
messageThe description associated with the server exception.

Session expiry is an example of a case where it is useful to catch and handle errors.

Working with dates

When exchanging dates as parameters to API methods, you must ensure that they are formatted properly as an ISO 8601 string. In addition, all dates will have to first be converted to UTC in order to ensure timezone information and daylight savings times are accounted for correctly.

Pagination

Version 3 of the API, e.g., /v3/MyAdminApi.ashx, introduces Pagination. Any method returning an array will be paginated, i.e., a limited number of results will be returned, along with other pagination information.

v3 versions of endpoints/methods that do not yet support pagination will return an error when called. Pagination support will be indicated in the method’s docs, for those methods that support it. Please use the v1 version of those endpoints until they can be updated to support pagination. Please contact your account manager to indicate the endpoint for which you would like pagination supported, and they will queue the work with our development team.

Two kinds of pagination are supported:

  • Offset-based pagination. This is the default method.
  • Keyset-based pagination. Supported on some endpoints. This is faster and more effecient than offset-based pagination, and as such is recommended, where available.

Offset-based pagination

This type of pagination breaks the result set into indexed pages, starting at 1. Specify the desired page and results per page by passing them in the request object, like so:

    
-    var apiMethod = {
-       "id" : -1,
-       "method" : "GetDevicePlans",
-       "params" : {
-          "apiKey":"x12345x2-172x-4d04-8xx2-xx9e088c5xxx",
-          "sessionId":"cff4e88b-931b-4363-ae4f-35b5ed169133"
-       },
-       "pagination" : {
-          "page": 2,
-          "perPage": 10
-       }
-    };
-

Default page size is 20. Maximum page size is 100.

For GET requests, use the query parameters page and per_page.

The result object will include pagination information, where total is the total number of records matched by the query:

    {
-    ...
-        "pagination" : {
-           "page" : 2,
-           "perPage" : 10,
-           "total" : 1234
-        }
-    };
-

For GET requests, these values will be returned in the HTTP headers Page, PerPage and Total. Also for GET requests, a Link header will be returned that can be used to access the next page.

Keyset-based pagination

Keyset-pagination allows for more efficient retrieval of pages, and runtime is independent of the size of the collection, in contrast to offset-based pagination. Use keyset pagination, on the methods that support it, like so:

    var apiMethod = {
-       "id" : -1,
-       "method" : "GetDevicePlans",
-       "params" : {
-          "apiKey":"x12345x2-172x-4d04-8xx2-xx9e088c5xxx",
-          "sessionId":"cff4e88b-931b-4363-ae4f-35b5ed169133"
-       },
-       "pagination" : {
-          "type": "keyset",
-          "perPage": 10
-       }
-    };
-

For GET requests, use the query parameter pagination set to keyset to enable keyset pagination (on those methods that support it).

The result object will include keyset pagination information:

    {
-    ...
-        "pagination" : {
-           "perPage" : 10,
-           "nextCursor" : "KFbsifjSKfj9"
-        }
-    };
-

For GET requests, these values will be returned in the HTTP headers PerPage and NextCursor. Also for GET requests, a Link header will be returned that can be used to access the next page.

Note that no information about total records or total pages will be returned for keyset pagination.

To get the next page, pass in the cursor returned in the result object of the previous page:

    var apiMethod = {
-       "id" : -1,
-       "method" : "GetDevicePlans",
-       "params" : {
-          "apiKey":"x12345x2-172x-4d04-8xx2-xx9e088c5xxx",
-          "sessionId":"cff4e88b-931b-4363-ae4f-35b5ed169133"
-       },
-       "pagination" : {
-          "type": "keyset",
-          "perPage": 10,
-          "cursor": "KFbsifjSKfj9"
-       }
-    };
-

For GET requests, use the query parameter cursor.

\ No newline at end of file diff --git a/myadmin-sdk/guides/concepts/index.html.gz b/myadmin-sdk/guides/concepts/index.html.gz deleted file mode 100644 index 0b92b653853a76efea4c4ae588dd661a7394fe44..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6843 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 diff --git a/myadmin-sdk/guides/getting-started/index.html b/myadmin-sdk/guides/getting-started/index.html deleted file mode 100644 index dd4be6f40..000000000 --- a/myadmin-sdk/guides/getting-started/index.html +++ /dev/null @@ -1,5 +0,0 @@ -Getting Started | Geotab Developers
Edit on GitHub Ask developers in the Community

Getting Started

The MyAdmin API is available for Geotab Resellers and Partners. Geotab provides helper libraries for C# and JavaScript; however, any language or application capable of making HTTP requests can access the full functionality of the MyAdmin API. It is recommended that Resellers and Partners access the API with a new, dedicated account; however, any MyAdmin account may be used. A new account can be registered at https://myadmin.geotab.com.

NOTE The examples and source code presented in the MyAdmin SDK require a modern browser. We recommend using the latest Chrome, Firefox or Edge browser.

Accessing the API

The API is accessed via HTTPS by sending requests to the following URL:

https://myadminapi.geotab.com/v2/MyAdminApi.ashx

The API supports POST requests only.

Test Environment

A sandbox environment is a testing environment that is available to developers who wish to test their application before making API calls to the live system. The test environment can be accessed at:

https://myadminapitest.geotab.com/v2/MyAdminApi.ashx

A few methods are not supported in the test environment and will throw exceptions when called. For more information, see the Reference section.

WARNING Data in the sandbox environment is volatile. API developers should not expect data entered into the sandbox environment to persist for any amount of time.

Authenticating with the API

A successful response is a JSON object where the result property is information about the session, including the user ID and a session ID. It looks similar to this:

{"result":{"userId":"x12345x2-172x-4d04-8xx2-xx9e088c5xxx","sessionId":"cff4e88b-931b-4363-ae4f-35b5ed169133","lastLogonDate":"2013-11-04T15:01:00.000Z","roles":[{"comments":"Third Party Integrator role","name":"Third-Party-Integrator"}],"name":"user@geotab.com"}}

The API key is found in the userId property and the session ID is found in the sessionId property. Both of these properties must be included on all other API calls. If the session ID has expired, the API will return a SessionExpiredException which requires a call to Authenticate to get the new session ID. For more information, see the Reference section. JavaScript and .NET examples have been provided to help you get started.

What’s next?

There are several other items in the SDK to help you get started:

Concepts — Be sure to read through this before building your application.

Using with JavaScript

Using with .NET

API Reference — The reference documentation that explains what each API call does and documents the parameters and results for each call.

\ No newline at end of file diff --git a/myadmin-sdk/guides/getting-started/index.html.gz b/myadmin-sdk/guides/getting-started/index.html.gz deleted file mode 100644 index 15ee7d94f7b41033ef8f136838a7ee54d8397fcb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4620 zcmV+n67%gJiwFP!000001HD_>a@)q5zMrS)!>O|D3IXmSDVt0vS#gxHWgSb76Q@$C zCeQ>S0cZx@;1b7G=ON~1Uhh1~e1A7Uf|TS%QchxnKrjEk_2Os$c>en6;+L~yHq~)7 zd`3?e@gx`=C-@TFA3lqP=FFS&R0%!E^u+1qZBwmhj`$-B=YyY}wR}B9rDOg9*@MJ0RYNN z!~*G7N-(fi3eKYttVccY*)skOXTwZ*HIfP2*vb=AEW z7q6VoPn{QsKezXuJl#lJhdL6&7eebW3D`MFQ26XG_CiR_$Lu+T7Ri}N)w7x%S~8_T zBqHTnrW;%OQCzK}h|Sw>%WW2RH%keEUJYb$V1R7K?;zf?RG#T+8TQ3g6l7fp9^V8# zl4P*!DI)p(?RgobFD&0Mt1{eBF%@b-pynaQFfC=I7$nU?3<|&`5xEHUl)-31nPJFk zhJkWYkc7E@=4s{LMAv@^Zxkk1EEUnfgI6UXWWlDXn5;cEFjL$B@UpQR%9`@8YVnHu zahN#t9%MuY#u=?R%4(&?ZeS@(qctmk2YeFD@1(S{vFzC7jRpq!tfwr*nBbI6Ktq~Z zqz4{P{q;DN#W7D;yWonkpEcS%Iuh;ypUonOo^)M{{BJImOoksS-P^nhFqq*pOC&p(82xzh9Upe@&?mGj^GC>zHg7002_*ku!49yI9SPQFGC@I0p z2>Y%Ssuh?-iM_iTL*?TpI;{;_=~X1uR0wS?+5qDUNm11{efhi7?etrG?03dv7sy;s zsk?&OnM=AAj+U7>bwX&=nWX}ednOfvrV9TQYS3u6m-u@fb{Ipis%9qFt^vZ7GB9_R z1SPx`1yj&orWp;clz>n8oSIxbkV9?FFqS?{Igy1F!%0ehM0u$4*(8)Gm+BD8LZzGm zlp+kKdQfM!T&Oc6pMf8$S;SWdh&STtJXGO0j6%ISn1;SDP{q_Na=dKlAu2@*3i+IQ z5yUfqMbF2`#`eb%%Nb96C-#d5pQl%B5-x=gna$WZFfA2k9CLs{VPG8YkOM5wf#!3^ zDPWZ(hF}xMfsw`y>Y0U6#8X$zgPhS;y*vBDtyqSeHdd>$N>I}sm~MQoU6B)NPz#UjXV zTLO8XF*GW)FaSRmCMkx`bJHQE_~D$;FH)Fj>07~930B^oBY+|zl8x2nW?0^xe?jBz z;j2|Hlk?~Q18nW#vn(nJf=wc^bUYblabhyrh6RV*fYiFtp^_85KxtG%5VO&VqAlA( z!cIzkM*6iV{4C^DD4C@mECDqnAikS&y{FizSd>A4qt5V!iC^HQ^Dw;JnjCi`?HBX1 z3mNM7#0<91hDZ79ond8)XhbBx4iFaou`<48GKf*n;k!iU)v8l<(3^ zP+8f9#)yx@Lp;`ga|e`Eh&vNul!;{tXWxr^s4-sI)aoGLsx<>^(|`Ns<$cu}NXIS* zH{f5qreH=*cZR)&>O=@g07|A^fMqXj+ue;jQ(DH37FeVqEPCo13rA)IN~L1Ny*cu2 zcqfr@-^T)t^t*0jBj0yUlDmU9FcAl2iqy1bBZq2gI5I4j54bxQX*d@f28z^0t@maj z<}-o}cY{8pNAO?qnE@Mq8Q66>Y3oQTQ7nbEIB;U&BO^{i6m7#-^v=Gg_rJ%BXL5lg zIu334OoWGmU$Qf5WrrtscMI#xCPsJ`u1we3)|(pNM2@3k#0Fn2i?$Qf=^`6^VspS!1T4e*<@FOO1bW<;N9*pKxC3$0o_o%1^Zr3^J&C+Fv~I90B{3e z8^xKosVyFVz+#=mbML}&ngiM`918@u7LC@iKsD;^vs7vcjQ2OBH93%uSxx4EYpH6s znog$16rXeDSE~{206oYuu)LdeZ6&xybGLK`PZ#K zZ$+f1Vd^_G2zhmFO>trR&Zw_gO;`eo<=C~X8i{~=tKm!Yvz1x@mO8G?)fbd&vKH5p3+FjAUaaUtEd2DfWl%6TH?Zs4|YTB-AT6-z=we zM1*}W(=7g~YR~NFZh*i}9dF7}Uq^OL%8u;U9X7(~$lxk8!Qmo*-H{T>Cf`Q%Lp)=S z$eYSY4Cu}7AzEB?3W6rAqb3o2tlX8#1t>_dFsHMYe01c*zSC%K_Kd%z)K9k<XJ0jbe3D4T9;AIY%8-?>33g z{RXvzJBVl>pc^y;Oc0hC|d}+I?zl5|5-^(j?%Hx^BNus-~yWJ(-4AcZ`*gg*dPfr}rKvTO%`~-Trwn zWXFD}8I1NtsDH@voRoV~9cTc( zFf9AD(uQ_gZAL!Uh7pk+nOVkhV4bZFL$4WIcc3NGVKJ;;3?qZv9}(0pv(Ex{quwOH zCUV;SR{pe|hSc}38V%M4!S%W!rQRrd;b9n1Z}iO5K8mgmS$w_Gbi3_7{mp5CCwE}} z#7C3<7R_Lsynvj8Xlt!0tiuU9#*e>Hm(^+BHibsVnAhPTi1)Xb0`6ux*pL zrj6^hGupP!z+fgrI$tl=5wyz`Du#j~j5uAgqV3mwV-7Weh$2EqCyi7LBEc!QbbfBn z-lrm>qq8U+r?5(4w{VaC+sxXOB2U>=F2F%rMaPO24#hCGbhUtad}ip76BhF;;^l{n zi!+vrKQf`TLVtp_1@gBt5}0IgwBkw?rz2XLskb?F*@-4D%{g=|5?}Zj!u2g2mf@3p zOySGv@>LZ&@QG3Yz#y3=yKEI$^Iq_V~iq;ygFL@=}!46Jl}BS&XqM7(>~kMC!74Vk35zt@nN-$WUoiZ>fw$m3@!N6S*W~ zIQC%_#q_-Jnl|YW)~dxWU4(f^y3SGh0n}vxNrftT6?0LwIEuFLRih&iM=B@2Y zOKVRuisXWN-oANxU}T9uMgX}y3&VA05f9DX7dAyuHs{4i8mY|aX5x;LKx{ev%$v1b zdLwjjHC;Y4b^S0$Sdg!>8Qp1A?CkaV#fDayL@TT3Y0I3cqty|~JcJtQuH5i~WP7}6 zfLK}tcf=IbI)j%{e;rklRjMxM&91A^_J_G~S5~&M4ZG7Vz z8{|!k5V13y znUXovqX3c`G35qu6I^r=3`9kfNhqxH*n~_9?O`l-!a@c>i8dBj?4PUy#8#h;3@gAoEyKJhCDm1U#ZYIl}R zr_pULowi?ZJG~`7m&?AW_j+Duxm;GNm7Fv)#hXmpqSqTc{Z?b_v|IZvhl}>aX?4aO z;WzgCjaCa&K$?Cj1DVh*WlU>gHRm)MPQ886=p57=2lYD2p89(XrFFEb9Q^vBVzYx* z_GVvd6Y+|+H_b±j9}-w#}GPC1)Fm5;xzM-ZpqZM?ej@#D?$^-37^O<-JW*S&*~ ztzdH$8^a(4m+XLa{s73uUTt{VC z;AEHLDOcpd$j^SYR1rnwD>_4_=XYV^+#)!(fRBr4Sg^F1hTgO&D##OwJo1K;KbvF} z2XSqTNjwfxIq3^P68d6P5yuX>;Dv^uWw6b5*2MJX&faiFDwFSFI3_zyI~W>=0P8)Tk}Rg2ZIPESQ=ISJVmPER0N`1fs1%!o7~^#_jS?ZI*um zfYrdwoB6xbu9*yZ#J1TGyB8)^$<-Ji8j1 zak_M>iv^1f?RLFo=F?m&DVrc``M%@&+dL;y>h)E}O8ymV2ZPu<-!o#=+OCm zLvru3;yB3Kmo+B5*bQ>qTKYFu<(tW+Gp-Oz^5ynFm#W#@-ZgWh=Klfs_qYdAHUI#8 CWcSwq diff --git a/myadmin-sdk/guides/third-party-diagnostic-codes.png b/myadmin-sdk/guides/third-party-diagnostic-codes.png deleted file mode 100644 index cd61dfb8941fea12bf43819af64ce5262e0130fd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17282 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 Third-Party Devices with MyGeotab | Geotab Developers
Edit on GitHub Ask developers in the Community

Using Third-Party Devices with MyGeotab

WARNING The MyAdmin APIs for third party device data ingestion into MyGeotab will be permanently discontinued on September 30, 2022. After this date, MyGeotab will be unable to receive any data from devices that have not migrated to DIG. For more information, please review DIG migration guide. If you're a new partner with a standalone telematics device, please refer to Using Custom Telematics Devices

Overview

This document describes how Geotab provides support for third-party devices in MyGeotab. Third-party devices are defined as any telematics device that is not manufactured or sold by Geotab but is used in conjunction with Geotab’s fleet management platform.

Integrating a third-party telematics device with MyGeotab requires the use of the MyAdmin SDK. Refer to the Custom Telematics Devices and MyGeotab document for a high-level overview of the registration process or contact your reseller for more information about obtaining a MyAdmin account or API privileges.

Device identification

A serial number will be provided for each device by Geotab. The serial number will be very similar to a standard Geotab GO device serial number. It consists of a 12 digit alphanumeric string and contains two pieces of important information:

  1. What type of device this is
  2. The unique identifier of the device

For example, a serial number for a custom device will look like this:

C1-800-000-0001

where C1 indicates the custom device type and 800-000-0001 is the unique identifier.

Device type allocation

The device type in the serial number (for example C1) is specific to each third-party device and will be allocated by Geotab for a particular vendor (i.e. the person or company interested in third-party integration).

MyGeotab User Interface

When entering a serial number, the device type will be used to show or hide features in the device editor. The standard set of fields for custom devices include:

  • Device description
  • Device identifier (not the serial number but third-party device identifier, as required)
  • Groups
  • Comments
  • Odometer
  • Engine hours
  • Work Hours
  • Time Zone
  • Systems integration

Geotab provides various systems (MyAdmin, install.geotab.com, etc.) that tie in closely with its line of GO products. By using a standardized serial number scheme as described above, Geotab will be able to provide additional services in the future with regards to third-party devices. For example, recording a successful installation or summarizing to a MyAdmin user how many third-party devices are linked to their account.

API

The Third-Party Devices API is accessible through HTTPS and JSON.

The data that MyGeotab accepts from third-party devices is limited. Currently, Geotab supports the recording of the following data types from a third-party device:

  • Latitude
  • Longitude
  • Speed
  • Date and time
  • Ignition status (on/off)
  • Auxiliary relay status for up to 8 relays
  • Engine/Diagnostic data
  • Device data

Integrating third-party device data into MyGeotab requires only three methods: Authenticate, ProvisionDevice, and AddData. All three methods are part of the MyAdmin API and require special MyAdmin account privileges to run.

The following method calls are supported and should be called in the order they appear, as documented below, to have a successful integration:

Authenticate

Authenticate (string userName, string password)
-

This method authenticates the user with the MyAdmin API and returns an ApiUser object. It requires the username and password of a MyAdmin account with MyAdmin API privileges.

  • string userName — The third-party email address to authenticate with.
  • string password — The third-party password to authenticate with.

Note that sessions will expire after a period of time. Calling a method with an expired sessionId will throw a SessionExpiredException. If this occurs, call Authenticate to obtain a new sessionId.

Below is an example of the request made to the MyAdmin API to authenticate a user:

NOTE When performing the Authenticate call, we expect you to use the POST HTTP method to pass sensitive username/password information to Geotab.

If authentication is successful, you will see a response similar to the following:

{
-                                "result":{
-                                "userId":"24k380h7-a472-947f-33ee-d4b1lo5e12b8",
-                                "sessionId":"083c6dfb-3e3a-4fea-a3db-1fa546062ee4",
-                                "lastLogonDate":"2017-01-25T15:21:03.723Z",
-                                "accounts":[
-         {
-                                "accountId":"TEST01",
-                                "currency":{
-                                "code":"USD",
-                                "name":"US Dollars"
-            }
-         }
-      ],
-                                "roles":[
-         {
-                                "comments":"Special user for MyAdminApi",
-                                "name":"MyAdminApiUser"
-         }
-      ],
-                                "name":"testuser@geotab.com"
-   }
-}
-
NOTE The sessionID expires in approximately 20 minutes. Receiving a "SessionExpiredException" error as a result of a standard API call will require you to re-authenticate.

ProvisionDevice

ProvisionResult ProvisionDevice (Guid apiKey, Guid sessionId, int productId, string server, string promoCode, string subPlan)
-

This is a provisioning call that adds a device to MyAdmin and generates a Serial Number to be used for referencing or viewing the device in MyGeotab.

NOTE This method only needs to be run once for each third-party device you wish to integrate into MyGeotab.

Parameter description:

PropertyDescription
Guid apiKeyBased on the userID, the key used to authenticate the session. This is the result.userId property from the Authenticate response above.
Guid sessionIdIdentification used with the apiKey to authenticate the session. This is also found in the result.sessionId property from the authenticate response above.
int productIdInteger code used to specify the type of the device to provision. This code will be provided by Geotab.
string serverString used for Server of the Store and Forward server. If null the default Store and Forward server is used. This code will be provided by Geotab.
string promoCodeString used to specify promo code for third-party device. This code will be provided by Geotab.
string subPlanString used to provision OEM devices. This code will be provided by Geotab.

The following is an example of parameters that can be used to call ProvisionDevice within MyAdmin:

apiKey: "24k380h7-a472-947f-33ee-d4b1lo5e12b8",
-sessionId: "f684812e-377f-478f-a813-1eef7d25e1a2",
-productId: 10015,
-server: "server",
-promoCode: "PROMO",
-subPlan: "subPlan"
-

If successful, the request will return a result similar to:

{
-                                "result": {
-                                "isSuccess": true,
-                                "serialNo": "AB0C12DE3456"
-  }
-}
-
NOTE You only need to call the Provision Device method once for each third-party device you want to provision.

The returned serialNo value can now be used to add a vehicle to your MyGeotab database using the steps below.

  1. Select Vehicles from the main menu.
  2. Click the Add button and select the Add vehicle button from the dropdown menu.
  3. Fill in the Serial number field with the serial number you received at the end of the previous section.
  4. Fill in the Description field with a value that will help you identify this device.
  5. Click OK to finalize your input.

AddData

AddData(Guid apiKey, Guid sessionId, List<ThirdPartyDataRecord> recordsToAdd)
-

Once your device has been added to MyGeotab, this method is used to feed the device data to the MyGeotab database.

The ThirdPartyDataRecord parameter has three types: ThirdPartyGpsRecord, ThirdPartyStatusRecord, and ThirdPartyAccelerationRecord. All three types share the following common properties:

Common Properties

PropertyDescription
string serialNoMyAdmin-assigned serial number of the device, which will be returned during device provisioning.
DateTime DateTimeDateTime of the record in UTC.

The remaining parameters depend on the type of ThirdPartyDataRecord you are using:

ThirdPartyGpsRecord

PropertyDescription
float LongitudeLongitude component of the GPS coordinates.
float LatitudeLatitude component of the GPS coordinates.
bool IsGpsValidAre the GPS coordinates valid.
float SpeedSpeed recorded by the device.
bool IsIgnitionOnState of the ignition.
bool IsAuxiliary1On to IsAuxiliary8OnState of the auxiliary relays.

ThirdPartyStatusRecord

PropertyDescription
short CodeThe diagnostic code (see table below).
int ValueThe value of the status data, before applying any offset or conversion as configured in MyGeotab.

ThirdPartyAccelerationRecord

PropertyDescription
short XThe X-axis acceleration (forward or backward) in milli-g.
short YThe Y-axis acceleration (right or left) in milli-g.
short ZThe Z-axis acceleration (up or down) in milli-g.

The AddData method will return an object of type AddDataResult that indicates if the data was added successfully:

AddDataResult

A successful AddData method call will return a list of AddDataResult objects. The number of AddDataResult items will match the number of items in the recordsToAdd parameter. Each AddDataResult item contains a boolean value of true or false for the IsSuccess property and a message in the Error property if any errors are encountered.

PropertyDescription
bool IsSuccessWhat was the error during the sending of the data.
string ErrorThe Y-axis acceleration (right or left) in milli-g.

Referencing Geotab.Checkmate.ObjectModel.dll will give access to all namespaces and objects needed to make the calls to the Third-Party Devices API.

Overview of needed namespaces and objects:

  1. Namespace Geotab.Checkmate.Web contains classes through which the remote calls can be made.
  2. WebServerInvoker — The object can be used to make the remote JSON call MyAdminAPI server via an HTTP/HTTPS POST command. A demonstration of its usage is provided in the .NET examples.
  3. Namespace Geotab.Checkmate.ObjectModel contains objects used as parameters and return types for the remote calls mentioned above.

Below is an example of parameters that can be used with the AddData method to start sending data to the MyGeotab database:

apiKey: "24k380h7-a472-947f-33ee-d4b1lo5e12b8",
-sessionId: "51fa8c5a-c065-4296-b21f-8cbb30158ed5",
-recordsToAdd: [{"serialNo":"CG0B20DD7588","dateTime":"2016-11-23T20:28:40.648Z","isIgnitionOn":true,"isGpsValid":true,"latitude":43.7550583,"longitude":-79.4769897,"speed":52.0,"type”: ThirdPartyGpsRecord}]
-

If successful, the resulting response will resemble the following:

{
-                                "result": {
-                                "isSuccess": true
-  }
-}
-

Note: You will need to specify a type for each third-party data record you send over. The API will respond with a JSON serialization exception if you don’t specify a record type.

NOTE Each third-party data record needs to have a unique UTC date/time value.

Multiple records can be batched together in a single call of the AddData method. A sample of such can be seen below:

apiKey: "24k380h7-a472-947f-33ee-d4b1lo5e12b8",
-sessionId: "f54f6ef5-e6de-43bc-99f2-3ce6f83e2171",
-recordsToAdd: [
-{"serialNo":"CG0B20DD7588","isIgnitionOn":true,"isGpsValid":true,"dateTime":"2016-11-23T20:30:10.648Z","latitude":43.4347,"longitude":-79.7710571,"speed":57.0,"type": ThirdPartyGpsRecord},
-{"serialNo":"CG0B20DD7588","isIgnitionOn":true,"isGpsValid":true,"dateTime":"2016-11-23T20:30:11.648Z","latitude":43.4353676,"longitude":-79.7701874,"speed":41.0,"type": ThirdPartyGpsRecord},
-{"serialNo":"CG0B20DD7588","isIgnitionOn":true,"isGpsValid":true,"dateTime":"2016-11-23T20:30:12.648Z","latitude":43.4352112,"longitude":-79.7703934,"speed":52.0,"type": ThirdPartyGpsRecord},
-{"serialNo":"CG0B20DD7588","isIgnitionOn":true,"isGpsValid":true,"dateTime":"2016-11-23T20:30:13.648Z","latitude":43.4353676,"longitude":-79.7701874,"speed":41.0,"type": ThirdPartyGpsRecord},
-{"serialNo":"CG0B20DD7588","isIgnitionOn":true,"isGpsValid":true,"dateTime":"2016-11-23T20:30:14.648Z","latitude":43.4355202,"longitude":-79.7700119,"speed":15.0,"type": ThirdPartyGpsRecord},
-{"serialNo":"CG0B20DD7588","isIgnitionOn":true,"isGpsValid":true,"dateTime":"2016-11-23T20:30:15.648Z","latitude":43.4355469,"longitude":-79.7699814,"speed":11.0,"type": ThirdPartyGpsRecord}
-]
-

If successful, the resulting response will resemble the following:

{
-                                "result": [
-    {
-                                "isSuccess": true
-    },
-    {
-                                "isSuccess": true
-    },
-    {
-                                "isSuccess": true
-    },
-    {
-                                "isSuccess": true
-    },
-    {
-                                "isSuccess": true
-    },
-    {
-                                "isSuccess": true
-    }
-  ]
-}
-

Third-Party Diagnostic Codes

Third-party status data diagnostics have their own source filter in MyGeotab called Third-Party.

Before a third-party diagnostic can be used, the customer must provide the desired details of the diagnostic to Geotab. Once this information has been received, Geotab will add it to the next available release of MyGeotab.

The following diagnostics are currently available. If not otherwise noted, the value is an integer without a unit of measurement.

  1. Low battery
  2. Tow detection
  3. Starter tamper
  4. Power tamper
  5. Battery voltage (unit: V, conversion: 0.001, example: 12.001 V must be inserted as the integer value 12001)
  6. Temperature (unit: C, conversion: 0.01, example: 1.01 C must be inserted as the integer value 101)
  7. GSM signal strength
  8. Loaded voltage (unit: V, conversion: 0.001, example: 12.001 V must be inserted as the integer value 12001)
  9. Battery level (unit: %)
  10. Successful uploads
  11. Failed uploads
  12. GPS fix attempts
  13. GPS on time (unit: s)
  14. Trip count

AddGps

Deprecation Notice This method has been deprecated as of January 2017. See AddData and AddDataResult for the current implementation.
List<AddGpsResult> AddGps(Guid apiKey, Guid sessionId, List<ThirdPartyLogRecord> recordsToAdd)
-

This call is used to feed the device data to MyGeotab. Parameter description:

  1. Guid apiKey — Based on the userID, the key used to authenticate the session.
  2. Guid sessionId — Identification used with the apiKey to authenticate the session.
  3. List of ThirdPartyLogRecord containing the data.

Referencing Geotab.Checkmate.ObjectModel.dll will give access to all namespaces and objects needed to make the calls to the Third-Party Devices API.

Overview of needed namespaces and objects:

  1. Namespace Geotab.Checkmate.Web contains classes through which the remote calls can be made.
  2. WebServerInvoker — The object can be used to make the remote JSON call MyAdminAPI server via an HTTP/HTTPS POST command. A demonstration of its usage is provided in the .NET examples.
  3. Namespace Geotab.Checkmate.ObjectModel contains objects used as parameters and return types for the remote calls. The list of the objects is: ProvisionResult — Return type for provisioning call
    • string SerialNo — Device serial number generated by MyAdmin
    • bool IsSuccess — Is provisioning call was successful
    • string Error — Reason for provisioning call failure

ThirdPartyLogRecord — Used to describe the device data.

  • string SerialNo — MyAdmin assigned serial number of the device, which will be returned during device provisioning
  • DateTime DateTime — DateTime of the log
  • float Longitude — Longitude component of the GPS coordinates
  • float Latitude — Latitude component of the GPS coordinates
  • bool IsGpsValid — Are the coordinates valid
  • float Speed — Device speed
  • bool IsIgnitionOn — State of the Ignition
  • bool IsAuxiliary1On to IsAuxiliary8On — State of the auxiliary relays

AddGPSResult

Deprecation Notice This method has been deprecated as of January 2017. See AddData and AddDataResult for the current implementation.

A successful AddGps method call will return a list of AddGpsResult objects. The number of AddGpsResult items will match the number of items in the recordsToAdd parameter.

  • bool IsSuccess — Is the sending of the results successful
  • string Error — What was the error during the sending of the data

Please refer to the provided example for the usage of the objects in the SDK .NET examples.

Integration Verification

Once your API calls are returning successfully, you can provide the end user with the serial number (the number that was returned by the ProvisionDevice method) for their third-party device.

The end user or reseller can verify that your integration is operational by logging in to their MyGeotab database and doing the following:

1 Adding a third-party device to a database:

Navigate to Vehicles, select the Add dropdown, then select the Add vehicle option. On the page that follows, input the device serial number and click OK.

2 Verifying the trips history:

Trip logs can be verified by navigating to the Map and clicking the Trips history button. Select a vehicle from the list or use the search box to filter for the relevant vehicle. The integration is successful if the user can see trip information for the vehicle with the third-party device installed.

3 Verifying Status Data:

If you are sending Status Data from your third-party device to MyGeotab, you can view this data by navigating to Activity > View Accidents & Log Data and using the filters to find your third-party device records.

Representing your custom device on the Live Map and rules-engine processing

Most integrations will require the third-party device to indicate its current state to Geotab users (via MyGeotab Live Map) or to the Geotab platform rules engine (for exceptions processing).

This is accomplished by the third-party device manipulating the isIgnitionOn and isGpsValid properties in tandem.

{
-                            "serialNo": "CG0B20DD7588",
-                            "isIgnitionOn": true,
-                            "isGpsValid": true,
-                            "dateTime": "2016-11-23T20:30:10.648Z",
-                            "latitude": 43.4347,
-                            "longitude": -79.7710571,
-                            "speed": 57.0,
-                            "type": ThirdPartyGpsRecord
-}
-

To indicate that a third-party device has stopped moving (either at the end of a trip or the leg of a journey) it needs to send records in the following sequence, with its properties set as follows:

  • A record with isIgnitionOn=false and isGpsValid=true
  • Followed by a record with (a) identical GPS coordinates as previous with (b) a timestamp difference >200 seconds

To be certain, a follow up record with isIgnitionOn=false and isGpsValid=false to force the Live Map to interpret a stop

The third-party device will indicate that it is moving by sending a record with isIgnitionOn=true and isGpsValid=true.

NOTE When isGpsValid is set to false, the Rules Engine will consider the GPS coordinates for this record inaccurate and will ignore them. To deem a coordinate accurate there must be a GPS latch with at least 5 satellites, at which point isGpsValid is set to true. Less than that, by default on a GO device, the coordinates are still sent but with isGpsValid=false and possibly ignored by rules engine processing.

On the Geotab Live Map, the only Iconography for vehicles states are as follows:

  • Square - Vehicle is stopped and outside a zone
  • Star - Vehicle is stopped and inside a zone
  • Triangle - Vehicle is moving

Third-Party Device Integration Using .NET

All Third-Party Devices API calls are executed through the MyAdmin API.

The .NET DLLs for MyAdmin can be downloaded here.

To call the Third-Party Devices APIs using the MyAdmin .NET DLL, use the WebServerInvoker object to specify your intended MyAdmin method along with its dependent parameters.

NOTE The .NET DLL has no classes relating to Third-Party Telematics Device MyAdmin API calls.

You can find examples of using MyAdmin methods with the MyAdmin .NET DLLs in the .NET examples.

\ No newline at end of file diff --git a/myadmin-sdk/guides/using-third-party-devices/index.html.gz b/myadmin-sdk/guides/using-third-party-devices/index.html.gz deleted file mode 100644 index 3434bc257ac3f1ff14d0612c18b1aca06cf8ca9d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11022 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 I(?`$%0Nsgg>Hq)$ diff --git a/myadmin-sdk/guides/using-with-dotnet/index.html b/myadmin-sdk/guides/using-with-dotnet/index.html deleted file mode 100644 index a53163915..000000000 --- a/myadmin-sdk/guides/using-with-dotnet/index.html +++ /dev/null @@ -1,17 +0,0 @@ -Using with .NET | Geotab Developers
Edit on GitHub Ask developers in the Community

Using with .NET

Overview

The .NET SDK tools facilitate the integration of MyAdmin with your own .NET software. All communication to MyGeotab services occurs through HTTPS and the data is serialized in JSON format. The provided .NET library automatically handles both serialization and deserialization of JSON into MyAdmin objects.

Packages

The inclusion of the Geotab.Internal.MyAdmin.APILib and Geotab.Checkmate.ObjectModel packages allows you to interact with the API. The nuget packages include tools to assist with serialization and deserialization of JSON and provide definitions for MyAdmin object classes. The packages can be found on the NuGet website:

Geotab.Internal.MyAdmin.APILib

Geotab.Checkmate.ObjectModel

Step 1: Initialization & Authentication

The MyAdminInvoker class contains methods that facilitate calls to API functions. To access the invoker and object classes, include the following references in your code:

using MyAdminApiLib.Geotab.MyAdmin.MyAdminApi;
-using MyAdminApiLib.Geotab.MyAdmin.MyAdminApi.ObjectModel;
-

Then, create an instance of the API invoker in your code:

MyAdminInvoker api = new MyAdminInvoker("https://myadminapi.geotab.com/v2/MyAdminApi.ashx");
-

The parameters required by each method are passed using a Dictionary <string, object>. For example, to authenticate with the API, pass a valid username and password to call the Authenticate method using the code below:

Dictionary<string, object> parameters = new Dictionary<string, object> { { "username", "user@geotab.com" }, { "password", "<password>" } };
-
-
-ApiUser apiUser = await api.InvokeAsync<ApiUser>("Authenticate", parameters);
-

The Authenticate method authenticates with the MyAdmin API and, if successful, returns an ApiUser object. The ApiUser object contains the SessionId and UserId — used as the API key for all other methods.

Step 2: Making Calls

Once authenticated, you can call other methods by passing the API key, Session ID, and any parameters required by the method.

// apiKey and sessionId were obtained from ApiUser object returned by Authenticate
-Dictionary<string, object> parameters = new Dictionary<string, object> { { "apiKey", apiKey }, { "sessionId", sessionId }, { "serialNo", "G63XXXXXXXX8" } };
-
-
-ApiDeviceInstallResult installResult = await api.InvokeAsync<ApiDeviceInstallResult>("LookupDevice", parameters);
-

More Information

For more information, see .NET examples.

\ No newline at end of file diff --git a/myadmin-sdk/guides/using-with-dotnet/index.html.gz b/myadmin-sdk/guides/using-with-dotnet/index.html.gz deleted file mode 100644 index 9c986b7246cbcecc37ac31506cfd3b1d99164e5d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4539 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 with JavaScript | Geotab Developers
Edit on GitHub Ask developers in the Community

Using with JavaScript

Overview

All communication with our services is done over HTTPS with data serialized in JSON format. A request consists of three properties:

id: -1 - this ID is ignored
-method: '<method name>'
-params: [parameters required by the method serialized as JSON]
-

Before calling any API methods, a call must be made to the Authenticate method to obtain the user’s API key and session ID. All method calls require a params object which contains the values for the parameters required by the methods. The following sections describe how to build the params object to authenticate and call an API method. The myAdminApi.js utility is provided to help with calling MyAdmin API methods. It can be downloaded here.

Step 1: Initialization & Authentication

The call to Authenticate is made as follows:

var apiKey,
-    sessionId,
-    logonParams = {
-        username: 'user@geotab.com',
-        password: '<password>'
-};
-myAdminApi().call('Authenticate', logonParams, function(user) {
-    apiKey = user.userId;
-    sessionId = user.sessionId;
-});
-

In the above example, the code passes the user name and password in the logonParams object and provides a callback function to be executed following a successful login. The callback function receives an ApiUser object which contains, among other properties, the user’s API key (userId) and session ID. See the Reference documentation for more information on the Authenticate method and the ApiUser object.

Step 2: Making Calls to Other Methods

Once authenticated, all other API methods can be called using the API key and Session ID obtained in the previous example. For example, the following code will return a list of available device plans:

var devicePlan
-Params = {
-    apiKey: apiKey,
-    sessionId: sessionId
-};
-myAdminApi().call('GetDevicePlans', devicePlanParams, function(devicePlans) {
-    // Do something with the array of ApiDevicePlan
-});
-

The result object in the above code contains an array of ApiDevicePlan.

More information

For more information, see the JavaScript Examples section.

\ No newline at end of file diff --git a/myadmin-sdk/guides/using-with-javascript/index.html.gz b/myadmin-sdk/guides/using-with-javascript/index.html.gz deleted file mode 100644 index 2731c78d6ac753ab22600567b8d0c5cfc0aa82ba..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4484 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 WB(!FJr&7~*0sj}ahQ|{&I{*OQwZ3iu diff --git a/myadmin-sdk/introduction/index.html b/myadmin-sdk/introduction/index.html deleted file mode 100644 index 5235f3671..000000000 --- a/myadmin-sdk/introduction/index.html +++ /dev/null @@ -1,5 +0,0 @@ -Introduction | Geotab Developers

Edit on GitHub Ask developers in the Community

Introduction

The MyAdmin API provides an interface to Geotab’s MyAdmin system allowing Geotab Resellers and Partners to build their own applications to integrate with MyAdmin. Some tasks that can be accessed through the API include:

  • Registering MyAdmin users;

  • Ordering Geotab products;

  • Querying device information, including installation status, contract information, etc;

  • Managing support tickets with Geotab’s help desk;

  • Creating RMA requests and querying RMA status;

  • Managing user contact information;

  • Integrating third-party data; and

  • Obtaining billing information.

Data exchanged with the MyAdmin API is serialized as JSON, making the API compatible with any platform that can make HTTP requests. A .NET class library consisting of an invoker and all API objects is provided to help .NET developers interface with the API. For more information, see the Using with .NET section. Also, a small JavaScript utility is also provided to facilitate interacting with the API using JavaScript. See the Using with JavaScript section for more information.

Next Steps

Access to the MyAdmin API requires a MyAdmin account with the MyAdminApiUser role. It is recommended that Resellers and Partners set up a new, dedicated account to access the API. If desired, the MyAdminApiUser role can be added to an existing MyAdmin account. A new account can be registered at myadmin.geotab.com, after which Resellers or Partners can contact Geotab to add the MyAdminApiUser role to their account.

Please review the Getting Started and Concepts sections prior to beginning development. JavaScript and .NET examples have been provided to help you get started.

\ No newline at end of file diff --git a/myadmin-sdk/introduction/index.html.gz b/myadmin-sdk/introduction/index.html.gz deleted file mode 100644 index 06d088ac9dcf63c3c23bd522bbe1fc37bbccf7ff..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4106 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 Ig8nc70KrKO<^TWy diff --git a/myadmin-sdk/myAdminApi.js b/myadmin-sdk/myAdminApi.js deleted file mode 100644 index bcd6caec9..000000000 --- a/myadmin-sdk/myAdminApi.js +++ /dev/null @@ -1,55 +0,0 @@ -var myAdminApi = function () { - var serverUrl = "https://myadminapi.geotab.com/v2/MyAdminApi.ashx"; - var call = function (method, params, callbackSuccess, callbackError) { - var apiMethod = { - "id": -1, - "method": method, - "params": params - }; - var request = new XMLHttpRequest(); - request.open("POST", serverUrl, true); - request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); - request.onreadystatechange = function () { - if (request.readyState === 4) { - if (request.status === 200) { - var data, - error, - result; - try { - data = JSON.parse(request.responseText); - if (data && data.error) { - error = data.error; - handleError(error, callbackError); - } - else { - result = data.result; - callbackSuccess(result); - } - } - catch (e) { - handleError(e, callbackError); - } - } else { - handleError(request, callbackError); - } - } - }; - request.send("JSON-RPC=" + encodeURIComponent(JSON.stringify(apiMethod))); - }, - handleError = function (error, errorCallback) { - var errorString; - if (error && error.name && error.message) { - errorString = error.name + ": " + error.message; - } - else if (error.target || (error instanceof XMLHttpRequest && error.status === 0)) { - errorString = "Network Error: Couldn't connect to the server. Please check your network connection and try again."; - } - if (errorCallback) { - errorCallback(errorString || error, error); - } - }; - - return { - call: call - } -}; \ No newline at end of file diff --git a/myadmin-sdk/new/index.html b/myadmin-sdk/new/index.html deleted file mode 100644 index 3bd06c44c..000000000 --- a/myadmin-sdk/new/index.html +++ /dev/null @@ -1,5 +0,0 @@ -What’s New | Geotab Developers
Edit on GitHub Ask developers in the Community

What's New

September 5, 2023

Updates

GetDeviceContractsByPage & GetDeviceContracts

  • Along with the new Auto-Activated and Billing Start Date columns in Device Admin, we have added two new parameters to the GetDeviceContractsByPage and GetDeviceContracts methods:
    • isAutoActivated — Returns a result that indicates whether the device was auto-activated by Geotab.
      • true — The device was auto-activated by Geotab.
      • false — The device has yet to be activated or was activated from being installed in an asset.
    • billingStartDate — Returns the date when the device was activated.

CalculateVinOemEligibilitiesAsync and GetOemSupportEligibilityForMakeAsync

  • Together with the Vehicle / VIN Lookup page improvements, we’ve added the following APIs to allow you to confirm whether a vehicle or VIN is eligible for OEM connectivity services:
    • CalculateVinOemEligibilitiesAsync — Returns a result that indicates whether a VIN in a specific region is eligible for OEM connectivity services.
    • GetOemSupportEligibilityForMakeAsync — Returns a result that indicates whether a vehicle make and model in a specific region is eligible for OEM connectivity services.

GetOnlineOrderStatus

  • We have added a new shippingCost field as a return object to the GetOnlineOrderStatus method. This field will return the shipping cost at the time the order was placed.


July 29, 2023

Updates

MyAdminAPIUser

  • We have deprecated the MyAdminApiUser role. This role was initially used to make MyAdmin API calls, but we confirmed that API calls are open to anyone with a MyAdmin account. As a result, we have deprecated the role to reduce confusion and simplify access to our API.

CalculateVinOemEligibilitiesAsync and GetOemSupportEligibilityForMakeAsync

  • Together with the Vehicle / VIN Lookup page improvements, we’ve added the following APIs to allow you to confirm whether a vehicle or VIN is eligible for OEM connectivity services:
    • CalculateVinOemEligibilitiesAsync — Returns a result that indicates whether a VIN in a specific region is eligible for OEM connectivity services.
    • GetOemSupportEligibilityForMakeAsync — Returns a result that indicates whether a vehicle make and model in a specific region is eligible for OEM connectivity services.

DatabaseExists

  • To save time when creating new databases, we’ve added a new DatabaseExists method that returns a true or false value to allow you to confirm whether a database name already exists:
    • true — The database name already exists
    • false — The database name does not exist


July 10, 2023

Coming Soon

GetOnlineOrderStatus

  • In a future release, we will be adding a new shippingCost field as a return object to the GetOnlineOrderStatus method. This field will return the shipping cost at the time the order was placed.
  • In a future release, the GetOnlineOrderStatus method will add a default date range and return order data from the last month if the following parameters are sent as null:
    • purchaseOrderNo
    • orderNo
    • orderDateFrom
    • orderDateTo
  • There will also be a limit of 5000 orders that can be retrieved in a single request.


July 1, 2023

Updates

ProvisionDevicesBulk

  • Currently, ProvisionDevice and ProvisionDeviceToAccount methods are available to provision a single third-party custom telematics or OEM device (via the serial number).
  • To help you manage large quantities of devices, we’ve added a new ProvisionDevicesBulk method to provision multiple third-party custom telematics devices or OEM in bulk with an optional quantity field.

Coming Soon

GetDeviceContractsByPage and GetDeviceContracts

  • In a future release, we will be adding two new columns to Device Admin: Auto-Activated and Billing Start Date to improve visibility of auto-activation events, as well as the actual start of billing for a device.
  • The Auto-Activated column will help you identify whether a device has been automatically activated by Geotab, and display the following values:
    • Yes — The device was automatically activated by Geotab.
    • No — The device was activated by installation.
    • Not Available — The device has been shipped, but has not been installed, or auto-activated.
      NOTE: For devices shipped prior to the release of this feature, Not Available will be displayed.
  • The Billing Start Date column will help you determine when billing started for a device. This column will display one of the following values:
    • Date — Displays the date that the device was auto-activated, installed, or transferred from another Partner.
      NOTE: Plan changes for devices will not impact this date.
    • Not Available — Indicates that a device has been shipped, but has not been installed, or auto-activated.
      NOTE: For devices shipped prior to the release of this feature, Not Available will be displayed.
  • Therefore, we will also be making data points of Auto-Activated and Billing Start Date available through the GetDeviceContractsByPage and GetDeviceContracts APIs in a future release. We will provide more details closer to the release date.

GetOnlineOrderStatus

  • In an upcoming release, we will be adding the following parameters to the GetOnlineOrderStatus API:
  • promoCode — Returns the promo code used when the order was placed, if applicable.
  • rateCode — Returns the promo code used for a monthly Rate Plan subscription when the order was placed, if applicable.


May 29, 2023

Updates

GetPartnerDeviceContractsAsync

  • To help you find devices faster, we’ve updated the GetPartnerDeviceContractsAsync API to include a database search parameter (databaseFilter). This parameter allows you to retrieve a list of devices that are owned by the specified database.


March 27, 2023

Coming Soon

ApiDeviceContract

  • In an upcoming release, we will use the gateway’s activation date as the source for FirstDeviceActivationDate when returning an ApiDeviceContract object (for example, by calling GetDeviceContractsByPage) to align with the Device Admin page


March 6, 2023

Coming Soon

ApiDeviceContract

  • In an upcoming release, we will use the gateway’s activation date as the source for FirstDeviceActivationDate when returning an ApiDeviceContract object (for example, by calling GetDeviceContractsByPage) to align with the Device Admin page


February 13, 2023

Coming Soon

GetPartnerDeviceContractsAsync

  • Currently, the GetPartnerDeviceContractsAsync method allows you to return a list of third-party devices under your account.
  • In a future release, we’ll enhance the GetPartnerDeviceContractsAsync method to return a list that includes all device types, including GO devices.


January 23rd, 2023

Updates

EditUserContact

  • To ensure that Customers receive their orders in a timely manner, we’ve updated the EditUserContact method to validate provided addresses with the option to override invalid addresses if the user has the Contact-Override role.
  • The API call will now match how shipping contacts are validated in checkout.


December 12th, 2022

Updates

DeviceContractsByPage

  • The fromdate and todate parameters are now optional in the GetDeviceContractsByPage API, so more records can be retrieved.

OnlineOrderStatus

  • A new OrderSource parameter has been added to the GetOnlineOrderStatus method.
  • The OrderSource parameter allows you to view a list of orders based on the channel used to place the order: MyAdmin, Marketplace, or API.

Coming Soon

EditUserContact

  • In an upcoming release, we will update the EditUserContact method logic to validate provided addresses, and provide the option to override invalid addresses, if the user has the Contact-Override role.


December 5th, 2022

Updates

DeviceContractTransactions

  • When calling GetDeviceContractTransactions, you will now see a new property in the returned DeviceContractTransactions object: int UserContactId
  • If null, UserContactId will return -1
  • Else, it will return the unique ID that belongs to the user contact
  • This ID can be leveraged alongside GetUserContacts to return all the contact details of the user contact (currently DeviceContractTransactions only returns UserContactName)

ForceChangePasswordForUsersAsync

  • The ForceChangePasswordForUsersAsync method now allows you to toggle on ‘Force Password Change’ for user accounts so that you can decide how often users are resetting their passwords
  • The ForceChangePasswordForUsersAysync requires the apikey, sessionID, and a list of usernames userNames, and you must toggle forceChangePassword to True or False.

Coming Soon

EditUserContact

  • In an upcoming release, we will update the EditUserContact method logic to validate provided addresses, and provide the option to override invalid addresses, if the user has the Contact-Override role.


November 14th, 2022

Updates

ApiOnlineOrder

  • A new source parameter has been added to the ApiOnlineOrder object: OrderSource.
  • The Order source parameter allows you to determine the channel used to place the order: MyAdmin, Marketplace, or API.

MyInstallLogs

  • A new GetMyInstallLogs method has been added to allow you to easily retrieve your installation record information.

CreateExternalVendorDeviceBulkAsync

  • A new method, CreateExternalVendorDeviceBulkAsync, has been added to make it easier for Marketplace Partners to offer products that do not connect to Geotab gateways.
  • The CreateExternalVendorDeviceBulkAsync method allows Marketplace Partners to register devices using serial numbers, as well as the option to include IMEI and SIM numbers, so they show up in MyAdmin.
  • To use this method, you must have the DeviceRegister-Bulk role.


September 19th, 2022

Updates

ApiDeviceContract

  • ApiDeviceContract has been updated with a boolean value for the isAutoActivated parameter to indicate whether a device was auto-activated by Geotab using True or False.
  • The True label indicates the device was auto-activated by Geotab.

AccountsFromSerialsAsync

  • A new API, GetAccountsFromSerialsAsync, has been added to allow our Partners with multiple accounts identify the account associated with a specified device, and facilitates the use of other MyAdmin APIs that require account information.

OnlineOrderStatus

  • A new parameter, poExactMatch, has been added to GetOnlineOrderStatus to allow youto search for orders that match a specific PO number.
  • To search for orders that match an exact PO number, use double quotation marks.

Coming Soon

End of Life — MyAdmin APIs for Third-party Device Data Ingestion

  • On September 30, 2022, the MyAdmin APIs for third-party device data ingestion into MyGeotab will be permanently discontinued. After this date, MyGeotab will be unable to receive data from any devices that have not migrated to DIG.
  • For more information, refer to the Migrating to DIG from MyAdmin API/SDK guide.
  • If you’re a new Partner with a standalone telematics device, refer to the Using Custom Telematics Devices section in the MyGeotab SDK.


September 12th, 2022

Updates

GetDeviceContracts

  • GetDeviceContracts has been updated for Partners that closely integrate their billing with MyAdmin
  • The API now identifies the Rate Plan of a specific device in real time, as opposed to only the deivce mode

Coming Soon

Moving the MyAdmin SDK Site

  • On September 17, 2022, the current MyAdmin SDK site will be deprecated, and the MyAdmin SDK will be merged with the MyGeotab SDK site to create a centralized point of information related to integrating with Geotab.

End of Life — MyAdmin APIs for Third-party Device Data Ingestion

  • On September 30, 2022, the MyAdmin APIs for third-party device data ingestion into MyGeotab will be permanently discontinued. After this date, MyGeotab will be unable to receive data from any devices that have not migrated to DIG.
  • For more information, refer to the Migrating to DIG from MyAdmin API/SDK guide.
  • If you’re a new Partner with a standalone telematics device, refer to the Using Custom Telematics Devices section in the MyGeotab SDK.


August 17th, 2022

Coming Soon

Moving the MyAdmin SDK Site

  • On September 17, 2022, the current MyAdmin SDK site will be deprecated, and the MyAdmin SDK will be merged with the MyGeotab SDK site to create a centralized point of information related to integrating with Geotab.

End of Life — MyAdmin APIs for Third-party Device Data Ingestion

  • On September 30, 2022, the MyAdmin APIs for third-party device data ingestion into MyGeotab will be permanently discontinued. After this date, MyGeotab will be unable to receive data from any devices that have not migrated to DIG.
  • For more information, refer to the Migrating to DIG from MyAdmin API/SDK guide.
  • If you’re a new Partner with a standalone telematics device, refer to the Using Custom Telematics Devices section in the MyGeotab SDK.


July 11th, 2022

Coming Soon

Moving the MyAdmin SDK Site

  • On August 29, 2022, the current MyAdmin SDK site will be deprecated, and the MyAdmin SDK will be merged with the MyGeotab SDK site to create a centralized point of information related to integrating with Geotab.

End of Life — MyAdmin APIs for Third-party Device Data Ingestion

  • On September 30, 2022, the MyAdmin APIs for third-party device data ingestion into MyGeotab will be permanently discontinued. After this date, MyGeotab will be unable to receive data from any devices that have not migrated to DIG.
  • For more information, refer to the Migrating to DIG from MyAdmin API/SDK guide.
  • If you’re a new Partner with a standalone telematics device, refer to the Using Custom Telematics Devices section in the MyGeotab SDK.


June 20th, 2022

Coming Soon

Orders

  • Currently, MyAdmin does not require a zip code or postal code for shipments. As a result, shipments may be delayed due to blank or invalid zip or postal codes, and require verification before the order can be shipped.
  • To ensure we can get your order shipped as quickly as possible, the Zip Code/Postal Code field will be required, and we’re adding the functionality to validate the zip or postal code during the checkout process.


June 6th, 2022

Updates

ApiOrderHeader

  • An optional parameter Requested Delivery Date is going to be added to ApiOrderHeader object, so Partners can request a specific delivery date for orders placed through the API.

GetDeviceContracts

  • We’ve added two new parameters — ordersAddedFrom and ordersAddedTo — to the GetDeviceContracts method, so you can retrieve a list of OEM Purchase Order (PO) numbers added during the specific date range.
  • When using these parameters, the other two parameters — fromDate and toDate — are not required.

Coming Soon

Monthly Billing

  • In an upcoming release, we’re adding an Extended from Database column on the Monthly Billing page for clarity and to improve the Monthly Billing reports for Extendable Services.
  • The Extended from Database column displays the names of the originating databases, when a device has extended services from a database in the selected billing period. We are also renaming the Database column to Database Billed to more accurately describe what this column represents.
  • Please take note of this if your integration uses column names rather than column numbers.

Orders

  • Currently, MyAdmin does not require a zip code or postal code for shipments. As a result, shipments may be delayed due to blank or invalid zip or postal codes, and require verification before the order can be shipped.
  • To ensure we can get your order shipped as quickly as possible, the Zip Code/Postal Code field will be required, and we’re adding the functionality to validate the zip or postal code during the checkout process.


May 16th, 2022

Updates

OnlineOrderStatus

  • The GetOnlineOrderStatus API has been updated to include a new parameter, includeCancelledOrders, which allows you to include cancelled orders in the search results.

Coming Soon

ApiOrderHeader

  • An optional parameter Requested Delivery Date is going to be added to ApiOrderHeader object, so Partners can request a specific delivery date for orders placed through the API.

Monthly Billing

  • In an upcoming release, we’re adding an Extended from Database column on the Monthly Billing page for clarity and to improve the Monthly Billing reports for Extendable Services.
  • The Extended from Database column displays the names of the originating databases, when a device has extended services from a database in the selected billing period. We are also renaming the Database column to Database Billed to more accurately describe what this column represents.
  • Please take note of this if your integration uses column names rather than column numbers.

Orders

  • Currently, MyAdmin does not require a zip code or postal code for shipments. As a result, shipments may be delayed due to blank or invalid zip or postal codes, and require verification before the order can be shipped.
  • To ensure we can get your order shipped as quickly as possible, the Zip Code/Postal Code field will be required, and we’re adding the functionality to validate the zip or postal code during the checkout process.


April 11th, 2022

Updates

PartnerDeviceContractsAsync

  • A new API, GetPartnerDeviceContractsAsync, has been added to allow Marketplace Partners and Integration Partners to retrieve a list of active devices they’ve produced, as well as the database each device is connected to.
  • With this API, these Partners can set up, service, and support their products, as well as ensure their products are properly functioning.
  • The ThirdPartyPartner-Admin role is required to access the GetPartnerDeviceContractsAsync API.
  • To use this API, input sessionID in addition to the GetPartnerDeviceContractsAsync method. Once this is complete, the API call retrieves the list of devices including the Serial Number, Database, and Product Code.
  • This API is for Partners who produce third-party products only.

Shutdown complete — disabled GET requests used for authentication

  • For several months, we have communicated that we will disable Authenticate and RegisterNewUser GET requests to the MyAdmin API for increased security.
  • As mentioned, effective March 31, 2022, GET requests have been disabled. POST requests will continue to be supported.
  • If GET requests are used for authentication purposes, users will receive the following error message: “405 Method Not Allowed.”


March 25th, 2022

Updates

Updated character limit for Reseller Reference

  • We’ve made changes to our current character limit for the Reseller Reference field. We have increased the limit from 250 characters to 500 characters.

Shutdown imminent — disable GET requests used for authentication

  • Effective March 31, 2022, GET requests will be disabled. POST requests will continue to be supported. If GET requests are used for authentication purposes, users will receive the following error message: “405 Method Not Allowed.”


February 28th, 2022

Updates

DeviceContracts

  • The GetDeviceContracts method search functionality has been updated to support searching for OEM devices based on full or partial Purchase Order (PO) numbers.

Coming Soon

Disable GET Requests used for Authentication

  • In an upcoming release, Authenticate and RegisterNewUser GET requests will be disabled to the MyAdmin API for increased security.
  • POST requests will continue to be supported. If GET requests are used for authentication purposes, users will receive the following error message: “405 Method Not Allowed.”


January 31st, 2022

Updates

Generate Serial Numbaers in Bulk

  • Serial numbers can now be requested for up to 1000 custom telematics devices (with the same product code) at a time.
  • Previously, the functionality only supported one custom telematics device at a time.

Update to the NuGet Package

  • The NuGet package now includes common elements from the MyGeotab SDK. We leverage .NET Core instructions, so in order to use the new package any integrations using the old .NET Framework instructions must be updated.

Coming Soon

Disable GET Requests used for Authentication

  • In an upcoming release, Authenticate and RegisterNewUser GET requests will be disabled to the MyAdmin API for increased security.
  • POST requests will continue to be supported. If GET requests are used for authentication purposes, users will receive the following error message: “405 Method Not Allowed.”
\ No newline at end of file diff --git a/myadmin-sdk/new/index.html.gz b/myadmin-sdk/new/index.html.gz deleted file mode 100644 index fd46f9ccf93d24a31739b28f79c8a4e35c004762..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9163 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 V*q`ECq|;$|^ndChDP4b`001BnQA+>- diff --git a/redirects.json b/redirects.json deleted file mode 100644 index 9e26dfeeb..000000000 --- a/redirects.json +++ /dev/null @@ -1 +0,0 @@ -{} \ No newline at end of file diff --git a/resources/new/index.html b/resources/new/index.html deleted file mode 100644 index 3c4c164a7..000000000 --- a/resources/new/index.html +++ /dev/null @@ -1,61 +0,0 @@ -What’s New | Geotab Developers
Edit on GitHub Ask developers in the Community

What's New

Subscribe for Updates

11.0

Get and GetFeed for FuelUsed and FillUp

  • Get and GetFeed for FuelUsed is now available. The query will return fuel consumption for each MyGeotab trip — corresponding to each trip’s ending date and time.
  • Get and GetFeed for FillUp is now available. The query will return fill-ups detected by MyGeotab or matching fuel transaction records, if available. Each fill-up will also be matched to a MyGeotab trip — corresponding to the trip’s ending date and time.

New Transaction Provider

Added New MessageContentTypes

New ConditionType Property

New MediaFileSearch Options

  • MediaFile entries can now be searched by the solutionId property.
  • MediaFile entries can now be searched by using the TagSearch object.

New TextMessageSearch Options

New Property for DutyStatusAvailability

  • A new property has been added for the DutyStatusAvailability object that details the duration of the driving break. Note: This new property is available for USA rulesets only.

Note: This new property is available for USA rulesets only.

Added TachographDataFile Object

New CaptchaAnswer Properties

PropertySelector fixes

  • Fixed the property selector not working without the search object for the following entities:
    • Trip
    • User
    • Group

Add-in Configuration Updates via SystemSettings

⚠ Add-in updates via the customerPages are no longer supported.

Nuget Package

  • A fix has been issued for the nuget package where the name property for stock groups was not returned.

10.0

SDK Updates

API Runner (SDK)

The following improvements are added:

  • Added loading spinner to indicate to users that the login request is being processed.
  • Added a keypress handler for the login form that allows the cursor to move to the next field, and added functionality for an enter key press event to submit the form when inputting information in the last field.
  • Fixed an error message occurring in the main .js:scrollSidebar.
  • Fixed an issue that caused multiple click handlers to be added to the login button.

SecurityIdentifier

  • Added the ImpersonateGpsTextMessage security identifier. When enabled, the security identifier does not validate the identity of the sender.
  • Added the ResetPassword security identifier that allows a user to reset another user’s passwords.

mg-api-js

We’ve corrected the following errors:

  • Fixed UnhandledRejection exceptions.
  • Improved exception messages to include the type from the JSON-RPC error.
  • Fixed InvalidUserException retry authentication.
  • Updated CallBackError to be invoked as the last operation in the promise field.

GetFeed<FuelTaxDetail>

  • Fixed issues with results sorting that led to missing results.

Nuget

  • Enabled brotli compression in Nuget package API.cs requests.
  • Many ObjectModel classes are marked as “sealed”. Marking a class as “sealed” prevents tampering of important classes that can compromise security or impact performance.

!IMPORTANT: Updating your application to version 10.0 may not work if an ObjectModel class is inherited.

TextMessage

  • Added PropertySelector (Beta) support for the TextMessage type.

IoxAddOn

  • Added PropertySelector (Beta) support for the IoxAddOn type.

IoxAddOnStatus

  • Added PropertySelector (Beta) support for the IoxAddOnStatus type.

DriverChange

  • Updated the description of DriverChange DateTime to notify users that the DateTime must not be in the future when adding a DriverChange through API.

DriverWhiteListContent

  • DriverWhiteListContent is replaced by DriverAuthListContent
  • Prior to the 10.0 release, DriverWhiteListContent and DriverAuthListContent were both available to allow users to adjust to the transition.

Condition and ConditionType

  • Added the Group exception rule condition. This separates conditions in a single rule when different groups require different conditions.

Geotab Developers

  • Added a section to the Developing Add-ins page suggesting to use the generator-addin repository.

SDK samples

  • Added JavaScript samples to refresh the user interface.

SDK Add-In samples

9.0

Custom security identifiers for Add-ins

Custom security identifiers for MyGeotab Add-ins are now available. Identifiers can be defined in the configuration.json file of Add-ins, which will then add them to the list of permissions available when editing clearances. These definitions can support multiple languages.

Administrator clearance will remain non-editable and have all custom clearances enabled by default. All other default/system clearance levels only allow editing of custom security identifiers, while keeping the system defined default identifiers non-editable.

NOTE: By default, once the enableViewSecurityId property in the configuration.json for an Add-in is set to True, a View “Add-in name” add-in identifier is created that must be enabled for users to be able to view the Add-in. More granular control needs to be set within the Add-in code for any custom identifiers added to the configuration.json.

IP Rate limits

  • Added new rate limits for API requests for endpoints that do not require authentication. See this announcement for more information.

Updates

DatabaseExists

  • Removed the DatabaseExists API that was originally used for database registration purposes. If the database name exists, CreateDatabase throws a RegistrationException.

RouteSearch

  • Removed the RouteSearchGroups property and replaced it with the ServiceGroups property.

PropertySelector

  • Added the optional PropertySelector parameter that is used with the Get and GetFeed methods to include or exclude specific properties for entity types requested. Detailed information can be found on the Geotab Developers site.

DriverWhiteListContent / DriverAuthListContent

  • Removed the DriverWhiteListContent object and replaced it with the DriverAuthListContent object.

Group

  • Improved system group objects to be returned with an English Name field.

DeviceShareStatus

  • Added RequestPending as an acceptable value of DeviceShareStatus. This value indicates when an outgoing device share request has been created by a user on the source database, and is waiting for confirmation it has been created successfully.

SecurityIdentifier

  • Added the following security identifiers:
    • ResetPassword
    • EditStockRules
    • ContinuousConnectClearance
    • ViewShipments
    • ManageShipments
    • ManageTachographInspection
    • ViewTachographInspection
    • ManageTachographCompanyCards
    • ViewTachographCompanyCards
    • TachographDownloadAndUploadFiles
    • ViewTachographRemoteDownloadData
    • ViewTachographDrivingTimeData
    • ViewTachographInfringementData
    • SendColdChainCommand

8.0

Special note about Trailer and Device

We have migrated all Trailers to be Devices in all customer databases. As a result, you will see the following changes:

  • GroupAssetTypeId, GroupTrailerId, and GroupVehicleId built-in groups are added under CompanyGroup.

  • A GroupVehicleId built-in group is added to all Devices.

  • Calling Add Trailer and Add Device with the GroupTrailerId built-in group now performs the same action. Both create a Device in the system that is in the GroupTrailerId group.

  • Trailer APIs have been marked as obsolete but will continue to be supported (for now).

  • Calling Get Device now returns devices that are in the GroupTrailerId built-in group as part of the response.

  • If the Customer wants only vehicles to be returned when calling Get Device, and not trailers, they should specify groupSearch: {“id”:”GroupVehicleId”}.

  • Calling Add Trailer with the GroupTrailerId or GroupVehicleId built-in groups will throw an error.

! IMPORTANT: Calling Set Device and removing the GroupVehicleId or GroupTrailerId built-in groups will prevent the vehicle or trailer from being shown on the relevant selection screens on the Drive App. Calling Set Device and switching the group from GroupTrailerId built-in group to GroupVehicleId built-in group or vice versa will not be allowed. This is a temporary restriction in the 8.0 release, and we intend to remove this check in a future release.

See this slide deck to understand more about why this change was made, and how this may impact you.

Special note about EV Powertrain Groups

This new built-in group structure automatically classifies electric vehicles (EV) based on their unique powertrain types: Plug-in Hybrid (PHEV), Battery Electric Vehicle (BEV), or Fuel Cell Electric Vehicle (FCEV). See MyGeotab Version 8.0 SDK Announcement - New built-in groups for EV powertrain identification for additional details.

Updates

AddInData

  • Removed the obsolete alpha Data property.

Audit

  • Fix: The Audit API is inconsistent in what it returns. Most ways of getting audit (Get - from ID or search, GetFeed) do not return a populated User property. However, the GetAll (Get with no search) returns records with the user fully populated. This is not consistent with the API philosophy. A nested entity will only have its ID populated. User will now never be returned in the Audit object (only userName).

Device

  • Fix: Searching for CustomDevice type could also return CustomVehicleDevice devices in some cases. It has been fixed to return only devices of CustomDevice type.

DutyStatusAvailability

  • Added IsAdverseDrivingApplied and IsRailroadExemptionAvailable.

DutyStatusLogType

  • Added RailroadExemption.

DVIRLog

  • RepairStatus / RepairUser / RepairDate cannot be changed once set. A repair cannot be completed without the RepairUser, RepairDate, and RepairStatus.

GroupRelations

Group

  • Added the following system groups:
    • GroupAssetTypeId
    • GroupVehicleId
    • GroupTrailerId
    • PowertrainAndFuelTypeId
    • GroupElectricHybridPluginId
    • GroupBatteryElectricVehicleId
    • GroupPluginHybridElectricVehicleId
    • GroupFuelCellElectricVehicleId
    • GroupInternalCombustionEngineId
    • GroupBiodieselId
    • GroupCompressedNaturalGasId
    • GroupDieselId
    • GroupEthanolId
    • GroupGasolinePetrolId
    • GroupLiquifiedNaturalGasId
    • GroupPropaneLiquifiedPetroleumGasId
    • GroupManuallyClassifiedPowertrainId

HosRuleSet

  • Added America7DayRailroad and America8DayRailroad.

KnownIoxAddOnTypes

  • Added NFC, Bluetooth, and UReader add-on types.

Nuget Package

  • Nuget package uses HttpClient.VersionPolicy RequestVersionOrHigher. Allowing client to use HTTP/2 and above. HttpClient default is HTTP/1.1.

SecurityIdentifier

  • Added EVBatteryHealthReport.

Trailer

  • Marked obsolete, but can still be used for this release.

TrailerAttachment

  • Marked obsolete, but can still be used for this release.

User

  • Added IsAdverseDrivingEnabled.

Zone

  • When adding and setting zones, points are validated to be latitude and longitude bounds. Valid Latitude -90 to 90. Valid Longitude -180 to 180.

ZoneSearch

  • Viewport property which was made obsolete in v5.7.2004 will be removed and no longer supported in v9.0. Please switch your application to use searchArea and BoundingBox objects as soon as possible.

7.0

Security updates

In an effort to increase application and API security, exception types that expose database provider or platform-specific error messages have been removed and are now represented as one of the exceptions below. Most exceptions and error messages have not changed. Exception types that were previously documented remain unchanged; however, some new exception types include non-specific, generalized messages to avoid sharing information about the underlying infrastructure. The following common exceptions are still supported.

  • ArgumentException
  • ArgumentNullException
  • ArgumentOutOfRangeException
  • CaptchaException
  • DatabaseMaintenanceException
  • DbUnavailableException
  • DuplicateException
  • ExpiredPasswordException
  • GenericException new
  • GroupRelationViolatedException
  • InvalidApiOperationException new (fromerly InvalidOperationException)
  • InvalidCastException
  • InvalidMyAdminUserException
  • InvalidPermissionsException
  • InvalidUserException
  • JsonSerializerException
  • MissingMemberException
  • MissingMethodException
  • PasswordPolicyViolationException

Password policies

  • User passwords will now be validated against a list of common passwords. If it is a common password, a PasswordPolicyViolationException is returned.
  • User passwords will now be validated against username, first name, and last name. If it contains a username, first name, last name, a PasswordPolicyViolationException is returned. This method can no longer be disabled.

User policies

  • The maximum number of active sessions for a user on a single database has been lowered to 100. Active sessions are a rolling list sorted by date and time. When the number of active sessions reaches 100, a new session is added, and the oldest session is removed from the list (expired).

General updates

  • Added ModifyGroupFilter and ViewGroupFilter to SecurityIdentifier.
  • Added CaliforniaPropertyShortHaulWithRest, CanadaOil, CanadaNorthOf60Oil, CanadaOilTeam, and CanadaNorthOf60OilTeam properties.
  • Added support for fuel transaction provider, WexCanada.
  • Minor bug fixes and package updates.

Coming soon

  • The AddInData legacy property Data will be removed in the coming 9.0 release. Please update your integration requests to use the Details property instead
  • JSONP support will be removed from the API in the coming 8.0 release, and should no longer be used.

6.0

  • Changed the software version naming convention to use three parts (e.g. 6.0.0) from four parts (e.g. 5.7.2104.0). To learn more, click here.

  • Added WifiHotspot capability, with Interface to configure hotspot settings on telematics devices.

  • The MyAdmin SDK is now available from the SDK. All pages are in the process of being converted to Markdown format.

HOS

Added CanadaNorthOf60CycleOneTeam and CanadaNorthOf60CycleTwoTeam to the rulesets.

Limits

Increased media file size limits to 50 MB for video and 10 MB for images.

NuGet

  • Fixed an issue in which the NuGet package API.SessionId property generates an InvalidOperationException, if accessed before it is assigned.

  • The MyGeotab NuGet package no longer includes a reference to Newtonsoft.json.

5.7.2104

JSON Serializer Change in 5.7.2103

Post-release update: it was recently uncovered within our development team that as of MyGeotab release 5.7.2103, the JSON Serializer responsible for parsing API calls has changed to no longer allow single quote (‘) usage within the call parameters. Integrators should now solely use double quotes (“) for this purpose. The expected error result for single quote usage with this change is as follows:

{
-   "error":{
-      "message":"Exception of type 'Geotab.Serialization.JsonSerializerException' was thrown.",
-      "code":-32700,
-      "data":{
-         "id":"5b161301-f931-43e0-ba2a-46d6bb54d898",
-         "type":"JsonSerializerException",
-         "requestIndex":0
-      },
-      "name":"JSONRPCError",
-      "errors":[
-         {
-            "message":"Exception of type 'Geotab.Serialization.JsonSerializerException' was thrown.",
-            "name":"JsonSerializerException"
-         }
-      ]
-   },
-   "jsonrpc":"2.0",
-   "requestIndex":0
-}
-

The new Serializer logic only accepts property names and string values in double quotes because that format is required by the RFC8259 specification and is the only format considered to be valid JSON.

New Stock Groups Available

  • GroupDriverActivityGroupId
  • GroupPersonalGroupId
  • GroupBusinessGroupId

Device

  • FuelTankCapacity will now throw an ArgumentOutOfRangeException if the value is less than 0.
  • The DevicePlans property will be removed from the object model in a future version. DevicePlans does not encapsulate billing information, so please use the DevicePlanBillingInfo property from this version forward.
  • Added the DevicePlanBillingInfo property to replace the DevicePlans property. DevicePlanBillingInfo contains more billing information than DevicePlans.

DeviceStatusInfoSearch

Fixed a bug that omitted the closestAssetLimit property when applying closestAssetLimit and resultsLimit together.

UserHosRuleSetSearch

Fixed bug that applied the wrong date when searching for UserHosRuleSet using both fromDate and userSearch.fromDate.

FuelTransaction

Added the ProviderProductDescription property. This property requests the non-generic product description as described by the fuel card provider.

DutyStatusViolationType

Added EwdRest, EwdWork, and EwdWorkExemption.

Errors

Removed provider-specific details from exception messages when a relation violation exception occurs. The exception types returned have not changed.

Defect

Added IsHidden and IsRequired properties.

  • IsHidden is a boolean value indicating whether a defect is hidden in the UI. Used to determine if “other” should be shown or not.
  • IsRequired is a boolean value indicating whether a defect must be signed off. Used to determine if the part must be explicitly marked as having defect(s) or not.

5.7.2103

JSON Serializer Change

The JSON Serializer responsible for parsing API calls has changed to no longer allow single quote (‘) usage within the call parameters. Integrators should now solely use double quotes (“) for this purpose. The expected error result for single quote usage with this change is as follows:

{
-   "error":{
-      "message":"Exception of type 'Geotab.Serialization.JsonSerializerException' was thrown.",
-      "code":-32700,
-      "data":{
-         "id":"5b161301-f931-43e0-ba2a-46d6bb54d898",
-         "type":"JsonSerializerException",
-         "requestIndex":0
-      },
-      "name":"JSONRPCError",
-      "errors":[
-         {
-            "message":"Exception of type 'Geotab.Serialization.JsonSerializerException' was thrown.",
-            "name":"JsonSerializerException"
-         }
-      ]
-   },
-   "jsonrpc":"2.0",
-   "requestIndex":0
-}
-

The new Serializer logic only accepts property names and string values in double quotes because that format is required by the RFC8259 specification and is the only format considered to be valid JSON.

Add/Set FuelTransaction

Fuel transactions must be unique when comparing all fields (excluding sourceData) against existing transactions.

CompanyDetails

Added jurisdiction property.

CreateDatabase

The CreateDatabase API now requires user-selected jurisdiction. The jurisdiction is the place of residency for Customer data, maintenance hours, and other information (e.g.U.S., EU). This was previously inferred from the selected timezone. To maintain backwards compatibility, timezone can still be used to infer jurisdiction. However, all users are encouraged to provide a jurisdiction as part of the CompanyDetails provided to the CreateDatabase API.

CustomVehicleDevice

Added fuelTankCapacity property.

DiagnosticType

Added LevcFault.

Drive Add-In Photos

A new API was added to Drive add-ins to access the device camera to take a photo or select an exiting photo from the mobile device using api.mobile.camera.takePicture().

DriverRegulation

Added CurrentDutyStatus representing the latest DutyStatusLogType affecting availability or violations.

DutyStatusViolationType

Added EwdRest, EwdWork, and EwdWorkExemption (formerly Work and WorkExemption).

DVIRLogSearch

Added LogTypes property for searching by list of DVIRLogType.

ExceptionEvent

Exception events can be deleted when new data arrives from a device that, when evaluated against the same rule conditions, invalidates the previous state of the exception. For example, a speeding exception is generated for a street with a 40mph speed limit beside a highway. As more GPS data arrives, it becomes clear the vehicle is on the highway, not the service road, so the exception is invalidated. This is a problem for users who continuously request ExceptionEvent data because they are unaware when an exception is invalidated, and deleted at a later date. To resolve this issue, two new properties have been added to ExceptionEvent; lastModifiedDate and state. These properties determine if the exception event is invalidated instead of deleted. This means that when a new GetFeed request is made, the user sees the updated record and can adjust their records accordingly. Invalidated exceptions will no longer be removed immediately.

NOTE: Invalidtated exceptions will not be returned by default. You must pass the search parameter includeInvalidated in the request to Get or GetFeed to return invalidated exception events. The state of these exceptions will be Invalid.

ExceptionEventSearch

Added includeInvalidated property.

ExceptionEventState

New object representing the state of the exception event. Possible states are Valid and Invalid.

Generator Add-in

Generator-addin updated to mock drive add-in camera API features.

Group

Group objects in some instances had color and children properties partially populated when nested in another object (ex device.groups). This is fixed, so they are no longer populated when groups are nested in group linked entities.

HosRuleSet

Added CaliforniaPropertyShortHaul and CaliforniaPropertyShortHaulWithRest.

Jurisdiction

New enumeration representing the Jurisdiction of a database.

MediaType

Added Application media file type. This is to support PDF file types in MediaFiles.

All Radio Downloader related objects are removed as Geotab deprecates all RF functionality.

SecurityIdentifier

Added ViewDeviceDataPrivacyChangeData and EditDeviceDataPrivacyChangeData Added ViewSharedDevice Added AdministerPropertySet, ViewPropertySet, AdministerProperty, and ViewProperty Added ViewActiveInsights Added IgnoreHOSLogs Added ViewShareableLink, CreateShareableLink, and DeleteShareableLink

TripSearch

Added SearchArea property to allow searching for trips within a rectangular BoundingBox geographic area.

5.7.2102

Data Intake Gateway (DIG)

DIG is our new platform for integrating custom telematics data into MyGeotab. To learn more, click here.

APIv1 JSON Serialization

To reduce the duration of process-intensive requests with large JSON payloads, the MyGeotab JSON-RPC API now uses System.Text.Json instead of Newtonsoft.JSON to serialize JSON data sent using the API. This change includes backward compatibility with Newtonsoft.JSON, with the following exception: Numbers with decimals will no longer be serialized using the decimal followed by a zero, if it is a whole number.

Nuget Package

The Nuget Package now targets .NET Standard 2.0,.NET Standard 2.1 and .NET 5.0. To improve serialization and deserialization performance, the Geotab.Checkmate.Objectmodel Nuget Package version 5.7.2102 replaced the JSON serialization library from Newtonsoft.JSON, with System.Text.Json.

Due to the performance improvement with System.Text.Json, the existing rate limit OverLimitException may be surpassed when calling the GetFeed API in a tight loop.

SDK Site

SDK site adjusted for AODA compliance.

Generator Add-in

New Geotab Drive Add-in features start/stop, hook and notifications added to generator-addin.

General SDK updates

DeviceSearch

Keywords property expanded to include EngineVehicleIdentificationNumber, VehicleIdentificationNumber and SerialNumber properties.

DeviceShare, DeviceShareSearch, DeviceShareType, DeviceShareSearch

Beta support for DeviceShare functionality added. This object is used for Extendable Services billing purposes.

DutyStatusLogType

Added Work, Rest, and WorkExemption properties.

ExceptionRuleBaseType

Route Completion displays the completion status of custom routes and roads to help users maintain compliance with service level agreements. A route is completed based on the rule and conditions set by the user. Route completion exceptions represent servicing activity for a set of previously defined routes, within a service group.

A new RouteCompletion category is used to classify a rule in the Route Completion Report. Route completion rules are returned with unfiltered requests to the Get<Rule> API, or with the category filter UserExceptionRules. They can also be searched by RouteCompletion.

FaultData

Added FaultStates. This allows faults to represent more precise and potentially multiple fault states. In the future, FaultState will be deprecated, though still available for backwards compatibility.

FaultState

Removed PendingOff, ActiveOff, InactiveOff, as more accurately represented in FaultStatus.

FaultStateProvider

Describes the current FaultState when a single fault is present.

FaultStatus

Complements the FaultStates property of FaultData. Describes the status of a fault.

GetFeed

To comply with the GetFeed contract and avoid performance loss, fixed a bug that applies both fromDate and fromVersion when both are supplied in the API request. When fromVersion is supplied, fromVersion will be ignored.

This fix may return more records when both fromDate and fromVersion are supplied with before the given dateTime is returned.

Also, fixed a bug where toVersion is returned as 0, when a search returns no results. Now, when no results are returned, ToVersion is returned as the latest Feed version.

HosRuleSet

Added StandardHoursSoloExemptionHours.

RoutePlanItem

Added PassCount. The expected number of passes through the Zone.

RouteSearch

Added Groups search option to allow searches for Route Completion routes (RouteType.Service) that are members of GroupSearch(s). Only returns routes that are members of a service group hierarchy.

RouteType

Added Service route type.

SecurityIdentifier

Added RouteCompletionReport.

UserSearch

Added UserSearchType property to address IsDriver search limitation for Driver or Drivers, and Users. UserSearch allows searching for drivers and users, users who are not drivers, and only users who are drivers. IsDriver will be deprecated but remain backwards compatible.

UserSearchType

Added values to the UserSearch, UserSearchType properties.

5.7.2101

Map Add-In

Map Add-ins are now fully supported, and no longer in Feature Preview. Click here to learn more about Map Add-ins

Storage API

Storage APIs are now fully supported, and no longer in Feature Preview. Click here to learn more about Storage APIs

General SDK updates

DeviceStatusInfo

The dates of GPS, status and fault records are compared and uses the latest recorded data point as the DateTime.

AddInData

The Set method will now allow modifying a value with no groups assigned.

CreateDatabase

Added a rate limit to the CreateDatabase method: 15/1m, 100/1h, 800/1d.

Device

Added support for Untracked Assets. This allows adding devices that do not have a serial number.

DutyStatusLog

  • Added the IsTransitioning property indicating whether an HOS log is in transition after the first driver accepts it.
  • Added the IsHidden property.

DutyStatusLogType

  • Added CanadaCycleOne, CanadaCycleTwo, OperatingZoneCanadaSouthOf60, OperatingZoneCanadaNorthOf60, OperatingZoneAmerica and INT_CoDriver.

DutyStatusViolationSearch

The DutyStatusViolationSearch method can now search by user company or driver groups.

DVIRLog

Updated the documentation for Canada-specific fields on DVIRLogs (LoadHeight, LoadWidth, and Odometer) to better describe how they are populated.

FaultState

Added Inactive, PendingOff, ActiveOff, InactiveOff, and Cleared.

Get:DutyStatusLog

Fixed bug getting latest log for all users.

Get:StatusData

Users can now extrapolate the status date for diagnostics using the unit of measure None when Get is used with search (device, diagnostic, from and to date).

GetFeed:DeviceStatusInfo

Added GetFeed for DeviceStatusInfo.

MessageContentType

Added MimeContent to MessageContentType.

MimeContent

Fixed documentation of maximum size.

RuleSearch

Fixed a bug getting zone stop rules.

SDK Runner

Fixed a UI bug rendering JSON, causing it to fail on an empty object.

sdk-addin-samples:proximity

  • Removed ResultsLimit of 1000 for the Get<Device> request.
  • Get<Device> request now accepts wildcard searches.
  • Added a Run, Select All and Deselect All button.
  • Updated warning messages if an input is missing or invalid when a user clicks Run.
  • Updated minor UI aesthetics.

sdk-map-addin-samples

Added a new sample illustrating tooltip which displays the odometer, fuel level, and battery charge level (if applicable) of a vehicle.

SecurityIdentifier

Added ViewDeviceShare, ViewDeviceShare, InstallRecord, ViewDeviceShare, ViewDeviceShare, ViewUserDeviceLink, and ViewUserDeviceLink.

VersionInformation

Added the ServerId property, a unique identifier for a server/cluster.

5.7.2004

New Media File API

Geotab is happy to announce a new set of APIs related to Media Files. This new API can be used to store images or video clips related to a device or driver.

MediaFile: MediaFile is a new type used to store images or video clips related to a device or driver. More information about media files can be found here.

MediaType: The type of Media.

Status: The status of an uploaded file.

MediaFileSearch: The object used to specify the arguments when searching for MediaFile. This will return the data describing a file, not the actual file.

Tag: A named tag to provide context to an entity.

DownloadMediaFile: Download a file for the given MediaFile. The Content type is determined by the file extension. Range headers are supported.

UploadMediaFile: Upload a file for the corresponding MediaFile using multipart/form-data POST request.

SecurityIdentifier: Added ViewMedia and ManageMedia.

General SDK updates

BinaryDataType

Added ThirdPartyData type to allow flexible length binary data format records to be stored.

Methods

GetCountOf method now accounts for user scope. It previously did not account for user scope, which was a bug.

ZoneSearch

Viewport is obsolete and no longer officially supported. It is replaced with SearchArea property. This will be better represented by the type BoundingBox. Providing a bounding box is simpler to use because map libraries provide viewport/map bounds in this way already. Backwards compatibility will be maintained with the Viewport property, though no longer documented.

BoundingBox

Added BoundingBox which represents a geographic area defined by the top-left and bottom-right coordinates.

DiagnosticSearch

Added searching by diagnostic name.

FaultDataSearch

Added searching by Diagnostic Code, Diagnostic Name, Diagnostic Source Name, Diagnostic Source Id, FaultState and Controller Id.

Generator-addin

Added groups filter to generator-addin.

HOSRuleSet

Added: America7DaySleeper, America7DayBigSleeper, America8DaySleeper, America8DayBigSleeper, OilTransport7DaySleeper, OilTransport7DayBigSleeper, OilTransport8DaySleeper, OilTransport8DayBigSleeper, America7DayNo34hSleeper, America8DayNo34hSleeper, AmericaNoRestRequirement7DaySleeper, AmericaNoRestRequirement7DayBigSleeper, AmericaNoRestRequirement8DaySleeper, AmericaNoRestRequirement8DayBigSleeper, OilWell7DaySleeper, OilWell7DayBigSleeper, OilWell8DaySleeper, OilWell8DayBigSleeper, OilTransportNoRestRequirement7DaySleeper, OilTransportNoRestRequirement7DayBigSleeper, OilTransportNoRestRequirement8DaySleeper, OilTransportNoRestRequirement8DayBigSleeper, OilWellNoRestRequirement7DaySleeper, OilWellNoRestRequirement7DayBigSleeper, OilWellNoRestRequirement8DaySleeper, OilWellNoRestRequirement8DayBigSleeper, AlaskaProperty7DaySleeper, AlaskaProperty8DaySleeper

Removed BETA attribute on the following

  • AnnotationLog
  • AnnotationLogSearch
  • ApplicationVersionInformation
  • DefectRemark
  • DefectSeverity
  • DutyStatusAvailability
  • DutyStatusAvailabilitySearch
  • DutyStatusLog
  • DutyStatusLogSearch
  • DutyStatusLogType
  • DutyStatusMalfunctionTypes
  • DutyStatusOrigin
  • DutyStatusState
  • DutyStatusViolation
  • DutyStatusViolationSearch
  • DutyStatusViolationType
  • DVIRDefect
  • DVIRDefectSearch
  • DVIRLog
  • DVIRLogSearch
  • DVIRLogType
  • DtcClass
  • DtcSeverity
  • ElectricEnergyEconomyUnit
  • ElectricEnergyUnit
  • HosRuleSet
  • InvalidMyAdminUserException
  • RepairStatusType
  • ShipmentLog
  • ShipmentLogSearch
  • TextMessageContentType
  • Trailer
  • TrailerAttachment
  • TrailerAttachmentSearch
  • TrailerSearch
  • VersionInformation
  • GetVersionInformation
  • GetFeed:Audit
  • GetFeed:Device
  • GetFeed:Diagnostic
  • GetFeed:DriverChange
  • GetFeed:Route
  • GetFeed:Rule
  • GetFeed:TextMessage
  • GetFeed:TrailerAttachment
  • GetFeed:Driver
  • GetFeed:Zone

Java SDK (Feature Preview)

We work hard to create fast and flexible tools that make sense for your business, and your feedback is an essential part of that process. With this in mind, we are previewing our new Java SDK, and we want you to tell us how we did! So go ahead – test the kit, join our Community Developer Discussions to help us improve our product, and get to know our users.

The Java SDK offers an easy way to integrate MyGeotab into Java software. All communication with Geotab services is accomplished using HTTPS with serialized data in JSON format. The Java library provides Java objects representing MyGeotab entities and automatically handles their JSON serialization and deserialization.

The Java SDK is available as a Maven Dependency Library from the Maven Central Repository and includes documentation with information and usage samples for your new kit.

You can find Java-based API usage samples at https://github.com/Geotab/sdk-java-samples

Samples include:

Get Logs for a given vehicle between a range of dates. Send Text Messages to and from a GO device Import Groups includes a console example that is also a Group import tool. The sample enables a one-time import of groups to a database from a CSV file. Import Devices includes console example that imports devices from a CSV file. Import Users includes a console example that imports users from a CSV file. Get Data Feed includes an example for retrieving GPS, StatusData and FaultData as a feed, and for exporting to CSV file.

Supported Methods include:

  • Authenticate
  • Get
  • Add
  • Set
  • Remove
  • GetFeed (LogRecord, StatusData, FaultData, Trip)
  • GetCountOf

Supported Objects include:

  • Id
  • Entity
  • EntityWithVersion
  • NameEntity
  • NameEtityWithVersion
  • LoginResult
  • Credentials
  • Coordinate
  • Color
  • Controller
  • ControllerSearch
  • Device (all types)
  • DeviceSearch
  • Diagnostic
  • DiagnosticSearch
  • DataDiagnostic
  • DiagnosticType
  • EngineType
  • EngineTypeSearch
  • FailureMode
  • FailureModeSearch
  • FaultData
  • FaultDataSearch
  • FlashCode
  • Group
  • GroupSearch
  • IoxAddOn
  • IoxAddOnSearch
  • LogRecord
  • LogRecordSearch
  • ParameterGroup
  • ParameterGroupSearch
  • Source
  • SourceSearch
  • StatusData
  • StatusDataSearch
  • TextMessage
  • TextMessageSearch
  • TextMessageContentType
  • Trip
  • TripSearch
  • UnitOfMeasure
  • UnitOfMeasureSearch
  • User
  • Driver
  • UserSearch
  • WorkTime
  • WorkTimeDetail
  • WorkTimeHolidayGroupId
  • WorkTimeSearch
  • DefectSeverity
  • DeviceType
  • DiagnosticType
  • DtcClass
  • DtcSeverity
  • ElectricEnergyEconomyUnit
  • FaultLampState
  • FaultResetMode
  • FaultState
  • FuelEconomyUnit
  • GoogleMapStyle
  • GoTalkLanguage
  • HosOption
  • HosRuleSet
  • MessageContentType
  • OpenStreetMapStyle
  • SecurityIdentifier
  • SecurityFilter
  • ZoneDisplayMode
  • MapView
  • FeedResult
  • DbUnavailableException
  • DuplicateException
  • GroupRelationViolatedException
  • InvalidMyAdminUserException
  • InvalidUserException
  • OverLimitException
  • RegistrationException
  • JsonRpcError
  • JsonRpcErrorData

5.7.2003

General improvements

JSON serialization improvements have been made to increase the efficiency of API calls. This is especially noticeable on API calls with large response payload. For example, calling GetFeed of StatusData with full payload (50,000 results), the average end to end time decreased from 1800 ms to 800 ms.

TextMessage and TextMessageSearch

  • TextMessage - Added Recipient. This property is used to send a text message to a user.
  • TextMessageSearch - Added searching by IsDelivered, IsRead, UserSearch.
    • IsDelivered, when set to true, returns all text messages that were delivered to the recipient/device.
    • IsRead, when set to true, returns all text messages that were read by the recipient/device.
    • UserSearch searches TextMessages from a user, and users in the specified CompanyGroups or DriverGroups.
  • TextMessageSearch - Added searching by ContentTypes and IsDirectionToVehicle.
    • ContentTypes searches for TextMessages based on their MessageContentType.
    • IsDirectionToVehicle, when set to true, will return all text messages that were sent to the device. If set to false, it will return all text messages that were not sent to the device.

SecurityIdentifier

Exception Messages

Some exception messages contained escaped Unicode characters. We have fixed these to exclude escaped characters. See the example message change below:

The method \u0022NotAMethod\u0022 could not be found. Verify the method name and ensure all method parameters are included
-
The method 'NotAMethod' could not be found. Verify the method name and ensure all method parameters are included
-

This fix applies to messages of exception types MissingMethodException, AmbiguousMatchException, MissingMemberException and JsonSerializationException.

DiagnosticType

KnownId

  • KnownId - Added ControllerGmcccFaultId, SourceGmcccId, SourceGmcccObsoleteId, ControllerBrpFaultId, SourceBrpId, SourceBrpObsoleteId
  • KnownId - Added NoExceptionEventId, NoRuleId

Device

  • Device - Added AutoHos. This property is a toggle that represents automatic generation of DutyStatusLogs for a GoDevice and/or a CustomVehicleDevice.

DutyStatusViolation

  • DutyStatusViolation - Added HoursLimit and DaysLimit. These properties show the maximum or minimum hours and/or days limit for duty status violations.
  • DutyStatusViolation - Deprecated Reason property. This will be removed in a future version. The data in the Reason property string is now provided as DaysLimit and HoursLimit for better programmatic access.

UserSearch

  • UserSearch - Added searching by LicenseNumber, EmployeeNumber, HosRuleSet and UserAuthenticationType.

GetFeed DebugData

FuelTransaction

  • FuelTransaction - Added Device and Driver. These properties add fuel transactions for a device or user, rather than a loose match by VIN, etc. If left null, the application will attempt to match the fuel transaction to a device and driver at time of an Add or a Set. If no match is found, the fuel transaction’s Device and Driver properties defaults to NoDevice and UnknownDriver.

DVIRLog

  • DVIRLog - Added AuthorityName, AuthorityAddress, Odometer, LoadHeight, LoadWidth and IsInspectedByDriver. These properties support Canadian DVIR inspections. AuthorityName and AuthorityAddress are automatically populated based on what the user’s corresponding fields are at the time. Odometer currently only applies to the entered Hubometer value for Trailer DVIRs.

ConditionType

  • ConditionType - Added IsValueLessThanPercent and IsValueMoreThanPercent. These properties are used to create a percentage threshold for speeding violations, rather than an exact speed value under/over the current posted road speed.

WebServerInvoker (Nuget only)

This method has been changed to use generics instead of passing type in, and returning an object, that needs to be cast. For example, var version = (string)(await invoker.InvokeAsync("GetVersion", typeof(string))); is now var version = await invoker.InvokeAsync<string>("GetVersion");

While not an officially supported component, it’s possible WebServerInvoker is being used by some integrations. For this reason we thought it worth mentioning this change.

5.7.2002

NuGet

! IMPORTANT: A bug has been identified with Geotab.Checkmate.Objectmodel NuGet packages older than version 5.7.2002, which can lead to serialization errors when a previous version received a new device plan value. Please update to the latest NuGet package to establish compatibility.

Map Add-In

Users can now create a Map Add-In without using the view panel on the right. For quick tasks such as adding icons or text to the Map, simply use the "noView":true parameter in your configuration file.

{
-    "page": "map",
-    "noView": true,
-    "title": "Some title",
-    "mapScript": {
-        "script": "..."
-    }
-}
-

You can now hide Vehicle State and Groups information from the tooltip when hovering or selecting vehicles on the Map. See the example below.

service.tooltip.setConfig({
-    device: {
-        state: false,
-        groups: false
-    }
-});
-

Interpolation

  • Get: StatusData, LogRecord - In the v5.7.2001 release and earlier, we interpolate between points when using StatusData and LogRecord API. When a date is requested that is less than or greater than the data, we return the first/last value with the date of the time requested. To minimize confusion, we now return the first/last value with the correct dateTime.

Users

  • User - Added the IsExemptHOSEnabled property to indicate whether the user is allowed to use HOS Personal Conveyance.
  • User - Added CompanyName, CompanyAddress, and CarrierNumber properties to store company and carrier information.
  • User - Added CountryCode, PhoneNumber, and PhoneNumberExtension properties to assign a phone number to a selected user.

Drivers

  • Driver - Added LicenseProvince and LicenseNumber properties.
  • DriverRegulation - Added RestBreakNeeded, OffDutyNeeded, DaySummaries, WorkdaySummaries and CycleSummaries properties to DriverRegulation.

DutyStatuLog

  • DutyStatusLog - Added DeferralStatus, and DeferralMinutes properties to define the duty status deferral and deferral minutes.
  • DutyStatusLogType - Added the PC_Exempted property to indicate the status of a driver.

DVIRLog

  • DVIRLog - Added LogType and DefectList properties.
  • DVIRLogType - Most DVIRs are performed as either Pre or Post-trip inspections. To include middle-of-the day scenarios such as discovering new defects, or performing additional inspections, we have added a new Intrip inspection type.

Rules

  • RecipientType - Added HosEnabled and HosDisabled to RecipientType to automate HosEnabled/HosDisabled duty status logs using rule notifications. For example, when an exception event occurs, add an HosEnabled or HosDisabled duty status log at the same time as the event for an unidentified driver.
  • ConditionType - Added NoPreDVIRCheck and NoPostDVIRCheck to ConditionType when no Pre or Post-trip DVIR is performed between work days.
  • ConditionType - Added SpeedLimitAsMeasurement property to the ConditionType to create rules that only apply to posted road speeds that are greater than, or less than a specified value. For example, it may be more important to alert the driver when the vehicle is travelling less than 10mph, or greater than 10mph on a highway, than it is on a city street.
  • ConditionType - The NoDVIRCheck ConditionType is obsolete and will be removed in a future version. Please use NoPreDVIRCheck and NoPostDVIRCheck.

Zones

  • Zone - Added the ZoneTypes property for enumeration of zone types for a given zone.

Devices

  • GO9 - Added the ObdAlertEnabled property to allow users to enable/disable OBD alerts on their vehicles.
  • GoDevice - Added the ParameterVersionOnDevice property to track the current parameter version on the device. The current ParameterVersion property communicates the parameter version to the device; however, parameter updates are not always immediate.
  • Device - To prevent mismatches based on system clock settings, we have prevented ActiveFrom from being greater than ActiveTo when adding a device.

generator-addin version 3.0

We have modernized the Add-In scaffolding, development and packaging tool to use more current techniques and features:

  • Now using webpack.
  • Now using Puppeteer for browser testing.
  • UI now shows a collapsible navbar.
  • Can now toggle multi-language support.
  • Can now toggle blur and focus events to simulate leaving and re-visiting the Add-In page.
  • For more information visit GitHub: https://github.com/Geotab/generator-addin

mg-api-js version 2.0

This major release merges the API wrappers mg-api-js (previously browser only version) and mg-api-node (previously Nodejs only version) into a single project:

  • Uses single js library for nodejs or browser.
  • Supports Async promises and legacy callback behavior.
  • Simplifies authentication process, no more hard-to-understand callbacks.
  • Optional lower-level control over http response.
  • For more information visit GitHub: https://github.com/Geotab/mg-api-js

Other SDK Updates

  • BinaryDataSearch - Search by DeviceSearch.Groups property using BinaryDataSearch.
  • SecurityIdentifier - Added SystemSettings value to SecurityIdentifier.
  • Removed the DiagnosticCategory object from the SDK reference page. This is a legacy object that is no longer in use.
  • Updated the ExternalDeviceShutdownDelay documentation to clarify values in minutes rather than seconds.
  • Added a sample for getting fuel tax details using the API runner.
  • Feature preview items now marked as Beta in SDK reference.
  • Added a hardware Add-On Data Types section to the SDK.

5.7.2001

  • AddInData (Feature Preview) - Remove requirement of AddInDataId for search by Id.

  • AuditSearch, DeviceSearch, ShipmentLogSearch, UserSearch, ZoneSearch - Added new search by list of Keywords. This allows searching “or” across multiple wildcard searchable string fields of an object in one request. For example, searching for device with keywords will search for matches against Comment, LicensePlate, Name, SerialNumber and VehicleIdentificationNumber matching the provided keywords. Keywords strings support wildcard character (%).

  • BinaryData (nuget only) - Fix issue deserializing enum values known to the server but unknown to older nuget package.

  • Calculated Engine Hours Search - As mentioned in 5.7.1904 What’s New, DiagnosticEngineHoursAdjustmentId is now interpolated using trips and DiagnosticIgnitionId values when a search includes a from/toDate value(s) to provide exact values by default.

  • CompanyDetails - Add documentation describing field length limits. Added more specific error messages relating to max field lengths from CreateDatabase method.

  • Device - HardwareId is no longer returned as part of Device object. For more information regarding this change, please refer to this community post.

  • DVIRDefect - Providing RepairUser and RepairDateTime are no longer supported for unrepaired DVIRDefect.

  • DVIRLog - DefectList must be provided with DVIRLog.

  • GetFeed - Fixed corner case where it was possible to miss data in feed due to concurrency issue.

  • GetFeed StatusData - Fix, providing a search to GetFeed StatusData containing a DiagnosticSearch which has no results within the provided limit of records will now return a feed version advanced by the results limit or remaining records when less then results limit.

  • Get Diagnostic - Fix issue searching by DiagnosticType.ProprietaryFault or DiagnosticType.LegacyFault causing error result.

  • GoCurve - Added IsIoxConnectionEnabled. (Adds to GO4v3, GO5, GO6, GO7, GO8, GO9)

  • Group (nuget only) - Removed left and right parameters from constructor and Group.Get method.

  • GroupRelations - Added AddInDatas property. When Group linked AddInData (Feature Preview) is blocking a Group remove, a list blocking AddInData Ids will be returned in the GroupRelations property of GroupRelationViolatedException.

  • HosRuleSet - Added WashingtonIntrastate7Day, WashingtonIntrastate8Day, NoneCanada, HosRuleSetCanadaNorthOf60CycleOne, HosRuleSetCanadaNorthOf60CycleTwo

  • SecurityIdentifier - Added ViewGroups, AdministerWiFiHotspotSettings, ViewWiFiHotspotSettings

  • TextMessage - Proper support of active from/to dates. *Messages that have not been sent by active to date will not be sent.

  • TextMessageSearch - ParentTextMessageId (long) is obsolete. Usage should be replaced with ParentMessageId (Id).

  • User - Added MaxPCDistancePerDay

  • UserSearch - Added “negatable” search of FistName, LastName and Name properties. If the first character of this search property is ‘!’, then the API will know to negate the search logic. For example: field = "!John%", is equivalent to: WHERE NOT LIKE 'John%'.

5.7.1904

  • AddInData (Feature Preview) - Groups are now optional for AddInData objects, currently in Feature preview. Previously, groups were a required property for the AddInData object. This limited the potential usage of AddInData as there are situations where data should be available to all users regardless of scope, and some users were not able to access data when they belonged to groups outside the data’s scope. Removing this restriction means any user is now allowed to get an AddInData object if no group is specified for the object.

  • API.cs (nuget only) - Now implements IApi interface. This allows for simpler unit testing of integration code using mocks.

  • BinaryDataType - Added SoftwareVersionFull

  • Calculated Engine Hours Search - With a custom setting (ENABLEENGINEHOURSINTERPOLATION) applied to your database, DiagnosticEngineHoursAdjustmentId will now be interpolated using trips and DiagnosticIgnitionId values when a search includes a from/toDate value(s) to provide exact values. To apply this custom setting to your database, please reach out to Geotab support. This will become the default behavior in v5.7.2001.

  • DatabaseExists fixed to include databases existing in other federations.

  • FuelTransactionProductType - Added Hydrogen and DieselExhaustFluid.

  • FuelTransactionProvider - Added GFN.

  • HosRuleSet - Added HosRuleSetCanadaCycleOneTeam and HosRuleSetCanadaCycleTwoTeam.

  • LoginResult - Removed unsupported legacy property SecurityToken. This property duplicated the supported property Credentials. It was previously maintained for compatibility with MyGeotab Web Server 5.6.1 which is no longer supported.

  • Rule - Fix, don’t allow adding Rules without Conditions.

  • SecurityIdentifier - Added ViewGroups.

5.7.1903

  • DutyStatusLog: Added EditRequestedByUser.

  • DutyStatusLog: Locations will not be included with DutyStatusLog by default. To include locations must use dutyStatusLogSearch.IncludeLocations: true.

  • DutyStatusLogType: Added HosEnabled, HosDisabled.

  • DVIRLog: Added RepairDate.

  • IoxAddOn: Added DateTime representing when the channel was set to the given value.

  • Serialization: ISO date time at zero hour will now have full ISO time ex 1986-01-01 -> 1986-01-01T00:00:00.000Z.

  • HosRuleSet: Added AmericaShortHaul14hrWorkday, AmericaShortHaul8Day14hrWorkday, OilTransportShortHaul14hrWorkday, OilTransportShortHaul8Day14hrWorkday, CaliforniaFlammableLiquidWithRestRequirement, CaliforniaSchoolPupilWithRestRequirement, CaliforniaFarmProductWithRestRequirement, OilTransportCaliforniaProperty, OilWellCaliforniaProperty, AmericaSalespersonNonCdlShortHaul

  • User: Active from/to: The user property ActiveTo will automatically be set to max date (2050-01-01) to denote that it is active. To account for differences in Client machine time vs Server machine time, we are allowing users to set the value of ActiveTo to a max window of 24 hours in the future (i.e. Current Time + 24 hours). In this situation we are considering it to be historical.

  • CustomData: Incomplete custom data is no longer returned via GetFeed API.

  • GetFeed: Added feeds for entities that could generate more than 50,000 records in a single request. Please take note of the limits on results.

5.7.1902

  • ApplicationVersionInformation: Added beta support

  • BinaryDataType: Added SoftwareVersionSection1, SoftwareVersionSection2, SoftwareVersionSection3

  • DefectRemark: Added beta support

  • DefectSeverity: Added Unregulated

  • Device: Adding a device will now force the ActiveTo property to max date. Setting a device’s ActiveTo property to a future date, but not max date, will force the value to max date.

  • DeviceType: Added GO9

  • DiagnosticType: Added ProprietaryFault, LegacyFault

  • DriverRegulation: Added beta support

  • DtcClass: Added beta support

  • DtcSeverity: Added beta support

  • DutyStatusAvailability: Added properties CycleRest, DutySinceCycleRest, Is16HourExemptionAvailable, IsAdverseDrivingExemptionAvailable, IsOffDutyDeferralExemptionAvailable

  • DutyStatusAvailabilityDuration: Removed from documentionation, will be obsoleted in future

  • DutyStatusViolationType: Added CycleRest and DutySinceCycleRest

  • DVIRDefect: Added beta support

  • ElectricEnergyUnit: Added beta support

  • ElectricEnergyEconomyUnit: Added beta support

  • FaultData: Added ClassCode, Severity and SourceAddress properties

  • GO9: Added support

  • GroupSearch: Added search by Reference

  • HosRuleSet: Added CaliforniaFlammableLiquid, CaliforniaSchoolPupil, CaliforniaFarmProduct, OilTransportCalifornia8day, OilWellCalifornia8day

  • KnownId: Added UnitOfMeasureLitersPerTonneId, DiagnosticStateOfChargeId, DiagnosticTotalLifetimeBatteryEnergyInDuringACChargingId, DiagnosticTotalLifetimeBatteryEnergyInDuringDCChargingId, DiagnosticTotalLifetimeOnBoardChargerEnergyOutDuringACChargingId, DiagnosticTotalLifetimeOnBoardChargerEnergyInDuringACChargingInId, DiagnosticOnBoardChargerAcInputVoltageId, DiagnosticElectricVehicleChargingStateId, DiagnosticElectricVehicleBatteryPowerId, DiagnosticOnBoardChargerACInputPowerId, DiagnosticOnBoardChargerDCOutputPowerId, DiagnosticElectricEnergyInId,DiagnosticElectricEnergyOutId, HosRuleSetCaliforniaFlammableLiquid, HosRuleSetCaliforniaSchoolPupil, HosRuleSetCaliforniaFarmProduct, HosRuleSetOilTransportCalifornia8day, HosRuleSetOilWellCalifornia8day, ControllerProprietaryFaultId, ControllerLegacyFaultId, SourceProprietaryId, SourceLegacyId, DiagnosticBluetoothNitricOxideConcentrationId, DiagnosticBluetoothNitrogenDioxideConcentrationId, DiagnosticBluetoothCarbonMonoxideConcentrationId, DiagnosticBluetoothAmmoniaConcentrationId, DiagnosticBluetoothMethaneConcentrationId, DiagnosticBluetoothEthanolConcentrationId, DiagnosticBluetoothHydrogenConcentrationId, DiagnosticBluetoothCarbonDioxideConcentrationId

  • MimeContent: Added ChannelNumber property

  • RepairStatusType: Added beta support

  • SecurityIdentifier: Added InspectDVIR, CertifyDVIR - Removed DailyUsageReport

  • User: Added ElectricEnergyEconomyUnit and isEmailReportEnabled properties

  • User: Fixed bug where isDriver property would be included with id in nested driver entities. This property is removed from nested entities. It will remain in non-nested users.

  • VersionInformation: Server is obsolete and replaced with more detailed Application property (see ApplicationVersionInformation)

  • .Net nuget package: Group constructor with only ID has been removed.

Result and Rate Limits

For an in-depth description of the result in rate limit changes in 5.7.1902 and future releases see this blog post

  • Concepts section updated to reflect new result and rate limits.

  • Result Limits: Maximum result limit of 50,000 has been added to generic Get (including Get using search) requests of entity types: AnnotationLog, DVIRLog, TrailerAttachment, IoxAddOn, CustomData, BinaryData. Results limits will be added to more entity types in future releases.

  • Rate Limits: Rate limits of 1 RPS (request-per-second) has been added to all GetFeed APIs.

5.7.1901

  • Sun-setting support for SendEmail API. No longer available in API documentation.

  • Device: Active from/to:
    • The device property ActiveTo will automatically be set to max date (2050-01-01) to denote that it is active.
    • To account for differences in Client machine time vs Server machine time, we are allowing users to set the value of ActiveTo to a max window of 24 hours in the future (i.e. Current Time + 24 hours). In this situation we are considering it to be historical.
  • DVIRLog: Added Location property.

  • SecurityIdentifier: Added ViewBusinessIntelligence, ActiveTrackingClearance.

  • SecurityRole: Added EmailSent, SkipHosVerify, SkipHosClaimUnassigned, SkipDvirInspect.

5.7.1804.1

  • API.cs (.Net only): Fix bug, Windows 10 using IIS Express possible hanging synchronous requests using nuget package 5.7.1803\5.7.1804.

5.7.1804

  • Add/Set Device: ParameterVersion will auto increment server side when device parameters property changed. Server must see that ParameterVersion has incremented to send parameters to an installed GO device (ex device beeping instructions). Previously, ParameterVersion required manual increment.

  • API.cs (.Net only): Fix bug, in certian senario changing Timeout property could abort the action on timeout and not cancel underlying request.

  • CustomVehicleDevice: Support of vehicle specific custom devices which provide vehicle specific properties and functionality. Custom device product ID must be of CustomVehicleDevice type. Contact your reseller for more information.

    • Improved support for calculated odometer and raw odometer with third-party diagnostic KnownId DiagnosticThirdPartyOdometerId and OdometerAdjusmentId

    • Improved support for calculated engine hours with third-party diagnostic KnownId DiagnosticThirdPartyEngineRunTimeId and EngineHoursAdjusmentId

    • VehicleIdentificationNumber property moved from CustomDevice to CustomVehicleDevice

    • Added LicencePlate and LicenceState properties

  • DutyStatusAvailability: Added BETA support for Recap and CycleAvailabilities properties

  • DutyStatusAvailability: Replaced Availabilities list with separate properties: Driving, Cycle, Rest, Duty, Workday

  • DeviceType: Added CustomVehicleDevice.

  • DriverChange: DriverChange object Id property is no longer backed by integer type. It is now backed by GUID type. When update 1804 is applied to the database, all previous numeric entity Id’s will be invalidated and assigned a new GUID Id’s. This could pose an issue if your integration stores driver change Id and you then reference the DriverChange by that Id. Note: JSON representation of Id was previously string and remains string type.

  • DutyStatusLogType: Added ExemptionOffDutyDeferral.

  • DutyStatusViolationType: Added DailyDriving, DailyRest, DailyDuty, DailyOff.

  • KnownId: Added DiagnosticThirdPartyEngineRunTimeId, DiagnosticThirdPartyOdometerId.

  • GetFeed LogRecord: Fixed bug with inconstant results limit.

  • SecurityIdentifier: Added DirectSupportAdmin, UserLoginStatusRead, UserLoginStatusSet.

  • SecurityIdentifier: Values AlarmSoundList, Tracking, CreateNewSqlDatabase, EngineControllerList, PurgeSettings, SendImmobilizationInstruction are obsolete and will be removed in version 1806+.

  • SecurityRole: Added SupportTicketInsert, TrainingTicketInser, SupportTicketSet, TrainingTicketSetUser, LoginFailure, UserLockout, UserUnlocked, ShipmentLogInsert, ShipmentLogSet, ShipmentLogRemove, TrailerAttachmentInsert, TrailerAttachmentSet, TrailerAttachmentRemove.

  • ZoneSearch: Added FromDate and ToDate search properties providing ability to filter zones by their active dates.

API.cs (.Net only): There is a known issue on Windows 10 using IIS Express with possible hanging synchronous requests using nuget package 5.7.1803\5.7.1804. This issue is solved in 5.7.1804.1 or greater.

5.7.1803

  • SecurityRole: Added CertificateSet permission

  • DriverChangeSearch: Added property Type indicating the DriverChangeType to search for exclusively.

API.cs (.Net only): There is a known issue on Windows 10 using IIS Express with possible hanging synchronous requests using nuget package 5.7.1803\5.7.1804. This issue is solved in 5.7.1804.1 or greater.

5.7.1802

  • DutyStatusLog: Added properties Odometer, EngineHours, EventRecordStatus, EventCode, EventType

  • DutyStatusLogType: Added SituationalDrivingClear

  • FuelTaxDetail: Added properties HourlyIsOdometerInterpolated, IsEnterOdometerInterpolated, IsExitOdometerInterpolated

  • FuelTaxDetail: Obsolete IsClusterOdometer - Superseded by the IsEnterOdometerInterpolated, HourlyIsOdometerInterpolated, and IsExitOdometerInterpolated properties. Will be removed in future version.

  • FuelTaxDetailSearch: Added properties IncludeBoundaries, IncludeHourlyData

  • SecurityIdentifier: Added ViewTripTypeChangeData, EditTripTypeChangeData

Notice

An issue was discovered which could cause integrations using the Geotab.Checkmate.Objectmodel nuget package v5.7.1801 and lower to encounter a serailizaion failure when a new DiagnosticType is introduced. The issue has been addressed in nuget package v5.7.1802. To ensure compatibility, it is strongly recommended that all integrations referencing the nuget package v5.7.1801 and lower update to version v5.7.1802 as soon as possible. (this issue is only relevant to .Net nuget package users)

5.7.1801

  • KnownId - Removed: UnitOfMeasureLitersPer100KilometersId. Diagnostics associated with this unit of measure now use UnitOfMeasureKilometersPerLiterId. This will not affect any previously recorded data.

  • KnownId - Added: DiagnosticGpsLogReasonId, DiagnosticEngineRoadSpeedId

  • ConditionType - Added: DVIRDefect - Currently works with Devices not Trailers

  • SecurityIdentifier - Added: DriverIdentificationClearance, AccelerometerDataClearance, ServicePlansClearance, AuxiliaryClearance, EngineStatusDataClearance, ResellerControlClearance, GoTalkClearance, StatusGroupsClearance, ProductGuideClearance, FeaturePreviewClearance, NewsNotificationsClearance, ManageAddinsClearance, DeviceCurrentStatusClearance

Notice

In early 2018 the following legacy properties will be removed:

Authenticate: userLogin parameter. This was kept around for compatibility with legacy (5.6.* and lower) integrations. It has not been publicly exposed or documented since version 5.6 of MyGeotab. It is planned to be removed as a valid parameter in version 5.7.1803. The userName parameter is the standard supported property that should be used.

LoginResult: securityToken property. LoginResult is the object returned by the Authenticate method. It’s property securityToken was kept around for compatibility with legacy (5.6.* and lower) integrations. It has not been publicly exposed or documented since version 5.6 of MyGeotab. It is planned to be removed as a valid parameter in version 5.7.1803. The property credentials is the standard supported property that shares the same value.

5.7.1712

  • API.cs (.Net only) - Fix: When password and session id are supplied to constructor, session id will be used until no longer valid. Previously, session id would only be used if password was not supplied.

  • FuelTaxDetail - Added properties: ”IsEnterOdometerInterpolated”, “IsExitOdometerInterpolated”, “HourlyIsOdometerInterpolated”

  • User - Removed property: “MenuCollapsedNotified”

5.7.1711

  • GetAddresses - Added: “hosAddresses” parameter to optionally search for ELD compliant address

  • UnitOfMeaure - Added: Kilowatt hours (“UnitOfMeasureKiloWattHoursId”)

  • SecurityIdentifier - Added “ViewBinaryData”, “ManageAddInData”, “ViewAddInData”

  • HosRuleSet - Added “CarrierExemption”

  • .Net SDK samples updated to target netcoreapp2.0

  • .Net nuget package now supports framework: netstandard2.0 (removed support for net46)

5.7.1709

  • API.cs (.Net only) - Added cancellation token parameter to AuthenticateAsync and CallAsync methods.

  • DutyStatusLog - Added “Malfunction” property - The DutyStatusMalfunctionType of the DutyStatusLog record. As a flag it can be both a diagnostic and malfunction state which is used to mark status based records (e.g. “D”, “SB”) as having a diagnostic or malfunction present at time of recording.

  • DutyStatusLog - Added “Sequence” property - The sequence number, which is used to generate the sequence ID.

  • DutyStatusLogType - Added “EnginePowerup”, “EngineShutdown”, “EnginePowerupPC”, “EngineShutdownPC”, “PowerCompliance”, “EngineSyncCompliance”, “TimingCompliance”, “PositioningCompliance”, “DataRecordingCompliance”, “DataTransferCompliance”, “OtherCompliance”, “MissingElementCompliance”, “UnidentifiedDrivingCompliance”, “INT_PC”, “INT_D”.

  • Controller - Added short integer “CodeId” property, which will replace the “Code” property. New “AnyController” for J1708 engine diagnostics to allow replacing those engine diagnostics identical except for the controller with one diagnostic. J1708 engine diagnostics for 58 separate SIDs were updated.

  • CustomDevice - Added “VehicleIdentificationNumber” property.

  • FuelTaxDetail - Added “Driver” property.

  • DriverChangeSearch - Added “IncludeOverlappedChanges” property - A value indicating whether to include the last driver change before the from date or the most recent driver change (if the from date is not provided).

  • InvalidUserException - Message changed from to “Incorrect MyGeotab login credentials…” to “Incorrect login credentials…”.

New Objects

  • DutyStatusMalfunctionType - Added - Malfunction or Diagnostic type of the DutyStatusLog.

  • DutyStatusState - Added - The record status of DutyStatusLog.

5.7.1707

  • Web Request Notifications: fix {zoneId} and {zoneComment} tokens would not get populated unless {zone} or {address} were also included.

  • Documentation: API Reference updated to include default value and max length of object properties in their descriptions. Default values are automatically used when adding an entity and those properties have no value assigned (are null). For example, adding a Group with color = null, will add group with default color “Blue”. If a property has no default value, it is required when calling “Add”.

  • Set operations now retain the value of missing (null) properties. A positive effect of this change is that is remedies a long existing issue that could occur when a server is a newer version (ex 5.7.1704) than client nuget package (ex 5.7.1701) which is making requests to it. The issue could arise when a new Enum value was added and exists only in the server’s code base, not client client nuget package. When the unknown Enum was received by the client, it could not be deserialiezed into an Enum value and would throw an exception. Starting in nuget package version 5.7.1707.x, the unknown Enum value will be deserialiezed to null. This means the object can round trip” on “Set” because the server will now (starting at version 5.7.1707) fill in the null value with the existing saved value of the property.

  • Added: JsonRpcError, JsonRpcErrorData - to better align JSON-RPC errors with the JSON-RPC 2.0 specification. Non-standard (now legacy) error properties have been deprecated. This should not affect nuget package users as the API.cs object serialized the JSON-RPC error results as Exceptions which are thrown. This may affect users consuming the raw JSON-RPC result of requests. It’s recommended to update usages to the official, standardized, properties as outlined in the API Reference. Of note: the new objects exposes “requestIndex” property which is the index at which a “multicall” failed.

  • Added: User/Driver objects now have property “IsDriver” to clearly indicate when a user is a driver. This also makes it easier to save a user who is no longer a driver, set the property to false and save.

  • Added: FuelTaxDetail - A new entity which provides API access to calculated fuel tax data. In the past this data was only available via the IFTA Report in MyGeotab where it was calculated on the fly. Fuel tax details are now processed using live data and stored in the database and they can be access using the API via Get and GetFeed methods. Full documentation coming soon.

5.7.1706

  • DatabaseId has been removed from .net package as per the December 2016 post

  • DutyStatusLogType: Added: “Authority” requires update of .net nuget package to ensure compatibility

  • FuelTransaction: Added: “ExternalReference”

  • FuelTransactionSearch: Added: “ExternalReference” and “Provider”

  • User: Added: “AuthorityName” and “AuthorityAddress”

  • GetFeed of Trip now includes stop point (woohoo!) *requires server running 5.7.1706.x

  • API Clients section added to SDK documentation

  • Geotab.Reflection package no longer a dependency of Geotab.Checkmate.Objectmodel nuget package

5.7.1705

  • GO8: Added preliminary support for GO8 devices requires update of .net nuget package to correctly read/write GO8 devices

  • IoxAddOn: Added preliminary support for IoxAddOn, IoxAddOnSearch, SerialIoxContent,KnownIoxAddOnType, IoxOutputContent, MimeContent

  • TextMessageSearch: Added search by: “ParentTextMessageId”

5.7.1704

  • DutyStatusLog - Added property: State

  • DutyStatusLogSearch - Added search by device groups

  • API.cs is now compatible with System.Net.Http v4.3.1

  • Fix, API.cs proxy support. New constructor that accepts HttpMessageHandler, deprecated constructor that accepts IWebProxy and Proxy property

  • Fix, content type of API response headers changed from “text/html” to “application/json”

5.7.1703

  • DevicePlan: Added: D2GODriverChallengeStandard requires update of .net nuget package to ensure compatibility

  • HosRuleSet.cs Added: America7DayNo34h, America8DayNo34h, AmericaShortHaulNo34h, AmericaShortHaul8DayNo34h, BrazilShortHaul requires update of .net nuget package to ensure compatibility

  • SecurityRole.cs Added: ReassignData requires update of .net nuget package to ensure compatibility

  • TimeZoneId: it was possible to add a user or device with “Unknown” time zone ID. This was only possible using the API and “Unknown” is not returned via the GetTimeZones method or a valid Olson time zone. The ability to add users and devices with “Unknown” as been removed and all users and devices with this time zone ID have been changed to “Etc/GMT”

5.7.1702

  • FuelTransactionProvider: Added - “Voyager”, “UltramarCST”

  • SecurityIdentifier: Added - “PurchaseMarketplacePaidItems” requires update of .net nuget package to ensure compatibility

  • SecurityRole: Added: “TripTypeChangeInsert”, “TripTypeChangeRemove”, “CustomReportSendError” requires update of .net nuget package to ensure compatibility

  • Fix: nuget package issue making API requests from Azure WebJob

  • Fix: TimeZoneInfoAdjustmentRule serialization (result of GetDaylightSavingRules)

5.7.1701

  • Added “Hardware” section to SDK

  • Nuget: Replace usage of Microsoft.Net.Http with System.Net.Http (WebRequest => HttpClient)

  • DiagnosticSearch: Added DiagnosticType property to search by the type of diagnostic. Ex, only GoFault diagnostics.

  • Added “ExpiredPasswordException” object. This exception can be thrown if a user makes a request while their ChangePassword flag is true. The user must change their password before they are able to successfully make further requests

  • SecurityRole: Added “ReportHosAvailability” requires update of .net nuget package to ensure compatibility

  • If you are using the .net nuget package and plan to use the new “HOS Only” device plan you must update to nuget package version 5.7.1701 or greater to ensure compatibility.

5.7.1612

  • Id refactoring - The ID object has been refactored in the .NET SDK. See this forum post for details.

  • Updated description of GoCurveAuxiliary (GO4v3, GO6, GO7) properties: ImmobilizeUnit: With ImmobilizeUnit being true, it is used to define the delay before the driver identification reminder is sent out if the driver key has not been not swiped. The maximum value of this property is 255. When it is less or equal to 180, it indicates the number of seconds of the delay. When it is greater than 180, the delay increases 30 seconds for every increment of one of this property. For example, 180 indicates 180 seconds, 181 indicates 210 seconds, and 182 indicates 240 seconds. ImmobilizeArming: A value mainly used for enable or disable driver identification reminder. If it is used in conjunction with vehicle relay circuits, it can force the driver to swipe the driver key before starting the vehicle.

5.7.1611

  • Authentication rate limiting being phased in. See this Blog Post for more details. Added “Rate Limiting” section to SDK Concepts.

  • KnownId - Added: “DiagnosticDieselExhaustFluidId”, ”DiagnosticDieselParticulateFilterLampId”, “DiagnosticPowerTakeoffEngagedId”, “DiagnosticPowerTakeoffTotalFuelUsedId”

  • KnownId - Removed: “DiagnosticBluetoothBeaconOutOfRangeId”

  • Trailer - Added “Groups” property. Trailers can now be added to groups.

  • TrailerSearch - Added property groups. Search for Trailers that are members of these GroupSearch(s) one of it’s children or one of it’s parents.

  • *SecurityIdentifier - Added: “RepairDVIR”

*Important: Update .Net nuget package to ensure compatibility

5.7.1610

  • KnownId - Added: “DiagnosticDieselExhaustFluidId”, “DiagnosticDieselParticulateFilterLampId”, “DiagnosticPowerTakeoffEngagedId”, “DiagnosticPowerTakeoffTotalFuelUsedId”

  • HosRuleSet - Added: “Florida7Day”, “Florida8Day”, “FloridaShortHaul7Day”, “FloridaShortHaul8Day”

New Objects

  • OverLimitException: Thrown when a user has exceeded the query limit of an API (currently only applies to authentication). Previously, if a user reached this limit, an InvalidUserException would have been thrown.

5.7.1609

  • KnownId - “DiagnosticRamFailure” name fixed to be “DiagnosticRamFailureId”

5.7.1608

  • MessageContentType - Added: “DriverWhiteList”

  • DutyStatusLogType - Added: “PC” (Personal conveyance driver status), “YM” (Yard move driver status), “WT” (Wait time oil well driver status).

  • FuelTransaction - Added “ProductType” property.

  • FuelTransactionProvider - Added “WexLegacy”, “Fuelman” and “Comdata”.

  • GoDevice - Added “GoTalkLanguage” property.

  • User - Added “IsYardMoveEnabled” and “IsPersonalConveyanceEnabled” properties.

  • HosRuleSet - Added “OilWell7Day”, “OilWell7DayBig”, “OilWell8Day”, “OilWell8DayBig”, “AmericaTexas”, “AmericaTexasShortHaul”, “OilTransportTexas”, “OilWellTexas”, “AmericaShortHaul8Day”, “AmericaShortHaulPassenger8Day”, “OilTransportShortHaul8Day”, “AmericaTexasShortHaul8Day”

  • KnownId - Added “DiagnosticSystemAlertId”

  • TimeZoneInfo - Adjusted to support recently updated Windows times zones and the latest version of IANA/Windows maped time zones. Click here for more info

New Objects

  • DriverWhiteListContent

  • GoTalkLanguage

  • FuelTransactionProductType

For detailed information on new features please review the API Reference.

*.Net users will require a dll update

5.7.1607

  • Performance and maintenance enhancements.

5.7.1606

  • DiagnosticTypes - Added “GoFault”

  • FuelTransactionProvider - Added “WexCustomer”, “Drive” and “FuelTracker”

  • SecurityIdentifier - Added “EventOccurrenceList”,”ViewCertificates”,”ManageCertificates”

  • HosRuleSet - Added “AmericaSalesperson”

  • .Net: MachineSettings - Fix to work with ASP.Net Web API projects

  • .Net: DataToComponenet - Updated “Equals” method to compare payloads for equality

  • .Net: DutyStatusOrigin - removed unused “Serializable” attribute

  • .Net - Changes in API.cs to use HttpClient instead of HttpWebRequest in order to support .Net core in the future.

  • dll requires .Net Framework version v4.6+

New APIs

  • GetDirections

  • OptimizeWaypoints

New Objects

  • Directions

  • Leg

  • Step

  • Waypoint

*.Net users will require a dll update

5.7.1605

  • Added new Units of Measure (km/L, kg/km, L/lane km, L/ton and g/m^2) ** .Net users will require a dll update*

5.7.1604

  • For security reasons, TLS 1.2 is being enforced on all servers. To fix the integration, please update to at least .NET 4.5 and use the latest nuget package. For more information, please visit the forum discussion.

  • Driver has a new property: viewDriversOwnDataOnly. When set to true, a driver gains the ability to view their own driving data. ** .Net users will require a dll update*

5.7.1602

  • TextToSpeechContent has been renamed to GoTalkContent and RelayContent has been renamed to IoxOutputContent ** .Net users will require a dll update*

5.7.1601

  • New recipient types added that will send even if there is a delay in data. (BeepTenTimesRapidlyAllowDelay, BeepThreeTimesAllowDelay, BeepThreeTimesRapidlyAllowDelay , TextToSpeechAllowDelay) ** .Net users will require a dll update*

  • Access to third party messages via API. ** .Net users will require a dll update*

New Objects

  • IoxAddOn

  • KnownIoxAddOnType

  • IoxAddOnSearch

  • IoxOutputContent

  • GoTalkContent

5.7.1512

  • Fixed operator overloading for Id object in .Net dll (id1 == id2 is the same as id1.Equals(id2)) - *If you are using dll version 5.7.1508-1511 this will require a dll update.

  • New addin: Trips Streetview added to GitHub

5.7.1511

  • Added new security clearances for:

    • ViewMarketplacePaidItems: Allow user to see paid Marketplace items

    • DeviceAdminDeleteUnplugReplace: Access to removing vehicle, unpluging device, and replacing device.

*If you are using dll version 5.7.1508-1510 this will require a dll update.

5.7.1509

  • New SDK. Featuring the new SDK Runner, new methods and objects (click here to see the preview items)

  • Code snippets in the reference documentation. Now you can see working examples of the methods as they are used in the runner.

  • .Net users will require a .DLL update to access the latest features.

New Methods

  • CreateDatabase

  • DatabaseExists

  • GenerateCaptcha

  • GetVersionInformation

New Objects

  • AnnotationLog

  • AnnotationLogSearch

  • CaptchaAnswer

  • CaptchaException

  • Color

  • CompanyDetails

  • DVIRLog

  • DVIRLogSearch

  • DiagnosticCategory

  • DistributionList

  • DuplicateException

  • DutyStatusAvailability

  • DutyStatusAvailabilityDuration

  • DutyStatusAvailablitySearch

  • DutyStatusLog

  • DutyStatusLogSearch

  • DutyStatusLogType

  • DutyStatusViolation

  • DutyStatusViolationSearch

  • DutyStatusViolationType

  • EntityWithVersion

  • FuelEconomyUnit

  • FuelEvent

  • FuelTransaction

  • FuelTransactionProvider

  • HosRuleSet

  • IncludeGroups

  • InvalidMyAdminUserException

  • MapView

  • NameEntity

  • NameEntityWithVersion

  • RadioDownloaderSearch

  • Recipient

  • RecipientType

  • RegistrationException

  • Search

  • ShipmentLog

  • ShipmentLogSearch

  • TextMessageContentType

  • Trailer

  • TrailerAttachment

  • TrailerAttachmentSearch

  • TrailerSearch

  • VersionInformation

  • VolumeUnit

Deprecated

  • BingMapStyle

  • EngineType

  • EngineTypeSearch

  • StatusDataRequestContent

5.7.1508

  • DriverChangeSearch received new search points including: DeviceSearch, DriverSearch, FromDate and ToDate. Checkout the API Reference for more details

  • DistributionList is now supported by the API. Checkout the API Reference for more details. Some related objects are still pending support (Notification, NotificationTemplate, BinaryData)

  • Add-In examples have been added to SDK documentation

  • When searching for Zones you can now specify a traversal method of the group tree. You can choose to include just the specified element, just the ancestors, just the descendents, or both ancestors and descendents. See the ZoneSearch object in the API Reference for more details

  • Fix documentation for object properties

  • Added KnownIds: DiagnosticDeviceTotalIdleFuel

  • Added FuelTransaction API (Beta)

  • HOS/DVIR objects supported in API. Key objects are AnnotationLog, DVIRLog, DutyStatusAvailability, DutyStatusLog, DutyStatusViolation, and ShipmentLog. Check out the API Reference for more details

  • Added Groups property to StatusDataSearch. This allows searching for status data for devices in the supplied groups. This does not return interpolated results

  • Added from/to date search to UserSearch object. Checkout the API Reference for more details

  • API Reference, objects now show properties from inherited classes. For example GoDevice extends Device and will show properties of GoDevice and Device in the documentation

  • Geotab Announces New DEV Channel for Developers

5.7.1505

  • New condition types added - .Net will require dll update

5.7.1504

  • Add KnownId for DiagnosticDeviceTotalIdleFuelId - .Net will require dll update

5.7.1502

  • Get all zones now populating points correctly (see forum post)

  • Fixed TimeZoneInfo isDaylightSavingsSupported always false using .Net API client

  • Units of measure have been converted to use Known Id’s (see forum post)

  • Adding, setting and removing of some entities has been disabled via the API. Exception Event, Trip, Status Data, Fault Data, Log Record with exceptions for adding odometer and engine hours adjustments and dismissing faults

  • Clearer documentation of date and long values in API Reference

  • Data Feed section added to Guides portion of SDK (see document)

\ No newline at end of file diff --git a/resources/new/index.html.gz b/resources/new/index.html.gz deleted file mode 100644 index ab50cddb44ec82551fbb85898e33414ee72c045d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 36309 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 diff --git a/resources/toolkits/index.html b/resources/toolkits/index.html deleted file mode 100644 index 927193f56..000000000 --- a/resources/toolkits/index.html +++ /dev/null @@ -1,5 +0,0 @@ -Toolkits | Geotab Developers
\ No newline at end of file diff --git a/resources/toolkits/index.html.gz b/resources/toolkits/index.html.gz deleted file mode 100644 index 13f4d2c5abc0e8546604621c7e94df3659425951..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3522 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 diff --git a/robots.txt b/robots.txt index d0e5f1be6..9dd52a515 100644 --- a/robots.txt +++ b/robots.txt @@ -1,5 +1,3 @@ -# www.robotstxt.org/ - -# Allow crawling of all content -User-agent: * -Disallow: +# https://www.robotstxt.org/robotstxt.html +User-agent: * +Disallow: diff --git a/sitemap.xml b/sitemap.xml deleted file mode 100644 index 3970b0c89..000000000 --- a/sitemap.xml +++ /dev/null @@ -1,326 +0,0 @@ - - - -https://geotab.github.io/sdk/software/js-samples/ - - -https://geotab.github.io/sdk/software/dotnet-samples/ - - -https://geotab.github.io/sdk/software/guides/developing-addins/addin-icon-validator.html - - -https://geotab.github.io/sdk/software/guides/addin-storage/ - - -https://geotab.github.io/sdk/hardware/addon-protocols/ble/ - - -https://geotab.github.io/sdk/hardware/addon-protocols/can/ - - -https://geotab.github.io/sdk/myadmin-sdk/guides/concepts/ - - -https://geotab.github.io/sdk/software/guides/concepts/ - - -https://geotab.github.io/sdk/software/guides/custom-telematics-devices/ - - -https://geotab.github.io/sdk/software/guides/data-feed/ - - -https://geotab.github.io/sdk/software/guides/developing-addins/ - - -https://geotab.github.io/sdk/myadmin-sdk/code-samples/dotnet-examples/ - - -https://geotab.github.io/sdk/software/guides/drive-addins/ - - -https://geotab.github.io/sdk/software/guides/geotab-data-connector/ - - -https://geotab.github.io/sdk/myadmin-sdk/guides/getting-started/ - - -https://geotab.github.io/sdk/software/guides/getting-started/ - - -https://geotab.github.io/sdk/software/guides/go-device-logging/ - - -https://geotab.github.io/sdk/hardware/hardware-add-on-data-types/ - - -https://geotab.github.io/sdk/hardware/developing-an-iox/hardware-design-guide/ - - -https://geotab.github.io/sdk/ - - -https://geotab.github.io/sdk/myadmin-sdk/introduction/ - - -https://geotab.github.io/sdk/hardware/introduction/ - - -https://geotab.github.io/sdk/software/introduction/ - - -https://geotab.github.io/sdk/myadmin-sdk/code-samples/javascript-examples/ - - -https://geotab.github.io/sdk/software/guides/map-add-ins-docs/ - - -https://geotab.github.io/sdk/software/guides/mygeotab-urls/ - - -https://geotab.github.io/sdk/myadmin-sdk/new/ - - -https://geotab.github.io/sdk/resources/new/ - - -https://geotab.github.io/sdk/software/guides/power-bi/ - - -https://geotab.github.io/sdk/hardware/developing-an-iox/messaging-protocol/ - - -https://geotab.github.io/sdk/hardware/samples/python/ - - -https://geotab.github.io/sdk/software/api/reference/ - - -https://geotab.github.io/sdk/myadmin-sdk/api/reference/ - - -https://geotab.github.io/sdk/hardware/addon-protocols/rs232-usb/ - - -https://geotab.github.io/sdk/software/api/runner.html - - -https://geotab.github.io/sdk/software/guides/third-party-devices/ - - -https://geotab.github.io/sdk/resources/toolkits/ - - -https://geotab.github.io/sdk/software/guides/using-go-devices/ - - -https://geotab.github.io/sdk/software/guides/using-in-dotnet/ - - -https://geotab.github.io/sdk/software/guides/using-in-java/ - - -https://geotab.github.io/sdk/software/guides/using-in-javascript/ - - -https://geotab.github.io/sdk/myadmin-sdk/guides/using-third-party-devices/ - - -https://geotab.github.io/sdk/myadmin-sdk/guides/using-with-dotnet/ - - -https://geotab.github.io/sdk/myadmin-sdk/guides/using-with-javascript/ - - -https://geotab.github.io/sdk/software/api/clients/ - - -https://geotab.github.io/sdk/software/api/codebase/iframe.html -2023-06-06T15:54:05-04:00 - - -https://geotab.github.io/sdk/software/api/samples/add-driver-with-nothing-clearance/sample.html -2023-06-06T15:54:05-04:00 - - -https://geotab.github.io/sdk/software/api/samples/add-driver/sample.html -2023-06-06T15:54:05-04:00 - - -https://geotab.github.io/sdk/software/api/samples/api-call/sample.html -2023-06-06T15:54:05-04:00 - - -https://geotab.github.io/sdk/software/api/samples/calculate-fuel-usage/sample.html -2023-06-06T15:54:05-04:00 - - -https://geotab.github.io/sdk/software/api/samples/create-10-groups-and-add-devices/sample.html -2023-06-06T15:54:05-04:00 - - -https://geotab.github.io/sdk/software/api/samples/current-location-and-driving-status/sample.html -2023-06-06T15:54:05-04:00 - - -https://geotab.github.io/sdk/software/api/samples/device-location/sample.html -2023-06-06T15:54:05-04:00 - - -https://geotab.github.io/sdk/software/api/samples/dvir-unrepaired-defects-last-month/sample.html -2023-06-06T15:54:05-04:00 - - -https://geotab.github.io/sdk/software/api/samples/filter-out-non-valid-position-log-records/sample.html -2023-06-06T15:54:05-04:00 - - -https://geotab.github.io/sdk/software/api/samples/find-current-live-address-of-driver/sample.html -2023-06-06T15:54:05-04:00 - - -https://geotab.github.io/sdk/software/api/samples/find-month-with-the-longest-distance-driven/sample.html -2023-06-06T15:54:05-04:00 - - -https://geotab.github.io/sdk/software/api/samples/generate-addin-guid/sample.html -2023-06-06T15:54:05-04:00 - - -https://geotab.github.io/sdk/software/api/samples/get-all-unbroken-exceptions-for-the-last-week/sample.html -2023-06-06T15:54:05-04:00 - - -https://geotab.github.io/sdk/software/api/samples/get-count-of-stops-at-client-zone/sample.html -2023-06-06T15:54:05-04:00 - - -https://geotab.github.io/sdk/software/api/samples/get-device-speeds-and-road-speeds/sample.html -2023-06-06T15:54:05-04:00 - - -https://geotab.github.io/sdk/software/api/samples/get-fuel-tax-details/sample.html -2023-06-06T15:54:05-04:00 - - -https://geotab.github.io/sdk/software/api/samples/get-lightweight-device-response/sample.html -2023-06-06T15:54:05-04:00 - - -https://geotab.github.io/sdk/software/api/samples/get-odometer-and-vin-for-vehicles-in-a-group/sample.html -2023-06-06T15:54:05-04:00 - - -https://geotab.github.io/sdk/software/api/samples/get-zone-stop-exceptions/sample.html -2023-06-06T15:54:05-04:00 - - -https://geotab.github.io/sdk/software/api/samples/hos-availability-search/sample.html -2023-06-06T15:54:05-04:00 - - -https://geotab.github.io/sdk/software/api/samples/import-usa-states-as-zones/sample.html -2023-06-06T15:54:05-04:00 - - -https://geotab.github.io/sdk/software/api/samples/manipulate-user/sample.html -2023-06-06T15:54:05-04:00 - - -https://geotab.github.io/sdk/software/api/samples/move-vehicle-to-group-and-enable-speed-buzzing/sample.html -2023-06-06T15:54:05-04:00 - - -https://geotab.github.io/sdk/software/api/samples/new/sample.html -2023-06-06T15:54:05-04:00 - - -https://geotab.github.io/sdk/software/api/samples/replace-existing-vehicle-with-new-go-device/sample.html -2023-06-06T15:54:05-04:00 - - -https://geotab.github.io/sdk/software/js-samples/addDriver.html -2023-07-31T14:25:50-04:00 - - -https://geotab.github.io/sdk/software/js-samples/addZone.html -2023-07-31T14:25:50-04:00 - - -https://geotab.github.io/sdk/software/js-samples/dataFeed.html -2023-07-31T14:25:50-04:00 - - -https://geotab.github.io/sdk/software/js-samples/displayOdometer.html -2023-07-31T14:25:50-04:00 - - -https://geotab.github.io/sdk/software/js-samples/getCount.html -2023-07-31T14:25:50-04:00 - - -https://geotab.github.io/sdk/software/js-samples/getLocation.html -2023-07-31T14:25:50-04:00 - - -https://geotab.github.io/sdk/software/js-samples/importDevices.html -2023-09-18T10:34:48-04:00 - - -https://geotab.github.io/sdk/software/js-samples/importGroups.html -2023-07-31T14:25:50-04:00 - - -https://geotab.github.io/sdk/software/js-samples/importHosLogs.html -2023-07-31T14:25:50-04:00 - - -https://geotab.github.io/sdk/software/js-samples/importRoutePlan.html -2023-07-31T14:25:50-04:00 - - -https://geotab.github.io/sdk/software/js-samples/importRoutes.html -2023-07-31T14:25:50-04:00 - - -https://geotab.github.io/sdk/software/js-samples/importUsers.html -2023-07-31T14:25:50-04:00 - - -https://geotab.github.io/sdk/software/js-samples/importZones.html -2023-07-31T14:25:50-04:00 - - -https://geotab.github.io/sdk/software/js-samples/moveZone.html -2023-07-31T14:25:50-04:00 - - -https://geotab.github.io/sdk/software/js-samples/pollTextMessages.html -2023-07-31T14:25:50-04:00 - - -https://geotab.github.io/sdk/software/js-samples/sendTextMessage.html -2023-07-31T14:25:50-04:00 - - -https://geotab.github.io/sdk/software/js-samples/showTrips.html -2023-07-31T14:25:50-04:00 - - -https://geotab.github.io/sdk/software/js-samples/singleSignOn.html -2023-07-31T14:25:50-04:00 - - -https://geotab.github.io/sdk/software/js-samples/starterKit.html -2023-06-06T15:54:05-04:00 - - -https://geotab.github.io/sdk/software/js-samples/statusDataSampler.html -2023-07-31T14:25:50-04:00 - - -https://geotab.github.io/sdk/software/js-samples/toolTemplate.html -2023-07-31T14:25:50-04:00 - - diff --git a/software/api/clients/index.html b/software/api/clients/index.html deleted file mode 100644 index 3b5113aa5..000000000 --- a/software/api/clients/index.html +++ /dev/null @@ -1,75 +0,0 @@ -Clients | Geotab Developers
Edit on GitHub Ask developers in the Community

Clients

The MyGeotab API is language agnostic and can be accessed from languages that support HTTPS requests and JSON.

There are a number of language specific API clients that roll-up some common functionality such as authentication, session management, deserialization, etc. making it easier to hit the ground running in your language of choice.

.Net

Quick Start

Install the NuGet package from the package manager console:

Install-Package Geotab.Checkmate.ObjectModel

Please remember to regularly check for Geotab.Checkmate.ObjectModel nuget package updates. Ideally, your integration should use the same Geotab.Checkmate.ObjectModel nuget package version as the one that your database is on.

Using it in code

var api = new API("user@example.com", "password", null, "database");
-await api.AuthenticateAsync();
-
-var devices = await api.CallAsync<List<Device>>("Get", typeof(Device), new { resultsLimit = 1 });
-

Java

Quick Start

Add the maven dependency

Using it in code

Credentials credentials = Credentials.builder()
-  .database("database")
-  .userName("user@example.com")
-  .password("password")
-  .build();
-
-GeotabApi api = new GeotabApi(credentials);
-
-LoginResult loginResult = api.authenticate();
-
-AuthenticatedRequest<?> request = AuthenticatedRequest.authRequestBuilder()
-    .method("Get")
-    .params(SearchParameters.searchParamsBuilder()
-      .credentials(loginResult.getCredentials()) 
-      .typeName("Device")
-      .build())
-    .build();
-
-Optional<List<Device>> result = api.call(request, DeviceListResponse.class);
-

Javascript

Quick Start

Install the Bower package from the command line:

$ bower install --save mg-api-js

Using it in code (more on github - MyGeotab API wrapper for both clientside JavaScript and NodeJS)

var api = GeotabApi(function (authenticateCallback) {
-    authenticateCallback('my.geotab.com', 'database', 'user@example.com', 'password', function(err) {
-        console.error(err);
-    });
-});
-
-api.call('Get', {
-    typeName: 'Device',
-    resultsLimit: 1
-}, function (result) {
-    if (result) {
-        console.log(result);
-    }
-}, function (err) {
-    console.error(err);
-});
-

Nodejs

Quick Start

Install the NPM package from the command line:

$ npm install mg-api-node --save

Using it in code (more on github - nodejs client for the MyGeotab API)

var api = new API('user@example.com', 'password', 'database');
-api.authenticate(function(err, result) {
-  if(err){
-    console.log('Error', err);
-    return;
-  }
-
-  api.call('Get', {
-    typeName: 'Device',
-    resultsLimit: 1
-  }, function(err, devices) {
-    if(err){
-      console.log('Error', err);
-      return;
-    }
-    console.log('Devices', devices);
-  });
-});
-

Python

Quick Start

Install the library and command line tool:

$ pip install mygeotab

Using it in code (more on github - Python client for the MyGeotab SDK)

>> import mygeotab
->> api = mygeotab.API(username='user@example.com', password='password', database='database')
->> api.authenticate()
-
->> api.get('Device', resultsLimit=1)
-

PHP

Quick Start

Install the composer package from the command line:

$ composer require geotab/mygeotab-php

Using it in code (more on github - Php client for the MyGeotab SDK)

$api = new Geotab\API("user@example.com", "password", "database", "my.geotab.com");
-$api->authenticate();
-
-$api->get("Device", ["resultsLimit" => 1], function ($results) {
-    var\_dump($results);
-}, function ($error) {
-    var\_dump($error);
-});
-
\ No newline at end of file diff --git a/software/api/clients/index.html.gz b/software/api/clients/index.html.gz deleted file mode 100644 index 12d90629a0487ab34f538806cd44fad23b58dfd5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5285 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 diff --git a/software/api/codebase/api.js b/software/api/codebase/api.js deleted file mode 100644 index f10ff3584..000000000 --- a/software/api/codebase/api.js +++ /dev/null @@ -1,636 +0,0 @@ -/** - * @version 2014-07-21 - * @description The Geotab JS API library. - * Used to login and make any API calls to a Geotab server. - * - * Automatically prompts the user to login if the password is changed or if the - * database is moved to another server. - * - * If credentials are required (for example, the first time you've visited the page, the - * database has moved or the user's password has changed, etc.), the "getCredentialsCallback" is executed - * with a callback function that can be used on your end to pass credentials into the system. When - * you call this function, any pending calls will also be completed automatically. - - * @example - * var api = GeotabApi(function(authenticateCallback) { - * // We need credentials; we either never had them, or lost them (the server was moved, password - * // changed, etc.) - * - * someLoginDialog.style.display = "block"; // Show a login dialog - * someLoginButton.addEventListener("click", function () { - * // Call to authenticate - * authenticateCallback(serverField.value, databaseField.value, emailField.value, passwordField.value, function(errorString) { - * alert(errorString); - * }); - * }); - * }) - * @function - * @param {Function} getCredentialsCallback This function is called when this class can't login or is - * fetching credentials for the first time - * @param {Object} [newOptions] Can be used to override default values in the "options" variable - * @param {Object} [customCredentialStore] Override the default localStorage-based credential storage - with a custom storage implementation - */ -var GeotabApi = function (getCredentialsCallback, newOptions, customCredentialStore) { - "use strict"; - var JSONP_REQUESTS_PROPERTY_STR = "geotabJSONP", - credentials, - server, - pendingCalls = [], - options = { - // Use localStorage to store credentials automatically - rememberMe: true, - // Show debugging information (in Chrome dev tools, Firebug, etc.) - debug: true, - // Use JSONP for all calls (for using the API without running a server) - jsonp: false, - // How long to wait for a response from the server (in seconds); 0 (or null) means no timeout. - timeout: 0 - }, - credentialsStore, - /** - * Logs some debug information to the browser console, if options.debug is true - * @private - */ - debugLog = function () { - if (options.debug) { - var logs = [new Date()]; - logs.push.apply(logs, arguments); - console.log.apply(console, logs); - } - }, - /** - * Normalizes and handles errors - * @private - * @param {Object} [error] The error object - * @callback {failureCallback} [errorCallback] The function to call once the error has been normalize. - * It passes back a string for a known error, and the raw error - * object if some custom handling is required. - */ - handleError = function (error, errorCallback, apiCall) { - var errorString; - if (error && error.name && error.message) { - if (error.message === "DbUnavailable") { - error.message = "Database is not available."; - } - errorString = error.message; - } else if (error.target || (error instanceof XMLHttpRequest && error.status === 0)) { - errorString = "Couldn't connect to the server. Please check your network connection, server name and try again."; - } - if (options.debug) { - console.error(errorString, error); - } - if (error && apiCall) { - if (typeof(apiCall) === "string") { - try { - apiCall = JSON.parse(apiCall); - } catch(e) {} - } - error.apiCall = clearPersonalInformation(apiCall); - } - if (errorCallback) { - errorCallback(errorString || "Error", error); - } - }, - /** - * Gets the method call URL - * @private - * @param {String} [method] The method to call on the server - * @return {String} The method call URL string - */ - getCallUrl = function (method) { - var thisServer = server.replace(/\S*:\/\//, "").replace(/\/$/, ""); - return "https://" + thisServer + "/apiv1" + (method ? "/" + method : ""); - }, - /** - * Cleans up the call with the given unique ID - * @private - * @param {String} uid The unique ID of the response callback - */ - cleanupCall = function (uid) { - // Remove this function once we're done with it - var script = document.getElementById(uid); - if (script) { - script.parentNode.removeChild(script); - // Manually garbage-collect the script - for (var prop in script) { - if (script.hasOwnProperty(prop)) { - delete script[prop]; - } - } - } - delete window[JSONP_REQUESTS_PROPERTY_STR][uid]; - }, - /** - * Construct a JSONP request for a Geotab API call - * @private - * @param {String} method The name of the API method - * @param {Object} params The method parameters - * @param {successCallback} callbackSuccess The function that is called if the method call was successful - * @param {failureCallback} [callbackError] The function that is called if the method call failed - * @return {Object} An object with operations for the call. Supported operation(s): abort() - */ - callJSONP = function (method, params, callbackSuccess, callbackError) { - var uid = "json" + (Math.random() * 100).toString().replace(/\./g, ""), - buildParamString = function () { - params = params || {}; - var query = []; - for (var key in params) { - if (params.hasOwnProperty(key)) { - query.push.apply(query, ["&", encodeURIComponent(key), "=", encodeURIComponent(JSON.stringify(params[key]))]); - } - } - return query.join(""); - }, - timeoutTimer; - - window[JSONP_REQUESTS_PROPERTY_STR][uid] = function JSONPResponse(data) { - // Clear timeout timer first - if (timeoutTimer) { - clearTimeout(timeoutTimer); - timeoutTimer = null; - } - - // Try to handle the response from the server - try { - if (data && data.error) { - debugLog(method, "ERROR", data.error); - handleError(data.error, callbackError, {method: method, params: params}); - } - else { - var result = data.result; - debugLog(method, "SUCCESS", { result: result }); - if (callbackSuccess) { - callbackSuccess(result); - } - } - } - finally { - cleanupCall(uid); - } - }; - document.getElementsByTagName("body")[0].appendChild((function () { - var s = document.createElement("script"); - s.type = "text/javascript"; - s.id = uid; - s.async = "async"; - s.src = getCallUrl(method) + "?JSONP=" + JSONP_REQUESTS_PROPERTY_STR + "." + uid + buildParamString(); - s.onerror = function JSONPError(error) { - try { - debugLog("CallJSONP", method, "ERROR", error); - handleError(error, callbackError, {method: method, params: params}); - } - finally { - cleanupCall(uid); - } - }; - return s; - })()); - - if (timeoutTimer) { - clearTimeout(timeoutTimer); - } - if (options.timeout && method !== "Authenticate") { - timeoutTimer = setTimeout(function () { - if (window[JSONP_REQUESTS_PROPERTY_STR].hasOwnProperty(uid)) { - window[JSONP_REQUESTS_PROPERTY_STR][uid]({ - error: { - name: "JSONPTimeout", - message: "Could not complete the JSONP request in a timely manner (" + options.timeout + "s)", - target: document.getElementById(uid) - } - }); - window[JSONP_REQUESTS_PROPERTY_STR][uid] = function () { - cleanupCall(uid); - }; - } - }, options.timeout * 1000); - } - return { - abort: function () { - cleanupCall(uid); - if (errorCallback) { - errorCallback("Cancelled", {}); - } - } - } - }, - - /** - * Goes through params and remove all sensitive information: user session, password etc - * @param {Object} params The API call parameters - * @return {Object} Parameters object with remoted/replaced personal info. - */ - clearPersonalInformation = function(params) { - if (params) { - Object.keys(params).forEach(function(key) { - if (key === "credentials") { - delete params[key]; - } else { - if (key.toLowerCase().indexOf("password") > -1 && typeof(params[key]) === "string") { - params[key] = params[key].replace(/./g, "*"); - } - if (typeof(params[key]) === "object") { - clearPersonalInformation(params[key]); - } - } - }); - } - return params; - }, - /** - * Construct an XMLHttpRequest POST request for a Geotab API call - * @private - * @param {String} method The name of the API method - * @param {Object} params The method parameters - * @param {successCallback} callbackSuccess The function that is called if the method call was successful - * @param {failureCallback} [callbackError] The function that is called if the method call failed - * @return {Object} An object with operations for the call. Supported operation(s): abort() - */ - callXHR = function (method, params, callbackSuccess, callbackError) { - var xhr = new XMLHttpRequest(); - try { - xhr.open("POST", getCallUrl(), true); - } - catch (e) { - handleError(e, callbackError); - return; - } - - xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); - xhr.addEventListener("abort", function (e) { - if (callbackError) { - callbackError("Cancelled", e); - } - }); - xhr.onreadystatechange = function () { - if (xhr.readyState === 4) { - if (xhr.status === 200) { - var data, - error, - result; - try { - data = JSON.parse(xhr.responseText); - if (data && data.error) { - error = data.error; - debugLog(method, "ERROR", error); - handleError(error, callbackError, rpcString || null); - } else { - result = data.result; - debugLog(method, "SUCCESS", { result: result }); - callbackSuccess(result); - } - } - catch (e) { - handleError(e, callbackError, rpcString || null); - } - } else { - debugLog(method, "ERROR", xhr); - handleError(xhr, callbackError, rpcString || null); - } - } - }; - var rpcString; - try { - rpcString = JSON.stringify({ - method: method || "", - params: params - }); - } - catch (e) { - handleError(e, callbackError); - return; - } - if (options.timeout) { - xhr.timeout = options.timeout * 1000; - } - xhr.send("JSON-RPC=" + encodeURIComponent(rpcString)); - return { - abort: function () { - xhr.abort(); - } - } - }, - /** - * Construct a request for a Geotab API call - * @private - * @param {String} method The name of the API method - * @param {Object} params The method parameters - * @param {successCallback} callbackSuccess The function that is called if the method call was successful - * @param {failureCallback} [callbackError] The function that is called if the method call failed - * @return {Object} An object with operations for the call. Supported operation(s): abort() - */ - callBase = function (method, params, callbackSuccess, callbackError) { - if (options.jsonp) { - return callJSONP(method, params, callbackSuccess, callbackError); - } - return callXHR(method, params, callbackSuccess, callbackError); - }, - /** - * Authenticates a Geotab user - * @private - * @param {String} newServer The federation server name string - * @param {String} database The database name - * @param {String} username The username/email to authenticate with - * @param {String} password The password to authenticate with - * @param {successCallback} callbackSuccess The function that is called on the successful authentication - * @param {failureCallback} [callbackError] The function that is called when there is an - * authentication failure with the error string and the - * error objects as parameters - * @return {Object} An object with operations for the call. Supported operation(s): abort() - */ - authenticateWithServer = function (newServer, database, username, password, callbackSuccess, callbackError) { - server = newServer; - // Authenticate the user - return callBase("Authenticate", { - database: database, - userName: username, - password: password - }, function (data) { - if (data.path && data.path !== "ThisServer") { - server = "https://" + data.path + "/"; - } - credentials = data.credentials; - if (options.rememberMe) { - credentialsStore.set(credentials, server); - } - if (callbackSuccess) { - callbackSuccess(credentials); - } - }, callbackError); - }; - - const populateAuthenticationCallbackInner = function (callbackSuccess) { - const authFunc = (newServer, database, username, password, success, error) => { - const innerSuccessCallback = function (credentials) { - success && success(); - if (callbackSuccess) { - callbackSuccess(credentials); - } - // Try again - pendingCalls.forEach(function (p) { - call.apply(this, p); - }); - pendingCalls = []; - }; - return authenticateWithServer(newServer, database, username, password, innerSuccessCallback, error); - } - getCredentialsCallback(authFunc); - }; - - /** - * Populates the authenticate callback with a function. Wrap in a debounce function because it seems to be called - * multiple times. - * @private - * @param {successCallback} [callbackSuccess] Called when we have successfully authenticated - */ - const populateAuthenticationCallback = debounce(populateAuthenticationCallbackInner); - - const calls = (function () { - var calls = [], add = function (call) { - calls.push(call); - }, remove = function (call) { - calls = calls.filter(function (candidate) { - return candidate !== call; - }); - }, abort = function () { - calls.forEach(function (call) { - call && call.abort && call.abort(); - }); - calls = []; - }; - - return { - add: add, remove: remove, abort: abort - } - })(), - /** - * Calls a Geotab method. Handles cases where the credentials have expired or are invalid. - * @public - * @param {String} method The name of the API method - * @param {Object} params The method parameters object. - * @param {successCallback} successCallback The function that is called if the method call was successful - * @param {failureCallback} [errorCallback] The function that is called if the method call failed - * @return {Object} An object with operations for the call. Supported operation(s): abort() - */ - call = function (method, params, successCallback, errorCallback) { - var needsLoginAndCall = function () { - pendingCalls.push([method, params, successCallback, errorCallback]); - var storedCredentials = credentialsStore.get(); - if (storedCredentials && options.rememberMe) { - credentials = storedCredentials.credentials; - server = storedCredentials.server; - // Try again - pendingCalls.forEach(function (p) { - call.apply(this, p); - }); - pendingCalls = []; - } - else { - populateAuthenticationCallback(); - } - }, - apiCall; - - successCallback = successCallback || options.defaultSuccessCallback; - errorCallback = errorCallback || options.defaultErrorCallback; - if (!credentials) { - needsLoginAndCall(); - return { abort: function () {} }; - } - params.credentials = credentials; - apiCall = callBase(method, params, successCallback, function (errorString, errorObject) { - var errors = errorObject.errors; - calls.remove(apiCall); - apiCall = null; - - if (errors && errors[0] && errors[0].name === "InvalidUserException" && method !== "Authenticate") { - // We do have a credentials token, but it's no longer valid - // Let's clear it and save the credentials - credentialsStore.clear(true); - needsLoginAndCall(); - } - else { - if (errorCallback) { - errorCallback(errorString, errorObject); - } - } - }); - calls.add(apiCall); - return apiCall; - }, - /** - * Calls multiple Geotab methods at the same time. Returns an array of results corresponding to the order the calls are passed in - * @public - * @param {Array} calls The calls array. For each entity in this array, we expect a 1 or 2 item array: the first - * item is the method name, and (optionally) the second is an object of the method parameters - * eg. [ - * ["GetVersion"], - * ["Get", { typeName: "Device", search: { serialNumber: "GTA1234556678" } }], - * ["Add", { typeName: "Device", entity: { name: "New Device", serialNumber: "GTA0000000000" }] - * ] - * @param {successCallback} callbackSuccess The function that is called if the method calls were all successful - * @param {failureCallback} [callbackError] The function that is called if any method call failed - * @return {Object} An object with operations for the call. Supported operation(s): abort() - */ - multiCall = function (calls, callbackSuccess, callbackError) { - var formattedCalls = calls.map(function (call) { - var params = call[1]; - return { - method: call[0], - params: params - }; - }); - return call("ExecuteMultiCall", { - calls: formattedCalls - }, callbackSuccess, callbackError); - }, - /** - * Retrieves a session. Useful for single sign-on or other cases where you require the credentials - * @param {successCallback} callbackSuccess The function that is called if the retrieval of sessionId was successful - * @param {Boolean} [newSession] If true, always retrieve a new session from the server. Otherwise, return the current session (if active) or - * retrieve a new one from the server if there are no active sessions - */ - getSession = function (callbackSuccess, newSession) { - var storedCredentials = credentialsStore.get(); - if (!newSession && storedCredentials && options.rememberMe) { - if (callbackSuccess) { - callbackSuccess(storedCredentials.credentials, storedCredentials.server); - } - return; - } - populateAuthenticationCallback(function () { - if (callbackSuccess) { - // At this point, "credentials" and "server" have been set within populateAuthenticationCallback() - callbackSuccess(credentials, server); - } - }); - }, - /** - * Clears credentials and the credential store. - * @public - */ - forget = function (successCallback) { - credentials = null; - credentialsStore.clear(); - populateAuthenticationCallback(successCallback || null); - }, - setDefaultHandlers = function(successHandler, errorHandler) { - options.defaultSuccessCallback = successHandler; - options.defaultErrorCallback = errorHandler; - }; - - // Overrides default options with passed in ones, if there are any - if (newOptions) { - for (var prop in newOptions) { - if (newOptions.hasOwnProperty(prop)) { - options[prop] = newOptions[prop]; - } - } - } - - // Creates a property for managing open requests - window[JSONP_REQUESTS_PROPERTY_STR] = {}; - - /** - * The default credentials store. Uses localStorage to save and retrieve - * credentials to save a user's session. - */ - var defaultCredentialsStore = { - CREDENTIALS_KEY: "geotabAPI_credentials", - SERVER_KEY: "geotabAPI_server", - POSSIBLE_CREDENTIALS_KEY: "sTokens_geotabdemo", - /** - * Gets the credentials from localStorage - * @returns {*} An object with two properties: "server", a server name - * string, and "credentials", a credentials object - */ - get: function () { - var storedCredentials = localStorage.getItem(this.CREDENTIALS_KEY), - storedServer = localStorage.getItem(this.SERVER_KEY), - thisCredentials = false; - - if (!storedCredentials || !storedServer) { - storedCredentials = localStorage.getItem(this.POSSIBLE_CREDENTIALS_KEY); - if (storedCredentials) { - storedServer = window.location.host; - } - } - - if (storedCredentials && storedServer) { - try { - thisCredentials = { - credentials: JSON.parse(storedCredentials), - server: storedServer - }; - } - catch (e) { - // Malformed JSON - return false; - } - } - return thisCredentials; - }, - /** - * Saves the credentials into localStorage - * @param {Object} credentials The credentials object - * @param {String} server The server string - */ - set: function (credentials, server) { - localStorage.setItem(this.CREDENTIALS_KEY, JSON.stringify(credentials)); - localStorage.setItem(this.SERVER_KEY, server); - }, - - /** - * Clears the credentials from localStorage - */ - clear: function () { - localStorage.removeItem(this.CREDENTIALS_KEY); - localStorage.removeItem(this.SERVER_KEY); - localStorage.removeItem(this.POSSIBLE_CREDENTIALS_KEY); - } - }; - - // If applicable, overrides default credentials storage implementation with a - // custom one that was passed into the constructor - credentialsStore = customCredentialStore || defaultCredentialsStore; - - // Public methods - return { - call: call, - multiCall: multiCall, - abort: calls.abort, - forget: forget, - getSession: getSession, - setDefaultHandlers: setDefaultHandlers - }; -}; - -if (typeof define !== 'undefined' && define.amd) { - // AMD. Register as an anonymous module. - define(function () { - 'use strict'; - return GeotabApi; - }); -} - -function debounce(func) { - let timeoutId = -1; - return args => { - clearTimeout(timeoutId); - timeoutId = setTimeout(() => func(args), 200); - } -} - -// JSDoc Addenda -/** - * This callback is called when a web request is successful - * @callback successCallback - * @param {*} [response] The response array or object - */ -/** - * This callback is called when a web request is successful - * @callback failureCallback - * @param {String} errorString The human-readable error string - * @param {Object} errorObject The error object (could be a JS Error object, JS Event object, XMLHttpRequest object, or MyGeotab error object) - */ diff --git a/software/api/codebase/console.css b/software/api/codebase/console.css deleted file mode 100644 index f0725f72e..000000000 --- a/software/api/codebase/console.css +++ /dev/null @@ -1,82 +0,0 @@ -.console { - font-family: Consolas, Lucida Console, monospace; - font-size: 13px; -} -.consoleRecord { - margin: 4px; - box-sizing: border-box; - padding: 4px 8px; - border-bottom: 1px solid #efefef; -} -.consoleItem { - display: inline-block; - vertical-align: top; - margin-right: 10px; - max-width: 100%; - word-wrap: break-word; -} -.consoleError { - color: #ff0000; -} -.data-object-line { - display: block; -} -.data-object-children { - padding-left: 20px; - display: block; -} -.data-object-children-hidden { - display: none; -} -.data-object-title { - cursor: default; -} -.data-object-marker { - display: inline-block; - width: 10px; -} -.data-object-key { - color: #952e8e; -} -.data-object-inactive-key { - color: #cfa2d3; -} -.data-object-string-value { - color: #c4211d; -} -.data-number-value, -.data-boolean-value { - color: #523dd9; -} - -/* Animations for new records added to the console */ -.pulse { - animation: pulse .3s; - animation-iteration-count: 1; -} -.pulse-error { - animation: pulse-error .3s; - animation-iteration-count: 1; -} -@keyframes pulse { - 0% { - background-color: #faf8f8; - } - 50% { - background-color: rgba(37, 220, 37, 0.09); - } - 100% { - background-color: #faf8f8; - } -} -@keyframes pulse-error { - 0% { - background-color: #faf8f8; - } - 50% { - background-color: rgba(142, 2, 21, 0.13); - } - 100% { - background-color: #faf8f8; - } -} \ No newline at end of file diff --git a/software/api/codebase/console.js b/software/api/codebase/console.js deleted file mode 100644 index bf0644758..000000000 --- a/software/api/codebase/console.js +++ /dev/null @@ -1,274 +0,0 @@ -var ConsoleManager = (function() { - var consolePreviewer = function(data, container) { - var renderObject = function(key, data, parent, isChildProperty, isInactive) { - var type = typeof(data); - - if (type === "object") { - if (Array.isArray(data)) { - type = "array"; - } - } - if (data === null) { - data = "null"; - type = "string"; - } - if (data === undefined) { - data = "undefined"; - type = "string"; - } - if (renderers[type]) { - renderers[type](key, data, parent, isChildProperty, isInactive); - } - }, - createElement = function(tag, className, innerHTML) { - var element = document.createElement(tag); - element.className = className; - element.innerHTML = htmlEscape(innerHTML); - return element; - }, - renderers = { - "string": function(key, data, parent, isChildProperty, isInactive) { - var marker = key ? createElement("span", "data-object-marker", "") : null, - keyClassName = isInactive ? "data-object-inactive-key" : "data-object-key", - keyElement = key ? createElement("span", keyClassName, key + ": ") : null, - valueClassName = key ? "data-object-string-value" : "data-string-value", - dataWithQuotes = isChildProperty ? "\"" + data + "\"" : data, - value = createElement("span", valueClassName, dataWithQuotes); - - marker && parent.appendChild(marker); - keyElement && parent.appendChild(keyElement); - parent.appendChild(value); - }, - "function": function(key, data, parent, isChildProperty, isInactive) { - var marker = key ? createElement("span", "data-object-marker", "") : null, - keyClassName = isInactive ? "data-object-inactive-key" : "data-object-key", - keyElement = key ? createElement("span", keyClassName, key + ": ") : null, - valueClassName = "data-function-value", - dataWithQuotes = "function() { ... }", - value = createElement("span", valueClassName, dataWithQuotes); - - marker && parent.appendChild(marker); - keyElement && parent.appendChild(keyElement); - parent.appendChild(value); - }, - "boolean": function(key, data, parent, isChildProperty, isInactive) { - var marker = key ? createElement("span", "data-object-marker", "") : null, - keyClassName = isInactive ? "data-object-inactive-key" : "data-object-key", - keyElement = key ? createElement("span", keyClassName, key + ": ") : null, - value = createElement("span", "data-boolean-value", data ? "true" : "false"); - - marker && parent.appendChild(marker); - keyElement && parent.appendChild(keyElement); - parent.appendChild(value); - }, - "number": function(key, data, parent, isChildProperty, isInactive) { - var marker = key ? createElement("span", "data-object-marker", "") : null, - keyClassName = isInactive ? "data-object-inactive-key" : "data-object-key", - keyElement = key ? createElement("span", keyClassName, key + ": ") : null, - value = createElement("span", "data-number-value", "" + data); - - marker && parent.appendChild(marker); - keyElement && parent.appendChild(keyElement); - parent.appendChild(value); - }, - "object": function(key, data, parent, isChildProperty) { - var isEmpty = (function(data) { - var i; - for (i in data) { - if (data.hasOwnProperty(i)) { - return false; - } - } - return true; - })(data), - title = createElement("span", "data-object-title", ""), - marker = createElement("span", "data-object-marker", "+"), - keyElement = isChildProperty ? createElement("span", "data-object-key", key + ": ") : null, - value = createElement("span", "data-object-value", "Object"), - preview = !isChildProperty ? createElement("span", "data-object-preview", " { " + (!isEmpty ? "... " : "") + "}") : null, - children = createElement("span", "data-object-children-hidden", ""); - - if (isEmpty) { - if (isChildProperty) { - title.appendChild(marker); - title.appendChild(keyElement); - } - if (preview !== null) { - title.appendChild(preview); - } else { - title.appendChild(value); - } - parent.appendChild(title); - parent.appendChild(children); - } else if (!isChildProperty) { - title.appendChild(marker); - title.appendChild(value); - title.appendChild(preview); - parent.appendChild(title); - parent.appendChild(children); - } else { - title.appendChild(marker); - title.appendChild(keyElement); - title.appendChild(value); - parent.appendChild(title); - parent.appendChild(children); - } - - title.addEventListener("click", function() { - var className = children.className, - isRendered = children.innerHTML.length > 0, - isOpened = className.indexOf("data-object-children-hidden") === -1; - - if (!isRendered) { - natSort(Object.keys(data)).forEach(function (key) { - var line = createElement("span", "data-object-line", ""); - renderObject(key, data[key], line, true); - children.appendChild(line); - }); - } - children.className = isOpened ? "data-object-children-hidden" : "data-object-children"; - marker.innerHTML = isOpened ? "+" : "-"; - }, false); - }, - "array": function(key, data, parent, isChildProperty) { - var title = createElement("span", "data-object-title", ""), - marker = createElement("span", "data-object-marker", "+"), - keyElement = isChildProperty ? createElement("span", "data-object-key", key + ": ") : null; - - let arrayLabel = 'Array'; - const value = createElement("span", "data-object-value", `${arrayLabel}[${data.length}]`), - preview = !isChildProperty ? createElement("span", "data-object-preview", " [ ... ]") : null, - children = createElement("span", "data-object-children-hidden", ""); - - if (!isChildProperty) { - title.appendChild(marker); - title.appendChild(value); - title.appendChild(preview); - parent.appendChild(title); - parent.appendChild(children); - } else { - title.appendChild(marker); - title.appendChild(keyElement); - title.appendChild(value); - parent.appendChild(title); - parent.appendChild(children); - } - - title.addEventListener("click", function() { - var className = children.className, - isRendered = children.innerHTML.length > 0, - isOpened = className.indexOf("data-object-children-hidden") === -1, - line, - renderChild = function(key, value, isInactive) { - var line = createElement("span", "data-object-line", ""); - renderObject(key, value, line, true, isInactive); - children.appendChild(line); - }; - - if (!isRendered) { - natSort(Object.keys(data)).concat().forEach(function (key) { - renderChild(key, data[key]); - }); - renderChild("length", data.length, true); - } - children.className = isOpened ? "data-object-children-hidden" : "data-object-children"; - marker.innerHTML = isOpened ? "+" : "-"; - }, false); - } - }, - clear = function() { - data = null; - container = null; - }; - - renderObject(null, data, container); - return { - clear: clear - }; - }, - - natSort = function(array) { - return array.sort(function(a, b) { - var aa = parseInt(a), - bb = parseInt(b), - aIsNum = !isNaN(aa), - bIsNum = !isNaN(bb); - - a = aIsNum ? aa : a; - b = bIsNum ? bb : b; - - if (aIsNum && !bIsNum) { - return -1; - } - if (!aIsNum && bIsNum) { - return 1; - } - return a > b ? 1 : -1; - }); - }, - - htmlEscape = function (str) { - return String(str || "") - .replace(/&/g, '&') - .replace(/"/g, '"') - .replace(/'/g, ''') - .replace(//g, '>'); - }; - - return function(containerId) { - var container = document.getElementById(containerId), - render = function() {}, - getConsoleRecord = function(isError = false) { - var record = document.createElement("div"); - record.className = !isError ? "consoleRecord pulse" : "consoleRecord pulse-error"; - return record; - }, - views = [], - consoleLog = function() { - var record = getConsoleRecord(); - [].forEach.call(arguments, function(argument) { - var item = document.createElement("span"); - item.className = "consoleItem"; - record.appendChild(item); - views.push(consolePreviewer(argument, item)); - }); - container.appendChild(record); - console.log.apply(console, arguments); - record.scrollIntoView(); - }, - consoleError = function() { - var record = getConsoleRecord(true); - [].forEach.call(arguments, function(argument) { - var item = document.createElement("span"); - item.className = "consoleItem consoleError"; - if (typeof(argument) === "object" && argument.message) { - argument = argument.message + (argument.url ? " (" + argument.url + (argument.position ? ":" + argument.position : "") + ")" : ""); - } - item.innerHTML = htmlEscape(argument); - record.appendChild(item); - }); - container.appendChild(record); - console.error.apply(console, arguments); - record.scrollIntoView(); - }, - process = function(value) { - return value; - }, - clear = function() { - views.forEach(function(view) { - view.clear(); - }); - views = []; - container.innerHTML = ""; - }; - - return { - render: render, - process: process, - log: consoleLog, - error: consoleError, - clear: clear - }; - }; -})(); \ No newline at end of file diff --git a/software/api/codebase/githubApi.js b/software/api/codebase/githubApi.js deleted file mode 100644 index 8d6e16638..000000000 --- a/software/api/codebase/githubApi.js +++ /dev/null @@ -1,189 +0,0 @@ -var GithubApi = function(userName, repoName) { - var github = new Github({}), - repo = github.getRepo(userName, repoName), - - getSamples = function(successCallback, errorCallback) { - window.setTimeout(function() { - var samples = document.querySelectorAll(".sample-sample"); - successCallback([].map.call(samples, function(sample) { - var sampleId = sample.id, - sampleName = sampleId; - - sampleName = sampleName.replace(/\-/g, " "); - sampleName = sampleName[0].toUpperCase() + sampleName.substr(1); - return { - id: sampleId, - name: sampleName - }; - })); - }, 500); - /*repo.contents("master", ".", function(err, topFiles) { - if (err) { - errorCallback(err); - } else { - successCallback(topFiles.filter(function(file) { - return file.type === "dir"; - }).map(function (file) { - return file.name; - })); - } - });*/ - }, - getSample = function(sampleName, successCallback, errorCallback) { - window.setTimeout(function() { - var sampleContainer = document.getElementById(sampleName), - options, temp; - - sampleContainer = sampleContainer || document.getElementById("device-location"); - options = sampleContainer.querySelector(".sample-options").innerHTML; - try { - eval("temp = " + options); - options = temp; - } catch (e) { - options = {}; - } - successCallback({ - js: sampleContainer.querySelector(".sample-js").innerHTML.replace(/&/g, "&").replace(/</g, "<").replace(/>/g, ">"), - css: sampleContainer.querySelector(".sample-css").innerHTML.replace(/&/g, "&").replace(/</g, "<").replace(/>/g, ">"), - html: sampleContainer.querySelector(".sample-html").innerHTML.replace(/&/g, "&").replace(/</g, "<").replace(/>/g, ">"), - options: options - }); - }, 500); - }; - - return { - getSamples: getSamples, - getSample: getSample - }; -}; - - -var SamplesApi = function() { - var samples = [ - "new", - "api-call", - "device-location", - "current-location-and-driving-status", - "move-vehicle-to-group-and-enable-speed-buzzing", - "get-odometer-and-vin-for-vehicles-in-a-group", - "add-driver", - "replace-existing-vehicle-with-new-go-device", - "find-current-live-address-of-driver", - "add-driver-with-nothing-clearance", - "manipulate-user", - "get-zone-stop-exceptions", - "get-device-speeds-and-road-speeds", - "get-count-of-stops-at-client-zone", - "create-10-groups-and-add-devices", - "dvir-unrepaired-defects-last-month", - "hos-availability-search", - "find-month-with-the-longest-distance-driven", - "get-all-unbroken-exceptions-for-the-last-week", - "filter-out-non-valid-position-log-records", - "calculate-fuel-usage", - "import-usa-states-as-zones", - "get-fuel-tax-details", - "generate-addin-guid", - "get-lightweight-device-response" - ], - createXHR = ((typeof (window) !== 'undefined' && window.XMLHttpRequest) ? - function () { - return new XMLHttpRequest(); - } : - function () { - return new ActiveXObject('Microsoft.XMLHTTP'); - } - ), - load = function (url, successCallback, errorCallback) { - var xhr = createXHR(), - isGet = true; - - xhr.open("get", url, true); - xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); - xhr.onreadystatechange = function() { - if (xhr.readyState == 4) { - if (xhr.status === 200){ - successCallback(xhr.responseText); - } else { - errorCallback(url, xhr); - } - xhr.onreadystatechange = null - } - }; - xhr.timeout = 30000; - xhr.ontimeout = function () { - errorCallback(url, xhr); - }; - xhr.send(!isGet && params ? params : null); - return xhr; - }, - - getSamples = function(successCallback, errorCallback) { - - window.setTimeout(function() { - successCallback(samples.map(function(sampleId) { - var sampleName = sampleId; - - sampleName = sampleName.replace(/\-/g, " "); - sampleName = sampleName[0].toUpperCase() + sampleName.substr(1); - - return { - id: sampleId, - name: sampleName - }; - })); - }, 1); - }, - getSample = function(sampleName, successCallback, errorCallback) { - var result = {}, - isAllLoaded = function() { - var options = ["js", "css", "html", "options"], - isOptionLoaded = function(option) { - return typeof(result[option]) !== "undefined"; - }; - - if (options.every(isOptionLoaded)) { - successCallback(result); - } - }, - getSuccessCallback = function(language) { - return function(content) { - if (language === "js") { - content = content.replace(/(\r?\n)?\/\*opt nomin\*\/\s*\n\s*self\.geotab \&\& geotab\.declare\(\".+\"\);\s*$/, ""); - } - result[language] = content; - isAllLoaded(); - }; - }, - isErrorHandlerCalled = false, - errorHandler = function(url) { - if (!isErrorHandlerCalled) { - isErrorHandlerCalled = true; - errorCallback("Can't load sample file: " + url); - requests.forEach(function (xhr) { - xhr.abort && xhr.abort(); - }); - requests = []; - } - }, - requests = []; - - requests.push(load("samples/" + sampleName + "/sample.js", getSuccessCallback("js"), errorHandler)); - requests.push(load("samples/" + sampleName + "/sample.css", getSuccessCallback("css"), errorHandler)); - requests.push(load("samples/" + sampleName + "/sample.html", getSuccessCallback("html"), errorHandler)); - requests.push(load("samples/" + sampleName + "/config.json", function(options) { - try { - options = JSON.parse(options); - } catch (e) { - options = {}; - } - result.options = options; - isAllLoaded(); - }, errorHandler)); - }; - - return { - getSamples: getSamples, - getSample: getSample - }; -}; diff --git a/software/api/codebase/iframe.html b/software/api/codebase/iframe.html deleted file mode 100644 index 75ed12ab5..000000000 --- a/software/api/codebase/iframe.html +++ /dev/null @@ -1,188 +0,0 @@ -API Runner \ No newline at end of file diff --git a/software/api/codebase/iframe.html.gz b/software/api/codebase/iframe.html.gz deleted file mode 100644 index a8d8502ade1ef4e4b0481b501e142f057a925731..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1649 zcmV-%29Eh3iwFP!000001MM13lhZcz&aV(YfK!6g-a6jR&M;d#h3Nvr!ii-V#a6Of z9LtsDT{4jW-uEOsksVuha-&lp;#huq-=9j(AEzSGn}U&Bz0NMq@sngUU(Hz#PmHD) z=WC`ZNp7iBOwT`l`1ASi7w4Mmj9t8V_lmqP^PI`^nO!+oiR6VQN+$DYrf<1SpBGf> z&FuB{+c(ee)GXN~8H?@|L8^1jzUkQ=y{FZ_noOyeNM>f2YqS?DCNy1;Ir;vGIG1Gq zlw7iyEXzF6T;yT3qNXGfxze&sw2+h5HoW+f?0}<;!6aDz;u+J-S@bZ{{i+hFpD6fMj2~V-#`rNLXilgX3>zjW1$V+C=taRg2tI)V)v>!)zg>j>q|8Eu_Qj5O`Zw8;K1J{i&m0 ztoo|(fG-SW!_lF07&l9vX(q4sb+*A?PVPrYvOWqj#ptRg_d_t zOyCvRk%lb7H3&K^G*ieP2$pNJ6xR7fMfdQ9AK5+M#FtYrB zb%HA3gE7&B*rQg4u$&qB2cn6v3{v$-Dvh)=o`&~rM=}_p)}Hu1bjA+%s4_le*_Zc_ z^Z({bGZ>!2plY3iX)DCxnSz!k9k{&d6bo!@KD+p8JRTHiTJXWv0%D|lJhI-p+Y6)P zt$;EDF+|rV*LO!;J3U3!C=xpJ9*kx8YzlC9EYU;WTaPLcswf=xL5z=>1SnoG+{9a{ znil z(?czeDW&E(5r%Y&S^7=ZgSBEw_2UolOuVL-ltc5L@Q?!AC zxVk`bKCo|I*G)xI;>lpN5a}l3cxYOosdt~i2&kozXOtRZ!%yC6ZCiUfP4p z@Tt<9j6L-z8MZh0uc&&g(hwbwLi6Bg(PPcP0t8(hWD^Gz1N}k+JBw1YFu2tKE zMTDiby?c6ycjS3)4Sqt|IA+et1WkkK@DWd|L#aCuaP4#xU>SC+QWIYnpIgryWsb@$ zzg1oCW6J6{O4*XhFT zbu?~y_TC{UgE)LWig|zZ4Bmrqq}@zk^%GmJ;{U&8yUI!;H_|na7L2B*q?Fl|WMJAU zDTLzq(x>U>FSw%yrMUj$S1vFT8*aQ%$Z2f(^}^M%#Jg`eIs_l{ueo^0gH!VK!P1eZ vN?3C2OgAw5#`~|Hf*RY~m=h}Jcj}q_Qv!Aj@KD{%pBMfGpiIZ7%pd>&l)x^^ diff --git a/software/api/codebase/main.css b/software/api/codebase/main.css deleted file mode 100644 index 20fb52765..000000000 --- a/software/api/codebase/main.css +++ /dev/null @@ -1,256 +0,0 @@ -html, body, .api { - width: 100%; - height: 100%; -} - -main { - height: calc(100% - 80px); -} - -article { - height: 100%; -} - -.api { - display: flex; - flex-direction: column; -} - -.container-fluid, .row { - height: 100%; -} - -footer { - z-index: 1000; -} - -.toolbar { - width: 100%; - background-color: #ffffff; - padding: 1rem 0; - box-sizing: border-box; - display: flex; - flex-direction: row; - flex-wrap: wrap; - align-items: center; -} -.content { - width: 100%; - box-sizing: border-box; - flex-grow: 1; - overflow: hidden; - margin: 2px; - padding: 2px; -} -.content .pane { - box-sizing: border-box; - -moz-box-sizing: border-box; - border: 1px solid #cccccc; - overflow: auto; -} -.content .pane.noborder { - border: 0; -} -.content .pane.hidden, -.content .editor.hidden { - display: none !important; -} -.content .pane-header { - position: absolute; - right: 0; - top: 0; - border-left: 1px solid #cccccc; - border-bottom: 1px solid #cccccc; - padding: 6px; - z-index: 100; - width: fit-content; - text-align: center; - background-color: #ffffff; - transition: opacity 0.1s ease; - border-bottom-left-radius: 3px; - opacity: .8; -} -.pane-header.selected { - background-color: #bbbbbb; -} -.content .pane-header:hover { - opacity: 0.1; -} -.content .pane-content { - width: 100%; - height: 100%; -} - -.content { - display: flex; - flex-direction: row; -} - -.source { - width: 100%; - height: 100%; - box-sizing: border-box; -} - -/* Login dialog */ -.login { - position: absolute; - left: 0; - top: 0; - width: 100%; - height: 100%; -} -.login .overlay { - position: absolute; - left: 0; - top: 0; - width: 100%; - height: 100%; - background-color: #000000; - opacity: 0.3; - z-index: 100; -} -.login .dialog { - position: absolute; - left: calc(50% - 250px); - top: calc(50% - 150px); - z-index: 101; - width: 500px; - box-sizing: border-box; - -moz-box-sizing: border-box; - background-color: #ffffff; - border: 1px solid #cccccc; - padding: 30px; -} - -.login .dialog .line { - margin-bottom: 10px; -} - -.login .dialog .line:after { - display: table; - content: " "; - clear: both; -} - -.login .dialog .line.error { - border: 1px solid #ce838f; - background-color: #f2dede; - color: #b94a48; - font-size: 16px; - padding: 10px; -} - -.login .dialog .line:last-child { - margin-bottom: 0; -} - -.login .dialog .line label, -.login .dialog .line input { - font-family: inherit; - font-size: 16px; - display: block; - box-sizing: border-box; - float: left; - padding: 8px 10px; -} - -.login .dialog .line label { - font-weight: bold; - width: 40%; -} -.login .dialog .line input { - width: 60%; -} - -.login .dialog .geotabButton { - float: right; - margin-right: 0; - margin-left: 10px; -} - -.login .dialog .line #loginButton { - font-size: 16px; - float: right; - width: 60%; - height: 38px; -} - -.login .dialog .line .geotabText { - font-size: 14px; - line-height: 20px; -} - -.login .dialog .line .bold { - font-weight: bold; -} - -#loggedUser.login .dialog .geotabLabel { - font-weight: normal; - line-height: 2em; -} - -#loggedUser.login .dialog .geotabLabel .username { - font-weight: bold; -} - -#shareDialog .geotabLabel { - padding: 0 0 10px 0; -} - -#shareDialog .gray { - color: #949494; - font-size: 12px; - font-weight: normal; -} - -#shareTextarea { - width: 100%; - height: 80px; - font-family: inherit; - font-weight: normal; - font-size: 15px; - padding: 10px; - box-sizing: border-box; - overflow: hidden; - border: 1px #ddd solid; -} - -#securityDialog #securityCancel { - background-color: #56B056; -} -#securityDialog #securityConfirm { - color: #fd9595; - padding: 11px; - display: block; - float: right; - cursor: pointer; - text-decoration: none; -} - -#securityDialog #securityConfirm:hover { - text-decoration: underline; -} - -#securityDialog .geotabLabel { - padding: 0; - min-height: 30px; -} - -.consoleRecord:hover { - background-color: #fbfafabf; -} - -.data-object-line:hover { - background-color: #bbbbbb2b; -} - -@media (max-width: 711px) { - #toolbar > div { - flex-direction: column; - align-items: center - } - #toolbar > div > div.ml-auto { - margin-left: unset !important; - } -} diff --git a/software/api/codebase/promise.js b/software/api/codebase/promise.js deleted file mode 100644 index 8b7986a20..000000000 --- a/software/api/codebase/promise.js +++ /dev/null @@ -1,174 +0,0 @@ -geotab.require([], function(){ - "use strict"; - geotab.declare("geotab"); - - if (window.Promise && !geotab.isPromiseTest) { - geotab.promise = function(fn) { - return new Promise(fn); - }; - geotab.promise.all = function(promises) { - return Promise.all(promises); - }; - geotab.promise.race = function(promises) { - return Promise.race(promises); - }; - geotab.promise.resolve = function(value) { - return Promise.resolve(value); - }; - geotab.promise.reject = function(reason) { - return Promise.reject(reason); - }; - } else { - // ES6 Promise polyfill - geotab.promise = function (fn) { - var PENDING = "pending", - FULFULLED = "fulfilled", - REJECTED = "rejected", - state = PENDING, - value, - deferred = [], - - getFinalizer = function (methodState) { - return function (newValue) { - var i; - if (state === PENDING) { - value = newValue; - state = methodState; - - if (deferred) { - for (i = 0; i < deferred.length; i++) { - handle(deferred[i]); - } - } - } - }; - }, - resolve = getFinalizer(FULFULLED), - reject = getFinalizer(REJECTED), - - isPromise = function (candidate) { - return candidate && typeof(candidate.then) === "function"; - }, - handle = function (handler) { - if (state === PENDING) { - deferred.push(handler); - } else { - var handlerCallback, - returnValue, - isFulfilled = state === FULFULLED, - callRejected = false; - - if (isFulfilled) { - handlerCallback = handler.onResolved; - } else { - handlerCallback = handler.onRejected; - callRejected = !handlerCallback; - } - - try { - returnValue = handlerCallback ? handlerCallback(value) : value; - } catch (e) { - returnValue = e; - callRejected = true; - } - if (isPromise(returnValue)) { - returnValue.then(function (promiseValue) { - handler.resolve(promiseValue); - return promiseValue; - }, function (promiseError) { - handler.reject(promiseError); - return promiseError; - }); - } else { - if (callRejected) { - handler.reject(returnValue); - } else { - handler.resolve(returnValue); - } - } - } - }, - thenHandler = function (onResolved, onRejected) { - return geotab.promise(function (resolve, reject) { - window.setTimeout(function () { - handle({ - onResolved: onResolved || null, - onRejected: onRejected || null, - resolve: resolve, - reject: reject - }); - }, 1); - }); - }, - catchHandler = function (onRejected) { - return thenHandler(null, onRejected); - }; - - if (typeof fn === "function"){ - try { - fn(resolve, reject); - } catch (e) { - reject(e); - } - } else { - throw new TypeError("Promise resolver " + fn + " is not a function"); - } - - return { - "catch": catchHandler, - then: thenHandler - }; - }; - - geotab.promise.all = function(iterable) { - return geotab.promise(function(resolve, reject) { - var completeCount = 0, - results = [], - hasErrors = false, - promisesCount = iterable.length; - - iterable.forEach(function(p, index) { - results[index] = undefined; - p.then(function(value) { - if (!hasErrors) { - completeCount++; - results[index] = value; - if (completeCount === promisesCount) { - resolve(results); - } - } - }, function(error) { - completeCount++; - reject(error); - hasErrors = true; - }); - }); - }); - }; - geotab.promise.race = function(iterable) { - return geotab.promise(function(resolve, reject) { - iterable.forEach(function(p) { - p.then(function(value) { - resolve(value); - }, function(error) { - reject(error); - }); - }); - }); - }; - - geotab.promise.resolve = function(value) { - return geotab.promise(function(resolve) { - resolve(value); - }); - }; - geotab.promise.reject = function(reason) { - return geotab.promise(function(resolve, reject) { - reject(reason); - }); - }; - } - - //prevent further modifications - Object.freeze(geotab.promise); -}); \ No newline at end of file diff --git a/software/api/codebase/third-party/Base64.js/LICENSE b/software/api/codebase/third-party/Base64.js/LICENSE deleted file mode 100644 index 483276716..000000000 --- a/software/api/codebase/third-party/Base64.js/LICENSE +++ /dev/null @@ -1,14 +0,0 @@ - - DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE - Version 2, December 2004 - - Copyright (c) 2011..2012 David Chambers - - Everyone is permitted to copy and distribute verbatim or modified - copies of this license document, and changing it is allowed as long - as the name is changed. - - DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. You just DO WHAT THE FUCK YOU WANT TO. diff --git a/software/api/codebase/third-party/Base64.js/base64.min.js b/software/api/codebase/third-party/Base64.js/base64.min.js deleted file mode 100644 index 716037ba2..000000000 --- a/software/api/codebase/third-party/Base64.js/base64.min.js +++ /dev/null @@ -1 +0,0 @@ -(function(r){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=r()}else if(typeof define==="function"&&define.amd){define([],r)}else{var e;if(typeof window!=="undefined"){e=window}else if(typeof global!=="undefined"){e=global}else if(typeof self!=="undefined"){e=self}else{e=this}e.base64js=r()}})(function(){var r,e,t;return function r(e,t,n){function o(i,a){if(!t[i]){if(!e[i]){var u=typeof require=="function"&&require;if(!a&&u)return u(i,!0);if(f)return f(i,!0);var d=new Error("Cannot find module '"+i+"'");throw d.code="MODULE_NOT_FOUND",d}var c=t[i]={exports:{}};e[i][0].call(c.exports,function(r){var t=e[i][1][r];return o(t?t:r)},c,c.exports,r,e,t,n)}return t[i].exports}var f=typeof require=="function"&&require;for(var i=0;i0){throw new Error("Invalid string. Length must be a multiple of 4")}return r[e-2]==="="?2:r[e-1]==="="?1:0}function c(r){return r.length*3/4-d(r)}function v(r){var e,t,n,i,a;var u=r.length;i=d(r);a=new f(u*3/4-i);t=i>0?u-4:u;var c=0;for(e=0;e>16&255;a[c++]=n>>8&255;a[c++]=n&255}if(i===2){n=o[r.charCodeAt(e)]<<2|o[r.charCodeAt(e+1)]>>4;a[c++]=n&255}else if(i===1){n=o[r.charCodeAt(e)]<<10|o[r.charCodeAt(e+1)]<<4|o[r.charCodeAt(e+2)]>>2;a[c++]=n>>8&255;a[c++]=n&255}return a}function l(r){return n[r>>18&63]+n[r>>12&63]+n[r>>6&63]+n[r&63]}function h(r,e,t){var n;var o=[];for(var f=e;fd?d:u+a))}if(o===1){e=r[t-1];f+=n[e>>2];f+=n[e<<4&63];f+="=="}else if(o===2){e=(r[t-2]<<8)+r[t-1];f+=n[e>>10];f+=n[e>>4&63];f+=n[e<<2&63];f+="="}i.push(f);return i.join("")}},{}]},{},[])("/")}); \ No newline at end of file diff --git a/software/api/codebase/third-party/JSON-js/cycle.js b/software/api/codebase/third-party/JSON-js/cycle.js deleted file mode 100644 index 164c72627..000000000 --- a/software/api/codebase/third-party/JSON-js/cycle.js +++ /dev/null @@ -1,172 +0,0 @@ -/* - cycle.js - 2015-02-25 - - Public Domain. - - NO WARRANTY EXPRESSED OR IMPLIED. USE AT YOUR OWN RISK. - - This code should be minified before deployment. - See http://javascript.crockford.com/jsmin.html - - USE YOUR OWN COPY. IT IS EXTREMELY UNWISE TO LOAD CODE FROM SERVERS YOU DO - NOT CONTROL. -*/ - -/*jslint eval, for */ - -/*property - $ref, apply, call, decycle, hasOwnProperty, length, prototype, push, - retrocycle, stringify, test, toString -*/ - -if (typeof JSON.decycle !== 'function') { - JSON.decycle = function decycle(object) { - 'use strict'; - -// Make a deep copy of an object or array, assuring that there is at most -// one instance of each object or array in the resulting structure. The -// duplicate references (which might be forming cycles) are replaced with -// an object of the form -// {$ref: PATH} -// where the PATH is a JSONPath string that locates the first occurance. -// So, -// var a = []; -// a[0] = a; -// return JSON.stringify(JSON.decycle(a)); -// produces the string '[{"$ref":"$"}]'. - -// JSONPath is used to locate the unique object. $ indicates the top level of -// the object or array. [NUMBER] or [STRING] indicates a child member or -// property. - - var objects = [], // Keep a reference to each unique object or array - paths = []; // Keep the path to each unique object or array - - return (function derez(value, path) { - -// The derez recurses through the object, producing the deep copy. - - var i, // The loop counter - name, // Property name - nu; // The new object or array - -// typeof null === 'object', so go on if this value is really an object but not -// one of the weird builtin objects. - - if (typeof value === 'object' && value !== null && - !(value instanceof Boolean) && - !(value instanceof Date) && - !(value instanceof Number) && - !(value instanceof RegExp) && - !(value instanceof String)) { - -// If the value is an object or array, look to see if we have already -// encountered it. If so, return a $ref/path object. This is a hard way, -// linear search that will get slower as the number of unique objects grows. - - for (i = 0; i < objects.length; i += 1) { - if (objects[i] === value) { - return {$ref: paths[i]}; - } - } - -// Otherwise, accumulate the unique value and its path. - - objects.push(value); - paths.push(path); - -// If it is an array, replicate the array. - - if (Object.prototype.toString.apply(value) === '[object Array]') { - nu = []; - for (i = 0; i < value.length; i += 1) { - nu[i] = derez(value[i], path + '[' + i + ']'); - } - } else { - -// If it is an object, replicate the object. - - nu = {}; - for (name in value) { - if (Object.prototype.hasOwnProperty.call(value, name) && value !== window) { - nu[name] = derez(value[name], - path + '[' + JSON.stringify(name) + ']'); - } - } - } - return nu; - } - return value; - }(object, '$')); - }; -} - - -if (typeof JSON.retrocycle !== 'function') { - JSON.retrocycle = function retrocycle($) { - 'use strict'; - -// Restore an object that was reduced by decycle. Members whose values are -// objects of the form -// {$ref: PATH} -// are replaced with references to the value found by the PATH. This will -// restore cycles. The object will be mutated. - -// The eval function is used to locate the values described by a PATH. The -// root object is kept in a $ variable. A regular expression is used to -// assure that the PATH is extremely well formed. The regexp contains nested -// * quantifiers. That has been known to have extremely bad performance -// problems on some browsers for very long strings. A PATH is expected to be -// reasonably short. A PATH is allowed to belong to a very restricted subset of -// Goessner's JSONPath. - -// So, -// var s = '[{"$ref":"$"}]'; -// return JSON.retrocycle(JSON.parse(s)); -// produces an array containing a single element which is the array itself. - - var px = /^\$(?:\[(?:\d+|\"(?:[^\\\"\u0000-\u001f]|\\([\\\"\/bfnrt]|u[0-9a-zA-Z]{4}))*\")\])*$/; - - (function rez(value) { - -// The rez function walks recursively through the object looking for $ref -// properties. When it finds one that has a value that is a path, then it -// replaces the $ref object with a reference to the value that is found by -// the path. - - var i, item, name, path; - - if (value && typeof value === 'object') { - if (Object.prototype.toString.apply(value) === '[object Array]') { - for (i = 0; i < value.length; i += 1) { - item = value[i]; - if (item && typeof item === 'object') { - path = item.$ref; - if (typeof path === 'string' && px.test(path)) { - value[i] = eval(path); - } else { - rez(item); - } - } - } - } else { - for (name in value) { - if (typeof value[name] === 'object') { - item = value[name]; - if (item) { - path = item.$ref; - if (typeof path === 'string' && px.test(path)) { - value[name] = eval(path); - } else { - rez(item); - } - } - } - } - } - } - }($)); - return $; - }; -} diff --git a/software/api/codebase/third-party/ace/LICENSE b/software/api/codebase/third-party/ace/LICENSE deleted file mode 100644 index 4760be2a6..000000000 --- a/software/api/codebase/third-party/ace/LICENSE +++ /dev/null @@ -1,24 +0,0 @@ -Copyright (c) 2010, Ajax.org B.V. -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - * Neither the name of Ajax.org B.V. nor the - names of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY -DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND -ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/software/api/codebase/third-party/ace/src-min/ace.js b/software/api/codebase/third-party/ace/src-min/ace.js deleted file mode 100644 index c7e678e8f..000000000 --- a/software/api/codebase/third-party/ace/src-min/ace.js +++ /dev/null @@ -1,11 +0,0 @@ -(function(){function o(n){var i=e;n&&(e[n]||(e[n]={}),i=e[n]);if(!i.define||!i.define.packaged)t.original=i.define,i.define=t,i.define.packaged=!0;if(!i.require||!i.require.packaged)r.original=i.require,i.require=r,i.require.packaged=!0}var ACE_NAMESPACE="",e=function(){return this}();!e&&typeof window!="undefined"&&(e=window);if(!ACE_NAMESPACE&&typeof requirejs!="undefined")return;var t=function(e,n,r){if(typeof e!="string"){t.original?t.original.apply(this,arguments):(console.error("dropping module because define wasn't a string."),console.trace());return}arguments.length==2&&(r=n),t.modules[e]||(t.payloads[e]=r,t.modules[e]=null)};t.modules={},t.payloads={};var n=function(e,t,n){if(typeof t=="string"){var i=s(e,t);if(i!=undefined)return n&&n(),i}else if(Object.prototype.toString.call(t)==="[object Array]"){var o=[];for(var u=0,a=t.length;u1&&u(t,"")>-1&&(a=RegExp(this.source,r.replace.call(o(this),"g","")),r.replace.call(e.slice(t.index),a,function(){for(var e=1;et.index&&this.lastIndex--}return t},s||(RegExp.prototype.test=function(e){var t=r.exec.call(this,e);return t&&this.global&&!t[0].length&&this.lastIndex>t.index&&this.lastIndex--,!!t})}),define("ace/lib/es5-shim",["require","exports","module"],function(e,t,n){function r(){}function w(e){try{return Object.defineProperty(e,"sentinel",{}),"sentinel"in e}catch(t){}}function H(e){return e=+e,e!==e?e=0:e!==0&&e!==1/0&&e!==-1/0&&(e=(e>0||-1)*Math.floor(Math.abs(e))),e}function B(e){var t=typeof e;return e===null||t==="undefined"||t==="boolean"||t==="number"||t==="string"}function j(e){var t,n,r;if(B(e))return e;n=e.valueOf;if(typeof n=="function"){t=n.call(e);if(B(t))return t}r=e.toString;if(typeof r=="function"){t=r.call(e);if(B(t))return t}throw new TypeError}Function.prototype.bind||(Function.prototype.bind=function(t){var n=this;if(typeof n!="function")throw new TypeError("Function.prototype.bind called on incompatible "+n);var i=u.call(arguments,1),s=function(){if(this instanceof s){var e=n.apply(this,i.concat(u.call(arguments)));return Object(e)===e?e:this}return n.apply(t,i.concat(u.call(arguments)))};return n.prototype&&(r.prototype=n.prototype,s.prototype=new r,r.prototype=null),s});var i=Function.prototype.call,s=Array.prototype,o=Object.prototype,u=s.slice,a=i.bind(o.toString),f=i.bind(o.hasOwnProperty),l,c,h,p,d;if(d=f(o,"__defineGetter__"))l=i.bind(o.__defineGetter__),c=i.bind(o.__defineSetter__),h=i.bind(o.__lookupGetter__),p=i.bind(o.__lookupSetter__);if([1,2].splice(0).length!=2)if(!function(){function e(e){var t=new Array(e+2);return t[0]=t[1]=0,t}var t=[],n;t.splice.apply(t,e(20)),t.splice.apply(t,e(26)),n=t.length,t.splice(5,0,"XXX"),n+1==t.length;if(n+1==t.length)return!0}())Array.prototype.splice=function(e,t){var n=this.length;e>0?e>n&&(e=n):e==void 0?e=0:e<0&&(e=Math.max(n+e,0)),e+ta)for(h=l;h--;)this[f+h]=this[a+h];if(s&&e===c)this.length=c,this.push.apply(this,i);else{this.length=c+s;for(h=0;h>>0;if(a(t)!="[object Function]")throw new TypeError;while(++s>>0,s=Array(i),o=arguments[1];if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");for(var u=0;u>>0,s=[],o,u=arguments[1];if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");for(var f=0;f>>0,s=arguments[1];if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");for(var o=0;o>>0,s=arguments[1];if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");for(var o=0;o>>0;if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");if(!i&&arguments.length==1)throw new TypeError("reduce of empty array with no initial value");var s=0,o;if(arguments.length>=2)o=arguments[1];else do{if(s in r){o=r[s++];break}if(++s>=i)throw new TypeError("reduce of empty array with no initial value")}while(!0);for(;s>>0;if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");if(!i&&arguments.length==1)throw new TypeError("reduceRight of empty array with no initial value");var s,o=i-1;if(arguments.length>=2)s=arguments[1];else do{if(o in r){s=r[o--];break}if(--o<0)throw new TypeError("reduceRight of empty array with no initial value")}while(!0);do o in this&&(s=t.call(void 0,s,r[o],o,n));while(o--);return s});if(!Array.prototype.indexOf||[0,1].indexOf(1,2)!=-1)Array.prototype.indexOf=function(t){var n=g&&a(this)=="[object String]"?this.split(""):F(this),r=n.length>>>0;if(!r)return-1;var i=0;arguments.length>1&&(i=H(arguments[1])),i=i>=0?i:Math.max(0,r+i);for(;i>>0;if(!r)return-1;var i=r-1;arguments.length>1&&(i=Math.min(i,H(arguments[1]))),i=i>=0?i:r-Math.abs(i);for(;i>=0;i--)if(i in n&&t===n[i])return i;return-1};Object.getPrototypeOf||(Object.getPrototypeOf=function(t){return t.__proto__||(t.constructor?t.constructor.prototype:o)});if(!Object.getOwnPropertyDescriptor){var y="Object.getOwnPropertyDescriptor called on a non-object: ";Object.getOwnPropertyDescriptor=function(t,n){if(typeof t!="object"&&typeof t!="function"||t===null)throw new TypeError(y+t);if(!f(t,n))return;var r,i,s;r={enumerable:!0,configurable:!0};if(d){var u=t.__proto__;t.__proto__=o;var i=h(t,n),s=p(t,n);t.__proto__=u;if(i||s)return i&&(r.get=i),s&&(r.set=s),r}return r.value=t[n],r}}Object.getOwnPropertyNames||(Object.getOwnPropertyNames=function(t){return Object.keys(t)});if(!Object.create){var b;Object.prototype.__proto__===null?b=function(){return{__proto__:null}}:b=function(){var e={};for(var t in e)e[t]=null;return e.constructor=e.hasOwnProperty=e.propertyIsEnumerable=e.isPrototypeOf=e.toLocaleString=e.toString=e.valueOf=e.__proto__=null,e},Object.create=function(t,n){var r;if(t===null)r=b();else{if(typeof t!="object")throw new TypeError("typeof prototype["+typeof t+"] != 'object'");var i=function(){};i.prototype=t,r=new i,r.__proto__=t}return n!==void 0&&Object.defineProperties(r,n),r}}if(Object.defineProperty){var E=w({}),S=typeof document=="undefined"||w(document.createElement("div"));if(!E||!S)var x=Object.defineProperty}if(!Object.defineProperty||x){var T="Property description must be an object: ",N="Object.defineProperty called on non-object: ",C="getters & setters can not be defined on this javascript engine";Object.defineProperty=function(t,n,r){if(typeof t!="object"&&typeof t!="function"||t===null)throw new TypeError(N+t);if(typeof r!="object"&&typeof r!="function"||r===null)throw new TypeError(T+r);if(x)try{return x.call(Object,t,n,r)}catch(i){}if(f(r,"value"))if(d&&(h(t,n)||p(t,n))){var s=t.__proto__;t.__proto__=o,delete t[n],t[n]=r.value,t.__proto__=s}else t[n]=r.value;else{if(!d)throw new TypeError(C);f(r,"get")&&l(t,n,r.get),f(r,"set")&&c(t,n,r.set)}return t}}Object.defineProperties||(Object.defineProperties=function(t,n){for(var r in n)f(n,r)&&Object.defineProperty(t,r,n[r]);return t}),Object.seal||(Object.seal=function(t){return t}),Object.freeze||(Object.freeze=function(t){return t});try{Object.freeze(function(){})}catch(k){Object.freeze=function(t){return function(n){return typeof n=="function"?n:t(n)}}(Object.freeze)}Object.preventExtensions||(Object.preventExtensions=function(t){return t}),Object.isSealed||(Object.isSealed=function(t){return!1}),Object.isFrozen||(Object.isFrozen=function(t){return!1}),Object.isExtensible||(Object.isExtensible=function(t){if(Object(t)===t)throw new TypeError;var n="";while(f(t,n))n+="?";t[n]=!0;var r=f(t,n);return delete t[n],r});if(!Object.keys){var L=!0,A=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],O=A.length;for(var M in{toString:null})L=!1;Object.keys=function I(e){if(typeof e!="object"&&typeof e!="function"||e===null)throw new TypeError("Object.keys called on a non-object");var I=[];for(var t in e)f(e,t)&&I.push(t);if(L)for(var n=0,r=O;n=0?parseFloat((i.match(/(?:MSIE |Trident\/[0-9]+[\.0-9]+;.*rv:)([0-9]+[\.0-9]+)/)||[])[1]):parseFloat((i.match(/(?:Trident\/[0-9]+[\.0-9]+;.*rv:)([0-9]+[\.0-9]+)/)||[])[1]),t.isOldIE=t.isIE&&t.isIE<9,t.isGecko=t.isMozilla=(window.Controllers||window.controllers)&&window.navigator.product==="Gecko",t.isOldGecko=t.isGecko&&parseInt((i.match(/rv\:(\d+)/)||[])[1],10)<4,t.isOpera=window.opera&&Object.prototype.toString.call(window.opera)=="[object Opera]",t.isWebKit=parseFloat(i.split("WebKit/")[1])||undefined,t.isChrome=parseFloat(i.split(" Chrome/")[1])||undefined,t.isAIR=i.indexOf("AdobeAIR")>=0,t.isIPad=i.indexOf("iPad")>=0,t.isTouchPad=i.indexOf("TouchPad")>=0,t.isChromeOS=i.indexOf(" CrOS ")>=0}),define("ace/lib/event",["require","exports","module","ace/lib/keys","ace/lib/useragent"],function(e,t,n){"use strict";function o(e,t,n){var o=s(t);if(!i.isMac&&u){if(u[91]||u[92])o|=8;if(u.altGr){if((3&o)==3)return;u.altGr=0}if(n===18||n===17){var f="location"in t?t.location:t.keyLocation;if(n===17&&f===1)u[n]==1&&(a=t.timeStamp);else if(n===18&&o===3&&f===2){var l=t.timeStamp-a;l<50&&(u.altGr=!0)}}}n in r.MODIFIER_KEYS&&(n=-1),o&8&&(n===91||n===93)&&(n=-1);if(!o&&n===13){var f="location"in t?t.location:t.keyLocation;if(f===3){e(t,o,-n);if(t.defaultPrevented)return}}if(i.isChromeOS&&o&8){e(t,o,n);if(t.defaultPrevented)return;o&=-9}return!!o||n in r.FUNCTION_KEYS||n in r.PRINTABLE_KEYS?e(t,o,n):!1}var r=e("./keys"),i=e("./useragent");t.addListener=function(e,t,n){if(e.addEventListener)return e.addEventListener(t,n,!1);if(e.attachEvent){var r=function(){n.call(e,window.event)};n._wrapper=r,e.attachEvent("on"+t,r)}},t.removeListener=function(e,t,n){if(e.removeEventListener)return e.removeEventListener(t,n,!1);e.detachEvent&&e.detachEvent("on"+t,n._wrapper||n)},t.stopEvent=function(e){return t.stopPropagation(e),t.preventDefault(e),!1},t.stopPropagation=function(e){e.stopPropagation?e.stopPropagation():e.cancelBubble=!0},t.preventDefault=function(e){e.preventDefault?e.preventDefault():e.returnValue=!1},t.getButton=function(e){return e.type=="dblclick"?0:e.type=="contextmenu"||i.isMac&&e.ctrlKey&&!e.altKey&&!e.shiftKey?2:e.preventDefault?e.button:{1:0,2:2,4:1}[e.button]},t.capture=function(e,n,r){function i(e){n&&n(e),r&&r(e),t.removeListener(document,"mousemove",n,!0),t.removeListener(document,"mouseup",i,!0),t.removeListener(document,"dragstart",i,!0)}return t.addListener(document,"mousemove",n,!0),t.addListener(document,"mouseup",i,!0),t.addListener(document,"dragstart",i,!0),i},t.addMouseWheelListener=function(e,n){"onmousewheel"in e?t.addListener(e,"mousewheel",function(e){var t=8;e.wheelDeltaX!==undefined?(e.wheelX=-e.wheelDeltaX/t,e.wheelY=-e.wheelDeltaY/t):(e.wheelX=0,e.wheelY=-e.wheelDelta/t),n(e)}):"onwheel"in e?t.addListener(e,"wheel",function(e){var t=.35;switch(e.deltaMode){case e.DOM_DELTA_PIXEL:e.wheelX=e.deltaX*t||0,e.wheelY=e.deltaY*t||0;break;case e.DOM_DELTA_LINE:case e.DOM_DELTA_PAGE:e.wheelX=(e.deltaX||0)*5,e.wheelY=(e.deltaY||0)*5}n(e)}):t.addListener(e,"DOMMouseScroll",function(e){e.axis&&e.axis==e.HORIZONTAL_AXIS?(e.wheelX=(e.detail||0)*5,e.wheelY=0):(e.wheelX=0,e.wheelY=(e.detail||0)*5),n(e)})},t.addMultiMouseDownListener=function(e,n,r,s){var o=0,u,a,f,l={2:"dblclick",3:"tripleclick",4:"quadclick"};t.addListener(e,"mousedown",function(e){t.getButton(e)!==0?o=0:e.detail>1?(o++,o>4&&(o=1)):o=1;if(i.isIE){var c=Math.abs(e.clientX-u)>5||Math.abs(e.clientY-a)>5;if(!f||c)o=1;f&&clearTimeout(f),f=setTimeout(function(){f=null},n[o-1]||600),o==1&&(u=e.clientX,a=e.clientY)}e._clicks=o,r[s]("mousedown",e);if(o>4)o=0;else if(o>1)return r[s](l[o],e)}),i.isOldIE&&t.addListener(e,"dblclick",function(e){o=2,f&&clearTimeout(f),f=setTimeout(function(){f=null},n[o-1]||600),r[s]("mousedown",e),r[s](l[o],e)})};var s=!i.isMac||!i.isOpera||"KeyboardEvent"in window?function(e){return 0|(e.ctrlKey?1:0)|(e.altKey?2:0)|(e.shiftKey?4:0)|(e.metaKey?8:0)}:function(e){return 0|(e.metaKey?1:0)|(e.altKey?2:0)|(e.shiftKey?4:0)|(e.ctrlKey?8:0)};t.getModifierString=function(e){return r.KEY_MODS[s(e)]};var u=null,a=0;t.addCommandKeyListener=function(e,n){var r=t.addListener;if(i.isOldGecko||i.isOpera&&!("KeyboardEvent"in window)){var s=null;r(e,"keydown",function(e){s=e.keyCode}),r(e,"keypress",function(e){return o(n,e,s)})}else{var a=null;r(e,"keydown",function(e){u[e.keyCode]=(u[e.keyCode]||0)+1;var t=o(n,e,e.keyCode);return a=e.defaultPrevented,t}),r(e,"keypress",function(e){a&&(e.ctrlKey||e.altKey||e.shiftKey||e.metaKey)&&(t.stopEvent(e),a=null)}),r(e,"keyup",function(e){u[e.keyCode]=null}),u||(u=Object.create(null),r(window,"focus",function(e){u=Object.create(null)}))}};if(window.postMessage&&!i.isOldIE){var f=1;t.nextTick=function(e,n){n=n||window;var r="zero-timeout-message-"+f;t.addListener(n,"message",function i(s){s.data==r&&(t.stopPropagation(s),t.removeListener(n,"message",i),e())}),n.postMessage(r,"*")}}t.nextFrame=window.requestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||window.msRequestAnimationFrame||window.oRequestAnimationFrame,t.nextFrame?t.nextFrame=t.nextFrame.bind(window):t.nextFrame=function(e){setTimeout(e,17)}}),define("ace/lib/lang",["require","exports","module"],function(e,t,n){"use strict";t.last=function(e){return e[e.length-1]},t.stringReverse=function(e){return e.split("").reverse().join("")},t.stringRepeat=function(e,t){var n="";while(t>0){t&1&&(n+=e);if(t>>=1)e+=e}return n};var r=/^\s\s*/,i=/\s\s*$/;t.stringTrimLeft=function(e){return e.replace(r,"")},t.stringTrimRight=function(e){return e.replace(i,"")},t.copyObject=function(e){var t={};for(var n in e)t[n]=e[n];return t},t.copyArray=function(e){var t=[];for(var n=0,r=e.length;n1),e.preventDefault()},this.startSelect=function(e,t){e=e||this.editor.renderer.screenToTextCoordinates(this.x,this.y);var n=this.editor;n.$blockScrolling++,this.mousedownEvent.getShiftKey()?n.selection.selectToPosition(e):t||n.selection.moveToPosition(e),t||this.select(),n.renderer.scroller.setCapture&&n.renderer.scroller.setCapture(),n.setStyle("ace_selecting"),this.setState("select"),n.$blockScrolling--},this.select=function(){var e,t=this.editor,n=t.renderer.screenToTextCoordinates(this.x,this.y);t.$blockScrolling++;if(this.$clickSelection){var r=this.$clickSelection.comparePoint(n);if(r==-1)e=this.$clickSelection.end;else if(r==1)e=this.$clickSelection.start;else{var i=f(this.$clickSelection,n);n=i.cursor,e=i.anchor}t.selection.setSelectionAnchor(e.row,e.column)}t.selection.selectToPosition(n),t.$blockScrolling--,t.renderer.scrollCursorIntoView()},this.extendSelectionBy=function(e){var t,n=this.editor,r=n.renderer.screenToTextCoordinates(this.x,this.y),i=n.selection[e](r.row,r.column);n.$blockScrolling++;if(this.$clickSelection){var s=this.$clickSelection.comparePoint(i.start),o=this.$clickSelection.comparePoint(i.end);if(s==-1&&o<=0){t=this.$clickSelection.end;if(i.end.row!=r.row||i.end.column!=r.column)r=i.start}else if(o==1&&s>=0){t=this.$clickSelection.start;if(i.start.row!=r.row||i.start.column!=r.column)r=i.end}else if(s==-1&&o==1)r=i.end,t=i.start;else{var u=f(this.$clickSelection,r);r=u.cursor,t=u.anchor}n.selection.setSelectionAnchor(t.row,t.column)}n.selection.selectToPosition(r),n.$blockScrolling--,n.renderer.scrollCursorIntoView()},this.selectEnd=this.selectAllEnd=this.selectByWordsEnd=this.selectByLinesEnd=function(){this.$clickSelection=null,this.editor.unsetStyle("ace_selecting"),this.editor.renderer.scroller.releaseCapture&&this.editor.renderer.scroller.releaseCapture()},this.focusWait=function(){var e=a(this.mousedownEvent.x,this.mousedownEvent.y,this.x,this.y),t=Date.now();(e>o||t-this.mousedownEvent.time>this.$focusTimout)&&this.startSelect(this.mousedownEvent.getDocumentPosition())},this.onDoubleClick=function(e){var t=e.getDocumentPosition(),n=this.editor,r=n.session,i=r.getBracketRange(t);i?(i.isEmpty()&&(i.start.column--,i.end.column++),this.setState("select")):(i=n.selection.getWordRange(t.row,t.column),this.setState("selectByWords")),this.$clickSelection=i,this.select()},this.onTripleClick=function(e){var t=e.getDocumentPosition(),n=this.editor;this.setState("selectByLines");var r=n.getSelectionRange();r.isMultiLine()&&r.contains(t.row,t.column)?(this.$clickSelection=n.selection.getLineRange(r.start.row),this.$clickSelection.end=n.selection.getLineRange(r.end.row).end):this.$clickSelection=n.selection.getLineRange(t.row),this.select()},this.onQuadClick=function(e){var t=this.editor;t.selectAll(),this.$clickSelection=t.getSelectionRange(),this.setState("selectAll")},this.onMouseWheel=function(e){if(e.getAccelKey())return;e.getShiftKey()&&e.wheelY&&!e.wheelX&&(e.wheelX=e.wheelY,e.wheelY=0);var t=e.domEvent.timeStamp,n=t-(this.$lastScrollTime||0),r=this.editor,i=r.renderer.isScrollableBy(e.wheelX*e.speed,e.wheelY*e.speed);if(i||n<200)return this.$lastScrollTime=t,r.renderer.scrollBy(e.wheelX*e.speed,e.wheelY*e.speed),e.stop()}}).call(u.prototype),t.DefaultHandlers=u}),define("ace/tooltip",["require","exports","module","ace/lib/oop","ace/lib/dom"],function(e,t,n){"use strict";function s(e){this.isOpen=!1,this.$element=null,this.$parentNode=e}var r=e("./lib/oop"),i=e("./lib/dom");(function(){this.$init=function(){return this.$element=i.createElement("div"),this.$element.className="ace_tooltip",this.$element.style.display="none",this.$parentNode.appendChild(this.$element),this.$element},this.getElement=function(){return this.$element||this.$init()},this.setText=function(e){i.setInnerText(this.getElement(),e)},this.setHtml=function(e){this.getElement().innerHTML=e},this.setPosition=function(e,t){this.getElement().style.left=e+"px",this.getElement().style.top=t+"px"},this.setClassName=function(e){i.addCssClass(this.getElement(),e)},this.show=function(e,t,n){e!=null&&this.setText(e),t!=null&&n!=null&&this.setPosition(t,n),this.isOpen||(this.getElement().style.display="block",this.isOpen=!0)},this.hide=function(){this.isOpen&&(this.getElement().style.display="none",this.isOpen=!1)},this.getHeight=function(){return this.getElement().offsetHeight},this.getWidth=function(){return this.getElement().offsetWidth}}).call(s.prototype),t.Tooltip=s}),define("ace/mouse/default_gutter_handler",["require","exports","module","ace/lib/dom","ace/lib/oop","ace/lib/event","ace/tooltip"],function(e,t,n){"use strict";function u(e){function l(){var r=u.getDocumentPosition().row,s=n.$annotations[r];if(!s)return c();var o=t.session.getLength();if(r==o){var a=t.renderer.pixelToScreenCoordinates(0,u.y).row,l=u.$pos;if(a>t.session.documentToScreenRow(l.row,l.column))return c()}if(f==s)return;f=s.text.join("
"),i.setHtml(f),i.show(),t.on("mousewheel",c);if(e.$tooltipFollowsMouse)h(u);else{var p=n.$cells[t.session.documentToScreenRow(r,0)].element,d=p.getBoundingClientRect(),v=i.getElement().style;v.left=d.right+"px",v.top=d.bottom+"px"}}function c(){o&&(o=clearTimeout(o)),f&&(i.hide(),f=null,t.removeEventListener("mousewheel",c))}function h(e){i.setPosition(e.x,e.y)}var t=e.editor,n=t.renderer.$gutterLayer,i=new a(t.container);e.editor.setDefaultHandler("guttermousedown",function(r){if(!t.isFocused()||r.getButton()!=0)return;var i=n.getRegion(r);if(i=="foldWidgets")return;var s=r.getDocumentPosition().row,o=t.session.selection;if(r.getShiftKey())o.selectTo(s,0);else{if(r.domEvent.detail==2)return t.selectAll(),r.preventDefault();e.$clickSelection=t.selection.getLineRange(s)}return e.setState("selectByLines"),e.captureMouse(r),r.preventDefault()});var o,u,f;e.editor.setDefaultHandler("guttermousemove",function(t){var n=t.domEvent.target||t.domEvent.srcElement;if(r.hasCssClass(n,"ace_fold-widget"))return c();f&&e.$tooltipFollowsMouse&&h(t),u=t;if(o)return;o=setTimeout(function(){o=null,u&&!e.isMousePressed?l():c()},50)}),s.addListener(t.renderer.$gutter,"mouseout",function(e){u=null;if(!f||o)return;o=setTimeout(function(){o=null,c()},50)}),t.on("changeSession",c)}function a(e){o.call(this,e)}var r=e("../lib/dom"),i=e("../lib/oop"),s=e("../lib/event"),o=e("../tooltip").Tooltip;i.inherits(a,o),function(){this.setPosition=function(e,t){var n=window.innerWidth||document.documentElement.clientWidth,r=window.innerHeight||document.documentElement.clientHeight,i=this.getWidth(),s=this.getHeight();e+=15,t+=15,e+i>n&&(e-=e+i-n),t+s>r&&(t-=20+s),o.prototype.setPosition.call(this,e,t)}}.call(a.prototype),t.GutterHandler=u}),define("ace/mouse/mouse_event",["require","exports","module","ace/lib/event","ace/lib/useragent"],function(e,t,n){"use strict";var r=e("../lib/event"),i=e("../lib/useragent"),s=t.MouseEvent=function(e,t){this.domEvent=e,this.editor=t,this.x=this.clientX=e.clientX,this.y=this.clientY=e.clientY,this.$pos=null,this.$inSelection=null,this.propagationStopped=!1,this.defaultPrevented=!1};(function(){this.stopPropagation=function(){r.stopPropagation(this.domEvent),this.propagationStopped=!0},this.preventDefault=function(){r.preventDefault(this.domEvent),this.defaultPrevented=!0},this.stop=function(){this.stopPropagation(),this.preventDefault()},this.getDocumentPosition=function(){return this.$pos?this.$pos:(this.$pos=this.editor.renderer.screenToTextCoordinates(this.clientX,this.clientY),this.$pos)},this.inSelection=function(){if(this.$inSelection!==null)return this.$inSelection;var e=this.editor,t=e.getSelectionRange();if(t.isEmpty())this.$inSelection=!1;else{var n=this.getDocumentPosition();this.$inSelection=t.contains(n.row,n.column)}return this.$inSelection},this.getButton=function(){return r.getButton(this.domEvent)},this.getShiftKey=function(){return this.domEvent.shiftKey},this.getAccelKey=i.isMac?function(){return this.domEvent.metaKey}:function(){return this.domEvent.ctrlKey}}).call(s.prototype)}),define("ace/mouse/dragdrop_handler",["require","exports","module","ace/lib/dom","ace/lib/event","ace/lib/useragent"],function(e,t,n){"use strict";function f(e){function T(e,n){var r=Date.now(),i=!n||e.row!=n.row,s=!n||e.column!=n.column;if(!S||i||s)t.$blockScrolling+=1,t.moveCursorToPosition(e),t.$blockScrolling-=1,S=r,x={x:p,y:d};else{var o=l(x.x,x.y,p,d);o>a?S=null:r-S>=u&&(t.renderer.scrollCursorIntoView(),S=null)}}function N(e,n){var r=Date.now(),i=t.renderer.layerConfig.lineHeight,s=t.renderer.layerConfig.characterWidth,u=t.renderer.scroller.getBoundingClientRect(),a={x:{left:p-u.left,right:u.right-p},y:{top:d-u.top,bottom:u.bottom-d}},f=Math.min(a.x.left,a.x.right),l=Math.min(a.y.top,a.y.bottom),c={row:e.row,column:e.column};f/s<=2&&(c.column+=a.x.left=o&&t.renderer.scrollCursorIntoView(c):E=r:E=null}function C(){var e=g;g=t.renderer.screenToTextCoordinates(p,d),T(g,e),N(g,e)}function k(){m=t.selection.toOrientedRange(),h=t.session.addMarker(m,"ace_selection",t.getSelectionStyle()),t.clearSelection(),t.isFocused()&&t.renderer.$cursorLayer.setBlinking(!1),clearInterval(v),C(),v=setInterval(C,20),y=0,i.addListener(document,"mousemove",O)}function L(){clearInterval(v),t.session.removeMarker(h),h=null,t.$blockScrolling+=1,t.selection.fromOrientedRange(m),t.$blockScrolling-=1,t.isFocused()&&!w&&t.renderer.$cursorLayer.setBlinking(!t.getReadOnly()),m=null,g=null,y=0,E=null,S=null,i.removeListener(document,"mousemove",O)}function O(){A==null&&(A=setTimeout(function(){A!=null&&h&&L()},20))}function M(e){var t=e.types;return!t||Array.prototype.some.call(t,function(e){return e=="text/plain"||e=="Text"})}function _(e){var t=["copy","copymove","all","uninitialized"],n=["move","copymove","linkmove","all","uninitialized"],r=s.isMac?e.altKey:e.ctrlKey,i="uninitialized";try{i=e.dataTransfer.effectAllowed.toLowerCase()}catch(e){}var o="none";return r&&t.indexOf(i)>=0?o="copy":n.indexOf(i)>=0?o="move":t.indexOf(i)>=0&&(o="copy"),o}var t=e.editor,n=r.createElement("img");n.src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==",s.isOpera&&(n.style.cssText="width:1px;height:1px;position:fixed;top:0;left:0;z-index:2147483647;opacity:0;");var f=["dragWait","dragWaitEnd","startDrag","dragReadyEnd","onMouseDrag"];f.forEach(function(t){e[t]=this[t]},this),t.addEventListener("mousedown",this.onMouseDown.bind(e));var c=t.container,h,p,d,v,m,g,y=0,b,w,E,S,x;this.onDragStart=function(e){if(this.cancelDrag||!c.draggable){var r=this;return setTimeout(function(){r.startSelect(),r.captureMouse(e)},0),e.preventDefault()}m=t.getSelectionRange();var i=e.dataTransfer;i.effectAllowed=t.getReadOnly()?"copy":"copyMove",s.isOpera&&(t.container.appendChild(n),n.scrollTop=0),i.setDragImage&&i.setDragImage(n,0,0),s.isOpera&&t.container.removeChild(n),i.clearData(),i.setData("Text",t.session.getTextRange()),w=!0,this.setState("drag")},this.onDragEnd=function(e){c.draggable=!1,w=!1,this.setState(null);if(!t.getReadOnly()){var n=e.dataTransfer.dropEffect;!b&&n=="move"&&t.session.remove(t.getSelectionRange()),t.renderer.$cursorLayer.setBlinking(!0)}this.editor.unsetStyle("ace_dragging"),this.editor.renderer.setCursorStyle("")},this.onDragEnter=function(e){if(t.getReadOnly()||!M(e.dataTransfer))return;return p=e.clientX,d=e.clientY,h||k(),y++,e.dataTransfer.dropEffect=b=_(e),i.preventDefault(e)},this.onDragOver=function(e){if(t.getReadOnly()||!M(e.dataTransfer))return;return p=e.clientX,d=e.clientY,h||(k(),y++),A!==null&&(A=null),e.dataTransfer.dropEffect=b=_(e),i.preventDefault(e)},this.onDragLeave=function(e){y--;if(y<=0&&h)return L(),b=null,i.preventDefault(e)},this.onDrop=function(e){if(!g)return;var n=e.dataTransfer;if(w)switch(b){case"move":m.contains(g.row,g.column)?m={start:g,end:g}:m=t.moveText(m,g);break;case"copy":m=t.moveText(m,g,!0)}else{var r=n.getData("Text");m={start:g,end:t.session.insert(g,r)},t.focus(),b=null}return L(),i.preventDefault(e)},i.addListener(c,"dragstart",this.onDragStart.bind(e)),i.addListener(c,"dragend",this.onDragEnd.bind(e)),i.addListener(c,"dragenter",this.onDragEnter.bind(e)),i.addListener(c,"dragover",this.onDragOver.bind(e)),i.addListener(c,"dragleave",this.onDragLeave.bind(e)),i.addListener(c,"drop",this.onDrop.bind(e));var A=null}function l(e,t,n,r){return Math.sqrt(Math.pow(n-e,2)+Math.pow(r-t,2))}var r=e("../lib/dom"),i=e("../lib/event"),s=e("../lib/useragent"),o=200,u=200,a=5;(function(){this.dragWait=function(){var e=Date.now()-this.mousedownEvent.time;e>this.editor.getDragDelay()&&this.startDrag()},this.dragWaitEnd=function(){var e=this.editor.container;e.draggable=!1,this.startSelect(this.mousedownEvent.getDocumentPosition()),this.selectEnd()},this.dragReadyEnd=function(e){this.editor.renderer.$cursorLayer.setBlinking(!this.editor.getReadOnly()),this.editor.unsetStyle("ace_dragging"),this.editor.renderer.setCursorStyle(""),this.dragWaitEnd()},this.startDrag=function(){this.cancelDrag=!1;var e=this.editor,t=e.container;t.draggable=!0,e.renderer.$cursorLayer.setBlinking(!1),e.setStyle("ace_dragging");var n=s.isWin?"default":"move";e.renderer.setCursorStyle(n),this.setState("dragReady")},this.onMouseDrag=function(e){var t=this.editor.container;if(s.isIE&&this.state=="dragReady"){var n=l(this.mousedownEvent.x,this.mousedownEvent.y,this.x,this.y);n>3&&t.dragDrop()}if(this.state==="dragWait"){var n=l(this.mousedownEvent.x,this.mousedownEvent.y,this.x,this.y);n>0&&(t.draggable=!1,this.startSelect(this.mousedownEvent.getDocumentPosition()))}},this.onMouseDown=function(e){if(!this.$dragEnabled)return;this.mousedownEvent=e;var t=this.editor,n=e.inSelection(),r=e.getButton(),i=e.domEvent.detail||1;if(i===1&&r===0&&n){if(e.editor.inMultiSelectMode&&(e.getAccelKey()||e.getShiftKey()))return;this.mousedownEvent.time=Date.now();var o=e.domEvent.target||e.domEvent.srcElement;"unselectable"in o&&(o.unselectable="on");if(t.getDragDelay()){if(s.isWebKit){this.cancelDrag=!0;var u=t.container;u.draggable=!0}this.setState("dragWait")}else this.startDrag();this.captureMouse(e,this.onMouseDrag.bind(this)),e.defaultPrevented=!0}}}).call(f.prototype),t.DragdropHandler=f}),define("ace/lib/net",["require","exports","module","ace/lib/dom"],function(e,t,n){"use strict";var r=e("./dom");t.get=function(e,t){var n=new XMLHttpRequest;n.open("GET",e,!0),n.onreadystatechange=function(){n.readyState===4&&t(n.responseText)},n.send(null)},t.loadScript=function(e,t){var n=r.getDocumentHead(),i=document.createElement("script");i.src=e,n.appendChild(i),i.onload=i.onreadystatechange=function(e,n){if(n||!i.readyState||i.readyState=="loaded"||i.readyState=="complete")i=i.onload=i.onreadystatechange=null,n||t()}},t.qualifyURL=function(e){var t=document.createElement("a");return t.href=e,t.href}}),define("ace/lib/event_emitter",["require","exports","module"],function(e,t,n){"use strict";var r={},i=function(){this.propagationStopped=!0},s=function(){this.defaultPrevented=!0};r._emit=r._dispatchEvent=function(e,t){this._eventRegistry||(this._eventRegistry={}),this._defaultHandlers||(this._defaultHandlers={});var n=this._eventRegistry[e]||[],r=this._defaultHandlers[e];if(!n.length&&!r)return;if(typeof t!="object"||!t)t={};t.type||(t.type=e),t.stopPropagation||(t.stopPropagation=i),t.preventDefault||(t.preventDefault=s),n=n.slice();for(var o=0;o1&&(i=n[n.length-2]);var o=a[t+"Path"];return o==null?o=a.basePath:r=="/"&&(t=r=""),o&&o.slice(-1)!="/"&&(o+="/"),o+t+r+i+this.get("suffix")},t.setModuleUrl=function(e,t){return a.$moduleUrls[e]=t},t.$loading={},t.loadModule=function(n,r){var i,o;Array.isArray(n)&&(o=n[0],n=n[1]);try{i=e(n)}catch(u){}if(i&&!t.$loading[n])return r&&r(i);t.$loading[n]||(t.$loading[n]=[]),t.$loading[n].push(r);if(t.$loading[n].length>1)return;var a=function(){e([n],function(e){t._emit("load.module",{name:n,module:e});var r=t.$loading[n];t.$loading[n]=null,r.forEach(function(t){t&&t(e)})})};if(!t.get("packaged"))return a();s.loadScript(t.moduleUrl(n,o),a)},t.init=f}),define("ace/mouse/mouse_handler",["require","exports","module","ace/lib/event","ace/lib/useragent","ace/mouse/default_handlers","ace/mouse/default_gutter_handler","ace/mouse/mouse_event","ace/mouse/dragdrop_handler","ace/config"],function(e,t,n){"use strict";var r=e("../lib/event"),i=e("../lib/useragent"),s=e("./default_handlers").DefaultHandlers,o=e("./default_gutter_handler").GutterHandler,u=e("./mouse_event").MouseEvent,a=e("./dragdrop_handler").DragdropHandler,f=e("../config"),l=function(e){var t=this;this.editor=e,new s(this),new o(this),new a(this);var n=function(t){(!document.hasFocus||!document.hasFocus())&&window.focus(),e.focus()},u=e.renderer.getMouseEventTarget();r.addListener(u,"click",this.onMouseEvent.bind(this,"click")),r.addListener(u,"mousemove",this.onMouseMove.bind(this,"mousemove")),r.addMultiMouseDownListener(u,[400,300,250],this,"onMouseEvent"),e.renderer.scrollBarV&&(r.addMultiMouseDownListener(e.renderer.scrollBarV.inner,[400,300,250],this,"onMouseEvent"),r.addMultiMouseDownListener(e.renderer.scrollBarH.inner,[400,300,250],this,"onMouseEvent"),i.isIE&&(r.addListener(e.renderer.scrollBarV.element,"mousedown",n),r.addListener(e.renderer.scrollBarH.element,"mousedown",n))),r.addMouseWheelListener(e.container,this.onMouseWheel.bind(this,"mousewheel"));var f=e.renderer.$gutter;r.addListener(f,"mousedown",this.onMouseEvent.bind(this,"guttermousedown")),r.addListener(f,"click",this.onMouseEvent.bind(this,"gutterclick")),r.addListener(f,"dblclick",this.onMouseEvent.bind(this,"gutterdblclick")),r.addListener(f,"mousemove",this.onMouseEvent.bind(this,"guttermousemove")),r.addListener(u,"mousedown",n),r.addListener(f,"mousedown",function(t){return e.focus(),r.preventDefault(t)}),e.on("mousemove",function(n){if(t.state||t.$dragDelay||!t.$dragEnabled)return;var r=e.renderer.screenToTextCoordinates(n.x,n.y),i=e.session.selection.getRange(),s=e.renderer;!i.isEmpty()&&i.insideStart(r.row,r.column)?s.setCursorStyle("default"):s.setCursorStyle("")})};(function(){this.onMouseEvent=function(e,t){this.editor._emit(e,new u(t,this.editor))},this.onMouseMove=function(e,t){var n=this.editor._eventRegistry&&this.editor._eventRegistry.mousemove;if(!n||!n.length)return;this.editor._emit(e,new u(t,this.editor))},this.onMouseWheel=function(e,t){var n=new u(t,this.editor);n.speed=this.$scrollSpeed*2,n.wheelX=t.wheelX,n.wheelY=t.wheelY,this.editor._emit(e,n)},this.setState=function(e){this.state=e},this.captureMouse=function(e,t){this.x=e.x,this.y=e.y,this.isMousePressed=!0;var n=this.editor.renderer;n.$keepTextAreaAtCursor&&(n.$keepTextAreaAtCursor=null);var s=this,o=function(e){if(!e)return;if(i.isWebKit&&!e.which&&s.releaseMouse)return s.releaseMouse();s.x=e.clientX,s.y=e.clientY,t&&t(e),s.mouseEvent=new u(e,s.editor),s.$mouseMoved=!0},a=function(e){clearInterval(l),f(),s[s.state+"End"]&&s[s.state+"End"](e),s.state="",n.$keepTextAreaAtCursor==null&&(n.$keepTextAreaAtCursor=!0,n.$moveTextAreaToCursor()),s.isMousePressed=!1,s.$onCaptureMouseMove=s.releaseMouse=null,e&&s.onMouseEvent("mouseup",e)},f=function(){s[s.state]&&s[s.state](),s.$mouseMoved=!1};if(i.isOldIE&&e.domEvent.type=="dblclick")return setTimeout(function(){a(e)});s.$onCaptureMouseMove=o,s.releaseMouse=r.capture(this.editor.container,o,a);var l=setInterval(f,20)},this.releaseMouse=null,this.cancelContextMenu=function(){var e=function(t){if(t&&t.domEvent&&t.domEvent.type!="contextmenu")return;this.editor.off("nativecontextmenu",e),t&&t.domEvent&&r.stopEvent(t.domEvent)}.bind(this);setTimeout(e,10),this.editor.on("nativecontextmenu",e)}}).call(l.prototype),f.defineOptions(l.prototype,"mouseHandler",{scrollSpeed:{initialValue:2},dragDelay:{initialValue:i.isMac?150:0},dragEnabled:{initialValue:!0},focusTimout:{initialValue:0},tooltipFollowsMouse:{initialValue:!0}}),t.MouseHandler=l}),define("ace/mouse/fold_handler",["require","exports","module"],function(e,t,n){"use strict";function r(e){e.on("click",function(t){var n=t.getDocumentPosition(),r=e.session,i=r.getFoldAt(n.row,n.column,1);i&&(t.getAccelKey()?r.removeFold(i):r.expandFold(i),t.stop())}),e.on("gutterclick",function(t){var n=e.renderer.$gutterLayer.getRegion(t);if(n=="foldWidgets"){var r=t.getDocumentPosition().row,i=e.session;i.foldWidgets&&i.foldWidgets[r]&&e.session.onFoldWidgetClick(r,t),e.isFocused()||e.focus(),t.stop()}}),e.on("gutterdblclick",function(t){var n=e.renderer.$gutterLayer.getRegion(t);if(n=="foldWidgets"){var r=t.getDocumentPosition().row,i=e.session,s=i.getParentFoldRangeData(r,!0),o=s.range||s.firstRange;if(o){r=o.start.row;var u=i.getFoldAt(r,i.getLine(r).length,1);u?i.removeFold(u):(i.addFold("...",o),e.renderer.scrollCursorIntoView({row:o.start.row,column:0}))}t.stop()}})}t.FoldHandler=r}),define("ace/keyboard/keybinding",["require","exports","module","ace/lib/keys","ace/lib/event"],function(e,t,n){"use strict";var r=e("../lib/keys"),i=e("../lib/event"),s=function(e){this.$editor=e,this.$data={editor:e},this.$handlers=[],this.setDefaultHandler(e.commands)};(function(){this.setDefaultHandler=function(e){this.removeKeyboardHandler(this.$defaultHandler),this.$defaultHandler=e,this.addKeyboardHandler(e,0)},this.setKeyboardHandler=function(e){var t=this.$handlers;if(t[t.length-1]==e)return;while(t[t.length-1]&&t[t.length-1]!=this.$defaultHandler)this.removeKeyboardHandler(t[t.length-1]);this.addKeyboardHandler(e,1)},this.addKeyboardHandler=function(e,t){if(!e)return;typeof e=="function"&&!e.handleKeyboard&&(e.handleKeyboard=e);var n=this.$handlers.indexOf(e);n!=-1&&this.$handlers.splice(n,1),t==undefined?this.$handlers.push(e):this.$handlers.splice(t,0,e),n==-1&&e.attach&&e.attach(this.$editor)},this.removeKeyboardHandler=function(e){var t=this.$handlers.indexOf(e);return t==-1?!1:(this.$handlers.splice(t,1),e.detach&&e.detach(this.$editor),!0)},this.getKeyboardHandler=function(){return this.$handlers[this.$handlers.length-1]},this.getStatusText=function(){var e=this.$data,t=e.editor;return this.$handlers.map(function(n){return n.getStatusText&&n.getStatusText(t,e)||""}).filter(Boolean).join(" ")},this.$callKeyboardHandlers=function(e,t,n,r){var s,o=!1,u=this.$editor.commands;for(var a=this.$handlers.length;a--;){s=this.$handlers[a].handleKeyboard(this.$data,e,t,n,r);if(!s||!s.command)continue;s.command=="null"?o=!0:o=u.exec(s.command,this.$editor,s.args,r),o&&r&&e!=-1&&s.passEvent!=1&&s.command.passEvent!=1&&i.stopEvent(r);if(o)break}return o},this.onCommandKey=function(e,t,n){var i=r.keyCodeToString(n);this.$callKeyboardHandlers(t,i,n,e)},this.onTextInput=function(e){var t=this.$callKeyboardHandlers(-1,e);t||this.$editor.commands.exec("insertstring",this.$editor,e)}}).call(s.prototype),t.KeyBinding=s}),define("ace/range",["require","exports","module"],function(e,t,n){"use strict";var r=function(e,t){return e.row-t.row||e.column-t.column},i=function(e,t,n,r){this.start={row:e,column:t},this.end={row:n,column:r}};(function(){this.isEqual=function(e){return this.start.row===e.start.row&&this.end.row===e.end.row&&this.start.column===e.start.column&&this.end.column===e.end.column},this.toString=function(){return"Range: ["+this.start.row+"/"+this.start.column+"] -> ["+this.end.row+"/"+this.end.column+"]"},this.contains=function(e,t){return this.compare(e,t)==0},this.compareRange=function(e){var t,n=e.end,r=e.start;return t=this.compare(n.row,n.column),t==1?(t=this.compare(r.row,r.column),t==1?2:t==0?1:0):t==-1?-2:(t=this.compare(r.row,r.column),t==-1?-1:t==1?42:0)},this.comparePoint=function(e){return this.compare(e.row,e.column)},this.containsRange=function(e){return this.comparePoint(e.start)==0&&this.comparePoint(e.end)==0},this.intersects=function(e){var t=this.compareRange(e);return t==-1||t==0||t==1},this.isEnd=function(e,t){return this.end.row==e&&this.end.column==t},this.isStart=function(e,t){return this.start.row==e&&this.start.column==t},this.setStart=function(e,t){typeof e=="object"?(this.start.column=e.column,this.start.row=e.row):(this.start.row=e,this.start.column=t)},this.setEnd=function(e,t){typeof e=="object"?(this.end.column=e.column,this.end.row=e.row):(this.end.row=e,this.end.column=t)},this.inside=function(e,t){return this.compare(e,t)==0?this.isEnd(e,t)||this.isStart(e,t)?!1:!0:!1},this.insideStart=function(e,t){return this.compare(e,t)==0?this.isEnd(e,t)?!1:!0:!1},this.insideEnd=function(e,t){return this.compare(e,t)==0?this.isStart(e,t)?!1:!0:!1},this.compare=function(e,t){return!this.isMultiLine()&&e===this.start.row?tthis.end.column?1:0:ethis.end.row?1:this.start.row===e?t>=this.start.column?0:-1:this.end.row===e?t<=this.end.column?0:1:0},this.compareStart=function(e,t){return this.start.row==e&&this.start.column==t?-1:this.compare(e,t)},this.compareEnd=function(e,t){return this.end.row==e&&this.end.column==t?1:this.compare(e,t)},this.compareInside=function(e,t){return this.end.row==e&&this.end.column==t?1:this.start.row==e&&this.start.column==t?-1:this.compare(e,t)},this.clipRows=function(e,t){if(this.end.row>t)var n={row:t+1,column:0};else if(this.end.rowt)var r={row:t+1,column:0};else if(this.start.rowt.row||e.row==t.row&&e.column>t.column},this.getRange=function(){var e=this.anchor,t=this.lead;return this.isEmpty()?o.fromPoints(t,t):this.isBackwards()?o.fromPoints(t,e):o.fromPoints(e,t)},this.clearSelection=function(){this.$isEmpty||(this.$isEmpty=!0,this._emit("changeSelection"))},this.selectAll=function(){var e=this.doc.getLength()-1;this.setSelectionAnchor(0,0),this.moveCursorTo(e,this.doc.getLine(e).length)},this.setRange=this.setSelectionRange=function(e,t){t?(this.setSelectionAnchor(e.end.row,e.end.column),this.selectTo(e.start.row,e.start.column)):(this.setSelectionAnchor(e.start.row,e.start.column),this.selectTo(e.end.row,e.end.column)),this.getRange().isEmpty()&&(this.$isEmpty=!0),this.$desiredColumn=null},this.$moveSelection=function(e){var t=this.lead;this.$isEmpty&&this.setSelectionAnchor(t.row,t.column),e.call(this)},this.selectTo=function(e,t){this.$moveSelection(function(){this.moveCursorTo(e,t)})},this.selectToPosition=function(e){this.$moveSelection(function(){this.moveCursorToPosition(e)})},this.moveTo=function(e,t){this.clearSelection(),this.moveCursorTo(e,t)},this.moveToPosition=function(e){this.clearSelection(),this.moveCursorToPosition(e)},this.selectUp=function(){this.$moveSelection(this.moveCursorUp)},this.selectDown=function(){this.$moveSelection(this.moveCursorDown)},this.selectRight=function(){this.$moveSelection(this.moveCursorRight)},this.selectLeft=function(){this.$moveSelection(this.moveCursorLeft)},this.selectLineStart=function(){this.$moveSelection(this.moveCursorLineStart)},this.selectLineEnd=function(){this.$moveSelection(this.moveCursorLineEnd)},this.selectFileEnd=function(){this.$moveSelection(this.moveCursorFileEnd)},this.selectFileStart=function(){this.$moveSelection(this.moveCursorFileStart)},this.selectWordRight=function(){this.$moveSelection(this.moveCursorWordRight)},this.selectWordLeft=function(){this.$moveSelection(this.moveCursorWordLeft)},this.getWordRange=function(e,t){if(typeof t=="undefined"){var n=e||this.lead;e=n.row,t=n.column}return this.session.getWordRange(e,t)},this.selectWord=function(){this.setSelectionRange(this.getWordRange())},this.selectAWord=function(){var e=this.getCursor(),t=this.session.getAWordRange(e.row,e.column);this.setSelectionRange(t)},this.getLineRange=function(e,t){var n=typeof e=="number"?e:this.lead.row,r,i=this.session.getFoldLine(n);return i?(n=i.start.row,r=i.end.row):r=n,t===!0?new o(n,0,r,this.session.getLine(r).length):new o(n,0,r+1,0)},this.selectLine=function(){this.setSelectionRange(this.getLineRange())},this.moveCursorUp=function(){this.moveCursorBy(-1,0)},this.moveCursorDown=function(){this.moveCursorBy(1,0)},this.moveCursorLeft=function(){var e=this.lead.getPosition(),t;if(t=this.session.getFoldAt(e.row,e.column,-1))this.moveCursorTo(t.start.row,t.start.column);else if(e.column===0)e.row>0&&this.moveCursorTo(e.row-1,this.doc.getLine(e.row-1).length);else{var n=this.session.getTabSize();this.session.isTabStop(e)&&this.doc.getLine(e.row).slice(e.column-n,e.column).split(" ").length-1==n?this.moveCursorBy(0,-n):this.moveCursorBy(0,-1)}},this.moveCursorRight=function(){var e=this.lead.getPosition(),t;if(t=this.session.getFoldAt(e.row,e.column,1))this.moveCursorTo(t.end.row,t.end.column);else if(this.lead.column==this.doc.getLine(this.lead.row).length)this.lead.row0&&(t.column=r)}}this.moveCursorTo(t.row,t.column)},this.moveCursorFileEnd=function(){var e=this.doc.getLength()-1,t=this.doc.getLine(e).length;this.moveCursorTo(e,t)},this.moveCursorFileStart=function(){this.moveCursorTo(0,0)},this.moveCursorLongWordRight=function(){var e=this.lead.row,t=this.lead.column,n=this.doc.getLine(e),r=n.substring(t),i;this.session.nonTokenRe.lastIndex=0,this.session.tokenRe.lastIndex=0;var s=this.session.getFoldAt(e,t,1);if(s){this.moveCursorTo(s.end.row,s.end.column);return}if(i=this.session.nonTokenRe.exec(r))t+=this.session.nonTokenRe.lastIndex,this.session.nonTokenRe.lastIndex=0,r=n.substring(t);if(t>=n.length){this.moveCursorTo(e,n.length),this.moveCursorRight(),e0&&this.moveCursorWordLeft();return}if(o=this.session.tokenRe.exec(s))t-=this.session.tokenRe.lastIndex,this.session.tokenRe.lastIndex=0;this.moveCursorTo(e,t)},this.$shortWordEndIndex=function(e){var t,n=0,r,i=/\s/,s=this.session.tokenRe;s.lastIndex=0;if(t=this.session.tokenRe.exec(e))n=this.session.tokenRe.lastIndex;else{while((r=e[n])&&i.test(r))n++;if(n<1){s.lastIndex=0;while((r=e[n])&&!s.test(r)){s.lastIndex=0,n++;if(i.test(r)){if(n>2){n--;break}while((r=e[n])&&i.test(r))n++;if(n>2)break}}}}return s.lastIndex=0,n},this.moveCursorShortWordRight=function(){var e=this.lead.row,t=this.lead.column,n=this.doc.getLine(e),r=n.substring(t),i=this.session.getFoldAt(e,t,1);if(i)return this.moveCursorTo(i.end.row,i.end.column);if(t==n.length){var s=this.doc.getLength();do e++,r=this.doc.getLine(e);while(e0&&/^\s*$/.test(r));t=r.length,/\s+$/.test(r)||(r="")}var s=i.stringReverse(r),o=this.$shortWordEndIndex(s);return this.moveCursorTo(e,t-o)},this.moveCursorWordRight=function(){this.session.$selectLongWords?this.moveCursorLongWordRight():this.moveCursorShortWordRight()},this.moveCursorWordLeft=function(){this.session.$selectLongWords?this.moveCursorLongWordLeft():this.moveCursorShortWordLeft()},this.moveCursorBy=function(e,t){var n=this.session.documentToScreenPosition(this.lead.row,this.lead.column);t===0&&(this.$desiredColumn?n.column=this.$desiredColumn:this.$desiredColumn=n.column);var r=this.session.screenToDocumentPosition(n.row+e,n.column);e!==0&&t===0&&r.row===this.lead.row&&r.column===this.lead.column&&this.session.lineWidgets&&this.session.lineWidgets[r.row]&&r.row++,this.moveCursorTo(r.row,r.column+t,t===0)},this.moveCursorToPosition=function(e){this.moveCursorTo(e.row,e.column)},this.moveCursorTo=function(e,t,n){var r=this.session.getFoldAt(e,t,1);r&&(e=r.start.row,t=r.start.column),this.$keepDesiredColumnOnChange=!0,this.lead.setPosition(e,t),this.$keepDesiredColumnOnChange=!1,n||(this.$desiredColumn=null)},this.moveCursorToScreen=function(e,t,n){var r=this.session.screenToDocumentPosition(e,t);this.moveCursorTo(r.row,r.column,n)},this.detach=function(){this.lead.detach(),this.anchor.detach(),this.session=this.doc=null},this.fromOrientedRange=function(e){this.setSelectionRange(e,e.cursor==e.start),this.$desiredColumn=e.desiredColumn||this.$desiredColumn},this.toOrientedRange=function(e){var t=this.getRange();return e?(e.start.column=t.start.column,e.start.row=t.start.row,e.end.column=t.end.column,e.end.row=t.end.row):e=t,e.cursor=this.isBackwards()?e.start:e.end,e.desiredColumn=this.$desiredColumn,e},this.getRangeOfMovements=function(e){var t=this.getCursor();try{e.call(null,this);var n=this.getCursor();return o.fromPoints(t,n)}catch(r){return o.fromPoints(t,t)}finally{this.moveCursorToPosition(t)}},this.toJSON=function(){if(this.rangeCount)var e=this.ranges.map(function(e){var t=e.clone();return t.isBackwards=e.cursor==e.start,t});else{var e=this.getRange();e.isBackwards=this.isBackwards()}return e},this.fromJSON=function(e){if(e.start==undefined){if(this.rangeList){this.toSingleRange(e[0]);for(var t=e.length;t--;){var n=o.fromPoints(e[t].start,e[t].end);e[t].isBackwards&&(n.cursor=n.start),this.addRange(n,!0)}return}e=e[0]}this.rangeList&&this.toSingleRange(e),this.setSelectionRange(e,e.isBackwards)},this.isEqual=function(e){if((e.length||this.rangeCount)&&e.length!=this.rangeCount)return!1;if(!e.length||!this.ranges)return this.getRange().isEqual(e);for(var t=this.ranges.length;t--;)if(!this.ranges[t].isEqual(e[t]))return!1;return!0}}).call(u.prototype),t.Selection=u}),define("ace/tokenizer",["require","exports","module","ace/config"],function(e,t,n){"use strict";var r=e("./config"),i=2e3,s=function(e){this.states=e,this.regExps={},this.matchMappings={};for(var t in this.states){var n=this.states[t],r=[],i=0,s=this.matchMappings[t]={defaultToken:"text"},o="g",u=[];for(var a=0;a1?f.onMatch=this.$applyToken:f.onMatch=f.token),c>1&&(/\\\d/.test(f.regex)?l=f.regex.replace(/\\([0-9]+)/g,function(e,t){return"\\"+(parseInt(t,10)+i+1)}):(c=1,l=this.removeCapturingGroups(f.regex)),!f.splitRegex&&typeof f.token!="string"&&u.push(f)),s[i]=a,i+=c,r.push(l),f.onMatch||(f.onMatch=null)}r.length||(s[0]=0,r.push("$")),u.forEach(function(e){e.splitRegex=this.createSplitterRegexp(e.regex,o)},this),this.regExps[t]=new RegExp("("+r.join(")|(")+")|($)",o)}};(function(){this.$setMaxTokenCount=function(e){i=e|0},this.$applyToken=function(e){var t=this.splitRegex.exec(e).slice(1),n=this.token.apply(this,t);if(typeof n=="string")return[{type:n,value:e}];var r=[];for(var i=0,s=n.length;il){var g=e.substring(l,m-v.length);h.type==p?h.value+=g:(h.type&&f.push(h),h={type:p,value:g})}for(var y=0;yi){c>2*e.length&&this.reportError("infinite loop with in ace tokenizer",{startState:t,line:e});while(l1&&n[0]!==r&&n.unshift("#tmp",r),{tokens:f,state:n.length?n:r}},this.reportError=r.reportError}).call(s.prototype),t.Tokenizer=s}),define("ace/mode/text_highlight_rules",["require","exports","module","ace/lib/lang"],function(e,t,n){"use strict";var r=e("../lib/lang"),i=function(){this.$rules={start:[{token:"empty_line",regex:"^$"},{defaultToken:"text"}]}};(function(){this.addRules=function(e,t){if(!t){for(var n in e)this.$rules[n]=e[n];return}for(var n in e){var r=e[n];for(var i=0;i=this.$rowTokens.length){this.$row+=1,e||(e=this.$session.getLength());if(this.$row>=e)return this.$row=e-1,null;this.$rowTokens=this.$session.getTokens(this.$row),this.$tokenIndex=0}return this.$rowTokens[this.$tokenIndex]},this.getCurrentToken=function(){return this.$rowTokens[this.$tokenIndex]},this.getCurrentTokenRow=function(){return this.$row},this.getCurrentTokenColumn=function(){var e=this.$rowTokens,t=this.$tokenIndex,n=e[t].start;if(n!==undefined)return n;n=0;while(t>0)t-=1,n+=e[t].value.length;return n}}).call(r.prototype),t.TokenIterator=r}),define("ace/mode/text",["require","exports","module","ace/tokenizer","ace/mode/text_highlight_rules","ace/mode/behaviour","ace/unicode","ace/lib/lang","ace/token_iterator","ace/range"],function(e,t,n){"use strict";var r=e("../tokenizer").Tokenizer,i=e("./text_highlight_rules").TextHighlightRules,s=e("./behaviour").Behaviour,o=e("../unicode"),u=e("../lib/lang"),a=e("../token_iterator").TokenIterator,f=e("../range").Range,l=function(){this.HighlightRules=i,this.$behaviour=new s};(function(){this.tokenRe=new RegExp("^["+o.packages.L+o.packages.Mn+o.packages.Mc+o.packages.Nd+o.packages.Pc+"\\$_]+","g"),this.nonTokenRe=new RegExp("^(?:[^"+o.packages.L+o.packages.Mn+o.packages.Mc+o.packages.Nd+o.packages.Pc+"\\$_]|\\s])+","g"),this.getTokenizer=function(){return this.$tokenizer||(this.$highlightRules=this.$highlightRules||new this.HighlightRules,this.$tokenizer=new r(this.$highlightRules.getRules())),this.$tokenizer},this.lineCommentStart="",this.blockComment="",this.toggleCommentLines=function(e,t,n,r){function w(e){for(var t=n;t<=r;t++)e(i.getLine(t),t)}var i=t.doc,s=!0,o=!0,a=Infinity,f=t.getTabSize(),l=!1;if(!this.lineCommentStart){if(!this.blockComment)return!1;var c=this.blockComment.start,h=this.blockComment.end,p=new RegExp("^(\\s*)(?:"+u.escapeRegExp(c)+")"),d=new RegExp("(?:"+u.escapeRegExp(h)+")\\s*$"),v=function(e,t){if(g(e,t))return;if(!s||/\S/.test(e))i.insertInLine({row:t,column:e.length},h),i.insertInLine({row:t,column:a},c)},m=function(e,t){var n;(n=e.match(d))&&i.removeInLine(t,e.length-n[0].length,e.length),(n=e.match(p))&&i.removeInLine(t,n[1].length,n[0].length)},g=function(e,n){if(p.test(e))return!0;var r=t.getTokens(n);for(var i=0;i2?r%f!=f-1:r%f==0}}var E=Infinity;w(function(e,t){var n=e.search(/\S/);n!==-1?(ne.length&&(E=e.length)}),a==Infinity&&(a=E,s=!1,o=!1),l&&a%f!=0&&(a=Math.floor(a/f)*f),w(o?m:v)},this.toggleBlockComment=function(e,t,n,r){var i=this.blockComment;if(!i)return;!i.start&&i[0]&&(i=i[0]);var s=new a(t,r.row,r.column),o=s.getCurrentToken(),u=t.selection,l=t.selection.toOrientedRange(),c,h;if(o&&/comment/.test(o.type)){var p,d;while(o&&/comment/.test(o.type)){var v=o.value.indexOf(i.start);if(v!=-1){var m=s.getCurrentTokenRow(),g=s.getCurrentTokenColumn()+v;p=new f(m,g,m,g+i.start.length);break}o=s.stepBackward()}var s=new a(t,r.row,r.column),o=s.getCurrentToken();while(o&&/comment/.test(o.type)){var v=o.value.indexOf(i.end);if(v!=-1){var m=s.getCurrentTokenRow(),g=s.getCurrentTokenColumn()+v;d=new f(m,g,m,g+i.end.length);break}o=s.stepForward()}d&&t.remove(d),p&&(t.remove(p),c=p.start.row,h=-i.start.length)}else h=i.start.length,c=n.start.row,t.insert(n.end,i.end),t.insert(n.start,i.start);l.start.row==c&&(l.start.column+=h),l.end.row==c&&(l.end.column+=h),t.selection.fromOrientedRange(l)},this.getNextLineIndent=function(e,t,n){return this.$getIndent(t)},this.checkOutdent=function(e,t,n){return!1},this.autoOutdent=function(e,t,n){},this.$getIndent=function(e){return e.match(/^\s*/)[0]},this.createWorker=function(e){return null},this.createModeDelegates=function(e){this.$embeds=[],this.$modes={};for(var t in e)e[t]&&(this.$embeds.push(t),this.$modes[t]=new e[t]);var n=["toggleBlockComment","toggleCommentLines","getNextLineIndent","checkOutdent","autoOutdent","transformAction","getCompletions"];for(var t=0;tthis.row)return;if(n.start.row==this.row&&n.start.column>this.column)return;var r=this.row,i=this.column,s=n.start,o=n.end;if(t.action==="insertText")if(s.row===r&&s.column<=i){if(s.column!==i||!this.$insertRight)s.row===o.row?i+=o.column-s.column:(i-=s.column,r+=o.row-s.row)}else s.row!==o.row&&s.row=i?i=s.column:i=Math.max(0,i-(o.column-s.column)):s.row!==o.row&&s.row=this.document.getLength()?(n.row=Math.max(0,this.document.getLength()-1),n.column=this.document.getLine(n.row).length):e<0?(n.row=0,n.column=0):(n.row=e,n.column=Math.min(this.document.getLine(n.row).length,Math.max(0,t))),t<0&&(n.column=0),n}}).call(s.prototype)}),define("ace/document",["require","exports","module","ace/lib/oop","ace/lib/event_emitter","ace/range","ace/anchor"],function(e,t,n){"use strict";var r=e("./lib/oop"),i=e("./lib/event_emitter").EventEmitter,s=e("./range").Range,o=e("./anchor").Anchor,u=function(e){this.$lines=[],e.length===0?this.$lines=[""]:Array.isArray(e)?this._insertLines(0,e):this.insert({row:0,column:0},e)};(function(){r.implement(this,i),this.setValue=function(e){var t=this.getLength();this.remove(new s(0,0,t,this.getLine(t-1).length)),this.insert({row:0,column:0},e)},this.getValue=function(){return this.getAllLines().join(this.getNewLineCharacter())},this.createAnchor=function(e,t){return new o(this,e,t)},"aaa".split(/a/).length===0?this.$split=function(e){return e.replace(/\r\n|\r/g,"\n").split("\n")}:this.$split=function(e){return e.split(/\r\n|\r|\n/)},this.$detectNewLine=function(e){var t=e.match(/^.*?(\r\n|\r|\n)/m);this.$autoNewLine=t?t[1]:"\n",this._signal("changeNewLineMode")},this.getNewLineCharacter=function(){switch(this.$newLineMode){case"windows":return"\r\n";case"unix":return"\n";default:return this.$autoNewLine||"\n"}},this.$autoNewLine="",this.$newLineMode="auto",this.setNewLineMode=function(e){if(this.$newLineMode===e)return;this.$newLineMode=e,this._signal("changeNewLineMode")},this.getNewLineMode=function(){return this.$newLineMode},this.isNewLine=function(e){return e=="\r\n"||e=="\r"||e=="\n"},this.getLine=function(e){return this.$lines[e]||""},this.getLines=function(e,t){return this.$lines.slice(e,t+1)},this.getAllLines=function(){return this.getLines(0,this.getLength())},this.getLength=function(){return this.$lines.length},this.getTextRange=function(e){if(e.start.row==e.end.row)return this.getLine(e.start.row).substring(e.start.column,e.end.column);var t=this.getLines(e.start.row,e.end.row);t[0]=(t[0]||"").substring(e.start.column);var n=t.length-1;return e.end.row-e.start.row==n&&(t[n]=t[n].substring(0,e.end.column)),t.join(this.getNewLineCharacter())},this.$clipPosition=function(e){var t=this.getLength();return e.row>=t?(e.row=Math.max(0,t-1),e.column=this.getLine(t-1).length):e.row<0&&(e.row=0),e},this.insert=function(e,t){if(!t||t.length===0)return e;e=this.$clipPosition(e),this.getLength()<=1&&this.$detectNewLine(t);var n=this.$split(t),r=n.splice(0,1)[0],i=n.length==0?null:n.splice(n.length-1,1)[0];return e=this.insertInLine(e,r),i!==null&&(e=this.insertNewLine(e),e=this._insertLines(e.row,n),e=this.insertInLine(e,i||"")),e},this.insertLines=function(e,t){return e>=this.getLength()?this.insert({row:e,column:0},"\n"+t.join("\n")):this._insertLines(Math.max(e,0),t)},this._insertLines=function(e,t){if(t.length==0)return{row:e,column:0};while(t.length>2e4){var n=this._insertLines(e,t.slice(0,2e4));t=t.slice(2e4),e=n.row}var r=[e,0];r.push.apply(r,t),this.$lines.splice.apply(this.$lines,r);var i=new s(e,0,e+t.length,0),o={action:"insertLines",range:i,lines:t};return this._signal("change",{data:o}),i.end},this.insertNewLine=function(e){e=this.$clipPosition(e);var t=this.$lines[e.row]||"";this.$lines[e.row]=t.substring(0,e.column),this.$lines.splice(e.row+1,0,t.substring(e.column,t.length));var n={row:e.row+1,column:0},r={action:"insertText",range:s.fromPoints(e,n),text:this.getNewLineCharacter()};return this._signal("change",{data:r}),n},this.insertInLine=function(e,t){if(t.length==0)return e;var n=this.$lines[e.row]||"";this.$lines[e.row]=n.substring(0,e.column)+t+n.substring(e.column);var r={row:e.row,column:e.column+t.length},i={action:"insertText",range:s.fromPoints(e,r),text:t};return this._signal("change",{data:i}),r},this.remove=function(e){e instanceof s||(e=s.fromPoints(e.start,e.end)),e.start=this.$clipPosition(e.start),e.end=this.$clipPosition(e.end);if(e.isEmpty())return e.start;var t=e.start.row,n=e.end.row;if(e.isMultiLine()){var r=e.start.column==0?t:t+1,i=n-1;e.end.column>0&&this.removeInLine(n,0,e.end.column),i>=r&&this._removeLines(r,i),r!=t&&(this.removeInLine(t,e.start.column,this.getLine(t).length),this.removeNewLine(e.start.row))}else this.removeInLine(t,e.start.column,e.end.column);return e.start},this.removeInLine=function(e,t,n){if(t==n)return;var r=new s(e,t,e,n),i=this.getLine(e),o=i.substring(t,n),u=i.substring(0,t)+i.substring(n,i.length);this.$lines.splice(e,1,u);var a={action:"removeText",range:r,text:o};return this._signal("change",{data:a}),r.start},this.removeLines=function(e,t){return e<0||t>=this.getLength()?this.remove(new s(e,0,t+1,0)):this._removeLines(e,t)},this._removeLines=function(e,t){var n=new s(e,0,t+1,0),r=this.$lines.splice(e,t-e+1),i={action:"removeLines",range:n,nl:this.getNewLineCharacter(),lines:r};return this._signal("change",{data:i}),r},this.removeNewLine=function(e){var t=this.getLine(e),n=this.getLine(e+1),r=new s(e,t.length,e+1,0),i=t+n;this.$lines.splice(e,2,i);var o={action:"removeText",range:r,text:this.getNewLineCharacter()};this._signal("change",{data:o})},this.replace=function(e,t){e instanceof s||(e=s.fromPoints(e.start,e.end));if(t.length==0&&e.isEmpty())return e.start;if(t==this.getTextRange(e))return e.end;this.remove(e);if(t)var n=this.insert(e.start,t);else n=e.start;return n},this.applyDeltas=function(e){for(var t=0;t=0;t--){var n=e[t],r=s.fromPoints(n.range.start,n.range.end);n.action=="insertLines"?this._removeLines(r.start.row,r.end.row-1):n.action=="insertText"?this.remove(r):n.action=="removeLines"?this._insertLines(r.start.row,n.lines):n.action=="removeText"&&this.insert(r.start,n.text)}},this.indexToPosition=function(e,t){var n=this.$lines||this.getAllLines(),r=this.getNewLineCharacter().length;for(var i=t||0,s=n.length;i20){n.running=setTimeout(n.$worker,20);break}}n.currentLine=t,s<=r&&n.fireUpdateEvent(s,r)}};(function(){r.implement(this,i),this.setTokenizer=function(e){this.tokenizer=e,this.lines=[],this.states=[],this.start(0)},this.setDocument=function(e){this.doc=e,this.lines=[],this.states=[],this.stop()},this.fireUpdateEvent=function(e,t){var n={first:e,last:t};this._signal("update",{data:n})},this.start=function(e){this.currentLine=Math.min(e||0,this.currentLine,this.doc.getLength()),this.lines.splice(this.currentLine,this.lines.length),this.states.splice(this.currentLine,this.states.length),this.stop(),this.running=setTimeout(this.$worker,700)},this.scheduleStart=function(){this.running||(this.running=setTimeout(this.$worker,700))},this.$updateOnChange=function(e){var t=e.range,n=t.start.row,r=t.end.row-n;if(r===0)this.lines[n]=null;else if(e.action=="removeText"||e.action=="removeLines")this.lines.splice(n,r+1,null),this.states.splice(n,r+1,null);else{var i=Array(r+1);i.unshift(n,1),this.lines.splice.apply(this.lines,i),this.states.splice.apply(this.states,i)}this.currentLine=Math.min(n,this.currentLine,this.doc.getLength()),this.stop()},this.stop=function(){this.running&&clearTimeout(this.running),this.running=!1},this.getTokens=function(e){return this.lines[e]||this.$tokenizeRow(e)},this.getState=function(e){return this.currentLine==e&&this.$tokenizeRow(e),this.states[e]||"start"},this.$tokenizeRow=function(e){var t=this.doc.getLine(e),n=this.states[e-1],r=this.tokenizer.getLineTokens(t,n,e);return this.states[e]+""!=r.state+""?(this.states[e]=r.state,this.lines[e+1]=null,this.currentLine>e+1&&(this.currentLine=e+1)):this.currentLine==e&&(this.currentLine=e+1),this.lines[e]=r.tokens}}).call(s.prototype),t.BackgroundTokenizer=s}),define("ace/search_highlight",["require","exports","module","ace/lib/lang","ace/lib/oop","ace/range"],function(e,t,n){"use strict";var r=e("./lib/lang"),i=e("./lib/oop"),s=e("./range").Range,o=function(e,t,n){this.setRegexp(e),this.clazz=t,this.type=n||"text"};(function(){this.MAX_RANGES=500,this.setRegexp=function(e){if(this.regExp+""==e+"")return;this.regExp=e,this.cache=[]},this.update=function(e,t,n,i){if(!this.regExp)return;var o=i.firstRow,u=i.lastRow;for(var a=o;a<=u;a++){var f=this.cache[a];f==null&&(f=r.getMatchOffsets(n.getLine(a),this.regExp),f.length>this.MAX_RANGES&&(f=f.slice(0,this.MAX_RANGES)),f=f.map(function(e){return new s(a,e.offset,a,e.offset+e.length)}),this.cache[a]=f.length?f:"");for(var l=f.length;l--;)t.drawSingleLineMarker(e,f[l].toScreenRange(n),this.clazz,i)}}}).call(o.prototype),t.SearchHighlight=o}),define("ace/edit_session/fold_line",["require","exports","module","ace/range"],function(e,t,n){"use strict";function i(e,t){this.foldData=e,Array.isArray(t)?this.folds=t:t=this.folds=[t];var n=t[t.length-1];this.range=new r(t[0].start.row,t[0].start.column,n.end.row,n.end.column),this.start=this.range.start,this.end=this.range.end,this.folds.forEach(function(e){e.setFoldLine(this)},this)}var r=e("../range").Range;(function(){this.shiftRow=function(e){this.start.row+=e,this.end.row+=e,this.folds.forEach(function(t){t.start.row+=e,t.end.row+=e})},this.addFold=function(e){if(e.sameRow){if(e.start.rowthis.endRow)throw new Error("Can't add a fold to this FoldLine as it has no connection");this.folds.push(e),this.folds.sort(function(e,t){return-e.range.compareEnd(t.start.row,t.start.column)}),this.range.compareEnd(e.start.row,e.start.column)>0?(this.end.row=e.end.row,this.end.column=e.end.column):this.range.compareStart(e.end.row,e.end.column)<0&&(this.start.row=e.start.row,this.start.column=e.start.column)}else if(e.start.row==this.end.row)this.folds.push(e),this.end.row=e.end.row,this.end.column=e.end.column;else{if(e.end.row!=this.start.row)throw new Error("Trying to add fold to FoldRow that doesn't have a matching row");this.folds.unshift(e),this.start.row=e.start.row,this.start.column=e.start.column}e.foldLine=this},this.containsRow=function(e){return e>=this.start.row&&e<=this.end.row},this.walk=function(e,t,n){var r=0,i=this.folds,s,o,u,a=!0;t==null&&(t=this.end.row,n=this.end.column);for(var f=0;f0)continue;var a=i(e,o.start);return u===0?t&&a!==0?-s-2:s:a>0||a===0&&!t?s:-s-1}return-s-1},this.add=function(e){var t=!e.isEmpty(),n=this.pointIndex(e.start,t);n<0&&(n=-n-1);var r=this.pointIndex(e.end,t,n);return r<0?r=-r-1:r++,this.ranges.splice(n,r-n,e)},this.addList=function(e){var t=[];for(var n=e.length;n--;)t.push.call(t,this.add(e[n]));return t},this.substractPoint=function(e){var t=this.pointIndex(e);if(t>=0)return this.ranges.splice(t,1)},this.merge=function(){var e=[],t=this.ranges;t=t.sort(function(e,t){return i(e.start,t.start)});var n=t[0],r;for(var s=1;s=0},this.containsPoint=function(e){return this.pointIndex(e)>=0},this.rangeAtPoint=function(e){var t=this.pointIndex(e);if(t>=0)return this.ranges[t]},this.clipRows=function(e,t){var n=this.ranges;if(n[0].start.row>t||n[n.length-1].start.rowi)break;c.start.row==i&&c.start.column>=n.column&&(c.start.column!=n.column||!this.$insertRight)&&(c.start.column+=u,c.start.row+=o);if(c.end.row==i&&c.end.column>=n.column){if(c.end.column==n.column&&this.$insertRight)continue;c.end.column==n.column&&u>0&&fc.start.column&&c.end.column==a[f+1].start.column&&(c.end.column-=u),c.end.column+=u,c.end.row+=o}}if(o!=0&&f=e)return i;if(i.end.row>e)return null}return null},this.getNextFoldLine=function(e,t){var n=this.$foldData,r=0;t&&(r=n.indexOf(t)),r==-1&&(r=0);for(r;r=e)return i}return null},this.getFoldedRowCount=function(e,t){var n=this.$foldData,r=t-e+1;for(var i=0;i=t){u=e?r-=t-u:r=0);break}o>=e&&(u>=e?r-=o-u:r-=o-e+1)}return r},this.$addFoldLine=function(e){return this.$foldData.push(e),this.$foldData.sort(function(e,t){return e.start.row-t.start.row}),e},this.addFold=function(e,t){var n=this.$foldData,r=!1,o;e instanceof s?o=e:(o=new s(t,e),o.collapseChildren=t.collapseChildren),this.$clipRangeToDocument(o.range);var u=o.start.row,a=o.start.column,f=o.end.row,l=o.end.column;if(u0&&(this.removeFolds(p),p.forEach(function(e){o.addSubFold(e)}));for(var d=0;d0&&this.foldAll(e.start.row+1,e.end.row,e.collapseChildren-1),e.subFolds=[]},this.expandFolds=function(e){e.forEach(function(e){this.expandFold(e)},this)},this.unfold=function(e,t){var n,i;e==null?(n=new r(0,0,this.getLength(),0),t=!0):typeof e=="number"?n=new r(e,0,e,this.getLine(e).length):"row"in e?n=r.fromPoints(e,e):n=e,i=this.getFoldsInRangeList(n);if(t)this.removeFolds(i);else{var s=i;while(s.length)this.expandFolds(s),s=this.getFoldsInRangeList(n)}if(i.length)return i},this.isRowFolded=function(e,t){return!!this.getFoldLine(e,t)},this.getRowFoldEnd=function(e,t){var n=this.getFoldLine(e,t);return n?n.end.row:e},this.getRowFoldStart=function(e,t){var n=this.getFoldLine(e,t);return n?n.start.row:e},this.getFoldDisplayLine=function(e,t,n,r,i){r==null&&(r=e.start.row),i==null&&(i=0),t==null&&(t=e.end.row),n==null&&(n=this.getLine(t).length);var s=this.doc,o="";return e.walk(function(e,t,n,u){if(t=e){i=s.end.row;try{var o=this.addFold("...",s);o&&(o.collapseChildren=n)}catch(u){}}}},this.$foldStyles={manual:1,markbegin:1,markbeginend:1},this.$foldStyle="markbegin",this.setFoldStyle=function(e){if(!this.$foldStyles[e])throw new Error("invalid fold style: "+e+"["+Object.keys(this.$foldStyles).join(", ")+"]");if(this.$foldStyle==e)return;this.$foldStyle=e,e=="manual"&&this.unfold();var t=this.$foldMode;this.$setFolding(null),this.$setFolding(t)},this.$setFolding=function(e){if(this.$foldMode==e)return;this.$foldMode=e,this.off("change",this.$updateFoldWidgets),this.off("tokenizerUpdate",this.$tokenizerUpdateFoldWidgets),this._emit("changeAnnotation");if(!e||this.$foldStyle=="manual"){this.foldWidgets=null;return}this.foldWidgets=[],this.getFoldWidget=e.getFoldWidget.bind(e,this,this.$foldStyle),this.getFoldWidgetRange=e.getFoldWidgetRange.bind(e,this,this.$foldStyle),this.$updateFoldWidgets=this.updateFoldWidgets.bind(this),this.$tokenizerUpdateFoldWidgets=this.tokenizerUpdateFoldWidgets.bind(this),this.on("change",this.$updateFoldWidgets),this.on("tokenizerUpdate",this.$tokenizerUpdateFoldWidgets)},this.getParentFoldRangeData=function(e,t){var n=this.foldWidgets;if(!n||t&&n[e])return{};var r=e-1,i;while(r>=0){var s=n[r];s==null&&(s=n[r]=this.getFoldWidget(r));if(s=="start"){var o=this.getFoldWidgetRange(r);i||(i=o);if(o&&o.end.row>=e)break}r--}return{range:r!==-1&&o,firstRange:i}},this.onFoldWidgetClick=function(e,t){t=t.domEvent;var n={children:t.shiftKey,all:t.ctrlKey||t.metaKey,siblings:t.altKey},r=this.$toggleFoldWidget(e,n);if(!r){var i=t.target||t.srcElement;i&&/ace_fold-widget/.test(i.className)&&(i.className+=" ace_invalid")}},this.$toggleFoldWidget=function(e,t){if(!this.getFoldWidget)return;var n=this.getFoldWidget(e),r=this.getLine(e),i=n==="end"?-1:1,s=this.getFoldAt(e,i===-1?0:r.length,i);if(s){t.children||t.all?this.removeFold(s):this.expandFold(s);return}var o=this.getFoldWidgetRange(e,!0);if(o&&!o.isMultiLine()){s=this.getFoldAt(o.start.row,o.start.column,1);if(s&&o.isEqual(s.range)){this.removeFold(s);return}}if(t.siblings){var u=this.getParentFoldRangeData(e);if(u.range)var a=u.range.start.row+1,f=u.range.end.row;this.foldAll(a,f,t.all?1e4:0)}else t.children?(f=o?o.end.row:this.getLength(),this.foldAll(e+1,f,t.all?1e4:0)):o&&(t.all&&(o.collapseChildren=1e4),this.addFold("...",o));return o},this.toggleFoldWidget=function(e){var t=this.selection.getCursor().row;t=this.getRowFoldStart(t);var n=this.$toggleFoldWidget(t,{});if(n)return;var r=this.getParentFoldRangeData(t,!0);n=r.range||r.firstRange;if(n){t=n.start.row;var i=this.getFoldAt(t,this.getLine(t).length,1);i?this.removeFold(i):this.addFold("...",n)}},this.updateFoldWidgets=function(e){var t=e.data,n=t.range,r=n.start.row,i=n.end.row-r;if(i===0)this.foldWidgets[r]=null;else if(t.action=="removeText"||t.action=="removeLines")this.foldWidgets.splice(r,i+1,null);else{var s=Array(i+1);s.unshift(r,1),this.foldWidgets.splice.apply(this.foldWidgets,s)}},this.tokenizerUpdateFoldWidgets=function(e){var t=e.data;t.first!=t.last&&this.foldWidgets.length>t.first&&this.foldWidgets.splice(t.first,this.foldWidgets.length)}}var r=e("../range").Range,i=e("./fold_line").FoldLine,s=e("./fold").Fold,o=e("../token_iterator").TokenIterator;t.Folding=u}),define("ace/edit_session/bracket_match",["require","exports","module","ace/token_iterator","ace/range"],function(e,t,n){"use strict";function s(){this.findMatchingBracket=function(e,t){if(e.column==0)return null;var n=t||this.getLine(e.row).charAt(e.column-1);if(n=="")return null;var r=n.match(/([\(\[\{])|([\)\]\}])/);return r?r[1]?this.$findClosingBracket(r[1],e):this.$findOpeningBracket(r[2],e):null},this.getBracketRange=function(e){var t=this.getLine(e.row),n=!0,r,s=t.charAt(e.column-1),o=s&&s.match(/([\(\[\{])|([\)\]\}])/);o||(s=t.charAt(e.column),e={row:e.row,column:e.column+1},o=s&&s.match(/([\(\[\{])|([\)\]\}])/),n=!1);if(!o)return null;if(o[1]){var u=this.$findClosingBracket(o[1],e);if(!u)return null;r=i.fromPoints(e,u),n||(r.end.column++,r.start.column--),r.cursor=r.end}else{var u=this.$findOpeningBracket(o[2],e);if(!u)return null;r=i.fromPoints(u,e),n||(r.start.column++,r.end.column--),r.cursor=r.start}return r},this.$brackets={")":"(","(":")","]":"[","[":"]","{":"}","}":"{"},this.$findOpeningBracket=function(e,t,n){var i=this.$brackets[e],s=1,o=new r(this,t.row,t.column),u=o.getCurrentToken();u||(u=o.stepForward());if(!u)return;n||(n=new RegExp("(\\.?"+u.type.replace(".","\\.").replace("rparen",".paren").replace(/\b(?:end)\b/,"(?:start|begin|end)")+")+"));var a=t.column-o.getCurrentTokenColumn()-2,f=u.value;for(;;){while(a>=0){var l=f.charAt(a);if(l==i){s-=1;if(s==0)return{row:o.getCurrentTokenRow(),column:a+o.getCurrentTokenColumn()}}else l==e&&(s+=1);a-=1}do u=o.stepBackward();while(u&&!n.test(u.type));if(u==null)break;f=u.value,a=f.length-1}return null},this.$findClosingBracket=function(e,t,n){var i=this.$brackets[e],s=1,o=new r(this,t.row,t.column),u=o.getCurrentToken();u||(u=o.stepForward());if(!u)return;n||(n=new RegExp("(\\.?"+u.type.replace(".","\\.").replace("lparen",".paren").replace(/\b(?:start|begin)\b/,"(?:start|begin|end)")+")+"));var a=t.column-o.getCurrentTokenColumn();for(;;){var f=u.value,l=f.length;while(a=4352&&e<=4447||e>=4515&&e<=4519||e>=4602&&e<=4607||e>=9001&&e<=9002||e>=11904&&e<=11929||e>=11931&&e<=12019||e>=12032&&e<=12245||e>=12272&&e<=12283||e>=12288&&e<=12350||e>=12353&&e<=12438||e>=12441&&e<=12543||e>=12549&&e<=12589||e>=12593&&e<=12686||e>=12688&&e<=12730||e>=12736&&e<=12771||e>=12784&&e<=12830||e>=12832&&e<=12871||e>=12880&&e<=13054||e>=13056&&e<=19903||e>=19968&&e<=42124||e>=42128&&e<=42182||e>=43360&&e<=43388||e>=44032&&e<=55203||e>=55216&&e<=55238||e>=55243&&e<=55291||e>=63744&&e<=64255||e>=65040&&e<=65049||e>=65072&&e<=65106||e>=65108&&e<=65126||e>=65128&&e<=65131||e>=65281&&e<=65376||e>=65504&&e<=65510}r.implement(this,o),this.setDocument=function(e){this.doc&&this.doc.removeListener("change",this.$onChange),this.doc=e,e.on("change",this.$onChange),this.bgTokenizer&&this.bgTokenizer.setDocument(this.getDocument()),this.resetCaches()},this.getDocument=function(){return this.doc},this.$resetRowCache=function(e){if(!e){this.$docRowCache=[],this.$screenRowCache=[];return}var t=this.$docRowCache.length,n=this.$getRowCacheIndex(this.$docRowCache,e)+1;t>n&&(this.$docRowCache.splice(n,t),this.$screenRowCache.splice(n,t))},this.$getRowCacheIndex=function(e,t){var n=0,r=e.length-1;while(n<=r){var i=n+r>>1,s=e[i];if(t>s)n=i+1;else{if(!(t=t)break}return r=n[s],r?(r.index=s,r.start=i-r.value.length,r):null},this.setUndoManager=function(e){this.$undoManager=e,this.$deltas=[],this.$deltasDoc=[],this.$deltasFold=[],this.$informUndoManager&&this.$informUndoManager.cancel();if(e){var t=this;this.$syncInformUndoManager=function(){t.$informUndoManager.cancel(),t.$deltasFold.length&&(t.$deltas.push({group:"fold",deltas:t.$deltasFold}),t.$deltasFold=[]),t.$deltasDoc.length&&(t.$deltas.push({group:"doc",deltas:t.$deltasDoc}),t.$deltasDoc=[]),t.$deltas.length>0&&e.execute({action:"aceupdate",args:[t.$deltas,t],merge:t.mergeUndoDeltas}),t.mergeUndoDeltas=!1,t.$deltas=[]},this.$informUndoManager=i.delayedCall(this.$syncInformUndoManager)}},this.markUndoGroup=function(){this.$syncInformUndoManager&&this.$syncInformUndoManager()},this.$defaultUndoManager={undo:function(){},redo:function(){},reset:function(){}},this.getUndoManager=function(){return this.$undoManager||this.$defaultUndoManager},this.getTabString=function(){return this.getUseSoftTabs()?i.stringRepeat(" ",this.getTabSize()):" "},this.setUseSoftTabs=function(e){this.setOption("useSoftTabs",e)},this.getUseSoftTabs=function(){return this.$useSoftTabs&&!this.$mode.$indentWithTabs},this.setTabSize=function(e){this.setOption("tabSize",e)},this.getTabSize=function(){return this.$tabSize},this.isTabStop=function(e){return this.$useSoftTabs&&e.column%this.$tabSize===0},this.$overwrite=!1,this.setOverwrite=function(e){this.setOption("overwrite",e)},this.getOverwrite=function(){return this.$overwrite},this.toggleOverwrite=function(){this.setOverwrite(!this.$overwrite)},this.addGutterDecoration=function(e,t){this.$decorations[e]||(this.$decorations[e]=""),this.$decorations[e]+=" "+t,this._signal("changeBreakpoint",{})},this.removeGutterDecoration=function(e,t){this.$decorations[e]=(this.$decorations[e]||"").replace(" "+t,""),this._signal("changeBreakpoint",{})},this.getBreakpoints=function(){return this.$breakpoints},this.setBreakpoints=function(e){this.$breakpoints=[];for(var t=0;t0&&(r=!!n.charAt(t-1).match(this.tokenRe)),r||(r=!!n.charAt(t).match(this.tokenRe));if(r)var i=this.tokenRe;else if(/^\s+$/.test(n.slice(t-1,t+1)))var i=/\s/;else var i=this.nonTokenRe;var s=t;if(s>0){do s--;while(s>=0&&n.charAt(s).match(i));s++}var o=t;while(oe&&(e=t.screenWidth)}),this.lineWidgetWidth=e},this.$computeWidth=function(e){if(this.$modified||e){this.$modified=!1;if(this.$useWrapMode)return this.screenWidth=this.$wrapLimit;var t=this.doc.getAllLines(),n=this.$rowLengthCache,r=0,i=0,s=this.$foldData[i],o=s?s.start.row:Infinity,u=t.length;for(var a=0;ao){a=s.end.row+1;if(a>=u)break;s=this.$foldData[i++],o=s?s.start.row:Infinity}n[a]==null&&(n[a]=this.$getStringScreenWidth(t[a])[0]),n[a]>r&&(r=n[a])}this.screenWidth=r}},this.getLine=function(e){return this.doc.getLine(e)},this.getLines=function(e,t){return this.doc.getLines(e,t)},this.getLength=function(){return this.doc.getLength()},this.getTextRange=function(e){return this.doc.getTextRange(e||this.selection.getRange())},this.insert=function(e,t){return this.doc.insert(e,t)},this.remove=function(e){return this.doc.remove(e)},this.undoChanges=function(e,t){if(!e.length)return;this.$fromUndo=!0;var n=null;for(var r=e.length-1;r!=-1;r--){var i=e[r];i.group=="doc"?(this.doc.revertDeltas(i.deltas),n=this.$getUndoSelection(i.deltas,!0,n)):i.deltas.forEach(function(e){this.addFolds(e.folds)},this)}return this.$fromUndo=!1,n&&this.$undoSelect&&!t&&this.selection.setSelectionRange(n),n},this.redoChanges=function(e,t){if(!e.length)return;this.$fromUndo=!0;var n=null;for(var r=0;re.end.column&&(s.start.column+=u),s.end.row==e.end.row&&s.end.column>e.end.column&&(s.end.column+=u)),o&&s.start.row>=e.end.row&&(s.start.row+=o,s.end.row+=o)}s.end=this.insert(s.start,r);if(i.length){var a=e.start,l=s.start,o=l.row-a.row,u=l.column-a.column;this.addFolds(i.map(function(e){return e=e.clone(),e.start.row==a.row&&(e.start.column+=u),e.end.row==a.row&&(e.end.column+=u),e.start.row+=o,e.end.row+=o,e}))}return s},this.indentRows=function(e,t,n){n=n.replace(/\t/g,this.getTabString());for(var r=e;r<=t;r++)this.insert({row:r,column:0},n)},this.outdentRows=function(e){var t=e.collapseRows(),n=new f(0,0,0,0),r=this.getTabSize();for(var i=t.start.row;i<=t.end.row;++i){var s=this.getLine(i);n.start.row=i,n.end.row=i;for(var o=0;o0){var r=this.getRowFoldEnd(t+n);if(r>this.doc.getLength()-1)return 0;var i=r-t}else{e=this.$clipRowToDocument(e),t=this.$clipRowToDocument(t);var i=t-e+1}var s=new f(e,0,t,Number.MAX_VALUE),o=this.getFoldsInRange(s).map(function(e){return e=e.clone(),e.start.row+=i,e.end.row+=i,e}),u=n==0?this.doc.getLines(e,t):this.doc.removeLines(e,t);return this.doc.insertLines(e+i,u),o.length&&this.addFolds(o),i},this.moveLinesUp=function(e,t){return this.$moveLines(e,t,-1)},this.moveLinesDown=function(e,t){return this.$moveLines(e,t,1)},this.duplicateLines=function(e,t){return this.$moveLines(e,t,0)},this.$clipRowToDocument=function(e){return Math.max(0,Math.min(e,this.doc.getLength()-1))},this.$clipColumnToRow=function(e,t){return t<0?0:Math.min(this.doc.getLine(e).length,t)},this.$clipPositionToDocument=function(e,t){t=Math.max(0,t);if(e<0)e=0,t=0;else{var n=this.doc.getLength();e>=n?(e=n-1,t=this.doc.getLine(n-1).length):t=Math.min(this.doc.getLine(e).length,t)}return{row:e,column:t}},this.$clipRangeToDocument=function(e){e.start.row<0?(e.start.row=0,e.start.column=0):e.start.column=this.$clipColumnToRow(e.start.row,e.start.column);var t=this.doc.getLength()-1;return e.end.row>t?(e.end.row=t,e.end.column=this.doc.getLine(t).length):e.end.column=this.$clipColumnToRow(e.end.row,e.end.column),e},this.$wrapLimit=80,this.$useWrapMode=!1,this.$wrapLimitRange={min:null,max:null},this.setUseWrapMode=function(e){if(e!=this.$useWrapMode){this.$useWrapMode=e,this.$modified=!0,this.$resetRowCache(0);if(e){var t=this.getLength();this.$wrapData=Array(t),this.$updateWrapData(0,t-1)}this._signal("changeWrapMode")}},this.getUseWrapMode=function(){return this.$useWrapMode},this.setWrapLimitRange=function(e,t){if(this.$wrapLimitRange.min!==e||this.$wrapLimitRange.max!==t)this.$wrapLimitRange={min:e,max:t},this.$modified=!0,this.$useWrapMode&&this._signal("changeWrapMode")},this.adjustWrapLimit=function(e,t){var n=this.$wrapLimitRange;n.max<0&&(n={min:t,max:t});var r=this.$constrainWrapLimit(e,n.min,n.max);return r!=this.$wrapLimit&&r>1?(this.$wrapLimit=r,this.$modified=!0,this.$useWrapMode&&(this.$updateWrapData(0,this.getLength()-1),this.$resetRowCache(0),this._signal("changeWrapLimit")),!0):!1},this.$constrainWrapLimit=function(e,t,n){return t&&(e=Math.max(t,e)),n&&(e=Math.min(n,e)),e},this.getWrapLimit=function(){return this.$wrapLimit},this.setWrapLimit=function(e){this.setWrapLimitRange(e,e)},this.getWrapLimitRange=function(){return{min:this.$wrapLimitRange.min,max:this.$wrapLimitRange.max}},this.$updateInternalDataOnChange=function(e){var t=this.$useWrapMode,n,r=e.data.action,i=e.data.range.start.row,s=e.data.range.end.row,o=e.data.range.start,u=e.data.range.end,a=null;r.indexOf("Lines")!=-1?(r=="insertLines"?s=i+e.data.lines.length:s=i,n=e.data.lines?e.data.lines.length:s-i):n=s-i,this.$updating=!0;if(n!=0)if(r.indexOf("remove")!=-1){this[t?"$wrapData":"$rowLengthCache"].splice(i,n);var f=this.$foldData;a=this.getFoldsInRange(e.data.range),this.removeFolds(a);var l=this.getFoldLine(u.row),c=0;if(l){l.addRemoveChars(u.row,u.column,o.column-u.column),l.shiftRow(-n);var h=this.getFoldLine(i);h&&h!==l&&(h.merge(l),l=h),c=f.indexOf(l)+1}for(c;c=u.row&&l.shiftRow(-n)}s=i}else{var p=Array(n);p.unshift(i,0);var d=t?this.$wrapData:this.$rowLengthCache;d.splice.apply(d,p);var f=this.$foldData,l=this.getFoldLine(i),c=0;if(l){var v=l.range.compareInside(o.row,o.column);v==0?(l=l.split(o.row,o.column),l&&(l.shiftRow(n),l.addRemoveChars(s,0,u.column-o.column))):v==-1&&(l.addRemoveChars(i,0,u.column-o.column),l.shiftRow(n)),c=f.indexOf(l)+1}for(c;c=i&&l.shiftRow(n)}}else{n=Math.abs(e.data.range.start.column-e.data.range.end.column),r.indexOf("remove")!=-1&&(a=this.getFoldsInRange(e.data.range),this.removeFolds(a),n=-n);var l=this.getFoldLine(i);l&&l.addRemoveChars(i,o.column,n)}return t&&this.$wrapData.length!=this.doc.getLength()&&console.error("doc.getLength() and $wrapData.length have to be the same!"),this.$updating=!1,t?this.$updateWrapData(i,s):this.$updateRowLengthCache(i,s),a},this.$updateRowLengthCache=function(e,t,n){this.$rowLengthCache[e]=null,this.$rowLengthCache[t]=null},this.$updateWrapData=function(e,t){var r=this.doc.getAllLines(),i=this.getTabSize(),s=this.$wrapData,o=this.$wrapLimit,a,f,l=e;t=Math.min(t,r.length-1);while(l<=t)f=this.getFoldLine(l,f),f?(a=[],f.walk(function(e,t,i,s){var o;if(e!=null){o=this.$getDisplayTokens(e,a.length),o[0]=n;for(var f=1;fr-b){var w=a+r-b;if(e[w-1]>=p&&e[w]>=p){y(w);continue}if(e[w]==n||e[w]==u){for(w;w!=a-1;w--)if(e[w]==n)break;if(w>a){y(w);continue}w=a+r;for(w;w>2)),a-1);while(w>E&&e[w]E&&e[w]E&&e[w]==l)w--}else while(w>E&&e[w]E){y(++w);continue}w=a+r,e[w]==t&&w--,y(w-b)}return s},this.$getDisplayTokens=function(n,r){var i=[],s;r=r||0;for(var o=0;o39&&u<48||u>57&&u<64?i.push(l):u>=4352&&m(u)?i.push(e,t):i.push(e)}return i},this.$getStringScreenWidth=function(e,t,n){if(t==0)return[0,0];t==null&&(t=Infinity),n=n||0;var r,i;for(i=0;i=4352&&m(r)?n+=2:n+=1;if(n>t)break}return[n,i]},this.lineWidgets=null,this.getRowLength=function(e){if(this.lineWidgets)var t=this.lineWidgets[e]&&this.lineWidgets[e].rowCount||0;else t=0;return!this.$useWrapMode||!this.$wrapData[e]?1+t:this.$wrapData[e].length+1+t},this.getRowLineCount=function(e){return!this.$useWrapMode||!this.$wrapData[e]?1:this.$wrapData[e].length+1},this.getRowWrapIndent=function(e){if(this.$useWrapMode){var t=this.screenToDocumentPosition(e,Number.MAX_VALUE),n=this.$wrapData[t.row];return n.length&&n[0]=0)var o=a[f],r=this.$docRowCache[f],c=e>a[l-1];else var c=!l;var h=this.getLength()-1,p=this.getNextFoldLine(r),d=p?p.start.row:Infinity;while(o<=e){u=this.getRowLength(r);if(o+u>e||r>=h)break;o+=u,r++,r>d&&(r=p.end.row+1,p=this.getNextFoldLine(r,p),d=p?p.start.row:Infinity),c&&(this.$docRowCache.push(r),this.$screenRowCache.push(o))}if(p&&p.start.row<=r)n=this.getFoldDisplayLine(p),r=p.start.row;else{if(o+u<=e||r>h)return{row:h,column:this.getLine(h).length};n=this.getLine(r),p=null}var v=0;if(this.$useWrapMode){var m=this.$wrapData[r];if(m){var g=Math.floor(e-o);s=m[g],g>0&&m.length&&(v=m.indent,i=m[g-1]||m[m.length-1],n=n.substring(i))}}return i+=this.$getStringScreenWidth(n,t-v)[1],this.$useWrapMode&&i>=s&&(i=s-1),p?p.idxToPosition(i):{row:r,column:i}},this.documentToScreenPosition=function(e,t){if(typeof t=="undefined")var n=this.$clipPositionToDocument(e.row,e.column);else n=this.$clipPositionToDocument(e,t);e=n.row,t=n.column;var r=0,i=null,s=null;s=this.getFoldAt(e,t,1),s&&(e=s.start.row,t=s.start.column);var o,u=0,a=this.$docRowCache,f=this.$getRowCacheIndex(a,e),l=a.length;if(l&&f>=0)var u=a[f],r=this.$screenRowCache[f],c=e>a[l-1];else var c=!l;var h=this.getNextFoldLine(u),p=h?h.start.row:Infinity;while(u=p){o=h.end.row+1;if(o>e)break;h=this.getNextFoldLine(o,h),p=h?h.start.row:Infinity}else o=u+1;r+=this.getRowLength(u),u=o,c&&(this.$docRowCache.push(u),this.$screenRowCache.push(r))}var d="";h&&u>=p?(d=this.getFoldDisplayLine(h,e,t),i=h.start.row):(d=this.getLine(e).substring(0,t),i=e);var v=0;if(this.$useWrapMode){var m=this.$wrapData[i];if(m){var g=0;while(d.length>=m[g])r++,g++;d=d.substring(m[g-1]||0,d.length),v=g>0?m.indent:0}}return{row:r,column:v+this.$getStringScreenWidth(d)[0]}},this.documentToScreenColumn=function(e,t){return this.documentToScreenPosition(e,t).column},this.documentToScreenRow=function(e,t){return this.documentToScreenPosition(e,t).row},this.getScreenLength=function(){var e=0,t=null;if(!this.$useWrapMode){e=this.getLength();var n=this.$foldData;for(var r=0;ro&&(s=t.end.row+1,t=this.$foldData[r++],o=t?t.start.row:Infinity)}}return this.lineWidgets&&(e+=this.$getWidgetScreenLength()),e},this.$setFontMetrics=function(e){},this.destroy=function(){this.bgTokenizer&&(this.bgTokenizer.setDocument(null),this.bgTokenizer=null),this.$stopWorker()}}).call(p.prototype),e("./edit_session/folding").Folding.call(p.prototype),e("./edit_session/bracket_match").BracketMatch.call(p.prototype),s.defineOptions(p.prototype,"session",{wrap:{set:function(e){!e||e=="off"?e=!1:e=="free"?e=!0:e=="printMargin"?e=-1:typeof e=="string"&&(e=parseInt(e,10)||!1);if(this.$wrap==e)return;this.$wrap=e;if(!e)this.setUseWrapMode(!1);else{var t=typeof e=="number"?e:null;this.setWrapLimitRange(t,t),this.setUseWrapMode(!0)}},get:function(){return this.getUseWrapMode()?this.$wrap==-1?"printMargin":this.getWrapLimitRange().min?this.$wrap:"free":"off"},handlesSet:!0},wrapMethod:{set:function(e){e=e=="auto"?this.$mode.type!="text":e!="text",e!=this.$wrapAsCode&&(this.$wrapAsCode=e,this.$useWrapMode&&(this.$modified=!0,this.$resetRowCache(0),this.$updateWrapData(0,this.getLength()-1)))},initialValue:"auto"},indentedSoftWrap:{initialValue:!0},firstLineNumber:{set:function(){this._signal("changeBreakpoint")},initialValue:1},useWorker:{set:function(e){this.$useWorker=e,this.$stopWorker(),e&&this.$startWorker()},initialValue:!0},useSoftTabs:{initialValue:!0},tabSize:{set:function(e){if(isNaN(e)||this.$tabSize===e)return;this.$modified=!0,this.$rowLengthCache=[],this.$tabSize=e,this._signal("changeTabSize")},initialValue:4,handlesSet:!0},overwrite:{set:function(e){this._signal("changeOverwrite")},initialValue:!1},newLineMode:{set:function(e){this.doc.setNewLineMode(e)},get:function(){return this.doc.getNewLineMode()},handlesSet:!0},mode:{set:function(e){this.setMode(e)},get:function(){return this.$modeId}}}),t.EditSession=p}),define("ace/search",["require","exports","module","ace/lib/lang","ace/lib/oop","ace/range"],function(e,t,n){"use strict";var r=e("./lib/lang"),i=e("./lib/oop"),s=e("./range").Range,o=function(){this.$options={}};(function(){this.set=function(e){return i.mixin(this.$options,e),this},this.getOptions=function(){return r.copyObject(this.$options)},this.setOptions=function(e){this.$options=e},this.find=function(e){var t=this.$options,n=this.$matchIterator(e,t);if(!n)return!1;var r=null;return n.forEach(function(e,n,i){if(!e.start){var o=e.offset+(i||0);r=new s(n,o,n,o+e.length);if(!e.length&&t.start&&t.start.start&&t.skipCurrent!=0&&r.isEqual(t.start))return r=null,!1}else r=e;return!0}),r},this.findAll=function(e){var t=this.$options;if(!t.needle)return[];this.$assembleRegExp(t);var n=t.range,i=n?e.getLines(n.start.row,n.end.row):e.doc.getAllLines(),o=[],u=t.re;if(t.$isMultiLine){var a=u.length,f=i.length-a,l;e:for(var c=u.offset||0;c<=f;c++){for(var h=0;hv)continue;o.push(l=new s(c,v,c+a-1,m)),a>2&&(c=c+a-2)}}else for(var g=0;gE&&o[h].end.row==n.end.row)h--;o=o.slice(g,h+1);for(g=0,h=o.length;g=0;u--)if(i(o[u],t,s))return!0};else var u=function(e,t,s){var o=r.getMatchOffsets(e,n);for(var u=0;u=o;r--)if(n(e.getLine(r),r))return;if(t.wrap==0)return;for(r=u,o=s.row;r>=o;r--)if(n(e.getLine(r),r))return}:function(n){var r=s.row,i=e.getLine(r).substr(s.column);if(n(i,r,s.column))return;for(r+=1;r<=u;r++)if(n(e.getLine(r),r))return;if(t.wrap==0)return;for(r=o,u=s.row;r<=u;r++)if(n(e.getLine(r),r))return};return{forEach:a}}}).call(o.prototype),t.Search=o}),define("ace/keyboard/hash_handler",["require","exports","module","ace/lib/keys","ace/lib/useragent"],function(e,t,n){"use strict";function o(e,t){this.platform=t||(i.isMac?"mac":"win"),this.commands={},this.commandKeyBinding={},this.addCommands(e),this.$singleCommand=!0}function u(e,t){o.call(this,e,t),this.$singleCommand=!1}var r=e("../lib/keys"),i=e("../lib/useragent"),s=r.KEY_MODS;u.prototype=o.prototype,function(){function e(e){return typeof e=="object"&&e.bindKey&&e.bindKey.position||0}this.addCommand=function(e){this.commands[e.name]&&this.removeCommand(e),this.commands[e.name]=e,e.bindKey&&this._buildKeyHash(e)},this.removeCommand=function(e,t){var n=e&&(typeof e=="string"?e:e.name);e=this.commands[n],t||delete this.commands[n];var r=this.commandKeyBinding;for(var i in r){var s=r[i];if(s==e)delete r[i];else if(Array.isArray(s)){var o=s.indexOf(e);o!=-1&&(s.splice(o,1),s.length==1&&(r[i]=s[0]))}}},this.bindKey=function(e,t,n){typeof e=="object"&&(n==undefined&&(n=e.position),e=e[this.platform]);if(!e)return;if(typeof t=="function")return this.addCommand({exec:t,bindKey:e,name:t.name||e});e.split("|").forEach(function(e){var r="";if(e.indexOf(" ")!=-1){var i=e.split(/\s+/);e=i.pop(),i.forEach(function(e){var t=this.parseKeys(e),n=s[t.hashId]+t.key;r+=(r?" ":"")+n,this._addCommandToBinding(r,"chainKeys")},this),r+=" "}var o=this.parseKeys(e),u=s[o.hashId]+o.key;this._addCommandToBinding(r+u,t,n)},this)},this._addCommandToBinding=function(t,n,r){var i=this.commandKeyBinding,s;if(!n)delete i[t];else if(!i[t]||this.$singleCommand)i[t]=n;else{Array.isArray(i[t])?(s=i[t].indexOf(n))!=-1&&i[t].splice(s,1):i[t]=[i[t]],typeof r!="number"&&(r||n.isDefault?r=-100:r=e(n));var o=i[t];for(s=0;sr)break}o.splice(s,0,n)}},this.addCommands=function(e){e&&Object.keys(e).forEach(function(t){var n=e[t];if(!n)return;if(typeof n=="string")return this.bindKey(n,t);typeof n=="function"&&(n={exec:n});if(typeof n!="object")return;n.name||(n.name=t),this.addCommand(n)},this)},this.removeCommands=function(e){Object.keys(e).forEach(function(t){this.removeCommand(e[t])},this)},this.bindKeys=function(e){Object.keys(e).forEach(function(t){this.bindKey(t,e[t])},this)},this._buildKeyHash=function(e){this.bindKey(e.bindKey,e)},this.parseKeys=function(e){var t=e.toLowerCase().split(/[\-\+]([\-\+])?/).filter(function(e){return e}),n=t.pop(),i=r[n];if(r.FUNCTION_KEYS[i])n=r.FUNCTION_KEYS[i].toLowerCase();else{if(!t.length)return{key:n,hashId:-1};if(t.length==1&&t[0]=="shift")return{key:n.toUpperCase(),hashId:-1}}var s=0;for(var o=t.length;o--;){var u=r.KEY_MODS[t[o]];if(u==null)return typeof console!="undefined"&&console.error("invalid modifier "+t[o]+" in "+e),!1;s|=u}return{key:n,hashId:s}},this.findKeyCommand=function(t,n){var r=s[t]+n;return this.commandKeyBinding[r]},this.handleKeyboard=function(e,t,n,r){var i=s[t]+n,o=this.commandKeyBinding[i];e.$keyChain&&(e.$keyChain+=" "+i,o=this.commandKeyBinding[e.$keyChain]||o);if(o)if(o=="chainKeys"||o[o.length-1]=="chainKeys")return e.$keyChain=e.$keyChain||i,{command:"null"};if(e.$keyChain)if(!!t&&t!=4||n.length!=1){if(t==-1||r>0)e.$keyChain=""}else e.$keyChain=e.$keyChain.slice(0,-i.length-1);return{command:o}},this.getStatusText=function(e,t){return t.$keyChain||""}}.call(o.prototype),t.HashHandler=o,t.MultiHashHandler=u}),define("ace/commands/command_manager",["require","exports","module","ace/lib/oop","ace/keyboard/hash_handler","ace/lib/event_emitter"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../keyboard/hash_handler").MultiHashHandler,s=e("../lib/event_emitter").EventEmitter,o=function(e,t){i.call(this,t,e),this.byName=this.commands,this.setDefaultHandler("exec",function(e){return e.command.exec(e.editor,e.args||{})})};r.inherits(o,i),function(){r.implement(this,s),this.exec=function(e,t,n){if(Array.isArray(e)){for(var r=e.length;r--;)if(this.exec(e[r],t,n))return!0;return!1}typeof e=="string"&&(e=this.commands[e]);if(!e)return!1;if(t&&t.$readOnly&&!e.readOnly)return!1;var i={editor:t,command:e,args:n};return i.returnValue=this._emit("exec",i),this._signal("afterExec",i),i.returnValue===!1?!1:!0},this.toggleRecording=function(e){if(this.$inReplay)return;return e&&e._emit("changeStatus"),this.recording?(this.macro.pop(),this.removeEventListener("exec",this.$addCommandToMacro),this.macro.length||(this.macro=this.oldMacro),this.recording=!1):(this.$addCommandToMacro||(this.$addCommandToMacro=function(e){this.macro.push([e.command,e.args])}.bind(this)),this.oldMacro=this.macro,this.macro=[],this.on("exec",this.$addCommandToMacro),this.recording=!0)},this.replay=function(e){if(this.$inReplay||!this.macro)return;if(this.recording)return this.toggleRecording(e);try{this.$inReplay=!0,this.macro.forEach(function(t){typeof t=="string"?this.exec(t,e):this.exec(t[0],e,t[1])},this)}finally{this.$inReplay=!1}},this.trimMacro=function(e){return e.map(function(e){return typeof e[0]!="string"&&(e[0]=e[0].name),e[1]||(e=e[0]),e})}}.call(o.prototype),t.CommandManager=o}),define("ace/commands/default_commands",["require","exports","module","ace/lib/lang","ace/config","ace/range"],function(e,t,n){"use strict";function o(e,t){return{win:e,mac:t}}var r=e("../lib/lang"),i=e("../config"),s=e("../range").Range;t.commands=[{name:"showSettingsMenu",bindKey:o("Ctrl-,","Command-,"),exec:function(e){i.loadModule("ace/ext/settings_menu",function(t){t.init(e),e.showSettingsMenu()})},readOnly:!0},{name:"goToNextError",bindKey:o("Alt-E","Ctrl-E"),exec:function(e){i.loadModule("ace/ext/error_marker",function(t){t.showErrorMarker(e,1)})},scrollIntoView:"animate",readOnly:!0},{name:"goToPreviousError",bindKey:o("Alt-Shift-E","Ctrl-Shift-E"),exec:function(e){i.loadModule("ace/ext/error_marker",function(t){t.showErrorMarker(e,-1)})},scrollIntoView:"animate",readOnly:!0},{name:"selectall",bindKey:o("Ctrl-A","Command-A"),exec:function(e){e.selectAll()},readOnly:!0},{name:"centerselection",bindKey:o(null,"Ctrl-L"),exec:function(e){e.centerSelection()},readOnly:!0},{name:"gotoline",bindKey:o("Ctrl-L","Command-L"),exec:function(e){var t=parseInt(prompt("Enter line number:"),10);isNaN(t)||e.gotoLine(t)},readOnly:!0},{name:"fold",bindKey:o("Alt-L|Ctrl-F1","Command-Alt-L|Command-F1"),exec:function(e){e.session.toggleFold(!1)},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"unfold",bindKey:o("Alt-Shift-L|Ctrl-Shift-F1","Command-Alt-Shift-L|Command-Shift-F1"),exec:function(e){e.session.toggleFold(!0)},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"toggleFoldWidget",bindKey:o("F2","F2"),exec:function(e){e.session.toggleFoldWidget()},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"toggleParentFoldWidget",bindKey:o("Alt-F2","Alt-F2"),exec:function(e){e.session.toggleFoldWidget(!0)},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"foldall",bindKey:o(null,"Ctrl-Command-Option-0"),exec:function(e){e.session.foldAll()},scrollIntoView:"center",readOnly:!0},{name:"foldOther",bindKey:o("Alt-0","Command-Option-0"),exec:function(e){e.session.foldAll(),e.session.unfold(e.selection.getAllRanges())},scrollIntoView:"center",readOnly:!0},{name:"unfoldall",bindKey:o("Alt-Shift-0","Command-Option-Shift-0"),exec:function(e){e.session.unfold()},scrollIntoView:"center",readOnly:!0},{name:"findnext",bindKey:o("Ctrl-K","Command-G"),exec:function(e){e.findNext()},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"findprevious",bindKey:o("Ctrl-Shift-K","Command-Shift-G"),exec:function(e){e.findPrevious()},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"selectOrFindNext",bindKey:o("Alt-K","Ctrl-G"),exec:function(e){e.selection.isEmpty()?e.selection.selectWord():e.findNext()},readOnly:!0},{name:"selectOrFindPrevious",bindKey:o("Alt-Shift-K","Ctrl-Shift-G"),exec:function(e){e.selection.isEmpty()?e.selection.selectWord():e.findPrevious()},readOnly:!0},{name:"find",bindKey:o("Ctrl-F","Command-F"),exec:function(e){i.loadModule("ace/ext/searchbox",function(t){t.Search(e)})},readOnly:!0},{name:"overwrite",bindKey:"Insert",exec:function(e){e.toggleOverwrite()},readOnly:!0},{name:"selecttostart",bindKey:o("Ctrl-Shift-Home","Command-Shift-Up"),exec:function(e){e.getSelection().selectFileStart()},multiSelectAction:"forEach",readOnly:!0,scrollIntoView:"animate",aceCommandGroup:"fileJump"},{name:"gotostart",bindKey:o("Ctrl-Home","Command-Home|Command-Up"),exec:function(e){e.navigateFileStart()},multiSelectAction:"forEach",readOnly:!0,scrollIntoView:"animate",aceCommandGroup:"fileJump"},{name:"selectup",bindKey:o("Shift-Up","Shift-Up"),exec:function(e){e.getSelection().selectUp()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"golineup",bindKey:o("Up","Up|Ctrl-P"),exec:function(e,t){e.navigateUp(t.times)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selecttoend",bindKey:o("Ctrl-Shift-End","Command-Shift-Down"),exec:function(e){e.getSelection().selectFileEnd()},multiSelectAction:"forEach",readOnly:!0,scrollIntoView:"animate",aceCommandGroup:"fileJump"},{name:"gotoend",bindKey:o("Ctrl-End","Command-End|Command-Down"),exec:function(e){e.navigateFileEnd()},multiSelectAction:"forEach",readOnly:!0,scrollIntoView:"animate",aceCommandGroup:"fileJump"},{name:"selectdown",bindKey:o("Shift-Down","Shift-Down"),exec:function(e){e.getSelection().selectDown()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"golinedown",bindKey:o("Down","Down|Ctrl-N"),exec:function(e,t){e.navigateDown(t.times)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectwordleft",bindKey:o("Ctrl-Shift-Left","Option-Shift-Left"),exec:function(e){e.getSelection().selectWordLeft()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotowordleft",bindKey:o("Ctrl-Left","Option-Left"),exec:function(e){e.navigateWordLeft()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selecttolinestart",bindKey:o("Alt-Shift-Left","Command-Shift-Left"),exec:function(e){e.getSelection().selectLineStart()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotolinestart",bindKey:o("Alt-Left|Home","Command-Left|Home|Ctrl-A"),exec:function(e){e.navigateLineStart()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectleft",bindKey:o("Shift-Left","Shift-Left"),exec:function(e){e.getSelection().selectLeft()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotoleft",bindKey:o("Left","Left|Ctrl-B"),exec:function(e,t){e.navigateLeft(t.times)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectwordright",bindKey:o("Ctrl-Shift-Right","Option-Shift-Right"),exec:function(e){e.getSelection().selectWordRight()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotowordright",bindKey:o("Ctrl-Right","Option-Right"),exec:function(e){e.navigateWordRight()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selecttolineend",bindKey:o("Alt-Shift-Right","Command-Shift-Right"),exec:function(e){e.getSelection().selectLineEnd()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotolineend",bindKey:o("Alt-Right|End","Command-Right|End|Ctrl-E"),exec:function(e){e.navigateLineEnd()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectright",bindKey:o("Shift-Right","Shift-Right"),exec:function(e){e.getSelection().selectRight()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotoright",bindKey:o("Right","Right|Ctrl-F"),exec:function(e,t){e.navigateRight(t.times)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectpagedown",bindKey:"Shift-PageDown",exec:function(e){e.selectPageDown()},readOnly:!0},{name:"pagedown",bindKey:o(null,"Option-PageDown"),exec:function(e){e.scrollPageDown()},readOnly:!0},{name:"gotopagedown",bindKey:o("PageDown","PageDown|Ctrl-V"),exec:function(e){e.gotoPageDown()},readOnly:!0},{name:"selectpageup",bindKey:"Shift-PageUp",exec:function(e){e.selectPageUp()},readOnly:!0},{name:"pageup",bindKey:o(null,"Option-PageUp"),exec:function(e){e.scrollPageUp()},readOnly:!0},{name:"gotopageup",bindKey:"PageUp",exec:function(e){e.gotoPageUp()},readOnly:!0},{name:"scrollup",bindKey:o("Ctrl-Up",null),exec:function(e){e.renderer.scrollBy(0,-2*e.renderer.layerConfig.lineHeight)},readOnly:!0},{name:"scrolldown",bindKey:o("Ctrl-Down",null),exec:function(e){e.renderer.scrollBy(0,2*e.renderer.layerConfig.lineHeight)},readOnly:!0},{name:"selectlinestart",bindKey:"Shift-Home",exec:function(e){e.getSelection().selectLineStart()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectlineend",bindKey:"Shift-End",exec:function(e){e.getSelection().selectLineEnd()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"togglerecording",bindKey:o("Ctrl-Alt-E","Command-Option-E"),exec:function(e){e.commands.toggleRecording(e)},readOnly:!0},{name:"replaymacro",bindKey:o("Ctrl-Shift-E","Command-Shift-E"),exec:function(e){e.commands.replay(e)},readOnly:!0},{name:"jumptomatching",bindKey:o("Ctrl-P","Ctrl-P"),exec:function(e){e.jumpToMatching()},multiSelectAction:"forEach",scrollIntoView:"animate",readOnly:!0},{name:"selecttomatching",bindKey:o("Ctrl-Shift-P","Ctrl-Shift-P"),exec:function(e){e.jumpToMatching(!0)},multiSelectAction:"forEach",scrollIntoView:"animate",readOnly:!0},{name:"expandToMatching",bindKey:o("Ctrl-Shift-M","Ctrl-Shift-M"),exec:function(e){e.jumpToMatching(!0,!0)},multiSelectAction:"forEach",scrollIntoView:"animate",readOnly:!0},{name:"passKeysToBrowser",bindKey:o(null,null),exec:function(){},passEvent:!0,readOnly:!0},{name:"cut",exec:function(e){var t=e.getSelectionRange();e._emit("cut",t),e.selection.isEmpty()||(e.session.remove(t),e.clearSelection())},scrollIntoView:"cursor",multiSelectAction:"forEach"},{name:"removeline",bindKey:o("Ctrl-D","Command-D"),exec:function(e){e.removeLines()},scrollIntoView:"cursor",multiSelectAction:"forEachLine"},{name:"duplicateSelection",bindKey:o("Ctrl-Shift-D","Command-Shift-D"),exec:function(e){e.duplicateSelection()},scrollIntoView:"cursor",multiSelectAction:"forEach"},{name:"sortlines",bindKey:o("Ctrl-Alt-S","Command-Alt-S"),exec:function(e){e.sortLines()},scrollIntoView:"selection",multiSelectAction:"forEachLine"},{name:"togglecomment",bindKey:o("Ctrl-/","Command-/"),exec:function(e){e.toggleCommentLines()},multiSelectAction:"forEachLine",scrollIntoView:"selectionPart"},{name:"toggleBlockComment",bindKey:o("Ctrl-Shift-/","Command-Shift-/"),exec:function(e){e.toggleBlockComment()},multiSelectAction:"forEach",scrollIntoView:"selectionPart"},{name:"modifyNumberUp",bindKey:o("Ctrl-Shift-Up","Alt-Shift-Up"),exec:function(e){e.modifyNumber(1)},scrollIntoView:"cursor",multiSelectAction:"forEach"},{name:"modifyNumberDown",bindKey:o("Ctrl-Shift-Down","Alt-Shift-Down"),exec:function(e){e.modifyNumber(-1)},scrollIntoView:"cursor",multiSelectAction:"forEach"},{name:"replace",bindKey:o("Ctrl-H","Command-Option-F"),exec:function(e){i.loadModule("ace/ext/searchbox",function(t){t.Search(e,!0)})}},{name:"undo",bindKey:o("Ctrl-Z","Command-Z"),exec:function(e){e.undo()}},{name:"redo",bindKey:o("Ctrl-Shift-Z|Ctrl-Y","Command-Shift-Z|Command-Y"),exec:function(e){e.redo()}},{name:"copylinesup",bindKey:o("Alt-Shift-Up","Command-Option-Up"),exec:function(e){e.copyLinesUp()},scrollIntoView:"cursor"},{name:"movelinesup",bindKey:o("Alt-Up","Option-Up"),exec:function(e){e.moveLinesUp()},scrollIntoView:"cursor"},{name:"copylinesdown",bindKey:o("Alt-Shift-Down","Command-Option-Down"),exec:function(e){e.copyLinesDown()},scrollIntoView:"cursor"},{name:"movelinesdown",bindKey:o("Alt-Down","Option-Down"),exec:function(e){e.moveLinesDown()},scrollIntoView:"cursor"},{name:"del",bindKey:o("Delete","Delete|Ctrl-D|Shift-Delete"),exec:function(e){e.remove("right")},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"backspace",bindKey:o("Shift-Backspace|Backspace","Ctrl-Backspace|Shift-Backspace|Backspace|Ctrl-H"),exec:function(e){e.remove("left")},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"cut_or_delete",bindKey:o("Shift-Delete",null),exec:function(e){if(!e.selection.isEmpty())return!1;e.remove("left")},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removetolinestart",bindKey:o("Alt-Backspace","Command-Backspace"),exec:function(e){e.removeToLineStart()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removetolineend",bindKey:o("Alt-Delete","Ctrl-K"),exec:function(e){e.removeToLineEnd()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removewordleft",bindKey:o("Ctrl-Backspace","Alt-Backspace|Ctrl-Alt-Backspace"),exec:function(e){e.removeWordLeft()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removewordright",bindKey:o("Ctrl-Delete","Alt-Delete"),exec:function(e){e.removeWordRight()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"outdent",bindKey:o("Shift-Tab","Shift-Tab"),exec:function(e){e.blockOutdent()},multiSelectAction:"forEach",scrollIntoView:"selectionPart"},{name:"indent",bindKey:o("Tab","Tab"),exec:function(e){e.indent()},multiSelectAction:"forEach",scrollIntoView:"selectionPart"},{name:"blockoutdent",bindKey:o("Ctrl-[","Ctrl-["),exec:function(e){e.blockOutdent()},multiSelectAction:"forEachLine",scrollIntoView:"selectionPart"},{name:"blockindent",bindKey:o("Ctrl-]","Ctrl-]"),exec:function(e){e.blockIndent()},multiSelectAction:"forEachLine",scrollIntoView:"selectionPart"},{name:"insertstring",exec:function(e,t){e.insert(t)},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"inserttext",exec:function(e,t){e.insert(r.stringRepeat(t.text||"",t.times||1))},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"splitline",bindKey:o(null,"Ctrl-O"),exec:function(e){e.splitLine()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"transposeletters",bindKey:o("Ctrl-T","Ctrl-T"),exec:function(e){e.transposeLetters()},multiSelectAction:function(e){e.transposeSelections(1)},scrollIntoView:"cursor"},{name:"touppercase",bindKey:o("Ctrl-U","Ctrl-U"),exec:function(e){e.toUpperCase()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"tolowercase",bindKey:o("Ctrl-Shift-U","Ctrl-Shift-U"),exec:function(e){e.toLowerCase()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"expandtoline",bindKey:o("Ctrl-Shift-L","Command-Shift-L"),exec:function(e){var t=e.selection.getRange();t.start.column=t.end.column=0,t.end.row++,e.selection.setRange(t,!1)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"joinlines",bindKey:o(null,null),exec:function(e){var t=e.selection.isBackwards(),n=t?e.selection.getSelectionLead():e.selection.getSelectionAnchor(),i=t?e.selection.getSelectionAnchor():e.selection.getSelectionLead(),o=e.session.doc.getLine(n.row).length,u=e.session.doc.getTextRange(e.selection.getRange()),a=u.replace(/\n\s*/," ").length,f=e.session.doc.getLine(n.row);for(var l=n.row+1;l<=i.row+1;l++){var c=r.stringTrimLeft(r.stringTrimRight(e.session.doc.getLine(l)));c.length!==0&&(c=" "+c),f+=c}i.row+10?(e.selection.moveCursorTo(n.row,n.column),e.selection.selectTo(n.row,n.column+a)):(o=e.session.doc.getLine(n.row).length>o?o+1:o,e.selection.moveCursorTo(n.row,o))},multiSelectAction:"forEach",readOnly:!0},{name:"invertSelection",bindKey:o(null,null),exec:function(e){var t=e.session.doc.getLength()-1,n=e.session.doc.getLine(t).length,r=e.selection.rangeList.ranges,i=[];r.length<1&&(r=[e.selection.getRange()]);for(var o=0;o0&&this.$blockScrolling--;var n=t&&t.scrollIntoView;if(n){switch(n){case"center-animate":n="animate";case"center":this.renderer.scrollCursorIntoView(null,.5);break;case"animate":case"cursor":this.renderer.scrollCursorIntoView();break;case"selectionPart":var r=this.selection.getRange(),i=this.renderer.layerConfig;(r.start.row>=i.lastRow||r.end.row<=i.firstRow)&&this.renderer.scrollSelectionIntoView(this.selection.anchor,this.selection.lead);break;default:}n=="animate"&&this.renderer.animateScrolling(this.curOp.scrollTop)}this.prevOp=this.curOp,this.curOp=null}},this.$mergeableCommands=["backspace","del","insertstring"],this.$historyTracker=function(e){if(!this.$mergeUndoDeltas)return;var t=this.prevOp,n=this.$mergeableCommands,r=t.command&&e.command.name==t.command.name;if(e.command.name=="insertstring"){var i=e.args;this.mergeNextCommand===undefined&&(this.mergeNextCommand=!0),r=r&&this.mergeNextCommand&&(!/\s/.test(i)||/\s/.test(t.args)),this.mergeNextCommand=!0}else r=r&&n.indexOf(e.command.name)!==-1;this.$mergeUndoDeltas!="always"&&Date.now()-this.sequenceStartTime>2e3&&(r=!1),r?this.session.mergeUndoDeltas=!0:n.indexOf(e.command.name)!==-1&&(this.sequenceStartTime=Date.now())},this.setKeyboardHandler=function(e,t){if(e&&typeof e=="string"){this.$keybindingId=e;var n=this;g.loadModule(["keybinding",e],function(r){n.$keybindingId==e&&n.keyBinding.setKeyboardHandler(r&&r.handler),t&&t()})}else this.$keybindingId=null,this.keyBinding.setKeyboardHandler(e),t&&t()},this.getKeyboardHandler=function(){return this.keyBinding.getKeyboardHandler()},this.setSession=function(e){if(this.session==e)return;this.curOp&&this.endOperation(),this.curOp={};var t=this.session;if(t){this.session.removeEventListener("change",this.$onDocumentChange),this.session.removeEventListener("changeMode",this.$onChangeMode),this.session.removeEventListener("tokenizerUpdate",this.$onTokenizerUpdate),this.session.removeEventListener("changeTabSize",this.$onChangeTabSize),this.session.removeEventListener("changeWrapLimit",this.$onChangeWrapLimit),this.session.removeEventListener("changeWrapMode",this.$onChangeWrapMode),this.session.removeEventListener("onChangeFold",this.$onChangeFold),this.session.removeEventListener("changeFrontMarker",this.$onChangeFrontMarker),this.session.removeEventListener("changeBackMarker",this.$onChangeBackMarker),this.session.removeEventListener("changeBreakpoint",this.$onChangeBreakpoint),this.session.removeEventListener("changeAnnotation",this.$onChangeAnnotation),this.session.removeEventListener("changeOverwrite",this.$onCursorChange),this.session.removeEventListener("changeScrollTop",this.$onScrollTopChange),this.session.removeEventListener("changeScrollLeft",this.$onScrollLeftChange);var n=this.session.getSelection();n.removeEventListener("changeCursor",this.$onCursorChange),n.removeEventListener("changeSelection",this.$onSelectionChange)}this.session=e,e?(this.$onDocumentChange=this.onDocumentChange.bind(this),e.addEventListener("change",this.$onDocumentChange),this.renderer.setSession(e),this.$onChangeMode=this.onChangeMode.bind(this),e.addEventListener("changeMode",this.$onChangeMode),this.$onTokenizerUpdate=this.onTokenizerUpdate.bind(this),e.addEventListener("tokenizerUpdate",this.$onTokenizerUpdate),this.$onChangeTabSize=this.renderer.onChangeTabSize.bind(this.renderer),e.addEventListener("changeTabSize",this.$onChangeTabSize),this.$onChangeWrapLimit=this.onChangeWrapLimit.bind(this),e.addEventListener("changeWrapLimit",this.$onChangeWrapLimit),this.$onChangeWrapMode=this.onChangeWrapMode.bind(this),e.addEventListener("changeWrapMode",this.$onChangeWrapMode),this.$onChangeFold=this.onChangeFold.bind(this),e.addEventListener("changeFold",this.$onChangeFold),this.$onChangeFrontMarker=this.onChangeFrontMarker.bind(this),this.session.addEventListener("changeFrontMarker",this.$onChangeFrontMarker),this.$onChangeBackMarker=this.onChangeBackMarker.bind(this),this.session.addEventListener("changeBackMarker",this.$onChangeBackMarker),this.$onChangeBreakpoint=this.onChangeBreakpoint.bind(this),this.session.addEventListener("changeBreakpoint",this.$onChangeBreakpoint),this.$onChangeAnnotation=this.onChangeAnnotation.bind(this),this.session.addEventListener("changeAnnotation",this.$onChangeAnnotation),this.$onCursorChange=this.onCursorChange.bind(this),this.session.addEventListener("changeOverwrite",this.$onCursorChange),this.$onScrollTopChange=this.onScrollTopChange.bind(this),this.session.addEventListener("changeScrollTop",this.$onScrollTopChange),this.$onScrollLeftChange=this.onScrollLeftChange.bind(this),this.session.addEventListener("changeScrollLeft",this.$onScrollLeftChange),this.selection=e.getSelection(),this.selection.addEventListener("changeCursor",this.$onCursorChange),this.$onSelectionChange=this.onSelectionChange.bind(this),this.selection.addEventListener("changeSelection",this.$onSelectionChange),this.onChangeMode(),this.$blockScrolling+=1,this.onCursorChange(),this.$blockScrolling-=1,this.onScrollTopChange(),this.onScrollLeftChange(),this.onSelectionChange(),this.onChangeFrontMarker(),this.onChangeBackMarker(),this.onChangeBreakpoint(),this.onChangeAnnotation(),this.session.getUseWrapMode()&&this.renderer.adjustWrapLimit(),this.renderer.updateFull()):(this.selection=null,this.renderer.setSession(e)),this._signal("changeSession",{session:e,oldSession:t}),this.curOp=null,t&&t._signal("changeEditor",{oldEditor:this}),e&&e._signal("changeEditor",{editor:this})},this.getSession=function(){return this.session},this.setValue=function(e,t){return this.session.doc.setValue(e),t?t==1?this.navigateFileEnd():t==-1&&this.navigateFileStart():this.selectAll(),e},this.getValue=function(){return this.session.getValue()},this.getSelection=function(){return this.selection},this.resize=function(e){this.renderer.onResize(e)},this.setTheme=function(e,t){this.renderer.setTheme(e,t)},this.getTheme=function(){return this.renderer.getTheme()},this.setStyle=function(e){this.renderer.setStyle(e)},this.unsetStyle=function(e){this.renderer.unsetStyle(e)},this.getFontSize=function(){return this.getOption("fontSize")||i.computedStyle(this.container,"fontSize")},this.setFontSize=function(e){this.setOption("fontSize",e)},this.$highlightBrackets=function(){this.session.$bracketHighlight&&(this.session.removeMarker(this.session.$bracketHighlight),this.session.$bracketHighlight=null);if(this.$highlightPending)return;var e=this;this.$highlightPending=!0,setTimeout(function(){e.$highlightPending=!1;var t=e.session;if(!t||!t.bgTokenizer)return;var n=t.findMatchingBracket(e.getCursorPosition());if(n)var r=new p(n.row,n.column,n.row,n.column+1);else if(t.$mode.getMatching)var r=t.$mode.getMatching(e.session);r&&(t.$bracketHighlight=t.addMarker(r,"ace_bracket","text"))},50)},this.$highlightTags=function(){if(this.$highlightTagPending)return;var e=this;this.$highlightTagPending=!0,setTimeout(function(){e.$highlightTagPending=!1;var t=e.session;if(!t||!t.bgTokenizer)return;var n=e.getCursorPosition(),r=new y(e.session,n.row,n.column),i=r.getCurrentToken();if(!i||!/\b(?:tag-open|tag-name)/.test(i.type)){t.removeMarker(t.$tagHighlight),t.$tagHighlight=null;return}if(i.type.indexOf("tag-open")!=-1){i=r.stepForward();if(!i)return}var s=i.value,o=0,u=r.stepBackward();if(u.value=="<"){do u=i,i=r.stepForward(),i&&i.value===s&&i.type.indexOf("tag-name")!==-1&&(u.value==="<"?o++:u.value==="=0)}else{do i=u,u=r.stepBackward(),i&&i.value===s&&i.type.indexOf("tag-name")!==-1&&(u.value==="<"?o++:u.value==="1)&&(t=!1)}if(e.$highlightLineMarker&&!t)e.removeMarker(e.$highlightLineMarker.id),e.$highlightLineMarker=null;else if(!e.$highlightLineMarker&&t){var n=new p(t.row,t.column,t.row,Infinity);n.id=e.addMarker(n,"ace_active-line","screenLine"),e.$highlightLineMarker=n}else t&&(e.$highlightLineMarker.start.row=t.row,e.$highlightLineMarker.end.row=t.row,e.$highlightLineMarker.start.column=t.column,e._signal("changeBackMarker"))},this.onSelectionChange=function(e){var t=this.session;t.$selectionMarker&&t.removeMarker(t.$selectionMarker),t.$selectionMarker=null;if(!this.selection.isEmpty()){var n=this.selection.getRange(),r=this.getSelectionStyle();t.$selectionMarker=t.addMarker(n,"ace_selection",r)}else this.$updateHighlightActiveLine();var i=this.$highlightSelectedWord&&this.$getSelectionHighLightRegexp();this.session.highlight(i),this._signal("changeSelection")},this.$getSelectionHighLightRegexp=function(){var e=this.session,t=this.getSelectionRange();if(t.isEmpty()||t.isMultiLine())return;var n=t.start.column-1,r=t.end.column+1,i=e.getLine(t.start.row),s=i.length,o=i.substring(Math.max(n,0),Math.min(r,s));if(n>=0&&/^[\w\d]/.test(o)||r<=s&&/[\w\d]$/.test(o))return;o=i.substring(t.start.column,t.end.column);if(!/^[\w\d]+$/.test(o))return;var u=this.$search.$assembleRegExp({wholeWord:!0,caseSensitive:!0,needle:o});return u},this.onChangeFrontMarker=function(){this.renderer.updateFrontMarkers()},this.onChangeBackMarker=function(){this.renderer.updateBackMarkers()},this.onChangeBreakpoint=function(){this.renderer.updateBreakpoints()},this.onChangeAnnotation=function(){this.renderer.setAnnotations(this.session.getAnnotations())},this.onChangeMode=function(e){this.renderer.updateText(),this._emit("changeMode",e)},this.onChangeWrapLimit=function(){this.renderer.updateFull()},this.onChangeWrapMode=function(){this.renderer.onResize(!0)},this.onChangeFold=function(){this.$updateHighlightActiveLine(),this.renderer.updateFull()},this.getSelectedText=function(){return this.session.getTextRange(this.getSelectionRange())},this.getCopyText=function(){var e=this.getSelectedText();return this._signal("copy",e),e},this.onCopy=function(){this.commands.exec("copy",this)},this.onCut=function(){this.commands.exec("cut",this)},this.onPaste=function(e){if(this.$readOnly)return;var t={text:e};this._signal("paste",t),e=t.text;if(!this.inMultiSelectMode||this.inVirtualSelectionMode)this.insert(e);else{var n=e.split(/\r\n|\r|\n/),r=this.selection.rangeList.ranges;if(n.length>r.length||n.length<2||!n[1])return this.commands.exec("insertstring",this,e);for(var i=r.length;i--;){var s=r[i];s.isEmpty()||this.session.remove(s),this.session.insert(s.start,n[i])}}this.renderer.scrollCursorIntoView()},this.execCommand=function(e,t){return this.commands.exec(e,this,t)},this.insert=function(e,t){var n=this.session,r=n.getMode(),i=this.getCursorPosition();if(this.getBehavioursEnabled()&&!t){var s=r.transformAction(n.getState(i.row),"insertion",this,n,e);s&&(e!==s.text&&(this.session.mergeUndoDeltas=!1,this.$mergeNextCommand=!1),e=s.text)}e==" "&&(e=this.session.getTabString());if(!this.selection.isEmpty()){var o=this.getSelectionRange();i=this.session.remove(o),this.clearSelection()}else if(this.session.getOverwrite()){var o=new p.fromPoints(i,i);o.end.column+=e.length,this.session.remove(o)}if(e=="\n"||e=="\r\n"){var u=n.getLine(i.row);if(i.column>u.search(/\S|$/)){var a=u.substr(i.column).search(/\S|$/);n.doc.removeInLine(i.row,i.column,i.column+a)}}this.clearSelection();var f=i.column,l=n.getState(i.row),u=n.getLine(i.row),c=r.checkOutdent(l,u,e),h=n.insert(i,e);s&&s.selection&&(s.selection.length==2?this.selection.setSelectionRange(new p(i.row,f+s.selection[0],i.row,f+s.selection[1])):this.selection.setSelectionRange(new p(i.row+s.selection[0],s.selection[1],i.row+s.selection[2],s.selection[3])));if(n.getDocument().isNewLine(e)){var d=r.getNextLineIndent(l,u.slice(0,i.column),n.getTabString());n.insert({row:i.row+1,column:0},d)}c&&r.autoOutdent(l,n,i.row)},this.onTextInput=function(e){this.keyBinding.onTextInput(e)},this.onCommandKey=function(e,t,n){this.keyBinding.onCommandKey(e,t,n)},this.setOverwrite=function(e){this.session.setOverwrite(e)},this.getOverwrite=function(){return this.session.getOverwrite()},this.toggleOverwrite=function(){this.session.toggleOverwrite()},this.setScrollSpeed=function(e){this.setOption("scrollSpeed",e)},this.getScrollSpeed=function(){return this.getOption("scrollSpeed")},this.setDragDelay=function(e){this.setOption("dragDelay",e)},this.getDragDelay=function(){return this.getOption("dragDelay")},this.setSelectionStyle=function(e){this.setOption("selectionStyle",e)},this.getSelectionStyle=function(){return this.getOption("selectionStyle")},this.setHighlightActiveLine=function(e){this.setOption("highlightActiveLine",e)},this.getHighlightActiveLine=function(){return this.getOption("highlightActiveLine")},this.setHighlightGutterLine=function(e){this.setOption("highlightGutterLine",e)},this.getHighlightGutterLine=function(){return this.getOption("highlightGutterLine")},this.setHighlightSelectedWord=function(e){this.setOption("highlightSelectedWord",e)},this.getHighlightSelectedWord=function(){return this.$highlightSelectedWord},this.setAnimatedScroll=function(e){this.renderer.setAnimatedScroll(e)},this.getAnimatedScroll=function(){return this.renderer.getAnimatedScroll()},this.setShowInvisibles=function(e){this.renderer.setShowInvisibles(e)},this.getShowInvisibles=function(){return this.renderer.getShowInvisibles()},this.setDisplayIndentGuides=function(e){this.renderer.setDisplayIndentGuides(e)},this.getDisplayIndentGuides=function(){return this.renderer.getDisplayIndentGuides()},this.setShowPrintMargin=function(e){this.renderer.setShowPrintMargin(e)},this.getShowPrintMargin=function(){return this.renderer.getShowPrintMargin()},this.setPrintMarginColumn=function(e){this.renderer.setPrintMarginColumn(e)},this.getPrintMarginColumn=function(){return this.renderer.getPrintMarginColumn()},this.setReadOnly=function(e){this.setOption("readOnly",e)},this.getReadOnly=function(){return this.getOption("readOnly")},this.setBehavioursEnabled=function(e){this.setOption("behavioursEnabled",e)},this.getBehavioursEnabled=function(){return this.getOption("behavioursEnabled")},this.setWrapBehavioursEnabled=function(e){this.setOption("wrapBehavioursEnabled",e)},this.getWrapBehavioursEnabled=function(){return this.getOption("wrapBehavioursEnabled")},this.setShowFoldWidgets=function(e){this.setOption("showFoldWidgets",e)},this.getShowFoldWidgets=function(){return this.getOption("showFoldWidgets")},this.setFadeFoldWidgets=function(e){this.setOption("fadeFoldWidgets",e)},this.getFadeFoldWidgets=function(){return this.getOption("fadeFoldWidgets")},this.remove=function(e){this.selection.isEmpty()&&(e=="left"?this.selection.selectLeft():this.selection.selectRight());var t=this.getSelectionRange();if(this.getBehavioursEnabled()){var n=this.session,r=n.getState(t.start.row),i=n.getMode().transformAction(r,"deletion",this,n,t);if(t.end.column===0){var s=n.getTextRange(t);if(s[s.length-1]=="\n"){var o=n.getLine(t.end.row);/^\s+$/.test(o)&&(t.end.column=o.length)}}i&&(t=i)}this.session.remove(t),this.clearSelection()},this.removeWordRight=function(){this.selection.isEmpty()&&this.selection.selectWordRight(),this.session.remove(this.getSelectionRange()),this.clearSelection()},this.removeWordLeft=function(){this.selection.isEmpty()&&this.selection.selectWordLeft(),this.session.remove(this.getSelectionRange()),this.clearSelection()},this.removeToLineStart=function(){this.selection.isEmpty()&&this.selection.selectLineStart(),this.session.remove(this.getSelectionRange()),this.clearSelection()},this.removeToLineEnd=function(){this.selection.isEmpty()&&this.selection.selectLineEnd();var e=this.getSelectionRange();e.start.column==e.end.column&&e.start.row==e.end.row&&(e.end.column=0,e.end.row++),this.session.remove(e),this.clearSelection()},this.splitLine=function(){this.selection.isEmpty()||(this.session.remove(this.getSelectionRange()),this.clearSelection());var e=this.getCursorPosition();this.insert("\n"),this.moveCursorToPosition(e)},this.transposeLetters=function(){if(!this.selection.isEmpty())return;var e=this.getCursorPosition(),t=e.column;if(t===0)return;var n=this.session.getLine(e.row),r,i;tt.toLowerCase()?1:0});var r=new p(0,0,0,0);for(var i=e.first;i<=e.last;i++){var s=t.getLine(i);r.start.row=i,r.end.row=i,r.end.column=s.length,t.replace(r,n[i-e.first])}},this.toggleCommentLines=function(){var e=this.session.getState(this.getCursorPosition().row),t=this.$getSelectedRows();this.session.getMode().toggleCommentLines(e,this.session,t.first,t.last)},this.toggleBlockComment=function(){var e=this.getCursorPosition(),t=this.session.getState(e.row),n=this.getSelectionRange();this.session.getMode().toggleBlockComment(t,this.session,n,e)},this.getNumberAt=function(e,t){var n=/[\-]?[0-9]+(?:\.[0-9]+)?/g;n.lastIndex=0;var r=this.session.getLine(e);while(n.lastIndex=t){var s={value:i[0],start:i.index,end:i.index+i[0].length};return s}}return null},this.modifyNumber=function(e){var t=this.selection.getCursor().row,n=this.selection.getCursor().column,r=new p(t,n-1,t,n),i=this.session.getTextRange(r);if(!isNaN(parseFloat(i))&&isFinite(i)){var s=this.getNumberAt(t,n);if(s){var o=s.value.indexOf(".")>=0?s.start+s.value.indexOf(".")+1:s.end,u=s.start+s.value.length-o,a=parseFloat(s.value);a*=Math.pow(10,u),o!==s.end&&np+1)break;p=d.last}l--,u=this.session.$moveLines(h,p,t?0:e),t&&e==-1&&(c=l+1);while(c<=l)o[c].moveBy(u,0),c++;t||(u=0),a+=u}i.fromOrientedRange(i.ranges[0]),i.rangeList.attach(this.session),this.inVirtualSelectionMode=!1}},this.$getSelectedRows=function(e){return e=(e||this.getSelectionRange()).collapseRows(),{first:this.session.getRowFoldStart(e.start.row),last:this.session.getRowFoldEnd(e.end.row)}},this.onCompositionStart=function(e){this.renderer.showComposition(this.getCursorPosition())},this.onCompositionUpdate=function(e){this.renderer.setCompositionText(e)},this.onCompositionEnd=function(){this.renderer.hideComposition()},this.getFirstVisibleRow=function(){return this.renderer.getFirstVisibleRow()},this.getLastVisibleRow=function(){return this.renderer.getLastVisibleRow()},this.isRowVisible=function(e){return e>=this.getFirstVisibleRow()&&e<=this.getLastVisibleRow()},this.isRowFullyVisible=function(e){return e>=this.renderer.getFirstFullyVisibleRow()&&e<=this.renderer.getLastFullyVisibleRow()},this.$getVisibleRowCount=function(){return this.renderer.getScrollBottomRow()-this.renderer.getScrollTopRow()+1},this.$moveByPage=function(e,t){var n=this.renderer,r=this.renderer.layerConfig,i=e*Math.floor(r.height/r.lineHeight);this.$blockScrolling++,t===!0?this.selection.$moveSelection(function(){this.moveCursorBy(i,0)}):t===!1&&(this.selection.moveCursorBy(i,0),this.selection.clearSelection()),this.$blockScrolling--;var s=n.scrollTop;n.scrollBy(0,i*r.lineHeight),t!=null&&n.scrollCursorIntoView(null,.5),n.animateScrolling(s)},this.selectPageDown=function(){this.$moveByPage(1,!0)},this.selectPageUp=function(){this.$moveByPage(-1,!0)},this.gotoPageDown=function(){this.$moveByPage(1,!1)},this.gotoPageUp=function(){this.$moveByPage(-1,!1)},this.scrollPageDown=function(){this.$moveByPage(1)},this.scrollPageUp=function(){this.$moveByPage(-1)},this.scrollToRow=function(e){this.renderer.scrollToRow(e)},this.scrollToLine=function(e,t,n,r){this.renderer.scrollToLine(e,t,n,r)},this.centerSelection=function(){var e=this.getSelectionRange(),t={row:Math.floor(e.start.row+(e.end.row-e.start.row)/2),column:Math.floor(e.start.column+(e.end.column-e.start.column)/2)};this.renderer.alignCursor(t,.5)},this.getCursorPosition=function(){return this.selection.getCursor()},this.getCursorPositionScreen=function(){return this.session.documentToScreenPosition(this.getCursorPosition())},this.getSelectionRange=function(){return this.selection.getRange()},this.selectAll=function(){this.$blockScrolling+=1,this.selection.selectAll(),this.$blockScrolling-=1},this.clearSelection=function(){this.selection.clearSelection()},this.moveCursorTo=function(e,t){this.selection.moveCursorTo(e,t)},this.moveCursorToPosition=function(e){this.selection.moveCursorToPosition(e)},this.jumpToMatching=function(e,t){var n=this.getCursorPosition(),r=new y(this.session,n.row,n.column),i=r.getCurrentToken(),s=i||r.stepForward();if(!s)return;var o,u=!1,a={},f=n.column-s.start,l,c={")":"(","(":"(","]":"[","[":"[","{":"{","}":"{"};do{if(s.value.match(/[{}()\[\]]/g))for(;f=0;--s)this.$tryReplace(n[s],e)&&r++;return this.selection.setSelectionRange(i),this.$blockScrolling-=1,r},this.$tryReplace=function(e,t){var n=this.session.getTextRange(e);return t=this.$search.replace(n,t),t!==null?(e.end=this.session.replace(e,t),e):null},this.getLastSearchOptions=function(){return this.$search.getOptions()},this.find=function(e,t,n){t||(t={}),typeof e=="string"||e instanceof RegExp?t.needle=e:typeof e=="object"&&r.mixin(t,e);var i=this.selection.getRange();t.needle==null&&(e=this.session.getTextRange(i)||this.$search.$options.needle,e||(i=this.session.getWordRange(i.start.row,i.start.column),e=this.session.getTextRange(i)),this.$search.set({needle:e})),this.$search.set(t),t.start||this.$search.set({start:i});var s=this.$search.find(this.session);if(t.preventScroll)return s;if(s)return this.revealRange(s,n),s;t.backwards?i.start=i.end:i.end=i.start,this.selection.setRange(i)},this.findNext=function(e,t){this.find({skipCurrent:!0,backwards:!1},e,t)},this.findPrevious=function(e,t){this.find(e,{skipCurrent:!0,backwards:!0},t)},this.revealRange=function(e,t){this.$blockScrolling+=1,this.session.unfold(e),this.selection.setSelectionRange(e),this.$blockScrolling-=1;var n=this.renderer.scrollTop;this.renderer.scrollSelectionIntoView(e.start,e.end,.5),t!==!1&&this.renderer.animateScrolling(n)},this.undo=function(){this.$blockScrolling++,this.session.getUndoManager().undo(),this.$blockScrolling--,this.renderer.scrollCursorIntoView(null,.5)},this.redo=function(){this.$blockScrolling++,this.session.getUndoManager().redo(),this.$blockScrolling--,this.renderer.scrollCursorIntoView(null,.5)},this.destroy=function(){this.renderer.destroy(),this._signal("destroy",this),this.session&&this.session.destroy()},this.setAutoScrollEditorIntoView=function(e){if(!e)return;var t,n=this,r=!1;this.$scrollAnchor||(this.$scrollAnchor=document.createElement("div"));var i=this.$scrollAnchor;i.style.cssText="position:absolute",this.container.insertBefore(i,this.container.firstChild);var s=this.on("changeSelection",function(){r=!0}),o=this.renderer.on("beforeRender",function(){r&&(t=n.renderer.container.getBoundingClientRect())}),u=this.renderer.on("afterRender",function(){if(r&&t&&(n.isFocused()||n.searchBox&&n.searchBox.isFocused())){var e=n.renderer,s=e.$cursorLayer.$pixelPos,o=e.layerConfig,u=s.top-o.offset;s.top>=0&&u+t.top<0?r=!0:s.topwindow.innerHeight?r=!1:r=null,r!=null&&(i.style.top=u+"px",i.style.left=s.left+"px",i.style.height=o.lineHeight+"px",i.scrollIntoView(r)),r=t=null}});this.setAutoScrollEditorIntoView=function(e){if(e)return;delete this.setAutoScrollEditorIntoView,this.removeEventListener("changeSelection",s),this.renderer.removeEventListener("afterRender",u),this.renderer.removeEventListener("beforeRender",o)}},this.$resetCursorStyle=function(){var e=this.$cursorStyle||"ace",t=this.renderer.$cursorLayer;if(!t)return;t.setSmoothBlinking(/smooth/.test(e)),t.isBlinking=!this.$readOnly&&e!="wide",i.setCssClass(t.element,"ace_slim-cursors",/slim/.test(e))}}).call(b.prototype),g.defineOptions(b.prototype,"editor",{selectionStyle:{set:function(e){this.onSelectionChange(),this._signal("changeSelectionStyle",{data:e})},initialValue:"line"},highlightActiveLine:{set:function(){this.$updateHighlightActiveLine()},initialValue:!0},highlightSelectedWord:{set:function(e){this.$onSelectionChange()},initialValue:!0},readOnly:{set:function(e){this.$resetCursorStyle()},initialValue:!1},cursorStyle:{set:function(e){this.$resetCursorStyle()},values:["ace","slim","smooth","wide"],initialValue:"ace"},mergeUndoDeltas:{values:[!1,!0,"always"],initialValue:!0},behavioursEnabled:{initialValue:!0},wrapBehavioursEnabled:{initialValue:!0},autoScrollEditorIntoView:{set:function(e){this.setAutoScrollEditorIntoView(e)}},hScrollBarAlwaysVisible:"renderer",vScrollBarAlwaysVisible:"renderer",highlightGutterLine:"renderer",animatedScroll:"renderer",showInvisibles:"renderer",showPrintMargin:"renderer",printMarginColumn:"renderer",printMargin:"renderer",fadeFoldWidgets:"renderer",showFoldWidgets:"renderer",showLineNumbers:"renderer",showGutter:"renderer",displayIndentGuides:"renderer",fontSize:"renderer",fontFamily:"renderer",maxLines:"renderer",minLines:"renderer",scrollPastEnd:"renderer",fixedWidthGutter:"renderer",theme:"renderer",scrollSpeed:"$mouseHandler",dragDelay:"$mouseHandler",dragEnabled:"$mouseHandler",focusTimout:"$mouseHandler",tooltipFollowsMouse:"$mouseHandler",firstLineNumber:"session",overwrite:"session",newLineMode:"session",useWorker:"session",useSoftTabs:"session",tabSize:"session",wrap:"session",indentedSoftWrap:"session",foldStyle:"session",mode:"session"}),t.Editor=b}),define("ace/undomanager",["require","exports","module"],function(e,t,n){"use strict";var r=function(){this.reset()};(function(){this.execute=function(e){var t=e.args[0];this.$doc=e.args[1],e.merge&&this.hasUndo()&&(this.dirtyCounter--,t=this.$undoStack.pop().concat(t)),this.$undoStack.push(t),this.$redoStack=[],this.dirtyCounter<0&&(this.dirtyCounter=NaN),this.dirtyCounter++},this.undo=function(e){var t=this.$undoStack.pop(),n=null;return t&&(n=this.$doc.undoChanges(t,e),this.$redoStack.push(t),this.dirtyCounter--),n},this.redo=function(e){var t=this.$redoStack.pop(),n=null;return t&&(n=this.$doc.redoChanges(t,e),this.$undoStack.push(t),this.dirtyCounter++),n},this.reset=function(){this.$undoStack=[],this.$redoStack=[],this.dirtyCounter=0},this.hasUndo=function(){return this.$undoStack.length>0},this.hasRedo=function(){return this.$redoStack.length>0},this.markClean=function(){this.dirtyCounter=0},this.isClean=function(){return this.dirtyCounter===0}}).call(r.prototype),t.UndoManager=r}),define("ace/layer/gutter",["require","exports","module","ace/lib/dom","ace/lib/oop","ace/lib/lang","ace/lib/event_emitter"],function(e,t,n){"use strict";var r=e("../lib/dom"),i=e("../lib/oop"),s=e("../lib/lang"),o=e("../lib/event_emitter").EventEmitter,u=function(e){this.element=r.createElement("div"),this.element.className="ace_layer ace_gutter-layer",e.appendChild(this.element),this.setShowFoldWidgets(this.$showFoldWidgets),this.gutterWidth=0,this.$annotations=[],this.$updateAnnotations=this.$updateAnnotations.bind(this),this.$cells=[]};(function(){i.implement(this,o),this.setSession=function(e){this.session&&this.session.removeEventListener("change",this.$updateAnnotations),this.session=e,e&&e.on("change",this.$updateAnnotations)},this.addGutterDecoration=function(e,t){window.console&&console.warn&&console.warn("deprecated use session.addGutterDecoration"),this.session.addGutterDecoration(e,t)},this.removeGutterDecoration=function(e,t){window.console&&console.warn&&console.warn("deprecated use session.removeGutterDecoration"),this.session.removeGutterDecoration(e,t)},this.setAnnotations=function(e){this.$annotations=[];for(var t=0;to&&(v=s.end.row+1,s=t.getNextFoldLine(v,s),o=s?s.start.row:Infinity);if(v>i){while(this.$cells.length>d+1)p=this.$cells.pop(),this.element.removeChild(p.element);break}p=this.$cells[++d],p||(p={element:null,textNode:null,foldWidget:null},p.element=r.createElement("div"),p.textNode=document.createTextNode(""),p.element.appendChild(p.textNode),this.element.appendChild(p.element),this.$cells[d]=p);var m="ace_gutter-cell ";a[v]&&(m+=a[v]),f[v]&&(m+=f[v]),this.$annotations[v]&&(m+=this.$annotations[v].className),p.element.className!=m&&(p.element.className=m);var g=t.getRowLength(v)*e.lineHeight+"px";g!=p.element.style.height&&(p.element.style.height=g);if(u){var y=u[v];y==null&&(y=u[v]=t.getFoldWidget(v))}if(y){p.foldWidget||(p.foldWidget=r.createElement("span"),p.element.appendChild(p.foldWidget));var m="ace_fold-widget ace_"+y;y=="start"&&v==o&&vn.right-t.right)return"foldWidgets"}}).call(u.prototype),t.Gutter=u}),define("ace/layer/marker",["require","exports","module","ace/range","ace/lib/dom"],function(e,t,n){"use strict";var r=e("../range").Range,i=e("../lib/dom"),s=function(e){this.element=i.createElement("div"),this.element.className="ace_layer ace_marker-layer",e.appendChild(this.element)};(function(){this.$padding=0,this.setPadding=function(e){this.$padding=e},this.setSession=function(e){this.session=e},this.setMarkers=function(e){this.markers=e},this.update=function(e){var e=e||this.config;if(!e)return;this.config=e;var t=[];for(var n in this.markers){var r=this.markers[n];if(!r.range){r.update(t,this,this.session,e);continue}var i=r.range.clipRows(e.firstRow,e.lastRow);if(i.isEmpty())continue;i=i.toScreenRange(this.session);if(r.renderer){var s=this.$getTop(i.start.row,e),o=this.$padding+i.start.column*e.characterWidth;r.renderer(t,i,o,s,e)}else r.type=="fullLine"?this.drawFullLineMarker(t,i,r.clazz,e):r.type=="screenLine"?this.drawScreenLineMarker(t,i,r.clazz,e):i.isMultiLine()?r.type=="text"?this.drawTextMarker(t,i,r.clazz,e):this.drawMultiLineMarker(t,i,r.clazz,e):this.drawSingleLineMarker(t,i,r.clazz+" ace_start",e)}this.element.innerHTML=t.join("")},this.$getTop=function(e,t){return(e-t.firstRowScreen)*t.lineHeight},this.drawTextMarker=function(e,t,n,i,s){var o=t.start.row,u=this.session,a=new r(o,t.start.column,o,u.getScreenLastRowColumn(o));this.drawSingleLineMarker(e,a,n+" ace_start",i,1,s),o=t.end.row,a=new r(o,u.getRowWrapIndent(o),o,t.end.column),this.drawSingleLineMarker(e,a,n,i,0,s);for(o=t.start.row+1;o"),u=this.$getTop(t.end.row,r);var f=t.end.column*r.characterWidth;e.push("
"),o=(t.end.row-t.start.row-1)*r.lineHeight;if(o<=0)return;u=this.$getTop(t.start.row+1,r),e.push("
")},this.drawSingleLineMarker=function(e,t,n,r,i,s){var o=r.lineHeight,u=(t.end.column+(i||0)-t.start.column)*r.characterWidth,a=this.$getTop(t.start.row,r),f=this.$padding+t.start.column*r.characterWidth;e.push("
")},this.drawFullLineMarker=function(e,t,n,r,i){var s=this.$getTop(t.start.row,r),o=r.lineHeight;t.start.row!=t.end.row&&(o+=this.$getTop(t.end.row,r)-s),e.push("
")},this.drawScreenLineMarker=function(e,t,n,r,i){var s=this.$getTop(t.start.row,r),o=r.lineHeight;e.push("
")}}).call(s.prototype),t.Marker=s}),define("ace/layer/text",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/lib/lang","ace/lib/useragent","ace/lib/event_emitter"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/dom"),s=e("../lib/lang"),o=e("../lib/useragent"),u=e("../lib/event_emitter").EventEmitter,a=function(e){this.element=i.createElement("div"),this.element.className="ace_layer ace_text-layer",e.appendChild(this.element),this.$updateEolChar=this.$updateEolChar.bind(this)};(function(){r.implement(this,u),this.EOF_CHAR="\u00b6",this.EOL_CHAR_LF="\u00ac",this.EOL_CHAR_CRLF="\u00a4",this.EOL_CHAR=this.EOL_CHAR_LF,this.TAB_CHAR="\u2192",this.SPACE_CHAR="\u00b7",this.$padding=0,this.$updateEolChar=function(){var e=this.session.doc.getNewLineCharacter()=="\n"?this.EOL_CHAR_LF:this.EOL_CHAR_CRLF;if(this.EOL_CHAR!=e)return this.EOL_CHAR=e,!0},this.setPadding=function(e){this.$padding=e,this.element.style.padding="0 "+e+"px"},this.getLineHeight=function(){return this.$fontMetrics.$characterSize.height||0},this.getCharacterWidth=function(){return this.$fontMetrics.$characterSize.width||0},this.$setFontMetrics=function(e){this.$fontMetrics=e,this.$fontMetrics.on("changeCharacterSize",function(e){this._signal("changeCharacterSize",e)}.bind(this)),this.$pollSizeChanges()},this.checkForSizeChanges=function(){this.$fontMetrics.checkForSizeChanges()},this.$pollSizeChanges=function(){return this.$pollSizeChangesTimer=this.$fontMetrics.$pollSizeChanges()},this.setSession=function(e){this.session=e,e&&this.$computeTabString()},this.showInvisibles=!1,this.setShowInvisibles=function(e){return this.showInvisibles==e?!1:(this.showInvisibles=e,this.$computeTabString(),!0)},this.displayIndentGuides=!0,this.setDisplayIndentGuides=function(e){return this.displayIndentGuides==e?!1:(this.displayIndentGuides=e,this.$computeTabString(),!0)},this.$tabStrings=[],this.onChangeTabSize=this.$computeTabString=function(){var e=this.session.getTabSize();this.tabSize=e;var t=this.$tabStrings=[0];for(var n=1;n"+this.TAB_CHAR+s.stringRepeat(" ",n-1)+""):t.push(s.stringRepeat(" ",n));if(this.displayIndentGuides){this.$indentGuideRe=/\s\S| \t|\t |\s$/;var r="ace_indent-guide",i="",o="";if(this.showInvisibles){r+=" ace_invisible",i=" ace_invisible_space",o=" ace_invisible_tab";var u=s.stringRepeat(this.SPACE_CHAR,this.tabSize),a=this.TAB_CHAR+s.stringRepeat(" ",this.tabSize-1)}else var u=s.stringRepeat(" ",this.tabSize),a=u;this.$tabStrings[" "]=""+u+"",this.$tabStrings[" "]=""+a+""}},this.updateLines=function(e,t,n){(this.config.lastRow!=e.lastRow||this.config.firstRow!=e.firstRow)&&this.scrollLines(e),this.config=e;var r=Math.max(t,e.firstRow),i=Math.min(n,e.lastRow),s=this.element.childNodes,o=0;for(var u=e.firstRow;uf&&(u=a.end.row+1,a=this.session.getNextFoldLine(u,a),f=a?a.start.row:Infinity);if(u>i)break;var l=s[o++];if(l){var c=[];this.$renderLine(c,u,!this.$useLineGroups(),u==f?a:!1),l.style.height=e.lineHeight*this.session.getRowLength(u)+"px",l.innerHTML=c.join("")}u++}},this.scrollLines=function(e){var t=this.config;this.config=e;if(!t||t.lastRow0;r--)n.removeChild(n.firstChild);if(t.lastRow>e.lastRow)for(var r=this.session.getFoldedRowCount(e.lastRow+1,t.lastRow);r>0;r--)n.removeChild(n.lastChild);if(e.firstRowt.lastRow){var i=this.$renderLinesFragment(e,t.lastRow+1,e.lastRow);n.appendChild(i)}},this.$renderLinesFragment=function(e,t,n){var r=this.element.ownerDocument.createDocumentFragment(),s=t,o=this.session.getNextFoldLine(s),u=o?o.start.row:Infinity;for(;;){s>u&&(s=o.end.row+1,o=this.session.getNextFoldLine(s,o),u=o?o.start.row:Infinity);if(s>n)break;var a=i.createElement("div"),f=[];this.$renderLine(f,s,!1,s==u?o:!1),a.innerHTML=f.join("");if(this.$useLineGroups())a.className="ace_line_group",r.appendChild(a),a.style.height=e.lineHeight*this.session.getRowLength(s)+"px";else while(a.firstChild)r.appendChild(a.firstChild);s++}return r},this.update=function(e){this.config=e;var t=[],n=e.firstRow,r=e.lastRow,i=n,s=this.session.getNextFoldLine(i),o=s?s.start.row:Infinity;for(;;){i>o&&(i=s.end.row+1,s=this.session.getNextFoldLine(i,s),o=s?s.start.row:Infinity);if(i>r)break;this.$useLineGroups()&&t.push("
"),this.$renderLine(t,i,!1,i==o?s:!1),this.$useLineGroups()&&t.push("
"),i++}this.element.innerHTML=t.join("")},this.$textToken={text:!0,rparen:!0,lparen:!0},this.$renderToken=function(e,t,n,r){var i=this,o=/\t|&|<|( +)|([\x00-\x1f\x80-\xa0\xad\u1680\u180E\u2000-\u200f\u2028\u2029\u202F\u205F\u3000\uFEFF])|[\u1100-\u115F\u11A3-\u11A7\u11FA-\u11FF\u2329-\u232A\u2E80-\u2E99\u2E9B-\u2EF3\u2F00-\u2FD5\u2FF0-\u2FFB\u3000-\u303E\u3041-\u3096\u3099-\u30FF\u3105-\u312D\u3131-\u318E\u3190-\u31BA\u31C0-\u31E3\u31F0-\u321E\u3220-\u3247\u3250-\u32FE\u3300-\u4DBF\u4E00-\uA48C\uA490-\uA4C6\uA960-\uA97C\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFAFF\uFE10-\uFE19\uFE30-\uFE52\uFE54-\uFE66\uFE68-\uFE6B\uFF01-\uFF60\uFFE0-\uFFE6]/g,u=function(e,n,r,o,u){if(n)return i.showInvisibles?""+s.stringRepeat(i.SPACE_CHAR,e.length)+"":e;if(e=="&")return"&";if(e=="<")return"<";if(e==" "){var a=i.session.getScreenTabSize(t+o);return t+=a-1,i.$tabStrings[a]}if(e=="\u3000"){var f=i.showInvisibles?"ace_cjk ace_invisible ace_invisible_space":"ace_cjk",l=i.showInvisibles?i.SPACE_CHAR:"";return t+=1,""+l+""}return r?""+i.SPACE_CHAR+"":(t+=1,""+e+"")},a=r.replace(o,u);if(!this.$textToken[n.type]){var f="ace_"+n.type.replace(/\./g," ace_"),l="";n.type=="fold"&&(l=" style='width:"+n.value.length*this.config.characterWidth+"px;' "),e.push("",a,"")}else e.push(a);return t+r.length},this.renderIndentGuide=function(e,t,n){var r=t.search(this.$indentGuideRe);return r<=0||r>=n?t:t[0]==" "?(r-=r%this.tabSize,e.push(s.stringRepeat(this.$tabStrings[" "],r/this.tabSize)),t.substr(r)):t[0]==" "?(e.push(s.stringRepeat(this.$tabStrings[" "],r)),t.substr(r)):t},this.$renderWrappedLine=function(e,t,n,r){var i=0,o=0,u=n[0],a=0;for(var f=0;f=u)a=this.$renderToken(e,a,l,c.substring(0,u-i)),c=c.substring(u-i),i=u,r||e.push("","
"),e.push(s.stringRepeat("\u00a0",n.indent)),o++,a=0,u=n[o]||Number.MAX_VALUE;c.length!=0&&(i+=c.length,a=this.$renderToken(e,a,l,c))}}},this.$renderSimpleLine=function(e,t){var n=0,r=t[0],i=r.value;this.displayIndentGuides&&(i=this.renderIndentGuide(e,i)),i&&(n=this.$renderToken(e,n,r,i));for(var s=1;s");if(i.length){var s=this.session.getRowSplitData(t);s&&s.length?this.$renderWrappedLine(e,i,s,n):this.$renderSimpleLine(e,i)}this.showInvisibles&&(r&&(t=r.end.row),e.push("",t==this.session.getLength()-1?this.EOF_CHAR:this.EOL_CHAR,"")),n||e.push("
")},this.$getFoldLineTokens=function(e,t){function i(e,t,n){var i=0,s=0;while(s+e[i].value.lengthn-t&&(o=o.substring(0,n-t)),r.push({type:e[i].type,value:o}),s=t+o.length,i+=1}while(sn?r.push({type:e[i].type,value:o.substring(0,n-s)}):r.push(e[i]),s+=o.length,i+=1}}var n=this.session,r=[],s=n.getTokens(e);return t.walk(function(e,t,o,u,a){e!=null?r.push({type:"fold",value:e}):(a&&(s=n.getTokens(t)),s.length&&i(s,u,o))},t.end.row,this.session.getLine(t.end.row).length),r},this.$useLineGroups=function(){return this.session.getUseWrapMode()},this.destroy=function(){clearInterval(this.$pollSizeChangesTimer),this.$measureNode&&this.$measureNode.parentNode.removeChild(this.$measureNode),delete this.$measureNode}}).call(a.prototype),t.Text=a}),define("ace/layer/cursor",["require","exports","module","ace/lib/dom"],function(e,t,n){"use strict";var r=e("../lib/dom"),i,s=function(e){this.element=r.createElement("div"),this.element.className="ace_layer ace_cursor-layer",e.appendChild(this.element),i===undefined&&(i="opacity"in this.element),this.isVisible=!1,this.isBlinking=!0,this.blinkInterval=1e3,this.smoothBlinking=!1,this.cursors=[],this.cursor=this.addCursor(),r.addCssClass(this.element,"ace_hidden-cursors"),this.$updateCursors=this.$updateVisibility.bind(this)};(function(){this.$updateVisibility=function(e){var t=this.cursors;for(var n=t.length;n--;)t[n].style.visibility=e?"":"hidden"},this.$updateOpacity=function(e){var t=this.cursors;for(var n=t.length;n--;)t[n].style.opacity=e?"":"0"},this.$padding=0,this.setPadding=function(e){this.$padding=e},this.setSession=function(e){this.session=e},this.setBlinking=function(e){e!=this.isBlinking&&(this.isBlinking=e,this.restartTimer())},this.setBlinkInterval=function(e){e!=this.blinkInterval&&(this.blinkInterval=e,this.restartTimer())},this.setSmoothBlinking=function(e){e!=this.smoothBlinking&&!i&&(this.smoothBlinking=e,r.setCssClass(this.element,"ace_smooth-blinking",e),this.$updateCursors(!0),this.$updateCursors=(e?this.$updateOpacity:this.$updateVisibility).bind(this),this.restartTimer())},this.addCursor=function(){var e=r.createElement("div");return e.className="ace_cursor",this.element.appendChild(e),this.cursors.push(e),e},this.removeCursor=function(){if(this.cursors.length>1){var e=this.cursors.pop();return e.parentNode.removeChild(e),e}},this.hideCursor=function(){this.isVisible=!1,r.addCssClass(this.element,"ace_hidden-cursors"),this.restartTimer()},this.showCursor=function(){this.isVisible=!0,r.removeCssClass(this.element,"ace_hidden-cursors"),this.restartTimer()},this.restartTimer=function(){var e=this.$updateCursors;clearInterval(this.intervalId),clearTimeout(this.timeoutId),this.smoothBlinking&&r.removeCssClass(this.element,"ace_smooth-blinking"),e(!0);if(!this.isBlinking||!this.blinkInterval||!this.isVisible)return;this.smoothBlinking&&setTimeout(function(){r.addCssClass(this.element,"ace_smooth-blinking")}.bind(this));var t=function(){this.timeoutId=setTimeout(function(){e(!1)},.6*this.blinkInterval)}.bind(this);this.intervalId=setInterval(function(){e(!0),t()},this.blinkInterval),t()},this.getPixelPosition=function(e,t){if(!this.config||!this.session)return{left:0,top:0};e||(e=this.session.selection.getCursor());var n=this.session.documentToScreenPosition(e),r=this.$padding+n.column*this.config.characterWidth,i=(n.row-(t?this.config.firstRowScreen:0))*this.config.lineHeight;return{left:r,top:i}},this.update=function(e){this.config=e;var t=this.session.$selectionMarkers,n=0,r=0;if(t===undefined||t.length===0)t=[{cursor:null}];for(var n=0,i=t.length;ne.height+e.offset||s.top<0)&&n>1)continue;var o=(this.cursors[r++]||this.addCursor()).style;this.drawCursor?this.drawCursor(o,s,e,t[n],this.session):(o.left=s.left+"px",o.top=s.top+"px",o.width=e.characterWidth+"px",o.height=e.lineHeight+"px")}while(this.cursors.length>r)this.removeCursor();var u=this.session.getOverwrite();this.$setOverwrite(u),this.$pixelPos=s,this.restartTimer()},this.drawCursor=null,this.$setOverwrite=function(e){e!=this.overwrite&&(this.overwrite=e,e?r.addCssClass(this.element,"ace_overwrite-cursors"):r.removeCssClass(this.element,"ace_overwrite-cursors"))},this.destroy=function(){clearInterval(this.intervalId),clearTimeout(this.timeoutId)}}).call(s.prototype),t.Cursor=s}),define("ace/scrollbar",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/lib/event","ace/lib/event_emitter"],function(e,t,n){"use strict";var r=e("./lib/oop"),i=e("./lib/dom"),s=e("./lib/event"),o=e("./lib/event_emitter").EventEmitter,u=function(e){this.element=i.createElement("div"),this.element.className="ace_scrollbar ace_scrollbar"+this.classSuffix,this.inner=i.createElement("div"),this.inner.className="ace_scrollbar-inner",this.element.appendChild(this.inner),e.appendChild(this.element),this.setVisible(!1),this.skipEvent=!1,s.addListener(this.element,"scroll",this.onScroll.bind(this)),s.addListener(this.element,"mousedown",s.preventDefault)};(function(){r.implement(this,o),this.setVisible=function(e){this.element.style.display=e?"":"none",this.isVisible=e}}).call(u.prototype);var a=function(e,t){u.call(this,e),this.scrollTop=0,t.$scrollbarWidth=this.width=i.scrollbarWidth(e.ownerDocument),this.inner.style.width=this.element.style.width=(this.width||15)+5+"px"};r.inherits(a,u),function(){this.classSuffix="-v",this.onScroll=function(){this.skipEvent||(this.scrollTop=this.element.scrollTop,this._emit("scroll",{data:this.scrollTop})),this.skipEvent=!1},this.getWidth=function(){return this.isVisible?this.width:0},this.setHeight=function(e){this.element.style.height=e+"px"},this.setInnerHeight=function(e){this.inner.style.height=e+"px"},this.setScrollHeight=function(e){this.inner.style.height=e+"px"},this.setScrollTop=function(e){this.scrollTop!=e&&(this.skipEvent=!0,this.scrollTop=this.element.scrollTop=e)}}.call(a.prototype);var f=function(e,t){u.call(this,e),this.scrollLeft=0,this.height=t.$scrollbarWidth,this.inner.style.height=this.element.style.height=(this.height||15)+5+"px"};r.inherits(f,u),function(){this.classSuffix="-h",this.onScroll=function(){this.skipEvent||(this.scrollLeft=this.element.scrollLeft,this._emit("scroll",{data:this.scrollLeft})),this.skipEvent=!1},this.getHeight=function(){return this.isVisible?this.height:0},this.setWidth=function(e){this.element.style.width=e+"px"},this.setInnerWidth=function(e){this.inner.style.width=e+"px"},this.setScrollWidth=function(e){this.inner.style.width=e+"px"},this.setScrollLeft=function(e){this.scrollLeft!=e&&(this.skipEvent=!0,this.scrollLeft=this.element.scrollLeft=e)}}.call(f.prototype),t.ScrollBar=a,t.ScrollBarV=a,t.ScrollBarH=f,t.VScrollBar=a,t.HScrollBar=f}),define("ace/renderloop",["require","exports","module","ace/lib/event"],function(e,t,n){"use strict";var r=e("./lib/event"),i=function(e,t){this.onRender=e,this.pending=!1,this.changes=0,this.window=t||window};(function(){this.schedule=function(e){this.changes=this.changes|e;if(!this.pending&&this.changes){this.pending=!0;var t=this;r.nextFrame(function(){t.pending=!1;var e;while(e=t.changes)t.changes=0,t.onRender(e)},this.window)}}}).call(i.prototype),t.RenderLoop=i}),define("ace/layer/font_metrics",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/lib/lang","ace/lib/useragent","ace/lib/event_emitter"],function(e,t,n){var r=e("../lib/oop"),i=e("../lib/dom"),s=e("../lib/lang"),o=e("../lib/useragent"),u=e("../lib/event_emitter").EventEmitter,a=0,f=t.FontMetrics=function(e,t){this.el=i.createElement("div"),this.$setMeasureNodeStyles(this.el.style,!0),this.$main=i.createElement("div"),this.$setMeasureNodeStyles(this.$main.style),this.$measureNode=i.createElement("div"),this.$setMeasureNodeStyles(this.$measureNode.style),this.el.appendChild(this.$main),this.el.appendChild(this.$measureNode),e.appendChild(this.el),a||this.$testFractionalRect(),this.$measureNode.innerHTML=s.stringRepeat("X",a),this.$characterSize={width:0,height:0},this.checkForSizeChanges()};(function(){r.implement(this,u),this.$characterSize={width:0,height:0},this.$testFractionalRect=function(){var e=i.createElement("div");this.$setMeasureNodeStyles(e.style),e.style.width="0.2px",document.documentElement.appendChild(e);var t=e.getBoundingClientRect().width;t>0&&t<1?a=50:a=100,e.parentNode.removeChild(e)},this.$setMeasureNodeStyles=function(e,t){e.width=e.height="auto",e.left=e.top="0px",e.visibility="hidden",e.position="absolute",e.whiteSpace="pre",o.isIE<8?e["font-family"]="inherit":e.font="inherit",e.overflow=t?"hidden":"visible"},this.checkForSizeChanges=function(){var e=this.$measureSizes();if(e&&(this.$characterSize.width!==e.width||this.$characterSize.height!==e.height)){this.$measureNode.style.fontWeight="bold";var t=this.$measureSizes();this.$measureNode.style.fontWeight="",this.$characterSize=e,this.charSizes=Object.create(null),this.allowBoldFonts=t&&t.width===e.width&&t.height===e.height,this._emit("changeCharacterSize",{data:e})}},this.$pollSizeChanges=function(){if(this.$pollSizeChangesTimer)return this.$pollSizeChangesTimer;var e=this;return this.$pollSizeChangesTimer=setInterval(function(){e.checkForSizeChanges()},500)},this.setPolling=function(e){e?this.$pollSizeChanges():this.$pollSizeChangesTimer&&(clearInterval(this.$pollSizeChangesTimer),this.$pollSizeChangesTimer=0)},this.$measureSizes=function(){if(a===50){var e=null;try{e=this.$measureNode.getBoundingClientRect()}catch(t){e={width:0,height:0}}var n={height:e.height,width:e.width/a}}else var n={height:this.$measureNode.clientHeight,width:this.$measureNode.clientWidth/a};return n.width===0||n.height===0?null:n},this.$measureCharWidth=function(e){this.$main.innerHTML=s.stringRepeat(e,a);var t=this.$main.getBoundingClientRect();return t.width/a},this.getCharacterWidth=function(e){var t=this.charSizes[e];return t===undefined&&(this.charSizes[e]=this.$measureCharWidth(e)/this.$characterSize.width),t},this.destroy=function(){clearInterval(this.$pollSizeChangesTimer),this.el&&this.el.parentNode&&this.el.parentNode.removeChild(this.el)}}).call(f.prototype)}),define("ace/virtual_renderer",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/config","ace/lib/useragent","ace/layer/gutter","ace/layer/marker","ace/layer/text","ace/layer/cursor","ace/scrollbar","ace/scrollbar","ace/renderloop","ace/layer/font_metrics","ace/lib/event_emitter"],function(e,t,n){"use strict";var r=e("./lib/oop"),i=e("./lib/dom"),s=e("./config"),o=e("./lib/useragent"),u=e("./layer/gutter").Gutter,a=e("./layer/marker").Marker,f=e("./layer/text").Text,l=e("./layer/cursor").Cursor,c=e("./scrollbar").HScrollBar,h=e("./scrollbar").VScrollBar,p=e("./renderloop").RenderLoop,d=e("./layer/font_metrics").FontMetrics,v=e("./lib/event_emitter").EventEmitter,m='.ace_editor {position: relative;overflow: hidden;font: 12px/normal \'Monaco\', \'Menlo\', \'Ubuntu Mono\', \'Consolas\', \'source-code-pro\', monospace;direction: ltr;}.ace_scroller {position: absolute;overflow: hidden;top: 0;bottom: 0;background-color: inherit;-ms-user-select: none;-moz-user-select: none;-webkit-user-select: none;user-select: none;cursor: text;}.ace_content {position: absolute;-moz-box-sizing: border-box;-webkit-box-sizing: border-box;box-sizing: border-box;min-width: 100%;}.ace_dragging .ace_scroller:before{position: absolute;top: 0;left: 0;right: 0;bottom: 0;content: \'\';background: rgba(250, 250, 250, 0.01);z-index: 1000;}.ace_dragging.ace_dark .ace_scroller:before{background: rgba(0, 0, 0, 0.01);}.ace_selecting, .ace_selecting * {cursor: text !important;}.ace_gutter {position: absolute;overflow : hidden;width: auto;top: 0;bottom: 0;left: 0;cursor: default;z-index: 4;-ms-user-select: none;-moz-user-select: none;-webkit-user-select: none;user-select: none;}.ace_gutter-active-line {position: absolute;left: 0;right: 0;}.ace_scroller.ace_scroll-left {box-shadow: 17px 0 16px -16px rgba(0, 0, 0, 0.4) inset;}.ace_gutter-cell {padding-left: 19px;padding-right: 6px;background-repeat: no-repeat;}.ace_gutter-cell.ace_error {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAABOFBMVEX/////////QRswFAb/Ui4wFAYwFAYwFAaWGAfDRymzOSH/PxswFAb/SiUwFAYwFAbUPRvjQiDllog5HhHdRybsTi3/Tyv9Tir+Syj/UC3////XurebMBIwFAb/RSHbPx/gUzfdwL3kzMivKBAwFAbbvbnhPx66NhowFAYwFAaZJg8wFAaxKBDZurf/RB6mMxb/SCMwFAYwFAbxQB3+RB4wFAb/Qhy4Oh+4QifbNRcwFAYwFAYwFAb/QRzdNhgwFAYwFAbav7v/Uy7oaE68MBK5LxLewr/r2NXewLswFAaxJw4wFAbkPRy2PyYwFAaxKhLm1tMwFAazPiQwFAaUGAb/QBrfOx3bvrv/VC/maE4wFAbRPBq6MRO8Qynew8Dp2tjfwb0wFAbx6eju5+by6uns4uH9/f36+vr/GkHjAAAAYnRSTlMAGt+64rnWu/bo8eAA4InH3+DwoN7j4eLi4xP99Nfg4+b+/u9B/eDs1MD1mO7+4PHg2MXa347g7vDizMLN4eG+Pv7i5evs/v79yu7S3/DV7/498Yv24eH+4ufQ3Ozu/v7+y13sRqwAAADLSURBVHjaZc/XDsFgGIBhtDrshlitmk2IrbHFqL2pvXf/+78DPokj7+Fz9qpU/9UXJIlhmPaTaQ6QPaz0mm+5gwkgovcV6GZzd5JtCQwgsxoHOvJO15kleRLAnMgHFIESUEPmawB9ngmelTtipwwfASilxOLyiV5UVUyVAfbG0cCPHig+GBkzAENHS0AstVF6bacZIOzgLmxsHbt2OecNgJC83JERmePUYq8ARGkJx6XtFsdddBQgZE2nPR6CICZhawjA4Fb/chv+399kfR+MMMDGOQAAAABJRU5ErkJggg==");background-repeat: no-repeat;background-position: 2px center;}.ace_gutter-cell.ace_warning {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAmVBMVEX///8AAAD///8AAAAAAABPSzb/5sAAAAB/blH/73z/ulkAAAAAAAD85pkAAAAAAAACAgP/vGz/rkDerGbGrV7/pkQICAf////e0IsAAAD/oED/qTvhrnUAAAD/yHD/njcAAADuv2r/nz//oTj/p064oGf/zHAAAAA9Nir/tFIAAAD/tlTiuWf/tkIAAACynXEAAAAAAAAtIRW7zBpBAAAAM3RSTlMAABR1m7RXO8Ln31Z36zT+neXe5OzooRDfn+TZ4p3h2hTf4t3k3ucyrN1K5+Xaks52Sfs9CXgrAAAAjklEQVR42o3PbQ+CIBQFYEwboPhSYgoYunIqqLn6/z8uYdH8Vmdnu9vz4WwXgN/xTPRD2+sgOcZjsge/whXZgUaYYvT8QnuJaUrjrHUQreGczuEafQCO/SJTufTbroWsPgsllVhq3wJEk2jUSzX3CUEDJC84707djRc5MTAQxoLgupWRwW6UB5fS++NV8AbOZgnsC7BpEAAAAABJRU5ErkJggg==");background-position: 2px center;}.ace_gutter-cell.ace_info {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAAAAAA6mKC9AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAAJ0Uk5TAAB2k804AAAAPklEQVQY02NgIB68QuO3tiLznjAwpKTgNyDbMegwisCHZUETUZV0ZqOquBpXj2rtnpSJT1AEnnRmL2OgGgAAIKkRQap2htgAAAAASUVORK5CYII=");background-position: 2px center;}.ace_dark .ace_gutter-cell.ace_info {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQBAMAAADt3eJSAAAAJFBMVEUAAAChoaGAgIAqKiq+vr6tra1ZWVmUlJSbm5s8PDxubm56enrdgzg3AAAAAXRSTlMAQObYZgAAAClJREFUeNpjYMAPdsMYHegyJZFQBlsUlMFVCWUYKkAZMxZAGdxlDMQBAG+TBP4B6RyJAAAAAElFTkSuQmCC");}.ace_scrollbar {position: absolute;right: 0;bottom: 0;z-index: 6;}.ace_scrollbar-inner {position: absolute;cursor: text;left: 0;top: 0;}.ace_scrollbar-v{overflow-x: hidden;overflow-y: scroll;top: 0;}.ace_scrollbar-h {overflow-x: scroll;overflow-y: hidden;left: 0;}.ace_print-margin {position: absolute;height: 100%;}.ace_text-input {position: absolute;z-index: 0;width: 0.5em;height: 1em;opacity: 0;background: transparent;-moz-appearance: none;appearance: none;border: none;resize: none;outline: none;overflow: hidden;font: inherit;padding: 0 1px;margin: 0 -1px;text-indent: -1em;-ms-user-select: text;-moz-user-select: text;-webkit-user-select: text;user-select: text;}.ace_text-input.ace_composition {background: inherit;color: inherit;z-index: 1000;opacity: 1;text-indent: 0;}.ace_layer {z-index: 1;position: absolute;overflow: hidden;word-wrap: normal;white-space: pre;height: 100%;width: 100%;-moz-box-sizing: border-box;-webkit-box-sizing: border-box;box-sizing: border-box;pointer-events: none;}.ace_gutter-layer {position: relative;width: auto;text-align: right;pointer-events: auto;}.ace_text-layer {font: inherit !important;}.ace_cjk {display: inline-block;text-align: center;}.ace_cursor-layer {z-index: 4;}.ace_cursor {z-index: 4;position: absolute;-moz-box-sizing: border-box;-webkit-box-sizing: border-box;box-sizing: border-box;border-left: 2px solid}.ace_slim-cursors .ace_cursor {border-left-width: 1px;}.ace_overwrite-cursors .ace_cursor {border-left-width: 0;border-bottom: 1px solid;}.ace_hidden-cursors .ace_cursor {opacity: 0.2;}.ace_smooth-blinking .ace_cursor {-webkit-transition: opacity 0.18s;transition: opacity 0.18s;}.ace_editor.ace_multiselect .ace_cursor {border-left-width: 1px;}.ace_marker-layer .ace_step, .ace_marker-layer .ace_stack {position: absolute;z-index: 3;}.ace_marker-layer .ace_selection {position: absolute;z-index: 5;}.ace_marker-layer .ace_bracket {position: absolute;z-index: 6;}.ace_marker-layer .ace_active-line {position: absolute;z-index: 2;}.ace_marker-layer .ace_selected-word {position: absolute;z-index: 4;-moz-box-sizing: border-box;-webkit-box-sizing: border-box;box-sizing: border-box;}.ace_line .ace_fold {-moz-box-sizing: border-box;-webkit-box-sizing: border-box;box-sizing: border-box;display: inline-block;height: 11px;margin-top: -2px;vertical-align: middle;background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABEAAAAJCAYAAADU6McMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJpJREFUeNpi/P//PwOlgAXGYGRklAVSokD8GmjwY1wasKljQpYACtpCFeADcHVQfQyMQAwzwAZI3wJKvCLkfKBaMSClBlR7BOQikCFGQEErIH0VqkabiGCAqwUadAzZJRxQr/0gwiXIal8zQQPnNVTgJ1TdawL0T5gBIP1MUJNhBv2HKoQHHjqNrA4WO4zY0glyNKLT2KIfIMAAQsdgGiXvgnYAAAAASUVORK5CYII="),url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAA3CAYAAADNNiA5AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACJJREFUeNpi+P//fxgTAwPDBxDxD078RSX+YeEyDFMCIMAAI3INmXiwf2YAAAAASUVORK5CYII=");background-repeat: no-repeat, repeat-x;background-position: center center, top left;color: transparent;border: 1px solid black;border-radius: 2px;cursor: pointer;pointer-events: auto;}.ace_dark .ace_fold {}.ace_fold:hover{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABEAAAAJCAYAAADU6McMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJpJREFUeNpi/P//PwOlgAXGYGRklAVSokD8GmjwY1wasKljQpYACtpCFeADcHVQfQyMQAwzwAZI3wJKvCLkfKBaMSClBlR7BOQikCFGQEErIH0VqkabiGCAqwUadAzZJRxQr/0gwiXIal8zQQPnNVTgJ1TdawL0T5gBIP1MUJNhBv2HKoQHHjqNrA4WO4zY0glyNKLT2KIfIMAAQsdgGiXvgnYAAAAASUVORK5CYII="),url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAA3CAYAAADNNiA5AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACBJREFUeNpi+P//fz4TAwPDZxDxD5X4i5fLMEwJgAADAEPVDbjNw87ZAAAAAElFTkSuQmCC");}.ace_tooltip {background-color: #FFF;background-image: -webkit-linear-gradient(top, transparent, rgba(0, 0, 0, 0.1));background-image: linear-gradient(to bottom, transparent, rgba(0, 0, 0, 0.1));border: 1px solid gray;border-radius: 1px;box-shadow: 0 1px 2px rgba(0, 0, 0, 0.3);color: black;max-width: 100%;padding: 3px 4px;position: fixed;z-index: 999999;-moz-box-sizing: border-box;-webkit-box-sizing: border-box;box-sizing: border-box;cursor: default;white-space: pre;word-wrap: break-word;line-height: normal;font-style: normal;font-weight: normal;letter-spacing: normal;pointer-events: none;}.ace_folding-enabled > .ace_gutter-cell {padding-right: 13px;}.ace_fold-widget {-moz-box-sizing: border-box;-webkit-box-sizing: border-box;box-sizing: border-box;margin: 0 -12px 0 1px;display: none;width: 11px;vertical-align: top;background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAANElEQVR42mWKsQ0AMAzC8ixLlrzQjzmBiEjp0A6WwBCSPgKAXoLkqSot7nN3yMwR7pZ32NzpKkVoDBUxKAAAAABJRU5ErkJggg==");background-repeat: no-repeat;background-position: center;border-radius: 3px;border: 1px solid transparent;cursor: pointer;}.ace_folding-enabled .ace_fold-widget {display: inline-block; }.ace_fold-widget.ace_end {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAANElEQVR42m3HwQkAMAhD0YzsRchFKI7sAikeWkrxwScEB0nh5e7KTPWimZki4tYfVbX+MNl4pyZXejUO1QAAAABJRU5ErkJggg==");}.ace_fold-widget.ace_closed {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAAGCAYAAAAG5SQMAAAAOUlEQVR42jXKwQkAMAgDwKwqKD4EwQ26sSOkVWjgIIHAzPiCgaqiqnJHZnKICBERHN194O5b9vbLuAVRL+l0YWnZAAAAAElFTkSuQmCCXA==");}.ace_fold-widget:hover {border: 1px solid rgba(0, 0, 0, 0.3);background-color: rgba(255, 255, 255, 0.2);box-shadow: 0 1px 1px rgba(255, 255, 255, 0.7);}.ace_fold-widget:active {border: 1px solid rgba(0, 0, 0, 0.4);background-color: rgba(0, 0, 0, 0.05);box-shadow: 0 1px 1px rgba(255, 255, 255, 0.8);}.ace_dark .ace_fold-widget {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHklEQVQIW2P4//8/AzoGEQ7oGCaLLAhWiSwB146BAQCSTPYocqT0AAAAAElFTkSuQmCC");}.ace_dark .ace_fold-widget.ace_end {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAH0lEQVQIW2P4//8/AxQ7wNjIAjDMgC4AxjCVKBirIAAF0kz2rlhxpAAAAABJRU5ErkJggg==");}.ace_dark .ace_fold-widget.ace_closed {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAAFCAYAAACAcVaiAAAAHElEQVQIW2P4//+/AxAzgDADlOOAznHAKgPWAwARji8UIDTfQQAAAABJRU5ErkJggg==");}.ace_dark .ace_fold-widget:hover {box-shadow: 0 1px 1px rgba(255, 255, 255, 0.2);background-color: rgba(255, 255, 255, 0.1);}.ace_dark .ace_fold-widget:active {box-shadow: 0 1px 1px rgba(255, 255, 255, 0.2);}.ace_fold-widget.ace_invalid {background-color: #FFB4B4;border-color: #DE5555;}.ace_fade-fold-widgets .ace_fold-widget {-webkit-transition: opacity 0.4s ease 0.05s;transition: opacity 0.4s ease 0.05s;opacity: 0;}.ace_fade-fold-widgets:hover .ace_fold-widget {-webkit-transition: opacity 0.05s ease 0.05s;transition: opacity 0.05s ease 0.05s;opacity:1;}.ace_underline {text-decoration: underline;}.ace_bold {font-weight: bold;}.ace_nobold .ace_bold {font-weight: normal;}.ace_italic {font-style: italic;}.ace_error-marker {background-color: rgba(255, 0, 0,0.2);position: absolute;z-index: 9;}.ace_highlight-marker {background-color: rgba(255, 255, 0,0.2);position: absolute;z-index: 8;}';i.importCssString(m,"ace_editor.css");var g=function(e,t){var n=this;this.container=e||i.createElement("div"),this.$keepTextAreaAtCursor=!o.isOldIE,i.addCssClass(this.container,"ace_editor"),this.setTheme(t),this.$gutter=i.createElement("div"),this.$gutter.className="ace_gutter",this.container.appendChild(this.$gutter),this.scroller=i.createElement("div"),this.scroller.className="ace_scroller",this.container.appendChild(this.scroller),this.content=i.createElement("div"),this.content.className="ace_content",this.scroller.appendChild(this.content),this.$gutterLayer=new u(this.$gutter),this.$gutterLayer.on("changeGutterWidth",this.onGutterResize.bind(this)),this.$markerBack=new a(this.content);var r=this.$textLayer=new f(this.content);this.canvas=r.element,this.$markerFront=new a(this.content),this.$cursorLayer=new l(this.content),this.$horizScroll=!1,this.$vScroll=!1,this.scrollBar=this.scrollBarV=new h(this.container,this),this.scrollBarH=new c(this.container,this),this.scrollBarV.addEventListener("scroll",function(e){n.$scrollAnimation||n.session.setScrollTop(e.data-n.scrollMargin.top)}),this.scrollBarH.addEventListener("scroll",function(e){n.$scrollAnimation||n.session.setScrollLeft(e.data-n.scrollMargin.left)}),this.scrollTop=0,this.scrollLeft=0,this.cursorPos={row:0,column:0},this.$fontMetrics=new d(this.container,500),this.$textLayer.$setFontMetrics(this.$fontMetrics),this.$textLayer.addEventListener("changeCharacterSize",function(e){n.updateCharacterSize(),n.onResize(!0,n.gutterWidth,n.$size.width,n.$size.height),n._signal("changeCharacterSize",e)}),this.$size={width:0,height:0,scrollerHeight:0,scrollerWidth:0,$dirty:!0},this.layerConfig={width:1,padding:0,firstRow:0,firstRowScreen:0,lastRow:0,lineHeight:0,characterWidth:0,minHeight:1,maxHeight:1,offset:0,height:1,gutterOffset:1},this.scrollMargin={left:0,right:0,top:0,bottom:0,v:0,h:0},this.$loop=new p(this.$renderChanges.bind(this),this.container.ownerDocument.defaultView),this.$loop.schedule(this.CHANGE_FULL),this.updateCharacterSize(),this.setPadding(4),s.resetOptions(this),s._emit("renderer",this)};(function(){this.CHANGE_CURSOR=1,this.CHANGE_MARKER=2,this.CHANGE_GUTTER=4,this.CHANGE_SCROLL=8,this.CHANGE_LINES=16,this.CHANGE_TEXT=32,this.CHANGE_SIZE=64,this.CHANGE_MARKER_BACK=128,this.CHANGE_MARKER_FRONT=256,this.CHANGE_FULL=512,this.CHANGE_H_SCROLL=1024,r.implement(this,v),this.updateCharacterSize=function(){this.$textLayer.allowBoldFonts!=this.$allowBoldFonts&&(this.$allowBoldFonts=this.$textLayer.allowBoldFonts,this.setStyle("ace_nobold",!this.$allowBoldFonts)),this.layerConfig.characterWidth=this.characterWidth=this.$textLayer.getCharacterWidth(),this.layerConfig.lineHeight=this.lineHeight=this.$textLayer.getLineHeight(),this.$updatePrintMargin()},this.setSession=function(e){this.session&&this.session.doc.off("changeNewLineMode",this.onChangeNewLineMode),this.session=e,e&&this.scrollMargin.top&&e.getScrollTop()<=0&&e.setScrollTop(-this.scrollMargin.top),this.$cursorLayer.setSession(e),this.$markerBack.setSession(e),this.$markerFront.setSession(e),this.$gutterLayer.setSession(e),this.$textLayer.setSession(e);if(!e)return;this.$loop.schedule(this.CHANGE_FULL),this.session.$setFontMetrics(this.$fontMetrics),this.onChangeNewLineMode=this.onChangeNewLineMode.bind(this),this.onChangeNewLineMode(),this.session.doc.on("changeNewLineMode",this.onChangeNewLineMode)},this.updateLines=function(e,t,n){t===undefined&&(t=Infinity),this.$changedLines?(this.$changedLines.firstRow>e&&(this.$changedLines.firstRow=e),this.$changedLines.lastRowthis.layerConfig.lastRow)return;this.$loop.schedule(this.CHANGE_LINES)},this.onChangeNewLineMode=function(){this.$loop.schedule(this.CHANGE_TEXT),this.$textLayer.$updateEolChar()},this.onChangeTabSize=function(){this.$loop.schedule(this.CHANGE_TEXT|this.CHANGE_MARKER),this.$textLayer.onChangeTabSize()},this.updateText=function(){this.$loop.schedule(this.CHANGE_TEXT)},this.updateFull=function(e){e?this.$renderChanges(this.CHANGE_FULL,!0):this.$loop.schedule(this.CHANGE_FULL)},this.updateFontSize=function(){this.$textLayer.checkForSizeChanges()},this.$changes=0,this.$updateSizeAsync=function(){this.$loop.pending?this.$size.$dirty=!0:this.onResize()},this.onResize=function(e,t,n,r){if(this.resizing>2)return;this.resizing>0?this.resizing++:this.resizing=e?1:0;var i=this.container;r||(r=i.clientHeight||i.scrollHeight),n||(n=i.clientWidth||i.scrollWidth);var s=this.$updateCachedSize(e,t,n,r);if(!this.$size.scrollerHeight||!n&&!r)return this.resizing=0;e&&(this.$gutterLayer.$padding=null),e?this.$renderChanges(s|this.$changes,!0):this.$loop.schedule(s|this.$changes),this.resizing&&(this.resizing=0),this.scrollBarV.scrollLeft=this.scrollBarV.scrollTop=null},this.$updateCachedSize=function(e,t,n,r){r-=this.$extraHeight||0;var i=0,s=this.$size,o={width:s.width,height:s.height,scrollerHeight:s.scrollerHeight,scrollerWidth:s.scrollerWidth};r&&(e||s.height!=r)&&(s.height=r,i|=this.CHANGE_SIZE,s.scrollerHeight=s.height,this.$horizScroll&&(s.scrollerHeight-=this.scrollBarH.getHeight()),this.scrollBarV.element.style.bottom=this.scrollBarH.getHeight()+"px",i|=this.CHANGE_SCROLL);if(n&&(e||s.width!=n)){i|=this.CHANGE_SIZE,s.width=n,t==null&&(t=this.$showGutter?this.$gutter.offsetWidth:0),this.gutterWidth=t,this.scrollBarH.element.style.left=this.scroller.style.left=t+"px",s.scrollerWidth=Math.max(0,n-t-this.scrollBarV.getWidth()),this.scrollBarH.element.style.right=this.scroller.style.right=this.scrollBarV.getWidth()+"px",this.scroller.style.bottom=this.scrollBarH.getHeight()+"px";if(this.session&&this.session.getUseWrapMode()&&this.adjustWrapLimit()||e)i|=this.CHANGE_FULL}return s.$dirty=!n||!r,i&&this._signal("resize",o),i},this.onGutterResize=function(){var e=this.$showGutter?this.$gutter.offsetWidth:0;e!=this.gutterWidth&&(this.$changes|=this.$updateCachedSize(!0,e,this.$size.width,this.$size.height)),this.session.getUseWrapMode()&&this.adjustWrapLimit()?this.$loop.schedule(this.CHANGE_FULL):this.$size.$dirty?this.$loop.schedule(this.CHANGE_FULL):(this.$computeLayerConfig(),this.$loop.schedule(this.CHANGE_MARKER))},this.adjustWrapLimit=function(){var e=this.$size.scrollerWidth-this.$padding*2,t=Math.floor(e/this.characterWidth);return this.session.adjustWrapLimit(t,this.$showPrintMargin&&this.$printMarginColumn)},this.setAnimatedScroll=function(e){this.setOption("animatedScroll",e)},this.getAnimatedScroll=function(){return this.$animatedScroll},this.setShowInvisibles=function(e){this.setOption("showInvisibles",e)},this.getShowInvisibles=function(){return this.getOption("showInvisibles")},this.getDisplayIndentGuides=function(){return this.getOption("displayIndentGuides")},this.setDisplayIndentGuides=function(e){this.setOption("displayIndentGuides",e)},this.setShowPrintMargin=function(e){this.setOption("showPrintMargin",e)},this.getShowPrintMargin=function(){return this.getOption("showPrintMargin")},this.setPrintMarginColumn=function(e){this.setOption("printMarginColumn",e)},this.getPrintMarginColumn=function(){return this.getOption("printMarginColumn")},this.getShowGutter=function(){return this.getOption("showGutter")},this.setShowGutter=function(e){return this.setOption("showGutter",e)},this.getFadeFoldWidgets=function(){return this.getOption("fadeFoldWidgets")},this.setFadeFoldWidgets=function(e){this.setOption("fadeFoldWidgets",e)},this.setHighlightGutterLine=function(e){this.setOption("highlightGutterLine",e)},this.getHighlightGutterLine=function(){return this.getOption("highlightGutterLine")},this.$updateGutterLineHighlight=function(){var e=this.$cursorLayer.$pixelPos,t=this.layerConfig.lineHeight;if(this.session.getUseWrapMode()){var n=this.session.selection.getCursor();n.column=0,e=this.$cursorLayer.getPixelPosition(n,!0),t*=this.session.getRowLength(n.row)}this.$gutterLineHighlight.style.top=e.top-this.layerConfig.offset+"px",this.$gutterLineHighlight.style.height=t+"px"},this.$updatePrintMargin=function(){if(!this.$showPrintMargin&&!this.$printMarginEl)return;if(!this.$printMarginEl){var e=i.createElement("div");e.className="ace_layer ace_print-margin-layer",this.$printMarginEl=i.createElement("div"),this.$printMarginEl.className="ace_print-margin",e.appendChild(this.$printMarginEl),this.content.insertBefore(e,this.content.firstChild)}var t=this.$printMarginEl.style;t.left=this.characterWidth*this.$printMarginColumn+this.$padding+"px",t.visibility=this.$showPrintMargin?"visible":"hidden",this.session&&this.session.$wrap==-1&&this.adjustWrapLimit()},this.getContainerElement=function(){return this.container},this.getMouseEventTarget=function(){return this.content},this.getTextAreaContainer=function(){return this.container},this.$moveTextAreaToCursor=function(){if(!this.$keepTextAreaAtCursor)return;var e=this.layerConfig,t=this.$cursorLayer.$pixelPos.top,n=this.$cursorLayer.$pixelPos.left;t-=e.offset;var r=this.textarea.style,i=this.lineHeight;if(t<0||t>e.height-i){r.top=r.left="0";return}var s=this.characterWidth;if(this.$composition){var o=this.textarea.value.replace(/^\x01+/,"");s*=this.session.$getStringScreenWidth(o)[0]+2,i+=2}n-=this.scrollLeft,n>this.$size.scrollerWidth-s&&(n=this.$size.scrollerWidth-s),n+=this.gutterWidth,r.height=i+"px",r.width=s+"px",r.left=Math.min(n,this.$size.scrollerWidth-s)+"px",r.top=Math.min(t,this.$size.height-i)+"px"},this.getFirstVisibleRow=function(){return this.layerConfig.firstRow},this.getFirstFullyVisibleRow=function(){return this.layerConfig.firstRow+(this.layerConfig.offset===0?0:1)},this.getLastFullyVisibleRow=function(){var e=Math.floor((this.layerConfig.height+this.layerConfig.offset)/this.layerConfig.lineHeight);return this.layerConfig.firstRow-1+e},this.getLastVisibleRow=function(){return this.layerConfig.lastRow},this.$padding=null,this.setPadding=function(e){this.$padding=e,this.$textLayer.setPadding(e),this.$cursorLayer.setPadding(e),this.$markerFront.setPadding(e),this.$markerBack.setPadding(e),this.$loop.schedule(this.CHANGE_FULL),this.$updatePrintMargin()},this.setScrollMargin=function(e,t,n,r){var i=this.scrollMargin;i.top=e|0,i.bottom=t|0,i.right=r|0,i.left=n|0,i.v=i.top+i.bottom,i.h=i.left+i.right,i.top&&this.scrollTop<=0&&this.session&&this.session.setScrollTop(-i.top),this.updateFull()},this.getHScrollBarAlwaysVisible=function(){return this.$hScrollBarAlwaysVisible},this.setHScrollBarAlwaysVisible=function(e){this.setOption("hScrollBarAlwaysVisible",e)},this.getVScrollBarAlwaysVisible=function(){return this.$vScrollBarAlwaysVisible},this.setVScrollBarAlwaysVisible=function(e){this.setOption("vScrollBarAlwaysVisible",e)},this.$updateScrollBarV=function(){var e=this.layerConfig.maxHeight,t=this.$size.scrollerHeight;!this.$maxLines&&this.$scrollPastEnd&&(e-=(t-this.lineHeight)*this.$scrollPastEnd,this.scrollTop>e-t&&(e=this.scrollTop+t,this.scrollBarV.scrollTop=null)),this.scrollBarV.setScrollHeight(e+this.scrollMargin.v),this.scrollBarV.setScrollTop(this.scrollTop+this.scrollMargin.top)},this.$updateScrollBarH=function(){this.scrollBarH.setScrollWidth(this.layerConfig.width+2*this.$padding+this.scrollMargin.h),this.scrollBarH.setScrollLeft(this.scrollLeft+this.scrollMargin.left)},this.$frozen=!1,this.freeze=function(){this.$frozen=!0},this.unfreeze=function(){this.$frozen=!1},this.$renderChanges=function(e,t){this.$changes&&(e|=this.$changes,this.$changes=0);if(!this.session||!this.container.offsetWidth||this.$frozen||!e&&!t){this.$changes|=e;return}if(this.$size.$dirty)return this.$changes|=e,this.onResize(!0);this.lineHeight||this.$textLayer.checkForSizeChanges(),this._signal("beforeRender");var n=this.layerConfig;if(e&this.CHANGE_FULL||e&this.CHANGE_SIZE||e&this.CHANGE_TEXT||e&this.CHANGE_LINES||e&this.CHANGE_SCROLL||e&this.CHANGE_H_SCROLL){e|=this.$computeLayerConfig();if(n.firstRow!=this.layerConfig.firstRow&&n.firstRowScreen==this.layerConfig.firstRowScreen){var r=this.scrollTop+(n.firstRow-this.layerConfig.firstRow)*this.lineHeight;r>0&&(this.scrollTop=r,e|=this.CHANGE_SCROLL,e|=this.$computeLayerConfig())}n=this.layerConfig,this.$updateScrollBarV(),e&this.CHANGE_H_SCROLL&&this.$updateScrollBarH(),this.$gutterLayer.element.style.marginTop=-n.offset+"px",this.content.style.marginTop=-n.offset+"px",this.content.style.width=n.width+2*this.$padding+"px",this.content.style.height=n.minHeight+"px"}e&this.CHANGE_H_SCROLL&&(this.content.style.marginLeft=-this.scrollLeft+"px",this.scroller.className=this.scrollLeft<=0?"ace_scroller":"ace_scroller ace_scroll-left");if(e&this.CHANGE_FULL){this.$textLayer.update(n),this.$showGutter&&this.$gutterLayer.update(n),this.$markerBack.update(n),this.$markerFront.update(n),this.$cursorLayer.update(n),this.$moveTextAreaToCursor(),this.$highlightGutterLine&&this.$updateGutterLineHighlight(),this._signal("afterRender");return}if(e&this.CHANGE_SCROLL){e&this.CHANGE_TEXT||e&this.CHANGE_LINES?this.$textLayer.update(n):this.$textLayer.scrollLines(n),this.$showGutter&&this.$gutterLayer.update(n),this.$markerBack.update(n),this.$markerFront.update(n),this.$cursorLayer.update(n),this.$highlightGutterLine&&this.$updateGutterLineHighlight(),this.$moveTextAreaToCursor(),this._signal("afterRender");return}e&this.CHANGE_TEXT?(this.$textLayer.update(n),this.$showGutter&&this.$gutterLayer.update(n)):e&this.CHANGE_LINES?(this.$updateLines()||e&this.CHANGE_GUTTER&&this.$showGutter)&&this.$gutterLayer.update(n):(e&this.CHANGE_TEXT||e&this.CHANGE_GUTTER)&&this.$showGutter&&this.$gutterLayer.update(n),e&this.CHANGE_CURSOR&&(this.$cursorLayer.update(n),this.$moveTextAreaToCursor(),this.$highlightGutterLine&&this.$updateGutterLineHighlight()),e&(this.CHANGE_MARKER|this.CHANGE_MARKER_FRONT)&&this.$markerFront.update(n),e&(this.CHANGE_MARKER|this.CHANGE_MARKER_BACK)&&this.$markerBack.update(n),this._signal("afterRender")},this.$autosize=function(){var e=this.session.getScreenLength()*this.lineHeight,t=this.$maxLines*this.lineHeight,n=Math.max((this.$minLines||1)*this.lineHeight,Math.min(t,e))+this.scrollMargin.v+(this.$extraHeight||0),r=e>t;if(n!=this.desiredHeight||this.$size.height!=this.desiredHeight||r!=this.$vScroll){r!=this.$vScroll&&(this.$vScroll=r,this.scrollBarV.setVisible(r));var i=this.container.clientWidth;this.container.style.height=n+"px",this.$updateCachedSize(!0,this.$gutterWidth,i,n),this.desiredHeight=n,this._signal("autosize")}},this.$computeLayerConfig=function(){this.$maxLines&&this.lineHeight>1&&this.$autosize();var e=this.session,t=this.$size,n=t.height<=2*this.lineHeight,r=this.session.getScreenLength(),i=r*this.lineHeight,s=this.scrollTop%this.lineHeight,o=t.scrollerHeight+this.lineHeight,u=this.$getLongestLine(),a=!n&&(this.$hScrollBarAlwaysVisible||t.scrollerWidth-u-2*this.$padding<0),f=this.$horizScroll!==a;f&&(this.$horizScroll=a,this.scrollBarH.setVisible(a));var l=!this.$maxLines&&this.$scrollPastEnd?(t.scrollerHeight-this.lineHeight)*this.$scrollPastEnd:0;i+=l,this.session.setScrollTop(Math.max(-this.scrollMargin.top,Math.min(this.scrollTop,i-t.scrollerHeight+this.scrollMargin.bottom))),this.session.setScrollLeft(Math.max(-this.scrollMargin.left,Math.min(this.scrollLeft,u+2*this.$padding-t.scrollerWidth+this.scrollMargin.right)));var c=!n&&(this.$vScrollBarAlwaysVisible||t.scrollerHeight-i+l<0||this.scrollTop),h=this.$vScroll!==c;h&&(this.$vScroll=c,this.scrollBarV.setVisible(c));var p=Math.ceil(o/this.lineHeight)-1,d=Math.max(0,Math.round((this.scrollTop-s)/this.lineHeight)),v=d+p,m,g,y=this.lineHeight;d=e.screenToDocumentRow(d,0);var b=e.getFoldLine(d);b&&(d=b.start.row),m=e.documentToScreenRow(d,0),g=e.getRowLength(d)*y,v=Math.min(e.screenToDocumentRow(v,0),e.getLength()-1),o=t.scrollerHeight+e.getRowLength(v)*y+g,s=this.scrollTop-m*y;var w=0;this.layerConfig.width!=u&&(w=this.CHANGE_H_SCROLL);if(f||h)w=this.$updateCachedSize(!0,this.gutterWidth,t.width,t.height),this._signal("scrollbarVisibilityChanged"),h&&(u=this.$getLongestLine());return this.layerConfig={width:u,padding:this.$padding,firstRow:d,firstRowScreen:m,lastRow:v,lineHeight:y,characterWidth:this.characterWidth,minHeight:o,maxHeight:i,offset:s,gutterOffset:Math.max(0,Math.ceil((s+t.height-t.scrollerHeight)/y)),height:this.$size.scrollerHeight},w},this.$updateLines=function(){var e=this.$changedLines.firstRow,t=this.$changedLines.lastRow;this.$changedLines=null;var n=this.layerConfig;if(e>n.lastRow+1)return;if(ts?(t&&(s-=t*this.$size.scrollerHeight),s===0&&(s=-this.scrollMargin.top),this.session.setScrollTop(s)):a+this.$size.scrollerHeight-ui?(i=1-this.scrollMargin.top)return!0;if(t>0&&this.session.getScrollTop()+this.$size.scrollerHeight-this.layerConfig.maxHeight<-1+this.scrollMargin.bottom)return!0;if(e<0&&this.session.getScrollLeft()>=1-this.scrollMargin.left)return!0;if(e>0&&this.session.getScrollLeft()+this.$size.scrollerWidth-this.layerConfig.width<-1+this.scrollMargin.right)return!0},this.pixelToScreenCoordinates=function(e,t){var n=this.scroller.getBoundingClientRect(),r=(e+this.scrollLeft-n.left-this.$padding)/this.characterWidth,i=Math.floor((t+this.scrollTop-n.top)/this.lineHeight),s=Math.round(r);return{row:i,column:s,side:r-s>0?1:-1}},this.screenToTextCoordinates=function(e,t){var n=this.scroller.getBoundingClientRect(),r=Math.round((e+this.scrollLeft-n.left-this.$padding)/this.characterWidth),i=(t+this.scrollTop-n.top)/this.lineHeight;return this.session.screenToDocumentPosition(i,Math.max(r,0))},this.textToScreenCoordinates=function(e,t){var n=this.scroller.getBoundingClientRect(),r=this.session.documentToScreenPosition(e,t),i=this.$padding+Math.round(r.column*this.characterWidth),s=r.row*this.lineHeight;return{pageX:n.left+i-this.scrollLeft,pageY:n.top+s-this.scrollTop}},this.visualizeFocus=function(){i.addCssClass(this.container,"ace_focus")},this.visualizeBlur=function(){i.removeCssClass(this.container,"ace_focus")},this.showComposition=function(e){this.$composition||(this.$composition={keepTextAreaAtCursor:this.$keepTextAreaAtCursor,cssText:this.textarea.style.cssText}),this.$keepTextAreaAtCursor=!0,i.addCssClass(this.textarea,"ace_composition"),this.textarea.style.cssText="",this.$moveTextAreaToCursor()},this.setCompositionText=function(e){this.$moveTextAreaToCursor()},this.hideComposition=function(){if(!this.$composition)return;i.removeCssClass(this.textarea,"ace_composition"),this.$keepTextAreaAtCursor=this.$composition.keepTextAreaAtCursor,this.textarea.style.cssText=this.$composition.cssText,this.$composition=null},this.setTheme=function(e,t){function o(r){if(n.$themeId!=e)return t&&t();if(!r.cssClass)return;i.importCssString(r.cssText,r.cssClass,n.container.ownerDocument),n.theme&&i.removeCssClass(n.container,n.theme.cssClass);var s="padding"in r?r.padding:"padding"in(n.theme||{})?4:n.$padding;n.$padding&&s!=n.$padding&&n.setPadding(s),n.$theme=r.cssClass,n.theme=r,i.addCssClass(n.container,r.cssClass),i.setCssClass(n.container,"ace_dark",r.isDark),n.$size&&(n.$size.width=0,n.$updateSizeAsync()),n._dispatchEvent("themeLoaded",{theme:r}),t&&t()}var n=this;this.$themeId=e,n._dispatchEvent("themeChange",{theme:e});if(!e||typeof e=="string"){var r=e||this.$options.theme.initialValue;s.loadModule(["theme",r],o)}else o(e)},this.getTheme=function(){return this.$themeId},this.setStyle=function(e,t){i.setCssClass(this.container,e,t!==!1)},this.unsetStyle=function(e){i.removeCssClass(this.container,e)},this.setCursorStyle=function(e){this.scroller.style.cursor!=e&&(this.scroller.style.cursor=e)},this.setMouseCursor=function(e){this.scroller.style.cursor=e},this.destroy=function(){this.$textLayer.destroy(),this.$cursorLayer.destroy()}}).call(g.prototype),s.defineOptions(g.prototype,"renderer",{animatedScroll:{initialValue:!1},showInvisibles:{set:function(e){this.$textLayer.setShowInvisibles(e)&&this.$loop.schedule(this.CHANGE_TEXT)},initialValue:!1},showPrintMargin:{set:function(){this.$updatePrintMargin()},initialValue:!0},printMarginColumn:{set:function(){this.$updatePrintMargin()},initialValue:80},printMargin:{set:function(e){typeof e=="number"&&(this.$printMarginColumn=e),this.$showPrintMargin=!!e,this.$updatePrintMargin()},get:function(){return this.$showPrintMargin&&this.$printMarginColumn}},showGutter:{set:function(e){this.$gutter.style.display=e?"block":"none",this.$loop.schedule(this.CHANGE_FULL),this.onGutterResize()},initialValue:!0},fadeFoldWidgets:{set:function(e){i.setCssClass(this.$gutter,"ace_fade-fold-widgets",e)},initialValue:!1},showFoldWidgets:{set:function(e){this.$gutterLayer.setShowFoldWidgets(e)},initialValue:!0},showLineNumbers:{set:function(e){this.$gutterLayer.setShowLineNumbers(e),this.$loop.schedule(this.CHANGE_GUTTER)},initialValue:!0},displayIndentGuides:{set:function(e){this.$textLayer.setDisplayIndentGuides(e)&&this.$loop.schedule(this.CHANGE_TEXT)},initialValue:!0},highlightGutterLine:{set:function(e){if(!this.$gutterLineHighlight){this.$gutterLineHighlight=i.createElement("div"),this.$gutterLineHighlight.className="ace_gutter-active-line",this.$gutter.appendChild(this.$gutterLineHighlight);return}this.$gutterLineHighlight.style.display=e?"":"none",this.$cursorLayer.$pixelPos&&this.$updateGutterLineHighlight()},initialValue:!1,value:!0},hScrollBarAlwaysVisible:{set:function(e){(!this.$hScrollBarAlwaysVisible||!this.$horizScroll)&&this.$loop.schedule(this.CHANGE_SCROLL)},initialValue:!1},vScrollBarAlwaysVisible:{set:function(e){(!this.$vScrollBarAlwaysVisible||!this.$vScroll)&&this.$loop.schedule(this.CHANGE_SCROLL)},initialValue:!1},fontSize:{set:function(e){typeof e=="number"&&(e+="px"),this.container.style.fontSize=e,this.updateFontSize()},initialValue:12},fontFamily:{set:function(e){this.container.style.fontFamily=e,this.updateFontSize()}},maxLines:{set:function(e){this.updateFull()}},minLines:{set:function(e){this.updateFull()}},scrollPastEnd:{set:function(e){e=+e||0;if(this.$scrollPastEnd==e)return;this.$scrollPastEnd=e,this.$loop.schedule(this.CHANGE_SCROLL)},initialValue:0,handlesSet:!0},fixedWidthGutter:{set:function(e){this.$gutterLayer.$fixedWidth=!!e,this.$loop.schedule(this.CHANGE_GUTTER)}},theme:{set:function(e){this.setTheme(e)},get:function(){return this.$themeId||this.theme},initialValue:"./theme/textmate",handlesSet:!0}}),t.VirtualRenderer=g}),define("ace/worker/worker_client",["require","exports","module","ace/lib/oop","ace/lib/net","ace/lib/event_emitter","ace/config"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/net"),s=e("../lib/event_emitter").EventEmitter,o=e("../config"),u=function(t,n,r,i){this.$sendDeltaQueue=this.$sendDeltaQueue.bind(this),this.changeListener=this.changeListener.bind(this),this.onMessage=this.onMessage.bind(this),e.nameToUrl&&!e.toUrl&&(e.toUrl=e.nameToUrl);if(o.get("packaged")||!e.toUrl)i=i||o.moduleUrl(n,"worker");else{var s=this.$normalizePath;i=i||s(e.toUrl("ace/worker/worker.js",null,"_"));var u={};t.forEach(function(t){u[t]=s(e.toUrl(t,null,"_").replace(/(\.js)?(\?.*)?$/,""))})}try{this.$worker=new Worker(i)}catch(a){if(!(a instanceof window.DOMException))throw a;var f=this.$workerBlob(i),l=window.URL||window.webkitURL,c=l.createObjectURL(f);this.$worker=new Worker(c),l.revokeObjectURL(c)}this.$worker.postMessage({init:!0,tlns:u,module:n,classname:r}),this.callbackId=1,this.callbacks={},this.$worker.onmessage=this.onMessage};(function(){r.implement(this,s),this.onMessage=function(e){var t=e.data;switch(t.type){case"event":this._signal(t.name,{data:t.data});break;case"call":var n=this.callbacks[t.id];n&&(n(t.data),delete this.callbacks[t.id]);break;case"error":this.reportError(t.data);break;case"log":window.console&&console.log&&console.log.apply(console,t.data)}},this.reportError=function(e){window.console&&console.error&&console.error(e)},this.$normalizePath=function(e){return i.qualifyURL(e)},this.terminate=function(){this._signal("terminate",{}),this.deltaQueue=null,this.$worker.terminate(),this.$worker=null,this.$doc&&this.$doc.off("change",this.changeListener),this.$doc=null},this.send=function(e,t){this.$worker.postMessage({command:e,args:t})},this.call=function(e,t,n){if(n){var r=this.callbackId++;this.callbacks[r]=n,t.push(r)}this.send(e,t)},this.emit=function(e,t){try{this.$worker.postMessage({event:e,data:{data:t.data}})}catch(n){console.error(n.stack)}},this.attachToDocument=function(e){this.$doc&&this.terminate(),this.$doc=e,this.call("setValue",[e.getValue()]),e.on("change",this.changeListener)},this.changeListener=function(e){this.deltaQueue?this.deltaQueue.push(e.data):(this.deltaQueue=[e.data],setTimeout(this.$sendDeltaQueue,0))},this.$sendDeltaQueue=function(){var e=this.deltaQueue;if(!e)return;this.deltaQueue=null,e.length>20&&e.length>this.$doc.getLength()>>1?this.call("setValue",[this.$doc.getValue()]):this.emit("change",{data:e})},this.$workerBlob=function(e){var t="importScripts('"+i.qualifyURL(e)+"');";try{return new Blob([t],{type:"application/javascript"})}catch(n){var r=window.BlobBuilder||window.WebKitBlobBuilder||window.MozBlobBuilder,s=new r;return s.append(t),s.getBlob("application/javascript")}}}).call(u.prototype);var a=function(e,t,n){this.$sendDeltaQueue=this.$sendDeltaQueue.bind(this),this.changeListener=this.changeListener.bind(this),this.callbackId=1,this.callbacks={},this.messageBuffer=[];var r=null,i=!1,u=Object.create(s),a=this;this.$worker={},this.$worker.terminate=function(){},this.$worker.postMessage=function(e){a.messageBuffer.push(e),r&&(i?setTimeout(f):f())},this.setEmitSync=function(e){i=e};var f=function(){var e=a.messageBuffer.shift();e.command?r[e.command].apply(r,e.args):e.event&&u._signal(e.event,e.data)};u.postMessage=function(e){a.onMessage({data:e})},u.callback=function(e,t){this.postMessage({type:"call",id:t,data:e})},u.emit=function(e,t){this.postMessage({type:"event",name:e,data:t})},o.loadModule(["worker",t],function(e){r=new e[n](u);while(a.messageBuffer.length)f()})};a.prototype=u.prototype,t.UIWorkerClient=a,t.WorkerClient=u}),define("ace/placeholder",["require","exports","module","ace/range","ace/lib/event_emitter","ace/lib/oop"],function(e,t,n){"use strict";var r=e("./range").Range,i=e("./lib/event_emitter").EventEmitter,s=e("./lib/oop"),o=function(e,t,n,r,i,s){var o=this;this.length=t,this.session=e,this.doc=e.getDocument(),this.mainClass=i,this.othersClass=s,this.$onUpdate=this.onUpdate.bind(this),this.doc.on("change",this.$onUpdate),this.$others=r,this.$onCursorChange=function(){setTimeout(function(){o.onCursorChange()})},this.$pos=n;var u=e.getUndoManager().$undoStack||e.getUndoManager().$undostack||{length:-1};this.$undoStackDepth=u.length,this.setup(),e.selection.on("changeCursor",this.$onCursorChange)};(function(){s.implement(this,i),this.setup=function(){var e=this,t=this.doc,n=this.session,i=this.$pos;this.selectionBefore=n.selection.toJSON(),n.selection.inMultiSelectMode&&n.selection.toSingleRange(),this.pos=t.createAnchor(i.row,i.column),this.markerId=n.addMarker(new r(i.row,i.column,i.row,i.column+this.length),this.mainClass,null,!1),this.pos.on("change",function(t){n.removeMarker(e.markerId),e.markerId=n.addMarker(new r(t.value.row,t.value.column,t.value.row,t.value.column+e.length),e.mainClass,null,!1)}),this.others=[],this.$others.forEach(function(n){var r=t.createAnchor(n.row,n.column);e.others.push(r)}),n.setUndoSelect(!1)},this.showOtherMarkers=function(){if(this.othersActive)return;var e=this.session,t=this;this.othersActive=!0,this.others.forEach(function(n){n.markerId=e.addMarker(new r(n.row,n.column,n.row,n.column+t.length),t.othersClass,null,!1),n.on("change",function(i){e.removeMarker(n.markerId),n.markerId=e.addMarker(new r(i.value.row,i.value.column,i.value.row,i.value.column+t.length),t.othersClass,null,!1)})})},this.hideOtherMarkers=function(){if(!this.othersActive)return;this.othersActive=!1;for(var e=0;e=this.pos.column&&n.start.column<=this.pos.column+this.length+1){var s=n.start.column-this.pos.column;this.length+=i;if(!this.session.$fromUndo){if(t.action==="insertText")for(var o=this.others.length-1;o>=0;o--){var u=this.others[o],a={row:u.row,column:u.column+s};u.row===n.start.row&&n.start.column=0;o--){var u=this.others[o],a={row:u.row,column:u.column+s};u.row===n.start.row&&n.start.column=this.pos.column&&t.column<=this.pos.column+this.length?(this.showOtherMarkers(),this._emit("cursorEnter",e)):(this.hideOtherMarkers(),this._emit("cursorLeave",e))},this.detach=function(){this.session.removeMarker(this.markerId),this.hideOtherMarkers(),this.doc.removeEventListener("change",this.$onUpdate),this.session.selection.removeEventListener("changeCursor",this.$onCursorChange),this.pos.detach();for(var e=0;e1&&!this.inMultiSelectMode&&(this._signal("multiSelect"),this.inMultiSelectMode=!0,this.session.$undoSelect=!1,this.rangeList.attach(this.session)),t||this.fromOrientedRange(e)},this.toSingleRange=function(e){e=e||this.ranges[0];var t=this.rangeList.removeAll();t.length&&this.$onRemoveRange(t),e&&this.fromOrientedRange(e)},this.substractPoint=function(e){var t=this.rangeList.substractPoint(e);if(t)return this.$onRemoveRange(t),t[0]},this.mergeOverlappingRanges=function(){var e=this.rangeList.merge();e.length?this.$onRemoveRange(e):this.ranges[0]&&this.fromOrientedRange(this.ranges[0])},this.$onAddRange=function(e){this.rangeCount=this.rangeList.ranges.length,this.ranges.unshift(e),this._signal("addRange",{range:e})},this.$onRemoveRange=function(e){this.rangeCount=this.rangeList.ranges.length;if(this.rangeCount==1&&this.inMultiSelectMode){var t=this.rangeList.ranges.pop();e.push(t),this.rangeCount=0}for(var n=e.length;n--;){var r=this.ranges.indexOf(e[n]);this.ranges.splice(r,1)}this._signal("removeRange",{ranges:e}),this.rangeCount===0&&this.inMultiSelectMode&&(this.inMultiSelectMode=!1,this._signal("singleSelect"),this.session.$undoSelect=!0,this.rangeList.detach(this.session)),t=t||this.ranges[0],t&&!t.isEqual(this.getRange())&&this.fromOrientedRange(t)},this.$initRangeList=function(){if(this.rangeList)return;this.rangeList=new r,this.ranges=[],this.rangeCount=0},this.getAllRanges=function(){return this.rangeCount?this.rangeList.ranges.concat():[this.getRange()]},this.splitIntoLines=function(){if(this.rangeCount>1){var e=this.rangeList.ranges,t=e[e.length-1],n=i.fromPoints(e[0].start,t.end);this.toSingleRange(),this.setSelectionRange(n,t.cursor==t.start)}else{var n=this.getRange(),r=this.isBackwards(),s=n.start.row,o=n.end.row;if(s==o){if(r)var u=n.end,a=n.start;else var u=n.start,a=n.end;this.addRange(i.fromPoints(a,a)),this.addRange(i.fromPoints(u,u));return}var f=[],l=this.getLineRange(s,!0);l.start.column=n.start.column,f.push(l);for(var c=s+1;c1){var e=this.rangeList.ranges,t=e[e.length-1],n=i.fromPoints(e[0].start,t.end);this.toSingleRange(),this.setSelectionRange(n,t.cursor==t.start)}else{var r=this.session.documentToScreenPosition(this.selectionLead),s=this.session.documentToScreenPosition(this.selectionAnchor),o=this.rectangularRangeBlock(r,s);o.forEach(this.addRange,this)}},this.rectangularRangeBlock=function(e,t,n){var r=[],s=e.column0)d--;if(d>0){var m=0;while(r[m].isEmpty())m++}for(var g=d;g>=m;g--)r[g].isEmpty()&&r.splice(g,1)}return r}}.call(s.prototype);var d=e("./editor").Editor;(function(){this.updateSelectionMarkers=function(){this.renderer.updateCursor(),this.renderer.updateBackMarkers()},this.addSelectionMarker=function(e){e.cursor||(e.cursor=e.end);var t=this.getSelectionStyle();return e.marker=this.session.addMarker(e,"ace_selection",t),this.session.$selectionMarkers.push(e),this.session.selectionMarkerCount=this.session.$selectionMarkers.length,e},this.removeSelectionMarker=function(e){if(!e.marker)return;this.session.removeMarker(e.marker);var t=this.session.$selectionMarkers.indexOf(e);t!=-1&&this.session.$selectionMarkers.splice(t,1),this.session.selectionMarkerCount=this.session.$selectionMarkers.length},this.removeSelectionMarkers=function(e){var t=this.session.$selectionMarkers;for(var n=e.length;n--;){var r=e[n];if(!r.marker)continue;this.session.removeMarker(r.marker);var i=t.indexOf(r);i!=-1&&t.splice(i,1)}this.session.selectionMarkerCount=t.length},this.$onAddRange=function(e){this.addSelectionMarker(e.range),this.renderer.updateCursor(),this.renderer.updateBackMarkers()},this.$onRemoveRange=function(e){this.removeSelectionMarkers(e.ranges),this.renderer.updateCursor(),this.renderer.updateBackMarkers()},this.$onMultiSelect=function(e){if(this.inMultiSelectMode)return;this.inMultiSelectMode=!0,this.setStyle("ace_multiselect"),this.keyBinding.addKeyboardHandler(f.keyboardHandler),this.commands.setDefaultHandler("exec",this.$onMultiSelectExec),this.renderer.updateCursor(),this.renderer.updateBackMarkers()},this.$onSingleSelect=function(e){if(this.session.multiSelect.inVirtualMode)return;this.inMultiSelectMode=!1,this.unsetStyle("ace_multiselect"),this.keyBinding.removeKeyboardHandler(f.keyboardHandler),this.commands.removeDefaultHandler("exec",this.$onMultiSelectExec),this.renderer.updateCursor(),this.renderer.updateBackMarkers(),this._emit("changeSelection")},this.$onMultiSelectExec=function(e){var t=e.command,n=e.editor;if(!n.multiSelect)return;if(!t.multiSelectAction){var r=t.exec(n,e.args||{});n.multiSelect.addRange(n.multiSelect.toOrientedRange()),n.multiSelect.mergeOverlappingRanges()}else t.multiSelectAction=="forEach"?r=n.forEachSelection(t,e.args):t.multiSelectAction=="forEachLine"?r=n.forEachSelection(t,e.args,!0):t.multiSelectAction=="single"?(n.exitMultiSelectMode(),r=t.exec(n,e.args||{})):r=t.multiSelectAction(n,e.args||{});return r},this.forEachSelection=function(e,t,n){if(this.inVirtualSelectionMode)return;var r=n&&n.keepOrder,i=n==1||n&&n.$byLines,o=this.session,u=this.selection,a=u.rangeList,f=(r?u:a).ranges,l;if(!f.length)return e.exec?e.exec(this,t||{}):e(this,t||{});var c=u._eventRegistry;u._eventRegistry={};var h=new s(o);this.inVirtualSelectionMode=!0;for(var p=f.length;p--;){if(i)while(p>0&&f[p].start.row==f[p-1].end.row)p--;h.fromOrientedRange(f[p]),h.index=p,this.selection=o.selection=h;var d=e.exec?e.exec(this,t||{}):e(this,t||{});!l&&d!==undefined&&(l=d),h.toOrientedRange(f[p])}h.detach(),this.selection=o.selection=u,this.inVirtualSelectionMode=!1,u._eventRegistry=c,u.mergeOverlappingRanges();var v=this.renderer.$scrollAnimation;return this.onCursorChange(),this.onSelectionChange(),v&&v.from==v.to&&this.renderer.animateScrolling(v.from),l},this.exitMultiSelectMode=function(){if(!this.inMultiSelectMode||this.inVirtualSelectionMode)return;this.multiSelect.toSingleRange()},this.getSelectedText=function(){var e="";if(this.inMultiSelectMode&&!this.inVirtualSelectionMode){var t=this.multiSelect.rangeList.ranges,n=[];for(var r=0;r0);u<0&&(u=0),f>=c&&(f=c-1)}var p=this.session.doc.removeLines(u,f);p=this.$reAlignText(p,l),this.session.doc.insert({row:u,column:0},p.join("\n")+"\n"),l||(o.start.column=0,o.end.column=p[p.length-1].length),this.selection.setRange(o)}else{s.forEach(function(e){t.substractPoint(e.cursor)});var d=0,v=Infinity,m=n.map(function(t){var n=t.cursor,r=e.getLine(n.row),i=r.substr(n.column).search(/\S/g);return i==-1&&(i=0),n.column>d&&(d=n.column),io?e.insert(r,a.stringRepeat(" ",s-o)):e.remove(new i(r.row,r.column,r.row,r.column-s+o)),t.start.column=t.end.column=d,t.start.row=t.end.row=r.row,t.cursor=t.end}),t.fromOrientedRange(n[0]),this.renderer.updateCursor(),this.renderer.updateBackMarkers()}},this.$reAlignText=function(e,t){function u(e){return a.stringRepeat(" ",e)}function f(e){return e[2]?u(i)+e[2]+u(s-e[2].length+o)+e[4].replace(/^([=:])\s+/,"$1 "):e[0]}function l(e){return e[2]?u(i+s-e[2].length)+e[2]+u(o," ")+e[4].replace(/^([=:])\s+/,"$1 "):e[0]}function c(e){return e[2]?u(i)+e[2]+u(o)+e[4].replace(/^([=:])\s+/,"$1 "):e[0]}var n=!0,r=!0,i,s,o;return e.map(function(e){var t=e.match(/(\s*)(.*?)(\s*)([=:].*)/);return t?i==null?(i=t[1].length,s=t[2].length,o=t[3].length,t):(i+s+o!=t[1].length+t[2].length+t[3].length&&(r=!1),i!=t[1].length&&(n=!1),i>t[1].length&&(i=t[1].length),st[3].length&&(o=t[3].length),t):[e]}).map(t?f:n?r?l:f:c)}}).call(d.prototype),t.onSessionChange=function(e){var t=e.session;t&&!t.multiSelect&&(t.$selectionMarkers=[],t.selection.$initRangeList(),t.multiSelect=t.selection),this.multiSelect=t&&t.multiSelect;var n=e.oldSession;n&&(n.multiSelect.off("addRange",this.$onAddRange),n.multiSelect.off("removeRange",this.$onRemoveRange),n.multiSelect.off("multiSelect",this.$onMultiSelect),n.multiSelect.off("singleSelect",this.$onSingleSelect),n.multiSelect.lead.off("change",this.$checkMultiselectChange),n.multiSelect.anchor.off("change",this.$checkMultiselectChange)),t&&(t.multiSelect.on("addRange",this.$onAddRange),t.multiSelect.on("removeRange",this.$onRemoveRange),t.multiSelect.on("multiSelect",this.$onMultiSelect),t.multiSelect.on("singleSelect",this.$onSingleSelect),t.multiSelect.lead.on("change",this.$checkMultiselectChange),t.multiSelect.anchor.on("change",this.$checkMultiselectChange)),t&&this.inMultiSelectMode!=t.selection.inMultiSelectMode&&(t.selection.inMultiSelectMode?this.$onMultiSelect():this.$onSingleSelect())},t.MultiSelect=m,e("./config").defineOptions(d.prototype,"editor",{enableMultiselect:{set:function(e){m(this),e?(this.on("changeSession",this.$multiselectOnSessionChange),this.on("mousedown",o)):(this.off("changeSession",this.$multiselectOnSessionChange),this.off("mousedown",o))},value:!0},enableBlockSelect:{set:function(e){this.$blockSelectEnabled=e},value:!0}})}),define("ace/mode/folding/fold_mode",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../../range").Range,i=t.FoldMode=function(){};(function(){this.foldingStartMarker=null,this.foldingStopMarker=null,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);return this.foldingStartMarker.test(r)?"start":t=="markbeginend"&&this.foldingStopMarker&&this.foldingStopMarker.test(r)?"end":""},this.getFoldWidgetRange=function(e,t,n){return null},this.indentationBlock=function(e,t,n){var i=/\S/,s=e.getLine(t),o=s.search(i);if(o==-1)return;var u=n||s.length,a=e.getLength(),f=t,l=t;while(++tf){var h=e.getLine(l).length;return new r(f,u,l,h)}},this.openingBracketBlock=function(e,t,n,i,s){var o={row:n,column:i+1},u=e.$findClosingBracket(t,o,s);if(!u)return;var a=e.foldWidgets[u.row];return a==null&&(a=e.getFoldWidget(u.row)),a=="start"&&u.row>o.row&&(u.row--,u.column=e.getLine(u.row).length),r.fromPoints(o,u)},this.closingBracketBlock=function(e,t,n,i,s){var o={row:n,column:i},u=e.$findOpeningBracket(t,o);if(!u)return;return u.column++,o.column--,r.fromPoints(u,o)}}).call(i.prototype)}),define("ace/theme/textmate",["require","exports","module","ace/lib/dom"],function(e,t,n){"use strict";t.isDark=!1,t.cssClass="ace-tm",t.cssText='.ace-tm .ace_gutter {background: #f0f0f0;color: #333;}.ace-tm .ace_print-margin {width: 1px;background: #e8e8e8;}.ace-tm .ace_fold {background-color: #6B72E6;}.ace-tm {background-color: #FFFFFF;color: black;}.ace-tm .ace_cursor {color: black;}.ace-tm .ace_invisible {color: rgb(191, 191, 191);}.ace-tm .ace_storage,.ace-tm .ace_keyword {color: blue;}.ace-tm .ace_constant {color: rgb(197, 6, 11);}.ace-tm .ace_constant.ace_buildin {color: rgb(88, 72, 246);}.ace-tm .ace_constant.ace_language {color: rgb(88, 92, 246);}.ace-tm .ace_constant.ace_library {color: rgb(6, 150, 14);}.ace-tm .ace_invalid {background-color: rgba(255, 0, 0, 0.1);color: red;}.ace-tm .ace_support.ace_function {color: rgb(60, 76, 114);}.ace-tm .ace_support.ace_constant {color: rgb(6, 150, 14);}.ace-tm .ace_support.ace_type,.ace-tm .ace_support.ace_class {color: rgb(109, 121, 222);}.ace-tm .ace_keyword.ace_operator {color: rgb(104, 118, 135);}.ace-tm .ace_string {color: rgb(3, 106, 7);}.ace-tm .ace_comment {color: rgb(76, 136, 107);}.ace-tm .ace_comment.ace_doc {color: rgb(0, 102, 255);}.ace-tm .ace_comment.ace_doc.ace_tag {color: rgb(128, 159, 191);}.ace-tm .ace_constant.ace_numeric {color: rgb(0, 0, 205);}.ace-tm .ace_variable {color: rgb(49, 132, 149);}.ace-tm .ace_xml-pe {color: rgb(104, 104, 91);}.ace-tm .ace_entity.ace_name.ace_function {color: #0000A2;}.ace-tm .ace_heading {color: rgb(12, 7, 255);}.ace-tm .ace_list {color:rgb(185, 6, 144);}.ace-tm .ace_meta.ace_tag {color:rgb(0, 22, 142);}.ace-tm .ace_string.ace_regex {color: rgb(255, 0, 0)}.ace-tm .ace_marker-layer .ace_selection {background: rgb(181, 213, 255);}.ace-tm.ace_multiselect .ace_selection.ace_start {box-shadow: 0 0 3px 0px white;border-radius: 2px;}.ace-tm .ace_marker-layer .ace_step {background: rgb(252, 255, 0);}.ace-tm .ace_marker-layer .ace_stack {background: rgb(164, 229, 101);}.ace-tm .ace_marker-layer .ace_bracket {margin: -1px 0 0 -1px;border: 1px solid rgb(192, 192, 192);}.ace-tm .ace_marker-layer .ace_active-line {background: rgba(0, 0, 0, 0.07);}.ace-tm .ace_gutter-active-line {background-color : #dcdcdc;}.ace-tm .ace_marker-layer .ace_selected-word {background: rgb(250, 250, 255);border: 1px solid rgb(200, 200, 250);}.ace-tm .ace_indent-guide {background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==") right repeat-y;}';var r=e("../lib/dom");r.importCssString(t.cssText,t.cssClass)}),define("ace/line_widgets",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/range"],function(e,t,n){"use strict";function o(e){this.session=e,this.session.widgetManager=this,this.session.getRowLength=this.getRowLength,this.session.$getWidgetScreenLength=this.$getWidgetScreenLength,this.updateOnChange=this.updateOnChange.bind(this),this.renderWidgets=this.renderWidgets.bind(this),this.measureWidgets=this.measureWidgets.bind(this),this.session._changedWidgets=[],this.$onChangeEditor=this.$onChangeEditor.bind(this),this.session.on("change",this.updateOnChange),this.session.on("changeEditor",this.$onChangeEditor)}var r=e("./lib/oop"),i=e("./lib/dom"),s=e("./range").Range;(function(){this.getRowLength=function(e){var t;return this.lineWidgets?t=this.lineWidgets[e]&&this.lineWidgets[e].rowCount||0:t=0,!this.$useWrapMode||!this.$wrapData[e]?1+t:this.$wrapData[e].length+1+t},this.$getWidgetScreenLength=function(){var e=0;return this.lineWidgets.forEach(function(t){t&&t.rowCount&&(e+=t.rowCount)}),e},this.$onChangeEditor=function(e){this.attach(e.editor)},this.attach=function(e){e&&e.widgetManager&&e.widgetManager!=this&&e.widgetManager.detach();if(this.editor==e)return;this.detach(),this.editor=e,e&&(e.widgetManager=this,e.renderer.on("beforeRender",this.measureWidgets),e.renderer.on("afterRender",this.renderWidgets))},this.detach=function(e){var t=this.editor;if(!t)return;this.editor=null,t.widgetManager=null,t.renderer.off("beforeRender",this.measureWidgets),t.renderer.off("afterRender",this.renderWidgets);var n=this.session.lineWidgets;n&&n.forEach(function(e){e&&e.el&&e.el.parentNode&&(e._inDocument=!1,e.el.parentNode.removeChild(e.el))})},this.updateOnChange=function(e){var t=this.session.lineWidgets;if(!t)return;var n=e.data,r=n.range,i=r.start.row,s=r.end.row-i;if(s!==0)if(n.action=="removeText"||n.action=="removeLines"){var o=t.splice(i+1,s);o.forEach(function(e){e&&this.removeLineWidget(e)},this),this.$updateRows()}else{var u=new Array(s);u.unshift(i,0),t.splice.apply(t,u),this.$updateRows()}},this.$updateRows=function(){var e=this.session.lineWidgets;if(!e)return;var t=!0;e.forEach(function(e,n){e&&(t=!1,e.row=n)}),t&&(this.session.lineWidgets=null)},this.addLineWidget=function(e){this.session.lineWidgets||(this.session.lineWidgets=new Array(this.session.getLength())),this.session.lineWidgets[e.row]=e;var t=this.editor.renderer;return e.html&&!e.el&&(e.el=i.createElement("div"),e.el.innerHTML=e.html),e.el&&(i.addCssClass(e.el,"ace_lineWidgetContainer"),e.el.style.position="absolute",e.el.style.zIndex=5,t.container.appendChild(e.el),e._inDocument=!0),e.coverGutter||(e.el.style.zIndex=3),e.pixelHeight||(e.pixelHeight=e.el.offsetHeight),e.rowCount==null&&(e.rowCount=e.pixelHeight/t.layerConfig.lineHeight),this.session._emit("changeFold",{data:{start:{row:e.row}}}),this.$updateRows(),this.renderWidgets(null,t),e},this.removeLineWidget=function(e){e._inDocument=!1,e.el&&e.el.parentNode&&e.el.parentNode.removeChild(e.el);if(e.editor&&e.editor.destroy)try{e.editor.destroy()}catch(t){}this.session.lineWidgets&&(this.session.lineWidgets[e.row]=undefined),this.session._emit("changeFold",{data:{start:{row:e.row}}}),this.$updateRows()},this.onWidgetChanged=function(e){this.session._changedWidgets.push(e),this.editor&&this.editor.renderer.updateFull()},this.measureWidgets=function(e,t){var n=this.session._changedWidgets,r=t.layerConfig;if(!n||!n.length)return;var i=Infinity;for(var s=0;s0&&!r[i])i--;this.firstRow=n.firstRow,this.lastRow=n.lastRow,t.$cursorLayer.config=n;for(var o=i;o<=s;o++){var u=r[o];if(!u||!u.el)continue;u._inDocument||(u._inDocument=!0,t.container.appendChild(u.el));var a=t.$cursorLayer.getPixelPosition({row:o,column:0},!0).top;u.coverLine||(a+=n.lineHeight*this.session.getRowLineCount(u.row)),u.el.style.top=a-n.offset+"px";var f=u.coverGutter?0:t.gutterWidth;u.fixedWidth||(f-=t.scrollLeft),u.el.style.left=f+"px",u.fixedWidth?u.el.style.right=t.scrollBar.getWidth()+"px":u.el.style.right=""}}}).call(o.prototype),t.LineWidgets=o}),define("ace/ext/error_marker",["require","exports","module","ace/line_widgets","ace/lib/dom","ace/range"],function(e,t,n){"use strict";function o(e,t,n){var r=0,i=e.length-1;while(r<=i){var s=r+i>>1,o=n(t,e[s]);if(o>0)r=s+1;else{if(!(o<0))return s;i=s-1}}return-(r+1)}function u(e,t,n){var r=e.getAnnotations().sort(s.comparePoints);if(!r.length)return;var i=o(r,{row:t,column:-1},s.comparePoints);i<0&&(i=-i-1),i>=r.length?i=n>0?0:r.length-1:i===0&&n<0&&(i=r.length-1);var u=r[i];if(!u||!n)return;if(u.row===t){do u=r[i+=n];while(u&&u.row===t);if(!u)return r.slice()}var a=[];t=u.row;do a[n<0?"unshift":"push"](u),u=r[i+=n];while(u&&u.row==t);return a.length&&a}var r=e("../line_widgets").LineWidgets,i=e("../lib/dom"),s=e("../range").Range;t.showErrorMarker=function(e,t){var n=e.session;n.widgetManager||(n.widgetManager=new r(n),n.widgetManager.attach(e));var s=e.getCursorPosition(),o=s.row,a=n.lineWidgets&&n.lineWidgets[o];a?a.destroy():o-=t;var f=u(n,o,t),l;if(f){var c=f[0];s.column=(c.pos&&typeof c.column!="number"?c.pos.sc:c.column)||0,s.row=c.row,l=e.renderer.$gutterLayer.$annotations[s.row]}else{if(a)return;l={text:["Looks good!"],className:"ace_ok"}}e.session.unfold(s.row),e.selection.moveToPosition(s);var h={row:s.row,fixedWidth:!0,coverGutter:!0,el:i.createElement("div")},p=h.el.appendChild(i.createElement("div")),d=h.el.appendChild(i.createElement("div"));d.className="error_widget_arrow "+l.className;var v=e.renderer.$cursorLayer.getPixelPosition(s).left;d.style.left=v+e.renderer.gutterWidth-5+"px",h.el.className="error_widget_wrapper",p.className="error_widget "+l.className,p.innerHTML=l.text.join("
"),p.appendChild(i.createElement("div"));var m=function(e,t,n){if(t===0&&(n==="esc"||n==="return"))return h.destroy(),{command:"null"}};h.destroy=function(){if(e.$mouseHandler.isMousePressed)return;e.keyBinding.removeKeyboardHandler(m),n.widgetManager.removeLineWidget(h),e.off("changeSelection",h.destroy),e.off("changeSession",h.destroy),e.off("mouseup",h.destroy),e.off("change",h.destroy)},e.keyBinding.addKeyboardHandler(m),e.on("changeSelection",h.destroy),e.on("changeSession",h.destroy),e.on("mouseup",h.destroy),e.on("change",h.destroy),e.session.widgetManager.addLineWidget(h),h.el.onmousedown=e.focus.bind(e),e.renderer.scrollCursorIntoView(null,.5,{bottom:h.el.offsetHeight})},i.importCssString(" .error_widget_wrapper { background: inherit; color: inherit; border:none } .error_widget { border-top: solid 2px; border-bottom: solid 2px; margin: 5px 0; padding: 10px 40px; white-space: pre-wrap; } .error_widget.ace_error, .error_widget_arrow.ace_error{ border-color: #ff5a5a } .error_widget.ace_warning, .error_widget_arrow.ace_warning{ border-color: #F1D817 } .error_widget.ace_info, .error_widget_arrow.ace_info{ border-color: #5a5a5a } .error_widget.ace_ok, .error_widget_arrow.ace_ok{ border-color: #5aaa5a } .error_widget_arrow { position: absolute; border: solid 5px; border-top-color: transparent!important; border-right-color: transparent!important; border-left-color: transparent!important; top: -5px; }","")}),define("ace/ace",["require","exports","module","ace/lib/fixoldbrowsers","ace/lib/dom","ace/lib/event","ace/editor","ace/edit_session","ace/undomanager","ace/virtual_renderer","ace/worker/worker_client","ace/keyboard/hash_handler","ace/placeholder","ace/multi_select","ace/mode/folding/fold_mode","ace/theme/textmate","ace/ext/error_marker","ace/config"],function(e,t,n){"use strict";e("./lib/fixoldbrowsers");var r=e("./lib/dom"),i=e("./lib/event"),s=e("./editor").Editor,o=e("./edit_session").EditSession,u=e("./undomanager").UndoManager,a=e("./virtual_renderer").VirtualRenderer;e("./worker/worker_client"),e("./keyboard/hash_handler"),e("./placeholder"),e("./multi_select"),e("./mode/folding/fold_mode"),e("./theme/textmate"),e("./ext/error_marker"),t.config=e("./config"),t.require=e,t.edit=function(e){if(typeof e=="string"){var n=e;e=document.getElementById(n);if(!e)throw new Error("ace.edit can't find div #"+n)}if(e&&e.env&&e.env.editor instanceof s)return e.env.editor;var o="";if(e&&/input|textarea/i.test(e.tagName)){var u=e;o=u.value,e=r.createElement("pre"),u.parentNode.replaceChild(e,u)}else o=r.getInnerText(e),e.innerHTML="";var f=t.createEditSession(o),l=new s(new a(e));l.setSession(f);var c={document:f,editor:l,onResize:l.resize.bind(l,null)};return u&&(c.textarea=u),i.addListener(window,"resize",c.onResize),l.on("destroy",function(){i.removeListener(window,"resize",c.onResize),c.editor.container.env=null}),l.container.env=l.env=c,l},t.createEditSession=function(e,t){var n=new o(e,t);return n.setUndoManager(new u),n},t.EditSession=o,t.UndoManager=u}); - (function() { - window.require(["ace/ace"], function(a) { - a && a.config.init(true); - if (!window.ace) - window.ace = a; - for (var key in a) if (a.hasOwnProperty(key)) - window.ace[key] = a[key]; - }); - })(); - \ No newline at end of file diff --git a/software/api/codebase/third-party/ace/src-min/mode-css.js b/software/api/codebase/third-party/ace/src-min/mode-css.js deleted file mode 100644 index 1ddd0bbfe..000000000 --- a/software/api/codebase/third-party/ace/src-min/mode-css.js +++ /dev/null @@ -1 +0,0 @@ -define("ace/mode/css_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./text_highlight_rules").TextHighlightRules,o=t.supportType="animation-fill-mode|alignment-adjust|alignment-baseline|animation-delay|animation-direction|animation-duration|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|animation|appearance|azimuth|backface-visibility|background-attachment|background-break|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|background|baseline-shift|binding|bleed|bookmark-label|bookmark-level|bookmark-state|bookmark-target|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|border|bottom|box-align|box-decoration-break|box-direction|box-flex-group|box-flex|box-lines|box-ordinal-group|box-orient|box-pack|box-shadow|box-sizing|break-after|break-before|break-inside|caption-side|clear|clip|color-profile|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|crop|cue-after|cue-before|cue|cursor|direction|display|dominant-baseline|drop-initial-after-adjust|drop-initial-after-align|drop-initial-before-adjust|drop-initial-before-align|drop-initial-size|drop-initial-value|elevation|empty-cells|fit|fit-position|float-offset|float|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|font|grid-columns|grid-rows|hanging-punctuation|height|hyphenate-after|hyphenate-before|hyphenate-character|hyphenate-lines|hyphenate-resource|hyphens|icon|image-orientation|image-rendering|image-resolution|inline-box-align|left|letter-spacing|line-height|line-stacking-ruby|line-stacking-shift|line-stacking-strategy|line-stacking|list-style-image|list-style-position|list-style-type|list-style|margin-bottom|margin-left|margin-right|margin-top|margin|mark-after|mark-before|mark|marks|marquee-direction|marquee-play-count|marquee-speed|marquee-style|max-height|max-width|min-height|min-width|move-to|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|orphans|outline-color|outline-offset|outline-style|outline-width|outline|overflow-style|overflow-x|overflow-y|overflow|padding-bottom|padding-left|padding-right|padding-top|padding|page-break-after|page-break-before|page-break-inside|page-policy|page|pause-after|pause-before|pause|perspective-origin|perspective|phonemes|pitch-range|pitch|play-during|pointer-events|position|presentation-level|punctuation-trim|quotes|rendering-intent|resize|rest-after|rest-before|rest|richness|right|rotation-point|rotation|ruby-align|ruby-overhang|ruby-position|ruby-span|size|speak-header|speak-numeral|speak-punctuation|speak|speech-rate|stress|string-set|table-layout|target-name|target-new|target-position|target|text-align-last|text-align|text-decoration|text-emphasis|text-height|text-indent|text-justify|text-outline|text-shadow|text-transform|text-wrap|top|transform-origin|transform-style|transform|transition-delay|transition-duration|transition-property|transition-timing-function|transition|unicode-bidi|vertical-align|visibility|voice-balance|voice-duration|voice-family|voice-pitch-range|voice-pitch|voice-rate|voice-stress|voice-volume|volume|white-space-collapse|white-space|widows|width|word-break|word-spacing|word-wrap|z-index",u=t.supportFunction="rgb|rgba|url|attr|counter|counters",a=t.supportConstant="absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero",f=t.supportConstantColor="aqua|black|blue|fuchsia|gray|green|lime|maroon|navy|olive|orange|purple|red|silver|teal|white|yellow",l=t.supportConstantFonts="arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace",c=t.numRe="\\-?(?:(?:[0-9]+)|(?:[0-9]*\\.[0-9]+))",h=t.pseudoElements="(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b",p=t.pseudoClasses="(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b",d=function(){var e=this.createKeywordMapper({"support.function":u,"support.constant":a,"support.type":o,"support.constant.color":f,"support.constant.fonts":l},"text",!0);this.$rules={start:[{token:"comment",regex:"\\/\\*",push:"comment"},{token:"paren.lparen",regex:"\\{",push:"ruleset"},{token:"string",regex:"@.*?{",push:"media"},{token:"keyword",regex:"#[a-z0-9-_]+"},{token:"variable",regex:"\\.[a-z0-9-_]+"},{token:"string",regex:":[a-z0-9-_]+"},{token:"constant",regex:"[a-z0-9-_]+"},{caseInsensitive:!0}],media:[{token:"comment",regex:"\\/\\*",push:"comment"},{token:"paren.lparen",regex:"\\{",push:"ruleset"},{token:"string",regex:"\\}",next:"pop"},{token:"keyword",regex:"#[a-z0-9-_]+"},{token:"variable",regex:"\\.[a-z0-9-_]+"},{token:"string",regex:":[a-z0-9-_]+"},{token:"constant",regex:"[a-z0-9-_]+"},{caseInsensitive:!0}],comment:[{token:"comment",regex:"\\*\\/",next:"pop"},{defaultToken:"comment"}],ruleset:[{token:"paren.rparen",regex:"\\}",next:"pop"},{token:"comment",regex:"\\/\\*",push:"comment"},{token:"string",regex:'["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'},{token:"string",regex:"['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"},{token:["constant.numeric","keyword"],regex:"("+c+")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vm|vw|%)"},{token:"constant.numeric",regex:c},{token:"constant.numeric",regex:"#[a-f0-9]{6}"},{token:"constant.numeric",regex:"#[a-f0-9]{3}"},{token:["punctuation","entity.other.attribute-name.pseudo-element.css"],regex:h},{token:["punctuation","entity.other.attribute-name.pseudo-class.css"],regex:p},{token:["support.function","string","support.function"],regex:"(url\\()(.*)(\\))"},{token:e,regex:"\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*"},{caseInsensitive:!0}]},this.normalizeRules()};r.inherits(d,s),t.CssHighlightRules=d}),define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../range").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\s*\})/);if(!i)return 0;var s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 0;var u=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,s-1),u)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(i.prototype),t.MatchingBraceOutdent=i}),define("ace/mode/behaviour/cstyle",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("../../token_iterator").TokenIterator,o=e("../../lib/lang"),u=["text","paren.rparen","punctuation.operator"],a=["text","paren.rparen","punctuation.operator","comment"],f,l={},c=function(e){var t=-1;e.multiSelect&&(t=e.selection.index,l.rangeCount!=e.multiSelect.rangeCount&&(l={rangeCount:e.multiSelect.rangeCount}));if(l[t])return f=l[t];f=l[t]={autoInsertedBrackets:0,autoInsertedRow:-1,autoInsertedLineEnd:"",maybeInsertedBrackets:0,maybeInsertedRow:-1,maybeInsertedLineStart:"",maybeInsertedLineEnd:""}},h=function(e,t,n,r){var i=e.end.row-e.start.row;return{text:n+t+r,selection:[0,e.start.column+1,i,e.end.column+(i?0:1)]}},p=function(){this.add("braces","insertion",function(e,t,n,r,i){var s=n.getCursorPosition(),u=r.doc.getLine(s.row);if(i=="{"){c(n);var a=n.getSelectionRange(),l=r.doc.getTextRange(a);if(l!==""&&l!=="{"&&n.getWrapBehavioursEnabled())return h(a,l,"{","}");if(p.isSaneInsertion(n,r))return/[\]\}\)]/.test(u[s.column])||n.inMultiSelectMode?(p.recordAutoInsert(n,r,"}"),{text:"{}",selection:[1,1]}):(p.recordMaybeInsert(n,r,"{"),{text:"{",selection:[1,1]})}else if(i=="}"){c(n);var d=u.substring(s.column,s.column+1);if(d=="}"){var v=r.$findOpeningBracket("}",{column:s.column+1,row:s.row});if(v!==null&&p.isAutoInsertedClosing(s,u,i))return p.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}else{if(i=="\n"||i=="\r\n"){c(n);var m="";p.isMaybeInsertedClosing(s,u)&&(m=o.stringRepeat("}",f.maybeInsertedBrackets),p.clearMaybeInsertedClosing());var d=u.substring(s.column,s.column+1);if(d==="}"){var g=r.findMatchingBracket({row:s.row,column:s.column+1},"}");if(!g)return null;var y=this.$getIndent(r.getLine(g.row))}else{if(!m){p.clearMaybeInsertedClosing();return}var y=this.$getIndent(u)}var b=y+r.getTabString();return{text:"\n"+b+"\n"+y+m,selection:[1,b.length,1,b.length]}}p.clearMaybeInsertedClosing()}}),this.add("braces","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="{"){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.end.column,i.end.column+1);if(u=="}")return i.end.column++,i;f.maybeInsertedBrackets--}}),this.add("parens","insertion",function(e,t,n,r,i){if(i=="("){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return h(s,o,"(",")");if(p.isSaneInsertion(n,r))return p.recordAutoInsert(n,r,")"),{text:"()",selection:[1,1]}}else if(i==")"){c(n);var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f==")"){var l=r.$findOpeningBracket(")",{column:u.column+1,row:u.row});if(l!==null&&p.isAutoInsertedClosing(u,a,i))return p.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("parens","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="("){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==")")return i.end.column++,i}}),this.add("brackets","insertion",function(e,t,n,r,i){if(i=="["){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return h(s,o,"[","]");if(p.isSaneInsertion(n,r))return p.recordAutoInsert(n,r,"]"),{text:"[]",selection:[1,1]}}else if(i=="]"){c(n);var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f=="]"){var l=r.$findOpeningBracket("]",{column:u.column+1,row:u.row});if(l!==null&&p.isAutoInsertedClosing(u,a,i))return p.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("brackets","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="["){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u=="]")return i.end.column++,i}}),this.add("string_dquotes","insertion",function(e,t,n,r,i){if(i=='"'||i=="'"){c(n);var s=i,o=n.getSelectionRange(),u=r.doc.getTextRange(o);if(u!==""&&u!=="'"&&u!='"'&&n.getWrapBehavioursEnabled())return h(o,u,s,s);if(!u){var a=n.getCursorPosition(),f=r.doc.getLine(a.row),l=f.substring(a.column-1,a.column),p=f.substring(a.column,a.column+1),d=r.getTokenAt(a.row,a.column),v=r.getTokenAt(a.row,a.column+1);if(l=="\\"&&d&&/escape/.test(d.type))return null;var m=d&&/string/.test(d.type),g=!v||/string/.test(v.type),y;if(p==s)y=m!==g;else{if(m&&!g)return null;if(m&&g)return null;var b=r.$mode.tokenRe;b.lastIndex=0;var w=b.test(l);b.lastIndex=0;var E=b.test(l);if(w||E)return null;if(p&&!/[\s;,.})\]\\]/.test(p))return null;y=!0}return{text:y?s+s:"",selection:[1,1]}}}}),this.add("string_dquotes","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&(s=='"'||s=="'")){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==s)return i.end.column++,i}})};p.isSaneInsertion=function(e,t){var n=e.getCursorPosition(),r=new s(t,n.row,n.column);if(!this.$matchTokenType(r.getCurrentToken()||"text",u)){var i=new s(t,n.row,n.column+1);if(!this.$matchTokenType(i.getCurrentToken()||"text",u))return!1}return r.stepForward(),r.getCurrentTokenRow()!==n.row||this.$matchTokenType(r.getCurrentToken()||"text",a)},p.$matchTokenType=function(e,t){return t.indexOf(e.type||e)>-1},p.recordAutoInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isAutoInsertedClosing(r,i,f.autoInsertedLineEnd[0])||(f.autoInsertedBrackets=0),f.autoInsertedRow=r.row,f.autoInsertedLineEnd=n+i.substr(r.column),f.autoInsertedBrackets++},p.recordMaybeInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isMaybeInsertedClosing(r,i)||(f.maybeInsertedBrackets=0),f.maybeInsertedRow=r.row,f.maybeInsertedLineStart=i.substr(0,r.column)+n,f.maybeInsertedLineEnd=i.substr(r.column),f.maybeInsertedBrackets++},p.isAutoInsertedClosing=function(e,t,n){return f.autoInsertedBrackets>0&&e.row===f.autoInsertedRow&&n===f.autoInsertedLineEnd[0]&&t.substr(e.column)===f.autoInsertedLineEnd},p.isMaybeInsertedClosing=function(e,t){return f.maybeInsertedBrackets>0&&e.row===f.maybeInsertedRow&&t.substr(e.column)===f.maybeInsertedLineEnd&&t.substr(0,e.column)==f.maybeInsertedLineStart},p.popAutoInsertedClosing=function(){f.autoInsertedLineEnd=f.autoInsertedLineEnd.substr(1),f.autoInsertedBrackets--},p.clearMaybeInsertedClosing=function(){f&&(f.maybeInsertedBrackets=0,f.maybeInsertedRow=-1)},r.inherits(p,i),t.CstyleBehaviour=p}),define("ace/mode/behaviour/css",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/mode/behaviour/cstyle","ace/token_iterator"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("./cstyle").CstyleBehaviour,o=e("../../token_iterator").TokenIterator,u=function(){this.inherit(s),this.add("colon","insertion",function(e,t,n,r,i){if(i===":"){var s=n.getCursorPosition(),u=new o(r,s.row,s.column),a=u.getCurrentToken();a&&a.value.match(/\s+/)&&(a=u.stepBackward());if(a&&a.type==="support.type"){var f=r.doc.getLine(s.row),l=f.substring(s.column,s.column+1);if(l===":")return{text:"",selection:[1,1]};if(!f.substring(s.column).match(/^\s*;/))return{text:":;",selection:[1,1]}}}}),this.add("colon","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s===":"){var u=n.getCursorPosition(),a=new o(r,u.row,u.column),f=a.getCurrentToken();f&&f.value.match(/\s+/)&&(f=a.stepBackward());if(f&&f.type==="support.type"){var l=r.doc.getLine(i.start.row),c=l.substring(i.end.column,i.end.column+1);if(c===";")return i.end.column++,i}}}),this.add("semicolon","insertion",function(e,t,n,r,i){if(i===";"){var s=n.getCursorPosition(),o=r.doc.getLine(s.row),u=o.substring(s.column,s.column+1);if(u===";")return{text:"",selection:[1,1]}}})};r.inherits(u,s),t.CssBehaviour=u}),define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/(\{|\[)[^\}\]]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#?region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++tf)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,a=1;while(++no)return new i(o,r,l,t.length)}}.call(o.prototype)}),define("ace/mode/css",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/css_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/behaviour/css","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./css_highlight_rules").CssHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("../worker/worker_client").WorkerClient,a=e("./behaviour/css").CssBehaviour,f=e("./folding/cstyle").FoldMode,l=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=new a,this.foldingRules=new f};r.inherits(l,i),function(){this.foldingRules="cStyle",this.blockComment={start:"/*",end:"*/"},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e).tokens;if(i.length&&i[i.length-1].type=="comment")return r;var s=t.match(/^.*\{\s*$/);return s&&(r+=n),r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.createWorker=function(e){var t=new u(["ace"],"ace/mode/css_worker","Worker");return t.attachToDocument(e.getDocument()),t.on("annotate",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/css"}.call(l.prototype),t.Mode=l}) \ No newline at end of file diff --git a/software/api/codebase/third-party/ace/src-min/mode-html.js b/software/api/codebase/third-party/ace/src-min/mode-html.js deleted file mode 100644 index 568806fe2..000000000 --- a/software/api/codebase/third-party/ace/src-min/mode-html.js +++ /dev/null @@ -1 +0,0 @@ -define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:"comment.doc.tag",regex:"@[\\w\\d_]+"},s.getTagRule(),{defaultToken:"comment.doc",caseInsensitive:!0}]}};r.inherits(s,i),s.getTagRule=function(e){return{token:"comment.doc.tag.storage.type",regex:"\\b(?:TODO|FIXME|XXX|HACK)\\b"}},s.getStartRule=function(e){return{token:"comment.doc",regex:"\\/\\*(?=\\*)",next:e}},s.getEndRule=function(e){return{token:"comment.doc",regex:"\\*\\/",next:e}},t.DocCommentHighlightRules=s}),define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./doc_comment_highlight_rules").DocCommentHighlightRules,s=e("./text_highlight_rules").TextHighlightRules,o=function(e){var t=this.createKeywordMapper({"variable.language":"Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Namespace|QName|XML|XMLList|ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|SyntaxError|TypeError|URIError|decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|isNaN|parseFloat|parseInt|JSON|Math|this|arguments|prototype|window|document",keyword:"const|yield|import|get|set|break|case|catch|continue|default|delete|do|else|finally|for|function|if|in|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|__parent__|__count__|escape|unescape|with|__proto__|class|enum|extends|super|export|implements|private|public|interface|package|protected|static","storage.type":"const|let|var|function","constant.language":"null|Infinity|NaN|undefined","support.function":"alert","constant.language.boolean":"true|false"},"identifier"),n="case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void",r="[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*\\b",s="\\\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|[0-2][0-7]{0,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.)";this.$rules={no_regex:[{token:"comment",regex:"\\/\\/",next:"line_comment"},i.getStartRule("doc-start"),{token:"comment",regex:/\/\*/,next:"comment"},{token:"string",regex:"'(?=.)",next:"qstring"},{token:"string",regex:'"(?=.)',next:"qqstring"},{token:"constant.numeric",regex:/0[xX][0-9a-fA-F]+\b/},{token:"constant.numeric",regex:/[+-]?\d+(?:(?:\.\d*)?(?:[eE][+-]?\d+)?)?\b/},{token:["storage.type","punctuation.operator","support.function","punctuation.operator","entity.name.function","text","keyword.operator"],regex:"("+r+")(\\.)(prototype)(\\.)("+r+")(\\s*)(=)",next:"function_arguments"},{token:["storage.type","punctuation.operator","entity.name.function","text","keyword.operator","text","storage.type","text","paren.lparen"],regex:"("+r+")(\\.)("+r+")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["entity.name.function","text","keyword.operator","text","storage.type","text","paren.lparen"],regex:"("+r+")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","punctuation.operator","entity.name.function","text","keyword.operator","text","storage.type","text","entity.name.function","text","paren.lparen"],regex:"("+r+")(\\.)("+r+")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","text","entity.name.function","text","paren.lparen"],regex:"(function)(\\s+)("+r+")(\\s*)(\\()",next:"function_arguments"},{token:["entity.name.function","text","punctuation.operator","text","storage.type","text","paren.lparen"],regex:"("+r+")(\\s*)(:)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["text","text","storage.type","text","paren.lparen"],regex:"(:)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:"keyword",regex:"(?:"+n+")\\b",next:"start"},{token:["punctuation.operator","support.function"],regex:/(\.)(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/},{token:["punctuation.operator","support.function.dom"],regex:/(\.)(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/},{token:["punctuation.operator","support.constant"],regex:/(\.)(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/},{token:["support.constant"],regex:/that\b/},{token:["storage.type","punctuation.operator","support.function.firebug"],regex:/(console)(\.)(warn|info|log|error|time|trace|timeEnd|assert)\b/},{token:t,regex:r},{token:"keyword.operator",regex:/--|\+\+|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\|\||\?\:|[!$%&*+\-~\/^]=?/,next:"start"},{token:"punctuation.operator",regex:/[?:,;.]/,next:"start"},{token:"paren.lparen",regex:/[\[({]/,next:"start"},{token:"paren.rparen",regex:/[\])}]/},{token:"comment",regex:/^#!.*$/}],start:[i.getStartRule("doc-start"),{token:"comment",regex:"\\/\\*",next:"comment_regex_allowed"},{token:"comment",regex:"\\/\\/",next:"line_comment_regex_allowed"},{token:"string.regexp",regex:"\\/",next:"regex"},{token:"text",regex:"\\s+|^$",next:"start"},{token:"empty",regex:"",next:"no_regex"}],regex:[{token:"regexp.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"string.regexp",regex:"/[sxngimy]*",next:"no_regex"},{token:"invalid",regex:/\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/},{token:"constant.language.escape",regex:/\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/},{token:"constant.language.delimiter",regex:/\|/},{token:"constant.language.escape",regex:/\[\^?/,next:"regex_character_class"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp"}],regex_character_class:[{token:"regexp.charclass.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"constant.language.escape",regex:"]",next:"regex"},{token:"constant.language.escape",regex:"-"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp.charachterclass"}],function_arguments:[{token:"variable.parameter",regex:r},{token:"punctuation.operator",regex:"[, ]+"},{token:"punctuation.operator",regex:"$"},{token:"empty",regex:"",next:"no_regex"}],comment_regex_allowed:[i.getTagRule(),{token:"comment",regex:"\\*\\/",next:"start"},{defaultToken:"comment",caseInsensitive:!0}],comment:[i.getTagRule(),{token:"comment",regex:"\\*\\/",next:"no_regex"},{defaultToken:"comment",caseInsensitive:!0}],line_comment_regex_allowed:[i.getTagRule(),{token:"comment",regex:"$|^",next:"start"},{defaultToken:"comment",caseInsensitive:!0}],line_comment:[i.getTagRule(),{token:"comment",regex:"$|^",next:"no_regex"},{defaultToken:"comment",caseInsensitive:!0}],qqstring:[{token:"constant.language.escape",regex:s},{token:"string",regex:"\\\\$",next:"qqstring"},{token:"string",regex:'"|$',next:"no_regex"},{defaultToken:"string"}],qstring:[{token:"constant.language.escape",regex:s},{token:"string",regex:"\\\\$",next:"qstring"},{token:"string",regex:"'|$",next:"no_regex"},{defaultToken:"string"}]},(!e||!e.noES6)&&this.$rules.no_regex.unshift({regex:"[{}]",onMatch:function(e,t,n){this.next=e=="{"?this.nextState:"";if(e=="{"&&n.length)return n.unshift("start",t),"paren";if(e=="}"&&n.length){n.shift(),this.next=n.shift();if(this.next.indexOf("string")!=-1)return"paren.quasi.end"}return e=="{"?"paren.lparen":"paren.rparen"},nextState:"start"},{token:"string.quasi.start",regex:/`/,push:[{token:"constant.language.escape",regex:s},{token:"paren.quasi.start",regex:/\${/,push:"start"},{token:"string.quasi.end",regex:/`/,next:"pop"},{defaultToken:"string.quasi"}]}),this.embedRules(i,"doc-",[i.getEndRule("no_regex")]),this.normalizeRules()};r.inherits(o,s),t.JavaScriptHighlightRules=o}),define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../range").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\s*\})/);if(!i)return 0;var s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 0;var u=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,s-1),u)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(i.prototype),t.MatchingBraceOutdent=i}),define("ace/mode/behaviour/cstyle",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("../../token_iterator").TokenIterator,o=e("../../lib/lang"),u=["text","paren.rparen","punctuation.operator"],a=["text","paren.rparen","punctuation.operator","comment"],f,l={},c=function(e){var t=-1;e.multiSelect&&(t=e.selection.index,l.rangeCount!=e.multiSelect.rangeCount&&(l={rangeCount:e.multiSelect.rangeCount}));if(l[t])return f=l[t];f=l[t]={autoInsertedBrackets:0,autoInsertedRow:-1,autoInsertedLineEnd:"",maybeInsertedBrackets:0,maybeInsertedRow:-1,maybeInsertedLineStart:"",maybeInsertedLineEnd:""}},h=function(e,t,n,r){var i=e.end.row-e.start.row;return{text:n+t+r,selection:[0,e.start.column+1,i,e.end.column+(i?0:1)]}},p=function(){this.add("braces","insertion",function(e,t,n,r,i){var s=n.getCursorPosition(),u=r.doc.getLine(s.row);if(i=="{"){c(n);var a=n.getSelectionRange(),l=r.doc.getTextRange(a);if(l!==""&&l!=="{"&&n.getWrapBehavioursEnabled())return h(a,l,"{","}");if(p.isSaneInsertion(n,r))return/[\]\}\)]/.test(u[s.column])||n.inMultiSelectMode?(p.recordAutoInsert(n,r,"}"),{text:"{}",selection:[1,1]}):(p.recordMaybeInsert(n,r,"{"),{text:"{",selection:[1,1]})}else if(i=="}"){c(n);var d=u.substring(s.column,s.column+1);if(d=="}"){var v=r.$findOpeningBracket("}",{column:s.column+1,row:s.row});if(v!==null&&p.isAutoInsertedClosing(s,u,i))return p.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}else{if(i=="\n"||i=="\r\n"){c(n);var m="";p.isMaybeInsertedClosing(s,u)&&(m=o.stringRepeat("}",f.maybeInsertedBrackets),p.clearMaybeInsertedClosing());var d=u.substring(s.column,s.column+1);if(d==="}"){var g=r.findMatchingBracket({row:s.row,column:s.column+1},"}");if(!g)return null;var y=this.$getIndent(r.getLine(g.row))}else{if(!m){p.clearMaybeInsertedClosing();return}var y=this.$getIndent(u)}var b=y+r.getTabString();return{text:"\n"+b+"\n"+y+m,selection:[1,b.length,1,b.length]}}p.clearMaybeInsertedClosing()}}),this.add("braces","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="{"){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.end.column,i.end.column+1);if(u=="}")return i.end.column++,i;f.maybeInsertedBrackets--}}),this.add("parens","insertion",function(e,t,n,r,i){if(i=="("){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return h(s,o,"(",")");if(p.isSaneInsertion(n,r))return p.recordAutoInsert(n,r,")"),{text:"()",selection:[1,1]}}else if(i==")"){c(n);var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f==")"){var l=r.$findOpeningBracket(")",{column:u.column+1,row:u.row});if(l!==null&&p.isAutoInsertedClosing(u,a,i))return p.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("parens","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="("){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==")")return i.end.column++,i}}),this.add("brackets","insertion",function(e,t,n,r,i){if(i=="["){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return h(s,o,"[","]");if(p.isSaneInsertion(n,r))return p.recordAutoInsert(n,r,"]"),{text:"[]",selection:[1,1]}}else if(i=="]"){c(n);var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f=="]"){var l=r.$findOpeningBracket("]",{column:u.column+1,row:u.row});if(l!==null&&p.isAutoInsertedClosing(u,a,i))return p.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("brackets","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="["){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u=="]")return i.end.column++,i}}),this.add("string_dquotes","insertion",function(e,t,n,r,i){if(i=='"'||i=="'"){c(n);var s=i,o=n.getSelectionRange(),u=r.doc.getTextRange(o);if(u!==""&&u!=="'"&&u!='"'&&n.getWrapBehavioursEnabled())return h(o,u,s,s);if(!u){var a=n.getCursorPosition(),f=r.doc.getLine(a.row),l=f.substring(a.column-1,a.column),p=f.substring(a.column,a.column+1),d=r.getTokenAt(a.row,a.column),v=r.getTokenAt(a.row,a.column+1);if(l=="\\"&&d&&/escape/.test(d.type))return null;var m=d&&/string/.test(d.type),g=!v||/string/.test(v.type),y;if(p==s)y=m!==g;else{if(m&&!g)return null;if(m&&g)return null;var b=r.$mode.tokenRe;b.lastIndex=0;var w=b.test(l);b.lastIndex=0;var E=b.test(l);if(w||E)return null;if(p&&!/[\s;,.})\]\\]/.test(p))return null;y=!0}return{text:y?s+s:"",selection:[1,1]}}}}),this.add("string_dquotes","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&(s=='"'||s=="'")){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==s)return i.end.column++,i}})};p.isSaneInsertion=function(e,t){var n=e.getCursorPosition(),r=new s(t,n.row,n.column);if(!this.$matchTokenType(r.getCurrentToken()||"text",u)){var i=new s(t,n.row,n.column+1);if(!this.$matchTokenType(i.getCurrentToken()||"text",u))return!1}return r.stepForward(),r.getCurrentTokenRow()!==n.row||this.$matchTokenType(r.getCurrentToken()||"text",a)},p.$matchTokenType=function(e,t){return t.indexOf(e.type||e)>-1},p.recordAutoInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isAutoInsertedClosing(r,i,f.autoInsertedLineEnd[0])||(f.autoInsertedBrackets=0),f.autoInsertedRow=r.row,f.autoInsertedLineEnd=n+i.substr(r.column),f.autoInsertedBrackets++},p.recordMaybeInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isMaybeInsertedClosing(r,i)||(f.maybeInsertedBrackets=0),f.maybeInsertedRow=r.row,f.maybeInsertedLineStart=i.substr(0,r.column)+n,f.maybeInsertedLineEnd=i.substr(r.column),f.maybeInsertedBrackets++},p.isAutoInsertedClosing=function(e,t,n){return f.autoInsertedBrackets>0&&e.row===f.autoInsertedRow&&n===f.autoInsertedLineEnd[0]&&t.substr(e.column)===f.autoInsertedLineEnd},p.isMaybeInsertedClosing=function(e,t){return f.maybeInsertedBrackets>0&&e.row===f.maybeInsertedRow&&t.substr(e.column)===f.maybeInsertedLineEnd&&t.substr(0,e.column)==f.maybeInsertedLineStart},p.popAutoInsertedClosing=function(){f.autoInsertedLineEnd=f.autoInsertedLineEnd.substr(1),f.autoInsertedBrackets--},p.clearMaybeInsertedClosing=function(){f&&(f.maybeInsertedBrackets=0,f.maybeInsertedRow=-1)},r.inherits(p,i),t.CstyleBehaviour=p}),define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/(\{|\[)[^\}\]]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#?region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++tf)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,a=1;while(++no)return new i(o,r,l,t.length)}}.call(o.prototype)}),define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/range","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./javascript_highlight_rules").JavaScriptHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("../range").Range,a=e("../worker/worker_client").WorkerClient,f=e("./behaviour/cstyle").CstyleBehaviour,l=e("./folding/cstyle").FoldMode,c=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=new f,this.foldingRules=new l};r.inherits(c,i),function(){this.lineCommentStart="//",this.blockComment={start:"/*",end:"*/"},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e),s=i.tokens,o=i.state;if(s.length&&s[s.length-1].type=="comment")return r;if(e=="start"||e=="no_regex"){var u=t.match(/^.*(?:\bcase\b.*\:|[\{\(\[])\s*$/);u&&(r+=n)}else if(e=="doc-start"){if(o=="start"||o=="no_regex")return"";var u=t.match(/^\s*(\/?)\*/);u&&(u[1]&&(r+=" "),r+="* ")}return r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.createWorker=function(e){var t=new a(["ace"],"ace/mode/javascript_worker","JavaScriptWorker");return t.attachToDocument(e.getDocument()),t.on("annotate",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/javascript"}.call(c.prototype),t.Mode=c}),define("ace/mode/css_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./text_highlight_rules").TextHighlightRules,o=t.supportType="animation-fill-mode|alignment-adjust|alignment-baseline|animation-delay|animation-direction|animation-duration|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|animation|appearance|azimuth|backface-visibility|background-attachment|background-break|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|background|baseline-shift|binding|bleed|bookmark-label|bookmark-level|bookmark-state|bookmark-target|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|border|bottom|box-align|box-decoration-break|box-direction|box-flex-group|box-flex|box-lines|box-ordinal-group|box-orient|box-pack|box-shadow|box-sizing|break-after|break-before|break-inside|caption-side|clear|clip|color-profile|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|crop|cue-after|cue-before|cue|cursor|direction|display|dominant-baseline|drop-initial-after-adjust|drop-initial-after-align|drop-initial-before-adjust|drop-initial-before-align|drop-initial-size|drop-initial-value|elevation|empty-cells|fit|fit-position|float-offset|float|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|font|grid-columns|grid-rows|hanging-punctuation|height|hyphenate-after|hyphenate-before|hyphenate-character|hyphenate-lines|hyphenate-resource|hyphens|icon|image-orientation|image-rendering|image-resolution|inline-box-align|left|letter-spacing|line-height|line-stacking-ruby|line-stacking-shift|line-stacking-strategy|line-stacking|list-style-image|list-style-position|list-style-type|list-style|margin-bottom|margin-left|margin-right|margin-top|margin|mark-after|mark-before|mark|marks|marquee-direction|marquee-play-count|marquee-speed|marquee-style|max-height|max-width|min-height|min-width|move-to|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|orphans|outline-color|outline-offset|outline-style|outline-width|outline|overflow-style|overflow-x|overflow-y|overflow|padding-bottom|padding-left|padding-right|padding-top|padding|page-break-after|page-break-before|page-break-inside|page-policy|page|pause-after|pause-before|pause|perspective-origin|perspective|phonemes|pitch-range|pitch|play-during|pointer-events|position|presentation-level|punctuation-trim|quotes|rendering-intent|resize|rest-after|rest-before|rest|richness|right|rotation-point|rotation|ruby-align|ruby-overhang|ruby-position|ruby-span|size|speak-header|speak-numeral|speak-punctuation|speak|speech-rate|stress|string-set|table-layout|target-name|target-new|target-position|target|text-align-last|text-align|text-decoration|text-emphasis|text-height|text-indent|text-justify|text-outline|text-shadow|text-transform|text-wrap|top|transform-origin|transform-style|transform|transition-delay|transition-duration|transition-property|transition-timing-function|transition|unicode-bidi|vertical-align|visibility|voice-balance|voice-duration|voice-family|voice-pitch-range|voice-pitch|voice-rate|voice-stress|voice-volume|volume|white-space-collapse|white-space|widows|width|word-break|word-spacing|word-wrap|z-index",u=t.supportFunction="rgb|rgba|url|attr|counter|counters",a=t.supportConstant="absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero",f=t.supportConstantColor="aqua|black|blue|fuchsia|gray|green|lime|maroon|navy|olive|orange|purple|red|silver|teal|white|yellow",l=t.supportConstantFonts="arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace",c=t.numRe="\\-?(?:(?:[0-9]+)|(?:[0-9]*\\.[0-9]+))",h=t.pseudoElements="(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b",p=t.pseudoClasses="(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b",d=function(){var e=this.createKeywordMapper({"support.function":u,"support.constant":a,"support.type":o,"support.constant.color":f,"support.constant.fonts":l},"text",!0);this.$rules={start:[{token:"comment",regex:"\\/\\*",push:"comment"},{token:"paren.lparen",regex:"\\{",push:"ruleset"},{token:"string",regex:"@.*?{",push:"media"},{token:"keyword",regex:"#[a-z0-9-_]+"},{token:"variable",regex:"\\.[a-z0-9-_]+"},{token:"string",regex:":[a-z0-9-_]+"},{token:"constant",regex:"[a-z0-9-_]+"},{caseInsensitive:!0}],media:[{token:"comment",regex:"\\/\\*",push:"comment"},{token:"paren.lparen",regex:"\\{",push:"ruleset"},{token:"string",regex:"\\}",next:"pop"},{token:"keyword",regex:"#[a-z0-9-_]+"},{token:"variable",regex:"\\.[a-z0-9-_]+"},{token:"string",regex:":[a-z0-9-_]+"},{token:"constant",regex:"[a-z0-9-_]+"},{caseInsensitive:!0}],comment:[{token:"comment",regex:"\\*\\/",next:"pop"},{defaultToken:"comment"}],ruleset:[{token:"paren.rparen",regex:"\\}",next:"pop"},{token:"comment",regex:"\\/\\*",push:"comment"},{token:"string",regex:'["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'},{token:"string",regex:"['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"},{token:["constant.numeric","keyword"],regex:"("+c+")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vm|vw|%)"},{token:"constant.numeric",regex:c},{token:"constant.numeric",regex:"#[a-f0-9]{6}"},{token:"constant.numeric",regex:"#[a-f0-9]{3}"},{token:["punctuation","entity.other.attribute-name.pseudo-element.css"],regex:h},{token:["punctuation","entity.other.attribute-name.pseudo-class.css"],regex:p},{token:["support.function","string","support.function"],regex:"(url\\()(.*)(\\))"},{token:e,regex:"\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*"},{caseInsensitive:!0}]},this.normalizeRules()};r.inherits(d,s),t.CssHighlightRules=d}),define("ace/mode/behaviour/css",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/mode/behaviour/cstyle","ace/token_iterator"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("./cstyle").CstyleBehaviour,o=e("../../token_iterator").TokenIterator,u=function(){this.inherit(s),this.add("colon","insertion",function(e,t,n,r,i){if(i===":"){var s=n.getCursorPosition(),u=new o(r,s.row,s.column),a=u.getCurrentToken();a&&a.value.match(/\s+/)&&(a=u.stepBackward());if(a&&a.type==="support.type"){var f=r.doc.getLine(s.row),l=f.substring(s.column,s.column+1);if(l===":")return{text:"",selection:[1,1]};if(!f.substring(s.column).match(/^\s*;/))return{text:":;",selection:[1,1]}}}}),this.add("colon","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s===":"){var u=n.getCursorPosition(),a=new o(r,u.row,u.column),f=a.getCurrentToken();f&&f.value.match(/\s+/)&&(f=a.stepBackward());if(f&&f.type==="support.type"){var l=r.doc.getLine(i.start.row),c=l.substring(i.end.column,i.end.column+1);if(c===";")return i.end.column++,i}}}),this.add("semicolon","insertion",function(e,t,n,r,i){if(i===";"){var s=n.getCursorPosition(),o=r.doc.getLine(s.row),u=o.substring(s.column,s.column+1);if(u===";")return{text:"",selection:[1,1]}}})};r.inherits(u,s),t.CssBehaviour=u}),define("ace/mode/css",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/css_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/behaviour/css","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./css_highlight_rules").CssHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("../worker/worker_client").WorkerClient,a=e("./behaviour/css").CssBehaviour,f=e("./folding/cstyle").FoldMode,l=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=new a,this.foldingRules=new f};r.inherits(l,i),function(){this.foldingRules="cStyle",this.blockComment={start:"/*",end:"*/"},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e).tokens;if(i.length&&i[i.length-1].type=="comment")return r;var s=t.match(/^.*\{\s*$/);return s&&(r+=n),r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.createWorker=function(e){var t=new u(["ace"],"ace/mode/css_worker","Worker");return t.attachToDocument(e.getDocument()),t.on("annotate",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/css"}.call(l.prototype),t.Mode=l}),define("ace/mode/xml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(e){var t="[_:a-zA-Z\u00c0-\uffff][-_:.a-zA-Z0-9\u00c0-\uffff]*";this.$rules={start:[{token:"string.cdata.xml",regex:"<\\!\\[CDATA\\[",next:"cdata"},{token:["punctuation.xml-decl.xml","keyword.xml-decl.xml"],regex:"(<\\?)(xml)(?=[\\s])",next:"xml_decl",caseInsensitive:!0},{token:["punctuation.instruction.xml","keyword.instruction.xml"],regex:"(<\\?)("+t+")",next:"processing_instruction"},{token:"comment.xml",regex:"<\\!--",next:"comment"},{token:["xml-pe.doctype.xml","xml-pe.doctype.xml"],regex:"(<\\!)(DOCTYPE)(?=[\\s])",next:"doctype",caseInsensitive:!0},{include:"tag"},{token:"text.end-tag-open.xml",regex:"",next:"start"}],processing_instruction:[{token:"punctuation.instruction.xml",regex:"\\?>",next:"start"},{defaultToken:"instruction.xml"}],doctype:[{include:"whitespace"},{include:"string"},{token:"xml-pe.doctype.xml",regex:">",next:"start"},{token:"xml-pe.xml",regex:"[-_a-zA-Z0-9:]+"},{token:"punctuation.int-subset",regex:"\\[",push:"int_subset"}],int_subset:[{token:"text.xml",regex:"\\s+"},{token:"punctuation.int-subset.xml",regex:"]",next:"pop"},{token:["punctuation.markup-decl.xml","keyword.markup-decl.xml"],regex:"(<\\!)("+t+")",push:[{token:"text",regex:"\\s+"},{token:"punctuation.markup-decl.xml",regex:">",next:"pop"},{include:"string"}]}],cdata:[{token:"string.cdata.xml",regex:"\\]\\]>",next:"start"},{token:"text.xml",regex:"\\s+"},{token:"text.xml",regex:"(?:[^\\]]|\\](?!\\]>))+"}],comment:[{token:"comment.xml",regex:"-->",next:"start"},{defaultToken:"comment.xml"}],reference:[{token:"constant.language.escape.reference.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}],attr_reference:[{token:"constant.language.escape.reference.attribute-value.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}],tag:[{token:["meta.tag.punctuation.tag-open.xml","meta.tag.punctuation.end-tag-open.xml","meta.tag.tag-name.xml"],regex:"(?:(<)|(",next:"start"}]}],tag_whitespace:[{token:"text.tag-whitespace.xml",regex:"\\s+"}],whitespace:[{token:"text.whitespace.xml",regex:"\\s+"}],string:[{token:"string.xml",regex:"'",push:[{token:"string.xml",regex:"'",next:"pop"},{defaultToken:"string.xml"}]},{token:"string.xml",regex:'"',push:[{token:"string.xml",regex:'"',next:"pop"},{defaultToken:"string.xml"}]}],attributes:[{token:"entity.other.attribute-name.xml",regex:"(?:"+t+":)?"+t+""},{token:"keyword.operator.attribute-equals.xml",regex:"="},{include:"tag_whitespace"},{include:"attribute_value"}],attribute_value:[{token:"string.attribute-value.xml",regex:"'",push:[{token:"string.attribute-value.xml",regex:"'",next:"pop"},{include:"attr_reference"},{defaultToken:"string.attribute-value.xml"}]},{token:"string.attribute-value.xml",regex:'"',push:[{token:"string.attribute-value.xml",regex:'"',next:"pop"},{include:"attr_reference"},{defaultToken:"string.attribute-value.xml"}]}]},this.constructor===s&&this.normalizeRules()};(function(){this.embedTagRules=function(e,t,n){this.$rules.tag.unshift({token:["meta.tag.punctuation.tag-open.xml","meta.tag."+n+".tag-name.xml"],regex:"(<)("+n+"(?=\\s|>|$))",next:[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:t+"start"}]}),this.$rules[n+"-end"]=[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:"start",onMatch:function(e,t,n){return n.splice(0),this.token}}],this.embedRules(e,t,[{token:["meta.tag.punctuation.end-tag-open.xml","meta.tag."+n+".tag-name.xml"],regex:"(|$))",next:n+"-end"},{token:"string.cdata.xml",regex:"<\\!\\[CDATA\\["},{token:"string.cdata.xml",regex:"\\]\\]>"}])}}).call(i.prototype),r.inherits(s,i),t.XmlHighlightRules=s}),define("ace/mode/html_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/css_highlight_rules","ace/mode/javascript_highlight_rules","ace/mode/xml_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./css_highlight_rules").CssHighlightRules,o=e("./javascript_highlight_rules").JavaScriptHighlightRules,u=e("./xml_highlight_rules").XmlHighlightRules,a=i.createMap({a:"anchor",button:"form",form:"form",img:"image",input:"form",label:"form",option:"form",script:"script",select:"form",textarea:"form",style:"style",table:"table",tbody:"table",td:"table",tfoot:"table",th:"table",tr:"table"}),f=function(){u.call(this),this.addRules({attributes:[{include:"tag_whitespace"},{token:"entity.other.attribute-name.xml",regex:"[-_a-zA-Z0-9:.]+"},{token:"keyword.operator.attribute-equals.xml",regex:"=",push:[{include:"tag_whitespace"},{token:"string.unquoted.attribute-value.html",regex:"[^<>='\"`\\s]+",next:"pop"},{token:"empty",regex:"",next:"pop"}]},{include:"attribute_value"}],tag:[{token:function(e,t){var n=a[t];return["meta.tag.punctuation."+(e=="<"?"":"end-")+"tag-open.xml","meta.tag"+(n?"."+n:"")+".tag-name.xml"]},regex:"(",next:"start"}]}),this.embedTagRules(s,"css-","style"),this.embedTagRules(o,"js-","script"),this.constructor===f&&this.normalizeRules()};r.inherits(f,u),t.HtmlHighlightRules=f}),define("ace/mode/behaviour/xml",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"],function(e,t,n){"use strict";function u(e,t){return e.type.lastIndexOf(t+".xml")>-1}var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("../../token_iterator").TokenIterator,o=e("../../lib/lang"),a=function(){this.add("string_dquotes","insertion",function(e,t,n,r,i){if(i=='"'||i=="'"){var o=i,a=r.doc.getTextRange(n.getSelectionRange());if(a!==""&&a!=="'"&&a!='"'&&n.getWrapBehavioursEnabled())return{text:o+a+o,selection:!1};var f=n.getCursorPosition(),l=r.doc.getLine(f.row),c=l.substring(f.column,f.column+1),h=new s(r,f.row,f.column),p=h.getCurrentToken();if(c==o&&(u(p,"attribute-value")||u(p,"string")))return{text:"",selection:[1,1]};p||(p=h.stepBackward());if(!p)return;while(u(p,"tag-whitespace")||u(p,"whitespace"))p=h.stepBackward();var d=!c||c.match(/\s/);if(u(p,"attribute-equals")&&(d||c==">")||u(p,"decl-attribute-equals")&&(d||c=="?"))return{text:o+o,selection:[1,1]}}}),this.add("string_dquotes","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&(s=='"'||s=="'")){var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==s)return i.end.column++,i}}),this.add("autoclosing","insertion",function(e,t,n,r,i){if(i==">"){var o=n.getCursorPosition(),a=new s(r,o.row,o.column),f=a.getCurrentToken()||a.stepBackward();if(!f||!(u(f,"tag-name")||u(f,"tag-whitespace")||u(f,"attribute-name")||u(f,"attribute-equals")||u(f,"attribute-value")))return;if(u(f,"reference.attribute-value"))return;if(u(f,"attribute-value")){var l=f.value.charAt(0);if(l=='"'||l=="'"){var c=f.value.charAt(f.value.length-1),h=a.getCurrentTokenColumn()+f.value.length;if(h>o.column||h==o.column&&l!=c)return}}while(!u(f,"tag-name"))f=a.stepBackward();var p=a.getCurrentTokenRow(),d=a.getCurrentTokenColumn();if(u(a.stepBackward(),"end-tag-open"))return;var v=f.value;p==o.row&&(v=v.substring(0,o.column-d));if(this.voidElements.hasOwnProperty(v.toLowerCase()))return;return{text:">",selection:[1,1]}}}),this.add("autoindent","insertion",function(e,t,n,r,i){if(i=="\n"){var o=n.getCursorPosition(),u=r.getLine(o.row),a=new s(r,o.row,o.column),f=a.getCurrentToken();if(f&&f.type.indexOf("tag-close")!==-1){if(f.value=="/>")return;while(f&&f.type.indexOf("tag-name")===-1)f=a.stepBackward();if(!f)return;var l=f.value,c=a.getCurrentTokenRow();f=a.stepBackward();if(!f||f.type.indexOf("end-tag")!==-1)return;if(this.voidElements&&!this.voidElements[l]){var h=r.getTokenAt(o.row,o.column+1),u=r.getLine(c),p=this.$getIndent(u),d=p+r.getTabString();return h&&h.value==="-1}var r=e("../../lib/oop"),i=e("../../lib/lang"),s=e("../../range").Range,o=e("./fold_mode").FoldMode,u=e("../../token_iterator").TokenIterator,a=t.FoldMode=function(e,t){o.call(this),this.voidElements=e||{},this.optionalEndTags=r.mixin({},this.voidElements),t&&r.mixin(this.optionalEndTags,t)};r.inherits(a,o);var f=function(){this.tagName="",this.closing=!1,this.selfClosing=!1,this.start={row:0,column:0},this.end={row:0,column:0}};(function(){this.getFoldWidget=function(e,t,n){var r=this._getFirstTagInLine(e,n);return r?r.closing||!r.tagName&&r.selfClosing?t=="markbeginend"?"end":"":!r.tagName||r.selfClosing||this.voidElements.hasOwnProperty(r.tagName.toLowerCase())?"":this._findEndTagInLine(e,n,r.tagName,r.end.column)?"":"start":""},this._getFirstTagInLine=function(e,t){var n=e.getTokens(t),r=new f;for(var i=0;i";break}}return r}if(l(s,"tag-close"))return r.selfClosing=s.value=="/>",r;r.start.column+=s.value.length}return null},this._findEndTagInLine=function(e,t,n,r){var i=e.getTokens(t),s=0;for(var o=0;o",n.end.row=e.getCurrentTokenRow(),n.end.column=e.getCurrentTokenColumn()+t.value.length,e.stepForward(),n;while(t=e.stepForward());return null},this._readTagBackward=function(e){var t=e.getCurrentToken();if(!t)return null;var n=new f;do{if(l(t,"tag-open"))return n.closing=l(t,"end-tag-open"),n.start.row=e.getCurrentTokenRow(),n.start.column=e.getCurrentTokenColumn(),e.stepBackward(),n;l(t,"tag-name")?n.tagName=t.value:l(t,"tag-close")&&(n.selfClosing=t.value=="/>",n.end.row=e.getCurrentTokenRow(),n.end.column=e.getCurrentTokenColumn()+t.value.length)}while(t=e.stepBackward());return null},this._pop=function(e,t){while(e.length){var n=e[e.length-1];if(!t||n.tagName==t.tagName)return e.pop();if(this.optionalEndTags.hasOwnProperty(n.tagName)){e.pop();continue}return null}},this.getFoldWidgetRange=function(e,t,n){var r=this._getFirstTagInLine(e,n);if(!r)return null;var i=r.closing||r.selfClosing,o=[],a;if(!i){var f=new u(e,n,r.start.column),l={row:n,column:r.start.column+r.tagName.length+2};r.start.row==r.end.row&&(l.column=r.end.column);while(a=this._readTagForward(f)){if(a.selfClosing){if(!o.length)return a.start.column+=a.tagName.length+2,a.end.column-=2,s.fromPoints(a.start,a.end);continue}if(a.closing){this._pop(o,a);if(o.length==0)return s.fromPoints(l,a.start)}else o.push(a)}}else{var f=new u(e,n,r.end.column),c={row:n,column:r.start.column};while(a=this._readTagBackward(f)){if(a.selfClosing){if(!o.length)return a.start.column+=a.tagName.length+2,a.end.column-=2,s.fromPoints(a.start,a.end);continue}if(!a.closing){this._pop(o,a);if(o.length==0)return a.start.column+=a.tagName.length+2,a.start.row==a.end.row&&a.start.column-1}function l(e,t){var n=new r(e,t.row,t.column),i=n.getCurrentToken();while(i&&!f(i,"tag-name"))i=n.stepBackward();if(i)return i.value}var r=e("../token_iterator").TokenIterator,i=["accesskey","class","contenteditable","contextmenu","dir","draggable","dropzone","hidden","id","inert","itemid","itemprop","itemref","itemscope","itemtype","lang","spellcheck","style","tabindex","title","translate"],s=["onabort","onblur","oncancel","oncanplay","oncanplaythrough","onchange","onclick","onclose","oncontextmenu","oncuechange","ondblclick","ondrag","ondragend","ondragenter","ondragleave","ondragover","ondragstart","ondrop","ondurationchange","onemptied","onended","onerror","onfocus","oninput","oninvalid","onkeydown","onkeypress","onkeyup","onload","onloadeddata","onloadedmetadata","onloadstart","onmousedown","onmousemove","onmouseout","onmouseover","onmouseup","onmousewheel","onpause","onplay","onplaying","onprogress","onratechange","onreset","onscroll","onseeked","onseeking","onselect","onshow","onstalled","onsubmit","onsuspend","ontimeupdate","onvolumechange","onwaiting"],o=i.concat(s),u={html:["manifest"],head:[],title:[],base:["href","target"],link:["href","hreflang","rel","media","type","sizes"],meta:["http-equiv","name","content","charset"],style:["type","media","scoped"],script:["charset","type","src","defer","async"],noscript:["href"],body:["onafterprint","onbeforeprint","onbeforeunload","onhashchange","onmessage","onoffline","onpopstate","onredo","onresize","onstorage","onundo","onunload"],section:[],nav:[],article:["pubdate"],aside:[],h1:[],h2:[],h3:[],h4:[],h5:[],h6:[],header:[],footer:[],address:[],main:[],p:[],hr:[],pre:[],blockquote:["cite"],ol:["start","reversed"],ul:[],li:["value"],dl:[],dt:[],dd:[],figure:[],figcaption:[],div:[],a:["href","target","ping","rel","media","hreflang","type"],em:[],strong:[],small:[],s:[],cite:[],q:["cite"],dfn:[],abbr:[],data:[],time:["datetime"],code:[],"var":[],samp:[],kbd:[],sub:[],sup:[],i:[],b:[],u:[],mark:[],ruby:[],rt:[],rp:[],bdi:[],bdo:[],span:[],br:[],wbr:[],ins:["cite","datetime"],del:["cite","datetime"],img:["alt","src","height","width","usemap","ismap"],iframe:["name","src","height","width","sandbox","seamless"],embed:["src","height","width","type"],object:["param","data","type","height","width","usemap","name","form","classid"],param:["name","value"],video:["src","autobuffer","autoplay","loop","controls","width","height","poster"],audio:["src","autobuffer","autoplay","loop","controls"],source:["src","type","media"],track:["kind","src","srclang","label","default"],canvas:["width","height"],map:["name"],area:["shape","coords","href","hreflang","alt","target","media","rel","ping","type"],svg:[],math:[],table:["summary"],caption:[],colgroup:["span"],col:["span"],tbody:[],thead:[],tfoot:[],tr:[],td:["headers","rowspan","colspan"],th:["headers","rowspan","colspan","scope"],form:["accept-charset","action","autocomplete","enctype","method","name","novalidate","target"],fieldset:["disabled","form","name"],legend:[],label:["form","for"],input:["type","accept","alt","autocomplete","checked","disabled","form","formaction","formenctype","formmethod","formnovalidate","formtarget","height","list","max","maxlength","min","multiple","pattern","placeholder","readonly","required","size","src","step","width","files","value"],button:["autofocus","disabled","form","formaction","formenctype","formmethod","formnovalidate","formtarget","name","value","type"],select:["autofocus","disabled","form","multiple","name","size"],datalist:[],optgroup:["disabled","label"],option:["disabled","selected","label","value"],textarea:["autofocus","disabled","form","maxlength","name","placeholder","readonly","required","rows","cols","wrap"],keygen:["autofocus","challenge","disabled","form","keytype","name"],output:["for","form","name"],progress:["value","max"],meter:["value","min","max","low","high","optimum"],details:["open"],summary:[],command:["type","label","icon","disabled","checked","radiogroup","command"],menu:["type","label"],dialog:["open"]},a=Object.keys(u),c=function(){};(function(){this.getCompletions=function(e,t,n,r){var i=t.getTokenAt(n.row,n.column);return i?f(i,"tag-name")||f(i,"tag-open")||f(i,"end-tag-open")?this.getTagCompletions(e,t,n,r):f(i,"tag-whitespace")||f(i,"attribute-name")?this.getAttributeCompetions(e,t,n,r):[]:[]},this.getTagCompletions=function(e,t,n,r){return a.map(function(e){return{value:e,meta:"tag",score:Number.MAX_VALUE}})},this.getAttributeCompetions=function(e,t,n,r){var i=l(t,n);if(!i)return[];var s=o;return i in u&&(s=s.concat(u[i])),s.map(function(e){return{caption:e,snippet:e+'="$0"',meta:"attribute",score:Number.MAX_VALUE}})}}).call(c.prototype),t.HtmlCompletions=c}),define("ace/mode/html",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text","ace/mode/javascript","ace/mode/css","ace/mode/html_highlight_rules","ace/mode/behaviour/xml","ace/mode/folding/html","ace/mode/html_completions","ace/worker/worker_client"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./text").Mode,o=e("./javascript").Mode,u=e("./css").Mode,a=e("./html_highlight_rules").HtmlHighlightRules,f=e("./behaviour/xml").XmlBehaviour,l=e("./folding/html").FoldMode,c=e("./html_completions").HtmlCompletions,h=e("../worker/worker_client").WorkerClient,p=["area","base","br","col","embed","hr","img","input","keygen","link","meta","menuitem","param","source","track","wbr"],d=["li","dt","dd","p","rt","rp","optgroup","option","colgroup","td","th"],v=function(e){this.fragmentContext=e&&e.fragmentContext,this.HighlightRules=a,this.$behaviour=new f,this.$completer=new c,this.createModeDelegates({"js-":o,"css-":u}),this.foldingRules=new l(this.voidElements,i.arrayToMap(d))};r.inherits(v,s),function(){this.blockComment={start:""},this.voidElements=i.arrayToMap(p),this.getNextLineIndent=function(e,t,n){return this.$getIndent(t)},this.checkOutdent=function(e,t,n){return!1},this.getCompletions=function(e,t,n,r){return this.$completer.getCompletions(e,t,n,r)},this.createWorker=function(e){if(this.constructor!=v)return;var t=new h(["ace"],"ace/mode/html_worker","Worker");return t.attachToDocument(e.getDocument()),this.fragmentContext&&t.call("setOptions",[{context:this.fragmentContext}]),t.on("error",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/html"}.call(v.prototype),t.Mode=v}) \ No newline at end of file diff --git a/software/api/codebase/third-party/ace/src-min/mode-javascript.js b/software/api/codebase/third-party/ace/src-min/mode-javascript.js deleted file mode 100644 index ecd83eddf..000000000 --- a/software/api/codebase/third-party/ace/src-min/mode-javascript.js +++ /dev/null @@ -1 +0,0 @@ -define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:"comment.doc.tag",regex:"@[\\w\\d_]+"},s.getTagRule(),{defaultToken:"comment.doc",caseInsensitive:!0}]}};r.inherits(s,i),s.getTagRule=function(e){return{token:"comment.doc.tag.storage.type",regex:"\\b(?:TODO|FIXME|XXX|HACK)\\b"}},s.getStartRule=function(e){return{token:"comment.doc",regex:"\\/\\*(?=\\*)",next:e}},s.getEndRule=function(e){return{token:"comment.doc",regex:"\\*\\/",next:e}},t.DocCommentHighlightRules=s}),define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./doc_comment_highlight_rules").DocCommentHighlightRules,s=e("./text_highlight_rules").TextHighlightRules,o=function(e){var t=this.createKeywordMapper({"variable.language":"Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Namespace|QName|XML|XMLList|ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|SyntaxError|TypeError|URIError|decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|isNaN|parseFloat|parseInt|JSON|Math|this|arguments|prototype|window|document",keyword:"const|yield|import|get|set|break|case|catch|continue|default|delete|do|else|finally|for|function|if|in|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|__parent__|__count__|escape|unescape|with|__proto__|class|enum|extends|super|export|implements|private|public|interface|package|protected|static","storage.type":"const|let|var|function","constant.language":"null|Infinity|NaN|undefined","support.function":"alert","constant.language.boolean":"true|false"},"identifier"),n="case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void",r="[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*\\b",s="\\\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|[0-2][0-7]{0,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.)";this.$rules={no_regex:[{token:"comment",regex:"\\/\\/",next:"line_comment"},i.getStartRule("doc-start"),{token:"comment",regex:/\/\*/,next:"comment"},{token:"string",regex:"'(?=.)",next:"qstring"},{token:"string",regex:'"(?=.)',next:"qqstring"},{token:"constant.numeric",regex:/0[xX][0-9a-fA-F]+\b/},{token:"constant.numeric",regex:/[+-]?\d+(?:(?:\.\d*)?(?:[eE][+-]?\d+)?)?\b/},{token:["storage.type","punctuation.operator","support.function","punctuation.operator","entity.name.function","text","keyword.operator"],regex:"("+r+")(\\.)(prototype)(\\.)("+r+")(\\s*)(=)",next:"function_arguments"},{token:["storage.type","punctuation.operator","entity.name.function","text","keyword.operator","text","storage.type","text","paren.lparen"],regex:"("+r+")(\\.)("+r+")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["entity.name.function","text","keyword.operator","text","storage.type","text","paren.lparen"],regex:"("+r+")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","punctuation.operator","entity.name.function","text","keyword.operator","text","storage.type","text","entity.name.function","text","paren.lparen"],regex:"("+r+")(\\.)("+r+")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","text","entity.name.function","text","paren.lparen"],regex:"(function)(\\s+)("+r+")(\\s*)(\\()",next:"function_arguments"},{token:["entity.name.function","text","punctuation.operator","text","storage.type","text","paren.lparen"],regex:"("+r+")(\\s*)(:)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["text","text","storage.type","text","paren.lparen"],regex:"(:)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:"keyword",regex:"(?:"+n+")\\b",next:"start"},{token:["punctuation.operator","support.function"],regex:/(\.)(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/},{token:["punctuation.operator","support.function.dom"],regex:/(\.)(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/},{token:["punctuation.operator","support.constant"],regex:/(\.)(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/},{token:["support.constant"],regex:/that\b/},{token:["storage.type","punctuation.operator","support.function.firebug"],regex:/(console)(\.)(warn|info|log|error|time|trace|timeEnd|assert)\b/},{token:t,regex:r},{token:"keyword.operator",regex:/--|\+\+|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\|\||\?\:|[!$%&*+\-~\/^]=?/,next:"start"},{token:"punctuation.operator",regex:/[?:,;.]/,next:"start"},{token:"paren.lparen",regex:/[\[({]/,next:"start"},{token:"paren.rparen",regex:/[\])}]/},{token:"comment",regex:/^#!.*$/}],start:[i.getStartRule("doc-start"),{token:"comment",regex:"\\/\\*",next:"comment_regex_allowed"},{token:"comment",regex:"\\/\\/",next:"line_comment_regex_allowed"},{token:"string.regexp",regex:"\\/",next:"regex"},{token:"text",regex:"\\s+|^$",next:"start"},{token:"empty",regex:"",next:"no_regex"}],regex:[{token:"regexp.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"string.regexp",regex:"/[sxngimy]*",next:"no_regex"},{token:"invalid",regex:/\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/},{token:"constant.language.escape",regex:/\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/},{token:"constant.language.delimiter",regex:/\|/},{token:"constant.language.escape",regex:/\[\^?/,next:"regex_character_class"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp"}],regex_character_class:[{token:"regexp.charclass.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"constant.language.escape",regex:"]",next:"regex"},{token:"constant.language.escape",regex:"-"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp.charachterclass"}],function_arguments:[{token:"variable.parameter",regex:r},{token:"punctuation.operator",regex:"[, ]+"},{token:"punctuation.operator",regex:"$"},{token:"empty",regex:"",next:"no_regex"}],comment_regex_allowed:[i.getTagRule(),{token:"comment",regex:"\\*\\/",next:"start"},{defaultToken:"comment",caseInsensitive:!0}],comment:[i.getTagRule(),{token:"comment",regex:"\\*\\/",next:"no_regex"},{defaultToken:"comment",caseInsensitive:!0}],line_comment_regex_allowed:[i.getTagRule(),{token:"comment",regex:"$|^",next:"start"},{defaultToken:"comment",caseInsensitive:!0}],line_comment:[i.getTagRule(),{token:"comment",regex:"$|^",next:"no_regex"},{defaultToken:"comment",caseInsensitive:!0}],qqstring:[{token:"constant.language.escape",regex:s},{token:"string",regex:"\\\\$",next:"qqstring"},{token:"string",regex:'"|$',next:"no_regex"},{defaultToken:"string"}],qstring:[{token:"constant.language.escape",regex:s},{token:"string",regex:"\\\\$",next:"qstring"},{token:"string",regex:"'|$",next:"no_regex"},{defaultToken:"string"}]},(!e||!e.noES6)&&this.$rules.no_regex.unshift({regex:"[{}]",onMatch:function(e,t,n){this.next=e=="{"?this.nextState:"";if(e=="{"&&n.length)return n.unshift("start",t),"paren";if(e=="}"&&n.length){n.shift(),this.next=n.shift();if(this.next.indexOf("string")!=-1)return"paren.quasi.end"}return e=="{"?"paren.lparen":"paren.rparen"},nextState:"start"},{token:"string.quasi.start",regex:/`/,push:[{token:"constant.language.escape",regex:s},{token:"paren.quasi.start",regex:/\${/,push:"start"},{token:"string.quasi.end",regex:/`/,next:"pop"},{defaultToken:"string.quasi"}]}),this.embedRules(i,"doc-",[i.getEndRule("no_regex")]),this.normalizeRules()};r.inherits(o,s),t.JavaScriptHighlightRules=o}),define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../range").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\s*\})/);if(!i)return 0;var s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 0;var u=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,s-1),u)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(i.prototype),t.MatchingBraceOutdent=i}),define("ace/mode/behaviour/cstyle",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("../../token_iterator").TokenIterator,o=e("../../lib/lang"),u=["text","paren.rparen","punctuation.operator"],a=["text","paren.rparen","punctuation.operator","comment"],f,l={},c=function(e){var t=-1;e.multiSelect&&(t=e.selection.index,l.rangeCount!=e.multiSelect.rangeCount&&(l={rangeCount:e.multiSelect.rangeCount}));if(l[t])return f=l[t];f=l[t]={autoInsertedBrackets:0,autoInsertedRow:-1,autoInsertedLineEnd:"",maybeInsertedBrackets:0,maybeInsertedRow:-1,maybeInsertedLineStart:"",maybeInsertedLineEnd:""}},h=function(e,t,n,r){var i=e.end.row-e.start.row;return{text:n+t+r,selection:[0,e.start.column+1,i,e.end.column+(i?0:1)]}},p=function(){this.add("braces","insertion",function(e,t,n,r,i){var s=n.getCursorPosition(),u=r.doc.getLine(s.row);if(i=="{"){c(n);var a=n.getSelectionRange(),l=r.doc.getTextRange(a);if(l!==""&&l!=="{"&&n.getWrapBehavioursEnabled())return h(a,l,"{","}");if(p.isSaneInsertion(n,r))return/[\]\}\)]/.test(u[s.column])||n.inMultiSelectMode?(p.recordAutoInsert(n,r,"}"),{text:"{}",selection:[1,1]}):(p.recordMaybeInsert(n,r,"{"),{text:"{",selection:[1,1]})}else if(i=="}"){c(n);var d=u.substring(s.column,s.column+1);if(d=="}"){var v=r.$findOpeningBracket("}",{column:s.column+1,row:s.row});if(v!==null&&p.isAutoInsertedClosing(s,u,i))return p.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}else{if(i=="\n"||i=="\r\n"){c(n);var m="";p.isMaybeInsertedClosing(s,u)&&(m=o.stringRepeat("}",f.maybeInsertedBrackets),p.clearMaybeInsertedClosing());var d=u.substring(s.column,s.column+1);if(d==="}"){var g=r.findMatchingBracket({row:s.row,column:s.column+1},"}");if(!g)return null;var y=this.$getIndent(r.getLine(g.row))}else{if(!m){p.clearMaybeInsertedClosing();return}var y=this.$getIndent(u)}var b=y+r.getTabString();return{text:"\n"+b+"\n"+y+m,selection:[1,b.length,1,b.length]}}p.clearMaybeInsertedClosing()}}),this.add("braces","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="{"){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.end.column,i.end.column+1);if(u=="}")return i.end.column++,i;f.maybeInsertedBrackets--}}),this.add("parens","insertion",function(e,t,n,r,i){if(i=="("){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return h(s,o,"(",")");if(p.isSaneInsertion(n,r))return p.recordAutoInsert(n,r,")"),{text:"()",selection:[1,1]}}else if(i==")"){c(n);var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f==")"){var l=r.$findOpeningBracket(")",{column:u.column+1,row:u.row});if(l!==null&&p.isAutoInsertedClosing(u,a,i))return p.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("parens","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="("){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==")")return i.end.column++,i}}),this.add("brackets","insertion",function(e,t,n,r,i){if(i=="["){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return h(s,o,"[","]");if(p.isSaneInsertion(n,r))return p.recordAutoInsert(n,r,"]"),{text:"[]",selection:[1,1]}}else if(i=="]"){c(n);var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f=="]"){var l=r.$findOpeningBracket("]",{column:u.column+1,row:u.row});if(l!==null&&p.isAutoInsertedClosing(u,a,i))return p.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("brackets","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="["){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u=="]")return i.end.column++,i}}),this.add("string_dquotes","insertion",function(e,t,n,r,i){if(i=='"'||i=="'"){c(n);var s=i,o=n.getSelectionRange(),u=r.doc.getTextRange(o);if(u!==""&&u!=="'"&&u!='"'&&n.getWrapBehavioursEnabled())return h(o,u,s,s);if(!u){var a=n.getCursorPosition(),f=r.doc.getLine(a.row),l=f.substring(a.column-1,a.column),p=f.substring(a.column,a.column+1),d=r.getTokenAt(a.row,a.column),v=r.getTokenAt(a.row,a.column+1);if(l=="\\"&&d&&/escape/.test(d.type))return null;var m=d&&/string/.test(d.type),g=!v||/string/.test(v.type),y;if(p==s)y=m!==g;else{if(m&&!g)return null;if(m&&g)return null;var b=r.$mode.tokenRe;b.lastIndex=0;var w=b.test(l);b.lastIndex=0;var E=b.test(l);if(w||E)return null;if(p&&!/[\s;,.})\]\\]/.test(p))return null;y=!0}return{text:y?s+s:"",selection:[1,1]}}}}),this.add("string_dquotes","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&(s=='"'||s=="'")){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==s)return i.end.column++,i}})};p.isSaneInsertion=function(e,t){var n=e.getCursorPosition(),r=new s(t,n.row,n.column);if(!this.$matchTokenType(r.getCurrentToken()||"text",u)){var i=new s(t,n.row,n.column+1);if(!this.$matchTokenType(i.getCurrentToken()||"text",u))return!1}return r.stepForward(),r.getCurrentTokenRow()!==n.row||this.$matchTokenType(r.getCurrentToken()||"text",a)},p.$matchTokenType=function(e,t){return t.indexOf(e.type||e)>-1},p.recordAutoInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isAutoInsertedClosing(r,i,f.autoInsertedLineEnd[0])||(f.autoInsertedBrackets=0),f.autoInsertedRow=r.row,f.autoInsertedLineEnd=n+i.substr(r.column),f.autoInsertedBrackets++},p.recordMaybeInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isMaybeInsertedClosing(r,i)||(f.maybeInsertedBrackets=0),f.maybeInsertedRow=r.row,f.maybeInsertedLineStart=i.substr(0,r.column)+n,f.maybeInsertedLineEnd=i.substr(r.column),f.maybeInsertedBrackets++},p.isAutoInsertedClosing=function(e,t,n){return f.autoInsertedBrackets>0&&e.row===f.autoInsertedRow&&n===f.autoInsertedLineEnd[0]&&t.substr(e.column)===f.autoInsertedLineEnd},p.isMaybeInsertedClosing=function(e,t){return f.maybeInsertedBrackets>0&&e.row===f.maybeInsertedRow&&t.substr(e.column)===f.maybeInsertedLineEnd&&t.substr(0,e.column)==f.maybeInsertedLineStart},p.popAutoInsertedClosing=function(){f.autoInsertedLineEnd=f.autoInsertedLineEnd.substr(1),f.autoInsertedBrackets--},p.clearMaybeInsertedClosing=function(){f&&(f.maybeInsertedBrackets=0,f.maybeInsertedRow=-1)},r.inherits(p,i),t.CstyleBehaviour=p}),define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/(\{|\[)[^\}\]]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#?region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++tf)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,a=1;while(++no)return new i(o,r,l,t.length)}}.call(o.prototype)}),define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/range","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./javascript_highlight_rules").JavaScriptHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("../range").Range,a=e("../worker/worker_client").WorkerClient,f=e("./behaviour/cstyle").CstyleBehaviour,l=e("./folding/cstyle").FoldMode,c=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=new f,this.foldingRules=new l};r.inherits(c,i),function(){this.lineCommentStart="//",this.blockComment={start:"/*",end:"*/"},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e),s=i.tokens,o=i.state;if(s.length&&s[s.length-1].type=="comment")return r;if(e=="start"||e=="no_regex"){var u=t.match(/^.*(?:\bcase\b.*\:|[\{\(\[])\s*$/);u&&(r+=n)}else if(e=="doc-start"){if(o=="start"||o=="no_regex")return"";var u=t.match(/^\s*(\/?)\*/);u&&(u[1]&&(r+=" "),r+="* ")}return r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.createWorker=function(e){var t=new a(["ace"],"ace/mode/javascript_worker","JavaScriptWorker");return t.attachToDocument(e.getDocument()),t.on("annotate",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/javascript"}.call(c.prototype),t.Mode=c}) \ No newline at end of file diff --git a/software/api/codebase/third-party/ace/src-min/theme-chrome.js b/software/api/codebase/third-party/ace/src-min/theme-chrome.js deleted file mode 100644 index 145b268fe..000000000 --- a/software/api/codebase/third-party/ace/src-min/theme-chrome.js +++ /dev/null @@ -1 +0,0 @@ -define("ace/theme/chrome",["require","exports","module","ace/lib/dom"],function(e,t,n){t.isDark=!1,t.cssClass="ace-chrome",t.cssText='.ace-chrome .ace_gutter {background: #ebebeb;color: #333;overflow : hidden;}.ace-chrome .ace_print-margin {width: 1px;background: #e8e8e8;}.ace-chrome {background-color: #FFFFFF;color: black;}.ace-chrome .ace_cursor {color: black;}.ace-chrome .ace_invisible {color: rgb(191, 191, 191);}.ace-chrome .ace_constant.ace_buildin {color: rgb(88, 72, 246);}.ace-chrome .ace_constant.ace_language {color: rgb(88, 92, 246);}.ace-chrome .ace_constant.ace_library {color: rgb(6, 150, 14);}.ace-chrome .ace_invalid {background-color: rgb(153, 0, 0);color: white;}.ace-chrome .ace_fold {}.ace-chrome .ace_support.ace_function {color: rgb(60, 76, 114);}.ace-chrome .ace_support.ace_constant {color: rgb(6, 150, 14);}.ace-chrome .ace_support.ace_type,.ace-chrome .ace_support.ace_class.ace-chrome .ace_support.ace_other {color: rgb(109, 121, 222);}.ace-chrome .ace_variable.ace_parameter {font-style:italic;color:#FD971F;}.ace-chrome .ace_keyword.ace_operator {color: rgb(104, 118, 135);}.ace-chrome .ace_comment {color: #236e24;}.ace-chrome .ace_comment.ace_doc {color: #236e24;}.ace-chrome .ace_comment.ace_doc.ace_tag {color: #236e24;}.ace-chrome .ace_constant.ace_numeric {color: rgb(0, 0, 205);}.ace-chrome .ace_variable {color: rgb(49, 132, 149);}.ace-chrome .ace_xml-pe {color: rgb(104, 104, 91);}.ace-chrome .ace_entity.ace_name.ace_function {color: #0000A2;}.ace-chrome .ace_heading {color: rgb(12, 7, 255);}.ace-chrome .ace_list {color:rgb(185, 6, 144);}.ace-chrome .ace_marker-layer .ace_selection {background: rgb(181, 213, 255);}.ace-chrome .ace_marker-layer .ace_step {background: rgb(252, 255, 0);}.ace-chrome .ace_marker-layer .ace_stack {background: rgb(164, 229, 101);}.ace-chrome .ace_marker-layer .ace_bracket {margin: -1px 0 0 -1px;border: 1px solid rgb(192, 192, 192);}.ace-chrome .ace_marker-layer .ace_active-line {background: rgba(0, 0, 0, 0.07);}.ace-chrome .ace_gutter-active-line {background-color : #dcdcdc;}.ace-chrome .ace_marker-layer .ace_selected-word {background: rgb(250, 250, 255);border: 1px solid rgb(200, 200, 250);}.ace-chrome .ace_storage,.ace-chrome .ace_keyword,.ace-chrome .ace_meta.ace_tag {color: rgb(147, 15, 128);}.ace-chrome .ace_string.ace_regex {color: rgb(255, 0, 0)}.ace-chrome .ace_string {color: #1A1AA6;}.ace-chrome .ace_entity.ace_other.ace_attribute-name {color: #994409;}.ace-chrome .ace_indent-guide {background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==") right repeat-y;}';var r=e("../lib/dom");r.importCssString(t.cssText,t.cssClass)}) \ No newline at end of file diff --git a/software/api/codebase/third-party/ace/src-min/worker-css.js b/software/api/codebase/third-party/ace/src-min/worker-css.js deleted file mode 100644 index 33f13ca11..000000000 --- a/software/api/codebase/third-party/ace/src-min/worker-css.js +++ /dev/null @@ -1 +0,0 @@ -"no use strict";(function(e){if(typeof e.window!="undefined"&&e.document)return;e.console=function(){var e=Array.prototype.slice.call(arguments,0);postMessage({type:"log",data:e})},e.console.error=e.console.warn=e.console.log=e.console.trace=e.console,e.window=e,e.ace=e,e.onerror=function(e,t,n,r,i){postMessage({type:"error",data:{message:e,file:t,line:n,col:r,stack:i.stack}})},e.normalizeModule=function(t,n){if(n.indexOf("!")!==-1){var r=n.split("!");return e.normalizeModule(t,r[0])+"!"+e.normalizeModule(t,r[1])}if(n.charAt(0)=="."){var i=t.split("/").slice(0,-1).join("/");n=(i?i+"/":"")+n;while(n.indexOf(".")!==-1&&s!=n){var s=n;n=n.replace(/^\.\//,"").replace(/\/\.\//,"/").replace(/[^\/]+\/\.\.\//,"")}}return n},e.require=function(t,n){n||(n=t,t=null);if(!n.charAt)throw new Error("worker.js require() accepts only (parentId, id) as arguments");n=e.normalizeModule(t,n);var r=e.require.modules[n];if(r)return r.initialized||(r.initialized=!0,r.exports=r.factory().exports),r.exports;var i=n.split("/");if(!e.require.tlns)return console.log("unable to load "+n);i[0]=e.require.tlns[i[0]]||i[0];var s=i.join("/")+".js";return e.require.id=n,importScripts(s),e.require(t,n)},e.require.modules={},e.require.tlns={},e.define=function(t,n,r){arguments.length==2?(r=n,typeof t!="string"&&(n=t,t=e.require.id)):arguments.length==1&&(r=t,n=[],t=e.require.id);if(typeof r!="function"){e.require.modules[t]={exports:r,initialized:!0};return}n.length||(n=["require","exports","module"]);var i=function(n){return e.require(t,n)};e.require.modules[t]={exports:{},factory:function(){var e=this,t=r.apply(this,n.map(function(t){switch(t){case"require":return i;case"exports":return e.exports;case"module":return e;default:return i(t)}}));return t&&(e.exports=t),e}}},e.define.amd={},e.initBaseUrls=function(t){require.tlns=t},e.initSender=function(){var n=e.require("ace/lib/event_emitter").EventEmitter,r=e.require("ace/lib/oop"),i=function(){};return function(){r.implement(this,n),this.callback=function(e,t){postMessage({type:"call",id:t,data:e})},this.emit=function(e,t){postMessage({type:"event",name:e,data:t})}}.call(i.prototype),new i};var t=e.main=null,n=e.sender=null;e.onmessage=function(r){var i=r.data;if(i.command){if(!t[i.command])throw new Error("Unknown command:"+i.command);t[i.command].apply(t,i.args)}else if(i.init){initBaseUrls(i.tlns),require("ace/lib/es5-shim"),n=e.sender=initSender();var s=require(i.module)[i.classname];t=e.main=new s(n)}else i.event&&n&&n._signal(i.event,i.data)}})(this),define("ace/lib/oop",["require","exports","module"],function(e,t,n){"use strict";t.inherits=function(e,t){e.super_=t,e.prototype=Object.create(t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}})},t.mixin=function(e,t){for(var n in t)e[n]=t[n];return e},t.implement=function(e,n){t.mixin(e,n)}}),define("ace/lib/lang",["require","exports","module"],function(e,t,n){"use strict";t.last=function(e){return e[e.length-1]},t.stringReverse=function(e){return e.split("").reverse().join("")},t.stringRepeat=function(e,t){var n="";while(t>0){t&1&&(n+=e);if(t>>=1)e+=e}return n};var r=/^\s\s*/,i=/\s\s*$/;t.stringTrimLeft=function(e){return e.replace(r,"")},t.stringTrimRight=function(e){return e.replace(i,"")},t.copyObject=function(e){var t={};for(var n in e)t[n]=e[n];return t},t.copyArray=function(e){var t=[];for(var n=0,r=e.length;n ["+this.end.row+"/"+this.end.column+"]"},this.contains=function(e,t){return this.compare(e,t)==0},this.compareRange=function(e){var t,n=e.end,r=e.start;return t=this.compare(n.row,n.column),t==1?(t=this.compare(r.row,r.column),t==1?2:t==0?1:0):t==-1?-2:(t=this.compare(r.row,r.column),t==-1?-1:t==1?42:0)},this.comparePoint=function(e){return this.compare(e.row,e.column)},this.containsRange=function(e){return this.comparePoint(e.start)==0&&this.comparePoint(e.end)==0},this.intersects=function(e){var t=this.compareRange(e);return t==-1||t==0||t==1},this.isEnd=function(e,t){return this.end.row==e&&this.end.column==t},this.isStart=function(e,t){return this.start.row==e&&this.start.column==t},this.setStart=function(e,t){typeof e=="object"?(this.start.column=e.column,this.start.row=e.row):(this.start.row=e,this.start.column=t)},this.setEnd=function(e,t){typeof e=="object"?(this.end.column=e.column,this.end.row=e.row):(this.end.row=e,this.end.column=t)},this.inside=function(e,t){return this.compare(e,t)==0?this.isEnd(e,t)||this.isStart(e,t)?!1:!0:!1},this.insideStart=function(e,t){return this.compare(e,t)==0?this.isEnd(e,t)?!1:!0:!1},this.insideEnd=function(e,t){return this.compare(e,t)==0?this.isStart(e,t)?!1:!0:!1},this.compare=function(e,t){return!this.isMultiLine()&&e===this.start.row?tthis.end.column?1:0:ethis.end.row?1:this.start.row===e?t>=this.start.column?0:-1:this.end.row===e?t<=this.end.column?0:1:0},this.compareStart=function(e,t){return this.start.row==e&&this.start.column==t?-1:this.compare(e,t)},this.compareEnd=function(e,t){return this.end.row==e&&this.end.column==t?1:this.compare(e,t)},this.compareInside=function(e,t){return this.end.row==e&&this.end.column==t?1:this.start.row==e&&this.start.column==t?-1:this.compare(e,t)},this.clipRows=function(e,t){if(this.end.row>t)var n={row:t+1,column:0};else if(this.end.rowt)var r={row:t+1,column:0};else if(this.start.rowthis.row)return;if(n.start.row==this.row&&n.start.column>this.column)return;var r=this.row,i=this.column,s=n.start,o=n.end;if(t.action==="insertText")if(s.row===r&&s.column<=i){if(s.column!==i||!this.$insertRight)s.row===o.row?i+=o.column-s.column:(i-=s.column,r+=o.row-s.row)}else s.row!==o.row&&s.row=i?i=s.column:i=Math.max(0,i-(o.column-s.column)):s.row!==o.row&&s.row=this.document.getLength()?(n.row=Math.max(0,this.document.getLength()-1),n.column=this.document.getLine(n.row).length):e<0?(n.row=0,n.column=0):(n.row=e,n.column=Math.min(this.document.getLine(n.row).length,Math.max(0,t))),t<0&&(n.column=0),n}}).call(s.prototype)}),define("ace/document",["require","exports","module","ace/lib/oop","ace/lib/event_emitter","ace/range","ace/anchor"],function(e,t,n){"use strict";var r=e("./lib/oop"),i=e("./lib/event_emitter").EventEmitter,s=e("./range").Range,o=e("./anchor").Anchor,u=function(e){this.$lines=[],e.length===0?this.$lines=[""]:Array.isArray(e)?this._insertLines(0,e):this.insert({row:0,column:0},e)};(function(){r.implement(this,i),this.setValue=function(e){var t=this.getLength();this.remove(new s(0,0,t,this.getLine(t-1).length)),this.insert({row:0,column:0},e)},this.getValue=function(){return this.getAllLines().join(this.getNewLineCharacter())},this.createAnchor=function(e,t){return new o(this,e,t)},"aaa".split(/a/).length===0?this.$split=function(e){return e.replace(/\r\n|\r/g,"\n").split("\n")}:this.$split=function(e){return e.split(/\r\n|\r|\n/)},this.$detectNewLine=function(e){var t=e.match(/^.*?(\r\n|\r|\n)/m);this.$autoNewLine=t?t[1]:"\n",this._signal("changeNewLineMode")},this.getNewLineCharacter=function(){switch(this.$newLineMode){case"windows":return"\r\n";case"unix":return"\n";default:return this.$autoNewLine||"\n"}},this.$autoNewLine="",this.$newLineMode="auto",this.setNewLineMode=function(e){if(this.$newLineMode===e)return;this.$newLineMode=e,this._signal("changeNewLineMode")},this.getNewLineMode=function(){return this.$newLineMode},this.isNewLine=function(e){return e=="\r\n"||e=="\r"||e=="\n"},this.getLine=function(e){return this.$lines[e]||""},this.getLines=function(e,t){return this.$lines.slice(e,t+1)},this.getAllLines=function(){return this.getLines(0,this.getLength())},this.getLength=function(){return this.$lines.length},this.getTextRange=function(e){if(e.start.row==e.end.row)return this.getLine(e.start.row).substring(e.start.column,e.end.column);var t=this.getLines(e.start.row,e.end.row);t[0]=(t[0]||"").substring(e.start.column);var n=t.length-1;return e.end.row-e.start.row==n&&(t[n]=t[n].substring(0,e.end.column)),t.join(this.getNewLineCharacter())},this.$clipPosition=function(e){var t=this.getLength();return e.row>=t?(e.row=Math.max(0,t-1),e.column=this.getLine(t-1).length):e.row<0&&(e.row=0),e},this.insert=function(e,t){if(!t||t.length===0)return e;e=this.$clipPosition(e),this.getLength()<=1&&this.$detectNewLine(t);var n=this.$split(t),r=n.splice(0,1)[0],i=n.length==0?null:n.splice(n.length-1,1)[0];return e=this.insertInLine(e,r),i!==null&&(e=this.insertNewLine(e),e=this._insertLines(e.row,n),e=this.insertInLine(e,i||"")),e},this.insertLines=function(e,t){return e>=this.getLength()?this.insert({row:e,column:0},"\n"+t.join("\n")):this._insertLines(Math.max(e,0),t)},this._insertLines=function(e,t){if(t.length==0)return{row:e,column:0};while(t.length>2e4){var n=this._insertLines(e,t.slice(0,2e4));t=t.slice(2e4),e=n.row}var r=[e,0];r.push.apply(r,t),this.$lines.splice.apply(this.$lines,r);var i=new s(e,0,e+t.length,0),o={action:"insertLines",range:i,lines:t};return this._signal("change",{data:o}),i.end},this.insertNewLine=function(e){e=this.$clipPosition(e);var t=this.$lines[e.row]||"";this.$lines[e.row]=t.substring(0,e.column),this.$lines.splice(e.row+1,0,t.substring(e.column,t.length));var n={row:e.row+1,column:0},r={action:"insertText",range:s.fromPoints(e,n),text:this.getNewLineCharacter()};return this._signal("change",{data:r}),n},this.insertInLine=function(e,t){if(t.length==0)return e;var n=this.$lines[e.row]||"";this.$lines[e.row]=n.substring(0,e.column)+t+n.substring(e.column);var r={row:e.row,column:e.column+t.length},i={action:"insertText",range:s.fromPoints(e,r),text:t};return this._signal("change",{data:i}),r},this.remove=function(e){e instanceof s||(e=s.fromPoints(e.start,e.end)),e.start=this.$clipPosition(e.start),e.end=this.$clipPosition(e.end);if(e.isEmpty())return e.start;var t=e.start.row,n=e.end.row;if(e.isMultiLine()){var r=e.start.column==0?t:t+1,i=n-1;e.end.column>0&&this.removeInLine(n,0,e.end.column),i>=r&&this._removeLines(r,i),r!=t&&(this.removeInLine(t,e.start.column,this.getLine(t).length),this.removeNewLine(e.start.row))}else this.removeInLine(t,e.start.column,e.end.column);return e.start},this.removeInLine=function(e,t,n){if(t==n)return;var r=new s(e,t,e,n),i=this.getLine(e),o=i.substring(t,n),u=i.substring(0,t)+i.substring(n,i.length);this.$lines.splice(e,1,u);var a={action:"removeText",range:r,text:o};return this._signal("change",{data:a}),r.start},this.removeLines=function(e,t){return e<0||t>=this.getLength()?this.remove(new s(e,0,t+1,0)):this._removeLines(e,t)},this._removeLines=function(e,t){var n=new s(e,0,t+1,0),r=this.$lines.splice(e,t-e+1),i={action:"removeLines",range:n,nl:this.getNewLineCharacter(),lines:r};return this._signal("change",{data:i}),r},this.removeNewLine=function(e){var t=this.getLine(e),n=this.getLine(e+1),r=new s(e,t.length,e+1,0),i=t+n;this.$lines.splice(e,2,i);var o={action:"removeText",range:r,text:this.getNewLineCharacter()};this._signal("change",{data:o})},this.replace=function(e,t){e instanceof s||(e=s.fromPoints(e.start,e.end));if(t.length==0&&e.isEmpty())return e.start;if(t==this.getTextRange(e))return e.end;this.remove(e);if(t)var n=this.insert(e.start,t);else n=e.start;return n},this.applyDeltas=function(e){for(var t=0;t=0;t--){var n=e[t],r=s.fromPoints(n.range.start,n.range.end);n.action=="insertLines"?this._removeLines(r.start.row,r.end.row-1):n.action=="insertText"?this.remove(r):n.action=="removeLines"?this._insertLines(r.start.row,n.lines):n.action=="removeText"&&this.insert(r.start,n.text)}},this.indexToPosition=function(e,t){var n=this.$lines||this.getAllLines(),r=this.getNewLineCharacter().length;for(var i=t||0,s=n.length;i=0&&this._ltIndex-1&&!t[u.type].hide&&(u.channel=t[u.type].channel,this._token=u,this._lt.push(u),this._ltIndexCache.push(this._lt.length-this._ltIndex+i),this._lt.length>5&&this._lt.shift(),this._ltIndexCache.length>5&&this._ltIndexCache.shift(),this._ltIndex=this._lt.length),a=t[u.type],a&&(a.hide||a.channel!==undefined&&e!==a.channel)?this.get(e):u.type},LA:function(e){var t=e,n;if(e>0){if(e>5)throw new Error("Too much lookahead.");while(t)n=this.get(),t--;while(tthis._tokenData.length?"UNKNOWN_TOKEN":this._tokenData[e].name},tokenType:function(e){return this._tokenData[e]||-1},unget:function(){if(!this._ltIndexCache.length)throw new Error("Too much lookahead.");this._ltIndex-=this._ltIndexCache.pop(),this._token=this._lt[this._ltIndex-1]}},parserlib.util={StringReader:t,SyntaxError:n,SyntaxUnit:r,EventTarget:e,TokenStreamBase:i}})(),function(){function Combinator(e,t,n){SyntaxUnit.call(this,e,t,n,Parser.COMBINATOR_TYPE),this.type="unknown",/^\s+$/.test(e)?this.type="descendant":e==">"?this.type="child":e=="+"?this.type="adjacent-sibling":e=="~"&&(this.type="sibling")}function MediaFeature(e,t){SyntaxUnit.call(this,"("+e+(t!==null?":"+t:"")+")",e.startLine,e.startCol,Parser.MEDIA_FEATURE_TYPE),this.name=e,this.value=t}function MediaQuery(e,t,n,r,i){SyntaxUnit.call(this,(e?e+" ":"")+(t?t:"")+(t&&n.length>0?" and ":"")+n.join(" and "),r,i,Parser.MEDIA_QUERY_TYPE),this.modifier=e,this.mediaType=t,this.features=n}function Parser(e){EventTarget.call(this),this.options=e||{},this._tokenStream=null}function PropertyName(e,t,n,r){SyntaxUnit.call(this,e,n,r,Parser.PROPERTY_NAME_TYPE),this.hack=t}function PropertyValue(e,t,n){SyntaxUnit.call(this,e.join(" "),t,n,Parser.PROPERTY_VALUE_TYPE),this.parts=e}function PropertyValueIterator(e){this._i=0,this._parts=e.parts,this._marks=[],this.value=e}function PropertyValuePart(text,line,col){SyntaxUnit.call(this,text,line,col,Parser.PROPERTY_VALUE_PART_TYPE),this.type="unknown";var temp;if(/^([+\-]?[\d\.]+)([a-z]+)$/i.test(text)){this.type="dimension",this.value=+RegExp.$1,this.units=RegExp.$2;switch(this.units.toLowerCase()){case"em":case"rem":case"ex":case"px":case"cm":case"mm":case"in":case"pt":case"pc":case"ch":case"vh":case"vw":case"vmax":case"vmin":this.type="length";break;case"deg":case"rad":case"grad":this.type="angle";break;case"ms":case"s":this.type="time";break;case"hz":case"khz":this.type="frequency";break;case"dpi":case"dpcm":this.type="resolution"}}else/^([+\-]?[\d\.]+)%$/i.test(text)?(this.type="percentage",this.value=+RegExp.$1):/^([+\-]?\d+)$/i.test(text)?(this.type="integer",this.value=+RegExp.$1):/^([+\-]?[\d\.]+)$/i.test(text)?(this.type="number",this.value=+RegExp.$1):/^#([a-f0-9]{3,6})/i.test(text)?(this.type="color",temp=RegExp.$1,temp.length==3?(this.red=parseInt(temp.charAt(0)+temp.charAt(0),16),this.green=parseInt(temp.charAt(1)+temp.charAt(1),16),this.blue=parseInt(temp.charAt(2)+temp.charAt(2),16)):(this.red=parseInt(temp.substring(0,2),16),this.green=parseInt(temp.substring(2,4),16),this.blue=parseInt(temp.substring(4,6),16))):/^rgb\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\)/i.test(text)?(this.type="color",this.red=+RegExp.$1,this.green=+RegExp.$2,this.blue=+RegExp.$3):/^rgb\(\s*(\d+)%\s*,\s*(\d+)%\s*,\s*(\d+)%\s*\)/i.test(text)?(this.type="color",this.red=+RegExp.$1*255/100,this.green=+RegExp.$2*255/100,this.blue=+RegExp.$3*255/100):/^rgba\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*,\s*([\d\.]+)\s*\)/i.test(text)?(this.type="color",this.red=+RegExp.$1,this.green=+RegExp.$2,this.blue=+RegExp.$3,this.alpha=+RegExp.$4):/^rgba\(\s*(\d+)%\s*,\s*(\d+)%\s*,\s*(\d+)%\s*,\s*([\d\.]+)\s*\)/i.test(text)?(this.type="color",this.red=+RegExp.$1*255/100,this.green=+RegExp.$2*255/100,this.blue=+RegExp.$3*255/100,this.alpha=+RegExp.$4):/^hsl\(\s*(\d+)\s*,\s*(\d+)%\s*,\s*(\d+)%\s*\)/i.test(text)?(this.type="color",this.hue=+RegExp.$1,this.saturation=+RegExp.$2/100,this.lightness=+RegExp.$3/100):/^hsla\(\s*(\d+)\s*,\s*(\d+)%\s*,\s*(\d+)%\s*,\s*([\d\.]+)\s*\)/i.test(text)?(this.type="color",this.hue=+RegExp.$1,this.saturation=+RegExp.$2/100,this.lightness=+RegExp.$3/100,this.alpha=+RegExp.$4):/^url\(["']?([^\)"']+)["']?\)/i.test(text)?(this.type="uri",this.uri=RegExp.$1):/^([^\(]+)\(/i.test(text)?(this.type="function",this.name=RegExp.$1,this.value=text):/^["'][^"']*["']/.test(text)?(this.type="string",this.value=eval(text)):Colors[text.toLowerCase()]?(this.type="color",temp=Colors[text.toLowerCase()].substring(1),this.red=parseInt(temp.substring(0,2),16),this.green=parseInt(temp.substring(2,4),16),this.blue=parseInt(temp.substring(4,6),16)):/^[\,\/]$/.test(text)?(this.type="operator",this.value=text):/^[a-z\-_\u0080-\uFFFF][a-z0-9\-_\u0080-\uFFFF]*$/i.test(text)&&(this.type="identifier",this.value=text)}function Selector(e,t,n){SyntaxUnit.call(this,e.join(" "),t,n,Parser.SELECTOR_TYPE),this.parts=e,this.specificity=Specificity.calculate(this)}function SelectorPart(e,t,n,r,i){SyntaxUnit.call(this,n,r,i,Parser.SELECTOR_PART_TYPE),this.elementName=e,this.modifiers=t}function SelectorSubPart(e,t,n,r){SyntaxUnit.call(this,e,n,r,Parser.SELECTOR_SUB_PART_TYPE),this.type=t,this.args=[]}function Specificity(e,t,n,r){this.a=e,this.b=t,this.c=n,this.d=r}function isHexDigit(e){return e!==null&&h.test(e)}function isDigit(e){return e!==null&&/\d/.test(e)}function isWhitespace(e){return e!==null&&/\s/.test(e)}function isNewLine(e){return e!==null&&nl.test(e)}function isNameStart(e){return e!==null&&/[a-z_\u0080-\uFFFF\\]/i.test(e)}function isNameChar(e){return e!==null&&(isNameStart(e)||/[0-9\-\\]/.test(e))}function isIdentStart(e){return e!==null&&(isNameStart(e)||/\-\\/.test(e))}function mix(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);return e}function TokenStream(e){TokenStreamBase.call(this,e,Tokens)}function ValidationError(e,t,n){this.col=n,this.line=t,this.message=e}var EventTarget=parserlib.util.EventTarget,TokenStreamBase=parserlib.util.TokenStreamBase,StringReader=parserlib.util.StringReader,SyntaxError=parserlib.util.SyntaxError,SyntaxUnit=parserlib.util.SyntaxUnit,Colors={aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",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",darkgrey:"#a9a9a9",darkgreen:"#006400",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",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",grey:"#808080",green:"#008000",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",lightgray:"#d3d3d3",lightgrey:"#d3d3d3",lightgreen:"#90ee90",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370d8",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhite:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#d87093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a460",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32",activeBorder:"Active window border.",activecaption:"Active window caption.",appworkspace:"Background color of multiple document interface.",background:"Desktop background.",buttonface:"The face background color for 3-D elements that appear 3-D due to one layer of surrounding border.",buttonhighlight:"The color of the border facing the light source for 3-D elements that appear 3-D due to one layer of surrounding border.",buttonshadow:"The color of the border away from the light source for 3-D elements that appear 3-D due to one layer of surrounding border.",buttontext:"Text on push buttons.",captiontext:"Text in caption, size box, and scrollbar arrow box.",graytext:"Grayed (disabled) text. This color is set to #000 if the current display driver does not support a solid gray color.",greytext:"Greyed (disabled) text. This color is set to #000 if the current display driver does not support a solid grey color.",highlight:"Item(s) selected in a control.",highlighttext:"Text of item(s) selected in a control.",inactiveborder:"Inactive window border.",inactivecaption:"Inactive window caption.",inactivecaptiontext:"Color of text in an inactive caption.",infobackground:"Background color for tooltip controls.",infotext:"Text color for tooltip controls.",menu:"Menu background.",menutext:"Text in menus.",scrollbar:"Scroll bar gray area.",threeddarkshadow:"The color of the darker (generally outer) of the two borders away from the light source for 3-D elements that appear 3-D due to two concentric layers of surrounding border.",threedface:"The face background color for 3-D elements that appear 3-D due to two concentric layers of surrounding border.",threedhighlight:"The color of the lighter (generally outer) of the two borders facing the light source for 3-D elements that appear 3-D due to two concentric layers of surrounding border.",threedlightshadow:"The color of the darker (generally inner) of the two borders facing the light source for 3-D elements that appear 3-D due to two concentric layers of surrounding border.",threedshadow:"The color of the lighter (generally inner) of the two borders away from the light source for 3-D elements that appear 3-D due to two concentric layers of surrounding border.",window:"Window background.",windowframe:"Window frame.",windowtext:"Text in windows."};Combinator.prototype=new SyntaxUnit,Combinator.prototype.constructor=Combinator,MediaFeature.prototype=new SyntaxUnit,MediaFeature.prototype.constructor=MediaFeature,MediaQuery.prototype=new SyntaxUnit,MediaQuery.prototype.constructor=MediaQuery,Parser.DEFAULT_TYPE=0,Parser.COMBINATOR_TYPE=1,Parser.MEDIA_FEATURE_TYPE=2,Parser.MEDIA_QUERY_TYPE=3,Parser.PROPERTY_NAME_TYPE=4,Parser.PROPERTY_VALUE_TYPE=5,Parser.PROPERTY_VALUE_PART_TYPE=6,Parser.SELECTOR_TYPE=7,Parser.SELECTOR_PART_TYPE=8,Parser.SELECTOR_SUB_PART_TYPE=9,Parser.prototype=function(){var e=new EventTarget,t,n={constructor:Parser,DEFAULT_TYPE:0,COMBINATOR_TYPE:1,MEDIA_FEATURE_TYPE:2,MEDIA_QUERY_TYPE:3,PROPERTY_NAME_TYPE:4,PROPERTY_VALUE_TYPE:5,PROPERTY_VALUE_PART_TYPE:6,SELECTOR_TYPE:7,SELECTOR_PART_TYPE:8,SELECTOR_SUB_PART_TYPE:9,_stylesheet:function(){var e=this._tokenStream,t=null,n,r,i;this.fire("startstylesheet"),this._charset(),this._skipCruft();while(e.peek()==Tokens.IMPORT_SYM)this._import(),this._skipCruft();while(e.peek()==Tokens.NAMESPACE_SYM)this._namespace(),this._skipCruft();i=e.peek();while(i>Tokens.EOF){try{switch(i){case Tokens.MEDIA_SYM:this._media(),this._skipCruft();break;case Tokens.PAGE_SYM:this._page(),this._skipCruft();break;case Tokens.FONT_FACE_SYM:this._font_face(),this._skipCruft();break;case Tokens.KEYFRAMES_SYM:this._keyframes(),this._skipCruft();break;case Tokens.VIEWPORT_SYM:this._viewport(),this._skipCruft();break;case Tokens.UNKNOWN_SYM:e.get();if(!!this.options.strict)throw new SyntaxError("Unknown @ rule.",e.LT(0).startLine,e.LT(0).startCol);this.fire({type:"error",error:null,message:"Unknown @ rule: "+e.LT(0).value+".",line:e.LT(0).startLine,col:e.LT(0).startCol}),n=0;while(e.advance([Tokens.LBRACE,Tokens.RBRACE])==Tokens.LBRACE)n++;while(n)e.advance([Tokens.RBRACE]),n--;break;case Tokens.S:this._readWhitespace();break;default:if(!this._ruleset())switch(i){case Tokens.CHARSET_SYM:throw r=e.LT(1),this._charset(!1),new SyntaxError("@charset not allowed here.",r.startLine,r.startCol);case Tokens.IMPORT_SYM:throw r=e.LT(1),this._import(!1),new SyntaxError("@import not allowed here.",r.startLine,r.startCol);case Tokens.NAMESPACE_SYM:throw r=e.LT(1),this._namespace(!1),new SyntaxError("@namespace not allowed here.",r.startLine,r.startCol);default:e.get(),this._unexpectedToken(e.token())}}}catch(s){if(!(s instanceof SyntaxError&&!this.options.strict))throw s;this.fire({type:"error",error:s,message:s.message,line:s.line,col:s.col})}i=e.peek()}i!=Tokens.EOF&&this._unexpectedToken(e.token()),this.fire("endstylesheet")},_charset:function(e){var t=this._tokenStream,n,r,i,s;t.match(Tokens.CHARSET_SYM)&&(i=t.token().startLine,s=t.token().startCol,this._readWhitespace(),t.mustMatch(Tokens.STRING),r=t.token(),n=r.value,this._readWhitespace(),t.mustMatch(Tokens.SEMICOLON),e!==!1&&this.fire({type:"charset",charset:n,line:i,col:s}))},_import:function(e){var t=this._tokenStream,n,r,i,s=[];t.mustMatch(Tokens.IMPORT_SYM),i=t.token(),this._readWhitespace(),t.mustMatch([Tokens.STRING,Tokens.URI]),r=t.token().value.replace(/^(?:url\()?["']?([^"']+?)["']?\)?$/,"$1"),this._readWhitespace(),s=this._media_query_list(),t.mustMatch(Tokens.SEMICOLON),this._readWhitespace(),e!==!1&&this.fire({type:"import",uri:r,media:s,line:i.startLine,col:i.startCol})},_namespace:function(e){var t=this._tokenStream,n,r,i,s;t.mustMatch(Tokens.NAMESPACE_SYM),n=t.token().startLine,r=t.token().startCol,this._readWhitespace(),t.match(Tokens.IDENT)&&(i=t.token().value,this._readWhitespace()),t.mustMatch([Tokens.STRING,Tokens.URI]),s=t.token().value.replace(/(?:url\()?["']([^"']+)["']\)?/,"$1"),this._readWhitespace(),t.mustMatch(Tokens.SEMICOLON),this._readWhitespace(),e!==!1&&this.fire({type:"namespace",prefix:i,uri:s,line:n,col:r})},_media:function(){var e=this._tokenStream,t,n,r;e.mustMatch(Tokens.MEDIA_SYM),t=e.token().startLine,n=e.token().startCol,this._readWhitespace(),r=this._media_query_list(),e.mustMatch(Tokens.LBRACE),this._readWhitespace(),this.fire({type:"startmedia",media:r,line:t,col:n});for(;;)if(e.peek()==Tokens.PAGE_SYM)this._page();else if(e.peek()==Tokens.FONT_FACE_SYM)this._font_face();else if(e.peek()==Tokens.VIEWPORT_SYM)this._viewport();else if(!this._ruleset())break;e.mustMatch(Tokens.RBRACE),this._readWhitespace(),this.fire({type:"endmedia",media:r,line:t,col:n})},_media_query_list:function(){var e=this._tokenStream,t=[];this._readWhitespace(),(e.peek()==Tokens.IDENT||e.peek()==Tokens.LPAREN)&&t.push(this._media_query());while(e.match(Tokens.COMMA))this._readWhitespace(),t.push(this._media_query());return t},_media_query:function(){var e=this._tokenStream,t=null,n=null,r=null,i=[];e.match(Tokens.IDENT)&&(n=e.token().value.toLowerCase(),n!="only"&&n!="not"?(e.unget(),n=null):r=e.token()),this._readWhitespace(),e.peek()==Tokens.IDENT?(t=this._media_type(),r===null&&(r=e.token())):e.peek()==Tokens.LPAREN&&(r===null&&(r=e.LT(1)),i.push(this._media_expression()));if(t===null&&i.length===0)return null;this._readWhitespace();while(e.match(Tokens.IDENT))e.token().value.toLowerCase()!="and"&&this._unexpectedToken(e.token()),this._readWhitespace(),i.push(this._media_expression());return new MediaQuery(n,t,i,r.startLine,r.startCol)},_media_type:function(){return this._media_feature()},_media_expression:function(){var e=this._tokenStream,t=null,n,r=null;return e.mustMatch(Tokens.LPAREN),t=this._media_feature(),this._readWhitespace(),e.match(Tokens.COLON)&&(this._readWhitespace(),n=e.LT(1),r=this._expression()),e.mustMatch(Tokens.RPAREN),this._readWhitespace(),new MediaFeature(t,r?new SyntaxUnit(r,n.startLine,n.startCol):null)},_media_feature:function(){var e=this._tokenStream;return e.mustMatch(Tokens.IDENT),SyntaxUnit.fromToken(e.token())},_page:function(){var e=this._tokenStream,t,n,r=null,i=null;e.mustMatch(Tokens.PAGE_SYM),t=e.token().startLine,n=e.token().startCol,this._readWhitespace(),e.match(Tokens.IDENT)&&(r=e.token().value,r.toLowerCase()==="auto"&&this._unexpectedToken(e.token())),e.peek()==Tokens.COLON&&(i=this._pseudo_page()),this._readWhitespace(),this.fire({type:"startpage",id:r,pseudo:i,line:t,col:n}),this._readDeclarations(!0,!0),this.fire({type:"endpage",id:r,pseudo:i,line:t,col:n})},_margin:function(){var e=this._tokenStream,t,n,r=this._margin_sym();return r?(t=e.token().startLine,n=e.token().startCol,this.fire({type:"startpagemargin",margin:r,line:t,col:n}),this._readDeclarations(!0),this.fire({type:"endpagemargin",margin:r,line:t,col:n}),!0):!1},_margin_sym:function(){var e=this._tokenStream;return e.match([Tokens.TOPLEFTCORNER_SYM,Tokens.TOPLEFT_SYM,Tokens.TOPCENTER_SYM,Tokens.TOPRIGHT_SYM,Tokens.TOPRIGHTCORNER_SYM,Tokens.BOTTOMLEFTCORNER_SYM,Tokens.BOTTOMLEFT_SYM,Tokens.BOTTOMCENTER_SYM,Tokens.BOTTOMRIGHT_SYM,Tokens.BOTTOMRIGHTCORNER_SYM,Tokens.LEFTTOP_SYM,Tokens.LEFTMIDDLE_SYM,Tokens.LEFTBOTTOM_SYM,Tokens.RIGHTTOP_SYM,Tokens.RIGHTMIDDLE_SYM,Tokens.RIGHTBOTTOM_SYM])?SyntaxUnit.fromToken(e.token()):null},_pseudo_page:function(){var e=this._tokenStream;return e.mustMatch(Tokens.COLON),e.mustMatch(Tokens.IDENT),e.token().value},_font_face:function(){var e=this._tokenStream,t,n;e.mustMatch(Tokens.FONT_FACE_SYM),t=e.token().startLine,n=e.token().startCol,this._readWhitespace(),this.fire({type:"startfontface",line:t,col:n}),this._readDeclarations(!0),this.fire({type:"endfontface",line:t,col:n})},_viewport:function(){var e=this._tokenStream,t,n;e.mustMatch(Tokens.VIEWPORT_SYM),t=e.token().startLine,n=e.token().startCol,this._readWhitespace(),this.fire({type:"startviewport",line:t,col:n}),this._readDeclarations(!0),this.fire({type:"endviewport",line:t,col:n})},_operator:function(e){var t=this._tokenStream,n=null;if(t.match([Tokens.SLASH,Tokens.COMMA])||e&&t.match([Tokens.PLUS,Tokens.STAR,Tokens.MINUS]))n=t.token(),this._readWhitespace();return n?PropertyValuePart.fromToken(n):null},_combinator:function(){var e=this._tokenStream,t=null,n;return e.match([Tokens.PLUS,Tokens.GREATER,Tokens.TILDE])&&(n=e.token(),t=new Combinator(n.value,n.startLine,n.startCol),this._readWhitespace()),t},_unary_operator:function(){var e=this._tokenStream;return e.match([Tokens.MINUS,Tokens.PLUS])?e.token().value:null},_property:function(){var e=this._tokenStream,t=null,n=null,r,i,s,o;return e.peek()==Tokens.STAR&&this.options.starHack&&(e.get(),i=e.token(),n=i.value,s=i.startLine,o=i.startCol),e.match(Tokens.IDENT)&&(i=e.token(),r=i.value,r.charAt(0)=="_"&&this.options.underscoreHack&&(n="_",r=r.substring(1)),t=new PropertyName(r,n,s||i.startLine,o||i.startCol),this._readWhitespace()),t},_ruleset:function(){var e=this._tokenStream,t,n;try{n=this._selectors_group()}catch(r){if(r instanceof SyntaxError&&!this.options.strict){this.fire({type:"error",error:r,message:r.message,line:r.line,col:r.col}),t=e.advance([Tokens.RBRACE]);if(t!=Tokens.RBRACE)throw r;return!0}throw r}return n&&(this.fire({type:"startrule",selectors:n,line:n[0].line,col:n[0].col}),this._readDeclarations(!0),this.fire({type:"endrule",selectors:n,line:n[0].line,col:n[0].col})),n},_selectors_group:function(){var e=this._tokenStream,t=[],n;n=this._selector();if(n!==null){t.push(n);while(e.match(Tokens.COMMA))this._readWhitespace(),n=this._selector(),n!==null?t.push(n):this._unexpectedToken(e.LT(1))}return t.length?t:null},_selector:function(){var e=this._tokenStream,t=[],n=null,r=null,i=null;n=this._simple_selector_sequence();if(n===null)return null;t.push(n);do{r=this._combinator();if(r!==null)t.push(r),n=this._simple_selector_sequence(),n===null?this._unexpectedToken(e.LT(1)):t.push(n);else{if(!this._readWhitespace())break;i=new Combinator(e.token().value,e.token().startLine,e.token().startCol),r=this._combinator(),n=this._simple_selector_sequence(),n===null?r!==null&&this._unexpectedToken(e.LT(1)):(r!==null?t.push(r):t.push(i),t.push(n))}}while(!0);return new Selector(t,t[0].line,t[0].col)},_simple_selector_sequence:function(){var e=this._tokenStream,t=null,n=[],r="",i=[function(){return e.match(Tokens.HASH)?new SelectorSubPart(e.token().value,"id",e.token().startLine,e.token().startCol):null},this._class,this._attrib,this._pseudo,this._negation],s=0,o=i.length,u=null,a=!1,f,l;f=e.LT(1).startLine,l=e.LT(1).startCol,t=this._type_selector(),t||(t=this._universal()),t!==null&&(r+=t);for(;;){if(e.peek()===Tokens.S)break;while(s1&&e.unget()),null)},_class:function(){var e=this._tokenStream,t;return e.match(Tokens.DOT)?(e.mustMatch(Tokens.IDENT),t=e.token(),new SelectorSubPart("."+t.value,"class",t.startLine,t.startCol-1)):null},_element_name:function(){var e=this._tokenStream,t;return e.match(Tokens.IDENT)?(t=e.token(),new SelectorSubPart(t.value,"elementName",t.startLine,t.startCol)):null},_namespace_prefix:function(){var e=this._tokenStream,t="";if(e.LA(1)===Tokens.PIPE||e.LA(2)===Tokens.PIPE)e.match([Tokens.IDENT,Tokens.STAR])&&(t+=e.token().value),e.mustMatch(Tokens.PIPE),t+="|";return t.length?t:null},_universal:function(){var e=this._tokenStream,t="",n;return n=this._namespace_prefix(),n&&(t+=n),e.match(Tokens.STAR)&&(t+="*"),t.length?t:null},_attrib:function(){var e=this._tokenStream,t=null,n,r;return e.match(Tokens.LBRACKET)?(r=e.token(),t=r.value,t+=this._readWhitespace(),n=this._namespace_prefix(),n&&(t+=n),e.mustMatch(Tokens.IDENT),t+=e.token().value,t+=this._readWhitespace(),e.match([Tokens.PREFIXMATCH,Tokens.SUFFIXMATCH,Tokens.SUBSTRINGMATCH,Tokens.EQUALS,Tokens.INCLUDES,Tokens.DASHMATCH])&&(t+=e.token().value,t+=this._readWhitespace(),e.mustMatch([Tokens.IDENT,Tokens.STRING]),t+=e.token().value,t+=this._readWhitespace()),e.mustMatch(Tokens.RBRACKET),new SelectorSubPart(t+"]","attribute",r.startLine,r.startCol)):null},_pseudo:function(){var e=this._tokenStream,t=null,n=":",r,i;return e.match(Tokens.COLON)&&(e.match(Tokens.COLON)&&(n+=":"),e.match(Tokens.IDENT)?(t=e.token().value,r=e.token().startLine,i=e.token().startCol-n.length):e.peek()==Tokens.FUNCTION&&(r=e.LT(1).startLine,i=e.LT(1).startCol-n.length,t=this._functional_pseudo()),t&&(t=new SelectorSubPart(n+t,"pseudo",r,i))),t},_functional_pseudo:function(){var e=this._tokenStream,t=null;return e.match(Tokens.FUNCTION)&&(t=e.token().value,t+=this._readWhitespace(),t+=this._expression(),e.mustMatch(Tokens.RPAREN),t+=")"),t},_expression:function(){var e=this._tokenStream,t="";while(e.match([Tokens.PLUS,Tokens.MINUS,Tokens.DIMENSION,Tokens.NUMBER,Tokens.STRING,Tokens.IDENT,Tokens.LENGTH,Tokens.FREQ,Tokens.ANGLE,Tokens.TIME,Tokens.RESOLUTION,Tokens.SLASH]))t+=e.token().value,t+=this._readWhitespace();return t.length?t:null},_negation:function(){var e=this._tokenStream,t,n,r="",i,s=null;return e.match(Tokens.NOT)&&(r=e.token().value,t=e.token().startLine,n=e.token().startCol,r+=this._readWhitespace(),i=this._negation_arg(),r+=i,r+=this._readWhitespace(),e.match(Tokens.RPAREN),r+=e.token().value,s=new SelectorSubPart(r,"not",t,n),s.args.push(i)),s},_negation_arg:function(){var e=this._tokenStream,t=[this._type_selector,this._universal,function(){return e.match(Tokens.HASH)?new SelectorSubPart(e.token().value,"id",e.token().startLine,e.token().startCol):null},this._class,this._attrib,this._pseudo],n=null,r=0,i=t.length,s,o,u,a;o=e.LT(1).startLine,u=e.LT(1).startCol;while(r0?new PropertyValue(n,n[0].line,n[0].col):null},_term:function(e){var t=this._tokenStream,n=null,r=null,i=null,s,o,u;return n=this._unary_operator(),n!==null&&(o=t.token().startLine,u=t.token().startCol),t.peek()==Tokens.IE_FUNCTION&&this.options.ieFilters?(r=this._ie_function(),n===null&&(o=t.token().startLine,u=t.token().startCol)):e&&t.match([Tokens.LPAREN,Tokens.LBRACE,Tokens.LBRACKET])?(s=t.token(),i=s.endChar,r=s.value+this._expr(e).text,n===null&&(o=t.token().startLine,u=t.token().startCol),t.mustMatch(Tokens.type(i)),r+=i,this._readWhitespace()):t.match([Tokens.NUMBER,Tokens.PERCENTAGE,Tokens.LENGTH,Tokens.ANGLE,Tokens.TIME,Tokens.FREQ,Tokens.STRING,Tokens.IDENT,Tokens.URI,Tokens.UNICODE_RANGE])?(r=t.token().value,n===null&&(o=t.token().startLine,u=t.token().startCol),this._readWhitespace()):(s=this._hexcolor(),s===null?(n===null&&(o=t.LT(1).startLine,u=t.LT(1).startCol),r===null&&(t.LA(3)==Tokens.EQUALS&&this.options.ieFilters?r=this._ie_function():r=this._function())):(r=s.value,n===null&&(o=s.startLine,u=s.startCol))),r!==null?new PropertyValuePart(n!==null?n+r:r,o,u):null},_function:function(){var e=this._tokenStream,t=null,n=null,r;if(e.match(Tokens.FUNCTION)){t=e.token().value,this._readWhitespace(),n=this._expr(!0),t+=n;if(this.options.ieFilters&&e.peek()==Tokens.EQUALS)do{this._readWhitespace()&&(t+=e.token().value),e.LA(0)==Tokens.COMMA&&(t+=e.token().value),e.match(Tokens.IDENT),t+=e.token().value,e.match(Tokens.EQUALS),t+=e.token().value,r=e.peek();while(r!=Tokens.COMMA&&r!=Tokens.S&&r!=Tokens.RPAREN)e.get(),t+=e.token().value,r=e.peek()}while(e.match([Tokens.COMMA,Tokens.S]));e.match(Tokens.RPAREN),t+=")",this._readWhitespace()}return t},_ie_function:function(){var e=this._tokenStream,t=null,n=null,r;if(e.match([Tokens.IE_FUNCTION,Tokens.FUNCTION])){t=e.token().value;do{this._readWhitespace()&&(t+=e.token().value),e.LA(0)==Tokens.COMMA&&(t+=e.token().value),e.match(Tokens.IDENT),t+=e.token().value,e.match(Tokens.EQUALS),t+=e.token().value,r=e.peek();while(r!=Tokens.COMMA&&r!=Tokens.S&&r!=Tokens.RPAREN)e.get(),t+=e.token().value,r=e.peek()}while(e.match([Tokens.COMMA,Tokens.S]));e.match(Tokens.RPAREN),t+=")",this._readWhitespace()}return t},_hexcolor:function(){var e=this._tokenStream,t=null,n;if(e.match(Tokens.HASH)){t=e.token(),n=t.value;if(!/#[a-f0-9]{3,6}/i.test(n))throw new SyntaxError("Expected a hex color but found '"+n+"' at line "+t.startLine+", col "+t.startCol+".",t.startLine,t.startCol);this._readWhitespace()}return t},_keyframes:function(){var e=this._tokenStream,t,n,r,i="";e.mustMatch(Tokens.KEYFRAMES_SYM),t=e.token(),/^@\-([^\-]+)\-/.test(t.value)&&(i=RegExp.$1),this._readWhitespace(),r=this._keyframe_name(),this._readWhitespace(),e.mustMatch(Tokens.LBRACE),this.fire({type:"startkeyframes",name:r,prefix:i,line:t.startLine,col:t.startCol}),this._readWhitespace(),n=e.peek();while(n==Tokens.IDENT||n==Tokens.PERCENTAGE)this._keyframe_rule(),this._readWhitespace(),n=e.peek();this.fire({type:"endkeyframes",name:r,prefix:i,line:t.startLine,col:t.startCol}),this._readWhitespace(),e.mustMatch(Tokens.RBRACE)},_keyframe_name:function(){var e=this._tokenStream,t;return e.mustMatch([Tokens.IDENT,Tokens.STRING]),SyntaxUnit.fromToken(e.token())},_keyframe_rule:function(){var e=this._tokenStream,t,n=this._key_list();this.fire({type:"startkeyframerule",keys:n,line:n[0].line,col:n[0].col}),this._readDeclarations(!0),this.fire({type:"endkeyframerule",keys:n,line:n[0].line,col:n[0].col})},_key_list:function(){var e=this._tokenStream,t,n,r=[];r.push(this._key()),this._readWhitespace();while(e.match(Tokens.COMMA))this._readWhitespace(),r.push(this._key()),this._readWhitespace();return r},_key:function(){var e=this._tokenStream,t;if(e.match(Tokens.PERCENTAGE))return SyntaxUnit.fromToken(e.token());if(e.match(Tokens.IDENT)){t=e.token();if(/from|to/i.test(t.value))return SyntaxUnit.fromToken(t);e.unget()}this._unexpectedToken(e.LT(1))},_skipCruft:function(){while(this._tokenStream.match([Tokens.S,Tokens.CDO,Tokens.CDC]));},_readDeclarations:function(e,t){var n=this._tokenStream,r;this._readWhitespace(),e&&n.mustMatch(Tokens.LBRACE),this._readWhitespace();try{for(;;){if(!(n.match(Tokens.SEMICOLON)||t&&this._margin())){if(!this._declaration())break;if(!n.match(Tokens.SEMICOLON))break}this._readWhitespace()}n.mustMatch(Tokens.RBRACE),this._readWhitespace()}catch(i){if(!(i instanceof SyntaxError&&!this.options.strict))throw i;this.fire({type:"error",error:i,message:i.message,line:i.line,col:i.col}),r=n.advance([Tokens.SEMICOLON,Tokens.RBRACE]);if(r==Tokens.SEMICOLON)this._readDeclarations(!1,t);else if(r!=Tokens.RBRACE)throw i}},_readWhitespace:function(){var e=this._tokenStream,t="";while(e.match(Tokens.S))t+=e.token().value;return t},_unexpectedToken:function(e){throw new SyntaxError("Unexpected token '"+e.value+"' at line "+e.startLine+", col "+e.startCol+".",e.startLine,e.startCol)},_verifyEnd:function(){this._tokenStream.LA(1)!=Tokens.EOF&&this._unexpectedToken(this._tokenStream.LT(1))},_validateProperty:function(e,t){Validation.validate(e,t)},parse:function(e){this._tokenStream=new TokenStream(e,Tokens),this._stylesheet()},parseStyleSheet:function(e){return this.parse(e)},parseMediaQuery:function(e){this._tokenStream=new TokenStream(e,Tokens);var t=this._media_query();return this._verifyEnd(),t},parsePropertyValue:function(e){this._tokenStream=new TokenStream(e,Tokens),this._readWhitespace();var t=this._expr();return this._readWhitespace(),this._verifyEnd(),t},parseRule:function(e){this._tokenStream=new TokenStream(e,Tokens),this._readWhitespace();var t=this._ruleset();return this._readWhitespace(),this._verifyEnd(),t},parseSelector:function(e){this._tokenStream=new TokenStream(e,Tokens),this._readWhitespace();var t=this._selector();return this._readWhitespace(),this._verifyEnd(),t},parseStyleAttribute:function(e){e+="}",this._tokenStream=new TokenStream(e,Tokens),this._readDeclarations()}};for(t in n)n.hasOwnProperty(t)&&(e[t]=n[t]);return e}();var Properties={"align-items":"flex-start | flex-end | center | baseline | stretch","align-content":"flex-start | flex-end | center | space-between | space-around | stretch","align-self":"auto | flex-start | flex-end | center | baseline | stretch","-webkit-align-items":"flex-start | flex-end | center | baseline | stretch","-webkit-align-content":"flex-start | flex-end | center | space-between | space-around | stretch","-webkit-align-self":"auto | flex-start | flex-end | center | baseline | stretch","alignment-adjust":"auto | baseline | before-edge | text-before-edge | middle | central | after-edge | text-after-edge | ideographic | alphabetic | hanging | mathematical | | ","alignment-baseline":"baseline | use-script | before-edge | text-before-edge | after-edge | text-after-edge | central | middle | ideographic | alphabetic | hanging | mathematical",animation:1,"animation-delay":{multi:"